Wednesday, June 25, 2008

VRay Irradiance map

VRay Irradiance map


This section allows the user to control and fine-tune various aspects of the irradiance map. This section is enabled only when the irradiance map is chosen as the GI method for primary diffuse bounces.

Some background for understanding how the irradiance map works is necessary in order to grasp the meaning of these parameters.

Irradiance is a function defined for any point in the 3D space and represents the light arriving at this point from all possible directions. In general, irradiance is different in every point and in every direction. However, there are two useful restrictions that can be made. The first is the surface irradiance - which is the irradiance arriving at points which lie on the surface of objects in the scene. This is a natural restriction since we are usually interested in the illumination of objects in the scene, and objects are usually defined through their surface. The second restriction is that of diffuse surface irradiance - which is the total amount of light arriving at a given surface point, disregarding the direction from which it comes.

In more simple terms, one can think of the diffuse surface irradiance as being the visible color of a surface, if we assume that its material is purely white and diffuse.

In VRay, the term irradiance map refers to a method of efficiently computing the diffuse surface irradiance for objects in the scene. Since not all parts of the scene have the same detail in indirect illumination, it makes sense to compute GI more accurately in the important parts (e.g. where objects are close to each other, or in places with sharp GI shadows), and less accurately in uninteresting parts (e.g. large uniformly lit areas). The irradiance map is therefore built adaptively. This is done by rendering the image several times (each rendering is called a pass) with the rendering resolution being doubled with each pass. The idea is to start with a low resolution (say a quarter of the resolution of the final image) and work up to the final image resolution.

The irradiance map is in fact a collection of points in 3d space (a point cloud) along with the computed indirect illumination at those points. When an object is hit during a GI pass, VRay looks into the irradiance map to see if there are any points similar in position and orientation to the current one. From those already computed points, VRay can extract various information (i.e. if there are any objects close by, how fast the indirect illumination is varying etc). Based on that information, VRay decides if the indirect illumination for the current point can be adequately interpolated from the points already in the irradiance map, or not. If not, the indirect illumination for the current point is computed, and that point is stored in the irradiance map.


Built-in presets

Current preset - this dropdown list allows you to choose from several presets for some of the irradiance map parameters. You can use these to quickly set the color, normal and distance thresholds, as well as the min/max rates. The following presets are available:

  • Very low - this preset is only useful for preview purposes to show the general lighting in the scene.
  • Low - a low-quality preset for preview purposes
  • Medium - a medium quality preset; works fine in many situations in scenes which have don't small details.
  • Medium animation - a medium quality preset targeted at reducing flickering in animations - the Distance threshold is higher.
  • High - a high-quality preset that works in most situations, even for scenes with small details as well as for most animations.
  • High animation - a high-quality preset that can be used if the High preset produces flickering in animations - the Distance threshold is higher.
  • Very high - a very high quality preset; can be used for scenes with extremely small and intricate details.

Note that the presets are targeted for a typical 640x480 image. Larger images usually can do with lower Min/Max rates than those specified in the presets.

Basic parameters

Min rate - this value determines the resolution for the first GI pass. A value of 0 means the resolution will be the same as the resolution of the final rendered image, which will make the irradiance map similar to the direct computation method. A value of -1 means the resolution will be half that of the final image and so on. You would usually want to keep this negative, so that GI is quickly computed for large and flat regions in the image. This parameter is similar to (although not the same as) the Min rate parameter of the Adaptive subdivision image sampler.

Max rate - this value determines the resolution of the last GI pass. This is similar to (although not the same as) the Max rate parameter of the Adaptive subdivision image sampler.

Color threshold (Clr thresh) - this parameter controls how sensitive the irradiance map algorithm is to changes in indirect lighting. Larger values mean less sensitivity; smaller values make the irradiance map more sensitive to light changes (thus producing higher quality images).

Normal threshold (Nrm thresh) - this parameter controls how sensitive the irradiance map is to changes in surface normals and small surface details. Larger values mean less sensitivity; smaller values make the irradiance map more sensitive to surface curvature and small details.

