Page tree

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 9 Next »

Contents

Overview

Starting with 23.3, RenderMan can bake integrator results to images or points clouds.

Potential applications include transferring pre-computed global illumination for real-time realtime playback or optimising render times for large static assets.

Limitations

The current implementation comes with a number of important limitations:

  • Baking is non-incremental. 
    • This limitation excludes integrators that can not be setup to render in a single increment, like PxrVCM.
    • PxrPathTracer, PxrDirectLighting, PxrOcclusion and PxrVisualizer are compatible.
  • Baking is incompatible with curves.
  • Each baking display can use at most one RGBA display channel.
    • Use multiple display drivers to output multiple signals.
  • No breakpointing / stop-and-resume during baking
  • There is no separate irradiance output
    • As a workaround, we suggest baking illumination and albedo: dividing the illumination by the albedo gives the irradiance.

2D Baking

The name(s) of the baked image file(s) is/are specified with a Display line. Baking uses the same display drivers as raytrace rendering, including openexr, tiff, png, and many more.

Usually one will want to bake to a separate image for each object. This can be done by encoding the Display filename with string “wildcards” that get substituted with actual filenames depending on Attributes on the objects. For example:

Display "<user:filename>.exr" "openexr" "rgb"

In this case, the wildcard <user:filename> is replaced by the corresponding user attribute specified for each object. For example:

Attribute "user" "string filename" "box1_global"

which then gets substituted into the Display filename. Alternatively, the filename can be specified with other attributes such as <identifier:name>. No image will be baked for an object if the wildcard substitution fails or if the filename for that object is the empty string.

The resolution of the baked 2D images is determined by the standard Format description. For example:

Format 256 256 1

As an example, we’ll bake 2D textures of global illumination in a Cornell box with two spheres. The box consists of five squares, each with a separate texture. One of the two spheres is purely specular so we do not bake on that. Figure 2(left) shows the baked images for the five faces of the box and for the diffuse sphere.


After baking is done, the next step is to run ‘txmake’ on each image to create a MIP-mapped cache-friendly texture in .tex format. These textures can then be read during rendering using e.g. OSL’s texture() function. Figure 2(right) shows the Cornell box and diffuse sphere shaded using the precomputed illumination textures (while the reflection in the specular sphere is rendered with ray tracing).