1.22k likes | 1.47k Views
Quadtree Displacement Mapping with Height Blending. Practical Detailed Multi-Layer Surface Rendering Michal Drobot Technical Art Director Reality Pump. Outline. Introduction Motivation Existing Solutions Quad tree Displacement Mapping Shadowing Surface Blending Conclusion.
E N D
Quadtree Displacement Mappingwith Height Blending Practical Detailed Multi-Layer Surface Rendering Michal Drobot Technical Art Director Reality Pump
Outline • Introduction • Motivation • ExistingSolutions • Quad tree Displacement Mapping • Shadowing • Surface Blending • Conclusion
Introduction • Next generation rendering • Higher quality per-pixel • More effects • Accurate computation • Less triangles, more sophistication • Ray tracing • Volumetric effects • Post processing • Real world details • Shadows • Lighting • Geometric properties
Surface rendering • Surface rendering stuck at • Blinn/Phong • Simple lighting model • Normal mapping • Accounts for light interaction modeling • Doesn’t exhibit geometric surface depth • Industry proven standard • Fast, cheap, but we want more…
Improvements • Several titles tackled high quality surface rendering • Gears of War • Multiple custom materials • Different light properties • Additional geometric details • Crysis • Multiple custom surfaces • Exhibit natural phenomenon • Ice • Skin • Parallax mapped terrain features
Terrain surface rendring • Rendering terrain surface is costly • Requires blending • With current techniques prohibitive • Blend surface exhibit high geometric complexity
Surfaceproperties • Surfacegeometricproperties • Volume • Depth • Variousfrequencydetails • Together they model visual clues • Depth parallax • Self shadowing • Light Reactivity
Surface Rendering • Lightinteractions • Depends on surfacemicrostructere • Many analitycsolutionsexists • Cook Torrance BRDF • Modelling geometric complexity • Triangle approach • Costly • Vertextransform • Memory • More usefullwithTessalation (DX 10.1/11) • Ray tracing
Motivation • Render different surfaces • Terrains • Objects • Dynamic Objects • Fluid/Gas simulation • Do it fast • Current Hardware • Consoles (X360) • Scalable for upcoming GPUs • Minimize memory usage • Preferably not more than standard normal mapping • Consoles are limited
Motivation • Our solution should support • Accurate depth at all angles • Self shadowing • Ambient Occlusion • Fast and accurate blending
ExistingSolutions • Depth complexity • Calculate correct surface depth • Find correct view ray – height field intersection • Compute lighting calculation using calculated depth offset
False View Ray 0.0 Height 1.0 0.0 UV Texture Space 1.0
False View Ray Correct 0.0 Height 1.0 0.0 UV Texture Space 1.0
Online methods • Perform ray tracing using height field data only • Additional memory footprint • 1x8 bit texture • May use alpha channel • DXT5 – OK! • Remember about alpha interpolation!
Relief mapping • Relief mapping (Policarpo 2005) • Performs intersection calculation by linear search in 2D height field space • Refines the result by binary search near the point of possible hit
Linearsearchwithstatic step length False View Ray Correct 0.0 HIT Height 1.0 0.0 UV Texture Space 1.0
LinearSearch • Linear search in each step • Check if ray over height field • If YES • Move the ray by const distance • If NOT • Stop and go to Binary Search
LinearSearch • Capped by max iterations • Dynamic early out on stop condition • Utilizesindependantreads and linearfiltering • Hardware optimized • Fast for small number of iterations
LinearSearch • Drawbacks • Slow convergence • Prone to aliasing • With large steps may miss height field features • Scales bad with high resolution height fields • Worst case iteration count is n*sqrt(2) for n texelheightfield
Linearsearchwithstatic step length False View Ray Correct 0.0 MISS Height HIT 1.0 0.0 UV Texture Space 1.0
BinarySearch • Staticnumber of iterations • Performssearchalonglast step vector • Convergesfast • Utilizeslinearfiltering
BinarySearch • Drawbacks • Utilizes dependant reads • Not optimized hardware • Slow • Adds GPR • May find wrong intersection due to linear search fault • On its own unusable
Binary search withstatic step length False View Ray Correct 0.0 Binary search region Height 1.0 0.0 UV Texture Space 1.0
Parallax Oclussion Mapping • POM (Tatarchuk 06) • Substitiutes costly binary search by piecewise linear approximation using ALU • Adds several performance improvements to linear search • Dynamic iteration count • LOD system • Approximate soft shadows
Parallax Oclussion Mapping • Pros • Faster than relief mapping • Cons • Same as for linear search • Inaccurate intersection point resulting in missed features for the cost of less noticeable artifacts
POM False View Ray Correct 0.0 linearly approximated intersection Height 1.0 0.0 UV Texture Space 1.0
Preprocessed method • Several methods rely on preprocessed data • Per-pixel Displacement with Distance Function • Using additional 3D textures rising memory footprint to much • Impractical • Cone Step Mapping • Relaxed Cone Step Mapping
Cone Step Mapping • CSM (Dummer 2006) • Based on Cone Maps • Associate circular cone to each texel of height field • Per-texel cone is the largest cone, not intersecting the height field • Performs linear search with step length determined by actual cone radius • Leaps empty space • Conservative approach • Allows accurate intersection computation • Requires additional uncompressed 1x8bit texture for cone angles
Cone Step Mapping • Pros • Very fast • Requires significantly smaller number of iterations than pure linear methods • Under-sampling provides distortions artifact, less noticeable than interleaving • Accurate • There is no possibility to miss a feature
Cone Step Mapping • Cons • May not converge in reasonable number of steps • Needs iteration cap • Performance highly dependant on height field complexity • Horrendous preprocessing time • 256^2 - ~2 min • 512^2 - ~14 min • 1024^2 - ~7.5 h • Effectively impractical for interactive artist tweaking or on-the-fly generation
CSM False View Ray Correct 0.0 Height 1.0 0.0 UV Texture Space 1.0
CSM False View Ray Correct 0.0 Height 1.0 0.0 UV Texture Space 1.0
CSM False View Ray Correct 0.0 Height 1.0 0.0 UV Texture Space 1.0
CSM False View Ray Correct 0.0 Height 1.0 0.0 UV Texture Space 1.0
CSM False View Ray Correct 0.0 HIT Height 1.0 0.0 UV Texture Space 1.0
Quadtree Displacement Mapping • QDM • GPU optimisedversion of classicterrainrenering, hierarchicalraytraycingalgorithm [Cohen ans Sake 1993] • usesmipmapstructureresembling a densequadtreestoring minimum depth to thebaseplane of height field
QuadtreeStructure • Simple construction • Mipmappingwith min operator instead of average • Hardware optimized • Smallmemoryfootprint • 1x8bit texturewithMipMaps
QuadtreeStructure • Quadtreecan be generated on-the-fly • Neglible performance loss
QDM • Ray tracing • Traverse the quadtree • From root (max MIP-hierarchy level) • To lowest leaf (MIP-hierarchy Level 0) • MIP Level 0 • Accurate intersection • Can get inter-texel results using • Linear approximation • Binary Search • Bilinear Patch
Ray tracing • While(Hierarchy_Level > 0) • Depth =getMaxDepth(Pos,Level) • If(Ray_Depth < Depth) • Move_Ray_To_Nearest_Intersection • Else • Descend_One_Hierarchy_Level • Find_Accurate_Intersection
QDM construction 0.0 z Height 1.0 0.0 UV TextureSpace 1.0
QDM construction 0.0 z Height 1.0 0.0 UV Texture Space 1.0
QDM construction 0.0 z Height 1.0 0.0 UV Texture Space 1.0
QDM construction 0.0 z Height 1.0 0.0 UV Texture Space 1.0
QDM construction 0.0 z Height 1.0 0.0 UV Texture Space 1.0
QDM construction 0.0 z Height 1.0 0.0 UV Texture Space 1.0
View Ray QDM Ray tracing 0.0 z Height 1.0 0.0 UV Texture Space 1.0