VRAM/RAM Usage, Mip-Mapping and Texture Compression Questions
I am in the process of rendering a very detailed Earth model in real-time for a simulation. I am now trying to budget my texture memory usage at any one time due to the occasional spikes I am getting in my frame-rate as additional textures are loaded in. I have quite a lot of assets that make up the Earth with various properties, listed here:
96x Individual Mesh Pieces, arranged together in one Composited Blueprint. 1x Surface Shader with 351 instructions in the pixel shader. 96x 4K Albedo Colours Maps, with an Alpha Mask texture for Water/Land Masking. 24x 4K Cloud Maps (Grayscale) 24x 4K Cloud Normal Maps 24x 4K Night-Lights Albedo Maps 1X Master Material -> 1x Master Instance > 96 Material Instances (1 for each mesh piece, only swapped out textures).
I also have some small detail normal/detail textures, and currently no Landmass Normals. Eventually however I would like to generate either 96 4K Normal maps, or 24 4K Normals Maps for the land masses (depending on memory budget).
The first issue I am experiencing is extremely high (in excess of 7GB) RAM Usage from Unreal Engine with the level loaded, but only 300-700mb of VRAM usage. My work GPU has 3GB VRAM and my Home GPU has 4GB, why am I only using approx 6-11% of that RAM even with all of these textures loaded in in the level?
Secondly, I have currently forced all of my textures to use No Mip-Maps but ensuring that the 'Mip-Gen Settings' texture property is set to 'No MipMaps'. However, I am getting some aliasing when I move far away. Unfortunately with it enabled, due to the size of the meshes and their relative position to their pivot point, the textures are rendering at much lower quality than I would like.
It also seems that having Mip Maps on the textures is causing much longer spikes as they load in. As my project will only have this high-resolution Earth in it, a maximum of six identical satellite actors and a moon & skybox, would it make sense for me to have Mip-Maps off, or at least limit the number of Mip's generated to reduce memory bandwidth usage? Can I offset the distance at which the first Mip is streamed in in the mesh itself, as this needs to be around 1,500 - 2,000 Unreal Units.
Finally, I would also like to switch to using Vector Displacement Map for the 96 Albedo colour maps, as the compression is much better than the regular TC_Default compression. I expect however this comes with a cost, and I'm not sure if VDM compression supports alpha channels? What exactly is the cost difference in using TC_VectorDisplacementMap as opposed to TC_Default.
Follow this question
Once you sign in you will be able to subscribe for any updates here