Mipmaps and LODs not switching in 4.9

0
hello:) i haven’t been using UE for very long, a few months at the most. i have recently come across a couple of issues since upgrading a project to 4.9.

I have a scene with 2 meshes, both have 3 LODs. when i open the Statistics panel, no matter what distance i view my scene, the memory used doesn’t change hardly at all and neither do the ‘current dimensions’ for most of my textures. I have compared the mipmap settings (level of detail, compression, texture) of one of the textures that seems to be working vs one that isn’t, and the settings are the same. then if i zoom in and out a bit in my scene, the textures that were working (could see the mipmaps switching in statistics panel) become static at max resolution like the rest:s

i have also noticed that my LOD’s don’t appear to be switching in the viewport any more, but when i look at them in the mesh editor, i can see the LODs switching in there

i have attached a screenie of my scene at a distance with the statistic panel open and refreshed. and one of the texture settings.

any help or guidance would be greatly appreciated:) thanks,

Hey 3dsam,

You seem to be on the right track to troubleshooting your texture streaming, and you have a basic understanding of how Mips and LODs work together. In case you have not taken a look at it already, we have some helpful documentation to help debug your Texture Streaming issues.

Texture Streaming

Have you made sure to have the ‘Texture Streaming’ option checked within your ‘Project Settings’ menu? This can be found within the ‘Rendering’ section.

Let me know what your results are after taking a read over the suggested documentation, and confirming the ‘Texture Streaming’ setting is enabled.

Thanks,

thanks Andrew,
I’ll give that a read and will let you know

Texture streaming was already enabled so I’m going through the texture streaming documentation now and trying the things it suggests,
once i have done this (assuming i am successful) will my LOD’s start working again or is this a different issue?

If after troubleshooting the texture streaming issue you are still experiencing the LOD problems, let me know and we can try some other suggestions.

Cheers,

Thanks again for your help:)
sorry to bother you again, but I think my problem with my textures is that they are all ‘Forced Streams’. in the docs it recommends to change it from ‘Forced’ or adjust their timers. but it doesn’t say how to do either.
i have looked everywhere but can’t find a setting for changing the Stream type or the Fixed Stream Timers
could you point me in the right direction please?

thanks again,

Hey 3dsam,

Not a bother to help a user who is politely asking for assistance. :slight_smile:

So the places to check for Forced Streaming and Never Streaming options on your textures settings. Use the image below as a reference where to find these options.

Texture Settings

The streaming system uses several different types of heuristics when it determines how many mip-levels a textures wants to have in memory. Normally a texture uses only one heuristic but in some cases it can use multiple, such as when the same texture is used on a Static Mesh as well as a Skeletal Mesh. In that case, it will pick the highest result (the highest number of wanted mip-levels) among the heuristics used.

The number of wanted mip-levels is clamed to a certain valid range. This range is derived from a number of different factors, such as texture group LOD settings, cinematic mip-levels, packed mip-tails on Xbox, global min and max settings (GMinTextureResidentMipCount and GMaxTextureMipCount) and whether the texture is forced to be fully loaded.

Some types of textures are not handled by any of the normal heuristics because they are not actively tracked by the streaming system. This applies in particular to effect textures. These textures are handled by a fallback heuristic that basically results in all-or-nothing, based on whether it has been rendered within the last 90 seconds. Since the streaming system does not track these textures, it can cause a problem if such a texture is also used by some other geometry. The streaming system will only know about the other geometry and will stream the texture solely based on that heuristic. The number of wanted mip-levels will be low when that geometry is far away, even if an effect that uses the same texture is close to the camera. Avoid sharing textures in these cases.

Cheers,

thanks for the response but unfortunately the problem still persists.
no matter what settings i change, the amount of memory being used doesn’t not change at any distance (extreme close up or so distant it can barely be seen on screen).
surely if everything was functioning properly then when i zoom out the mipmaps should kick in and the amount of memory being used by the textures should decrease? or am i wrong?

I still cant cannot find the settings i am looking for, how to turn the texture stream from static to dynamic, or the ‘timers’ referred to in the documenation “Set the timer to a comfortably large number so you are sure to cover the intended period of time, but it is still a good idea to manually disable it as soon as you know you will not need it anymore.

thanks

The Stream type cannot be changed as this is chosen by the engine based on the object the texture is applied.

The Forced Stream Type timer can be modified by using blueprints and calling the Force Mip Streaming Node, and setting the time by function name.

60725-forcedstreaming.png

Your texture streaming is not as simple as zooming in/out, and having the streaming stats change accordingly. The heuristics that determine these factors are all based on object type, texture group, and various settings applied to each texture sample.

It is a bit hard to understand at first so I suggest reading over the Texture Streaming documentation a handful of times. I had to do this myself to understand and comprehend everything it was saying.

If you are still at a crossroads please let me know.

Thank you,