Final Project Proposal: Spectral Ray Tracing

Team members: Justin Comins, Ashwinlal Sreelal, Cecilia Zhang


Summary

Our project will implement spectral ray tracing by tracing rays of different wavelength sampled using the human eye’s wavelength profile for each color (RGB). By modeling different indices of refraction based on those wavelengths for glass-like materials we hope to reproduce effects such as the dispersion of light through a prism, the changing colors based on viewing angle for a lens on a reflective surface with a thin film (such as a DVD), as well as model chromatic aberrations present in real camera systems with lenses. Additionally, we will be creating wavelength dependent bsdf’s and lighting, we hope to model different temperature lights.

'Thin film rendering', 'light dispersion', 'iridenscent surface'... These concepts are related but are also quite different. We are seaking advise on whether it is appropriate to joint them together in this project, and whether the references we found below are in the correct direction. Also we would like to get help evaluating the feasibility/creativity of the proposal.

Background

The current implementation of the raytracer cannot model dispersion and chromatic aberrations because its light model is not wavelength dependent and currently indices of refraction are constant rather than different for each wavelength.

Relevant Papers/articles

Prisms and Rainbows: a Dispersion Model for Computer Graphics
Iridescent Surface Rendering with Per-channel Rotation of Anisotropic Microfacet Distribution
Rendering Iridescent Colors of Optical Disks
Derive spectrum from RGB triple

Reference on soap bubbles:

http://graphics.ucsd.edu/~iman/SoapBubbles/soap_bubbles_1.pdf
http://graphics.ucsd.edu/~iman/SoapBubbles/soap_bubbles_2.pdf

Resources

We will begin our project from the state of the completed project 4 with a working lens, raytracer, and wavelength independent reflection and refraction. We will use Blender to create new .dae scene files to create the prism and disk.

Goals and Deliverables

HOPE TO DELIVER (stretch goal)

Detailed Plan

Current tracer pipeline: ...->raytrace pixel-> sample random points on that pixel -> try passing a ray from that starting point to a random starting point on the lens and pass that ray through the lens-> trace the exiting ray through scene -> find closest intersection ->get estimated lighting at the point of intersection by asking all lights to give an illumination value at that point for direct lighting-> continue tracing the rays from that point to estimate indirect lighting of the scene (All lighting values passed by an Spectrum (RGB vector))

Planned tracer pipeline: ...->raytrace pixel-> sample random points on that pixel -> for that random point for each color channel -> sample each color channel for wavelengths, average results returned to get pixel channel value -> pass ray through from that lens(dependent on wavelength) -> trace the exiting ray through scene -> find closest intersection -> get estimated lighting at the point of intersection by asking all lights to give an illumination value at that point for direct lighting (light sources are now wavelength dependent) -> estimate indirect lighting by using the bsdf of the sample point (wavelength dependent bsdf) Values that are passed through for the wavelength intensity are now a single float value.

Tasks