[Tutorial request] Pool water shader

Hey, anyone can help with creating a material for pool water?



Is this achievable ? So for I know there is no possibility to have translucent material with specularity ( reflectance ) so if I would have to choose I would rather have the specularity and not being translucent.

if you look at the effects cave, they have 2 planes probably for reflection purposes.

That’s caustics and it is refracted light hitting the bottom of the pool, so that’s not something you can do with the current technology. However you can easily fake it with light functions. There is an example of that in Effects Cave demo as HorusHeretic mentioned.

JBaldwin teaches how to replicate caustics with light functions in that video.

That tutorial is awesome. Explained a lot.

Thank you all for help. I will try and come back with the result.


WebGL Water


Cool! Integrate it into the engine and make it working with no noticable frame rate drop in a real game environment and then you can say ORLY or anything you like to me. :slight_smile:

That’s EPIC’s job not mine. CryEngine is doing it pretty well too.

As for the WebGL demo, define what’s a ‘real game environment’ first, because you can build small to medium games with WebGL.

Also try not to be so defensive about it

I was one of the Beta testers and i gave feedback and made requests as well so i’m not being defensive about it. I’m just getting tired of seeing some requests and people waiting for Epic to make them happen as if they are the only things keeping them from making the best game in the world. Is Cryengine’s method perfect? No. Can it be imitated in UE4? Yes. It would be fun to have a prism and point a light at it to see spectral colors in a game engine but what is the point if not all of the end users with lower end hardware can see that effect? Might as well use an offline renderer and show a video of it to them.

I’m not saying that caustics should be real-time as the player will never notice the difference anyway.
It’s not also something EPIC should hurry up and implement.

I made a game that used a light function to put caustics at the bottom of an ocean. I used the free program Substance Player from Allegorithmic and their free Caustics Substance to generate a few hundred still images in a looping sequence. Then I batched the images into a single video using Rad Video Tools, the free .bik encoding program. Imported that .bik file into UE3 as a texture movie, and created a material for a caustics light source.

However, if you just want this effect at the bottom of a pool where the water won’t drain out, you can fake it by plugging the caustics movie texture into the pool’s emissive channel in the material, using the world position node to planar map the caustics from the top down, and create a mask to cut off the light above the water and any shadowed areas you might have. It will probably run much faster in-game than a light function, too.