Website powered by

Unreal Engine Experiments - Water Tools

This is an experimental set of tools. The first allows me to bake the water wave height into a grid so the CPU can average a wave height at any given location and do cheap buoyancy effects and such in sync with the water material. The second allows me to draw a flow map based on a grid and then render that into a tiny render target so the flow can both be accessed by the GPU & CPU.

This is an experimental tool that lets me bake the wave height of a tiling-flipbook-based water surface into a coarse grid data that can be accessed by the CPU.

Demonstration of that tool. Here I play a random debug tiling flipbook and the tool allows me to bake that data which can then be sampled by the CPU.

This is quite useful to provide CPU access to the wave height and do cheap buoyancy simulation and things like that in sync with the water surface being displaced on the GPU.

I then iterated on that idea and built a tool that let me encode flow into a grid data. An actor can then average the flow of nearby cells and move accordingly.

I then merged both tools to have a height grid & flow grid. The flow grid is baked into a tiny render target to act as a flow map for the water material. Performance is acceptable in blueprints and very fast in CPP.