Home Unreal Engine
The BRAWL² Tournament Challenge has been announced!

It starts May 12, and ends Oct 17. Let's see what you got!

https://polycount.com/discussion/237047/the-brawl²-tournament

Larger asset materials, what would you do?

Hey I've been working on a 1:1 scale remake of a series of factory units that used to exist in my area for a project and I just have a question about mid-sized assets and how to add more character to them.



This is one of the unfinished middle units, I've slapped on some temporary materials in the mean time but I have a question about the large door there.

I've used tileable 1k and 2k textures for everything so far. I've unwrapped the buildings and scaled the UV map larger than the UV space to automatically scale all my materials to the correct texel density across all assets. I'm mostly going with the technique used in from software games, since this is a game itself and aiming for standalone VR.

However I want to add more character and defining marks to this large wooden door. Do I go with a mask and combine two or more materials separated by a mask; for example: for the bottom quarter of the door I have a worn, more damaged version of the same texture and blend that using a mask. Then use decals to add more markings like signage and things?

Or, do I put this asset into substance painter and create a unique texture but it's going to be around 8k resolution to match the texel density of the meshes surrounding it?

This door is non interactable btw.


As you can see here most things look fine using the large UV method (they're all texel matched to my primary building so texels are identical across the board). But some assets could seriously benefit from a unique touch, rather than a tiling texture broken up with a noise mask and decals.

I should note that the painted wood texture on the large door in the first image is being tiled about 3.5 times per side of the door. The material itself is 2k resolution.

Replies

  • Eric Chadwick
    Since you're aiming for VR, know that this delivery target will impose a lot of restrictions on how you create your assets. If you aren't being extremely careful, you are bound to see major performance drops. Materials in particular will need to be extremely simple, because usually the draw calls are what cost you the most.

    Have you tested your scene in VR yet?
  • Benjammin
    Offline / Send Message
    Benjammin greentooth
    Abacabbb said:

    However I want to add more character and defining marks to this large wooden door. Do I go with a mask and combine two or more materials separated by a mask; for example: for the bottom quarter of the door I have a worn, more damaged version of the same texture and blend that using a mask. Then use decals to add more markings like signage and things?

    Or, do I put this asset into substance painter and create a unique texture but it's going to be around 8k resolution to match the texel density of the meshes surrounding it?

    Almost always the first option*, even outside VR. You might have a unique 4K texture for a special door, but 8K is too large for 99.9% of texture use cases. 

    *You don't combine materials per se, you layer textures together with masks, vertex painting, and/or secondary UV channels.
  • Abacabbb
    Since you're aiming for VR, know that this delivery target will impose a lot of restrictions on how you create your assets. If you aren't being extremely careful, you are bound to see major performance drops. Materials in particular will need to be extremely simple, because usually the draw calls are what cost you the most.

    Have you tested your scene in VR yet?
    Hey, yea I've tested the scene and it runs like a dream. It's quite a simple scene and repeatedly uses 48 material instances and around 10 decal material instances.

    The heaviest these scene becomes so far is ~190 draw calls. I could reduce this, but in the majority of cases from the perspective of a VR user, it tops out at around 150 draw calls, in a lot of cases however this drops to 109 draw calls. I think this is mostly due to that the material instances are all unique textures with half of them using a noise mask mixing for variation i.e using two of the same brick texture, but mixing a noise mask and offsetting the second brick texture to break up visual repetition.

    How would you say this is? Could be better? 


  • Abacabbb
    Benjammin said:
    Almost always the first option*, even outside VR. You might have a unique 4K texture for a special door, but 8K is too large for 99.9% of texture use cases. 

    *You don't combine materials per se, you layer textures together with masks, vertex painting, and/or secondary UV channels.
    I was thinking of going with this idea too but wasn't sure if it'd be too much. Thank you I'll give it a go :)
  • Eric Chadwick
    Good to hear! I would leverage vertex color masking, since you can pump a lot of vertices through a VR pipe so it's easy to get nice resolution there. Reusing textures at different tiling values is good for optimal VRAM, but you're probably fine adding more textures. What does your memory load look like?
  • Abacabbb
    Good to hear! I would leverage vertex color masking, since you can pump a lot of vertices through a VR pipe so it's easy to get nice resolution there. Reusing textures at different tiling values is good for optimal VRAM, but you're probably fine adding more textures. What does your memory load look like?


    This is from the stat menu, not sure how it varies based on a proper execution of the packaged version yet. What do you think? I've noticed the texture pool is capped at 800mb. I'm going to assume this means if my VRAM was a capacity of 1GB then this is good figure. I don't know if that's how it works though.
  • poopipe
    Offline / Send Message
    poopipe grand marshal polycounter
    the streaming pool is the maximum amount of texture data it'll stream in.  when you hit the limit you'll see that textures don't load in at full detail (ie. look blurry) for current console platforms you can expect to see that set at >3gb 

    you really do need to be confident of your target platform for VR - if this is for a Quest or other 'mobile' type device you may need to consider switching to the forward renderer which limits your options pretty aggressively but uses a lot less vram to draw a picture. if it's PC + Headset you have a lot more options

  • Abacabbb
    poopipe said:
    the streaming pool is the maximum amount of texture data it'll stream in.  when you hit the limit you'll see that textures don't load in at full detail (ie. look blurry) for current console platforms you can expect to see that set at >3gb 

    you really do need to be confident of your target platform for VR - if this is for a Quest or other 'mobile' type device you may need to consider switching to the forward renderer which limits your options pretty aggressively but uses a lot less vram to draw a picture. if it's PC + Headset you have a lot more options

    It's currently PCVR but mid-spec.

    I have another question with regards to texturing. Since it's VR, if I have some hero assets but they're quite large, the texture I create for it is being made with Painter. I set the resolution to 2K and the UV unwrap is contained within the UV tile space. I'm not using UDIMS.

    So in this specific example, I have a gate. It's made up of 3 main components which are each using 1 atlas material made in Painter. This means the UV's for each component are sharing the UV space, but packed tightly for maximum pixel retention.

    The texture ofcourse being 2k, is quite blurry close up. This is usually fine for most games, but first person shooters need a little higher fidelity or detail textures to blend in, but VR games especially need quite high resolution/ quality to match real life or atleast something like it.

    I'm having a hard time making the choice of either splitting the components into 3 unique materials to increase my UV space. It will still be a bit blurry though.

    Or do I use unreals material layer system for these, so I can tile my material to the desired texel density, blend in an Ambient Occlusion/ Curvature texture mask and use a tiling rusting material behind it, then blend in a world space mask for the bottom part to blend in a dirt material?

    This might look pretty good, but it will still use 3 unique materials, 2 extra textures and there's a lot more processing going on for specific shader calculations.

    I think my problem is, I know what I can do, I just don't know which is the better choice to go with. Or is unreals UDIM system using many textures better for performance?




    I did some tests with the Silo's too. They're each just using two 2k materials each, 1 for the body and 1 for the lid.
    As you can see they're quite pixelated obviously. I just wanted to see what it would look like before going down a procedural route because I'd like them to each have unique details of wear around the bottom, top and in some specific areas as you can see where I've painted.
  • Benjammin
    Offline / Send Message
    Benjammin greentooth
    Yeah, it comes down to tiling detail maps and material complexity to increase texel density. 
    You can get a lot of reuse out of detail normal and grunge textures and they can be fairly small and heavily tiled, so I wouldn't be too concerned with that. You could also consider using vertex color as masks if texture use is a problem. I don't work in VR, but I would imagine that you pay the cost you need to pay for your hero assets and heavily optimize background stuff. 

  • poopipe
    Offline / Send Message
    poopipe grand marshal polycounter
    The primary performance considerations with VR are...
    - you're drawing everything at least twice
    - you're drawing it at quite a high resolution (at least twice)
    - you can't afford to have an inconsistent framerate because it'll make the user vomit. 
    - any flickery/stuttery artefacts are a lot more obvious. 

    On something like a quest3 you're basically targeting 90hz at (slightly more than) 4k  rather than 60hz at 1440p - with the added fun of temporal effects (TAA, denoisers, possibly upscalers etc.) generally not being too comfortable for the user - meaning you need to do antialiasing the expensive way. 
Sign In or Register to comment.