Eevee Essentials: Real-Time Rendering in Blender (Basic and Advanced Techniques)

Jul 20th 2020

Eevee Settings and Techniques Covered in this Article

Since the introduction of Blender 2.8, Eevee has replaced the old Blender ‘Internal’ Renderer. Eevee is focused on real-time rendering, using clever speedy tricks to sacrifice as little realism as possible when compared to Blender’s realistic Cycles renderer. 

CG Cookie takes you on a two-part tour across Eevee’s most important properties and settings. In this first part, we will have a look at the essentials to get you going with Eevee. In the second part, we'll step it up and cover advanced settings and properties.

Eevee Rendering in Blender - BASIC TECHNIQUES

I’ve created a very simple scene featuring our trusty old monkey Suzanne on a plane and an area light, to serve as a demonstration/test platform for Eevee features.

If you press and hold the ‘Z’ key, you can switch the Blender viewport to Rendered, which will activate the Eevee renderer.

As you can see, the area light already casts shadows on Suzanne and the plane, but the shadow areas are completely dark. I’ve turned Blender’s World Properties color to black to emphasize this.

To compensate for this, a three-point lighting setup is a good start: a key light for the most prominent light and shadows, a fill light to brighten dark areas, and a backlight to separate contours from the background.

Just copy the first area light twice, position them strategically around the scene, and adjust each light’s size and strength to get a balanced result. Usually, you’ll want to keep the key light small and bright, so it casts crisp shadows, while the fill light should be large because it needs to reach all contours.

Next, we will improve the shadows a bit by going to each light’s Object Data Properties settings in the Properties panel, and activating the Contact Shadows option.

The Contact Shadows option takes care of areas where mesh parts touch each other, and some extra shadow ray calculation is needed to avoid gaps or detail loss in the shadows.

Eevee Settings

Now we’ve got a nice scene to show the various Eevee settings. We won’t discuss every available option but will introduce you to the most important settings and properties.

Let’s head to the Properties panel and start at the top of the Render Properties tab. There you can choose between Eevee and other renderers in a drop-down menu.

Right below that you can see the Sampling section, divided into Render and Viewport.

Don’t be deceived by its simplicity, the Sampling section features some of the most important Eevee values. Let’s emphasize this by turning the Viewport sampling all the way down to 1. As you can see, the shadow edges become very crude.

Because Eevee has to perform in real-time, light and shadows are not ray-traced like when using a path tracer renderer such as Cycles. Instead, relatively straightforward calculations cast the shadows, and the amount of samples is one of the main factors to determine the calculation refinement.

If you’re only going to render a still image, or if you’ve got a powerful PC, you can set the Viewport samples to 0 for unlimited samples, so the viewport rendering always converges to the best quality. But beware, with a value of 0, Eevee will keep on rendering forever, so it’s advised to set a sample value high enough to achieve a satisfactory result.

Ambient Occlussion

Next up in the Eevee Render Properties panel is Ambient Occlusion. This effect only becomes apparent when you lighten the World color to something other than black. Here’s the result of activating Ambient Occlusion with a world grayscale tint of 0.25.

As you can see, Ambient Occlusion adds an extra layer of shadows where surfaces are in close proximity to each other, occluding light, resulting in a look similar to renderers that trace bounced light. Sometimes you’ll want this, sometimes you won’t. If you want to keep light and shadows cartoony/stylized, you’ll usually want to keep Ambient Occlusion off.

Turn up the Distance and Factor values for a stronger Ambient Occlusion effect.

Bloom

Next in the Eevee Render Properties list is Bloom. Activate this for a nice hazy glow around specular highlights. Bloom works best if your material is shiny, with a low Roughness value.

Depth of Field

The Depth Of Field (DOF) section in the Eevee Render Properties only contains one value: the maximum size of the ‘Bokeh’ DOF effect in pixels. The rest of the DOF effect needs to be established by adding a camera to the scene, and adjusting camera values.

First, activate Depth Of Field in the camera’s Object Data Properties tab. Next, adjust the Focus Distance. The best way to determine the DOF focus point is to turn on the Show Limits checkbox. This adds a crosshair gizmo to the camera that moves along with the Focus Distance.

Once you’ve determined the DOF focus point, you can increase the DOF effect by adjusting the F-Stop value. Lower values result in a stronger DOF effect.

