Real Caustics - Ocean Painter
RCW Water — User Guide
Join the Discord Server for easier communication and faster support: https://discord.gg/T2wVfCGWmC
Installation
1. Install the add-on via Edit ▸ Preferences ▸ Add-ons ▸ Install (legacy) and point it at rcw_ocean.zip. Enable RCW Ocean.
2. Extract the packed RAR texture archives into a folder of your choice. All Three packed folder must be downloaded first. Extract the Folder named .part1.
3. In the Addon Preferences - select the Folder with the Extracted Material
3. Open the N-panel in the 3D viewport → the RCW Ocean tab.
Creating water
Under Setup you have four actions:
- Create Water Mesh - the one-click ocean. Spawns a 5000 m × 5000 m plane (100×100 grid) at the world origin, applies the RCW water material, writes the required attributes, creates a RCW - collection, and generates a Randomness control empty. It also turns Use Preview Water on (a lightweight stand-in for fast, responsive viewport work), sets displacement to Bump Only
- Add Material to Selected - builds a fresh RCW water material and assigns it to your own selected mesh (for custom geometry).
- Use Existing Material - pick an already-made RCW water material and apply it to the active mesh; it writes the mask/shoreline attributes the material expects.
- Fix Attributes - writes any missing paint/mask attributes onto the selected water mesh(es). Needed on custom meshes, and whenever the panel warns a selected mesh is missing masks.
▎ Water is identified by an internal flag, not by the material's name - so you can rename materials freely (useful for presets) and editing still works, as long as the material keeps its RCW node structure.
Material header
Two controls sit at the top once a water exists:
- Use Preview Water - swap the heavy shader for a fast glossy stand-in while you judge displacement, flow and foam. Turn it off to work on the final look
- Displacement - Bump Only (instant, no geometry), Displacement Only (true geometry, needs the subdivision modifier), or Displacement + Bump (true displacement plus bump for fine detail).
Depth Bake
Select a mesh (your underwater ground/seabed) as the Landscape and click Bake Depth. This raycasts the water surface down onto that terrain and writes a static RCW_Depth attribute (in metres). That depth drives shoreline foam and any Depth (Shore-proximity) masks - it's what lets you separate shallow, mid and deep water. Re-bake whenever the terrain or water height changes. The bake depends on the quality of your subdivisions.
Global water controls
Water Look
- Water Color - the water's absorption/scatter tint.
- IOR - index of refraction (1.33 = real water).
- Specularity - strength of the surface highlight.
- Absorption Density — how quickly depth darkens/absorbs light (murkiness).
- Use Fake Scatter - a cheap subsurface-like scatter approximation instead of true volume scatter (emission based.
- Scatter Density - strength of that scatter
Waves
- Strength - overall procedural wave amplitude of the base water.
- (Optional mask to restrict where waves are strong.)
Foam
- Strength — overall foam amount.
- Paint Shoreline Foam — paint procedural shoreline-foam interaction directly onto the surface (needs the mesh assigned).
- Reach — how far the shoreline foam extends from the shore/depth line.
- (Optional mask for the foam channel.)
Caustics
- Strength / Gamma — intensity and contrast of the caustic pattern.
- Surface Fade / Depth Fade — fade caustics near the surface and with depth.
- Depth Limit — Transparency Ray Depth - This controls whether you caustics are visible through transparent materials, like alpha-driven foliage and leaves
- (Optional mask for the caustics channel.)
- Real Caustics — special: if you own the Real Caustics add-on you can bake caustic textures from your water using the Real Caustics workflow, return to RCW Water, enable Use Real Caustics, and feed the baked texture into Real Caustics Texture — replacing the built-in procedural caustics with your rendered ones. You will need to manually add the mapping+image sequence nodes and plug them into the shader.
Layers
RCW water is a layer stack, like Photoshop / Substance / After Effects. There's always a pinned procedural Base Water layer at the bottom; you stack baked water textures on top.
- Add — browse to your texture folder and pick a layer's JSON file. The JSON is what makes it one-click: it carries the sequence's frame rate and its real-world size (width in metres + aspect). Scale is critical and impossible to eyeball — a 200 m large-swell ocean and a 20 m gentle chop are completely different in wave length and steepness relative to the 5000 m surface. Because the JSON stores the true metres, the layer comes in at exactly the right scale automatically — that's the whole point.
- Replace — swap the layer's sequence for a different one while keeping all its settings (placement, masks, blend, amps). Frame count and size update from the new JSON.
- Duplicate — copy a layer with all settings (new placement).
- Remove — delete the selected layer.
- Move up/down — once you have at least two image layers (plus the base), select a layer and use the arrows beside the list to reorder. Top of the list = on top.
Per active layer you also get Solo (isolate a layer to dial it in, then exit to merge back) and Focus (frame its empty in the viewport).
Blend modes & opacity
Every layer has an Opacity slider and a blend mode:
- Normal — standard "over": this layer replaces what's below, faded in by its opacity/mask. Use for a hero layer or a clean crossfade between water fields.
- Add — sums this layer's maps onto the stack below. Note it adds all channels — displacement and foam and caustics — so if you only want part of it (e.g. just extra chop, or just foam streaks), zero out the channels you don't want or mask them. Use for stacking extra turbulence, adding foam trails, or boosting caustics in a region.
- Multiply — multiplies the stack below by this layer, attenuating it. Anything toward black damps the water; white leaves it untouched. Use a gradient/vignette layer to taper waves toward the shore, calm a bay, or knock foam/caustics down in a specific area — effectively a painted or textured "damping" layer.
- Height Blend — a soft-max "taller wins" interlock: at each point the taller of the two height fields shows through, with a soft transition. Tune Blend Height (the crossover height) and Blend Softness (transition width). Use it to interleave two overlapping swells so crests genuinely poke through each other instead of averaging into mush — the realistic way to combine wave fields.
Per-layer channels
- Displacement, Foam, Caustics — this layer's contribution to each.
- Caustics Neutral — the caustic-texture value that means "no caustic"; lets you control the neutral baseline when Caustics intensity is below 1.
Extent (default: Infinite)
- Infinite — tiles the texture across the entire surface.
- Single Image — shows the texture once, clipped and feathered at its borders (Edge Feather), optionally dissolved by height (Height Influence) so low areas fade out and only tall features remain. Perfect for a single rolling shore-break placed near the beach that blends into the open ocean.
De-tiling
Two independent toggles to break up visible repetition:
- Use Warp — warps the UVs with de-tiling noise (a subtle domain warp) so the tile grid stops reading.
- Use Texture Bombing — scatters the texture in randomised cells (per-cell offset / scale / rotation). ⚠️ Bombing can produce artifacts at the cell edges, especially with large, strong waves — for those, prefer the Global Smooth Mask method below.
Placement
Select the layer's empty in the viewport and move / rotate / scale it like any Blender object.
Mixing layers with masks
Global Smooth Mask (Randomness) — a cleaner alternative to bombing for breaking tiling. Duplicate the layer you want to de-tile, rotate/scale/offset the copy slightly, and give it a Randomness mask. The two copies now blend through a smooth global random field — no cell-edge artifacts. You can move, scale and rotate the randomness empty, and adjust its Contrast. It is global: the field and its contrast are shared, so tweaks affect every layer using it (this is what keeps multiple de-tiled layers consistent).
Mask Stack — combine Paint, Noise, and Shore proximity (Depth) — enable any subset:
- Paint — paint the mask directly on the mesh. Needs enough subdivision in the area; subdivide to add resolution where you paint.
- Noise — procedural; move/scale its noise empty for position and scale, and set the contrast (Levels).
- Depth (Shore) — uses the baked RCW_Depth to isolate a depth band (Depth Min/Max, Falloff) — ideal for separating shallow / mid-depth / deep water. (Requires a Depth Bake.)
- Invert flips the mask.
Reuse a mask — once made, reuse it on another layer or shader channel. Example: you mask the global ocean to add calm patches → reuse that same mask on Foam to also remove foam from those calm areas. Remove Mask deletes it (shared masks survive until their last user is removed).
Multiple water meshes — if you use several meshes for one water, only the first gets its mask attributes written. Press Fix Attributes to write them to all selected meshes. One mesh for water is recommended.
Decals are still experimental.
Discover more products like this
waves water shader procedural-water ocean Water simulation caustics Water ArchViz realistic water foam