I have what seems like a pretty simple scene. 15 pool balls on a table. My computer has two 2080s, 8GB of VRAM. But this simple scene is clogging up 7.7 GB of VRAM, and Cycles keeps crashing.
This kind of problem is usually the textures but mine aren’t even that big. Or maybe I’m wrong! You’ll notice I don’t even have any of the normal maps connected. I’m confused.
I think I know what’s happening. The problem is you have a full set of 4K textures for each ball.
When you look at those files in their folder, their size appears pretty small, because the PNG format compresses them very efficiently, especially for the ones that are mostly a solid color. However, when a texture is used in a render, it has to be stored in a fully uncompressed way so it can be used quickly. This means all those textures are going to be a lot heavier inside Blender than they appear looking at the files.
The way you have done the textures is quite memory inefficient. If you want to make this scene a more reasonable weight, you should find ways to reuse the same textures in multiple materials.
Here are some ideas:
Instead of having a full texture set for each ball, you could use just one set that’s shared for every ball’s material. The color texture could be changed in each material using a hue/saturation/value node.
Remove the numbers from the textures and instead do them as separate, transparent decals. Those decals could then use a single texture that contains every number. You can model the decal easily by duplicating the area of the sphere where the number will be and inflating it a little, or you could use a shrinkwrap modifier to glue a subdivided plane on the surface of the ball.
If the numbers aren’t a part of the texture anymore, the balls could likely share the same roughness and normal textures too. The balls are all rotated differently, so there would be no obvious repetition from reuse.
Should I delete the textures from the texture folder on my computer? Does Blender know they’re there and suck up memory? Or, just do what you suggested and use, say, the same roughness map for ALL of them. The color maps are actually really small, thank God.
Use Simplify’s Texture Limit to adjust all textures below a certain size.
Viewport rendering and rendering can be set separately.
(Adjusted without damaging the original.)
If the texture is in use inside Blender, it is using memory. Well, the file itself in the folder isn’t taking any, but Blender loads its own version of it inside the software and that takes memory. So in your exemple, the normal map files aren’t taking any memory as they aren’t even used, but the color and roughness textures are taking loads of memory because Blender is loading its own uncompresed version of them.