Screen Space Reflections

We’ll skip the Subsurface Scattering section for this article, as the functionality is mostly used for special purposes, like a skin material.

The Screen Space Reflections option adds reflections based on what’s visible from the current viewpoint. This means that if you’ve got a reflective mesh behind a mesh, the backside of the front mesh will not be reflected on the surface of the mesh behind it.

If you want to see the backside reflections as well, you’ll need to add a Reflection Cubemap or Reflection Plane, which is outside the scope of this part, and will be discussed in detail in the second part.

To increase the quality of the reflections, do the following in the Screen Space Reflections rollout:

  • Deactivate the Half Res Trace checkbox.
  • Increase the Trace Precision value.
  • Increase the Max Roughness value if the roughness in any of your materials exceeds a value of 0.5.

Last but not least, you can use the Overscan option in the Film section (see below) to increase Screen Space Reflection quality.

Motion Blur, Volumetrics, Performance and Hair

Motion blur needs no elucidation. Just experiment with the values to exaggerate or diminish the motion blur effect.

Volumetrics will be discussed in the second part of the Eevee walkthrough.

Performance has only one option at the time of writing: High-Quality Normals. Activate the checkbox for more accurate mesh surface normal calculations at the expense of a little speed.

Like Motion Blur, the Hair section only offers a limited amount of options that are easy to experiment with. As hair is only needed for specific purposes like characters and grass, we will not further discuss it in this Eevee walkthrough, but you can have a look at the various Hair sections of the Blender manual for more info.

Shadows

The Shadows section settings are very important for Eevee rendering results, particularly the Cube Size value, which determines the resolution of the shadows. To emphasize the effect of this value, here’s a comparison between the lowest and highest value. The Viewport Sampling has been reduced to only 1 sample to avoid blurring of the resolutions.

As you can see, higher Cube Size values result in crisper shadows. Increasing the amount of Viewport / Render samples will add smoothness.

The Cascade Size value only applies to directional shadows from a Sun type lamp. Again, higher values yield crisper results.

Check High Bitdepth for another upgrade in shadow quality, and make sure Soft Shadows is checked, unless you’d like to go for stylized, cartoony, sharp shadows.

Film

Let’s move on to the Film section options.

The Filter Size value controls the image filter sharpness for rendering. Lower values provide more sharpness, but can also introduce aliasing.

Transparent makes the background transparent, so you can use the result for compositing.

The Overscan option is related to Screen Space Reflections. By rendering a buffer zone around the actual rendered frame, more 3D scene information will be available for the Screen Space Reflections, to avoid disappearing elements.

Eevee Rendering in Blender - ADVANCED TECHNIQUES

Indirect Lighting

Eevee is optimized for speedy rendering, not for realism, like the Cycles renderer. But with the right settings, Eevee can nevertheless deliver an impressive level of realism.

One of the most significant differences between Eevee and Cycles is that Cycles calculates bounced light rays in a scene, also known as global illumination (GI) or irradiance, using a technique called path tracing.

To make Eevee calculate bounced light you need to add an Irradiance Volume. To do this, press Shift + A, go to the Light Probe submenu and choose Irradiance Volume.

A box-shaped gizmo with a 3D matrix of points appears.

The Irradiance Volume should be placed in such a way that the bottom of the inner cube is just below the floor of your scene, so the 3D matrix of dots is surrounding the scene’s important elements. The dots are points in 3D space where the properties of bounced light (energy level, colors) are sampled and then rendered on nearby surfaces.

The distance between the inner box gizmo and the outer box gizmo indicates the area in which the irradiance effect will fade out. This can be influenced by adjusting the Distance and Falloff settings in the Irradiance Volume gizmo’s Object Data Properties.

The next step is calculating the irradiance. Go to the Indirect Lighting section in the Render Properties and press the Bake Indirect Lighting button.

After a short moment of calculating the irradiance will be added to the scene. The results are usually subtle, but increase the scene’s realism.

As you can see, the red color of the floor has bounced onto the monkey head.

The accuracy of the bounced light can be improved by increasing the Diffuse Bounces, Cubemap Size, and Diffuse Occlusion values, at the expense of longer irradiance calculation times.

