enhancing traditional rasterization graphics with ray...

98
Enhancing Traditional Rasterization Graphics with Ray Tracing March 2015

Upload: others

Post on 11-Apr-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Hybrid Ray Tracing

Page 40: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ray Traced Shadows

Page 59: Enhancing Traditional Rasterization Graphics with Ray Tracingcdn.imgtec.com/sdk-presentations/idc15_SF_EnhancingTraditionalRa… · facebook.com/imgtec @PowerVRInsider │ #idc15

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

www.imgtec.com/idc