modo bubbble logo

Render Item: Global Illumination


Home >> Shade, Light & Render >> Global Illumination

back next
comment balloon Comments (4) RSS Icon
4.6/5 (5 votes)

The 'Render' Item always occupies the top spot in the shader tree, this is no mistake considering its importance. The Render item can be thought of as a general container for global scene render settings. When the Render item is selected, its various attributes become available in the Properties viewport. It is broken into three subtabs of related settings. The 'Frame' tab allows users to adjust render settings specific to the rendered frame itself such as its dimensions. The 'Settings' tab allows users to adjust render settings specific to rendering quality such as anti-aliasing. The 'Global illumination' tab allows users to adjust render settings specific to Global Illumination, a rendering technique that utilizes bounced light to produce incredibly realistic rendered images.

Global Illumination

Render Item - GI PanelAmbient Light--

Ambient Intensity:The Ambient Intensity control add an even illumination globally to all diffuse surfaces in a scene. This is most useful for simulating additional bounces of light. Some 3D artists recommend driving this value very low or off altogether and favor adding more complex lighting scenarios or using actual Global Illumination bounces to achieve adequate light fill. However, using a little Ambient light can be a very useful optimization to any scene; if setup properly can look very natural and at very little cost in render time. Especially when compared to additional lights and/or indirect illumination bounces.
The ambient intensity control is a real world radiance value for lighting simulation, and simply acts as a multiplier for the ambient color. You can change it to show luminance units (candela per square meter) in Preferences. Start with the default value of .05 W/srm and then work the value up or down until the desired lighting result is achieved.

Ambient Color: The 'Ambient Color' function allows you to specify a color value for the global light added by the 'Ambient Intensity' setting. Choosing a good Ambient Color and Intensity is very important when using 'Ambient Intensity' feature. If you consider that this setting is trying to simulate the effect of the accumulation of all the scattered light rays in a project it is easier to imagine how to choose the color and intensity. To assist the color selection you can decrease the Ambient Intensity to zero and render your image. Look at all the pixels and their brightness and think about what the "average" overall tone or color is. That color is what you should choose for the Ambient Color control.

Indirect Illumination --
Traditionally, 3D rendering applications have used direct light sources to illuminate a scene, various virtual lights would be defined, such as spot light or a point light, and rays could be traced from their origin. Based on their position it was simple to calculate if a surface was illuminated or in shadow. This rendering method was fast and accurate but didn't produce the most realistic results. Light in the real world isn't static, but actually bounces around in an environment, absorbing and reflecting the colors each ray encounters. A green ball placed next to a white wall will pick up some subtle color bleeding between the two surfaces when illuminated; the brighter the light, the more pronounced the bleeding effect will be. Global illumination is a means with which to simulate this behavior of light producing far more realistic results more easily than could ever be obtained with direct light sources only.

Modo provides users with the ability to use both direct and indirect lighting sources in any scene. These two models are computed separately, and their respective products are added together to give the final shaded result. Each model has specific advantages (and disadvantages). When used together wisely, users can optimize both the speed and quality of rendered images with an incredible amount of control.

To fully understand the indirect illumination settings, it is critical to first understand the technical process of indirect illumination. While it is intuitive to imagine light coming from a 3D light or a luminous surface and traveling to reach the surfaces then bouncing around a room, the actual process of rendering with indirect illumination is quite the opposite. As the surface is evaluated rays are cast outward from the surface randomly and evaluated when they strike other surfaces in the scene. The sum of those evaluations is what contributes to the color and brightness of the original surface.

To get a more precise idea of how indirect illumination is estimated at a point on a surface, imagine the top half of a transparent globe resting on the surface, so that the point's surface normal is poking through it's north pole. Rays are fired from the surface point through random positions within each "cell" formed by the latitude and longitude grid lines, with one ray per cell. These rays go out and hit either other surfaces or the distant environment, and the average color that they see is the indirect irradiance estimate ("irradiance" being the technical term for incoming light).

