Volcanic Pool
This effect consists of a ground model that procedurally generates details and splat maps, a terrain shader, a water shader that reads from an early scene capture, a render target to handle ripple placement, bubble particles, and a vapor shader on some simple geometry. It was assembled in Godot Engine.
This effect has two main components: the ground and the water. For the ground, I use geometry nodes in Blender to add details to a low-resolution mesh. It creates rocky forms for the mesh, and generats splat maps. In engine, I created a shader that reads from the splat maps and applys textures downloaded from Quixel's amazing material library. The shader also renders a colorful gradient in world space to simulate the mineral deposits found in volcanic pools.
Getting the water to look correct was tricky. I wanted the bubbles to be transparent and also distort from the water's surface. In order to achieve this, I had to render the ground with the bubbles first and save out a full screen buffer. The water reads from this buffer and distorts it, before the surface bubbles are added on top as transparent objects.
The water distortion has two parts, the ambient ripples, and the disturbance caused by the bubbles. For the bubble disturbance, I render out a low-resolution flow map that's affected by the placement the bubble particle systems. Since my bubble particle systems are stationary, this happens once before runtime, but it could easily be made dynamic by updating the render target each frame.
The rising vapor is simply an additive shader on some quads floating above the pool. By combining a few scrolling textures and fading the quads based on view angle, I can achieve a convincing and inexpensive effect.
the shader graph for the ground
the smoke effect isolated from the scene