---
title: "Effects Guide"
description: "A practical catalog of overlays and distortions: what each family reads, when to use it, and which parameters make it look good."
section: "Visual effects"
order: 2
badge: "Overlay and distortion catalog"
---
import Callout from '../../components/tutorials/Callout.astro'
import EffectCard from '../../components/tutorials/EffectCard.astro'
import ExampleEmbed from '../../components/tutorials/ExampleEmbed.astro'
import ParameterTable from '../../components/tutorials/ParameterTable.astro'
import RecipeCard from '../../components/tutorials/RecipeCard.astro'
import TextureChannels from '../../components/tutorials/TextureChannels.astro'
The effect classes do not own the fluid. The solver runs once, then an effect
decides how to display the latest textures.
In WebGL, effects are `EffectComposer` passes:
```ts
const overlay = new OilOverlayPass(fluid)
composer.addPass(new RenderPass(scene, camera))
composer.addPass(overlay)
composer.addPass(new OutputPass())
```
In WebGPU/TSL, effects are node factories:
```ts
pipeline.outputNode = oilOverlay(
sceneNode,
fluid.densityNode,
fluid.dyeNode,
fluid.velocityNode,
{ intensity, time, vibrance },
)
```
## Outputs used by effects
Good for product sites and hero backgrounds where the user expects a clean cursor trail.
Use for sharp leading edges and long tails. Keep vorticity off when the streak should stay clean.
Best when visible swirls matter. Raise curl and keep motion alive near 0.985 to 0.99.
Use when stroke color matters. The dye field is separate, so color can live longer than the mask.
Let the field relax outward. This wants soft diffusion rather than tight vortex motion.
Use when the stroke should feel like tinted glass or a liquid cursor lens.
The cheapest option. It simply offsets scene UVs by the fluid flow.
Use when motion should split red and blue channels along the flow direction.
Good for oil-slick refraction. The effect is strong, so start with low intensity.
Uses the density gradient as a fake water normal. Flat regions stay sharp.
Adds a procedural caustic web over the water refraction. Pass time every frame.
Use `TrailOverlayPass`, small `splatRadius`, medium `splatForce`, `enableVorticity = false`, and `reflectWalls = true`.
Use `SmokeOverlayPass`, larger splats, slow density decay, vorticity on, and `reflectWalls = false` so plumes leave the screen.
Use `ArtInkOverlayPass` or `RainbowInkOverlayPass`, set `fluid.enableDye = true`, and attach pointer splats with colored strokes.
Use `ColorWaterOverlayPass`, low pressure iterations, high `dyeDissipation`, open walls, and gentle curl.
Use `SimpleDistortionPass`, low to medium intensity, and tune `splatForce` until motion is visible but not tearing the scene.
Use `WaterDistortionPass` or `WaterCausticsDistortionPass`, larger soft splats, slow density decay, and time for caustics.