Ray Tracing
(Hill: Chapter 14. Foley & van Dam: 16.12, p. 776-792 )
- tuned for specular and transparent objects
- global illumination for specular light
- partly physics-based: geometric optics
Ray tracing tree
raytrace( ray )
o find closest intersection
o cast shadow ray, calculate colour_local
o colour_reflect = raytrace( reflected_ray )
o colour_refract = raytrace( refracted_ray )
o colour = k1*colour_local + k2*colour_reflect
+ k3*colour_refract
o return( colour )
Comments
- computationally expensive
- avoid intersection calculations
- Voxel grids
- BSP trees
- Octrees
- Bounding volume trees
- optimize intersection calculations
- try recent hit first
- reuse info from numerical methods
- antialiasing
- supersampling
- adaptive supersampling
- distributed ray tracing
- shadow penumbra (several rays per light source, sample source)
- depth of field (several rays per eye, move eye point)
- motion blur (several rays per frame, move object)
- antialiasing (several rays per pixel)