Now imagine we need to shade a surface on a moonlit night; the environment is practically all black except for one concentrated bright region(the moon). Each shading point on the surface will send rays as described above. For some points, maybe two of their rays will be fortunate enough to hit the bright region, while for other points only one ray hits it and the rest of the rays see black. With some points getting twice the irradiance of others, you can predict that the surface will look quite splotchy if irradiance caching is on (or grainy if it's off). However if we subdivide the transparent hemispheres more finely (i.e. use more rays), the number of hits and misses will be much more consistent between neighboring surface points, smoothing out the shading.

While indirect illumination in modo is based on this hemispheric sampling technique, there are two very different approaches to the use of these samples. The default method utilizes a technique called 'Irradiance Caching'. The concept behind this technique is that by leveraging a smaller number of more accurate samples and blending between them, you can achieve an image of perceived quality in a shorter amount of time than sampling every pixel with lesser quality, which often results in 'grainy' or 'noisy' images. When Irradiance Caching is disabled modo will fall back to generating a hemispherical shading sample for every pixel in the image (Monte Carlo method). As a result you must be careful about the number of rays you use as this number will be multiplied by the millions of pixels in your image. That's a lot of rays. Really, it is. With irradiance caching active, modo intelligently samples the scene at strategic locations and then interpolates between them for a smoother overall final frame.

The simplest way to think about Monte Carlo versus Irradiance Caching (IC) is that the Monte Carlo method uses a lower quality (fewer rays) sample at every single pixel location, whereas IC uses fewer, much higher quality (more rays) samples and blends them together. As a result when the samples are not accurate enough in Monte Carlo, there will be significant variance between neighboring pixels which appears visually as grain. When using IC the variance is spread across from sample to sample which yields splotches visually. With Monte Carlo there is one remedy which is to simply increase the number of rays per pixel. This can cause render times to increase dramatically. IC provides several approaches to reducing artifacts which include increasing the number of rays, adding 'Super sampling', and increasing the number of samples required to create a blend called 'Interpolation Values'.

Now that you have an overview of the basic concept, the following definitions will have more context and enable you to more effectively balance your scene in performance/quality when working with indirect illumination.

Indirect Illumination Enable Toggle: Activating this toggle obviously enables modo ability to calculate global illumination.

Indirect Rays: This value represents the number of samples taken for each pixel in the image when utilizing the Monte Carlo indirect illumination model (Irradiance Caching disabled). Increasing this value will result in higher quality at the expense of longer render times.

Global Illumination - Monte Carlo (IC disabled), 4 bounces, Ray Threshold 0%
Monte Carlo 64 rays
(default) 64 Indirect Rays -12s
  Monte Carlo 1024 rays
1024 Indirect Rays -3m 13s
  Monte Carlo 4096 rays
4096 Indirect Rays -13m 22s
  Monte Carlo 16384 rays
16384 Indirect Rays -51m 40s

Indirect Bounces: The default value of 1 means that a single bounce is used to calculate how a surface's environment affects it. This is less accurate than a multi-bounce solution since in the real world photons bounce all over when illuminating an environment. However, the sacrifice in quality using fewer bounces is rewarded by increased performance. By increasing the number of indirect bounces, the indirect rays are fired from the initial surface and bounce off the first surface they hit, then continue traveling and hitting surfaces until the maximum number of bounces is met. Keep in mind that as you add bounces the number of calculations will increase as will render times and while the result is technically more accurate there are naturally occurring diminishing returns with each additional bounce. It is recommended that you adjust your scene with a single bounce and then add additional bounces to see how great an impact they have on the end result. If a scene is mostly illuminated by a single small area of light, adding bounces can dramatically improve the overall brightness and look of the render.

Indirect Bounces (IC enabled), Ray Threshold 0%
1 Indirect Bounce
(default) 1 Bounce -30s
  2 Indirect Bounces
2 Bounces -57s
  3 Indirect Bounces
3 Bounces -1m 5s
  4 Indirect Bounces
4 Bounces -1m 14s
Tip icon

TIP: To reduce the number of bounces required, users can increase the Ambient Intensity value. Since the effect of multiple bounced illumination rays is to simply boost the overall lighting by some averaged color, you can reduce the number of bounces and set the Ambient Color and Intensity to mimic those final bounces. This saves time and yields similarly realistic results.

Indirect Range: This value determines how far an indirect ray can travel before it is terminated. In the case of a ray being terminated due to the indirect range value, it is assumed that the ray would eventually hit the environment background, so this value is returned to the shading engine. This is a very useful way to optimize render times. Reducing the indirect range will generally improve render speed. However, you should keep in mind that setting this value too low will create unnatural lighting effects as many rays that otherwise would have ultimately hit a geometric surface resulting a shadow may get cut off early illuminating the surface with the backdrop color rather than shading it with the surrounding geometry. A setting of zero disables indirect range, utilizing the full scale of your scene.

Indirect Range (IC enabled inside a 1m cube w/ default Environment), Ray Threshold 0%
200mm Range
200mm Range -29s
  400mm Range
400mm Range -36s
  800mm Range
800mm Range -48s
  1.6m Range
1.6m Range -57s

Subsurface Scattering: When rendering surfaces that employ 'Subsurface Scattering' (SSS), you can choose how the indirect lighting in the scene will affect those surfaces.
Direct Only-- When selecting 'Direct Only', modo will not use any indirect (bounced) lighting, but only calculate SSS based off the direct lighting within the scene, i.e. Distant Lights, Spotlights, Point Lights etc. This mode is useful in many cases as global illuminations effect upon SSS is usually fairly subtle. However, in instances where there are no direct lights in your scene, such as those lit entirely by image based lighting (HDRI), one will need to choose either 'Indirect Affects SSS' or 'Both' to see the effects of SSS for any given surface.
Indirect Affects SSS-- When selecting 'Indirect Affects SSS', modo will use any global illumination in your scene, as well as the direct lighting to calculate the subsurface scattering effects on your objects surface.
SSS Affects Indirect-- When selecting 'SSS Affects Indirect', modo will calculate bounced indirect light, taking in to consideration the subsurface scattering effects of any given surface.
Both-- The 'Both' setting will allow global illumination to affect subsurface scattering, as well as for the subsurface scattering to affect the indirect illumination calculations. This setting is the most render intensive.

Volumetrics Affect Toggle: Enabling this checkbox will direct modo to consider volumetric lighting effects when calculating global illumination.

Irradiance Caching--

Irradiance Caching Enable Toggle: When rendering indirect illumination in modo, Irradiance caching is the default method utilized. Disabling this toggle directs modo to use the more intensive Monte Carlo method to calculate global illumination.

Irradiance Rays: Irradiance rays are technically the same as Indirect Rays in that they are the rays fired out from the surface in order to sample indirect illumination. As a matter of convenience modo has both Irradiance and Indirect Rays settings since the two forms of indirect illumination typically require vastly different numbers of samples. Irradiance Caching relies on much higher quality samples distributed sparsely across the project whereas Indirect Illumination without Irradiance Caching uses lower quality samples at every pixel. Having two values allows you to easily switch between Irradiance Caching and traditional Indirect Illumination without constantly adjusting the number of Rays for each sample.

Irradiance Rays, Ray Threshold 0%
200mm Range
64 Rays -3.1s
  400mm Range
256 Rays -4.1s
  800mm Range
1024 Rays -6.7s
  1.6m Range
4096 Rays -12.4s

Supersampling Toggle: After all rays have been fired for a particular irradiance evaluation, this feature looks at the resulting ray color of each hemisphere cell and then sends additional rays through those cells that differ a lot from their neighbors, getting a more detailed look at high contrast areas of the environment and therefore a more accurate estimate. Currently about 25% more rays are fired, so for a setting of 100 rays you really get 125, but the results will be better than if you had just used a setting of 125 without supersampling, because the rays will be going in the more important directions. (Chief Scientist Allen Hastings recommends leaving this option on all the time. It will generally improve your render quality with minimal performance impact.)

Irradiance Rate: As Irradiance Caching smoothly blends between neighboring IC values, a little breathing room is necessary between samples to provide space for that blend to occur. The Irradiance Rate provides that space as it sets a minimum distant between IC samples, calculated by pixels. So a setting of 2.5 means the minimum distance between two samples would be 2 and a half pixels away. Increasing this value will cause IC values further away from each other to blend together, providing a smoother result, however increasing the value too high may result in reduced accuracy in areas of high detail.

Irradiance Ratio: Where the Irradiance Rate sets the minimum distance between IC values, the Irradiance Ratio sets the maximum distance. The ratio is a multiplier of the rate, so a setting of 6 multiplied by a rate 2.5 would return a value of 15, meaning IC values would be no closer than 2.5 pixels and no further apart than 15 pixels. The ratio ultimately reduces the number of samples necessary across smooth surfaces where shading changes are minimal.

Interpolation Values: The 'Interpolation Values' setting specifies a minimum for how many nearby values to interpolate. Let's say it's set to three for example. If we're shading a point and can only find two nearby previously computed values in the cache, then it will force the computation of a new value at the current point, and the final irradiance at that point will be a blend of all three values. So it tends to smooth out the shading. Increasing this value will generally improve render quality at the expense of render time.

Irradiance Gradients: Computed for each IC value, 'Irradiance Gradients' are estimates of how much the irradiance changes with a change in surface normal (the rotational gradient) or a change in surface position (the translational gradient). Irradiance Gradients are used to improve the interpolation of indirect illumination between irradiance values in the cache. Users should generally leave this set to 'Both'. However, there are situations where translational gradients can cause artifacts, such as when a diffuse surface lies close to a transparent surface (such as a tabletop with a sheet of glass lying on it). In such cases, a mottled appearance may be visible, which can be fixed by setting the popup to Rotation Only.

Walkthrough Mode: Enabling 'Walkthrough' mode tells modo to calculate global illumination only on the first rendered frame and utilizing that same calculation for every subsequent frame. While a great time saver, this setting assumes no objects move in the scene except the camera. Exceptionally useful for architectural renderings where a viewer is given a 'rendered' tour of a modeled space, hence the walkthrough name. While a huge time saver, it also eliminates the jittery shading sometimes evident on pristine architectural surfaces.

Load Irradiance Before Render: Using the 'Load Irradiance' function allows one to load a previously calculated irradiance cache solution created by the 'Save Irradiance After Render' function. To use, enable the 'Load Irradiance' checkbox and use the browse button to locate the previously created solution in .lxi format. When enabled, subsequent renders will load the specified solution eliminating the need to calculate the irradiance cache each time the scene is rendered. Especially useful for rendering series of images where only the camera moves.

Save Irradiance After Render: Using the 'Save Irradiance' function allows one to save an irradiance cache solution for a particular scene and load it at a later time for reuse. To use, enable the 'Save Irradiance' checkbox and click the browse button to choose a filename and location. Click 'Save' to continue. Now the next time you render (F9) your scene, the irradiance cache will save to disc upon completion. Note that only the render directly following the activation will generate the IC file, subsequent renders will not overwrite the initial save, unless you disable and re-enable the function.

Caustics--
When light refracts through or reflects off of a surface, these bent rays are focused together creating a bright pattern referred to as a caustic. Think of the light dancing on the swimming pools floor, or the bright flash you see from a cars windshield on a sunny day and you'll know what it is. Simulating this effect in modo is quite easy with global illumination as caustics are a natural rendering byproduct of image based lighting. Caustics from direct light sources, such as area lights, distant lights, spot lights and such, require the use of photons map tracing to calculate the effect, enabled via these settings.

Direct Caustics Toggle: This checkbox tells modo to calculate caustics for all reflective and transparent surfaces.

Total Photons: The total photons control sets a ceiling on the total number of photons fired in the scene. The photon count is divided amongst all active 3D lights in a scene with a bias based on the power of the light, ensuring energy conservation.

Local Photons: Local photons indicate the number of photons required for each pixel sampled. When the pixel is rendered a search along the surface locates the nearest photons up to the local photon count. The default setting of 32 indicates that 32 photons will be used for each pixel rendered. Increasing this value will create a smoother overall caustic effect at the expense of detail, while decreasing the value results in a sharper caustic effect with increasing graininess.

200mm Range
(default) 32 Local Photons
  400mm Range
64 Local Photons
  800mm Range
128 Local Photons
  1.6m Range
256 Local Photons

Indirect Caustics: Indirect caustics are a natural rendering byproduct of image based lighting, in instances where you wish to control their creation, you have several choices to do so-
None-- None disables all indirect caustics within a scene.
Reflection Only-- Caustics are only calculated off of reflective surfaces.
Refraction only-- Indirect caustics are only calculated though refractive surfaces.
Both-- Indirect caustics are calculated for both reflective and refractive surfaces.

SHotGLass Example

When modeling overlapping transparent surfaces such as glasses or bottles containing liquids, it is recommended that the 'liquid' layer overlap the 'glass' layer by a small amount. In no cases should there be a gap between the two surfaces. This image illustrates a cutaway view of a shot glass, the black outline, filled with a liquid, the red shading. Note how the red object extends beyond the interior surface of the glass, this is necessary to obtain the desired results.

 

 

comment balloon Comments (4) RSS Icon

rruden December 31, 2010 at 6:30 AM

The Ambient Light is very useful but use it carefully. By setting a value that is too high, edges and rills that should be dark, can get very bright.

Ultradigital February 19, 2011 at 12:07 AM

In order to get physically accurate illumination, always set the Ambient light to 0.

A.Ferkaluk February 23, 2012 at 4:37 AM

load and save IR file don't work in animation properly - I have alwyes flickering animation when render in 3 computers as node render

Alek Savovv April 13, 2012 at 7:00 AM

I also do not agree with the tip on Indirect Bounces. Using ambient Intensity produces fake lightning effect. However - It is useful for non realistic rendering .

Top

back next