Skip to content

ScalingTest

Ben Heasly edited this page Oct 17, 2016 · 7 revisions

The ScalingTest recipe probes which rendering parameters affect the absolute magnitude of renderer outputs. It varies things like camera lens radius and exposure time, and the number of light samples and image pixels used to create output images.

Above, PBRT rendered the scene.

Above, Mitsuba rendered the scene.

Description

The parent scene contains a sphere illuminated by a point light. The camera views the sphere from "below" the point light, so that the light, camera and sphere are not collinear. The sphere is manipulated to use a matte material and green-looking reflectance. The point light is manipulated to emit uniform intensity across the spectrum.

The scene has 6 conditions that might affect the absolute values of the pixel spectrum components that the renderers write into their output image files:

  • The "reference" condition establishes a baseline for comparison, with several parameters set to "usual" values:
    • Camera "exposure" time is 1 second (or arbitrary time unit).
    • Camera lens radius is 0.1 meters (or arbitrary distance unit).
    • Number of light samples per pixel is 8.
    • Output image is 100 pixels wide and 100 pixels tall.
    • Image reconstruction filter is Gaussian, with standard deviation of 0.5 pixels and cutoff width of 2 pixels.
  • The "2xExposure" condition doubles the camera "exposure" time that the renderers should model during rendering. This might be expected to increase the absolute magnitudes of output image pixels, but in fact it had no effect on pixel magnitudes. Note: it was unclear how to correctly set the exposure time in PBRT, and some parameter values that seemed reasonable actually caused PBRT errors.
  • The "2xLens" condition restores camera exposure time to its usual value, and doubles the radius of the camera lens that renderers should model. This might be expected to increase the camera's light gathering power and increase the absolute magnitudes of output image pixels, but in fact it had no effect on pixel magnitudes.
  • The "2xSamples" condition restores the camera to usual, and doubles the number of light samples used during light transport integration. For PBRT, this had the effect of doubling the magnitudes of output pixels in the region of the sphere. For Mitsuba, this had no such effect.
  • The "2xFilter" condition restores the number of light samples to usual, and doubles the width of the Gaussian image reconstruction filter that the renderers use when computing output image pixel magnitudes. For PBRT this had the effect of quadrupling the magnitudes of output pixels in the region of the sphere. For Mitsuba, this had no such effect.
  • The "2xPixels" condition restores the reconstruction filter to usual and doubles the pixel dimensions of the output image. This might be expected to divide light samples among more pixels and reduce the absolute magnitudes of individual pixels, but in fact it had no effect on pixel magnitudes.

It seems that both PBRT and Mitsuba normalize their outputs for changes in camera exposure duration, lens radius, and output image dimensions (or they simply don't model any effect of these quantities on output magnitude).

For PBRT, 2 conditions affected output magnitude. In the "2xSamples" condition, doubling the number of light samples used during integration increased the value of some output pixels by the same factor. One possible explanation for this is that the number of light samples is related to the effective "amount of light" in the scene. In the "2xFilter" condition, doubling the width of PBRT's image reconstruction filter increased the value of some output pixels by the same factor, squared. One possible explanation is that the width of the 2-dimensional reconstruction filter is related to the "light gathering ability" of each image pixel.

For Mitsuba, none of the conditions affected the absolute magnitude of output image pixels. It seems that Mitsuba normalizes its output for changes in number of light samples and width of image reconstruction filter, where PBRT does not.

Rendering

Use the script rtbMakeScalingTest.m to produce the images above.

Figure

Use the script rtbMakeScalingTestFigure.m to produce a figure with a summary of results from the ScalingTest conditions.

Renderings and data from each condition are shown in separate rows. The column on the left shows renderings from PBRT. The middle column shows renderings from Mitsuba. The renderers produce similar renderings, except for some changes in PBRT's output magnitude.

The column on the right plots power reflected towards the camera at one wavelength, across the width of each rendering, at the location of the dashed orange or blue line. The plot has a curved bump for all conditions. The height of the bump remains the same for all Mitsuba renderings. For PBRT renderings, the height of the bump doubles in the "2xSamples" condition and quadruples in the "2xFilter" condition, as described above.

Clone this wiki locally