In Unreal's Material Layer system, can I create a Material Layer that adjusts the saturation of the layers below?

Context:

I have an Arch Viz scene in UE 5.3, where I’m utilizing Cesium for Unreal to generate the landscapes around my custom-built environment. I’ve followed through this Tutorial on Cesium’s website to add material effects on top of the Google-generated landscape. All of that makes sense and works great when I want to apply overlay/highlight effects.

My issue is that the overall color of the Google landscape is a bit washed out, and I want to increase its saturation a bit. Only there isn’t a way (from what I can tell) to target its diffuse textures because there don’t seem to be any I can find withing the content browser. I have no idea how Cesium brings in and applies Google’s textures for the vast landscapes it generates. I’m guessing it’s some kind of procedural method.


So, to my question in depth:

Within a material layer, is it possible to create one that I could use to adjust the saturation to those below without sourcing a texture or anything? If so, what nodes could I utilize for this? Or do you have any ideas as to how I could approach this?

One thought I had was to source a 3 constant vector (color) somehow, but I’m not sure how to complete that connection to affect saturation and not just brighten things up.

I’m still learning Unreal’s material blueprint system, and it’s a vast set of nodes, so I’m drawing a blank here. Haha. All the tutorials I’ve found so far utilize texture inputs, which doesn’t help me much.

Thanks!

Responding to the title: no.

To change saturation you have to act on the layers themselves.
No other way to affect them since whatver you put on top is - well - on top…

Re the rest, probably forget cesium is a thing - and switch off the internet when the game is running, see what happens.

The material though, should have an input parameter as a texture object - but it could also be hard coded (and probably is, I wouldn’t bother making it accessible via unreal material editor if I was the one creating cesium) within the USF.
As such, you’d need to learn some HLSL and mess with the .usf that the terrain uses to bump up the saturation of the map.

Only other idea there is to hack the image at the router level
If you filter all images that pass thorugh your router from a certain address and mess with them from the router itself like any beginning hacker would do…
For instance by flipping them vertically so everyone in your house can’t use the interwebs for memes…
You can get the saturation you want, record a take, change the router back, and - assuming all you need is the take, you are done…

Mind you, hacking the router is easier than learning HLSL and editing a .usf :wink:
(Or you wouldn’t have script kiddos).

Thanks so much for you insight and feed back. I was worried that would be the case. Oh well, now I know.

Thanks so much!

That answer is absolutely incorrect.

You can set up a layer to desaturate any layers below it in the Blend Asset.

This is a basic setup for a Blend Asset that will use the Red channel of the top layer’s base color (you don’t have to use the Base Color, you can use any attribute of the top layer’s material you want in the Blend Asset. I just used base color because I threw this together in a couple minutes) to desaturate the base color of the incoming layer stack:

And this is the Material Layer that I’m using for the top layer:


(the saturate node is to cheaply clamp all the vector’s components between 0 and 1)

Here it is in action:

This is a super simple setup that just does saturation, but you can easily extend it to make essentially an ‘Adjustment Layer’ that you can drop anywhere in your material layer stack to tweak values of the lower layers.

[edit]Re-reading your original post I see you’re trying to increase the saturation, not desaturate. That graph is a little more complicated because you have to do RGBtoHSV conversion and back. Here’s what that looks like in the Blend Asset: