The goal here is to compare 3Delight's OSL rendering core with other renderers that use C++ for shading (namely Arnold and RenderMan RIS). Since all renderers are quite different, we will try to get to a most common denominator, in terms of setup, so to be able to compare apples to apples. We want to know : can we go as fast as highly optimized C++ ray-tracer.
In this particular case we will be constructing an artificial test scene that emulates foliage. Rendering foliage is a good stress test for many reasons:
- Many shader evaluations, including for transmission rays. No "opaque" object tricks are possible because leaves are usually modelled using cutouts. Shader evaluation efficiency is important.
- Many short ray probes necessitate a good integration and coordination between shading system and space partitioner.
- Any bottlenecks in the ray tracer tend to be amplified and adversely affect performance.
The scene is designed in such a way as to put all the contenders in an even playing field and get meaningful performance numbers. For example:
- We will just use diffuse reflectors. We don't want complexe BRDFs sampling to get in the way. This test is not about this.
- We will disable any adaptive sampling so to make sure we have very close ray-counts.
- We will use only one diffuse bounce. This will circumvent some complexe variables from the equation (Russian roulettes and other tricks of the trade).
- The scene is easy to load, to setup and to render. It is available for all tested renderers.
- All renders are done in Maya.
So our scene is a large collection of squares with a circular cutout and looks quite ugly in the view port:
The render looks a bit better:
Squares are transformed into circles using a cutout. Scene is lit by two large area lights from each side.
The Contenders
Arnold | RenderMan | 3Delight |
---|---|---|
|
The Setup
Renderer | PixelSamples | Bounces | |
---|---|---|---|
Arnold | 9 | ||
RenderMan | 9 | ||
3Delight | 9 |
Resources