Corona Renderer 4 introduced a whole new way of calculating caustics – but are they practical for use in actual production scenes? And what about in animations?
London-based architectural & design visualization studio Recent Spaces are always on the look-out for the ultimate in photo-realism, so their artist Tobias Grendelmeier did some testing to find out and shared their findings with us.
This was R&D done for an upcoming commercial project?
That’s correct. With the release of Corona 4, which came with some major caustics improvements, we took the opportunity to test out how they might work on a live project. At that time we were working on a project that included views of an outdoor pool area which I took as a base for my test scene with some adaptations to make testing easier. This opened the door to some exciting caustics-driven projects with new clients who saw these tests and were impressed with our results.
Were caustics something the client was looking for in this project and critical to the look, or something that you felt might add that extra realism and suggested to the client to add them?
No – we’d not been asked to add caustics, but having now implemented them it’s a simple “no-brainer”. We definitely think that caustics can dramatically improve photorealism and contribute to an image’s mood. They’re now an essential part of making water look real, at least in daytime shots with strong direct light.
How did you animate the water?
I used PhoenixFDOceanTex which is an infinite procedural map to displace the water surface and simulate waves and ripples.
The beauty of it is that it is all animated and the default values pretty much worked straight away for me. The only setting I changed was the “Rate of Change” which I decreased from 1.0 to 0.5 to slow down the movement of the water. It’s also important to pay close attention to units/scale to ensure the results are correct.
We’re producing Cinemagraphs for some clients too, at that requires ensuring that the OceanTex is set to “loop” mode.
How simple was it to add the caustics? Can you walk us through any tweaks you made to get the final result, or was it pretty much left at default?
Adding caustics was surprisingly simple by basically just changing two settings: Enabling refractive caustics in the water material options and enabling the caustics solver in the render settings. No tweaking or postproduction needed.
What is the lighting set up for the scene?
The lighting set up is a HDRI with a clear sky and a bright sunlight to create strong shadows and contrasts. No additional lights were used in this scene.
Was there anything you had to do differently in the scene to add the caustics?
I changed the time of the day from dusk to daytime, as it was originally proposed to the client, since I wanted the sun to be the main direct light source in order to get the clearest caustic effect. We are still evaluating if the caustics effect would ever still be visible in a dusk environment and the pool being lit with spot lights. If it is, it’s always very minimal.
Can you share some information about your results, such as render times, hardware used, etc.?
All of our workstations are either very high end dual xeon or overclocked i9 processors. I did some initial tests using Corona Interactive Rendering which works very well and quick for testing caustics. The animation was rendered at 1080p 30fps and each frame of 100 passes took approximately 50 minutes. Even though I didn’t look that much into optimisation I think 100 passes is more than enough. With stronger denoising I could probably have achieved a similar result with less render passes.
One thing we discovered was that you do need to give some extra thought to the scene set up if an area of the water is off-camera, but ought to be reflecting caustics into an area visible in the camera. When using displacement with the default Screen Size option, then displacement is not calculated for anything off camera, and that leaves that part of the water flat – which means no interesting caustics from that area. In such situations, using World Size instead of Screen Size can be useful, or even necessary, as that calculates displacement equally for everything in the scene whether it is in the camera view or not.
We discovered that sometimes you can manage the potential increased memory requirements when using World Size displacement by using a CoronaDisplacement modifier set to World Displacement for the water alone, leaving the rest of the scene using Screen Size. Either way, it seems like a fair trade to get the desired result from the caustics. (Editors note: the new 2.5D displacement and memory savings in Corona Renderer 5 should help offset memory requirements too)
Any thoughts on how often you think you’ll be making use of caustics in production after these tests?
Without doubt for any daytime work we will implement caustics to increase photo realism and overall quality of our work. Hopefully as Corona continues to improve caustics implementation they will become faster to render.
Our thanks to Recent Spaces and Tobias for sharing the results of their tests!
Recent Spaces website: recentspaces.com
Recent Spaces on Facebook: facebook.com/recentspaces/
Recent Spaces on Vimeo: vimeo.com/recentspaces
Recent Spaces on Instagram: instagram.com/recentspaces
Phoenix FD: https://www.chaosgroup.com/phoenix-fd/3ds-max
Editor’s Note: If you are trying caustics for yourself, here is some additional information about displacement, autobump and caustics in this helpdesk article.