100 likes | 408 Views
Physically Based Real-time Ray Tracing. Ryan Overbeck. Overview. Ray tracing Broadest success at solving physically based rendering tasks. But is slower than Z-Buffer (for primary visibility) Real-time Ray Tracing Recent algorithmic improvements make real-time ray tracing possible
E N D
Physically Based Real-time Ray Tracing Ryan Overbeck
Overview • Ray tracing • Broadest success at solving physically based rendering tasks. • But is slower than Z-Buffer (for primary visibility) • Real-time Ray Tracing • Recent algorithmic improvements make real-time ray tracing possible • Most of these algorithmic improvements have only been demonstrated for primary visibility w. point light shadows • Physically Based Ray Tracing • Uses Path Tracing / Monte-Carlo ray tracing for physical effects • Consistent algorithmic improvements over the years • Very Slow • Currently Real-time and Physically Based ray tracing algorithms don’t work well together
Real-time Ray Tracing • Ray Packets: Shoot 4 or 4x4 (or more) rays at a time • Neighboring rays take similar paths through the scene • Use SIMD (ie. SSE) instructions to perform one instruction on 4 floating point values at once • Use interval arithmetic to use a single test to represent the entire packet • Geometry Proxies: Frustum Traversal, LCTS… • Use bounding geometry to represent a larger group of rays (usually 16x16 – 128x128) • Miscellaneous Improvements • Improved Acceleration Structures, • Geometry Intersection tests, • Multi-threading for multi-core architectures, • …
Physically Based Ray Tracing • Effects • Image anti-aliasing, Motion Blur • Complex Lighting (soft shadows, hard shadows, environment lighting, ambient lighting, inter-reflections…) • Complex Materials (perfect reflection, glossy reflection, subsurface scattering,…) • Film / Lens effects (depth of field, bloom, …) • Tools • Intelligent sampling distributions (Stratified Sampling, Importance Sampling, Low discrepancy sampling, Poisson Disc Sampling, …) • Adaptive / Interpolated Sampling • Image / Film processing (filters, tone mapping,…)
My Goals • Long Term: • Design algorithms to marry real-time ray tracing with physically based ray tracing • Short Term: • Build a Framework within which I can experiment • Where to start? • MLRT – fastest real-time ray tracer • Would need to make it more general • Highly optimized code very difficult to modify • PBRT – Most general Free physically based ray tracer • Would need to make it fast • Very nice design: easy to modify
Progress • Started overhaul of PBRT • Tightened up kd-tree traversal code • Added accelerations for ray vs. triangle intersection • Parallelized PBRT -- multi-core processors • Tile image space (usually 64x64 tiles) • statically assign tiles to threads • Added 4-ray packets for primary rays • Shoot 4 rays at a time • Use SIMD SSE to accelerate ray traversal
Test Setup • 512x512 images • 1 sample/pixel • PBRT low discrepancy sampling for primary samples • 2x2 PBRT box filter for image reconstruction • 3.0GHz Pentium 4 (2 cores)
Test Setup • Scenes
Next Steps • Tighten up samplers and image filtering • These two are adding ~.3 s to 512x512 render time (almost as much as ray casting) • Larger ray packets (esp. 4x4) • Add Frustum Traversal • Move to secondary effects • This will mark the beginning of new research territory