Photo-realism in Blender: Choosing Between Cycles and Eevee


by Render Pool

January 4, 2021

Since the release of Blender 2.8, the software’s newest real-time renderer Eevee has proven itself to be a revolutionary engine. However, while first impressions may make you consider replacing Cycles as your default renderer, there are several considerations that need to be made before doing so — especially if you’re interested in creating photo-realistic scenes in Blender. Can Eevee produce the level of photo-realism that Cycles is capable of? Keep reading to find out!

Ray Tracing / Rasterization

The rendering method used by Eevee in Blender’s viewport is called rasterization. It’s one of the oldest ways to render computer graphics, and it’s incredibly quick when rendering simple scenes. It works by displaying an object’s face onto the pixels that form the 2D image, which is what you see in your viewport. Those pixels can then have their colors augmented based on the shader of an object, its normals, its shadows, etc.

Though Eevee is fast, there is a trade-off — speed comes at a price for accuracy, because the engine works with pixel information instead of light paths. This is not ideal if you’re looking for photo-realism in your final render.

Cycles rendering method, on the other hand, works by transmitting or tracing light rays from each pixel of a designated camera into a scene, and then reflecting, refracting, and being absorbed by objects until they hit a light source or reach their bounce limit.

Tracing just one light ray from a single pixel is not an accurate way to calculate light for an array of reasons (such as some scene details being smaller than one pixel), so Cycles uses multiple rays or samples from a pixel and slowly calculates the result. In terms of accuracy, it’s the closest you can get to true photo-realism. However, rendering with this process is very time-consuming.

World Settings / Shader Differences

Global Illumination

Cycles has indirect lighting, or Global Illumination, deeply rooted into how it renders objects. As a ray tracing engine, it enlists Light Paths to capture data, like color for example, from each time it bounces from a surface, and uses that data to determine where it bounces next.

Eevee’s biased indirect lighting works differently as it can’t understand the bounce data, so it reads all lighting that isn’t coming straight out from an object as indirect lighting and uses Light Probes to estimate it.

Indirect lighting is separated into two components: Diffuse and Specular. The indirect lighting data is precomputed on demand into a static lighting cache. Light probes basically take snapshots of the scene from their position in the scene’s space, and then emit the right colors onto the objects in the surrounding area. This process is known as baking, and once the data is stored, it’s static and doesn’t update between frames. Objects with indirect lighting baked in are usually not animated.

Greatly increasing the number of light probes in Eevee can help the scene appear similar to a Cycles render, but doing so will most likely make Blender crash if you try to bake it. A smaller number of light probes then means that the space between them has to be further estimated, which can lead to artifacting.

Transparency

Both Cycles and Eevee support materials using the Transparency BSDF node. They also operate in very different ways in order to render it. Cycles relies on the number of light bounces, after which the object will render black.

Eevee’s Alpha Blend works by layering materials on top of each other, back to front, with a limit to the number of layers it will render to maintain viewport speed. Once it reaches that limit, it won’t render any more faces, which can blur your final image if you have too many layers.

Eevee’s Alpha Clip, on the other hand, layers materials from front to back, leaving your render looking clear and sharp. The caveat here is that unlike Cycles, an object can either be opaque or transparent, but can’t be tweaked or blended between the two.

Volumetrics

Eevee definitely excels in one department where Cycles comes up short, which is rendering light that’s reflected in volume like sunbeams or “god rays.” As mentioned above, Cycles is a physically based unbiased ray tracing engine, so light behaves more realistically. While Eevee is not physically accurate, light coming from a Volumetric Scatter node looks visually stunning and doesn’t have any noise. Adding 3D textures can also add character to your final image to make the light even more interesting.

Materials and Displacement

Eevee can handle some very complicated node setups. While the rendering engine has a strict limit of 24 textures per material, it’s unlikely that you will encounter any issue with physically based rendering; however, it’s something to consider as you work and build your materials.

Procedural noise generation is also still not there yet in Eevee. Even though bump mapping has improved since 2.83’s build, you still can’t use True or Vector displacement, though this is expected to be corrected in the future. Because Cycles uses more samples, the final render tends to look more detailed than a real-time viewport render that uses fewer screen space reflection samples.

AOV Passes

Arbitrary Output Variable (AOV) passes are much more important when it comes to animation and visual effects workflows. These passes are necessary for separating elements that need to be layered in a certain order or masked out in post-processing. Eevee has four important passes:

  • Combined
  • Mist
  • Normal
  • Ambient Occlusion

However, at this time, it still lacks key passes like:

  • Vector
  • Object and Material Index
  • Shadow
  • Emission

These missing passes may be added to Eevee in the future, but they will never allow for the same amount of tweaking and polishing as Cycles, since Eevee has no light ray information to rely on.

For Now, Choose Cycles for Photo-realism

Eevee and Cycles are both powerful engines that provide very different solutions, each with its own unique advantages and disadvantages. The results you get from each renderer may impress you more than the other, so it’s worth experimenting with both engines to get a good feel for which one is best for your projects.

If photo-realism is where you find your work heading, Eevee’s fast real-time rendering is tempting, but it simply cannot substitute for Cycles anytime soon. Happy rendering!