Practical Techniques for Ray Tracing in...
Transcript of Practical Techniques for Ray Tracing in...
![Page 1: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/1.jpg)
Gareth Morgan (Imagination Technologies)
Aras Pranckevičius (Unity Technologies)
March, 2014
Practical Techniques for Ray Tracing in Games
![Page 2: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/2.jpg)
2
What Ray Tracing is not!
Myth: Ray Tracing is only for photorealistic / physically accurate rendering
Myth: Ray Tracing is incompatible with rasterized graphics
Myth: Ray Tracing is a less efficient way to render a given number of pixels
![Page 3: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/3.jpg)
3
What Ray Tracing is!
Myth: Ray Tracing is only for photorealistic / physically accurate rendering
Myth: Ray Tracing is incompatible with rasterized graphics
Myth: Ray Tracing is a less efficient way to render a given number of pixels
Truth: It is just a tool. It can be used for a range of purposes
Truth: It can be used in a rasterized game engine for certain effects
Truth: For some effects, it is computationally cheaper to ray trace
![Page 4: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/4.jpg)
4
What is Ray Tracing?
Ray tracing is the ability for the shading for
one object to be aware of the geometry of
other objects.
![Page 5: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/5.jpg)
5
So what can you do with it?
Shadows Reflections Refractions Ambient
Occlusion
Physics &
Collision
Detection
A.I. / Line of
Sight
Global Illumination Virtual Reality
Lens correction, Ultra-low latency
rendering, Lenticular Displays
![Page 6: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/6.jpg)
6
How do you add ray tracing to your game? Many options!
In Pre-Baking,
eg. Unity 5 Editor
Ray Trace Everything,
eg. Brigade & Arauna 2
Hybrid Game Engine
![Page 7: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/7.jpg)
7
How do you add ray tracing to your game?
Ray Trace Everything,
eg. Brigade & Arauna 2
Hybrid Game Engine
Light Maps in Unity Editor 5
![Page 8: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/8.jpg)
8
How it works Ray tracing allows the behavior of light to be simulated
![Page 9: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/9.jpg)
9
How it works Ray tracing allows the behavior of light to be simulated
![Page 10: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/10.jpg)
10
How it works Ray tracing allows the behavior of light to be simulated
![Page 11: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/11.jpg)
11
How it works Ray tracing allows the behavior of light to be simulated
![Page 12: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/12.jpg)
12
How it works Ray tracing allows the behavior of light to be simulated
![Page 13: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/13.jpg)
13
Progressive Refinement
![Page 14: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/14.jpg)
14
Progressive Refinement (a moment later…)
![Page 15: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/15.jpg)
15
Progressive Refinement (another moment later…)
![Page 16: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/16.jpg)
Demo: Interactive Lightmap Preview In Unity Editor 5
![Page 17: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/17.jpg)
17
How do you add ray tracing to your game?
In Pre-Baking,
eg. Unity 5 Editor
Ray Trace Everything,
eg. Brigade & Arauna 2
Hybrid Game Engine
![Page 18: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/18.jpg)
18
Ray Tracing details World space scene intersection
Submit Geometry (Triangles)
Cast Some Rays For Each Pixel
void main {
if (dot(rl_inRay.direction),
normal) > 0)
return;
else
accumulate(vec3(1.0));
}
Use Shaders to Define Ray Behavior
![Page 19: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/19.jpg)
19
Modern raster-based game engine Deferred shading used in most modern games engines
Assemble the final frame and perform
screen-space effects
Render the scene into a deep frame buffer (G-Buffer)
G-Buffer
Normals
World-Space
Positions
Material ID
Compute Lighting on each G-Buffer pixel
(No Overdraw)
Lighting Buffer(s)
Lighting calculations
executed in screen
space
Final Result Frame
![Page 20: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/20.jpg)
20
G-Buffer has everything you need to ray trace G-buffer contents are in world space!
G-Buffer
Normals World-Space Positions
or Depth Buffer
Material IDs
![Page 21: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/21.jpg)
21
Hybrid Rendering Use the G-Buffer to set up your rays
Assemble the final frame and perform
screen-space effects
Render the scene into a deep frame buffer (G-Buffer)
Trace rays to determine the
lighting
Lighting Buffer
Final Result Frame
G-Buffer
Normals
World-Space
Positions
Material ID
![Page 22: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/22.jpg)
22
Ray Traced Effects, Side-By-Side
![Page 23: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/23.jpg)
23
Ray Traced Effects, Side-By-Side
![Page 24: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/24.jpg)
24
Shadows
Shadows are an extremely important part of accurate 3D rendering.
Light from environment is occluded by other objects before it reaches surface
Very well suited to ray tracing
We can ray trace, now what?
![Page 25: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/25.jpg)
25
Shadow maps
Shadows used in games for a long time
Most modern games use Shadow maps
Many problems
Resolution issues
Performance problems
Real life penumbra hard to simulate using filtering
Shadows have been rasterized for a long time
![Page 26: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/26.jpg)
26
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!
Shadows are easy when you can query world space scene database!
![Page 27: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/27.jpg)
Demo: Accurate Shadows
![Page 28: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/28.jpg)
28
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 29: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/29.jpg)
29
Ray Traced Soft Shadows
Instead of shooting a single ray for every surface point shoot
several rays.
Behaviour of each ray identical to hard shadow case,
Average the results of all the rays for each pixel:
If all rays are occluded surface is fully shadowed
If all rays reach the light source surface is fully lit
If some rays are occluded and some reach light the surface is in the
penumbra region.
Penumbra rendering requires multiple rays per pixel
![Page 30: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/30.jpg)
30
Choosing ray direction
If the light source in an area light, distribute the rays over the
cross section of the light source visible from the surface
To approximate daylight using an infinitely distant, directional
light choose a cone of rays from the surface:
To represent a perfectly clear day the solid angle of the cone is zero
To represent cloudier daylight solid angle becomes larger
We are estimating incoming light reaching the surface point
To get good estimate, samples should evenly cover domain
![Page 31: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/31.jpg)
31
G-buffer continuity
A large number of rays are required to accurately sample a soft
shadow.
For most of the image the surface properties vary little from one pixel
to its neighbors
So, a ray sent from one pixel of the G-buffer will likely hit the same
object as the same ray sent from a neighbouring pixel.
Surely there is a way to use this fact to reduce the ray count but
maintain visual accuracy?
Stop wasting rays!
![Page 32: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/32.jpg)
32
Interleaved Sampling
Tile a square 2D array of N2 ray directions over the frame buffer
Emit shadow rays based on grid
The resulting image has the critical property that for any NxN region of the image the entire N2
array of ray directions is represented.
So use a box filter to remove noise from the image. Each output pixel is the average of N2
neighbouring input pixels.
Must handle discontinuity in the image.
Leverage the shadow ray data from neighboring pixels
![Page 33: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/33.jpg)
Demo: Soft Shadows, Multiple Lights
![Page 34: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/34.jpg)
34
Shadows recap
Raytraced shadows….
Easy to implement
Avoid the many artefacts of shadow maps
Are more efficient
Scale better to multiple lights
Raytraced shadows are better
![Page 35: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/35.jpg)
35
Reflections
When light hits a perfectly specular surface is it reflected at an angle the same as the incident
angle.
Basic physical law first codified by Euclid in 3rd century BC.
In the real world reflective objects are common, not just chrome balls!
Reflections are more common than you think!
![Page 36: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/36.jpg)
36
Raytraced reflections
Emit one extra ray from reflective surfaces, the direction of reflection ray is computed from
incoming ray direction using law of reflection
When ray hits an object in the scene, shade that surface using the same illumination calculation
used for the directly visible surfaces
Physically accurate
![Page 37: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/37.jpg)
Demo: Reflections
![Page 38: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/38.jpg)
38
Alpha blending
Not how transparency really works in real life
Some scenes do not sort well!
Not very compatible with deferred rendering
Approximation of transparency
![Page 39: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/39.jpg)
39
Raytraced transparency
In real life optics when light passes through a semi-transparent object some light is absorbed,
some is not.
Emit a ray from the back side of the surface.
Shade like a reflection ray
Order independent
“Real” transparency not alpha blending!
![Page 40: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/40.jpg)
40
Transparency and shadows
When shadow ray hits a transparent object it continues on towards the light.
A shadow rays hitting a transparent object should be shaded and re-emitted as if it was a non-shadow ray.
Shadow rays will pass through perfectly transparent regions of the surface.
Shadow rays acquire color from translucent objects.
Shadow rays interact with transparent object!
![Page 41: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/41.jpg)
Demo: Transparency
![Page 42: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/42.jpg)
42
Conclusion
Makes realistic light simulation easy
Easily combined with existing raster-based engines
Raytracing is easy!
![Page 43: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/43.jpg)
43
Try it yourself
Talk to us at Booth 402, South Hall
Download the OpenRL SDK:
Download the hybrid rendering example:
![Page 44: Practical Techniques for Ray Tracing in Gamescdn.imgtec.com/sdk-presentations/gdc2014_practicalTechniquesForRay... · Raytracing is easy! 43 Try it yourself Talk to us at Booth 402,](https://reader035.fdocuments.us/reader035/viewer/2022080721/5f7a65dda4f7a943f7778fdf/html5/thumbnails/44.jpg)
Thank You!
Thanks to everyone who helped put this demo together. Including:
Denis Renshaw
Mads Drøschler
Stefan Morrell
Jon Frisby