Introduction
Over the past couple of weeks I have been creating my own ocean simulation and reached the last step on Monday. At this point I was ready to render out my shot however my personal computer, while useful for setting up the simulation, is not set up for renders of this size so I brought it into the university to be rendered there. At this point I had to tweak the settings on the Mantra nodes to balance quality against calculation time, here are some of the parameters:
Parameters
Tile Size – When rendering each core renders a certain area at a time called a “tile”. This parameter defines the area of that tile, smaller tiles will generally be rendered faster but you have to render more of them, while larger tiles take more time but you have to do less of them. In general CPUs like smaller tiles and GPUs like bigger ones, as Houdini uses the CPU to render I knew a value of less than 32 would be required.
Geo-Time Samples – This effects the motion blur, specifically the deformation motion blur and defines the amount of subframes that will be calculated to create the blurring effect.
Max Ray Samples – This sets the maximum number of secondary rays allowed for each material, the higher this value the higher the quality of your render as the light will look more realistic however the more samples it has to calculate obviously the render time will increase.
Pixel Samples – This defines how many primary rays will be sampled per pixel. It is defined as a grid with an x and y parameter so there are actually two values however it is recommended these are set to the same number. This also acts as a multiplier for the values below it in the tab – max ray samples included.
Reflect/Refract Limit – This defines the number of times a ray can be reflected/refracted. Reflect means how many times the light bounces off a surface and refract means how many translucent surfaces a ray can travel through. As we are using water there will be some refraction but not much as our water isn’t especially clear.
These are the values I will be changing to balance my render time vs quality, in the end I did 6 test renders of a single frame.
Test Renders
For each of these renders I used the same frame and compared the image, render time, and memory consumed.
Test 1
Tile Size – 16
Geo-Time Samples – 1
Max Ray Samples – 9
Pixel Samples – 5×5
Reflect Limit – 2
Refract Limit – 2
Time: 25 minutes 47 seconds
Memory: 13.49GB
For for my first test render I used my ideal settings to get the best picture possible and get a baseline to work from. In the tutorials I mentioned Giesen only uses 5 Max Ray Samples, he also only uses 3×3 for Pixel Samples and the image generated is very noisy, I therefore increased these values significantly, the Max Ray Samples back to the default 9 and Pixel Samples to 5×5. The picture generated was very crisp and even in areas that normally seemed especially noisy in my previous renders there was next to no noise. However currently each frame was taking nearly 26 minutes meaning that the total render time for 240 frames would be 6240 minutes (4 days 8 hours approx.) which just isn’t viable.
Test 2
Tile Size – 16
Geo-Time Samples – 2
Max Ray Samples – 9
Pixel Samples – 5×5
Reflect Limit – 2
Refract Limit – 2
Time: 27 minutes 19 seconds
Memory: 13.91GB
Before I lowered the quality I wanted to work out the value of my Geo-Time Samples for the motion blur. I increased the value to 2 to double the subframes being added but saw little to no change in the actual image so from here I used 1 for this parameter.
Test 3
Tile Size – 16
Geo-Time Samples – 1
Max Ray Samples – 9
Pixel Samples – 5×5
Reflect Limit – 2
Refract Limit – 2
Ray Variance Anti Aliasing – OFF
Time: 9 minutes 51 seconds
Memory: 13.75GB
Upon recommendation from a tutor I disabled the anti aliasing feature as this often can take the majority of the render time and it did indeed significantly reduce the render time to nearly a third of what I had been operating at previously, however the image generated was incredibly noisy and looked awful. From here, therefore, I re-enabled this parameter.
Test 4
Tile Size – 16
Geo-Time Samples – 1
Max Ray Samples – 9
Pixel Samples – 3×3
Reflect Limit – 2
Refract Limit – 2
Time: 11 minutes 14 seconds
Memory: 12.81GB
After re-enabling the antialiasing I dived back into my original parameters and reverted the Pixel Samples to the default 3×3. This did reduce the render time significantly, by more than half in fact, and didn’t increase the noise to an unusable level, however I would rather decrease the noise level a little more.
Test 5
Tile Size – 16
Geo-Time Samples – 1
Max Ray Samples – 9
Pixel Samples – 4×4
Reflect Limit – 2
Refract Limit – 2
Time: 17 minutes 32 seconds
Memory: 13.12GB
I was hoping that the render time would increase to more like 15 minutes a frame but I can live with 17. The image for this render was more noisy than Test 1/2 but only slightly and when the image is moving the noise hopefully won’t be noticeable.
Test 6
Tile Size – 8
Geo-Time Samples – 1
Max Ray Samples – 9
Pixel Samples – 4×4
Reflect Limit – 2
Refract Limit – 2
Time: 17 minutes 44 seconds
Memory: 12.78GB
Now I had decided on all the settings for quality it was time to edit my Tile Size parameter. Until now I had been using the default 16 size, as I mentioned before CPUs work faster with smaller file sizes so I halved this value to 8 however, as you can see, this actually increased the render time slightly. While not significant on a frame to frame basis, by the end of the simulation that’s nearly an extra hour.
Conclusion
Looking at my 6 test renders I decided that Test 5 contained the optimum parameters for a strong balance of quality and time. At 17 minutes 32 seconds that’s still a total render time of 4157 minutes (2 days 21.3 hours) which is extreme, but compared to 4 and a half days or a shot that is unpleasant to look at, it is preferable. From here I therefore set up my four separate nodes and set the Mantra_Ocean node to render to disk first.
References
- SideFX (2018) Houdini Help: Rendering. Available from: http://www.sidefx.com/docs/houdini/render/ [accessed 13 November 2018].
- Pluralsight (2017) Houdini: Intermediate Ocean FX. Available from: https://app.pluralsight.com/library/courses/houdini-intermediate-ocean-fx/ [accessed 13 November 2018].