Our target is to render color dispersion effects, including refracted rainbows and camera color aberration. This is achieved by simulating rays of different wavelengths integrating radiance over them. We also provide a common dispersion measure for user to customize the glass material and realistic camera lens.
Implementation
Spectral rendering
Colors are spectral power distributions over different wavelengths. In rendering systems, a color can be represented by RGB or spectral samples of several wavelengths, and PBRT supports both. However, PBRT renders all components of spectrum together, that means each component, which is one or some spectral values of some certain wavelengths, cannot have independant behaviors like refraction by different indices.
We modified PBRT system to render one spectral value of one sampled wavelength in a ray tracing process. The key algorithm is the conversion between RGB and sampled spectral values, which has already been implemented in PBRT. The input colors like lights and materials are sampled at current chosen wavelengths. The ray traced and shaded values are converted back to colors and integrated.
Our new system supports direct lighting, path tracing, and photon mapping, described as follows:
Direct lighting / Path tracing
First the camera generates rays with wavelength sample values. For each bouncing and shading, the material BSDFs and light irradiances are sampled by the wavelengths attached to rays.
Photon mapping
In the preprocess photons of different wavelengths are spreaded. For shading we gather the photons of wavelengths closed to current sampled wavelength (we set the difference smaller than 5nm).
Glass+
Our glass material supports color dispersion, specified by refractive index and the Abbe number (the V-number). Abbe number is commonly used for a measure of glass dispersion, given by
where the n's are refractive indices at wavelengths of the Fraunhofer d-, F-, and C- spectral lines (587.6nm, 486.1nm, and 656.3nm respectively). Low V indicates high dispersion. Typical values range from 20 to 90.
To calculate the refractive index of each wavelength, we fit the refractive index to wavelength curve by the two-term Cauchy's equation
given the refractive index at d-spectral line and the V-number.
RealisticCamera+
We further improve the realistic camera model to be more realistic, handling chromatic aberration effects. In lens data description, a column specifying V-number of each lens is added. The camera then generates refractive rays according to attached wavelengths.
We had tested some of the lens in homework 2. The D-Gauss lens set minimizes chromatic aberration well. The Telephoto lens set zooms far, but suffers from this artifact.
Result Images
Fig. Color dispersion by a sphere
Fig. Color dispersion by a cylinder
Fig. Spectral rendered D-Gauss lens
Fig. Color aberration of telephoto lens
Reference
[1] Physically Based Rendering: From Theory to Implementation, Matt Pharr and Greg Humphreys, 2nd ed, Morgan Kaufmann, 2010
[2] gpusppm, code from "Stochastic Progressive Photon Mapping, T. Hachisuka and H. W. Jensen, ACM Transactions on Graphics (SIGGRAPH Asia 2009), 2009"
[3] Craig Kolb, Don Mitchell and Pat Hanrahan, A Realistic Camera Model for Computer Graphics, SIGGRAPH 1995
[4] Iman Sadeghi, Adolfo Muñoz, Philip Laven, Wojciech Jarosz, Francisco Seron, Diego Gutierrez, Henrik Wann Jensen. Physically-based Simulation of Rainbows. ACM Transactions on Graphics (Presented at ACM SIGGRAPH 2012), 31(1):3:1–3:12, February 2012
[5] http://en.wikipedia.org/wiki/Abbe_number
[6] http://en.wikipedia.org/wiki/Cauchy's_equation