Simulation Debugger

Fluid Rendering Components

Fluid Renderer

The Fluid Renderer component is responsible for rendering the Fluid Simulation. This component is in charge of creating and rendering the necessary meshes and materials needed for displaying the assigned Fluid Simulation. Users can customize the Fluid Renderer component to create their own rendering effects, similar to Water Surface and Lava Surface renderers.

Property Description
Debug Mode Different fluid debugging modes that can be used in the editor.
Surface Properties Properties that determine the mesh quality and the specific drawing mode of the fluid surface.

This structure holds settings that control the visual fidelity and performance of the fluid surface mesh.
This includes the specific method used to render the mesh, such as standard MeshRenderer, procedural drawing, GPULOD, or a specialized HDRP mode.
Fluid Material The material to be used to render the fluid surface.

This material is internally instantiated at runtime. The component copies the properties from the original material to the new instance,
and then overrides or injects any necessary rendering requirements (e.g., shader keywords or properties) for the fluid simulation effects
to function correctly.
Simulation The Fluid Simulation component that this renderer will draw.

This is a mandatory dependency. The FluidRenderer will automatically adopt the world-space dimensions and position of the assigned Fluid Simulation,
ensuring the rendered fluid surface matches the simulated area exactly.
Flow Mapping The Fluid Flow Mapping component that this Fluid Renderer uses to visualize fluid currents and wakes.

This component provides the necessary data to the fluid shader, which can be either a dedicated flow map texture (for dynamic UV-offsetting)
or material parameters derived directly from the simulation’s velocity texture. This allows the fluid surface to depict accurate movement and flow.
Render Skirts Renders downward skirts at the edges of the fluid surface.

Fluid World Renderer

Fluid World Renderer draws multiple Fluid Simulation tiles as one continuous surface. Use it for open oceans, large lakes, and any scene where simulation is split across several domains but should look and behave like a single body of water (or other fluid type).

The component always renders with GPULOD. Each frame it gathers matching simulation tiles in the scene, composites their height, normal, terrain, foam, and flow data, and draws one world-scale surface from that combined result. You configure the footprint, material, channels, and optional ocean/detail-wave layers in the Inspector on this one object.

For water-specific rendering (underwater, caustics, reflections, foam on the world surface), use Water World Renderer instead. It extends this component with the same features as Water Surface on a per-tile Fluid Renderer.

Fluid Renderer vs Fluid World Renderer

Each Fluid Simulation can still have its own Fluid Renderer or Water Surface for local effects, debugging, or single-tile scenes. In a tiled open-world setup you typically rely on the world renderer for the visible surface and disable or omit per-tile renderers to avoid drawing the same water twice.

Use Fluid Renderer Use Fluid World Renderer
One simulation domain Many simulation tiles in one view
Any Render Mode (MeshRenderer, DrawMesh, GPULOD, HDRP Water) GPULOD only
Per-tile underwater, caustics, reflections via Water Surface Multi-tile water features via Water World Renderer

Setting up a tiled world

A typical multi-tile workflow looks like this:

  1. Place one Fluid Simulation per region. Align tiles in the scene so their domains meet edge to edge.
  2. On shared edges, set Side Border Settings to Neighbour and use the same Group ID so simulations stay connected. Grid Pos helps neighbour discovery; compositing itself follows each tile’s position and size in the scene.
  3. Add a Fluid World Renderer (or Water World Renderer) to the scene. Set Surface Properties Dimension to the XZ area you want the world surface to cover.
  4. Match Fluid Channels on the renderer and on each simulation you want included. See Fluid Channels in Setup for naming and masking.
  5. Enable Ocean Fft Enabled and tune Ocean FFT Settings for large open-water swell. On Flow Fluid Simulation tiles, configure Ocean FFT Coupling so local shallow-water flow follows the ocean motion near coastlines.
  6. Optionally enable Detail Waves Enabled for small ripples on top of the composited surface. These are visual only and do not affect simulation or Fluid RigidBody physics.

Up to 32 simulation tiles can be composited at once. Fluid RigidBody buoyancy works across the combined surface when a world renderer is present; single-tile setups still use Read Back Height on the simulation instead.

Which simulations are included

The renderer does not reference simulation objects directly. Any Fluid Simulation in the scene whose Fluid Channels overlap the renderer mask is drawn:

(renderer mask & simulation.fluidChannels) != 0

Use ~0 on both sides to include every channel. Use separate channel masks and separate world renderers when you want independent surfaces (for example one renderer for ocean water and another for lava).

General

Fluid World Renderer General

Property Description
Fluid Channels Bitmask of simulation channels included in the world atlas.

A Fluid Simulation is packed when (renderer mask & simulation.fluidChannels) != 0.
Use ~0 to include all channels, or 0 to pack nothing.
Fluid Material The material to be used to render the fluid surface.

This material is internally instantiated at runtime. The component copies the properties from the original material to the new instance,
and then overrides or injects any necessary rendering requirements (e.g., shader keywords or world-atlas textures) for the fluid simulation effects
to function correctly.

Mesh Rendering

Fluid World Renderer Mesh Rendering

Property Description
Surface Properties Properties that determine the mesh quality and the specific drawing mode of the fluid surface.

This structure holds settings that control the visual fidelity and performance of the fluid surface mesh.
World rendering uses GPULOD; set Render Properties to the XZ footprint used for GPULOD and shader sampling (see Mesh Rendering in the Inspector).
Tile Id Grid Resolution Resolution of the world-space tile index texture (XZ) used by GPULOD and shaders to map positions to atlas tiles.

Higher values improve lookup precision for large worlds at the cost of memory and sampling cost.
Debug Visualization Different fluid debugging modes that can be used in the editor.

