The process of generating a more or less photorealistic 2D image from a 3D scene as a view from a camera located in that 3D scene by means of a computer program.
The process of generating a more or less photorealistic 2D image from a 3D scene as a view from a camera located in that 3D scene by means of a computer program.
The process of generating a more or less photorealistic 2D image from a 3D scene as a view from a camera located in that 3D scene by means of a computer program.
3D geometry of all objects in a scene
ray - geometry intersection
(Repeatedly reflected light /
indirect illumination)
(local property may vary over surface)
Start at the camera
Trace only paths that might transport light towards the camera
May try to connect to occluded light sources
Ray Tracing
rt::ICamera
rt::IPrim rt::CSolid
rt::IPrim::intersect(Ray)
rt::ILight
rt::IShader
rt::CScene
rt::Ray
Ray-Generation
Ray-Geometry Intersection
Shading
Pixel Color
rt::ICamera::InitRay()
rt::IShader::shade()
rt::ILight::illuminate()
rt::IPrim::intersect()
Ray-Generation
Ray-Geometry Intersection
Shading
Pixel Color
rt::ICamera::InitRay()
rt::Ray
Ray-Generation
Ray-Geometry Intersection
Shading
Pixel Color
rt::IPrim::intersect()
rt::Ray
Ray-Generation
Ray-Geometry Intersection
Shading
Pixel Color
rt::IShader::shade()
Ray-Generation
Ray-Geometry Intersection
Shading
Pixel Color
rt::IShader::shade()
Ray-Generation
Ray-Geometry Intersection
Shading
Pixel Color
rt::IPrim::intersect()
rt::IShader::shade()
Ray-Generation
Ray-Geometry Intersection
Shading
Pixel Color
rt::IPrim::intersect()
Update the resulting pixel color
rt::IShader::shade()
Ray-Generation
Ray-Geometry Intersection
Shading
Pixel Color
rt::ILight::illuminate()
rt::IShader::shade()
primary ray
shadow ray
primary ray
shadow ray
transmitted ray
reflected ray
primary ray
shadow ray
transmitted ray
reflected ray
primary ray
shadow ray
transmitted ray
reflected ray
Dependable, physically-correct visualization
Logarithmic scaling in scene size
~1 Billion Triangles
12,5 Millions Triangles
90 x 10^12 (trillion) triangles
Only used as an off-line technique
Was computationally far too demanding (minutes to hours per frame)
Believed to not be suitable for a HW implementation
Distributed Real-time ray tracing on PC
RPU: First full HW implementation
Commercial tools: Embree / OSPRey (Intel / CPU), OptiX (Nvidia / GPU)
Complete film industry has switched to ray tracing (Monte-Carlo)
Scan convert a single triangle at a time
Can never access more than one triangle
Follow the path of many photons
Record those hitting the film in a camera