# wf_sheet_back
Waterfall curtain material, the back one of the three staggered curtains of the falls.
`waterfall/wf_water.procGraph` builds the still and falling water of the waterfall and assigns this
material to one of its parts by name; the graph's header states that the water materials are
`.material` assets so the Model receives their blend, cull and depth-write state. The
`WaterfallWater` Generator entity in the Procgen Effects Showcase world's `fx_falls` scene runs that graph. The graph builds each
curtain from a 6.8 x 21.5 m grid of 44 x 220 cells stood upright with its top at the lip, and
assigns this material to `curtain_back`; the graph's comment states that the vertex shader places
the real curtain and the grid only carries bounds for culling.
Shader: `wf_sheet` (`waterfall/shaders/wf_sheet.shader`). Its README: a waterfall curtain with a ballistic
vertex path off the lip, packet-timed ribbon noise that tears with distance fallen, aeration to
white, backlit scatter and a refracted background. From its header: the vertex stage places every
vertex on the path water takes off a lip, leaving with `out_speed` and falling under gravity (9.81),
so the curtain bows out and widens; the fragment pattern is pinned to packets of water, so its
streaks stretch as the water speeds up and the sheet tears into ribbons as the breakup threshold
rises with the distance fallen. The cliff behind shows through, bent by the ripples.
Render state: `blend: alphaBlend`, `cull: none`, `depth_write: false`.
## Properties
- `z0: 42`: z of the lip line the water leaves from (the graph's `Z0`).
- `base_y: 21.9`: height of the lip, the top edge of the sheet.
- `height: 21.5`: drop from the lip to the plunge.
- `width: 9.8`: width of the sheet at the lip (default 6.6).
- `out_speed: 1.45`: horizontal speed the water leaves the lip with; the sheet moves `out_speed`
times the fall time away from `z0` toward -z (default 1.7).
- `spread: 0.2`: extra width at the bottom, as width x (1 + spread x s) with s running from 0 at the
lip to 1 at the plunge (default 0.22).
- `seed: 11`: seed for the sway and the noise patterns (default 3).
- `density: 1.1`: multiplier on the sheet's body coverage (default 1.15).
- `z_bias: -0.32`: z offset subtracted from the whole sheet (default 0); -0.32 shifts this curtain
0.32 m toward +z, behind the main one.
# wf_sheet_main
Waterfall curtain material, the middle of the three staggered curtains of the falls.
`waterfall/wf_water.procGraph` builds the still and falling water of the waterfall and assigns this
material to one of its parts by name; the graph's header states that the water materials are
`.material` assets so the Model receives their blend, cull and depth-write state. The
`WaterfallWater` Generator entity in the Procgen Effects Showcase world's `fx_falls` scene runs that graph. The graph builds each
curtain from a 6.8 x 21.5 m grid of 44 x 220 cells stood upright with its top at the lip, and
assigns this material to `curtain_main`; the graph's comment states that the vertex shader places
the real curtain and the grid only carries bounds for culling.
Shader: `wf_sheet` (`waterfall/shaders/wf_sheet.shader`). Its README: a waterfall curtain with a ballistic
vertex path off the lip, packet-timed ribbon noise that tears with distance fallen, aeration to
white, backlit scatter and a refracted background. From its header: the vertex stage places every
vertex on the path water takes off a lip, leaving with `out_speed` and falling under gravity (9.81),
so the curtain bows out and widens; the fragment pattern is pinned to packets of water, so its
streaks stretch as the water speeds up and the sheet tears into ribbons as the breakup threshold
rises with the distance fallen. The cliff behind shows through, bent by the ripples.
Render state: `blend: alphaBlend`, `cull: none`, `depth_write: false`.
## Properties
- `z0: 42`: z of the lip line the water leaves from (the graph's `Z0`).
- `base_y: 21.9`: height of the lip, the top edge of the sheet.
- `height: 21.5`: drop from the lip to the plunge.
- `width: 9.2`: width of the sheet at the lip (default 6.6).
- `out_speed: 1.7`: horizontal speed the water leaves the lip with; the sheet moves `out_speed`
times the fall time away from `z0` toward -z (default 1.7).
- `spread: 0.22`: extra width at the bottom, as width x (1 + spread x s) with s running from 0 at
the lip to 1 at the plunge (default 0.22).
- `seed: 3`: seed for the sway and the noise patterns (default 3).
- `density: 1.15`: multiplier on the sheet's body coverage (default 1.15).
- `z_bias: 0`: z offset subtracted from the whole sheet (default 0); the middle curtain sits at the
unshifted position.
# wf_river_mat
Water material for the river that runs to the waterfall's lip. `waterfall/wf_water.procGraph` builds the
still and falling water of the waterfall and assigns this material to one of its parts by name; the
graph's header states that the water materials are `.material` assets so the Model receives their
blend, cull and depth-write state. The `WaterfallWater` Generator entity in the Procgen Effects Showcase world's `fx_falls` scene
runs that graph. This material goes on `river_skin`: a 7.2 x 13 m grid at the lip height (21.9),
centred 6.9 m on the +z side of the waterfall's z (Z0 + 6.9).
Shader: `wf_pool` (`waterfall/shaders/wf_pool.shader`). Its README: plunge-pool water with travelling ripples,
churn turbulence, two-phase radial foam flow, depth-driven shore and rock foam, fresnel sky
reflection and sun glitter, and a refracted bed. It reads the scene depth already drawn under the
surface to choose between a lighter and a darker water colour and to put foam where the water meets
the bed and rocks; alpha runs from 0.55 to 1 with that depth term, plus foam. The river uses the
same shader as the plunge pool (`wf_pool_mat`) with its own values.
Render state: `blend: alphaBlend`, `cull: none`, `depth_write: false`.
## Properties
- `origin_x: 0` and `origin_z: 42`: world x and z the shader measures positions from. 42 is the `Z0`
constant `waterfall/wf_water.procGraph` places the waterfall at.
- `impact_x: 0` and `impact_z: 60`: the point, relative to the origin, that the churn is centred on
and the foam flows away from. The river grid spans z 0.4 to 13.4 relative to the origin, so this
point lies upstream of it, and the foam flow moves toward the lip.
- `churn_radius: 3`: size of the churned zone around that point, as the falloff `exp(-(d /
churn_radius)^2)`.
- `foam: 0.55`: blend weight of the foam over the water colour (default 1.0).
# wf_pool_mat
Water material for the plunge pool at the foot of the waterfall. `waterfall/wf_water.procGraph` builds
the still and falling water of the waterfall and assigns this material to one of its parts by name;
the graph's header states that the water materials are `.material` assets so the Model receives
their blend, cull and depth-write state. The `WaterfallWater` Generator entity in the Procgen Effects Showcase world's `fx_falls`
scene runs that graph. This material goes on `pool_skin`: a 21 x 18.5 m grid at height -0.35,
centred 4.4 m on the -z side of the waterfall's z (Z0 - 4.4).
Shader: `wf_pool` (`waterfall/shaders/wf_pool.shader`). Its README: plunge-pool water with travelling ripples,
churn turbulence, two-phase radial foam flow, depth-driven shore and rock foam, fresnel sky
reflection and sun glitter, and a refracted bed. It reads the scene depth already drawn under the
surface to choose between a lighter and a darker water colour and to put foam where the water meets
the bed and rocks; alpha runs from 0.55 to 1 with that depth term, plus foam.
Render state: `blend: alphaBlend`, `cull: none`, `depth_write: false`.
## Properties
- `origin_x: 0` and `origin_z: 42`: world x and z the shader measures positions from. 42 is the `Z0`
constant `waterfall/wf_water.procGraph` places the waterfall at.
- `impact_x: 0` and `impact_z: -3.5`: the plunge point, relative to the origin (default impact_z
-3.4). The water churns around it and the foam flows outward from it.
- `churn_radius: 3.7`: size of the churned zone around the plunge point, as the falloff `exp(-(d /
churn_radius)^2)` (default 3.6).
- `foam: 1`: blend weight of the foam over the water colour (default 1.0).
# wf_sheet_front
Waterfall curtain material, the front one of the three staggered curtains of the falls.
`waterfall/wf_water.procGraph` builds the still and falling water of the waterfall and assigns this
material to one of its parts by name; the graph's header states that the water materials are
`.material` assets so the Model receives their blend, cull and depth-write state. The
`WaterfallWater` Generator entity in the Procgen Effects Showcase world's `fx_falls` scene runs that graph. The graph builds each
curtain from a 6.8 x 21.5 m grid of 44 x 220 cells stood upright with its top at the lip, and
assigns this material to `curtain_front`; the graph's comment states that the vertex shader places
the real curtain and the grid only carries bounds for culling.
Shader: `wf_sheet` (`waterfall/shaders/wf_sheet.shader`). Its README: a waterfall curtain with a ballistic
vertex path off the lip, packet-timed ribbon noise that tears with distance fallen, aeration to
white, backlit scatter and a refracted background. From its header: the vertex stage places every
vertex on the path water takes off a lip, leaving with `out_speed` and falling under gravity (9.81),
so the curtain bows out and widens; the fragment pattern is pinned to packets of water, so its
streaks stretch as the water speeds up and the sheet tears into ribbons as the breakup threshold
rises with the distance fallen. The cliff behind shows through, bent by the ripples.
Render state: `blend: alphaBlend`, `cull: none`, `depth_write: false`.
## Properties
- `z0: 42`: z of the lip line the water leaves from (the graph's `Z0`).
- `base_y: 21.9`: height of the lip, the top edge of the sheet.
- `height: 21.5`: drop from the lip to the plunge.
- `width: 7.6`: width of the sheet at the lip (default 6.6).
- `out_speed: 1.95`: horizontal speed the water leaves the lip with; the sheet moves `out_speed`
times the fall time away from `z0` toward -z (default 1.7).
- `spread: 0.26`: extra width at the bottom, as width x (1 + spread x s) with s running from 0 at
the lip to 1 at the plunge (default 0.22).
- `seed: 27`: seed for the sway and the noise patterns (default 3).
- `density: 0.8`: multiplier on the sheet's body coverage (default 1.15).
- `z_bias: 0.34`: z offset subtracted from the whole sheet (default 0); 0.34 shifts this curtain
0.34 m toward -z, in front of the main one.
# effectShowcase
The procedural effects of the Procgen Effects Showcase world. Each one is a `.procGraph` that plays
through a `Generator`, and every shader, material and module a graph draws with sits beside it in
this package, so the package carries everything its graphs need. Each graph's README says what it
makes, how to place it and what each of its inputs changes.
## Contents
| Folder | Graphs | What they make |
|---|---|---|
| `combat/` | `impact`, `muzzleFlash`, `tracer` | A round striking a hard surface, the bloom at a barrel as a weapon fires, and the glowing streak of a round in flight. They draw with `fxFlash`, `fxSmoke` and `fxSpark` in `combat/shaders/`. |
| `blast/` | `wall_blast` | A charge blowing a breach through a stone block wall, on a 9.6 s loop. |
| `storm/` | `storm`, `tower` | A thunderstorm around a lone tower: wind-driven rain, lightning striking on the schedule `schedule.module` keeps, and sparks and smoke where strikes land. `tower` is the stone keep it stands around. |
| `rift/` | `arcane_rift` | A rift tearing open in the ground, its motes and rubble moved by the compute shaders in `rift/compute/`. |
| `dragon/` | `dragon_breath` | A dragon's fire breath sweeping a courtyard: a flame jet, rolling smoke and drifting embers. |
| `launch/` | `launch` | A heavy-lift rocket liftoff on one looping timeline, with the heat-haze material `rk_haze_mat`. |
| `waterfall/` | `wf_env`, `wf_water`, `wf_spray`, `wf_foam`, `wf_mist` | A waterfall built in parts: the cliff, basin and boulders, the falling and still water, the droplets, the foam where the falls land, and the mist with its rainbow. Its water materials are in `waterfall/materials/`. |
| `shaders/` | | `fx_noise`, the noise functions the waterfall and wall blast shaders include. |
## Playing one
A graph plays on a `Generator` component bound to it:
```lua
-- `graph` is the graph's reference: the AssetRef `asset.resolve` or a search returns for it.
local e = entity.spawn("impact", { position = { 0, 1, 0 } })
e.component.add("Generator", { graph = graph, playOn = "load" })
```
Set a graph's inputs with the Generator's `params`, e.g. `params = { size = 3 }`.