Play Mode only. Uses shader FluidFrenzy/Debug/SimulationData (same family as Fluid Renderer).
Height, normals, velocity (from the height/velocity atlas), UV, and LOD modes are supported for world-atlas rendering.

Detail Waves & Displacement

Fluid World Renderer Detail Waves

Property Description
Detail Waves Enabled Enables procedural or baked detail waves on the world surface.

These ripples are purely visual and do not affect the fluid simulation, physics, or buoyancy.
Configure the wave shape and motion in Detail Wave Settings.
Detail Wave Settings Settings for procedural or baked detail waves on the fluid surface.

See Detail Wave Effect and the Detail Wave Generator at Window > Fluid Frenzy > Detail Wave Generator for baking static textures or flipbooks.

Ocean FFT (cascaded)

Fluid World Renderer Ocean FFT

Property Description
Ocean Fft Enabled Enables cascaded ocean FFT displacement (JONSWAP spectrum) on the world surface.

When enabled, the renderer selects global cascade-count shader keywords and binds FFT data via shader globals.
Tune spectrum and cascades in Ocean Fft Settings.
Ocean Fft Settings Settings for the cascaded ocean FFT generator used when Ocean Fft Enabled is true.

Authoring data for FFT Generator; mirrors the ocean FFT fields used on sample open-water content.

Water World Renderer

Extension of Fluid World Renderer for multi-tile water: foam, underwater, caustics, and planar reflections, mirroring Water Surface on Fluid Renderer.

Underwater Effects

Water World Renderer Underwater

Property Description
Under Water Enabled Controls whether the Underwater Effect is currently enabled.
Under Water Settings Settings for all configurable visual parameters of the Underwater Effect.

Defines how light interacts with the water volume, including absorption rates, scattering colors, and the appearance of the surface meniscus.

Caustics

Water World Renderer Caustics

Property Description
Caustics Enabled Controls whether the Caustics Effect is currently enabled.
Caustics Settings Settings for the Caustics Effect, which renders animated light patterns projected onto the scene geometry underwater.

Surface Reflections

Water World Renderer Surface Reflections

Property Description
Reflections Enabled Controls whether real-time planar reflections are generated for this water surface.
Reflection Settings Settings for the Surface Reflections module (Planar Reflections).

Ocean FFT Settings

Settings for the cascaded ocean FFT on Fluid World Renderer when Ocean Fft Enabled is true. These control the JONSWAP spectrum, cascade layers, and distance fades used for large-scale open-water displacement. To apply that motion on the shallow-water solver, configure Ocean FFT Coupling on each Flow Fluid Simulation tile.

Fluid World Renderer Ocean FFT

Property Description
Water Preset A starting profile for the ocean waves.

Pick a preset for quick results, or choose Custom and tune the fields yourself. Changing spectrum or cascade values switches back to Custom.
Resolution Internal resolution of each wave layer.

Higher values look sharper but use more GPU memory and time.
Cascade Count How many wave size layers are active.

C1 is the largest, longest waves. More layers add detail but cost more. Inactive layers are ignored at runtime.
Wind Speed Wind speed in meters per second.

Stronger wind builds taller, faster-moving waves.
Scales World size in meters for each wave layer (C1-C4).

C1 covers the largest area (open-ocean swell). Smaller values on later cascades add nearby chop and ripples.
Choppiness Horizontal curling of each wave layer.

Higher values make crests sharper and more displaced. Values are capped to avoid broken-looking folds.
Intensities Height of each wave layer.

Scales how tall each cascade moves the surface up and down.
Speeds Animation speed of each wave layer.

Multiplier on how fast each cascade moves over time.
Wind Direction Wind direction in degrees.

Controls which way the generated waves prefer to travel.
Fetch How far the wind has blown over open water, in meters.

Larger fetch builds longer, more developed swell. Use smaller values for bays, lakes, and rivers.
Spread Blend Blend between wind chop and organized swell direction.

Lower values spread waves in more directions. Higher values align waves with the wind.
Swell Amount of long, rolling swell.

Adds slower, larger motion on top of wind-driven waves.
Peak Enhancement How peaked the largest waves are.

Higher values sharpen wave crests in the spectrum.
Short Waves Fade Softening of the smallest ripples.

Reduces high-frequency shimmer. Raise slightly if the surface looks too noisy.
Depth Average water depth in meters.

Shallow water shortens wavelengths and changes wave shape. Use a low value near shores and rivers.
Generation Threshold How much wave folding is needed before whitecaps appear.

Lower values show foam on milder crests. Higher values require stronger breaking.
Generation Amount Strength of fresh foam at breaking crests.

Higher values inject foam faster where waves are actively breaking.
Dissipation Speed How quickly existing foam fades away.

Higher values remove foam faster once waves stop breaking.
Falloff Speed How much leftover foam blends into neighboring texels.

Higher values keep tighter streaks along crests. Lower values smear foam trails wider. This controls spatial spread, not fade over time.
Displacement Fade Distance range where FFT waves fade out near the camera.

X = start fading, Y = fully faded. Uses cascade distance units (not meters); finer layers fade closer than large swell.
Normal Mip Fade Distance range where wave normals soften far from the camera.

X = begin softening (meters), Y = full softening (meters). Helps distant ocean look smoother.
Normal Mip Max Maximum softening applied to far-away wave normals.

Works with Normal Mip Fade to reduce sparkly detail in the distance.
Vertical Bias Vertical offset of the FFT ocean surface in world space.

Raises or lowers the rendered ocean without moving the fluid simulation mesh. Also used when deciding if thin sim water should be hidden in favor of the ocean look.

Surface Renderer

Surface Renderer defines a interface for rendering techniques aimed at height field surfaces. Implementing classes should provide specific algorithms and methods to visualize height maps and related surface data in different graphical contexts, such as terrain or fluid fields. This interface is designed to promote extensibility, allowing developers to introduce new rendering methods as needed while adhering to a standard approach for rendering surfaces. Currently there are three classes that extend this interface.

  • MeshRenderer The implementation using standard Mesh Renderer Surface components.
  • Mesh A simpler implementation using Mesh Surface.
  • GPULOD An implementation using a GPU-accelerated LOD system: GPULOD Surface.

All classes implementing this interface must provide functionality to clean up resources by overriding the dipose method, ensuring that any graphics resources are properly disposed of.

Render Properties

Properties to be used to configure components that use Surface Renderer. These properties determine the mesh quality and rendering mode of the surface.

Property Description
Render Mode The method used for generating and rendering the fluid surface geometry.

- MeshRenderer
Uses standard GameObjects with Mesh Renderer components. Best for simple setups where standard object culling is sufficient.

- DrawMesh
Uses Render Mesh to avoid GameObject overhead. Supports GPU Instancing.

- GPULOD
Draws the surface using a GPU-accelerated LOD system. Best for large-scale oceans or lakes.

- HDRPWaterSurface
Bridges the simulation data to a Unity HDRP Water Surface component (Requires HDRP).
Dimension The total world-space size (X and Z) of the rendered surface.
Mesh Resolution The vertex resolution of the surface’s base grid mesh.

For the most accurate visualization, it is recommended to match this value to the source heightmap resolution.
Mesh Blocks The number of subdivisions (blocks) to split the rendering mesh into along the X and Z axes.

Subdividing the mesh improves GPU performance by allowing the camera to cull blocks that are outside the view frustum.
Lod Resolution The vertex resolution of individual LOD patches when using GPULOD.
Traverse Iterations The number of iterations the Quadtree traversal algorithm performs per frame when using GPULOD.

Higher values resolve the surface quality faster during camera movement but may reduce performance.
Lod Min Max The range of allowable LOD levels, where X is the minimum level and Y is the maximum level.
Hdrp Water Surface Configuration settings for bridging this simulation’s data to an external HDRP Water Surface.

Detail Wave Effect

This effect handles the small surface ripples (detail waves) for the fluid by managing GPU math for real-time waves or playing back pre-rendered textures.

detail wave effect

These ripples are purely visual and do not affect the actual fluid simulation, physics interactions, or buoyancy math. To save on GPU performance, you can bake these waves into static textures or flipbooks using the generator tool found at Window > Fluid Frenzy > Detail Wave Generator.

detail wave generator

Detail Wave Settings

Fluid World Renderer Detail Waves

Property Description      
Mode Determines the method used to generate or display detail waves on the fluid surface.

- Baked Uses a single static texture for maximum performance but lacks motion.
- Flipbook Cycles through a pre-rendered texture array for smooth animation at a low GPU cost.
- Dynamic Calculates procedural wave math in real-time for infinite variety at a higher performance cost.
     
Resolution The pixel dimensions of the generated wave texture.

Gerstner supports any power-of-two up to 1024 for bakes / dynamic. FFT snaps to 64-512 only.
     
Min Frequency Defines the scale of the largest waves in the generated spectrum.

Low values (1-2) create large, rolling swells.
High values (5+) make the primary wave shapes much smaller and busier.
     
Max Frequency Defines the scale of the smallest ripples.

Low values result in a smoother surface.
High values add high-frequency micro-fidget and “noise” to the water surface.
     
Amplitude A global multiplier for the internal wave height math.

This scales the wave spectrum before it is packed into the texture.
Use this to push waves toward their maximum normalized height.
     
Steepness Determines the sharpness of the wave crests.

1.0 creates smooth, hilly waves.
Higher values (up to 8.0) pinch the crests into sharp, aggressive peaks.
     
Anisotropy Stretches frequencies to create wind-streaks.

1 = Circular ripples, 10 = Long streaks
     
Random Seed The seed used to initialize the random layout of the wave pattern.

Change this to get a different visual layout using the same settings.
     
Animation Type Determines if the waves bob in place or travel in direction.      
Animation Speed How fast the wave shapes change or travel.

Higher values make the water look more energetic and wind-swept.
     
Spectrum Gerstner sum vs JONSWAP FFT (same packed height/normal texture). FFT requires a compute shader.      
Wind Direction The direction the waves travel (Only applies to Drifting mode).   Directional Spread Controls the alignment of wave directions.

1.0 makes waves move in all directions (chaotic).
0.1 forces waves into organized, parallel rows.
Baked Texture The texture asset used for displacement when in Baked mode.

Expected format: Alpha channel for Height, RGB channels for Normals.
     
Baked Texture Array A sequence of wave frames stored as a compressed Texture2DArray.      
Flipbook FPS The speed at which the flipbook cycles through frames.      
Displacement Strength The vertical scale of the displacement applied to the surface mesh.

Higher values make the waves physically taller in world space.
     
Normal Strength The intensity of the small-scale lighting details.

Controls the normal map strength.
High values make ripples catch more light and appear rougher.
     
Velocity Influence X = Minimum strength at 0 velocity. Y = Maximum strength multiplier.      
Fade Distance Distance (Start, End) in meters where detail waves fade out to prevent shimmering and tiling artifacts.      
Tiling How many times the wave pattern repeats across the surface area.      
Offset A manual offset to scroll or shift the wave pattern.      
Directional Spread Controls the alignment of wave directions.

1.0 makes waves move in all directions (chaotic).
0.1 forces waves into organized, parallel rows.
     

HDRP Water Surface Properties

Contains settings used to bridge the fluid simulation data to the Unity HDRP Water System.

