Chaos Corona Forum
Chaos Corona for 3ds Max => [Max] I need help! => Topic started by: Tom on 2023-06-28, 08:39:47
-
Hi,
I render a simple scene, a small bathroom, which is basically a box with only one tiny window.
The lighting is made of a Corona Sun + Sky, and I added a rectangular Corona light in front of the window to help light coming in.
The render takes so long to clean the noise, which is understandable as I guess Corona has hard times cleaning all these rays bouncing in the room: there is very little direct illumination involved here, mostly indirect illumination.
Materials are pretty straight forward: basic stone tiles on the wall and the ground, with an average reflection.
It takes around 250 passes and 17 hours to render in 6000 x 5800 pixels on my Threadripper 3990X cpu with a noise threshold of 3%. It is really long: most images render in around 1 to 2 hours even in 6K.
I was wondering what can I do to speed up the rendering?
All advice and comments are welcome, thanks.
-
That is some crazy render time indeed. I don't think it should be this slow, even in that scenario.
You should probably go the normal route of resetting everything and turning it back on one at a time.
So, make a copy of the scene.
Reset corona settings in the "scene" tab of Render Setup.
Turn off all lights, even environment.
As an extra step you could put override material as a simple grey material, and hide glass materials for now.
Check if scene renders black, and if it does(it should), start by turning on corona sun and sky(environment) and check render time (Should be fairly quick)
If the scene still renders slow there might be some deeper issues that maybe the Corona team can help with.
If the scene now renders fast, you can start by unhiding glass, next you can put more and more objects into the exclude tab in the mtl override, and finally turn on the last of the lights. If the scene starts to render slow at some point during testing, note when and try and find the culprit. Could be materials with weird settings, lightMtl with weird settings, displacement, could be you forgot to turn off "occlude other lights" on the lightplane in your window, etc. Only way to know for sure is to test.
-
Make sure you're using UHD or 4K for the secondary solver? (Not path tracing)
Make sure there is no caustics on, no materials with dispersion.
Otherwise, yep, go through it incrementally, or as the previous post describes.
-
Thanks guys,
I followed the steps as described by philipbonum and started running into trouble when enabling the sun and environment map.
By 'trouble' I mean that, to my understanding, rendering 6000 x 5800 with grey material (IOR = 1.0, glossiness = 0.0) looks slower than what it should be. After 10mn the noise level is 7.70%, and the remaining rendering time to hit 3% is 54mn.
I also checked the secondary solver is set to UHD Cache. I didn't check whether caustics are on or off but I don't think it really matters because of the override material.
I'm wondering if this is due to Corona 10? I recently upgraded to v10. Plus I've noticed my renders look different with v10 than v9, weird things happen: shadows are blurrier when lighting a scene with an HDRI map, and general contrast of images are different.
-
Check what is your rays per sample stats while rendering. If it's unusually high, in the region of 100+, it might indicate that something wrong is in your scene. It is best to look at this stat when rendering scene with full materials and not override, since complex materials are one of the major contributors to high rays per sample.
-
Thanks.
Out of curiosity I started a new scene from scratch: I modeled a simple box, put a Corona Sun and environment, an override material and hit render.
The same problem is happening: after 5mn of rendering (6000 px wide) the noise level is only 11% and the remaining time announced to hit a 3% noise level is 1hour ... something is wrong.
Too bad I didn't do this test when I was still on Corona 9.
-
Check what is your rays per sample stats while rendering. If it's unusually high, in the region of 100+, it might indicate that something wrong is in your scene. It is best to look at this stat when rendering scene with full materials and not override, since complex materials are one of the major contributors to high rays per sample.
Thanks. I never had a look at this setting before. It shows 30.2. So according to what you say it looks normal.
-
Thanks. I never had a look at this setting before. It shows 30.2. So according to what you say it looks normal.
Are you looking at the original scene, or at the box test with grey material?
-
At the box test scene with grey mtl.
-
You need to look at the stats in the scene that has an issue, not in a test scene. I quickly made similar box scene with grey material and i get comparable result to your test, but about twice slower ( i don't have threadripper), i think there's nothing wrong with your test scene, so you need to focus on the original scene.
-
When I said I started from scratch, I opened a fresh new scene and merged the test box I did in the original scene.
As I said the announced render time was around 1 hour.
This time I really started from scratch, by modelling the box in the new scene: the rendering time is about twice faster with an estimated rendering time of 35mn.
I suspect that the problem maybe coming from the geometry of the original scene (imported FBX file).
But still: 35mn to render a box illuminated by a Corona sun/sky seems a bit too slow, especially with a 3990X.
That being said, I don't have this problem with exterior scenes: so maybe Corona is not good in this particular scenario of interior rendering with a tiny window?
-
Of course interior scenes are much harder to render, simply because most of the lighting is indirect, especially in a scene like yours, where the only light source is a tiny window. And also 6K is quite large resolution, that's 27 millions pixels.
-
You need to look at the stats in the scene that has an issue, not in a test scene. I quickly made similar box scene with grey material and i get comparable result to your test, but about twice slower ( i don't have threadripper), i think there's nothing wrong with your test scene, so you need to focus on the original scene.
Thanks.
The Rays/sample in the original scene is around 32.
-
That's a very good number, meaning that there's probably nothing fundamentally wrong in your scene and it's likely that this lighting scenario is hard to compute by its nature. If you don't mind to fake a little bit, you can try to place big light plane directly behind the camera and aim it to the room, make its intensity low enough that it won't cast visible shadows, but big enough that its light would contribute quite significantly to the overall lighting. You can deactivate its visibility in reflections and refractions, so that it wouldn't change appearance of scene materials. If the light will change direct vs indirect ratio quite significantly, that could dramatically reduce render time. Another option, especially if you don't want to fake the lighting is to try to tweak render settings, since the scene is dominated by indirect lighting, you can try to increase GIvsAA parameter in render setup performance tab, so more samples would be dedicated to solve GI noise in each pass and you don't need to render so many passes overall and waste samples on AA which is clean enough long before noise target is reached.
-
Thanks for the explanation romullus.
I did some tests: adding a light as you suggest doesn't lead to faster renderings in this case and tends to make the image a bit more flat, but it is something I will keep in mind as it may be useful in some scenarios.
I also tried different values for Sampling balance: again rendering times don't change. Actually, when increasing this value, it tends to increase rendering times slightly which is quite the opposite of what would be expected. I tried values between 16 and 48.
So I'm not sure why there's no change in the rendering times. I used a resolution of 640x618 pixels and a target noise level of 10%.
The fastest combination was sampling balance of 16 (1mn08s) and the slowest sampling balance of 48 (1mn32s).
-
What if you just remove the wall behind the camera? Alternatively where the door would be just leave it open?
-
So I'm not sure why there's no change in the rendering times. I used a resolution of 640x618 pixels and a target noise level of 10%.
The fastest combination was sampling balance of 16 (1mn08s) and the slowest sampling balance of 48 (1mn32s).
That's quite strange. Maybe that's because in low resolution the balance between GI and AA changes significantly, or maybe there's something else going on. I honestly have no idea. If you're still in experimentation mood, you can try to add CESSENTIAL render elements and see which one is the noisiest. Maybe that would give you a clue where to look for scene performance gain.
-
Thanks.
Out of curiosity I started a new scene from scratch: I modeled a simple box, put a Corona Sun and environment, an override material and hit render.
The same problem is happening: after 5mn of rendering (6000 px wide) the noise level is only 11% and the remaining time announced to hit a 3% noise level is 1hour ... something is wrong.
Too bad I didn't do this test when I was still on Corona 9.
You can share the sample scene here so other users can test the exact same scene too, and share their results.
Honestly the timing seem strange to me, yet I would not directly co-relate the noise level percentage to image cleanliness - in higher resolutions, you get higher noise % for relatively the same cleanliness of the render in lower resolution. Plus the 1:4 zoom shows the image much noisier than it actually is (like a high resolution image previewed in low resolution).
-
What if you just remove the wall behind the camera? Alternatively where the door would be just leave it open?
I didn't try that. It would probably make the render faster indeed, but it would also make the image look more flat because of light coming from behind the camera.
-
That's quite strange. Maybe that's because in low resolution the balance between GI and AA changes significantly, or maybe there's something else going on. I honestly have no idea. If you're still in experimentation mood, you can try to add CESSENTIAL render elements and see which one is the noisiest. Maybe that would give you a clue where to look for scene performance gain.
I added all CESSENTIAL render elements but I can't really tell whether or not one is particularly noisier than the others. The noise seems pretty consistent across all of them. Maybe INDIRECT pass is a bit noisier than the others but not sure.
-
This kind of scene is very challenging to sample. This dark room with a single bright spot of sunlight is basically using indirect illumination as key light in your scene. What you can try here if you wish to render to high-res like 6k is bumping GIvsAA to some crazy value like 256 (from the original 16). This way you will put a lot of processing power into GI, and you won't get nice smooth edges, but it doesn't matter that much when rendering in high-res. Even if you get something like 4-8 AA samples (4-8 Corona passes), the image should look good in terms of AA in such resolution.
-
@Aram Avetisyan: Thank you for your feedback.
You are right: going down to 3% noise level target seems excessive for a high resolution like 6000 pixels wide, and it increases rendering time by almost 3 times compared to a 5% noise level target according to my tests on this scene.
-
Actually, I don't really understand what the problem is with this particular scene. I started from scratch with a blank max file and gradually merged all the objects from the original scene. Then I rendered it in 6k with a 3% noise level target with all objects having a simple white material override except for the glass. The estimated rendering time was 1 hour and 40 minutes, which seems normal.
Then I removed the material override and the estimated rendering time increased to 17 hours! So, I concluded that there was a problem coming from the materials, probably the one applied to the walls since it is the most dominant material in the scene.
At this point, I removed the glossiness map of the walls tiles material and the rendering time dropped to 5 hours. To be more realistic, since it was said that a 3% noise level target is excessive, I re-rendered it with a 5% noise level target and the estimated rendering time was now 1 hour and 50 minutes, which looks fine to me.
I then reconnected the glossiness map to verify the consistency of my investigation. Normally, Corona should have again announced a rendering time of 17 hours, but now it announced 2 hours and 15 minutes ... which is not logical. Then I remembered that the initial render (announced with 17h00 rendering time) was done with Corona 10, and since then, I had restored my system with Corona 9 ...
So in conclusion, this scene is ultimately probably not problematic. It just required reducing the noise level target from 5 to 3% to obtain normal rendering times.
However, this seems to highlight a potential problem with Corona 10, which takes abnormally long to render this scene compared to Corona 9. In this regard, I also noticed a very noticeable difference in shadow rendering on an HDR-lit scene between Corona 9 and Corona 10. I will open another dedicated thread for this problem with screenshots when I finish my tests.
And when I reinstall Corona 10, I will re-run calculations on this bathroom scene to see if Corona 10 continues to announce a rendering time of 17 hours.
-
This kind of scene is very challenging to sample. This dark room with a single bright spot of sunlight is basically using indirect illumination as key light in your scene. What you can try here if you wish to render to high-res like 6k is bumping GIvsAA to some crazy value like 256 (from the original 16). This way you will put a lot of processing power into GI, and you won't get nice smooth edges, but it doesn't matter that much when rendering in high-res. Even if you get something like 4-8 AA samples (4-8 Corona passes), the image should look good in terms of AA in such resolution.
Thanks for the advice @maru.
I'm doing a test render currently with 5% noise level target, 6K wide, it's rendering since 1hour+ and Time Remaining is still showing ??:??:?? so I'm not too sure what time it will take to complete.
It rendered 5 passes so far.
Rays/sample is around 410.
... it's now rendering since 1h30 and estimated left time to render is 1h20 so it would be 2h50 to complete the render which is as fast as GI/AA set to 16 .
-
What if you just remove the wall behind the camera? Alternatively where the door would be just leave it open?
I didn't try that. It would probably make the render faster indeed, but it would also make the image look more flat because of light coming from behind the camera.
I do this for rooms like this, doesn't look flat at all. If the direct light is coming from the side then you only get more bounced light. I mean try it and see for yourself maybe in this case you could be right.
-
Thanks James, I will try placing the light on the side instead of behind the camera.
-
I installed Corona 10 and started a rendering without changing anything to the scene.
The announced rendering time is 2.6 x longer than with Corona 9: 16 hours and 30 minutes instead of 6 hours and 15 minutes. So it looks like there's an issue with Corona 10 rather than with the scene itself.
Additionally, I noticed that strangely only 60% of the CPU cores were utilized when rendering with Corona 10.
On another scene I also noticed a strong discrepancy in the render itself between Corona 9 and Corona 10: I opened a dedicated thread for this https://forum.corona-renderer.com/index.php?topic=40393.msg214436#msg214436
-
Noise percentage calculation can change significantly from version to version, therefore noise level target is not a good way to compare speed of different Corona versions. Much better way is to render the images for set time and then visually compare them side by side. Alternatively you can set pass limit and see which version will render them faster.
-
Noise percentage calculation can change significantly from version to version, therefore noise level target is not a good way to compare speed of different Corona versions. Much better way is to render the images for set time and then visually compare them side by side. Alternatively you can set pass limit and see which version will render them faster.
Thanks, I didn't think of that. I'm not sure I will have an opportunity to roll back to Corona 9 and do the test like you say, but if I do I'll update this thread.