4
$\begingroup$

Rendering a large environment scene (also with multiple smoke and physics simulations) in Blender causes my GTX 980ti to run out of CUDA memory. (I've baked all the simulations but am unsure if this makes a difference to memory in rendering)

Is there a way to identify which particular objects / materials / textures / simulations are using up the most amount of memory?

$\endgroup$
  • $\begingroup$ How large are your texture and how many are you using? $\endgroup$ – user1853 Aug 24 '16 at 2:51
  • $\begingroup$ read this post: blender.stackexchange.com/a/61421/1853 $\endgroup$ – user1853 Aug 24 '16 at 3:15
  • $\begingroup$ try breaking the scene into layers/passes : blenderguru.com/articles/… $\endgroup$ – user1853 Aug 24 '16 at 3:16
  • $\begingroup$ Thanks cegaton, will give those links a look, there's a lot of textures from imported models and some I've made myself so I'll have to look closer at the textures... just was curious if there may be some way to identify which objects are hogging the memory $\endgroup$ – Dan Aug 24 '16 at 6:37
4
$\begingroup$

As far as I know, there's no automated tool to identify the resource hogs in your scene. You'll need to do most of it manually. But surely you'll have an idea on what object / element could be the cause? Like, high res textures, dense meshes (check subsurf and multires modifier render settings too!!), lots of copies instead of instances, or fur / hair.

One possibility is to put those objects on separate layers, and render just that layer with very low samples (1 should be enough). The memory consumption can then be read in the debug print line on top of the render view.

Important: Use final render (F12), as many modifiers (like the Subsurf by default) have higher settings for final render than for vieport render.

peak memory usage

Edit

For rendering animations, it might also be beneficial for debugging this to have the memory usage in the test render frames directly. You can enable Stamp Output and check Memory to do so, if you have Blender 2.78 (or a current development build which was compiled after Jul 14, 2016):

peak mem stamp

| improve this answer | |
$\endgroup$
  • $\begingroup$ Thanks for your ideas. I've not done a large scene like this before but have been importing lots of different models and appending different elements (such as grass essentials) plus have multiple smoke and physics simulations running, so am not sure which is effecting memory the most (hence the question). Wasn't sure if there was just an easier way to identify memory usage of objects, but will try putting them on separate layers and checking all the textures. $\endgroup$ – Dan Aug 24 '16 at 6:35
  • 1
    $\begingroup$ I just realised that for some reason I don't have the 'Memory' checkbox available in the Metadata dropdown? How do you enable this? $\endgroup$ – Dan Aug 25 '16 at 0:52
  • $\begingroup$ @aliasguru what version are you using? I don't see the option for Memory in the metadata section. $\endgroup$ – user1853 Aug 25 '16 at 4:26
  • $\begingroup$ @Dan I'm using a development build of the upcoming 2.78 release. As far as I can track it down, they implemented this mid of July, but even when checking the preliminary release notes, they forgot to add information about this feature. $\endgroup$ – aliasguru Aug 25 '16 at 6:59
1
$\begingroup$

put those objects on separate layers, and render just that layer with very low samples (1 should be enough). The memory consumption can then be read in the debug print line on top of the render view. Important: Use final render (F12), as many modifiers (like the Subsurf by default) have higher settings for final render than for vieport render.

This method was helpful, I identified some large memory objects and found some larger than needed textures, lowered the image size of these and lowered some subsurface modifiers from background objects (such as rocks) and now have it rendering on the GPU! Thanks!

| improve this answer | |
$\endgroup$
1
$\begingroup$

A hugely overlooked feature is the simplify section in the scene panel. Too many subdivisions globally can cause memory crashes and it can be hard to find where the highly subdivided objects are in scenes with several objects. Make sure the render section is set to no more than 2 or 3 subdivisions. For most purposes, this should suffice and prevent memory errors.

| improve this answer | |
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.