So Blurred glass material is impossible in Unreal Engine 4?

Your examples are very cool.

One thing I’d like to point out is that relying on the scene capture actor to remove the halo artifact is essentially turning this into multipass rendering which will be very slow in game usage. So it may be a good idea to give a strong disclaimer on any version of this that uses a scene capture.


That’s cool. I didn’t know that.
My material is set up so that you could increase/decrease opacity of a glass (from fully transparent to something more translucent e.g. light passes but you don’t really see objects) while in game
so you could use it to do it. But I don’t think you would need to use blur to reproduce this effect as, when the screen has “white” on, you see nothing behind.


Thanks a lot!

That’s right.

Wow Ed, those tests are amazing! I’ve been attempting to create a blurred glass as well through post process materials but haven’t come anywhere near the quality of what you have come up with.

If you ever get to creating those tutorials I and many others would be very grateful!

@Ultrabuffallo: thanks!

Another example:

Refractive panel with a mesh, not only a plane with a normal map. I think it looks better:

Other effect: translucent white plastic. Second time I try to fake it. This time, I think it’s better.

Looks pretty good, and I agree, it does look better.

Other effect: refraction with colour.
Seems trivial as you could think that you just need to plug a color node in your refractive material but it doesn’t work: color will be refracted too and won’t give the effect of a uniformly tinted glass.
So, here again, postprocessing seems to be an interesting way.

If you plan to, you should really sell this shader/blueprint on the market

(en tout cas tu aurais un client déja :stuck_out_tongue: )

Yes, i think about it but for the moment, it works only if you slightly modify unreal source. So it means downloading from github and compiling. Not very handy. I think I’ll wait for Epic source code modifications (basically : making scenecapturecomponent class extendable) to release something more user friendly.
(Et merci pour tes encouragements ;))

Still experimenting…
Here is a W.I.P.
Trying to make glasses blending their colours, specular highlights and refractions, which wasn’t the case in the previous videos.

This looks awesome , i wonder does it work with SSS.
i tried to create those graphs , and it didnt work, i hope some one share shaders here , i mean just copy paste Graphs text.

It doesn’t work with SSS.
Basically, it’s just about combining 2 or 3 renders of the same scene, using camera player and scenecapture components.

I guess that your next challenge will be a nice mirror shader :stuck_out_tongue:

allez release ce materiaux sur le store que j’achette ça desuite :o

Did anyone see this? Vineyard Challlenge Final Submission - YouTube

At around 0:48 they have a steamed up piece of glass with what appears to be a mask dictating how blurred the background is. Does anyone know how this was accomplished?

@meian : A nice mirror shader ? Yes, that’s something i’m working on.
@wilkes : Interesting. Id like to know it too !

How do you access these buffers?

Here is mu setup for blurred glass material but it does not work so far. Could you check if I am missing something?


Custom Material Expression:
float3 CurColor;
float2 BaseUV = MaterialFloat2(ScreenAlignedPosition(Parameters.ScreenPosition).xy);
float2 NewUV = BaseUV;
float StepSize = Distance / (int) DistanceSteps;
float CurDistance;
float2 CurOffset;
float TwoPi = 6.283185;
float Substep;
float2 ScenePixels=View.RenderTargetSize*BaseUV;
float2 RandomSamp = ((uint)(ScenePixels.x) + 2 * (uint)(ScenePixels.y)) % 5;

int i;
if (DistanceSteps<1)
return DecodeSceneColorForMaterialNode(NewUV);
while ( i < (int) DistanceSteps)

CurDistance += StepSize;
for (int j = 0; j < (int) RadialSteps; j++)
CurOffset.x = cos(TwoPi*((RandomSamp+Substep) / RadialSteps));
CurOffset.y = sin(TwoPi*((RandomSamp+Substep) / RadialSteps));
CurOffset *=DistanceMask;
NewUV.x = BaseUV.x + (CurOffset.x * (CurDistance));
NewUV.y = BaseUV.y + (CurOffset.y * (CurDistance));
CurColor += DecodeSceneColorForMaterialNode(NewUV);
CurColor = CurColor / ((int)DistanceSteps*(int)RadialSteps);
return CurColor;

I’m sorry but I don’t use shader code with custom node so I can’t help you for this.

For those who can’t figure out how to actually use this material, remember to set parameters Distance to around 0.01 and distance and radial steps to around 20

Is that a scene? I really need some frosted glass. I was reading through this thread but can’t seem to get it to work or get results like this. How’d you get it?