- Home /
Texture-making workflow for large worlds and ways to optimise texture-loading (HDRP)
Hey, I want to make 1:1 world of my hometown (huge project) with very high quality textures or make it at least look as realistic as possible. I make my 3d asstes using Maya and then the textures using Substance Painter.
This is the workflow I use: Maya(3d asset and UV maps) > Substance Painter (texture-making) > load them up in Unity HDRP and let it do its own thing.
This is obviously not great for optimisations but given this workflow what should I do to end up wit ha very nice looking world with minimal damage in GPU performance? Should I load the map into parts? If so any advice? Should the textures be exported in a smaller quality or is there a way to scale them up when I get closer?
Answer by samsarfau9 · May 11, 2020 at 02:55 PM
Hey, here are some tips you could use:
1 "Should I load the map into parts?" That's a good start - normally what you'd do is segment your map in as many parts as you want. On Start, you want to load the entire map and then "turn off" the parts that are not visible to the user. As the user rotates, you can turn off the parts that are no longer seen, and turn on the parts that come into view (enable gameobject works). You still want to load the entire map on Start to avoid instantiating and destroying objects at runtime.
2 " Should the textures be exported in a smaller quality or is there a way to scale them up when I get closer?" You could look into something called Level of detail. This means that the geometry of your 3D objects is simplified when the user is far, and you gain more detail as the user gets closer. I think this works on textures as well. Take a look here: https://docs.unity3d.com/Manual/LevelOfDetail.html
Lastly, I'd recommend you use the Memory profiler. It lets you see which textures are having the biggest impact on memory, and you can downscale the ones that are not essential (i.e. too far from the user or the 3D object it affects is very small).
Hope it helps!
Wow holy crap this is beyond helpful thanks! Ill give this a go. One last thing, should I take any care with texture compression? As I am going to make a lot of them, is there something I should do to not make the game too big in size?
Bring in your textures into Unity on full res (I guess you're going for 4k), but the rest depends on your target platform.
If you're ai$$anonymous$$g for PC, set the $$anonymous$$ax Size parameter of the import settings to 4k, and work your way down. If you're ai$$anonymous$$g for mobile, I'd recommend you start at 2k.
This is where the memory profiler will come in handy though. In general you want your 'hero' objects to be as detailed as possible, and you can lower the resolution of the textures that belong to secondary objects in your scene.
Lastly, make sure Read/Write Enabled (under advanced in your import settings) is OFF. That tends to make a huge impact on performance and you probably won't need it since you're not modifying the textures at runtime.
And I'm assu$$anonymous$$g when you say "lower the secondary objects" I would be using Level of Detail like you said before
Your answer
Follow this Question
Related Questions
Can I apply textures to specific vertices on a plane? 1 Answer
Large object texturing. 0 Answers
Importing a city model and Texture Mapping Problem 1 Answer
Blender texture problem! 3 Answers
Char To Texture 1 Answer