← All ideas

Limit Texture Resolution option on Image Texture node.

Sometimes you want materials with 4K or even 8K textures, but most of the time you don't, and smaller 2K, or even 512p is enough because the object is far away, or out of focus...

However, if you are building up a library of materials for yourself, you have to create unique materials with unique image files for all resolutions . This is messy.

It would be nice if you could simply load in the 8K texture, and just limit it's resolution inside blender, on the Image Texture node, if there's a need to save memory.

Basically - There needs to be a 0 to 100% slider on the Image texture node to scale it down.

The reason on why this proposal is about a 0 to 100% slider on each image texture node, instead of one limiter for the whole material, is because this gives a lot more flexibility. You can also create your own per material slider using drivers. Or, if/when shader nodes are updated to be more like geometry nodes (More values have inputs, and the whole material is a node group), the user could just connect the slider to the nodegroup input.

Currently, there is a global limit for texture size, but it's more of an emergency thing if you run out of memory for the render. Problem with that is, that it's GLOBAL. You lose resolution on textures you actually need to be sharp too... The HDR sky, would be an obvious example...

100%

Development Status: Open

Upvote 14 Downvote 0
FreeMind
25 Mar 2022

7 Comments

stgerx

Totally agree, this is something we need.

Best thing would be, if this could be somehow automatically calculated, depending on camera distance.

2
FreeMind Author

I am sure this could be set up with nodes by the user...

stgerx

No, it can't.

And even it would be possible, it would not reduce memory consume if the size of the textures would be changed in shader nodes.

1
FreeMind Author

No it isn't.

Read the last paragraph of this feature request.

3
chrisjamesbrindley

I often work on large scenes at work, with assets linked in that were created by other people. Managing the VRAM manually is awful in blender. It's either: Global simplify - super easy, but kills textures in the foreground or simplifies assets that were already highly optimized. Or, localizing the textures in my file, then manually resizing in the Image/UV editor. Using an addon or python script that may or may not work properly.

I think even just using the same interface as the simplify panel on a per material basis would be useful. Put it in settings in the material, limit textures checkbox, max resolution dropdown.

Even if Blender does get the ability to optimize texture resolution automatically (like ptex in arnold) at render, which is a sperate but also needed request, there are instances where you would want to manually control it if you are running into VRAM issues.

katarn66

I think OSL for GPU is suppose to solve this but I don't know how long it's going to be until that's done. I heard they were doing some stuff for 3.5 but I haven't been able to investigate it fully. I think a good work around would be if there could be a way to disable it on certain materials or assets in the scene. That way if everything was limited to 1K in order to render, you could select whatever is in foreground to be the only asset that retains a higher resolution at like 4K or 8K. This would work for like 95% of scenarios and really open up rendering production level scenes on the GPU.