Texuring best practice

I was wondering what the best practice is for texturing for best performance. I’m not aiming for console or mobile, I just don’t want to require a 1080 to play :slight_smile:

Currently I have 4K materials that I just apply to the model. (I know I can optimize some by reducing normal size, removing metal/roughness etc…)
Note: These are currently JPEG’s to reduce size, should I have them as PNG’s anyway?

Should I change the texture size based on distance or would it still load the 4K originals, or should I create textures outside of UE that applies to the entire model.
I only have 1 LOD for most buildings as they are all fairly low tris count.

Is there a better way to do this, or should I just stick to how I have it currently?

I also noted while I was looking around that my landscape is at 133 million tris, is this normal?
Edit: It’s a single 8k x 8k map.

Sorry for the rambling, and thanks in advance.
Tom…

Hello Tom!

Basic rule of thumb is 1024x1024 per 1x1 meter.
Though, if you want 512/512 or 2048/2048 thats also possible ofcourse.
Never use jpeg, as it has horrible and ugly compression, which again gets compressed after you import it in ue4.
Use TGA, PNG, PSD (I suggest png), which have almost to no compression artifacts.
They get compressed internally anyways, and you have some control over what kind of compression in the texture menu you get when double clicking on a texture inside the content browser.

Normally when you import a texture, it will auto generate mipmaps, which are basically the LOD’s for textures.
So depending on the distance, a smaller version of the texture will automatically be created/loaded.
There is in most cases no benefit of manually a smaller version of the texture besides a few odd situations perhaps.

Dont worry too much about tri-counts, previous, current, and future gpu’s are so good at triangle-crunching that in most cases you dont need to sweat it if you want a few more polygons for a smoother edge.
Draw-calls, translucency, simulations, etc, is where its at.
So…

Try to use only one material per mesh, as each additional material adds a drawcall.

Try to keep alpha-channels in textures at a minimum as it doubles the filesize, it might be wiser to combine three masks/alpha channels/gray textures into separate RGB channels to significantly reduce file-sizes.

Try to find ways to reuse the same texture/material/mesh in multiple situations for optimization’s sake.
Also think: modular, modular, modular!

Thanks for the answer. That’s what I was afraid of; redoing all my textures, better to do it now than when I’d finished though :stuck_out_tongue:

Loads of great info in here, learning lots everyday.

On this image for example, it would be better for me to go and paint this externally, like substance painter? Then it would only call once and not 8 times like it does now?

Thats what I would do.
Unless Id go more modular, and make each floor a separate mesh (each with its own seperate material) that way if I have 3 floors, 3 1st floors, and 3 roof meshes… I could mix and match :slight_smile:

That’s great, that’s my eventual plan, I do have that for some of my buildings already :slight_smile:

Thanks for the replies, you helped a lot. :slight_smile: