Embed presentation
Downloaded 19 times















![NVIDIA Corporation © 2013Texture ArraysLike 3D / Volume Textures, except:No filtering between 2D slicesOnly X and Y decrease with mipmap level (Z doesn’t)Z indexed by integer index, not [0,1]E.g. (0.5, 0.5, 4) would be (0.5, 0.5) from the 5th sliceAPI SupportDirect3D 10+: Texture2DArrayOpenGL 3.0+: GL_TEXTURE_2D_ARRAY](/image.pl?url=https%3a%2f%2fimage.slidesharecdn.com%2fborderlessptex-140325125704-phpapp01%2f75%2fBorderless-Per-Face-Texture-Mapping-16-2048.jpg&f=jpg&w=240)
![NVIDIA Corporation © 2013Arrays of Texture ArraysBoth GLSL and HLSL* support arrays of TextureArrays.This allows for stupidly powerful abuse of texturing.Texture2DArray albedo[32]; // D3Duniform sampler2DArray albedo[32]; // OpenGL* HLSL support requires a little codegen—but it’s entirely a compile-timeexercise, no runtime impact.](/image.pl?url=https%3a%2f%2fimage.slidesharecdn.com%2fborderlessptex-140325125704-phpapp01%2f75%2fBorderless-Per-Face-Texture-Mapping-17-2048.jpg&f=jpg&w=240)


![NVIDIA Corporation © 2013Pack Patch ConstantsCreate a constant-buffer indexed byPrimitiveID. Each entry contains:Your Array Index and Slice in theTexture2DArraysYour four neighbors across the edgesEach neighbor’s UV orientation(Again, can be prepared at baking time)If rendering too many primitivesto fit into a constant buffer,you can use Structured Buffers / SSBO for storage.struct PTexParameters {ushort usNgbrIndex[4];ushort usNgbrXform[4];ushort usTexIndex;ushort usTexSlice;};uniform ptxDiffuseUBO {PTexParameters ptxDiffuse[PRIMS];};](/image.pl?url=https%3a%2f%2fimage.slidesharecdn.com%2fborderlessptex-140325125704-phpapp01%2f75%2fBorderless-Per-Face-Texture-Mapping-20-2048.jpg&f=jpg&w=240)














The document discusses the issue of texture waste in modern games, highlighting that nearly 30% of texture memory is typically wasted, which affects load times and memory usage. It introduces 'ptex', a texture system that eliminates the need for UV unwrapping by allowing each quad to have its own texture space, thereby improving production efficiency and visual fidelity. The document outlines Ptex's benefits and performance impact, demonstrating its efficiency in memory usage while reducing load times.















![NVIDIA Corporation © 2013Texture ArraysLike 3D / Volume Textures, except:No filtering between 2D slicesOnly X and Y decrease with mipmap level (Z doesn’t)Z indexed by integer index, not [0,1]E.g. (0.5, 0.5, 4) would be (0.5, 0.5) from the 5th sliceAPI SupportDirect3D 10+: Texture2DArrayOpenGL 3.0+: GL_TEXTURE_2D_ARRAY](/image.pl?url=https%3a%2f%2fimage.slidesharecdn.com%2fborderlessptex-140325125704-phpapp01%2f75%2fBorderless-Per-Face-Texture-Mapping-16-2048.jpg&f=jpg&w=240)
![NVIDIA Corporation © 2013Arrays of Texture ArraysBoth GLSL and HLSL* support arrays of TextureArrays.This allows for stupidly powerful abuse of texturing.Texture2DArray albedo[32]; // D3Duniform sampler2DArray albedo[32]; // OpenGL* HLSL support requires a little codegen—but it’s entirely a compile-timeexercise, no runtime impact.](/image.pl?url=https%3a%2f%2fimage.slidesharecdn.com%2fborderlessptex-140325125704-phpapp01%2f75%2fBorderless-Per-Face-Texture-Mapping-17-2048.jpg&f=jpg&w=240)


![NVIDIA Corporation © 2013Pack Patch ConstantsCreate a constant-buffer indexed byPrimitiveID. Each entry contains:Your Array Index and Slice in theTexture2DArraysYour four neighbors across the edgesEach neighbor’s UV orientation(Again, can be prepared at baking time)If rendering too many primitivesto fit into a constant buffer,you can use Structured Buffers / SSBO for storage.struct PTexParameters {ushort usNgbrIndex[4];ushort usNgbrXform[4];ushort usTexIndex;ushort usTexSlice;};uniform ptxDiffuseUBO {PTexParameters ptxDiffuse[PRIMS];};](/image.pl?url=https%3a%2f%2fimage.slidesharecdn.com%2fborderlessptex-140325125704-phpapp01%2f75%2fBorderless-Per-Face-Texture-Mapping-20-2048.jpg&f=jpg&w=240)