Property Description
Target Water Surface The target HDRP Water System component the simulation is to be applied. (Requires HDRP package).
Amplitude Controls the maximum amplitude of the Fluid Simulation used to encode/decode the height to/from 0-1 range
Large Current Controls the weight that the Fluid Simulation’s velocity should be applied to the Large Current waves of the HDRP Water System.
Ripples Controls the weight that the Fluid Simulation’s velocity should be applied to the Rupples of the HDRP Water System.
Mesh Resolution The vertex resolution of the surface’s base grid mesh.
Dimension The total world-space size (X and Z) of the rendered surface.
Height Scale The scale that will be applied to the height value in the surface’s height field.
Max Height The maximum height the surface will be. This is used for the culling bounds of the meshes.
Heightmap Mask Specifies which channels of the heightmap to read 1 is read, 0 is ignore.
The result is accumulated with the following formula: dot(heightTexel, heightmapMask)
Lod Min Max The minimum and maximum LOD levels that can be selected for the surface. lodMinMax.x(min) lodMinMax.y(max)

Water Rendering

Water Surface

Water Surface

The Water Surface is an extension of the Fluid Renderer component that renders all things water like Foam Layer, Underwater Effect visuals, absorption, and scattering. It does this by assigning the active rendering layers to its surface material and using the underwater settings.

Property Description
Under Water Enabled Controls whether the Underwater Effect is currently enabled.
Under Water Settings Settings for all configurable visual parameters of the Underwater Effect.
This class defines how light interacts with the water volume, including absorption rates, scattering colors, and the appearance of the surface meniscus.
Caustics Enabled Controls whether the Caustics Effect is currently enabled.
Caustics Settings Settings for the Caustics Effect, which renders animated light patterns projected onto the scene geometry underwater.
Reflections Enabled Controls whether real-time planar reflections are generated for this water surface.
Reflection Settings Settings for the Surface Reflections module (Planar Reflections).

Water Shader

The FluidFrenzy/Water shader is applied to the material used by the Water Surface component. It provides a comprehensive set of material properties for creating visually appealing water.

Compatibility: This shader is compatible with both the Universal Render Pipeline (URP) and the Built-in Render Pipeline (BiRP).

Note: The High Definition Render Pipeline (HDRP) requires a separate, dedicated shader: FluidFrenzy/HDRP/Water.

Lighting

Properties controlling the illumination and shading effects.

Water Shader

Property Description
Specular Intensity Scales the brightness of specular highlights from the main directional light.
Sun Roughness Controls the roughness of direct specular highlights from lights (lower = sharper highlight, higher = broader highlight).
Shadows Enables or disables whether the water surface receives shadows.
Reflection

Properties controlling the water surface’s reflection of the environment.

Water Shader

Property Description
Reflection Roughness Controls how blurry reflection probes (and HDRP smoothness) appear (lower = sharper reflections, higher = blurrier reflections).
Planar Reflection Enables or disables the use of planar reflections instead of only reflection probes.
Reflectivity Offset Offsets the base reflectiveness of the water surface.
Use this to ensure the water is reflective even at sharp viewing angles.
Distortion Scales the distortion applied to planar reflections.
Absorption

Properties controlling depth-based color, transparency, and refraction effects.

Water Shader

Property Description
Color RGB sets the color of the water at maximum depth. Alpha (A) is the base transparency of the water.
If ‘Refraction Mode’ is ‘Screenspace Absorb’, RGB is a color multiplier where White (1.0) is fully transparent.
For ‘Alpha’ or ‘Screenspace Tint’, RGB is the final color tint the water reaches at maximum depth/opacity.
Depth Transparency Scales the rate at which the water’s color changes and transparency fades based on depth. Lower values make the water more transparent at a faster rate.
Refraction Mode Selects the method for rendering water transparency and refraction:

- Alpha: Simple alpha blending transparency.
- Opaque: Water is rendered as a solid, non-transparent surface.
- Screenspace Tint: Uses screen-space refraction (GrabPass). Color interpolates from clear to the set color based on depth. Use for a single water color tint.
- Screenspace Absorb: Uses screen-space refraction (GrabPass). Scene color is multiplied by water color, allowing for a color gradient (e.g., clear to turquoise to blue).
Distortion Scales the amount of distortion applied to the screenspace refraction effect (‘Screenspace Tint’ or ‘Screenspace Absorb’ modes).
Subsurface Scattering

Properties controlling the diffusion of light and subsurface scattering effect beneath the water surface.

Water Shader

Property Description
Color The tint of light scattered inside the water, like underwater fog or sun through shallow waves.
Intensity Master multiplier on all scatter terms below.
Ambient Scattering Constant glow from ambient light across the whole surface. Needs baked GI to show on BiRP.
Height Scattering Adds ambient glow on wave crests where the water is raised.
Displacement Scattering Adds ambient glow where the surface is choppy or horizontally displaced.
Scattering Wave Height Typical wave height used to scale Height and Displacement scattering. Lower values make those sliders more sensitive.
Body Scattering How much the sun glows through flat areas and wave troughs.
Tip Scattering How much the sun glows through wave crests. Usually the most visible of the two.
Foam Contribution Scales the subsurface scattering contribution in areas covered by foam.
Waves

Properties for adding detail to the water surface using normal mapping and procedural vertex displacement.

Water Shader

Property Description
Normal Map Texture used to add fine detail to the water’s normals for lighting and PBR shading.
Velocity Influence Min = Strength at resting water. Max = Max strength multiplier at high velocity.
Foam

Properties controlling the appearance and masking of the foam effect.

Water Shader

Property Description
Foam Color Sets the Foam Color (RGB) and acts as a multiplier/mask (A) for the Foam Map’s transparency.
Foam Map Texture used for the foam’s diffuse color (RGB) and its base mask/transparency (A).
Foam Normal Map Normal map texture used to add PBR lighting detail to the foam.
Foam Visibility Range Sets the minimum and maximum threshold values for when the foam becomes visible and reaches its maximum strength. Foam visibility is interpolated between these values using a smoothstep function.
Screenspace Particles Enables the use of the screenspace particles (from the FluidParticles component) as an additional mask to generate foam.
Foam Mode Selects the blending method for the foam:

• Albedo: Soft foam using the Foam Map for color and mask.
• Clip: Hard-edged foam using the Foam Map’s red channel as a clip value for sharp borders.
• Mask: Uses the Foam Layer Mask’s value to select one of the Foam Map’s RGB channels as an extra mask for blending the foam color, allowing for varied intensity: 0-0.334 uses Blue, 0.334-0.667 uses Green, and 0.667-1 uses Red.
Foam Smoothness Controls how glossy the foam appears. Lower values produce matte, chalky whitecaps.
Water Specular Suppress Lowers water smoothness (sun spec + reflections) on visible foam. 1 = matte foam smoothness, 0 = no change.
Foam Ambient Floor Minimum brightness for foam in shadowed areas.
Rendering

General rendering, depth-handling, and simulation sampling properties.

Water Shader

Property Description
Layer Selects which layer (e.g., Water or Lava, etc.) from the Fluid Simulation field to sample for effects.
Fade Height The world height at which the water will be fully faded out.
Used to soften edges or blend with geometry above a certain height.
Linear Clip Offset A linear offset applied to the clip-space Z depth
to help prevent visual clipping (Z-fighting) with close terrain or surfaces.
Exponential Clip Offset An exponential/depth-based offset applied to the clip-space Z depth
to help prevent visual clipping (Z-fighting) with distant terrain or surfaces.
UV Space Controls which coordinate space is used for sampling Wave Normal / Foam / Detail Waves.

- Normalized UV Space: uses simulation UVs in 0..1.
- World UV Space: uses world XZ planar UVs. In this mode the texture tiling values are interpreted as repeats per meter (1,1 repeats every meter).
Non-Tiled Sampling Hides texture tiling artifacts on the wave normal, detail waves and foam by sampling a noise key once and offsetting samples. Slight extra cost.

Underwater Effect

The Underwater Effect module renders the visuals you see when the camera goes underwater. It is supported in all render pipelines.

It uses the same simulation math as the water surface to ensure the underwater volume matches the waves perfectly. However it has its own independent visual settings, allowing you to style the underwater atmosphere separately from the surface itself.

This distinction is useful for gameplay as you can make the underwater view clearer or brighter than the surface to help players see further. The effect handles features like light absorption, fog scattering, and directional lighting to create the underwater atmosphere.

Underwater Settings

Water World Renderer Underwater

Settings for all configurable visual parameters of the Underwater Effect. This class defines how light interacts with the water volume, including absorption rates, scattering colors, and the appearance of the surface meniscus.

Absorption
Property Description
Color The base transmission color of the water.

This defines the color of the water as light passes through it. Brighter colors make the water look clear, while darker colors make the water look thick and deep. This works with the absorption depth scale to decide how much the scene behind the water is tinted.
Absorption Depth Scale Controls the rate at which light is absorbed as it travels through the water.

Higher values result in darker water where light cannot penetrate as deeply. This scaling factor applies to the exponential decay of the Water Color.
Absorption Limits Clamps the calculated absorption to a specific range (Min, Max).

Useful for preventing the water from becoming completely black at extreme depths or ensuring a minimum amount of visibility.
Color The color of the light scattered within the water volume (subsurface scattering/fog color).

Defines the color of the fog when light illuminates the water. Usually a bright cyan or teal for tropical water, or a murky green/brown for swamps.
Ambient Intensity The base ambient contribution to the scattering effect, independent of direct lighting.

Higher values cause the underwater fog to glow brightly even in shadows or when facing away from the sun. Lower values rely purely on direct sunlight for illumination.
Total Intensity A global multiplier for the overall scattering intensity.

Higher values create a dense, opaque volumetric fog. Lower values make the scattering very subtle, preserving the clarity of the absorption color.
Meniscus(Water Line)
Property Description
Meniscus Thickness The vertical thickness of the meniscus line on the camera lens (in centimeters).

Simulates water clinging to the camera glass. Higher values create a thicker, more prominent droplet band at the waterline. Set to 0 to completely disable the meniscus effect.
Darkness Controls the intensity/darkness of the meniscus line effect.

Low values give the band a subtle, colorful tint matching the water color. High values simulate a physically thick droplet that blocks incoming light, creating a dark rim.
Refraction Bulge Controls the refraction strength (optical distortion) of the meniscus droplet.

Higher values bend the background pixels (Snell’s Law), causing extreme lensing and total internal reflection at the edges. Lower values look like flat, undisrupted glass, Negative values intert the refraction.
Reflectivity The base reflectivity (Fresnel R0) of the wet meniscus lens.

Higher values make the droplet highly reflective (mirror-like), reflecting more of the skybox/environment probe. Lower values keep the droplet mostly transparent.
Specular Intensity Controls the brightness of the directional light specular glint on the meniscus.

Higher values create a bright sun highlight when the camera looks towards the directional light at the waterline. Lower values dull the highlight.
Specular Power Controls the sharpness and focus of the specular glint on the meniscus.

Lower values (e.g., 16-64) spread the sun’s reflection out into a wide, wet smear across the lens. Higher values (e.g., 256-512) tighten the highlight into a microscopic, sharp pinpoint.
Chromatic Dispersion Splits the RGB light (chromatic aberration) when refracting through the meniscus droplet.

When enabled, the droplet samples three slightly different indices of refraction, causing a prismatic rainbow fringing effect at the edges of the water band.
Scattering (Fog)
Property Description
Body Scattering Sun scatter on flat wave troughs.
Tip Scattering Sun scatter on wave crests.
Height Scattering Ambient height term scale (matches surface Height Scattering).
Displacement Scattering Ambient chop term scale (matches surface Displacement Scattering).
Scattering Wave Height Reference wave height for ambient scatter terms (matches surface Scattering Wave Height).