It is important to note that the bounced light that’s calculated by an Irradiance Volume gizmo is a one-time calculation, and is not updated with each animation frame. This means that if your scene changes during an animation, the calculated bounced light will become less correct or even obsolete.

Emissive Objects

If you’re using Cycles, you can turn any object into a light source by assigning a material containing an Emitter shader. In Eevee, such a material does not work unless you calculate the irradiance using the aforementioned steps, because the light from emissive objects needs ray calculations from each normal angle of the object’s faces.

In the example images below, an emissive material has been assigned to an icosphere. As you can see no light is emitted from the icosphere object without irradiance. The Screen Space Reflections do reflect the icosphere without irradiance.

Again: the accuracy of the indirect light calculations can be improved by increasing the Diffuse Bounces, Cubemap Size and Diffuse Occlusion values, at the expense of longer irradiance calculation times.

Glass and Other Refractive Materials

Establishing a refractive volume in Cycles, such as glass, is easy: just turn up the Transmission value of the default Principled BSDF material (to a value of 1 for the full effect), and Cycles starts transmitting rays through the material to render convincing glass or transparent plastic.

Eevee is not a path tracing renderer but works by performing speedy trickery, so if you turn up the Transmission value of the monkey’s default Principled BSDF material, this is what happens:

If you head to the Render Properties ➔ Screen Space Reflections section, you can activate a Refraction option, but you will oddly see no difference in the refractive result.

The answer lies a bit hidden inside the Eevee realm. In the Shader Editor, go to the Sidebar (press the ‘N’ key if the sidebar is not present) ➔ Options tab ➔ Settings. There you’ll find another Screen Space Refraction checkbox. If you activate that one as well (next to the Screen Space Refraction checkbox in Render Properties ➔ Screen Space Reflections), a refractive ray-tracing technique will be activated on a material level.

Now you can change the IOR value to change the material’s Index Of Refraction, an averaged value that determines the amount of light ray bending / scattering inside different refractive materials, such as water, glass, gemstones, etcetera. The base value of 1.0 corresponds with the IOR of air, which is comparable to a vacuum. The amount of refraction increases with a volume’s density.

To get you going, here are some common Index Of Refraction values:

  • Air = 1.0
  • Water = 1.325
  • Milk = 1.35
  • Plastic = 1.46
  • Glass = 1.5 (average value, depends on the type of glass)
  • Crystal = 2.0
  • Diamond = 2.418

More IOR values can be found here.

Sub-Surface Scattering

Another eye-catching effect is sub-surface scattering (SSS). This mimics the way light rays are absorbed and scattered inside a volume, causing thin parts to transmit more light than thicker parts. Think of the blood-red color you can see through your fingers if you shine a bright flashlight behind your hand.

Once again, Eevee needs to establish the illusion of SSS using a smart, speedy technique instead of hardcore ray-tracing. And Eevee does this quite well.

Let’s activate SSS in Eevee.

First, head to the Render Properties ➔ Subsurface Scattering section, and increase the values a little for a finer result.

More samples refine the SSS calculations, and a higher Jitter Threshold prevents a possible pattern caused by the algorithm. Don’t increase the values too much if you want Eevee to remain speedy/real-time.

The next steps are performed in the Shader Editor, adjust the following items in the default Principled BSDF material.

  1. Usually, you’ll want the Base Color (the surface color) to be different from the Subsurface Color.
  2. Set the Subsurface value to 1.0 to exaggerate the effect.
  3. Depending on the scale and volume of your object you can adjust the Subsurface Radius values. These are essentially RGB values, so the default settings of 1.0, 0.2, 0.1 cause a red SSS color.
  4. To further emphasize the SSS color, turn the Subsurface Color to red as well.
  5. For a final bit of refinement, activate the Subsurface Translucency option in the material settings.
  6. Make sure the Screen Space Refraction option is unchecked, or the refractive properties will override the SSS effect.


You will see that Eevee SSS can create quite a nice candle wax material, but SSS is also very useful for achieving convincing skin, plastics, milk, orange juice and much more.

Conclusion

This concludes the full Eevee walkthrough for Blender, with basic and advanced Eevee techniques. The two parts should give you sufficient knowledge and control of the most important Eevee features. Now go forth and create! 🙂


Happy Blending!

Metin Seven

metinseven.nl

Get the latest

Sign up with your email address and get the latest, straight to your inbox.