Render times dependent on uv/pixel density at all?
Silent Winter
Posts: 3,876
in The Commons
Let's say I'm using a simple 4096x4096 rock texture and a flat-mapped object. Now I make another object to use the same map but the object takes up less physical 3D space relative to the first.
Would there be any benefit to shrinking the 2nd obects uvs smaller and not use up so much of the map?
I know the full map is loaded into memory at render time, and that I'm using the same map twice. Just wondering if there are (significantly) extra calculations due to more pixels being on an object's surface or not that could increase render times.

Comments
It could but so a neglible amount I'd worry about other things first.
Groovy, cheers - that simplifies things :)
I don't think there's any benefit to be had from tinkering with the UVs.
There could be from downsizing the textures. If your small object doesn't really need 4K textures, you can save some memory by reducing them. In itself that might not be very important, but if it means the scene is rendered in the GPU instead of the CPU it'll make a big difference.
You can automate this kind of adjustment with this product: https://www.daz3d.com/scene-optimizer
Yeah, if it was just one object, I'd downsize the texture, but this texture is used on another object where it needs to be much larger (re-using it on the smaller is an attempt to save memory ;) )
What size is the texture? 4k, 2K?
It's 4K - though that shouldn't make a difference using the same 4k twice or using the same 2k twice (other than 2k rendering faster by default but that's not to do with the reused texture)
The UV of the mesh does not have a size like a texture map does. It just excists within a boundry shaped like a box.
Different parts of the mesh can take up larger or smaller areas of the UV space but that only affects how well the texture is seen on that part of the mesh.
Every surface that calls for a texture causes that texture to be loaded, even if its being used by another surface on the same model. So your best option would be to make a copy and resize the copy to save on resources.
Copy? You mean the mesh? The 2nd model is completely differerent - just that the uv-mapping doesn't show up the seams (with this texture anyway) so there's no need to have an entirely new texture.
Cheers - got it sorted now :)
If you want to use a pattern like a rock texture on multible objects of different sizes you could use seamless tiling texture maps if those you use not already seamless.
With Photoshop you can make any texture map seamless with Filter>Others>Offset and painting over the seams with a soft clone or heal brush. Photoshop tutorial : How to create seamless textures
Thinking of UV maps is also important here, first if the two objects that should share the same texture map always stay in their relative size you would want to make shure both objects share the same "texel density" on the UV layout. What I try to explain is that the pattern on both objects should be the same size if showen side by side in the scene. But you could also try to find matching "horizontal/vertical tiling" settings for the shader in the Surface pane no matter how you have scaled the objects to equalize the texture pattern sacling.
Saw some youtube videos lately of good addons for blender that can equalize the texel density on all objects in the scene. Used together with the Pack Master it seems realy easy to create texture atlases of multible objects sharing the same texture map.
^yeah, they're seamless - but only tiled on the first object (2nd is pretty small).
I normally join the objects in blender to check the relative uv-scale before separating again. This project is a special case as I need a LOT of stuff in the scene but still be renderable so trying to reuse maps. So far so good :)
Edit to add - looking forward to 2.8 - thanks for the links - those addons should help in using Blender for renders, which I'll do a bit more I think once I get to grips with 2.8 as I got that 600+ pbr materials addon which makes setting up the materials easy.
My point was that in most cases a 4k texture is indistinguishable from a 2k one. Unless you're doing an extreme closup or the like.
yeah, for most renders - but this is for distribution and most people want 4k as they can easily reduce it with one of the scripts but upscaling doesn't work well.
One of the clearest sources of information I know on Iray memory consumption is the promo images for this product: https://www.daz3d.com/resource-saver-shaders-collection-for-iray
According to that, images are not shared if the same texture is applied in multiple places. So there would (potentially) be a benefit in making a smaller version for the smaller object. Though it's only worth the trouble if it pushes the render across the boudary between GPU and CPU renders.
Sorry, I meant a copy of the texture and resize it.
Ok - that DOES change things, thanks. I'll have to rethink my 'brilliant' plan
Gotcha - I was under the impression that the same texture would be called from memory, but based on Chris's post, it seems iray loads the map twice into memory. (odd that the full scene I'm rendering isn't groaning under the strain in this case then). So including a smaller map for the other object makes sense now.
Thanks all :)
A lot depends on how much VRAM you have, how many textures you have, what size they are, how high the subD levels are on things and what your texture compression settings are.
Also, Daz Studio 4.11 has a newer version of Iray in it then what is in DS 4.10. The new version in 4.11 handles texture resources MUCH better.
^Good to know, thanks all :)