I’ve recently ran into a problem when rendering scenes with a large number of proxies in them and I decided to do a little checking. It seems that the “Rendering Image” portion of the render process can take several times longer when using a saved Irradiance Map. It’s repeatable for me on several scenes but to narrow down the problem I made a simple scene with just one proxy tree(converted from an Onyx Tree) that gets instanced about 100 times and fills most of the frame of a physical camera and using vray sun and sky. It doesn’t seem to matter what the resolution is. Also scene AA is QMC 1/3, LWF, Gamma 2.2 color mapping.
I start the rendering with a with a medium setting Imap and 500 sample light cache. Everything moves along normally and once the light cache and Imap are done “rendering Image” begins and just this portion takes 59 seconds. Pretty much as expected.
Now I save the Imap and the Light cache as well and switch them to “from File” and point each to the appropriate map. Hit render and the “Rendering Image” begins right after it does it’s usual of instancing, building raycaster, etc. But this time, the “Rendering Image” part of the process takes just over two minutes! I expected it to take basically the same amount of time as the last one (59 sec) since the light calcs were already done. What’s even more baffling to me is that if I changed the Irradiance map setting over to “Incremental…” I get a total time of about 70 seconds for the whole thing since the Imap calc takes just a few seconds to go through the scene and the “Rendering Image” part goes back to the ~59 seconds. Turning of the light cache in both cases had no effect.
More testing revealed that this is only related to scenes with a lot of proxies, if the scene is just meshes the results are basically identical if using a saved Imap or not.
Also, I doubled checked everything for memory and it’s WAY below any problem level (system is x64 with 6gb ram) and the scene was just the trees, 640x480 and the saved Imap was like 2.7mb.
Is there some setting I’m missing? Can anyone else reproduce this? Any help or suggestions are appreciated. If necessary I can post the scene but it’s basically just an empty scene with some proxies, a sun and sky and camera.
One other thing is that I ran these tests on my dual opteron 270 (4 buckets) but the effect seems to be exxagerated on my dual Quad Xeons (16 buckets) leading to times that are 5-6 times as expected .
Again, thanks to Vlado’s unbelievable support for fixing this immediately. I also got this response from Vlado:
The problem is not new and has probably always been there to some extent, but seems more obvious for your scene. It was related to the way the dynamic raycaster is created incrementally. What you can do is to add a quick light cache pass (with 100 or so samples only) even though you are using a saved irradiance map; this will be enough to cause the raycaster to be built in a more regular manner.
The light cache trick seems to work just fine and everything behaves as I’d expect .
We ran into this recently as well, but since we didn’t have much experience with animation or saved irradiance maps we figured that it was an issue on our end.
VLADO: Can you confirm this is fixed in SP2? I didn’t see it in the official change log, unless it’s this one… > raycaster limit did not work properly for values above 4095
just a guess because it mentions the raycaster.
Unfortunately the fix I had in mind for this caused increased memory usage and some scenes that were rendering fine before took a lot longer to render, so I had to revert to the original code until I have more time to explore a reliable solution.
Bummer :(… I was holding out rendering a large anamiation until SP2 in anticipation of the fix but now it looks like I’ll just have to revert to the light cache trick again. A question though - since I’m rendering out a relatively low light cache (75 samples) for each frame can I still use “use light cache for glossy” or will the quality be too low?
Vlado: Is this problem addressed in SP3 (I didn’t see anything about it in the notes)? Of course I’d love it to be fixed, but I’m really just asking so I know if I need to keep generating the small lightcache. Thanks.