Distance threshold (Dist thresh) - this parameter controls how sensitive the irradiance map is to distance between surfaces. A value of 0.0 means the irradiance map will not depend on object proximity at all; higher values place more samples in places where objects are close to each other.

Hemispheric subdivs (HSph. subdivs) - this controls the quality of individual GI samples. Smaller values make things faster, but may produce blotchy result. Higher values produce smoother images. This is similar to the Subdivs parameter for direct computation. Note that this is not the actual number of rays that will be traced. The actual number of rays is proportional to the square of this value and also depends on the settings in the rQMC sampler rollout.

Interpolation samples (Interp. samples) - this is the number of GI samples that will be used to interpolate the indirect illumination at a given point. Larger values tend to blur the detail in GI although the result will be smoother. Smaller values produce results with more detail, but may produce blotchiness if low Hemispheric subdivs are used.


Show samples - when this option is on, VRay will show visually the samples in the irradiance map as small dots in the scene.

Show calc phase - when this option is on, VRay will show the irradiance map passes as the irradiance map is calculated. This will give you a rough idea of the indirect illumination even before the final rendering is complete. Note that turning this on slows the calculations a little bit, especially for large images. This option is ignored when rendering to fields - in that case, the calculation phase is never displayed.

Show direct light - this option is only available when Show calc phase is on. It will cause VRay to show direct lighting for primary diffuse bounces in addition to indirect lighting while the irradiance map is being calculated. Note that VRay does not really need to compute this. The option is only for convenience. This does not mean that direct lighting is not calculated at all - it is, but only for secondary diffuse bounces (only for GI purposes).

Detail enhancement

Detail enhancement is a method for bringing additional detail to the irradiance map in the case where there are small details in the image. Due to its limited resolution, the irradiance map typically blurs the GI in these areas or produces splotchy and flickering results. The detail enhancement option is a way to calculate those smaller details with a high-precision QMC sampling method. This is similar to how an ambient occlusion pass works, but is more precise as it takes into account bounced light.

On - turns on detail enhancement for the irradiance map. Note that an irradiance map calculated in this mode should not be used without the detail option. When detail enhancement is On, you can use lower irradiance map settings and higher Interpolation samples. This is because the irradiance map is only used to capture the general far-off lighting, while direct sampling is used for the closer detail areas.

Scale - this determines the units for the Radius parameter:

Screen - the radius is in image pixels.

World - the radius is in world units.

Radius - this determines the radius for the detail enhancement effect. Smaller radius means that smaller parts around the details in the image are sampled with higher precision - this would be faster but may be less precise. Larger radius means that more of the scene will use the higher precision sampling and may be slower, but more precise. This is similar to a radius parameter for an ambient occlusion pass.

Subdivs mult. - this determines the number of samples taken for the high-precision sampling as a percentage of the irradiance map Hemispheric subdivs. A value of 1.0 means that the same number of subdivs will be used as for the regular irradiance map samples. Lower values will make the detail-enhanced areas more noisy, but faster to render.

Advanced options

Interpolation type - this option is used during rendering. It selects the method for interpolating the GI value from the samples in the irradiance map.

Weighted average - this method will do a simple blend between the GI samples in the irradiance map based on the distance to the point of interpolation and the difference in the normals. While simple and fast, this method tends to produce a blochiness in the result

Least squares fit - the default method; it will try to compute a GI value that best fits in among the samples from the irradiance map. Produces smoother results than the weighted average method, but is slower. Also, ringing artifacts may appear in places where both the contrast and density of the irradiance map samples change over a small area.

Delone triangulation - all other methods of interpolation are blurry methods - that is, they will tend to blur the details in indirect illumination. Also, the blurry methods are prone to density bias (see below for a description). In difference, the Delone triangulation method is a non-blurry method and will preserve the detail while avoiding density bias. Since it is non-blurry, the result might look more noisy (blurring tends to hide noise). More samples will be needed to get a sufficiently smooth result. This can be done either by increasing the hemispheric subdivs of the irradiance map samples, or by decreasing the Noise threshold value in the QMC sampler rollout.

