![Page 1: Ptex and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD](https://reader035.vdocuments.us/reader035/viewer/2022070407/5681432f550346895dafa0c4/html5/thumbnails/1.jpg)
Ptex and Vector Displacement in AMD Demos
Karl HilleslandMember of Technical Staff, AMD
![Page 2: Ptex and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD](https://reader035.vdocuments.us/reader035/viewer/2022070407/5681432f550346895dafa0c4/html5/thumbnails/2.jpg)
Ptex Showings
●September 2011 – Press Event●Siggraph Asia 2011 – Sketch●Radeon HD 7970 Launch – Press Event
● Modified GL version, won’t discuss
![Page 3: Ptex and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD](https://reader035.vdocuments.us/reader035/viewer/2022070407/5681432f550346895dafa0c4/html5/thumbnails/3.jpg)
Ptex
Ptex: Per-face Texture Mapping for Production Rendering[Burley and Lacewell, 2008]
● No UV setup (it’s implicit)● No Seams● Per-Patch Resolution Control● Out-of-core Performance Advantages
![Page 4: Ptex and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD](https://reader035.vdocuments.us/reader035/viewer/2022070407/5681432f550346895dafa0c4/html5/thumbnails/4.jpg)
Ptex
Ptex: Per-face Texture Mapping for Production Rendering[Burley and Lacewell, 2008]
●Per-face textures + MIPs●Adjacency for filtering
![Page 5: Ptex and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD](https://reader035.vdocuments.us/reader035/viewer/2022070407/5681432f550346895dafa0c4/html5/thumbnails/5.jpg)
McDonald and Burley
Per-face texture mapping for real-time rendering, McDonald and Burley, SIGGRAPH 2011 Talk.
Practical Ptex for Games, John McDonald, Game Developer Magazine, January, 2012
![Page 6: Ptex and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD](https://reader035.vdocuments.us/reader035/viewer/2022070407/5681432f550346895dafa0c4/html5/thumbnails/6.jpg)
Borders for Filtering
Face A Texture Face B Texture
Kernel
Note: Quad centric
![Page 7: Ptex and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD](https://reader035.vdocuments.us/reader035/viewer/2022070407/5681432f550346895dafa0c4/html5/thumbnails/7.jpg)
Borders for Filtering
![Page 8: Ptex and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD](https://reader035.vdocuments.us/reader035/viewer/2022070407/5681432f550346895dafa0c4/html5/thumbnails/8.jpg)
Borders for Filtering
![Page 9: Ptex and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD](https://reader035.vdocuments.us/reader035/viewer/2022070407/5681432f550346895dafa0c4/html5/thumbnails/9.jpg)
Borders for Filtering
![Page 10: Ptex and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD](https://reader035.vdocuments.us/reader035/viewer/2022070407/5681432f550346895dafa0c4/html5/thumbnails/10.jpg)
Packed Ptex
Pack in one texture● Includes all MIPs● Sorted by resolution
![Page 11: Ptex and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD](https://reader035.vdocuments.us/reader035/viewer/2022070407/5681432f550346895dafa0c4/html5/thumbnails/11.jpg)
Runtime Shader●Compute atlas location starting with primitive ID and face UV
![Page 12: Ptex and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD](https://reader035.vdocuments.us/reader035/viewer/2022070407/5681432f550346895dafa0c4/html5/thumbnails/12.jpg)
Runtime Shader●Compute desired resolution using ddx and ddy of face UV
![Page 13: Ptex and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD](https://reader035.vdocuments.us/reader035/viewer/2022070407/5681432f550346895dafa0c4/html5/thumbnails/13.jpg)
Runtime Shader●Compute desired resolution using face UV●Clamp to base resolution
![Page 14: Ptex and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD](https://reader035.vdocuments.us/reader035/viewer/2022070407/5681432f550346895dafa0c4/html5/thumbnails/14.jpg)
Runtime Shader●Compute desired resolution using face UV●Clamp to base resolution●Find resolution block
![Page 15: Ptex and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD](https://reader035.vdocuments.us/reader035/viewer/2022070407/5681432f550346895dafa0c4/html5/thumbnails/15.jpg)
Runtime Shader●Compute desired resolution using face UV●Clamp to base resolution●Find resolution block●Find face location
![Page 16: Ptex and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD](https://reader035.vdocuments.us/reader035/viewer/2022070407/5681432f550346895dafa0c4/html5/thumbnails/16.jpg)
Runtime Shader●Compute desired resolution using face UV●Clamp to base resolution●Find resolution block●Find face location● Incorporate face UV for
final UV
![Page 17: Ptex and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD](https://reader035.vdocuments.us/reader035/viewer/2022070407/5681432f550346895dafa0c4/html5/thumbnails/17.jpg)
Constant Buffers●Indexed by resolution●Row (V) offset
● Block location
●Prefix Sum● Face resolution● Offset in bin
●Ours: 20 4-byte values
BaseCount
Prefix Sum
16 x 16 5 5
32 x 32 5 10
64 x 64 3 13
![Page 18: Ptex and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD](https://reader035.vdocuments.us/reader035/viewer/2022070407/5681432f550346895dafa0c4/html5/thumbnails/18.jpg)
Preprocess
●Sort primitives by resolution●Generate packed textures●Generate constant buffers
● Prefix sum of resolution count● Row (V) offset for each resolution
![Page 19: Ptex and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD](https://reader035.vdocuments.us/reader035/viewer/2022070407/5681432f550346895dafa0c4/html5/thumbnails/19.jpg)
Texture Compression
●Start with at least 2x2●2-texel border to get mulitple of 4x4●Prevents compression across faces
![Page 20: Ptex and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD](https://reader035.vdocuments.us/reader035/viewer/2022070407/5681432f550346895dafa0c4/html5/thumbnails/20.jpg)
Authoring Vector Displacement
●Author base mesh●Subdivide and edit●Export Displacement from base
![Page 21: Ptex and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD](https://reader035.vdocuments.us/reader035/viewer/2022070407/5681432f550346895dafa0c4/html5/thumbnails/21.jpg)
Vector Displacement Without Seams●Preprocessing
● Border values match● Corners match
●Runtime● Constant tessellation for now
![Page 22: Ptex and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD](https://reader035.vdocuments.us/reader035/viewer/2022070407/5681432f550346895dafa0c4/html5/thumbnails/22.jpg)
Demos
![Page 23: Ptex and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD](https://reader035.vdocuments.us/reader035/viewer/2022070407/5681432f550346895dafa0c4/html5/thumbnails/23.jpg)
Time Cost – Displaced Leo● 1920 x 1200 ● Albedo, AO, Spec, Normal● Radeon HD 7970● Wall Clock
●Average frame time: 1.3 ms●Average frame cost: ~10 microseconds
● Perf Query●Average frame time: 2.8 ms●Average frame cost: 0.6 ms
![Page 24: Ptex and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD](https://reader035.vdocuments.us/reader035/viewer/2022070407/5681432f550346895dafa0c4/html5/thumbnails/24.jpg)
Space Efficiency
37% Black 7% Black9-23% Borders
![Page 25: Ptex and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD](https://reader035.vdocuments.us/reader035/viewer/2022070407/5681432f550346895dafa0c4/html5/thumbnails/25.jpg)
Problems
●GS or Tessellation for per-face UVs●Some sorting restrictions
● Indirection solves that at a cost●Anisotropic cost●Ties between geometry and texture●Quads only so far
![Page 26: Ptex and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD](https://reader035.vdocuments.us/reader035/viewer/2022070407/5681432f550346895dafa0c4/html5/thumbnails/26.jpg)
Conclusion
●Can actually save memory●Computationally cheap●Most promising for seamless displacement