A render engine such as Blenders Eevee renderer has a huge amount of settings and it can sometimes be hard to know what settings are significant for any given project. In this article we will therefore take a look at most Eevee render settings and learn in what scenario we may need what setting.
Blender Eevee render settings we will look at are:
- Sampling settings
- Ambient occlusion settings
- Bloom settings
- Depth of field
- Subsurface scattering
- Screen space reflection settings
- Performance settings
- Shadow settings
- Indirect light
- Film settings
This list cover most sections in Eevees render tab in Blender. But there are more render engine specific settings such as the passes, certain shader nodes and objects only related to Eevee. However, I have limited the scope of this article to the core render settings with some exceptions such as light probes that we touch briefly.
Much of the information I am going to explain and discuss can be found in the Blender manual. I have used it as a source together with extensive testing to extend the explanations in the manual. You can find the specific sections here:
Eevee render overview
Eevee is a rasterized render engine. Using different tricks and techniques to speed up render times for each frame to end up at a real-time or close to real time render speed.
With this kind of engine comes a lot of different features and settings to tweak individual components based on the users need. We can render very basic images with a limited set of features turned on, or we can aim for a close to ray-traced render engine result while still maintaining a relatively short render time. Utilizing all the bells and whistles at our disposal.
Eevee is unique in that it is compatible with its brother ray-traced engine Cycles. They share a common shader system while lighting and render settings are separate. But the render engines are more and more developed to match each other in look and feel.
One of the differences between a ray-traced and rasterized engine though is that in a rasterized engine a lot of post-processing features are built in while the ray-traced counterpart needs a post-processing pipeline to get the same effects. Therefore, a lot of the settings we will cover are related to post processing.
The settings we will cover can be found in the properties panel by clicking on the render tab. The interface is divided up in groups depending on the feature a setting is related to.
Some of these settings are turned off by default. We can turn them on by toggling the checkbox on the given section.
Sections that don’t have a checkbox are either always on or is turned on or off by Blender if the effect is detected elsewhere. For instance if we have a material using the subsurface scattering effect, that section is automatically turned on. The same goes for volumetrics. However, volumetrics are not covered in this article.
Eevee sampling settings
We have two different samples settings. One for viewport rendering and the other for when we do our final F12 render.
If you are used to Cycles, you know that for each sample rays are cast into the scene from the camera to bounce around and gather data to end up at a color value for each pixel. The more samples we use the more data is collected and the more accurate the final color will be.
In Eeevee the samples are used in a process called Temporal Anti-Aliasing. The more samples we have the softer edges in the scene will get. Samples are also used for many features that has a random component. For example soft shadows. Other features such as subsurface scattering however has its own sample count.
The soft shadow setting can be found in the shadow section discussed further below.
Soft shadows is a feature that cast shadows using the lights position plus a random component. It does this multiple times depending on the number of samples to create a soft blurred edge on the shadow instead of a single sample with a hard edge. Making the shadow appear much more natural. In this case the sample count increase the quality of the shadows when this setting is turned on.
Other features that use the samples are for instance reflections, refraction, anti-aliasing and alpha hashed transparency.
Personally I tend to increase the samples somewhat from the default value. For most scenes though, I don’t have to go above 256 samples for a soft enough image.
We also have a setting called viewport denoising in this section. According to Blenders manual this is supposed to reduce noise while we are moving the camera in the viewport or doing an animation playback. However, I found the difference to be very slight while testing. Nonetheless, it is there, and we might as well keep it turned on while working.
Eevee ambient occlusion settings
Ambient occlusion is a feature that creates shadow where different surfaces meet. For instance in corners and crevasses where light would normally be more limited.
By the way, I have a full article here, covering everything there is to know about ambient occlusion.
There are many variations of ambient occlusion in Blender vocabulary. Everything from ambient occlusion texture maps to the AO shader node and global ambient occlusion which we see here.
Each of these are different implementations of the same feature. But they are mostly unrelated except the AO shader nodes that need ambient occlusion to be turned on at a render settings level to work in Eevee.
In the ambient occlusion section we have a few different settings. Starting with distance. Distance tells how far away from an object other objects will be taken into account to contribute to its shadow effect. We can also think of it as a slider to decide how large the shadows should be.
The factor in turn, will blend between the ambient occluded version of the scene and a scene without ambient occlusion. Putting this to zero will effectively remove the effect.
Trace precision is a tricky setting. Generally I don’t touch this for my scenes.
According to the manual, it increases the precision of ambient occlusion making the effect more accurate with higher numbers. But it may introduce more noise and can have a performance hit. With too high or too low values you may also miss surrounding objects since the trace distance is lowered with a higher value and the accuracy is worse with a lower value.
In other words, this is a good slider to adjust if you experience problems or artifacts with your ambient occlusion.
A bent normal is the direction from which most light hit a face rather than the tangent normal that points straight up from the face. Using the bent normal instead of the tangent normal generally gives a more realistic lighting. So in general, we want this setting turned on even if the difference in many cases is slight.
The Unreal Engine documentation kind of explains it here:
External content: Unreal Engine documentation, Bent normal maps
The bounce approximation setting makes Blender look at an objects surface color and the lighter it is the less occlusion it gets. This makes the produced shadow relative to the colors value on an object. Lighter objects gets a lighter shadow.
I would say that this is one of the more important settings for AO. Without it, we get quite distinct shadows with a lot of contrast.
Something that might interest you is how we can use pointiness in our shaders to create wear and tear in Eevee.
There is also an ambient occlusion pass that we can turn on if we want the ambient occlusion data to be available separately for post processing. But keep in mind that the bounce approximation setting above does not affect the AO pass.
Eevee bloom render settings
To use bloom in Eevee, all you have to do is to turn in on here in the render settings.
For Cycles, it requires some post-processing and if you are interested in how that works you can read this article here:
Related content: How to use bloom with Cycles in Blender
Enable bloom in Eevee by ticking the checkbox for it in your render settings. Generally the bloom is pretty well setup with the default settings. But there are several sliders we can play with for maximum control.
The threshold will decide the lowest amount of brightness in a pixel in order for it to be a source of bloom. So a value of 1 would mean that pixels that are white or brighter will “emit” bloom around them.
The knee setting makes sure that the transition from over and under threshold becomes gradular. In reality this setting don’t make a lot of difference. But a very high knee value will bring a kind of faint haze to the entire scene since the fading bloom will fade to lower values.
The radius in turn makes a significant difference to the effect. It decides how far the bloom effect will reach from the points decided by the threshold.
We can then use the color to tint the bloom. Be careful here though since it is easy to go overboard. White is the safest choice. But if you have built a natural scene you can tint the bloom color to either a cold or warmer color. However, be careful with other colors since they can very fast make a scene look artificial and unnatural. But perhaps that is your intent.
The intensity value is pretty self-explanatory. It will decide the amount of bloom while the clamp value below will limit the intensity value.
Eevee Depth of field settings
Depth of field or DOF for short is primarily controlled from the camera settings.
Here is an example of DOF for those that are not sure what it is. The birds are in focus but the foreground and background are out of focus and blurred.
Select your camera and go to the object data properties represented by the green camera icon in the properties.
Here you will find a Depth of field section that you can enable.
We will only touch on this briefly since it is slightly outside the scope of Eevee render settings.
We can select an object or a distance that will be our focus. The f-stop in the aperture subsection then decides how wide the focus area will be.
Everything outside the focus area will be more or less blurred from the lack of focus.
Now back in the Eevee render settings. We only have one setting in the depth of field section called max size.
When using DOF the objects that are not in focus will have a spread around them that creates the blurry effect. The max size setting decides how much the objects that are out of focus are allowed to spread to create the blurred effect.
It can be hard to understand why this setting even exists but it is mostly for performance reasons. We want to set this as low as possible but not so low that our DOF can’t spread enough.
There is also an added benefit with this setting. Any value lower than 1 pixel will make everything that is out of focus white. This makes it very easy for us to dial in our focus with the f-stop setting on the camera.
Eevee Subsurface scattering settings
Subsurface scattering is an effect that we see in nature. Things like flesh, snow and leaves all have subsurface scattering. It happens when we see light through a thin object that allow some light to leak through.
A typical example is when someone is standing with the sun behind them and the sun shines through their ears making them almost light up. You can achieve something similar by putting your hand up against the sun and see the light come through the thinner parts.
The subsurface scattering settings used to be something you had to turn on. But now Eevee detects if there is a shader in the scene that uses subsurface scattering and turns it on automatically.
There are two settings that both balance between speed and performance. Samples and jitter threshold.
Subsurface scattering has its own sample count separate from the scene wide sample count discussed above. If we put the jitter threshold to 0 and the sample count to 4 this is what we get.
You can see that the samples add additional randomly scattered versions of the object on the inside perimeter.
Let’s now bring up the jitter threshold to 0.5.
You can see how those samples start to blend together thanks to the jitter threshold.
The goal should be to find a low sample and jitter count that still gives us a seamless result.
As a general rule, you could say that the more zoomed in a shot is to a subsurface scattering effect the higher samples and jitter threshold is needed.
Screen space reflection in Eevee
Screen space reflection is one of two features in Eevee that allow us to create reflections. The other way is to use light probes. But let’s start with screen space reflection.
Screen space reflection is capable of reflecting what we see from the view. In other words, if something isn’t directly visible, we can’t see it in a reflection.
Therefore, we may have very different reflections as we hover around the 3D viewport than what we get in the final scene since the reflections we see is solely dependent on the current view.
Something to keep in mind is that if you are previewing your scene through the camera with screen space reflection turned on, you will get a fuller reflection the less you are zoomed in since more space around the camera can be reflected.
Here is an example.
You can see that we have a red and a blue monkey at least partially reflective in this 3D viewport shot. They fade away because we can’t see the backside from the view. But let’s look at the F12 final render.
Comparing to the previous image you can see that the reflection of the red monkey is inside the frame and should be visible from the camera. But since the real red monkey isn’t visible from the camera as we render, its reflection won’t get rendered either.
To reflect what is outside our view we need to combine screen space reflection with reflection probes. More on those when we discuss indirect lighting.
Instead, I want to focus on the settings we have to work with for screen space reflection.
Screen space reflection is based on the global samples count. With very few samples we won’t get much depth in the reflection. As we increase the number of samples, each sample is blended together for a smoother look. Here is a comparison between one sample and 64 sample reflection.
1 sample above and 64 samples below.
Let’s now get started on exploring the different settings for screen space reflection within the Eevee render settings.
The refraction checkbox is a toggle to turn on screen space refraction globally in our scene. This is one way that we can create glass in Eevee. Once this is turned on, screen space refraction is controlled on a per material basis.
If you go to the material tab and find the settings section, you will see a screen space refraction checkbox. Check it to have the selected material use screen space refraction.
Note though that the refracted object will no longer be reflected. You only get one of them. Either screen space reflection or screen space refraction.
The next setting is half res trace. This will use half the resolution for reflections, making them faster but blurrier thanks to the lower resolution.
If you can get away with half res trace turned on and you need the extra performance. That is when to use it.
The next settings is trace precision. It is a more technical setting that dictates the precision of the rays traced while performing screen space reflection.
According to the blender manual higher precision introduces more noise and lowers the maximum trace distance as well as performance cost.
In reality, my experience is that with higher trace precision we get more accurate and sharp reflections. There probably is a performance cost but I haven’t felt it.
Keeping this at the default 0.5 or higher is probably very reasonable in most cases.
The max roughness setting is a threshold for how rough a reflective surface can be before it will no longer be considered a target for reflections.
Keep in mind that this refers to the roughness of the object that is reflecting and not the object that is being reflected. It affects the roughness of the mirror if you will.
Thickness will increase the thickness of the reflection. Since screen space reflection can’t reflect what it can’t see we have no way of knowing how thick an object is from the screen space reflections point of view. The thickness setting will be the value dictating this thickness.
Sometimes our reflections may get a hole inside it because we can’t see that portion from the view. In those cases we can increase the thickness to patch any incomplete reflections.
Another alternative would be to complement screen space reflection with reflection probes.
The edge fading will fade the reflection starting from the point furthest from the reflected object.
Clamp in this case, will clamp the light we see in a reflection. This can be used if we have noise in the reflections. But a too low value will remove depth from the reflection, only leaving a flat color as the reflection on very low values.
Eevee performance settings
Eevee only have one setting in the performance section. That is high quality normals. This was added in blender 2.83. Personally I haven’t used it. But what I found was that if you have a texture on a very dense mesh you may have artifacts thanks to how Blender compress normals.
You can read more about it here:
In short, if you experience artifacts or weird deformations on your textured object, try using high quality normals to see if it fixes it. otherwise keep this turned off since it demands more memory.
Eevee Shadow settings
In Eevee shadows are produced with the help of shadow maps. A shadow map has a certain resolution to it making more jagged edges on a shadow with less resolution.
In essence every object in your scene is divided up into cubes based on its geometry and the shadow is tested against that instead of the original object. This way we get much lower quality on our shadows but the speed is increased significantly.
If we take Suzanne as our example. A high resolution version of her looks like the object on the left. But then we may test shadows produced by our lighting with a low resolution shadow map.
That shadow map could look something like the middle version. Even if that is not visible for us in the viewport, we will see a very jagged shadow as a result. The good thing is that it will render instantly.
A higher resolution shadow map may look something like the object to the right. A more fine-grained cubic version of our original object. The shadow will have a higher quality. But it will still be jagged.
In the shadow settings we have two resolution settings. One cube size and one cascade size. The cube size is the resolution of shadows created by point, area and spotlights.
The cascade size is used for shadows produced by sunlight.
We can say that those are the two types of shadow map depending on what kind of light source we use.
To test the cube and cascade size you can turn off soft shadows and see how jagged the shadows are. Start at the lowest resolution of 64 pixels and increase the size up to 4096 to see how the shadow is smoothed out.
The high bit depth setting increases the bit depth of the shadow map to 32 bit. In reality a lower bit depth may cause artifacts in a shadow and high bit depth may reduce the amount of artifacts.
However, if we use soft shadows a shadow is cast for every sample in the scene with a slight variation each time. All these shadows are then blended together to create a soft shadow.
Even if we have artifacts in each and every shadow they can blend so well together that we don’t need to use high bit depth. But you will have to judge every scenario.
Light threshold will reduce the amount of light cast by all lights in the scene. Essentially limiting the maximum light emitted.
Eevee Indirect lighting settings
If we once again turn our attention to the blender manual. We can read that all light in Eevee that does not come from a direct light object is considered indirect lighting.
External content: Blender manual
Indirect lighting comes from primarily 3 sources. The world background, objects with an emission shader and irradiance volumes. But we also have reflection cubemaps that complement irradiance volumes. We will briefly discuss each before we jump into the actual settings.
Let’s start with the world background. The background in Eevee can be a bit problematic since it is very limited in the shadows objects can cast that is hit by world light. To get objects to cast shadows at all we need an irradiance volume in that area. But even then, the shadows created tend to not be very accurate. We will discuss irradiance volumes more below.
Sometimes we still want something like an hdri in the background to fill up parts of the scene as well as give us reflections. What we can do in this case is to set up a node graph like this for the world.
We can now control the light cast from the background separately with the background node currently set to a solid black color if we still want some ambient light
We will also get a background and reflections that we can bake into a reflection cubemap that we will discuss further below.
If you want to learn more about the light path node, you can check out my article describing it from a Cycles perspective here.
Related content: How the light path node works in Blender
Next we have emission shaders. They are also not suitable for lighting a scene since they also require an irradiance volume to light anything. This is a much more tedious and demanding process than using lamp objects.
However, one area where emission shaders shine in Eevee is when we use them together with the bloom effect to create the illusion of a light. For instance, we can have some detail light that we only need to combine with some bloom effect.
The lighting itself can then be complemented with a point light or area light positioned just in front of the emission object if we want.
That leaves us with irradiance volumes and reflection cubemaps.
Indirect light is separated into two different categories in Eevee. Diffuse indirect light and specular. The irradiance volume takes care of the diffuse light while the reflection cubemap creates reflections with specular.
We can find the irradiance volume and reflection cubemap if we press Shift+A and go to Light probe in the 3D viewport.
An irradiance volume is placed in an area of your scene to catch light and calculate the indirect light for that area.
All dots in an irradiance volume should be in an open area. An irradiance volume should for example not overlap a wall with dots on both sides or have dots that are inside other objects.
Often it is required to use multiple irradiance volumes to fill a scene. The dots position is important since they are the points that gets sampled so that they can emit indirect light after the bake.
The reflection cubemap will sample its surrounding and create a 360 degree reflection map that nearby objects can use to display reflections on reflective surfaces according to their material. These work together with screen space reflection to create a fuller more accurate reflection.
If we get back to the indirect lighting settings we will find three buttons.
- Bake indirect light
- Bake cubemap only
- Delete Light cache
Bake indirect light will bake all the indirect light in all reflective cubemaps and irradiance volumes. The Bake cubemap only option will leave the irradiance volumes alone and just rebake the cubemaps. We can also Delete Light cache essentially removing all baked indirect light by all cubemaps and irradiance volumes.
We can turn on auto bake so that the bake is remade every time we make a change to a probe.
The order that settings are presented in can be a bit confusing because they are not grouped by the type of probe they affect. These are the settings that affect the irradiance volumes.
- Diffuse bounces
- Diffuse occlusion
- Irradiance smoothing
These are the settings that deal with reflective cubemaps:
- Cubemap size
- Clamp glossy
- Filter quality
In the display subsection we also have two preview options. Press the eye icon to enable them after a bake is complete. Then increase the size for each and an orb will be placed on each dot in an irradiance volume for the irradiance size and one dot in the middle of the cubemap size.
This allows you to preview the reflections and indirect light for each probe or position in the irradiance volume.
The diffuse bounces dictate how many diffuse bounces the irradiance volume will do to capture light. If you put this to 0 the irradiance volume is turned off. At least one bounce is required. The more bounces the more accurate the light capture will be but at the cost of bake time.
The manual says that the number of bounces more or less multiplies the bake time. Keep that in mind before you go wild with it. Personally I tend to stick to a low value like 2 or 3.
The diffuse occlusion refers to the resolution of the shadow map for the irradiance volume. A lower value may result in jagged shadows.
I found this to be much more forgiving and harder to spot than for instance the cubemap size discussed below or shadow maps when using lower values.
The irradiance smoothing in turn is a value that smooth and slightly light the influence of the irradiance volume. In some cases though this can lead to quite severe light bleed.
On the reflection cubemap side we first have the cubemap size. This is referring to the resolution of the reflection. Just like we have for the shadows. A lower resolution may result in a jagged reflection.
If we find that we get noise in our reflections after a bake we can try to increase the clamp glossy so that very high brightness areas gets clamped.
While clamp glossy helps us with noise, the filter glossy setting will take more samples from the environment while calculating the reflections and average them to minimize artifacts.
There is currently a limitation in Eevee between irradiance volumes and cubemaps. We are not able to bounce from diffuse indirect light to specular indirect light. We also can’t bounce specular to specular.
This means for example that we can’t have light reflected in a mirror to light around a corner. The mirror can only reflect reflections and not the diffuse light. The two systems of diffuse and specular don’t really talk to each other.
Instead, we will have to come up with other solutions. For instance using multiple lights to fake the indirect specular lighting.
In the film settings we have a few somewhat unrelated settings. The first one is filter size. This setting blurs the image slightly to counter the limitations of screen and image resolution. Kind of like anti-aliasing.
Next we have the transparent checkbox. This makes the world background render transparently. It allows us to composite whatever objects we have in our scene together with other footage.
This is a very powerful feature that allow us to render objects with a perfect mask. For instance, we can render a tree, save the image file and re-import it and use it in the background of our scene without needing too many resources. And this is just one example.
The last setting in the film section is the overscan. With overscan enabled, Eevee will render a larger image internally and then crop to the camera size.
This can help fix artefacts around the edges of the frame. One example is that if we have screen space reflection not reflecting enough of an object that disappears on the edge of the image, we can use overscan to internally render a larger image so that the reflection can be included in the shot.
The settings described and discussed above are those that are at the core of rendering with Eevee in Blender. There is more to the story, such as freestyle rendering that we can use together with Eevee. Or color management and motion blur, coming in Blender version 2.90.
If you are interested in freestyle you can read more about how it works in this article.
Related content: A guide to Blender freestyle rendering with Eevee and Cycles
We covered some interactions between these different settings and how they relate to each other to create good-looking scenes. But there is more to uncover. I hope you learned something that got you interested enough to keep exploring on your own.
Thanks for your time.