Least squares with Voronoi weights - this is a modification of the least squares fit method aimed at avoiding the ringing at sharp boundaries by taking in consideration the density of the samples in the irradiance map. The method is quite slow and its effectiveness is currently somewhat questionable.

Although all interpolation types have their uses, it probably makes most sense to use either Least squares fit or Delone triangulation. Being a blurry method, Least squares fit will hide noise and will produce a smooth result. It is perfect for scenes with large smooth surfaces. Delone triangulation is a more exact method, which usually requires more hemispheric subdivs and high Max irradiance map rate (and therefore more rendering time), but produces accurate results without blurring. This is especially obvious in scenes where there are a lot of small details.

Sample lookup - this option is used during rendering. It selects the method of choosing suitable points from the irradiance map to be used as basis for the interpolation.

Nearest - this method will simply choose those samples from the irradiance map which are closest to the point of interpolation. (How many points will be chosen is determined by the value of the Interpolation samples parameter.) This is the fastest lookup method and was the only one available in early versions of VRay. A drawback of this method is that in places where the density of the samples in the irradiance map changes, it will pick more samples from the area with higher density. When a blurry interpolation method is used, this leads to the so-called density bias which may lead to incorrect interpolation and artifacts in such places (mostly GI shadow boundaries).

Nearest quad-balanced - this is an extension of the nearest lookup method aimed at avoiding density bias. It divides the space about the interpolated point in four areas and tries to find an equal number of samples in all of them (hence the name quad-balanced). The method is a little slower than the simple Nearest lookup, but in general performs very well. A drawback is that sometimes, in its attempt to find samples, it may pick samples that are far away and not relevant to the interpolated point.

Precalculated overlapping - this method was introduced in an attempt to avoid the drawbacks of the two previous ones. It requires a preprocessing step of the samples in the irradiance map during which a radius of influence is computed for each sample. This radius is larger for samples in places of low density, and smaller for places of higher density. When interpolating the irradiance at a point, the method will choose every sample that contains that point within its radius of influence. An advantage of this method is that when used with a blurry interpolation method it producses a continuous (smooth) function. Even though the method requires a preprocessing step, it is often faster than the other two. These two properties make it ideal for high-quality results. A drawback of this method is that sometimes lonely samples that are far-away can influence the wrong part of the scene. Also, it tends to blur the GI solution more than the other methods.

Density-based - the default method; it combines the Nearest and the Precalculated overlapping methods and is very effective in reducing ringing artifacts and artifacts due to low sampling rates. This method also requires a preprocessing step in order to compute sample density, but it performs a nearest neighbour look-up to choose the most suitable samples while taking sample density in account.

Being the fastest of the three methods, Nearest lookup may be used for preview purposes. Nearest quad-balanced performs fairly well in the majority of cases. Precalculated overlapping is fast and in many cases performs very well, but may tend to blur the GI solution. The Density-based method produces very good results in the majority of cases and is the default method.

Note that the lookup method is mostly important when using a blurry interpolation method. When using Delone triangulation, the sample lookup method does not influence the result very much.

Calc. pass interpolation samples - this is used during irradiance map calculation. It represents the number of already computed samples that will be used to guide the sampling algorithm. Good values are between 10 and 25. Low values may speed the calculation pass, but may not provide sufficient information. Higher values will be slower and will cause additional sampling. In general, this parameter should be left to the default value of 15.

Use current pass samples - this is used during irradiance map calculation. When checked, this will cause VRay to use all irradiance map samples computed so far. Unchecking it will allow VRay to use only samples collected during previous passes, but not those computing earlier during the current pass. Keeping this checked will usually cause VRay to take less samples (and therefore compute the irradiance map faster). That means that on multiprocessor machines, several threads will be modifying the irradiance map at the same time. Because of the asynchronous nature of this process, there is no guarantee that the rendering the same image twice will produce the same irradiance map. Normally this is not a problem at all and it is recommended to keep this option checked.

