Home Technical Talk

Opinions on using rectangular UVs for games

OblongUV
node
Offline / Send Message
OblongUV node
I'm making hard-surface models in blender I'll be using for a game made with Godot. I often make models with blender's mirror modifier, which automatically stacks your UVs. That looks great until I've finished the normal bake and want to texture edgewear, which does not look good with symmetry.  To make this simple for these kinds of models, I was thinking of doing the UVs before I apply the modifier, and after it has been applied the other half of the UVs can be moved exactly one tile up on the V axis, making a rectangular UV for textures like 1024x2048 and so on. 

Would this be a good way to approach it? Alternatively I was also considering putting the edgewear on a second UV that's 1:1 but using a lower resolution texture, with the normal being higher res. But I think this might be less convenient.

Should also note that I'm a solo dev making a PC game, I don't mind sacrificing some performance for a faster and less destructive workflow.

Replies

  • Eric Chadwick
    Rectangular is totally fine.

    IIRC there are some specific compressed formats that only support square pow2 sizes, but that's a very tiny percentage. 

    Using lower-res supporting textures is a good idea. Often the RMA (rough/metal/ambient-occlusion) texture can be lower-resolution than the diffuse or normal. Masks are similar.
  • OblongUV
    Offline / Send Message
    OblongUV node
    Rectangular is totally fine.

    IIRC there are some specific compressed formats that only support square pow2 sizes, but that's a very tiny percentage. 

    Using lower-res supporting textures is a good idea. Often the RMA (rough/metal/ambient-occlusion) texture can be lower-resolution than the diffuse or normal. Masks are similar.
    I actually can't compress most of the textures much anyway. I'm doing a sprite style so the colors have to be clean. Every texture uses nearest-neighbor rather than linear interpolation. There are no "soft" pixels in the game, even from the real-time lights. Ordinarily I might have tried mixing resolutions but it may not work in this case, gonna have to experiment some more as I'm still refining the look.
  • Fabi_G
    Offline / Send Message
    Fabi_G high dynamic range
    Hi! UVs can be offset in Blenders mirror modifier too, if you don't want to apply it. Depending on what specific assets are you making a combination with tiling trims could be also a solution.
  • OblongUV
    Offline / Send Message
    OblongUV node
    Fabi_G said:
    Hi! UVs can be offset in Blenders mirror modifier too, if you don't want to apply it. Depending on what specific assets are you making a combination with tiling trims could be also a solution.
    Hello! Didn't know that, thanks a lot.
  • poopipe
    Offline / Send Message
    poopipe grand marshal polycounter
    There are a couple of gotchas when working with rectangular maps. 

    UV interpolation can be a bit of an issue in some circumstances. It's not something you'd necessarily notice unless you're trying to draw smooth lines in your textures (eg. race car livery).
    You won't see the issue until it's in engine since your DCC works at much higher precision than most engines.
    Using high-precision UVs in Unreal mitigates it somewhat but does significantly increase the memory footprint of the mesh (not sure if Godot has an equivalent) - you can also mitigate it by trying to keep your UVs  running along the cardinal axes 

    in addition...
    Texel density is much harder to calculate (you need orientation information for the UVs)
    Anything in your shaders that involves UV manipulation (Tiling rates for detail textures/noise etc.) is more complex to set up
    Substance designer/painter can get a bit fiddly with non-square textures - it's easy enough to work around though


    If you're working largely with bespoke textures and simple materials you shouldn't encounter any issues
  • OblongUV
    Offline / Send Message
    OblongUV node
    poopipe said:
    There are a couple of gotchas when working with rectangular maps. 

    UV interpolation can be a bit of an issue in some circumstances. It's not something you'd necessarily notice unless you're trying to draw smooth lines in your textures (eg. race car livery).
    You won't see the issue until it's in engine since your DCC works at much higher precision than most engines.
    Using high-precision UVs in Unreal mitigates it somewhat but does significantly increase the memory footprint of the mesh (not sure if Godot has an equivalent) - you can also mitigate it by trying to keep your UVs  running along the cardinal axes 

    in addition...
    Texel density is much harder to calculate (you need orientation information for the UVs)
    Anything in your shaders that involves UV manipulation (Tiling rates for detail textures/noise etc.) is more complex to set up
    Substance designer/painter can get a bit fiddly with non-square textures - it's easy enough to work around though


    If you're working largely with bespoke textures and simple materials you shouldn't encounter any issues
    Hey thanks for the insights. I noticed the complications with texel density, but think I can still pipeline that with a little bit of work. I really do want to keep the textures square because it's more KISS and probably less unexpected problems down the line, but I have no idea how to approach it any other way without applying the modifiers which can be a bit of a headache for me on these types of models. I have multiple separate objects that will be on the same UV layout, each with their own mirror modifier. I do the texturing in blender. Think I can sort this out with the UV offset like fabi mentioned.
Sign In or Register to comment.