Caustics Effect

Caustics is an option on the Water Surface that simulates the shifting light patterns projected onto the seafloor and submerged objects.

alt text

To keep performance high, the system uses a fast approximation rather than trying to calculate physically accurate light paths. It combines an animated texture sequence with procedural highlights that are tied to the surface wave curvature, ensuring the light patterns always match the motion of the water above.

The effect works directly with the Fluid Simulation, meaning it uses the same flow mapping as the surface itself. If the water is flowing or swirling, the caustics will follow that same movement. You can also enable triplanar projection to prevent the patterns from stretching or smearing on vertical surfaces like underwater cliffs or steep walls.

It also accounts for surface conditions for example, Foam Masking can be used to soften or dim the light patterns in areas where thick foam would naturally scatter the light. To keep transitions smooth, the effect uses depth fading to blend the patterns in and out based on how far they are from the surface, preventing them from looking too sharp at the shoreline or in very deep water.

Caustics Settings

Water World Renderer Caustics

Settings for all configurable visual parameters of the Caustics Effect. This class defines animated light patterns projected underwater, wave-driven highlights, and global visibility attenuation.

Texture Projection

You can use these settings to customize the look of the animated texture patterns, including how fast they move, how they warp with the waves, and whether they use triplanar mapping to stay consistent on vertical walls.

Property Description
Animation FPS The playback speed of the animated caustics texture sequence.

Defines how many frames per second the texture advances. Higher values result in faster, smoother motion.
Tiling Controls the scale of the projected caustics pattern.

Higher values increase the tiling frequency, making the pattern appear smaller and more dense across the environment.
Triplanar Projection Enables triplanar projection to prevent texture stretching on vertical surfaces.

Projects the texture from three orthogonal axes (X, Y, Z) instead of a single top-down projection.
Essential for maintaining pattern consistency on cliffs, walls, and steep underwater terrain.
Wave UV Distortion The strength of the UV distortion applied to the caustics based on surface wave normals.

Simulates refractive warping by shifting the texture coordinates relative to the waves above.
Texture Intensity The brightness multiplier for the projected caustics texture.

An independent scalar specifically for the animated texture component of the effect.
Zero disables the Fluid Render Pipeline shader variant (no flipbook samples).
Channel Mask Defines which texture color channels contribute to the final caustics pattern.

Useful for isolating specific channels in packed textures.
Chromatic Aberration The strength of the color splitting effect at the edges of the caustics.

Simulates light dispersion (prismatic effect), creating rainbow-like fringing around high-contrast areas of the pattern.
Wave Highlights

These properties control procedural glints calculated directly from the surface waves, allowing you to adjust the intensity and sharpness of the light streaks hitting the seafloor.

Property Description
Wave Intensity The brightness of the procedural glints generated by surface wave curvature.

Unlike the texture projection, these highlights are calculated analytically from wave refraction to provide a direct link between the surface and the seafloor.
Wave Sharpness Controls the focus and size of the procedural wave highlights.

Higher values result in sharper, thinner glints (lensing effect), while lower values create broader, softer highlights.
Global Settings

This section handles the overall strength and blending of the effect, including how it reacts to shadows and foam, and how it fades out as the water depth increases.

Property Description
Global Intensity A multiplier for all caustic lighting contributions.

Scales both the texture projection and the procedural wave highlights simultaneously.
Darkness Controls how much the sea floor is darkened in the areas between light patterns.

Increasing this value darkens the “caustic shadows,” making the bright light patterns appear more high-contrast and prominent.
Shadow Intensity Controls the visibility of caustics within areas shadowed by external light sources.

A value of 0 makes caustics completely invisible in shadow, while a value of 1 allows them to remain fully visible.
Surface Fade-In Defines the depth range near the surface where the caustics begin to appear.

The X value represents the depth where the effect starts, and the Y value is where it reaches full intensity. This prevents visual “popping” at the water line.
Depth Fade-Out Defines the depth range where the caustics gradually disappear as light is absorbed.

The X value is the depth where fading begins, and the Y value is the depth where caustics are completely extinguished.
Foam Masking Controls how much surface foam occludes the caustics on the seafloor.

Simulates the diffusive nature of bubbles. Thick foam scatters light, preventing sharp caustics from forming and casting a soft shadow on the environment below.
Half Resolution Renders caustics at half screen resolution and upsamples before compositing. Large GPU win; slightly softer patterns.

Surface Reflections

Surface Reflections are a set of settings on the Water Surface component that generate real-time reflections to enhance the rendering quality of the water.

This is achieved by rendering the scene again from a mirrored perspective flipped around the water plane and capturing the result to a texture. This reflection texture is then applied to the water material.

The component reads the height of the fluid simulation to set the reflection plane as accurately as possible. It includes built-in smoothing (controlled by Smooth Position) to prevent quick, jittering changes caused by small, rapid waves on the fluid surface.

Note: To see the results of the reflection, the water material (e.g., FluidRenderer.fluidMaterial) must have surface reflections enabled in its shader.

Note: HDRP does not use Surface Reflections in the water shader, it uses the reflections directly rendered by the pipeline.

planar_reflections

Water World Renderer Surface Reflections

The following settings can be configured to setup the Planar reflections:

Property Description
Resolution The quality/resolution of the generated planar reflection texture.
Culling Mask Which layers the planar reflection camera renders.
Clear Flags What to display in empty areas of the planar reflection’s view (e.g., Skybox, Solid Color).
Clip Plane A vertical offset to apply to the reflection plane. This can be used to prevent clipping artifacts with the water surface.
Smooth Position Smoothes the reflection plane’s height and position over multiple frames to prevent jittering caused by rapid fluid simulation updates.
Smooth Speed How fast the reflection plane adapts to water height changes. Lower values result in smoother, slower transitions.
Snap Threshold The height difference threshold at which the reflection plane instantly snaps to the new height instead of smoothly transitioning.
Renderer ID SRP Renderer to use for the planar reflection pass. Use this to select a cheaper render pass for the reflection camera.
Shadow Quality Controls shadow rendering in the reflection (BiRP Only).
Reflection Texture Size Defines the resolution/size of the generated reflection texture.