Randomize samples - this is used during irradiance map calculation. When it is checked, the image samples will be randomly jittered. Unchecking it will produce samples that are aligned in a grid on the screen. In general, this option should be kept checked in order to avoid artifacts caused by regular sampling.

Check sample visibility - this is used during rendering. It will cause VRay to use only those samples from the irradiance map, which are directly visible from the interpolated point. This may be useful for preventing "light leaks" through thin walls with very different illumination on both sides. However it will also slow the rendering, since VRay will trace additional rays to determine sample visibility.


Mode - this groups of controls allow the user to select the way the irradiance map is (re)used.

Bucket mode - in this mode, a separate irradiance map is used for each rendered region ("bucket"). This is especially useful since it allows the irradiance map computations to be effectively distributed among several computers when using distributed rendering. Bucket mode can be slower that the Single frame mode, since an additional border must be computed around each region in order to reduce edge artifacts between neighboring regions. Even so, there may be such artifacts. They can be further reduced by using higher settings for the irradiance map (the High preset, more hemispheric subdivs and/or smaller Noise threshold for the QMC sampler).

Single frame - the default mode; a single irradiance map is computed for the whole image, and a new irradiance map is computed for each frame. During distributed rendering, each render server will compute its own full-image irradiance map. This is the mode to use when rendering animations of moving objects. In doing so one must make sure that the irradiance map is of sufficiently high quality to avoid flickering.

Multiframe incremental - this mode is useful when rendering a sequence of frames (not necessarily consequtive) where only the camera moves around (so-called fly-through animations). VRay will compute a new full-image irradiance map for the first rendered frame; for all other frames VRay will try to reuse and refine the irradiance map that has been computed so far. If the irradiance map is of sufficiently high quality as to avoid flickering, this mode can also be used in network rendering - each rendering server will compute and refine its own local irradiance map.

From file - in this mode VRay will simply load the irradiance map from the supplied file at the start of the rendering sequence and will use this map for all the frames in the animation. No new irradiance map will be computed. This mode can be used for fly-through animations and will work well in network rendering mode.

Add to current map - in this mode VRay will compute a completely new irradiance map and will add it to the map that is already in memory. This mode is useful when compiling an irradiance map to render multiple views of a static scene.

Incremental add to current map - in this mode VRay will use the irradiance map that is already in memory and will only refine it in places that don't have enough detail. This mode is useful when compiling an irradiance map to render multiple views of a static scene or a fly-through animation.

The irradiance map mode that should be used depends on the particular rendering task - a static scene, a static scene rendered from multiple views, a fly-through animation or an animation with moving objects. Refer to the tutorials section for more information.

Irradiance map control buttons

There are some more buttons in this group that allow one to perform certain operations on the irradiance map:

Browse - this button allows the user to select the irradiance map file which will be loaded if the From file mode is selected. Alternatively, the user can enter the path and name of the file directly in the edit box.

Save to file - this will save to file the irradiance map which is currently in memory. Note that the Don't delete option in the On render end group must be turned on. Otherwise VRay will automatically delete the irradiance map at the end of the rendering process.

Reset irradiance map - this will clear the irradiance map from memory.

On render end

This group of controls instructs VRay what to do with the irradiance map at the end of the rendering process.

Don't delete - the default for this option is on, which means that VRay will keep the irradiance map in memory until the next rendering. If this option is cleared, VRay will delete the irradiance map when rendering is complete. This means that you will not be able to save the map manually afterwards.

Auto save - if this option is set, VRay will automatically save the irradiance map to the specified file at the end of the rendering. This mode is particularly useful if you want to send the irradiance map for rendering on a different machine through network rendering.

Switch to saved map - this option is only available if the Auto save option is turned on. If Switch to saved map is on, then VRay will also automatically set the irradiance map mode to From file and will set the file name to be that of the map that was just saved.

No comments: