Texture Size LODs

03-18-2018, 10:20 AM

Hello to Everyone, I'd like to make a quick question; I'm a performance fanatic and for my game per each meshes I'm creating 4 different material per texture size, one for 2k, one for 1k one for 512 and one for 256. Basically Each meshes has 4 different LODs, each LODs has a referenced material...
Now my question is, are the Texture size automatically scalded by the engine and am I losing a lot of time?

Comment

You do not have to resize your textures at all. They can all be 4k or even 8k resolution when you import them into the engine. Double click on the texture and look under the second section Level of Detail. Just change the lod bias until it re-samples the texture to the resolution you want. It will permanently change the texture to the specified size when cooking/packaging your project, so it will also save project size and amount to the same thing as manually resizing the image.

Comment

You do not have to resize your textures at all. They can all be 4k or even 8k resolution when you import them into the engine. Double click on the texture and look under the second section Level of Detail. Just change the lod bias until it re-samples the texture to the resolution you want. It will permanently change the texture to the specified size when cooking/packaging your project, so it will also save project size and amount to the same thing as manually resizing the image.

Thank you for your Answer, sorry if i reply just now but i had a full sick past week...
Returning to our discussion, I see the bias in the texture editor, but my question is more applicable to the LOD material of the mesh. What actually I'm doing is to have identical material per mesh, the only thing is changing from material to material is the size of the texture, For the LOD 0 i apply a 2k textured material, and for LOD 3 I apply a 256*256 material. My question is to understand if this procedure is correct or if the texture automatically scale the size with the distance of the mesh.
I know that differend LOD material have to be apply in order to simplify the material calculation for the farest distance, i just want to know if the application of a different size texture material is a good practice or totally useless.

Comment

Thank you for your Answer, sorry if i reply just now but i had a full sick past week...
Returning to our discussion, I see the bias in the texture editor, but my question is more applicable to the LOD material of the mesh. What actually I'm doing is to have identical material per mesh, the only thing is changing from material to material is the size of the texture, For the LOD 0 i apply a 2k textured material, and for LOD 3 I apply a 256*256 material. My question is to understand if this procedure is correct or if the texture automatically scale the size with the distance of the mesh.
I know that differend LOD material have to be apply in order to simplify the material calculation for the farest distance, i just want to know if the application of a different size texture material is a good practice or totally useless.

This is not optimal way at all. This would create dublicate materials and dublicate textures. UE4 automatically make mipmaps for your textures. If you import 1024 texture to engine it's automatically creates 512,256,128,64,32,16,8,4,2,1 size textures from the original texture data. These are stored as mipmaps for original texture and it cost +33% more texture memory. When texture is sampled at material, pixel shader calculates what size mipmap it should sample. This automatic mipmapping prevents aliasing and saves a lot of texture memory bandwith. There is also texture streaming feature that only loads mipmap levels that are needed for object. If object is really far a way engine does not need to load the full size texture but small version of it. Let say 64x64 texture.

Comment

This is not optimal way at all. This would create dublicate materials and dublicate textures. UE4 automatically make mipmaps for your textures. If you import 1024 texture to engine it's automatically creates 512,256,128,64,32,16,8,4,2,1 size textures from the original texture data. These are stored as mipmaps for original texture and it cost +33% more texture memory. When texture is sampled at material, pixel shader calculates what size mipmap it should sample. This automatic mipmapping prevents aliasing and saves a lot of texture memory bandwith. There is also texture streaming feature that only loads mipmap levels that are needed for object. If object is really far a way engine does not need to load the full size texture but small version of it. Let say 64x64 texture.

I really thank you for your explanation...
If i understood well, i can just import my 2k or 1k texture i create one material, and UE4 engine automatically resize texture when an object is far from the camera?

Comment

I really thank you for your explanation...
If i understood well, i can just import my 2k or 1k texture i create one material, and UE4 engine automatically resize texture when an object is far from the camera?