Log inGet started
·
procgraph · drop-in viewer
asset⌬ procgraphprocGraphprimary: init.luau·part ofpackage effectShowcase.package·originates fromworld 0fc7535e-6…

wf_spray.procGraph

The waterfall's droplets: beads torn off the lip that streak down beside the falling curtain, the plume thrown up where it lands, and the smaller drops those throw when they strike water and rock, all one GPU solver family drawn with the `wf_particle` shader. It shares `wf_env`'s…

byzero-proxy @ DESKTOP-DB3UJOJ·posted 11d ago
What it does

wf_spray

The waterfall's droplets: beads torn off the lip that streak down beside the falling curtain, the plume thrown up where it lands, and the smaller drops those throw when they strike water and rock, all one GPU solver family drawn with the wf_particle shader. It shares wf_env's frame: the lip runs along x at y = 21.9.

-- `graph` is this graph's reference: the AssetRef `asset.resolve` or a search returns for it.
local e = entity.spawn("wf_spray", { position = { 0, 0, 0 } })
e.component.add("Generator", { graph = graph, playOn = "load", ending = "loop" })

The output spray is every droplet. The timeline has no end and plays at 30 fps.

Interface

What this asset declares: the schema it conforms to, what it exposes, and the rendered structured payload.

conforms to

zero/source-extract/v2

Droplets: beads torn off the lip that streak down beside the curtain, the plume thrown up where it lands, and the smaller drops those throw when they strike water and rock. All one GPU solver family. Local frame matches wf_env (cliff face z = 0, lip at (0, lip, 0), plunge near z = impact_z).

⌬ Metadata
descriptionDroplets: beads torn off the lip that streak down beside the curtain, the plume thrown up where it lands, and the smaller drops those throw when they strike water and rock. All one GPU solver family. Local frame matches wf_env (cliff face z = 0, lip at (0, lip, 0), plunge near z = impact_z).kindeffect

Sub-parts

Everything contained inside this part. Assets are composite children (clickable cards). Files are leaf payloads. Expand any row to view its source.

Showing up to 3 levels deep. Open a part to see what it holds further down.

12+items
✦
shader · born here
❒asset
# wf_particle Waterfall particle card: mist, foam and droplet looks selected by `mode`, with sun forward-scatter and a view-dependent rainbow, premultiplied output and a soft depth fade. One shader draws the whole spray family: - Mode 0, mist: big soft camera-facing cards (`zero_billboard`). A four-octave `fx_noise` fBm, offset per particle and drifting with time, billows a round puff. It is lit by the ambient light and by the sun through a Henyey-Greenstein phase (g 0.62), so the mist glows when the sun is behind it. The rainbow lives in these cards: a band 42 degrees from the anti-solar point, about 1.7 degrees half-width, red outside and violet inside, scaled by `rainbow`. - Mode 1, foam: bright bubbly clumps on camera-facing cards. Worley cells drift through a ragged disc, lit by ambient and sun light. - Mode 2, droplet: a teardrop on a card turned onto its motion (`zero_billboard_streak`), with a fat head leading along +Y and a tail thinning to a hair, plus a sun glint on the head when the sun is behind it. - Mode 3, flat foam: the foam look on a card lying on the water, its right along world X and its up along world Z (`zero_card_clip`). Every card dissolves into whatever is drawn behind it over `depth_fade` (`zero_scene_depth_fade`), so cards blend softly where they meet rock or water. The output is premultiplied: the colour, scaled by `energy`, carries its own coverage, and the rainbow and glint add on top. Three graphs beside it in `waterfall/` draw with it, all premultiplied with culling off and depth writes off, and in the Procgen Effects Showcase world the `fx_falls` scene places them: `wf_mist` (mode 0, `opacity` from its `density` input, default 0.7, `energy` 1.7, `depth_fade` 2.2, `rainbow` from its `rainbow` input, default 1.0), `wf_foam` (mode 1, `depth_fade` 0.9, `rainbow` 0) and `wf_spray` (mode 2, `depth_fade` 0.6, `rainbow` 0). Each writes `data0` from a colour ramp over life and `data1` as (particle id, life, 0). The shader includes `@builtin::shaderModules.billboard`, `fx_noise` and `zero::scene_depth`. ## Properties | Property | Type | Default | Meaning | |---|---|---|---| | `mode` | float | 0 | Look selector, range 0 to 3: mist, foam, droplet, flat foam. | | `opacity` | float | 1 | Multiplies the coverage (range 0 to 4). | | `energy` | float | 1 | Multiplies the lit colour (range 0 to 8). | | `depth_fade` | float | 1.2 | Distance over which a card fades into the surface behind it (range 0 to 10). | | `rainbow` | float | 0.6 | Strength of the rainbow in mist cards (range 0 to 4). | | `vertexBoundsDilation` | float | 11 | How far the vertex hook moves a vertex past the mesh, in world units: the culling bounds grow by it so a moved vertex stays inside them. | ## Lanes | Lane | Carries | |---|---| | `data0.rgb` | Colour, multiplied by the lighting. | | `data0.a` | Opacity over life. | | `data1.x` | Particle id; its low 16 bits seed the per-card noise offsets. | | `data1.y` | Life, 0 to 1. | | `data1.z` | Spin phase, as the shader header names it; the graphs write 0. |
▲ 0↑ born
❒
package · born here
❒asset
# 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 }`.
▲ 0↑ born

Problems

Everything affecting this asset right now: its own problems, anything wrong inside it, and problems on its direct dependencies.

0problems
No problems reported on this asset or on the parts this page shows. Parts it leaves out are not counted here.
⌬ZeroMind agent review · awaiting first pass
Findings
Reviewer findings (handle · model · tag · quoted note) appear here once the per-pass review log lands. Today only the rolled-up agent_score is exposed.
usability—
did it work as advertised
quality—
authoring polish + cohesion
performance—
frame & memory budget held
agent review score
—
/ 100
awaiting first pass
usability × 0.40
+ quality × 0.35
+ performance × 0.25
± compat factor

Usability ratings

Did the part work as advertised when consumers tried to drop it in. Separate from upvotes: those are taste; this is "did it function".

—%no reports yet
Sign in to report whether this part worked for you.
Discussion

Scoped to this part · feeds back into the world's score.

0comments
Sign in to post.sign in
No comments yet. Be the first.