In this test we will compare Geo Light sampling technology in 3Delight OSL, Arnold and RenderMan. We will use a test with a geometric area light that is composed of a relatively large number of faces. The test should allow us to find the convergence rate of each algorithm as well as general performance.
The test scene allows for procedural generation of floating area lights using the "Tubes Per Step" PaintEffects attribute.
The scene is designed to procedurally generate a number of area lights floating on top of a "city".
Arnold | RenderMan/RIS | 3Delight OSL | |
---|---|---|---|
Version | |||
Technology | Unidirectional path tracer. | Using unidirectional path tracer. Other options are available but not useful for this test. | Unidirectional path tracer. |
Shaders | C++ | C++ | OSL |
We are interested to find out about:
We will start by creating a "ground truth" image for each renderer (encouragingly, images produced by both 3Delight and Arnold are almost exactly the same). This image is generated by using a very large amount of samples so there is no more apparent noise. We will then render several images with varying amount of samples and measure the RMSE between these images and ground truth. Timings and statistics will be collected at each render. Having this data will allow us to draw a conclusion about the convergence rate and general performance.
We use a 1x1 pixel sample in all renderers. Adaptivity is disabled as well as all additional bounces. This is done so to isolate the light sampler. In Arnold, the light samples are attributes of the geometry. In RenderMan/RIS the light samples are attributes of a custom shape. In 3Delight, the light attributes are on Maya's area light.
Renderer | Arnold | RenderMan/RIS | 3Delight |
---|---|---|---|
Sampling | |||
Geo Light |
Arnold — For light samples, Arnold uses effective sample counts that are proportional – within a constant – to the square of the user specified value. As we will see, this makes sense from a UI standpoint since the variance follows the inverse of the same rule in the case of Arnold. This makes the light samples slider linear in term of perceived noise. In the Arnold tables below, we will specify the effective samples per pixel along with the user samples.
RenderMan/RIS – In Arnold and 3Delight, light samples are the single "go to" parameter to control image quality when only direct lighting is considered. In RenderMan/RIS, we had to match light sample count with BxDF sample count to achieve acceptable quality and satisfactory convergence rates. Using light samples only – or BxDF samples only – produced slowly convergent renders. In RenderMan/RIS result data, "N samples" means N samples for both light and BxDF. We did all the test with the "advanced (4)" light sampler — other samplers did not provide acceptable results for this test case. The samples used by the renderer are the ones entered in the UI and are not squared as in Arnold. Note that we used the path tracer with once bounce instead if the "direct lighting" algorithm for one of the images because of a crash (quality and speed do not differ).
3Delight – We have only one control for the general quality of the render. In the case of direct lighting, 3Delight "understands" that samples are best used for light sampling and that's what it does. As tests will show, those samples have a linear impact on perceived noise levels.
Arnold
Samples (effective) | 2 (1.23) | 4 (4.91) | 8 (19.64) | 10 (30) | 16 (78.56) | 32 (314.29) | 64 (1257.18) |
---|---|---|---|---|---|---|---|
Image | |||||||
Time | 1s | 2s | 6s | 9s | 21s | 1:21 | 8:12 |
TTFP | 0s | 0.35s | 1.2s | 2.0 | 3.2s | 11s | 41s |
Shadow Rays | 0.678 M | 3.26 M | 10.8 M | 16.94 M | 43.4 M | 173.6 M | 694.5 M |
RMSE | 0.15699 | 0.100115 | 0.0501787 | 0.0396399 | 0.0242515 | 0.0117413 | 0.00693426 |
Samples | 2 | 4 | 8 | 16 | 32 | 64 | 128 | 256 |
---|---|---|---|---|---|---|---|---|
Image | ||||||||
Time | 5.72s | 8s | 12.82 s | 22.18 s | 40.92 s | 86.91 | 165.69 s | 302.98 |
TTFP | 3 | 3 | 3 | 3 | 3 | 3 | 3 | |
Shadow Rays | 2.45 M | 3.13 M | 4.51 M | 7.27 M | 12.78 M | 23.8 M | 45.88 M | 90.1 M |
RMSE | 0.0933142 | 0.0658266 | 0.0441248 | 0.0290439 | 0.0185575 | 0.0117566 | 0.00752546 | 0.00449892 |
Samples | 1 | 2 | 4 | 8 | 16 | 32 | 64 | 256 | 512 | 1024 |
---|---|---|---|---|---|---|---|---|---|---|
Image | ||||||||||
Time | 6.74s | 7.23s | 7.99s | 9.42s | 12.12s | 18.51s | 29.40 | 1:38.08 | 3:15.77 | 6:23.39 |
TTFP | 3.1s | 3.2 | 4s | 4.7s | 6.7s | 9s | 15.5s | 51.2s | 97s | |
Rays | 1.47 M | 2.94 M | 5.88 M | 11.7 M | 21.1M | 47.02 M | 94.14 M | 376.3 M | 751.3 M | 1499 M |
RMSE | 0.151125 | 0.121487 | 0.0953649 | 0.0728148 | 0.0520606 | 0.0373876 | 0.0265388 | 0.0138148 | 0.00854045 | 0.00396 |
The following plot gives us a good idea on the algorithm sophistication of the different light samplers.
|
The following plot gives us a good idea the time required to achieve a certain quality. From the user perspective, this is an important quantity.
The following chart shows how much time it takes for each renderer to build the light acceleration data structure depending on sample count.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||
|