Here's another CG-related post.
Today, I want to talk about a very helpful set of algorithms that make your life as a 3D Artist just so much easier : Global IlluminationIn order for you to understand what I'm talking about, we'll need to examine the concept behind global illumination a bit closer.As you might be aware (if you're not, you will be after reading the next few lines) global illumination is a technique supported by most of today's rendering engines.
It helps artists create more realistic lighting solutions, since it also adds indirect illumination (e.g. light bouncing off a wall) to the calculations that happen at render time, ultimately making the lighting look a lot more natural than pure direct illumination which is the light getting emitted directly from a light source.
I don't want to get too technical on you, so we are not going to dig too deeply into the different methods that exist for calculating global illumination, but the most common approaches are:
- ray tracing
- path tracing
- photon maps
![]() |
Figure 1: Scene without GI |
![]() |
Figure 2: Scene with GI |
As you can see, the first render has some noticeable noise in areas where there is not enough light, whereas the render with indirect illumination enabled does no longer have any visible noise despite the mediocre render settings.
That's due to the fact that in the first render, light does not bounce, it just hits a surface and is immediately removed from the calculation, unless there are reflections or refractions that need to be taken care of.
In the second render, however, the light bounces multiple times, enabling light to bounce around corners. Also notice that the second render is a little bit brighter, since the walls get illuminated by bouncing light multiple times. Also, the image is more saturated. This may result in a need to adjust the exposure.
Moreover, the light bounced off of the objects inside the room adds a slight tint to the walls and while this is only a very subtle effect right now, one could easily turn up the GI multiplier to bring out those colors a bit further.
Always bare in mind though that any global illumination solver will add additional render time therefor it should only be used when needed.
So how do you turn Indirect Illumination on?
It's actually a lot easier than you might expect. Open up your render setup (hit F10), make sure VRay is set as your current renderer, then head over to the Indirect Illumination tab and check the "On" checkbox.The following video should explain most of the features and the different GI Engines in VRay to an extent that should give you a basic understanding of how GI works in VRay.
I also go over how to achieve flicker-free Irradiance Cache GI when rendering animations.
As a summarization, it is safe to say that:
- Brute Force GI is very slow and might cause noise in the render, however it is physically accurate and preserves details. Furthermore, it will not cause any flickering in animations.
- Light Cache is a very fast path tracing solver that creates instant previews and while it's not only quite easy to set up, it also produces very accurate results on edges and small objects, however it only works with VRay-Materials and it does not work very well with bump maps. It also might cause some subtle blur.
- Irradiance Cache is a lot more efficient than Brute Force GI since it is based on interpolation, however it blurs the smaller details in the image and it can create some flickering when used to render animations
- Photon Maps are fairly fast but they use extensive amounts of RAM and can introduce a lot of undesirable noise into the scene. They also cause trouble on hard edges due to their approximation algorithms
In the video below, I employed the aforementioned methods to achieve a flicker-free GI solution:
I cached out the Irradiance Map for each frame from frame -2 to frame 502 using the Animation (prepass) mode:
Medium settings, 30 interpolation samples, about 15MB per frame
After succesfully saving the maps to disk, I then rendered the final sequence with my interpolation samples set to 10 and my interpolation frames set to 2, once again using the Animation(rendering) preset.
Furthermore, I disabled the secondary GI engine since its information was already stored in the irradiance cache maps I saved out earlier.
As seen above, I added 2 additional frames at the beginning and the end, but I only rendered the sequence from frame 0 to frame 500. There's a plausible reason for that:
The additional frames are used as interpolation frames for the irradiance map, otherwise the first and the last frames of the animation could have wound up with glitches such as noise or artifacting.
There's also a bit of warping going on, but that's because I eventually decided to retime the animation in post.
That's it for today, I hope you enjoyed this post and actually learned something from it.
Share the love.
No comments:
Post a Comment