Geometry Textures Rodrigo de Toledo, (PhD candidate at LORIA-INRIA) (Researcher at Tecgraf, PUC-Rio) Bin Wang and Bruno Levy Geometry Textures • • • • Geometry Texture is a patch of surface A set of GT is used to represent/render an entire object Representation is based on height maps Rendering is based on GPU ray casting Motivation • In highly detailed meshes, small triangles represent mesostructures • Maybe it is better to render these mesostructres using a more appropriate representation • Main idea: to use mesoscale rendering algorithms for macroscale visualization Summary • Motivation • Scale level classification • Mesoscale • GPU ray-casting of height maps • Conversion • Visualizing • Results Visualization algorithms grouped into scale levels Scene-scale • z-buffer • ray tracing • spatial subdivision • culling Macroscale • object representation • shading • LOD • impostors Mesoscale • (between macro and micro) • textures • mesostructures Microscale • complex lighting models • photon mapping • BSSRDF Mesoscale • Mesostructure representation – Color map – Normal map (bump) – Height map – Volumetric mesostructure – Shading function (BRDF) Mesostructure visualization Mesoscale Mesoscale methods • Expected rendering effects – – – – – Summary • Motivation • Scale level classification • Mesoscale • GPU ray-casting of height maps • Conversion • Visualizing • Results Height-map GPU ray casting Linear search Binary search BinRayCasting() { for 1..M { ΔΔ/2 Δ z(P) ? -Δ : Δ P P + Δ’ } } ray path sampled N times v P0 second searching step missing a sample if is big Pi-1 P1 P2 P'i Pi-1 Pi hm(x,y) Pi Height-map GPU ray casting • Silhouette, self-occlusion and self-shadow • Balance between steps 66 [Policarpo and Oliveira 2005] 70 85 Profile Top view view Balance: Balance:more morequality speed 55 Height-map GPU ray casting It can be used to mesoscale visualization But, we propose to use it for macroscale visualization: Geometry Textures Geometry Textures • Parallel hexahedron with height map in its interior • Each one has its own orientation • HM domain is not restricted to a perfect rectangle Previous work on multiple height maps: • Relief Texture Mapping [OB00] • Rendering Geometry with Relief Texture [BD06] • Real-time VDM using per-pixel visibility [PDG05] Summary • Motivation • Scale level classification • Mesoscale • GPU ray-casting of height maps • Conversion • Visualizing • Results Conversion overview Mesh Partioning mesh Bounding-box Maps extraction Partioning x, y definition (PCA analysis) color,normal,height maps extraction Overlapping bbox domain in 3D maps dilation z definition (normal median) Verify folding Geometry Texture set Partitioning • The most complex step in conversion • Each part should not present any folding (no overhang) • Domain as square as possible Partitioning strategies VSA [Steiner et al. 04] Method Domain filling (%) PGP 77.44% VSA PGP [Ray et al. 05] 53.75% Initial Folding Charts Charts 403 62 397 6 Summary • Motivation • Scale level classification • Mesoscale • GPU ray-casting of height maps • Conversion • Visualizing • Results Geometry Texture Results Using dragon example to test: (1.2 million triangles) • • • • Rendering quality Rendering speed Pre-processing performance Memory space Geometry Texture Results (rendering quality) mesh 5122 2562 1282 2562 is the best option mesh 5122 256 128 Geometry Texture Results (rendering quality) Seamless reconstruction due to overlapping + z-buffer • GT should respect z-buffer rules: – Compute depth + test + update z-buffer • Z-fight (for the same color) Geometry Texture Results (rendering performance) GeForce 8800 • 2562 GeoTex is faster than mesh for screen-size smaller than 800x600 Geometry Texture Results (pre-processing and memory) • Original Dragon: 13.3 MB • From quality point of view: 2562 is good • If memory is a problem: 1282 Video Conclusion • Positive aspects: – Rendering speed follows a LOD behavior. – It can be used with other polygonal objects in scene (z-buffer). – Memory reduction is possible without losing too much information. • Drawbacks: – Too much complex conversion algorithm. • Especially the partitioning step (which is considerably elaborate). • We suggest the use of multilayer height maps (FW). – It is hard to battle VBO speed in recent graphics cards. • We should test GT with more complex models (such as David). • If multiple models on the screen at the same time, GT can battle VBO. [PDG05] Future work • Image operations on geometry textures • Multilayer height maps – Sequence of height maps for the entire object – Layers forming a CSG representation Thank you Questions?