1
$\begingroup$

I'm trying to implement a spectral path tracer and comparing results from my program with renders of the same scene done with pbrt and mitsuba. The scene is just some spheres in a box with one point light. All the surfaces have simple Lambertian BRDFs. The light has "uniform" spectral intensity (i.e., every wavelength has same power as others), same holds for surface reflectances. When I try to render the scene in mitsuba I get a "grayscale" image, as expected:

Mitsuba render

However, if pbrt's used to render the same scene, result image has a reddish tint:

enter image description here

With my program I get similar result:

enter image description here

After some digging through source code, I believe difference lies in mitsuba multiplying spectral intensities by D65 spectrum.

Is it reasonable to expect the image of the described scene to be "in grayscale"? If so, do light intensity spectra indeed are required to be multiplied by D65 spectrum? Again, if so, why pbrt doesn't do it?

$\endgroup$
0
$\begingroup$

Is it reasonable to expect the image of the described scene to be "in grayscale"? If so, do light intensity spectra indeed are required to be multiplied by D65 spectrum?

My expectation from a physically-based spectral rendered is that it would

  1. compute the physical spectra
  2. use the CIE color matching functions to relate that to a quantified color space (eg CIEXYZ)
  3. convert that into the destination color space.

D65 shall not appear anywhere till step 3, and only if we actually render into sRGB (or similar).

A flat spectra translates to XYZ = (0.33, 0.33, 0.33), which is RGB = (1.20, 0.95, 0.91) prior to gamma compression. So the "red tint" is the expected result following the above procedure.

Don't know why Mitsuba would have such a 'feature'.

| improve this answer | |
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.