Material quality LOD?

Is it possible to turn off some features of a material without using static mesh LODs? For example, I want to turn off SImpleGrassWind when camera is far from the material.
Maybe something with use of camera distance inside material? But how to set it up?

There is also “Quality Switch”, but i’m afraid that it can’t be used for dynamic switching depending on camera distance?

I’ve managed to achieve this by this setting ("ïf"goes to World Position Offset)

It works, but is there a better way? Is it good for performance to constantly check camera & object location?

Have you noticed performance gains with this approach? I can’t tell if the “If” node actually saves on performance, or if you still eat the cost for the instruction count?

Material LODs would be a great feature for Unreal, if it doesn’t already exist - would be really helpful for reducing fill.

Unfortunately I didn’t tested the performance with more complex materials, but as far as I remember, this didn’t make noticeable difference - but maybe because SimpleGrassWind is quite cheap, idk. I’ve reworked my system a bit and now I don’t need this material LOD switching, so I don’t use it anymore. But material quality LOD would be a really useful feature to have.

Did you guys find a way to solve this? I tried this myself but the IF condition doesn’t work the same way as a Switch Param, so both calculations are loaded regardless.
I’m trying to do something similar but stripping calculations based on the distance.

Looks like this is not possible until material branching will work in UE. More info on the matter:

https://forums.unrealengine.com/development-discussion/rendering/88635-dynamic-flow-control-in-materials

The closest workaround that I have in mind is to create different material versions and assign them to mesh LODs in mesh editor, but that of course will work only with meshes that have LODs.

That’s probably not possible for now, I’ve replied in the answer with more info.

Hmm, I see, that’s not the ideal solution, as I’ll be having an extra material per object, pretty much doubling my entire draw calls for the entire project.
Even without the IF solution, there’s no way to output a node the same way you do with Material Attributes or Bent Normals that would allow you to link different stages of your material to LODs? That’s kind of a very rational and almost must when working on budgeted projects.

As far as I understand, all connected nodes in materials are always calculated, no matter what (due to lack of dynamic branching), unfortunately.