Lava

Lava Surface

Lava Surface is an extension of the Fluid Renderer component that specifically deals with rendering lava-related elements of the fluid simulation.

This component adds specific lava rendering features, such as heat and emissive color gradients, by generating and applying a custom Heat Look-Up Texture (LUT).

The LUT is procedurally generated from the Heat gradient field and is assigned to the Fluid Material. This allows the lava’s emissive color and heat visual effect to be determined dynamically by factors like the lava’s velocity or age.

Lava Surface

Property Description
Under Lava Enabled When enabled, the Under Lava Effect applies a depth-based tint while the camera is inside this lava volume.
Under Lava Settings Tunables for the under-lava volume tint (absorption only).
Generate Heat Lut If enabled, the Heat gradient will be used to procedurally generate a Heat LUT that overrides the existing LUT on the Fluid Renderer.
Heat The Gradient used to define the heat/color transition for the lava. The color samples are mapped from Cold Lava (Left side of the gradient) to Hot Lava (Right side of the gradient).

Under Lava Effect

Renders a depth-based tint when the camera is inside a Lava Surface volume, using the same mask and depth data as the underwater effect, with an optional surface band (meniscus-style thickness).

Under Lava Settings
Property Description
Composite Mode Chooses how the under-lava pass blends the volume with the scene.

Options include:
- Opacity
Linear blend toward Volume Color using Opacity; no depth-based extinction.

- Absorption
Depth-varying absorption using Volume Color, Absorption Depth Scale, Absorption Limits, and optional Absorption Ambient Color / Absorption Ambient Strength.
Volume Color Tint color. In opacity mode, RGB is blended in; in absorption mode, it drives extinction (see absorption remarks).
Opacity Opacity mode only: blend strength between the scene and Volume Color (0 = scene only, 1 = full tint).
Depth Transparency Absorption mode only: scales how strongly absorption increases with optical depth.

RGB of Volume Color drives extinction; alpha scales strength with Absorption Depth Scale.
Depth Limits Absorption mode only: clamps the absorption luminance (Min, Max).
Ambient Color Absorption mode only: color the view fades toward through the volume (instead of black), mixed by Absorption Ambient Strength.
Ambient Strength Absorption mode only: how much the ambient tint is added as transmittance drops (0 = multiply-only / fade to black, 1 = full blend toward Absorption Ambient Color).
Thickness (cm) Thickness of the surface band at the lava line (centimeters), 0 disables.
Rim Color Hot-edge tint added in the surface band (HDR).
Rim Intensity Strength of the rim glow in the surface band.

Lava Shader

The FluidFrenzy/Lava shader is applied to the material used by the Lava Surface component. It creates realistic, flowing lava visuals where the ‘heat’ and resulting glow are dynamically driven by the length of the fluid’s velocity vector in the simulation.

The shader uses textures for the base ‘cold’ lava surface (Albedo, Smoothness, Normal Map) and employs a specialized Heat Look-Up Table (LUT) alongside an Emission Map to control the vibrant colors and intensity of the glowing, ‘hot’ lava. A separate Noise texture is used to break up tiling patterns.

Compatibility: The FluidFrenzy/Lava shader is for URP and BiRP. The High Definition Render Pipeline (HDRP) requires a separate, dedicated shader: FluidFrenzy/HDRP/Lava.

Lava Shader

Lighting

Properties controlling the illumination and shading effects.

Property Description
Light Intensity Scales the influence of the main directional light on the lava surface (e.g., specular highlights).
Shadows Enables or disables if the lava surface receives shadows from other scene objects.
Heat & Emission

Properties controlling the lava’s color and emission, driven by the fluid’s ‘heat’ (usually fluid velocity/movement).

Property Description
Heat LUT Gradient Lookup Texture (LUT) used to determine the lava’s color and emission based on the fluid’s ‘heat’.
Heat Scale Scales the fluid ‘heat’ value when sampling the Heat LUT gradient. Lower values increase the effective range of the lookup.
Emission Map Texture used for the emission color of the lava. A sample of this texture is multiplied by the fluid’s ‘heat’.
Emission Scales the overall intensity of the emission determined by the Heat LUT and the Emission Map.
Material Properties

Properties controlling the cold lava surface’s visual and PBR shading characteristics.

Property Description
Albedo Sets the base Albedo color and texture of the lava. This represents the appearance of cold (non-emissive) lava.
Smoothness Scale Scales the PBR smoothness of the cold lava surface, affecting its specular reflections.
Normal Map Normal map texture used to add detailed lighting to the cold lava surface.
Rendering

General rendering, depth-handling, and simulation sampling properties.

Property Description
Cull Mode Which triangle faces to discard: Back (default, typical opaque surface), Front (invert), or Off (double-sided; both faces render and lighting uses the correct face normal).
Layer Selects which layer (e.g., Water or Lava, etc.) from the Fluid Simulation field to sample for effects.
Fade Height The world height at which the lava will be fully faded out.
Used to soften edges or blend with geometry above a certain height.
Linear Clip Offset A linear offset applied to the clip-space Z depth
to help prevent visual clipping (Z-fighting) with close terrain or surfaces.
Exponential Clip Offset An exponential/depth-based offset applied to the clip-space Z depth
to help prevent visual clipping (Z-fighting) with distant terrain or surfaces.
Non-Tiled Sampling Hides texture tiling artifacts on the lava albedo, normal and emission by sampling a noise key once and offsetting samples. Slight extra cost.

