How Does Iray Memory Requirements Expand with Larger Renders?
aaráribel caađo
Posts: 686
Is there a way to calculate how much memory it will take to render a scene at a larger size? E.g., if DAZ is using 3 GB for a scene I'm rendering at 1000 x 2000 px, can I calculate how much rame would be needed to go to 1500 x 3000 px for the same scene (only changing the render dimensions)?
Comments
Sounds like this utility is just what you are asking for
http://www.daz3d.com/iray-memory-assistant
I haven't tried it myself but would love to know if it helps. I am on the fence as whether to upgrade to two 1080's with 8GB each as my scenes are almost always ove rthe 4GB I have on my 980s. If this utility gives good info it might help to make that decision.
Hope this helps
I'm not sure if that will tell me about scaling. As I understand it, it tells you what the memory footprint of the assets in the scene are, but I don't think it would tell you about whatever automatic scaling Iray does to textures at smaller sizes. Which I think happens, making the memory footprint of a small render less than a large one. And I'm not sure if for a larger render, Iray needs to hold more data in memory for various rander processes (like ray casting).
iRay doesn't scale textures for different size renders. There is a script in the Freebies section that will scale textures for you though.
Does the memory footprint go up proportionate as the render size does? E.g., does a 1k image take 1/4 the memory of a 2k image? Or soemthing vaguely like that? I just want a sense of how large I can render an image without running into a severe memory crisis!
1000x1000 pixels is 1M pixels; 2000x2000=4M, so the broad calculation is a 4X increase for every doubling in output size. I believe Iray renders interally 32bits per pixel, even if you save a standard JPG, PNG, or TIF image, and there's a transparency channel -- four channels per pixel. That makes a stride of (I think) 16 bytes per ARGB pixel -- 4 bytes for 32-bit data, * 4 channels. I've never bothered with the math, actually, and there are calculators for figuring this, but in the end, the rendered image is not the main consumer of memory -- less than 200M or so for the average scene.
The biggest consumers of memory is geometry and textures. A single fully clothed character will have geometries for the character, hair, and maye 5-6 articles of clothes, plus textures for all this. Using 4K textures, it really adds up. Making larger renders doesn't cause an increase in these scene database elements.
Your best bet is to use a tool like GPU-Z which will tell you how much VRAM is used when it's processing an Iray scene (assumes a compatible nVidia card with CUDA cores, of course). You can watch the memory change as rendering starts then progresses.
:) I don't have a Nvidia card, so I'm limited to CPU rendering.
I'm planning a big scene with a lot of elements, although I'm using instancing on ones in the far background, and using a HDRI image for the "set," which cuts way down on resources relative to a fully dressed room. However, since I'm going to be gone for a long time, I want to render as large as I can, just for the sake of seeing what 72 hours of render time looks like on my machine :p