26
Ptex and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD

Ptex and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD

Embed Size (px)

DESCRIPTION

Ptex and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD. Ptex Showings. September 2011 – Press Event Siggraph Asia 2011 – Sketch Radeon HD 7970 Launch – Press Event Modified GL version , won’t discuss. Ptex. - PowerPoint PPT Presentation

Citation preview

Page 1: Ptex  and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD

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

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

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

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

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

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

Borders for Filtering

Page 8: Ptex  and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD

Borders for Filtering

Page 9: Ptex  and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD

Borders for Filtering

Page 10: Ptex  and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD

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

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

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

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

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

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

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

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

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

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

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

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

Demos

Page 23: Ptex  and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD

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

Space Efficiency

37% Black 7% Black9-23% Borders

Page 25: Ptex  and Vector Displacement in AMD Demos Karl Hillesland Member of Technical Staff, AMD

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

Conclusion

●Can actually save memory●Computationally cheap●Most promising for seamless displacement