Hardware-accelerated Point-based Rendering of Surfaces and Volumes Eduardo Tejada, Tobias Schafhitzel, Thomas Ertl Universität Stuttgart, Germany
Eduardo Tejada - Hardware-accelerated point-based rendering of surfaces and volumes2 Motivation Point-bases Surfaces No explicit connectivity or topology information. Easy manipulation (modeling). Easy serializability. Compact storing. Point Set Surfaces (Alexa et al., 2003). Smooth surfaces. Low-frequency noise handling. User-defined minimum feature size.
Eduardo Tejada - Hardware-accelerated point-based rendering of surfaces and volumes3 Motivation Graphics hardware new capabilities. Shader Model 3: Dynamic flow control. Floating-point textures (also as RT). Numerical algorithms on the GPU. Ray-tracing PSS slow on the CPU: on the GPU?
Eduardo Tejada - Hardware-accelerated point-based rendering of surfaces and volumes4 Point-based Rendering
Eduardo Tejada - Hardware-accelerated point-based rendering of surfaces and volumes5 Point-based Rendering
Eduardo Tejada - Hardware-accelerated point-based rendering of surfaces and volumes6 Point-based Rendering
Eduardo Tejada - Hardware-accelerated point-based rendering of surfaces and volumes7 Our Method - Idea Normal vectors: covariance analysis
Eduardo Tejada - Hardware-accelerated point-based rendering of surfaces and volumes8 Our Method - Idea Polynomial approximation: MLS.
Eduardo Tejada - Hardware-accelerated point-based rendering of surfaces and volumes9 Our Method - Idea
Eduardo Tejada - Hardware-accelerated point-based rendering of surfaces and volumes10 Our Method - Idea
Eduardo Tejada - Hardware-accelerated point-based rendering of surfaces and volumes11 Our Method - Idea
Eduardo Tejada - Hardware-accelerated point-based rendering of surfaces and volumes12 Our Method - Textures Texture positions
Eduardo Tejada - Hardware-accelerated point-based rendering of surfaces and volumes13 Our Method - Textures Texture positions Texture neighbors
Eduardo Tejada - Hardware-accelerated point-based rendering of surfaces and volumes14 Our Method – Pre-processing (Render Pass) Texture positions Texture neighbors Texture base_a Texture base_b Texture base_c Texture polynomial Render a single quad of size equal to texture positions’ For each fragment 1.Calculate texture coordinates 2.Access positions and neighbors 3.Estimate normal (n) with covariance analysis 4.Create local system {a, b, c}, where c = n 5.Transform neighbors positions to local system 6.Calculate local approximation g i (A, B, C, D)
Eduardo Tejada - Hardware-accelerated point-based rendering of surfaces and volumes15 Our Method – Rendering (First Render Pass) Texture base_a Texture base_b Texture base_c Texture polynomial
Eduardo Tejada - Hardware-accelerated point-based rendering of surfaces and volumes16 Our Method – Rendering (First Render Pass) Texture base_a Texture base_b Texture base_c Texture polynomial Texture normal Texture intersection Render a viewport aligned disc for each p i For each fragment of point p i 1. Fetch texture coordinates 2. Fetch the base {a i, b i, c i } and polynomial g i 3. Transform the ray to the base {a i, b i, c i } 4. Find intersection of the ray with g i 5. Calculate the normal (derivative of g i ) 6. Write intersection, normal and depth
Eduardo Tejada - Hardware-accelerated point-based rendering of surfaces and volumes17 Results – First Intersection 28 fps20 fps
Eduardo Tejada - Hardware-accelerated point-based rendering of surfaces and volumes18 Our Method – Introducing Refraction
Eduardo Tejada - Hardware-accelerated point-based rendering of surfaces and volumes19 Our Method – Introducing Refraction
Eduardo Tejada - Hardware-accelerated point-based rendering of surfaces and volumes20 Our Method – Introducing Refraction
Eduardo Tejada - Hardware-accelerated point-based rendering of surfaces and volumes21 Our Method – Introducing Refraction
Eduardo Tejada - Hardware-accelerated point-based rendering of surfaces and volumes22 Our Method – Introducing Refraction
Eduardo Tejada - Hardware-accelerated point-based rendering of surfaces and volumes23 Our Method – Introducing Refraction
Eduardo Tejada - Hardware-accelerated point-based rendering of surfaces and volumes24 Our Method – Introducing Refraction
Eduardo Tejada - Hardware-accelerated point-based rendering of surfaces and volumes25 Our Method – Introducing Refraction
Eduardo Tejada - Hardware-accelerated point-based rendering of surfaces and volumes26 Our Method – Introducing Refraction
Eduardo Tejada - Hardware-accelerated point-based rendering of surfaces and volumes27 Our Method – Buckets
Eduardo Tejada - Hardware-accelerated point-based rendering of surfaces and volumes28 Our Method – Buckets Texture pointers Texture buckets Texture positions Texture neighbors
Eduardo Tejada - Hardware-accelerated point-based rendering of surfaces and volumes29 Our Method – Rendering (Iterative Render Pass) Texture base_a Texture base_b Texture base_c Texture polynomial Texture buckets Texture pointers Texture current_direction Texture current_ position Texture current_ cell Texture accumulated_color Render a single quad covering the viewport For each fragment 1. Fetch the points in the cell. 3. Find the nearest intersection 4. If an intersection is found 4.1 Update position, direction and color 5. Otherwise determine next cell.
Eduardo Tejada - Hardware-accelerated point-based rendering of surfaces and volumes30 Results – Shadows 10 fps
Eduardo Tejada - Hardware-accelerated point-based rendering of surfaces and volumes31 Results – Refraction 1.33 fps2.16 fps
Eduardo Tejada - Hardware-accelerated point-based rendering of surfaces and volumes32 Results – Multiple Indices of Refraction 0.25 fps0.22 fps
Eduardo Tejada - Hardware-accelerated point-based rendering of surfaces and volumes33 Our Method – Introducing Volumetric Effects
Eduardo Tejada - Hardware-accelerated point-based rendering of surfaces and volumes34 Results – Volumetric Effects 1.08 fps0.96 fps
Eduardo Tejada - Hardware-accelerated point-based rendering of surfaces and volumes35 Conclusion We do not use specialized HW (e.g. Wald and Seidel). Neighbors search on the GPU not solved. Kd-trees better than grid for ray-intersection, but for neighbors search? Future: full PSS computation.
Questions?