When to use UV textures vs Unreal shaders

I think it’s fairly standard to unwrap/texture objects such as bottles, lamps, etc, inside of Blender/Substance painter (At like 1024x1024, pretty small) and then import them into Unreal. However, this doesn’t scale well with the size of the object. For instance if you wanted to do the outside of a building it would require massive textures in order to not look pixelated which eats up VRAM.

I therefore use either vertex painting or shaders which combine multiple textures with noise to get a tileable material that I place onto the walls.
e.g. with the inside and outside of a wall for a building



What I am less sure on is when it is right to transition from these shaders to texturing. I have a small room below which is part of a dormitory.

Should I be unwrapping/texturing the innner walls or carry on with unreal shaders? I feel like unwrapping inside of substance painter, would let me add way more detail but might kill performace? For the floor would it make sense to give each room their own small floor which I texture or just use more unreal shaders?

Kinda added onto this, is this something I can address by using something like Substance designer and creating bespoke tileable materials only for these rooms? I would love to be able to add grit around the windows, mold in the corner of the rooms, etc, but I have no idea which is the correct method for performance.

EDIT: Also if anyone knows how intensive these shaders are in comparision to 4k/8k textures that would be great, I found answers online but they were pretty light on the specifics.

The scale of the UVs when you unwrap doesn’t really matter, I don’t think. That’s because you can always rescale by multiplying the UVs in Unreal.

If you want to be able to cover more area with a material, then you can use larger textures. Notice, this is not related to unwrapping.

On top of that, you can use noise and multiple textures to cover larger areas ( as you have realized ).

Textures use memory, whereas more techniques in the shader usually equate to more CPU.

Take a look at the materials in the engine starter content if you want to see clever ways of covering a large area without impacting performance.

I understand what you mean, but by uv unwrapping/texturing I mean unwrapping inside of blender and then importing it into substance painter. From there I create a complete texture for the object using layers which take into account curviture, AO, etc. This texture is specific to this one object and it’s UV map, and therefore cannot be transferred.

I want to know when it’s usual to transition from this type of (traditional?) texturing to the shader based system you are talking about.

Take a look at the materials in the engine starter content if you want to see clever ways of covering a large area without impacting performance.

Coming from a Blender render perspective I was slightly underwhelmed by these. While they looked great, they didn’t have the same uniqueness and customisability versus creating custom textures for each object using substance painter. I would much rather texture each room by hand, but this would lead to lots of high resolution textures being stored in VRAM.

Would it be bad practice to do more complex operations inside the shaders, e.g. edge detection, AO, etc? Various threads say its not ideal, but I am kinda stumped how to produce more detailed rooms without them.

For example, say I just want mold in the corner of the rooms. This would be easy inside substance painter, but I am unsure the best route inside unreal.

1 Like

Yes, not as detailed as custom textures with specific things painted into them :slight_smile:

That’s a fine way to go as long as there is re-use. If every mesh has its own texture then you will be using a lot of memory.

I’d be tempted to vertex paint in the engine, or use more crafty shaders. At least then, you’re automatically getting re-use, and saving time ( once you’ve made the shaders ).

As long as you stay under the ‘bad’ part of the shader complexity view, you should be ok.

When to make the transition from manual to shaders, probably depends on your application. Is it game / archviz / etc…?

Yes, not as detailed as custom textures with specific things painted into them :slight_smile:

:pensive:

I’d be tempted to vertex paint in the engine, or use more crafty shaders. At least then, you’re automatically getting re-use, and saving time ( once you’ve made the shaders ).
As long as you stay under the ‘bad’ part of the shader complexity view, you should be ok.

Okay sweet, I am hoping for things like doorframes, window frames, etc, I can get away with using the same shaders then.

When to make the transition from manual to shaders, probably depends on your application. Is it game / archviz / etc…?

Game. I have done lots of rendering in Blender, and quite a few renders in Unreal 4. However, I realised there is a big difference between making textures for a game versus render. I can’t just slap 4k textures everywhere, but I am not too happy with the materials I have made currently. They’re missing details which makes the scene “believable” if that makes sense?

1 Like

2K is often enough, and then there’s 4K left as backup :slight_smile:

Know what you mean. But it is a skill, and develops over time. I certainly used to be terrible at it :sunglasses:

Yeah, after more testing I think you are right, doesn’t seem like there are too many other options. Thanks for the advice!

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.