Digital Image Synthesis, Fall 2012

Final Project: Spectral Rendering

R01943050 曾任培

R01942068 賴威昇

Date submitted: January 18, 2013

Code emailed: January 18, 2013


Representative Image

Fig. Color dispersion by a prism of V-number 10


Project Description

    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.



  1. Spectral rendering
  2. 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).

  3. Glass+
  4. 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.

  5. RealisticCamera+
  6. 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



    [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