![Page 1: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/1.jpg)
Enhancing Traditional Rasterization Graphics with Ray Tracing
March 2015
![Page 2: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/2.jpg)
2 @PowerVRInsider │ #idc15 facebook.com/imgtec
Introductions
James Rumble
Developer Technology Engineer
Ray Tracing Support
Justin DeCell
Software Design Engineer
Ray Tracing Visualizer
![Page 3: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/3.jpg)
3 @PowerVRInsider │ #idc15 facebook.com/imgtec
Overview
PowerVR Ray Tracing Introduction:
What is Ray Tracing?
PowerVR Ray Tracing Pipeline
Hybrid Ray Tracing
Fast Ray Traced Soft Shadows
Conclusion
![Page 4: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/4.jpg)
What is Ray Tracing?
![Page 5: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/5.jpg)
5 @PowerVRInsider │ #idc15 facebook.com/imgtec
Tracing Rays
Rays used to model real-world behaviour of light.
Forward Ray Tracing:
Rays traced from the light source.
Many rays never reach our eyes.
Backward Ray Tracing:
Rays traced from the “eye” towards light.
Forward Ray Tracing vs Backward Ray Tracing
![Page 6: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/6.jpg)
6 @PowerVRInsider │ #idc15 facebook.com/imgtec
Tracing Rays
Rays used to model real-world behaviour of light.
Forward Ray Tracing:
Rays traced from the light source.
Many rays never reach our eyes.
Backward Ray Tracing:
Rays traced from the “eye” towards light.
Forward Ray Tracing vs Backward Ray Tracing
![Page 7: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/7.jpg)
7 @PowerVRInsider │ #idc15 facebook.com/imgtec
Tracing Rays
Rays used to model real-world behaviour of light.
Forward Ray Tracing:
Rays traced from the light source.
Many rays never reach our eyes.
Backward Ray Tracing:
Rays traced from the “eye” towards light.
Forward Ray Tracing vs Backward Ray Tracing
![Page 8: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/8.jpg)
8 @PowerVRInsider │ #idc15 facebook.com/imgtec
Tracing Rays
Rays used to model real-world behaviour of light.
Forward Ray Tracing:
Rays traced from the light source.
Many rays never reach our eyes.
Backward Ray Tracing:
Rays traced from the “eye” towards light.
Forward Ray Tracing vs Backward Ray Tracing
![Page 9: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/9.jpg)
9 @PowerVRInsider │ #idc15 facebook.com/imgtec
Tracing Rays
Rays used to model real-world behaviour of light.
Forward Ray Tracing:
Rays traced from the light source.
Many rays never reach our eyes.
Backward Ray Tracing:
Rays traced from the “eye” towards light.
Forward Ray Tracing vs Backward Ray Tracing
![Page 10: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/10.jpg)
10 @PowerVRInsider │ #idc15 facebook.com/imgtec
Tracing Rays
Rays used to model real-world behaviour of light.
Forward Ray Tracing:
Rays traced from the light source.
Many rays never reach our eyes.
Backward Ray Tracing:
Rays traced from the “eye” towards light.
Forward Ray Tracing vs Backward Ray Tracing
![Page 11: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/11.jpg)
11 @PowerVRInsider │ #idc15 facebook.com/imgtec
Tracing Rays
Rays used to model real-world behaviour of light.
Forward Ray Tracing:
Rays traced from the light source.
Many rays never reach our eyes.
Backward Ray Tracing:
Rays traced from the “eye” towards light.
Forward Ray Tracing vs Backward Ray Tracing
![Page 12: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/12.jpg)
12 @PowerVRInsider │ #idc15 facebook.com/imgtec
What is Ray Tracing?
Primary rays fired from
“eye” through pixels of
the screen.
Find closest triangle
intersection.
Backwards Ray Tracing
![Page 13: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/13.jpg)
13 @PowerVRInsider │ #idc15 facebook.com/imgtec
What is Ray Tracing?
Ray Tracing provides the ability for
the shading of one object to be
aware of the geometry of other
objects in the scene.
![Page 14: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/14.jpg)
PowerVR Ray Tracing Pipeline
![Page 15: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/15.jpg)
15 @PowerVRInsider │ #idc15 facebook.com/imgtec
PowerVR Ray Tracing Pipeline
Scene Hierarchy Building Phase
Vertex
Processing
Hierarchy
Generation
Geometry
Data
Memory
Scene
Hierarchy
Ray Traversal Phase
Primary Ray
Generation
Intersection
TestsRay Shaders Accumulation
![Page 16: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/16.jpg)
16 @PowerVRInsider │ #idc15 facebook.com/imgtec
Scene Hierarchy Generation Geometry Submission
Scene Hierarchy Building Phase
Vertex
Processing
Hierarchy
Generation
Memory
Scene
Hierarchy
Ray Traversal Phase
Primary Ray
Generation
Intersection
TestsRay Shaders Accumulation
Geometry Submission
Scene
ComponentsScenes
Geometry
Data
![Page 17: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/17.jpg)
17 @PowerVRInsider │ #idc15 facebook.com/imgtec
Scene Hierarchy Generation
Scene Components
Windshield
Scene Component:
- Program:
- Vertex Shader
- Ray Shader
- Uniforms
- Geometry Data
- Buffers
- Textures
Car Body
Scene Component:
- Program:
- Vertex Shader
- Ray Shader
- Uniforms
- Geometry Data
- Buffers
- Textures
Headlights
Scene Component:
- Program:
- Vertex Shader
- Ray Shader
- Uniforms
- Geometry Data
- Buffers
- Textures
Tyres
Scene Component:
- Program:
- Vertex Shader
- Ray Shader
- Uniforms
- Geometry Data
- Buffers
- Textures
Chrome
Scene Component:
- Program:
- Vertex Shader
- Ray Shader
- Uniforms
- Geometry Data
- Buffers
- Textures
![Page 18: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/18.jpg)
18 @PowerVRInsider │ #idc15 facebook.com/imgtec
Scene Hierarchy Generation
Contain groups of components.
Ray traversal occurs within scene.
Scenes
Windshield
Scene Component:
- Program:
- Vertex Shader
- Ray Shader
- Uniforms
- Geometry Data
- Buffers
- Textures
Car Body
Scene Component:
- Program:
- Vertex Shader
- Ray Shader
- Uniforms
- Geometry Data
- Buffers
- Textures
Headlights
Scene Component:
- Program:
- Vertex Shader
- Ray Shader
- Uniforms
- Geometry Data
- Buffers
- Textures
Tyres
Scene Component:
- Program:
- Vertex Shader
- Ray Shader
- Uniforms
- Geometry Data
- Buffers
- Textures
Chrome
Scene Component:
- Program:
- Vertex Shader
- Ray Shader
- Uniforms
- Geometry Data
- Buffers
- Textures
Windshield
Scene Component:
- Program:
- Vertex Shader
- Ray Shader
- Uniforms
- Geometry Data
- Buffers
- Textures
Car Body
Scene Component:
- Program:
- Vertex Shader
- Ray Shader
- Uniforms
- Geometry Data
- Buffers
- Textures
Headlights
Scene Component:
- Program:
- Vertex Shader
- Ray Shader
- Uniforms
- Geometry Data
- Buffers
- Textures
Tyres
Scene Component:
- Program:
- Vertex Shader
- Ray Shader
- Uniforms
- Geometry Data
- Buffers
- Textures
Chrome
Scene Component:
- Program:
- Vertex Shader
- Ray Shader
- Uniforms
- Geometry Data
- Buffers
- Textures
Windshield
Scene Component:
- Program:
- Vertex Shader
- Ray Shader
- Uniforms
- Geometry Data
- Buffers
- Textures
Car Body
Scene Component:
- Program:
- Vertex Shader
- Ray Shader
- Uniforms
- Geometry Data
- Buffers
- Textures
Headlights
Scene Component:
- Program:
- Vertex Shader
- Ray Shader
- Uniforms
- Geometry Data
- Buffers
- Textures
Tyres
Scene Component:
- Program:
- Vertex Shader
- Ray Shader
- Uniforms
- Geometry Data
- Buffers
- Textures
Chrome
Scene Component:
- Program:
- Vertex Shader
- Ray Shader
- Uniforms
- Geometry Data
- Buffers
- Textures
![Page 19: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/19.jpg)
19 @PowerVRInsider │ #idc15 facebook.com/imgtec
Scene Hierarchy Generation
Vertex Processing
Scene Hierarchy Building Phase
Hierarchy
Generation
Memory
Scene
Hierarchy
Ray Traversal Phase
Primary Ray
Generation
Intersection
TestsRay Shaders Accumulation
Geometry
Data
Vertex
Processing
![Page 20: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/20.jpg)
20 @PowerVRInsider │ #idc15 facebook.com/imgtec
Scene Hierarchy Generation
Vertex shader used to transform geometry to world space.
Vertex Processing
![Page 21: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/21.jpg)
21 @PowerVRInsider │ #idc15 facebook.com/imgtec
Scene Hierarchy Generation
Scene Hierarchy Building Phase
Memory
Scene
Hierarchy
Ray Traversal Phase
Primary Ray
Generation
Intersection
TestsRay Shaders Accumulation
Geometry
Data
Vertex
Processing
Hierarchy
Generation
Hierarchy Generation
![Page 22: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/22.jpg)
22 @PowerVRInsider │ #idc15 facebook.com/imgtec
Scene Hierarchy Generation
Organises triangles based on their size
and position.
Application developer does not need to
worry about handling this.
Simple “Build” command.
Hierarchy Generation
![Page 23: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/23.jpg)
23 @PowerVRInsider │ #idc15 facebook.com/imgtec
Scene Hierarchy Generation
Organises triangles based on their size
and position.
Application developer does not need to
worry about handling this.
Simple “Build” command.
Hierarchy Generation
![Page 24: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/24.jpg)
24 @PowerVRInsider │ #idc15 facebook.com/imgtec
Scene Hierarchy Generation
Organises triangles based on their size
and position.
Application developer does not need to
worry about handling this.
Simple “Build” command.
Hierarchy Generation
![Page 25: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/25.jpg)
25 @PowerVRInsider │ #idc15 facebook.com/imgtec
Scene Hierarchy Generation
Organises triangles based on their size
and position.
Application developer does not need to
worry about handling this.
Simple “Build” command.
Hierarchy Generation
![Page 26: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/26.jpg)
26 @PowerVRInsider │ #idc15 facebook.com/imgtec
Scene Ray Traversal
Scene Hierarchy Building Phase
Vertex
Processing
Hierarchy
Generation
Geometry
Data
Memory
Scene
Hierarchy
Ray Traversal Phase
Primary Ray
Generation
Intersection
TestsRay Shaders Accumulation
![Page 27: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/27.jpg)
27 @PowerVRInsider │ #idc15 facebook.com/imgtec
Scene Ray Traversal Primary Ray Generation
Scene Hierarchy Building Phase
Vertex
Processing
Hierarchy
Generation
Geometry
Data
Memory
Scene
Hierarchy
Ray Traversal Phase
Intersection
TestsRay Shaders Accumulation
Primary Ray
Generation
![Page 28: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/28.jpg)
28 @PowerVRInsider │ #idc15 facebook.com/imgtec
Scene Ray Traversal
Frame Shaders:
Run once per pixel to emit
primary rays into the scene.
Common case – fire a ray
per-pixel over a full-screen
quad.
Alternatively – Frame shader
can be setup as any m x n
dimension.
Primary Ray Generation
![Page 29: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/29.jpg)
29 @PowerVRInsider │ #idc15 facebook.com/imgtec
Scene Ray Traversal Intersection Tests
Scene Hierarchy Building Phase
Vertex
Processing
Hierarchy
Generation
Geometry
Data
Memory
Scene
Hierarchy
Ray Traversal Phase
Ray Shaders AccumulationPrimary Ray
Generation
Intersection
Tests
![Page 30: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/30.jpg)
30 @PowerVRInsider │ #idc15 facebook.com/imgtec
Scene Ray Traversal
Simple approach – each ray tested against
all triangles:
Brute force.
m * n intersection tests (m – rays, n – objects).
Use accelerated data structure to reduce
intersection tests.
Application developer does not need to worry
about handling this.
Accelerated triangle and box testing.
Intersection Tests
![Page 31: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/31.jpg)
31 @PowerVRInsider │ #idc15 facebook.com/imgtec
Scene Ray Traversal
Simple approach – each ray tested against
all triangles:
Brute force.
m * n intersection tests (m – rays, n – objects).
Use accelerated data structure to reduce
intersection tests.
Application developer does not need to worry
about handling this.
Accelerated triangle and box testing.
Intersection Tests
![Page 32: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/32.jpg)
32 @PowerVRInsider │ #idc15 facebook.com/imgtec
Scene Ray Traversal
Simple approach – each ray tested against
all triangles:
Brute force.
m * n intersection tests (m – rays, n – objects).
Use accelerated data structure to reduce
intersection tests.
Application developer does not need to worry
about handling this.
Accelerated triangle and box testing.
Intersection Tests
![Page 33: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/33.jpg)
33 @PowerVRInsider │ #idc15 facebook.com/imgtec
Scene Ray Traversal
Simple approach – each ray tested against all
triangles:
Brute force.
m * n intersection tests (m – rays, n – objects).
Use accelerated data structure to reduce
intersection tests.
Application developer does not need to worry
about handling this.
Accelerated triangle and box testing.
Intersection Tests
![Page 34: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/34.jpg)
34 @PowerVRInsider │ #idc15 facebook.com/imgtec
Scene Ray Traversal Ray Shaders and Accumulation
Scene Hierarchy Building Phase
Vertex
Processing
Hierarchy
Generation
Geometry
Data
Memory
Scene
Hierarchy
Ray Traversal Phase
Intersection
Tests
Primary Ray
GenerationRay Shaders Accumulation
![Page 35: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/35.jpg)
35 @PowerVRInsider │ #idc15 facebook.com/imgtec
Scene Ray Traversal
Ray Shaders:
Defined for each component
and invoked when a ray
intersects a triangle.
Defines material properties of
component.
Can emit further rays causing
additional intersection tests.
Ray Shaders and Accumulation
accumulate(0.85, 0.85, 0.75);
reflect(incidentDirection, normal)
![Page 36: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/36.jpg)
36 @PowerVRInsider │ #idc15 facebook.com/imgtec
Pipeline Summary
Scene Hierarchy Building Phase
Vertex
Processing
Hierarchy
Generation
Memory
Scene
Hierarchy
Ray Traversal Phase
Primary Ray
Generation
Intersection
TestsRay Shaders Accumulation
Geometry Submission
Scene
ComponentsScenes
Geometry
Data
![Page 37: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/37.jpg)
37 @PowerVRInsider │ #idc15 facebook.com/imgtec
Pipeline Summary
Scene Hierarchy Building Phase
Vertex
Processing
Hierarchy
Generation
Memory
Scene
Hierarchy
Ray Traversal Phase
Primary Ray
Generation
Intersection
TestsRay Shaders Accumulation
Geometry Submission
Scene
ComponentsScenes
Geometry
Data
![Page 38: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/38.jpg)
38 @PowerVRInsider │ #idc15 facebook.com/imgtec
Pipeline Summary
Scene Hierarchy Building Phase
Vertex
Processing
Hierarchy
Generation
Memory
Scene
Hierarchy
Ray Traversal Phase
Primary Ray
Generation
Intersection
TestsRay Shaders Accumulation
Geometry Submission
Scene
ComponentsScenes
Geometry
Data
![Page 39: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/39.jpg)
Hybrid Ray Tracing
![Page 40: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/40.jpg)
40 @PowerVRInsider │ #idc15 facebook.com/imgtec
How do we use it?
Hybrid Ray Traced Graphics
Hybrid Shadows,
Reflections, etc.
Production-
Quality Renders Ambient
Occlusion
Physics &
Collision
Detection
A.I. & Line of
Sight
Calculations
Global Illumination Virtual Reality
Lens correction, Ultra-low latency
rendering, Lenticular Displays
Asset creation /
compression
Rapid photo-
quality output
Order-Independent
Transparency
Augmented
Reality
![Page 41: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/41.jpg)
41 @PowerVRInsider │ #idc15 facebook.com/imgtec
How do we use it? Light Maps and Probe Baking In Unity Editor 5
![Page 42: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/42.jpg)
42 @PowerVRInsider │ #idc15 facebook.com/imgtec
How do we use it? Hybrid Ray Traced Graphics
![Page 43: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/43.jpg)
43 @PowerVRInsider │ #idc15 facebook.com/imgtec
Render the scene
into a deep frame
buffer (G-Buffer)
Compute Lighting on
each G-Buffer pixel
(No Overdraw)
Assemble the final
frame and perform
screen-space effects
Modern raster-based game engine Deferred shading used in many modern game engines
G-Buffer
Material IDs
Normals
World-Space Positions or depth buffer
Final Result Frame
Lighting Buffer(s)
Lighting calculations executed in screen
space
![Page 44: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/44.jpg)
44 @PowerVRInsider │ #idc15 facebook.com/imgtec
Ray Trace using the G-Buffer Who needs primary rays when we have rasterization?
G-Buffer
Material IDs
Normals
World Space Positions or Depth values
(1.0,0.0,0.0)
(0.5,0.6,-0.2)
(14.3,81.6,-0.4)
![Page 45: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/45.jpg)
45 @PowerVRInsider │ #idc15 facebook.com/imgtec
Ray Trace using the G-Buffer Who needs primary rays when we have rasterization?
G-Buffer
Material IDs
Normals
World Space Positions or Depth values
(1.0,0.0,0.0)
(0.5,0.6,-0.2)
(14.3,81.6,-0.4)
![Page 46: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/46.jpg)
46 @PowerVRInsider │ #idc15 facebook.com/imgtec
Render the scene
into a deep frame
buffer (G-Buffer)
Trace Rays to
determine lighting
Assemble the final
frame and perform
screen-space effects
Hybrid Ray Tracing Use the G-Buffer to setup your rays
G-Buffer
Material IDs
Normals
World-Space Positions or depth buffer
Final Result Frame
Lighting Buffer(s)
![Page 47: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/47.jpg)
Fast Ray Traced Soft Shadows
![Page 48: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/48.jpg)
48 @PowerVRInsider │ #idc15 facebook.com/imgtec
Cascaded Shadow Maps State of the art non-ray tracing technique
Render a shadow map slice for each light at each resolution
View
![Page 49: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/49.jpg)
49 @PowerVRInsider │ #idc15 facebook.com/imgtec
Cascaded Shadow Maps State of the art non-ray tracing technique
Render a shadow map slice for each light at each resolution
View
![Page 50: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/50.jpg)
50 @PowerVRInsider │ #idc15 facebook.com/imgtec
Cascaded Shadow Maps State of the art non-ray tracing technique
Render a shadow map slice for each light at each resolution
View
![Page 51: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/51.jpg)
51 @PowerVRInsider │ #idc15 facebook.com/imgtec
Cascaded Shadow Maps State of the art non-ray tracing technique
Render a shadow map slice for each light at each resolution
View
![Page 52: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/52.jpg)
52 @PowerVRInsider │ #idc15 facebook.com/imgtec
Cascaded Shadow Maps State of the art non-ray tracing technique
Render a shadow map slice for each light at each resolution
View
![Page 53: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/53.jpg)
53 @PowerVRInsider │ #idc15 facebook.com/imgtec
Cascaded Shadow Maps State of the art non-ray tracing technique
View
More shadow detail is stored for objects near to the view
100 texels
per
scene unit
50 texels
per
scene unit
12 texels
per
scene unit
25 texels
per
scene unit
![Page 54: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/54.jpg)
54 @PowerVRInsider │ #idc15 facebook.com/imgtec
Cascaded Shadow Maps State of the art non-ray tracing technique
Sample from the appropriate slices based on distance from view
View
![Page 55: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/55.jpg)
55 @PowerVRInsider │ #idc15 facebook.com/imgtec
Cascaded Shadow Maps State of the art non-ray tracing technique
Sample from the appropriate slices based on distance from view
View
![Page 56: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/56.jpg)
56 @PowerVRInsider │ #idc15 facebook.com/imgtec
Comparison with Cascaded Shadow Maps State of the art non-ray tracing technique
Sample from the appropriate slices based on distance from view
![Page 57: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/57.jpg)
57 @PowerVRInsider │ #idc15 facebook.com/imgtec
Sample from the appropriate slices based on distance from view
Comparison with Cascaded Shadow Maps State of the art non-ray tracing technique
![Page 58: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/58.jpg)
Ray Traced Shadows
![Page 59: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/59.jpg)
59 @PowerVRInsider │ #idc15 facebook.com/imgtec
Ray Traced Shadows
Shoot a ray between surface and the light:
If the ray hits *anything* then do nothing (region is shadowed and unlit)
If the ray reaches the light without hitting anything then illuminate that pixel
Then you’re done!
The basic algorithm for shadowing with ray tracing
![Page 60: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/60.jpg)
60 @PowerVRInsider │ #idc15 facebook.com/imgtec
Soft Shadows
Shadows have sharp edges at noon on a clear day…
But many situations cause soft shadows
The region where a shadow transitions between
fully and partially lit is called the penumbra.
In the real world
Light sources are not infinitely small points
Scattering occurs between the light source and surface
Shadows with soft edges
![Page 61: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/61.jpg)
61 @PowerVRInsider │ #idc15 facebook.com/imgtec
A Simplified Model of Soft Shadows
Fully Lit
Light Source
Occluder
Fully Dark Fully Lit Penumbra Penumbra
Penumbra size is based on the ratio of the distance to an occluder and the light
![Page 62: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/62.jpg)
62 @PowerVRInsider │ #idc15 facebook.com/imgtec
A Simplified Model of Soft Shadows
Fully Lit
Light Source
Occluder
Fully Dark Fully Lit Penumbra Penumbra
Knowing the distance to an object, we can calculate the softness of its shadow
![Page 63: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/63.jpg)
63 @PowerVRInsider │ #idc15 facebook.com/imgtec
A Simplified Model of Soft Shadows
Penumbra
Light Source
Occluder
Fully Dark Penumbra
By knowing the distance to an object, we can calculate the softness of the shadow it casts
![Page 64: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/64.jpg)
64 @PowerVRInsider │ #idc15 facebook.com/imgtec
Algorithm: Distance-To-Occluder Soft Shadows
Shadow rays don’t just record hit vs.
miss, they also record the distance
to the occluder on each hit
After the ray tracing pass, final pixel’s
shadow density is calculated with a
screen-space filter
Pixels in shadow select a filter kernel size
based on the stored distance to the
occluder
Pixels in light perform a limited search to
identify the nearby shadows that could
darken the pixel
Analytical penumbra calculation based on distance to occluder
Store distance
Store distance
![Page 65: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/65.jpg)
65 @PowerVRInsider │ #idc15 facebook.com/imgtec
Algorithm: Distance-To-Occluder Soft Shadows
Easily extended to support
transparent objects
In addition to distance, store a shadow
density value for each pixel that hits an
object
Only store the distance to the first occluder we
encounter
Continue ray towards light until we reach
the light or shadow density is saturated,
i.e. pixel is fully shadowed
Analytical penumbra calculation based on distance to occluder
Store distance Density: 0.5
Store distance Density: 0.5
Density: 1 Discard Ray
Discard Ray
![Page 66: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/66.jpg)
66 @PowerVRInsider │ #idc15 facebook.com/imgtec
Ray Traced Shadows
![Page 67: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/67.jpg)
67 @PowerVRInsider │ #idc15 facebook.com/imgtec
Ray Tracing Density Buffer
![Page 68: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/68.jpg)
68 @PowerVRInsider │ #idc15 facebook.com/imgtec
Ray Tracing Distance Buffer
![Page 69: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/69.jpg)
69 @PowerVRInsider │ #idc15 facebook.com/imgtec
Penumbra Size Calculation Distance selection – in shadow
If current pixel in shadow, use current pixel’s distance to occluder value
![Page 70: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/70.jpg)
70 @PowerVRInsider │ #idc15 facebook.com/imgtec
Penumbra Size Calculation Distance selection – not in shadow
Search for shadowed neighboring pixels
using “cross” pattern
Select the maximum distance to occluder
![Page 71: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/71.jpg)
71 @PowerVRInsider │ #idc15 facebook.com/imgtec
Penumbra Size Calculation Analytically compute penumbra size
Compute penumbra width (P), using
distance to occluder (O), distance to the
light source (L), and the light radius (R)
𝑷 =𝑹𝑶
𝑳
Note: Given an sufficiently far away light, 𝑅 𝐿 can be treated as a constant.
![Page 72: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/72.jpg)
72 @PowerVRInsider │ #idc15 facebook.com/imgtec
Kernel Width Selection Project penumbra width into screen space
𝑷𝒘 𝑫
𝑷𝒔
![Page 73: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/73.jpg)
73 @PowerVRInsider │ #idc15 facebook.com/imgtec
Depth Rejection
Local differencing to compute partial
derivatives with respect to screen space 𝜕𝑧
𝜕𝑥= min |𝑑1,0 − 𝑑0,0 , |𝑑−1,0 − 𝑑0,0
𝜕𝑧
𝜕𝑦= min (|𝑑0,1 − 𝑑0,0 , |𝑑0,−1 − 𝑑0,0 )
Compute depth delta between center pixel
and pixel sampling, accept sample if within
following threshold:
|∆𝑑𝑥,𝑦| ≤ 𝑝𝑥 ∗𝜕𝑧
𝜕𝑥+ 𝑝𝑦 ∗
𝜕𝑧
𝜕𝑦+ 𝜀
Preserve discontinuous edges
![Page 74: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/74.jpg)
74 @PowerVRInsider │ #idc15 facebook.com/imgtec
Depth Rejection
Local differencing to compute partial
derivatives with respect to screen space 𝜕𝑧
𝜕𝑥= min |𝑑1,0 − 𝑑0,0 , |𝑑−1,0 − 𝑑0,0
𝜕𝑧
𝜕𝑦= min (|𝑑0,1 − 𝑑0,0 , |𝑑0,−1 − 𝑑0,0 )
Compute depth delta between center pixel
and pixel sampling, accept sample if within
following threshold:
|∆𝑑𝑥,𝑦| ≤ 𝑝𝑥 ∗𝜕𝑧
𝜕𝑥+ 𝑝𝑦 ∗
𝜕𝑧
𝜕𝑦+ 𝜀
Preserve discontinuous edges
![Page 75: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/75.jpg)
75 @PowerVRInsider │ #idc15 facebook.com/imgtec
Algorithm: Distance-To-Occluder Soft Shadows
Advantages:
No shadow map resolution issues; shadow resolution based on screen resolution
Perfect shadow “contact”; no “Peter Panning”
No noise or banding
Physically plausible penumbra size
More efficient than cascaded shadow maps or multi-ray approaches
At most, casts 1 ray per pixel, often less
Limitations:
Visible penumbra size is limited by the kernel size
A separate buffer or pass is needed for each light, just like shadow maps
Best for daylight scenes with one dominant light, i.e. the sun
Analytical penumbra calculation based on distance to occluder
![Page 76: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/76.jpg)
76 @PowerVRInsider │ #idc15 facebook.com/imgtec
Results 4 slice, 2k, cascaded shadow maps
![Page 77: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/77.jpg)
77 @PowerVRInsider │ #idc15 facebook.com/imgtec
Results Ray traced shadows
![Page 78: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/78.jpg)
78 @PowerVRInsider │ #idc15 facebook.com/imgtec
Results Over blurring
Ray traced Cascaded shadow maps
![Page 79: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/79.jpg)
79 @PowerVRInsider │ #idc15 facebook.com/imgtec
Results 4 slice, 2k, cascaded shadow maps
![Page 80: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/80.jpg)
80 @PowerVRInsider │ #idc15 facebook.com/imgtec
Results Ray traced shadows
![Page 81: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/81.jpg)
81 @PowerVRInsider │ #idc15 facebook.com/imgtec
Results Floating geometry/Peter Panning
Ray traced Cascaded shadow maps
![Page 82: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/82.jpg)
82 @PowerVRInsider │ #idc15 facebook.com/imgtec
Results 4 slice, 2k, cascaded shadow maps
![Page 83: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/83.jpg)
83 @PowerVRInsider │ #idc15 facebook.com/imgtec
Results Ray traced shadows
![Page 84: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/84.jpg)
84 @PowerVRInsider │ #idc15 facebook.com/imgtec
Results Floating geometry/Peter Panning
Ray traced Cascaded shadow maps
![Page 85: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/85.jpg)
Optimization and Efficiency Analysis
![Page 86: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/86.jpg)
86 @PowerVRInsider │ #idc15 facebook.com/imgtec
Cast Fewer Rays N L rejection
If a surface is facing away from the light, there’s no need to cast any rays!
A surface is back facing with respect to the light when 𝑑𝑜𝑡 𝑁, 𝐿 ≤ 0.0
Store rejected values as 0.0 in distance buffer, 1.0 in density buffer
In the worst case scenario, we still need to cast 1 ray per pixel
Most cases we’ll be able to reject some number of pixels giving us shadows
for < 1 ray per pixel
![Page 87: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/87.jpg)
87 @PowerVRInsider │ #idc15 facebook.com/imgtec
Rending Pipeline Initial implementation
G-Buffer Ray Tracing Filtering + Blit
Normal RGBA32F
Position RGBA32F
Albedo RGBA8
Distance/Density RG16F
Depth 24
![Page 88: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/88.jpg)
88 @PowerVRInsider │ #idc15 facebook.com/imgtec
Rending Pipeline Better implementation
G-Buffer Ray Tracing Filtering + Blit
Packed Normal R32UI
Position RGBA32F
Albedo RGBA8
Distance/Density RG8
Depth 24
![Page 89: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/89.jpg)
89 @PowerVRInsider │ #idc15 facebook.com/imgtec
Rending Pipeline Optimized implementation
G-Buffer Ray Tracing Filtering + Blit
Packed Normal R32UI
Position RGBA32F
Albedo + N∙L RGBA8
Distance/Density RG8
Depth 24
Framebuffer Fetch
![Page 90: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/90.jpg)
90 @PowerVRInsider │ #idc15 facebook.com/imgtec
What is Bandwidth? Why you should care about bandwidth
Bandwidth consumption is a result of
data that must be fetched from main
memory (DRAM)
Bandwidth = (memory reads + memory writes) / time
Texture fetches that miss the cache
must read the value from DRAM
DRAM fetch is a high latency operation and
stalls the shader
Each DRAM fetch consumes power
DRAM
Cache
USC
USC
USC
USC
vec4 value = texture(uTex, uv);
![Page 91: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/91.jpg)
91 @PowerVRInsider │ #idc15 facebook.com/imgtec
Efficiency Analysis Bandwidth for 1280x720 render
![Page 92: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/92.jpg)
92 @PowerVRInsider │ #idc15 facebook.com/imgtec
Efficiency Analysis Bandwidth for 1280x720 render
Total Memory Traffic (Reads + Writes)
Cascaded Shadow Maps Ray Traced Shadows G-Buffer Only
233.71 MB 164.34 MB 97.01 MB
![Page 93: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/93.jpg)
93 @PowerVRInsider │ #idc15 facebook.com/imgtec
Efficiency Analysis Bandwidth for 1280x720 render
Total Shadowing Memory Traffic
Cascaded Shadow Maps Ray Traced Shadows
136.70 MB 67.32 MB
Total Memory Traffic (Reads + Writes)
Cascaded Shadow Maps Ray Traced Shadows G-Buffer Only
233.71 MB 164.34 MB 97.01 MB
![Page 94: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/94.jpg)
94 @PowerVRInsider │ #idc15 facebook.com/imgtec
Efficiency Analysis Bandwidth for 1280x720 render
Total Shadowing Memory Traffic
Cascaded Shadow Maps Ray Traced Shadows
136.70 MB 67.32 MB
50.7% Shadowing Memory Traffic Reduction
Total Memory Traffic (Reads + Writes)
Cascaded Shadow Maps Ray Traced Shadows G-Buffer Only
233.71 MB 164.34 MB 97.01 MB
![Page 95: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/95.jpg)
95 @PowerVRInsider │ #idc15 facebook.com/imgtec
Efficiency Analysis Bandwidth for 1280x720 render
Cascaded
Shadows
Ray Traced
Shadows*
Memory Traffic
Reduction
136.70 MB 67.32 MB 50.7%
150.94 MB 62.49 MB 58.6%
159.48 MB 86.51 MB 45.8%
*Excludes 61.06 MB one time setup cost for building scene hierarchy
![Page 96: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/96.jpg)
96 @PowerVRInsider │ #idc15 facebook.com/imgtec
Efficiency Analysis Cycles for 1280x720 render @ 600Mhz
Cascaded
Shadows
Ray Traced
Shadows
Total Time
Reduction
27,582,732 cycles
45.97 ms/frame
13,585,924 cycles
22.64 ms/frame
23.3 ms/frame
50.7%
31,643,530 cycles
52.74 ms/frame
14,145,497 cycles
23.58 ms/frame
29.2 ms/frame
55.3%
37,842,299 cycles
63.07 ms/frame
18,975,421 cycles
31.63 ms/frame
31.4 ms/frame
49.6%
![Page 97: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/97.jpg)
97 @PowerVRInsider │ #idc15 facebook.com/imgtec
Conclusion
Ray tracing in conjunction with rasterization
Shown specific example using ray tracing to improve visual quality and
performance
More examples of ray tracing in action this afternoon
Low Overhead Probe-based Global Illumination Using Ray Tracing @ 1pm
![Page 98: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15](https://reader034.vdocument.in/reader034/viewer/2022042118/5e96942e346a2b02b05b231d/html5/thumbnails/98.jpg)
www.imgtec.com/idc