Render times dependent on uv/pixel density at all?

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

  • kenshaw011267kenshaw011267 Posts: 3,805

    It could but so a neglible amount I'd worry about other things first.

  • Silent WinterSilent Winter Posts: 3,876

    It could but so a neglible amount I'd worry about other things first.

    Groovy, cheers - that simplifies things :)

  • chris-2599934chris-2599934 Posts: 1,904

    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

  • Silent WinterSilent Winter Posts: 3,876

    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 ;) )

  • kenshaw011267kenshaw011267 Posts: 3,805

    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?

  • Silent WinterSilent Winter Posts: 3,876

    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)

  • MattymanxMattymanx Posts: 6,996
    edited June 2019

    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.

    Post edited by Mattymanx on
  • Silent WinterSilent Winter Posts: 3,876
    Mattymanx said:

    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 :)

  • Syrus_DanteSyrus_Dante Posts: 983

    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.

     

  • Silent WinterSilent Winter Posts: 3,876
    edited June 2019

    ^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.

    Post edited by Silent Winter on
  • kenshaw011267kenshaw011267 Posts: 3,805

    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)

    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.

  • Silent WinterSilent Winter Posts: 3,876

    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)

    My point was that in most cases a 4k texture is indistinguishable from a 2k one. Unlesss 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.

     

  • chris-2599934chris-2599934 Posts: 1,904

    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 ;) )

    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.

     

  • MattymanxMattymanx Posts: 6,996
    Mattymanx said:

    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 :)

    Sorry, I meant a copy of the texture and resize it.

  • Silent WinterSilent Winter Posts: 3,876

    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 ;) )

    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.

    Ok - that DOES change things, thanks.  I'll have to rethink my 'brilliant' plan

     

    Mattymanx said:
    Mattymanx said:

    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 :)

    Sorry, I meant a copy of the texture and resize it.

    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 :)

  • kenshaw011267kenshaw011267 Posts: 3,805

    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 ;) )

    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.

    Ok - that DOES change things, thanks.  I'll have to rethink my 'brilliant' plan

     

    Mattymanx said:
    Mattymanx said:

    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 :)

    Sorry, I meant a copy of the texture and resize it.

    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. 

  • MattymanxMattymanx Posts: 6,996

    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.

  • Silent WinterSilent Winter Posts: 3,876

    ^Good to know, thanks all :)

Sign In or Register to comment.