Particles Shaders

Fluid Frenzy uses custom shaders to render its completely GPU-accelerated particle system. Two shaders are available: ProceduralParticle (Lit) and ProceduralParticleUnlit. Both render particles as billboards.

  • ProceduralParticle (Lit): Includes PBR lighting with support for Normal Maps, Metallic, and Smoothness.
  • ProceduralParticleUnlit (Unlit): Does not perform lighting, offering a lower rendering cost.
  • FluidParticleSplash

All shaders share settings for Blend Mode and Billboard Mode. Billboard Mode controls particle orientation, including options for camera-facing or world-up normals to manage lighting.

Compatibility: | Alpha Threshold | Alpha below this value will be clipped. | The High Definition Render Pipeline (HDRP) requires its own dedicated shaders: FluidFrenzy/HDRP/ProceduralParticle and FluidFrenzy/HDRP/ProceduralParticleUnlit.

Particle Shader | Fade Submerged | Automatically fades out particles that fall beneath the surface level of the simulated fluid grid. |

Procedural Particle (Unlit) Properties
Property Description
Albedo albedo color and transparency of the particle.
Color albedo color and transparency of the particle.
Normal Map can be used to add extra lighting details.
Alpha Threshold Alpha below this value will be clipped.
Fade Submerged Fades particles that fall below the fluid surface.
Blend Mode select which to use for the particles.
Source Blend Source Blend.
Dest Blend Dest Blend.
ZWrite Write particle to the depth buffer.
Billboard Mode Select which method to use for rendering the particle billboard.

• Camera: the billboard and world normal will face in the direction of the camera.

• Camera Normal Up: the billboard will face the camera and the normal will face in in the world space up direction.This can be useful to have more uniform lighting from every direction.

• Up: the billboard and normal will both face in the world space up direction.

• Normal: not yet implemented.
Smoothness The smoothness of this material.
Fade Submerged Fades particles that fall below the fluid surface.
Procedural Particle Splash Properties

Custom fluid rendering shader for water splashes.

Splash Particles

Property Description
Atlas Atlas texture driving the fluid shapes. R = Droplets, G = Specular Highlights, B = Aerated Foam, A = Dissolve Noise.
Sprite Sheet Grid The number of columns (X) and rows (Y) in the atlas. The shader will randomly assign a static frame to each particle at birth.
Alpha Multiplier Globally scales the overall opacity of the particles. Higher values make the fluid look thicker and more opaque.
Alpha Threshold Pixels with transparency below this value are discarded. Higher values increase performance but can make edges look jagged.
Droplet Base Color The baseline ambient color of the water droplets.
3D Normal Strength Generates physical volume shading by calculating slopes from the Red channel.
Edge Ring Threshold Controls the internal thickness of the droplet. Lower values make the center thicker.
Edge Ring Softness Controls the blurriness of the droplet’s outer edge. Higher values create a softer look.
Highlight Color The specular color of the light reflecting off the droplets.
Highlight Intensity How bright the specular highlights glow when hit by directional light. Higher values create a glaring, highly reflective surface.
Highlight Focus Controls the size and sharpness of the highlights. Higher values tighten the light into tiny, sharp pinpricks.
White Water Color The color of the internal aeration and foam (driven by the Blue channel).
White Water Opacity How strongly the foam channel blends into the droplet. Higher values fill the droplet, simulating thick, churning white water.
Dissolve Speed How fast the particle physically erodes over its lifetime. A value of 1.2 will fully dissolve the particle exactly as it dies.
Enable Soft Particles Smoothly fades the particle alpha where it intersects with scene geometry to prevent harsh clipping lines.
Soft Particles Fade Distance The physical distance over which the intersection fade occurs. Higher values create a longer, softer fade against walls and floors.
Fade Submerged Automatically fades out particles that fall beneath the surface level of the simulated fluid grid.
Blend Mode The mathematical blending operation used to draw the particle onto the screen.
Source Blend The source blend factor used for custom blend modes.
Dest Blend The destination blend factor used for custom blend modes.
ZWrite Whether the particle writes its depth to the Z-Buffer. Usually left off for transparent fluids.
Billboard Mode Controls how the particle faces the camera. ‘Camera Normal Up’ is recommended for proper directional lighting.

Shadows

Both the Water and Lava is rendered after any opaque layers to allow for refraction and to prevent sorting issues. This means that in the Built-in Render pipeline shadows are not automatically sampled due to the transparent nature of the rendering. In order to solve this the user can add he ShadowGrabber component to the Main Directional Light in the scene. This will assign the shadow buffer to global shader property so that the Water and Lava shader can read it. In order for a material to read it the Shadows property on the Material needs to be set to either Hard or Soft.

HDRP Water System

Fluid Frenzy has the ability to apply the Fluid Simulation’s data to the HDRP Water System. This allows the user to enhance their HDRP scene without sacrificing the quality HDRP provides.

To support this the user will have to enable decal support in their HDRP Quality settings: alt text

The displacement and flowmapping of the Fluid Simulation is applied using the Water Decal system, which is automatically created when setting the Water Surface to the HDRP Water System mode. The Water Decal system uses signed normalized render buffers to apply the displacement, which requires a amplitude to be applied to the decal. This amplitude is the maximum height the simulation will be able to displace the water surface.

alt text

Property Description
Target Water Surface The target HDRP Water System component the simulation is to be applied. (Requires HDRP package).
Amplitude Controls the maximum amplitude of the Fluid Simulation used to encode/decode the height to/from 0-1 range
Large Current Controls the weight that the Fluid Simulation’s velocity should be applied to the Large Current waves of the HDRP Water System.
Ripples Controls the weight that the Fluid Simulation’s velocity should be applied to the Rupples of the HDRP Water System.