Rendering Technology
The Classic Render Pipeline was created at a time when shaders were not available yet. It was extended over time using new capabilities based on advancements in rendering technologies, but at its heart it is still using the so called Fixed Function pipeline. In contrast, the Viz Engine Render Pipeline is based on the Programmable Render Pipeline, meaning everything is shader-based without any fixed function parts left. This conceptual difference amongst other things leads to differences between both pipelines, so that they cannot be compared easily.
Framebuffer Format
In the Classic Render Pipeline, the framebuffer format is defined by the configuration flag bits_per_channel
. Setting it to 8
gives you an RGBA8 render target, 16
gives you an RGBA16F (16-bit float) render target. The Viz Engine Render Pipeline does not support this flag, so all framebuffers for rendering are always 16 bit half-float to be able to ensure HDR compatibility from the very beginning. This format allows for unclamped calculations within Shaders, especially important for lighting with HDR environment maps or multiple lights.
Color Spaces
In the Classic Render Pipeline, rendering happens in Gamma Space (gamma correction is not removed from textures etc.), but the color values are just taken as is. This is fine as long as no blending between colors happen, but when it does, the result is technically wrong, but could still be fine from a designers point of view. The Viz Engine Render Pipeline uses Linear Space rendering by default, which inevitably leads to differences in rendering, especially when it comes to alpha blending.
See https://en.wikipedia.org/wiki/Alpha_compositing#Gamma_correction
https://www.kinematicsoup.com/news/2016/6/15/gamma-and-linear-space-what-they-are-how-they-differ for additional information on it.
Sorting
The programmable render pipeline has direct impact on the way sorting is done within the Viz Engine Render Pipeline. A change of a shader is one of the most expensive operations for the GPU. For geometries that are considered opaque, our sorting algorithm tries to reduce the amount of shader changes necessary and also tries to reduce the amount of overdraw happening when drawing them. That means, those geometries are first sorted by an internal material ID and then front-to-back. This can lead to confusion, because the drawing order is not exclusively defined by the placement of a geometry within the scene tree.
The Classic Render Pipeline does not need to take shader changes into account, since basically there are none. It is only rendering figuratively speaking with the same shader all the time.
Performance
Comparing performance between The Classic Render Pipeline and the Viz Engine Render Pipeline is kind of difficult, since they are basically two different renderer implementations using two totally different rendering technologies. When comparing the raw numbers (MaxFPS) for an empty scene, someone might think that the Viz Engine Render Pipeline is slower than the Classic Render Pipeline. There are multiple reasons for this, based on what is being done to get a picture out of the Classic Render Pipeline or Viz Engine Render Pipeline, but this should not be used as a decision-maker on what rendering pipeline to use.
The following graph shows, why someone should not use MaxFPS to compare performance at all. MaxFPS numbers are changing exponentially compared to the time it takes to render a field in milliseconds, which changes linearly.
Compositing of Media Assets
The way the compositor works is slightly different between Classic and the Viz Engine Render Pipelines. Images (with Alpha channel) can only be blended if there is a background available.
Example
To use an Image channel or Super channel with alpha, the ordering has to be changed:
Classic Render Pipeline | Viz Engine Render Pipeline |
---|---|