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

wall_blast.procGraph

A charge blowing a breach through a stone block wall, on a 9.6 s loop. The wall stands whole, a fireball bursts from its face a second in, the blocks around the breach are thrown out as tumbling, glowing debris with a spray of sparks, a shock ring runs out across the ground, and…

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

wall_blast

A charge blowing a breach through a stone block wall, on a 9.6 s loop. The wall stands whole, a fireball bursts from its face a second in, the blocks around the breach are thrown out as tumbling, glowing debris with a spray of sparks, a shock ring runs out across the ground, and dust and smoke roll out and settle. Over the first fifth of a second of the next loop the breach knits back in.

Everything is a function of the graph clock modulo the loop, so it repeats with no solver ever restarting. The wall runs along x at z = 8 in the generator's own space, and its blocks and debris are drawn with the blast_stone shader, the fire, smoke and dust with blast_puff, the sparks with blast_spark and the shock ring with blast_shock.

-- `graph` is this graph's reference: the AssetRef `asset.resolve` or a search returns for it.
local e = entity.spawn("wall_blast", { position = { 0, 0, 0 } })
e.component.add("Generator", { graph = graph, playOn = "load", ending = "loop" })
OutputWhat it draws
stoneThe wall's blocks, the breach's blocks while they stand, and the debris
fireThe fireball at the wall face
sparksSparks thrown out with the debris
shockThe shock ring on the ground
smokeSmoke rising from the breach
dustDust rolling out across the ground
lightThe light of the blast

The timeline has no end and plays at 60 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

wall_blast: a charge blowing a breach through a stone block wall, on a 9.6 s loop. The wall stands whole, a fireball bursts from its face a second in, the blocks around it are thrown out as tumbling debris with sparks, a shock ring runs across the ground, and dust and smoke roll out and settle before the breach knits back in for the next blast. Everything in the blast is a function of the graph clock modulo CYCLE, so it loops without ever restarting a solver: births are animated-rate pulses, the wall's hidden/visible state is an animated value, and every look is read off a particle's own life. Coordinates: the wall runs along x at z = WZ; the camera looks down +z.

pulse(t0: ?, dur: ?, count: ?) → void

argtypedescription
t0?
dur?
count?

nm(p: ?) → void

argtypedescription
p?

force(f: ?) → void

argtypedescription
f?

fm(op: ?, a: ?, b: ?) → void

argtypedescription
op?
a?
b?

attr(name: ?, stride: ?) → void

argtypedescription
name?
stride?

rnd(lo: ?, hi: ?, seed: ?) → void

argtypedescription
lo?
hi?
seed?

comb(x: ?, y: ?, z: ?, w: ?) → void

argtypedescription
x?
y?
z?
w?

sw(f: ?, pat: ?) → void

argtypedescription
f?
pat?

vm(op: ?, a: ?, b: ?, scale: ?) → void

argtypedescription
op?
a?
b?
scale?

setattr(dom: ?, name: ?, field: ?) → void

argtypedescription
dom?
name?
field?

ramp(tag: ?, ty: ?, keys: ?, by: ?) → void

argtypedescription
tag?
ty?
keys?
by?

remap(f: ?, a: ?, b: ?, c: ?, d: ?) → void

argtypedescription
f?
a?
b?
c?
d?

const(v: ?) → void

argtypedescription
v?

draw(dom: ?, mesh: ?, mat: ?, shadows: ?) → void

argtypedescription
dom?
mesh?
mat?
shadows?

sprites(tag: ?, pts: ?, mat: ?, o: ?) → void

Camera-facing soft sprites (fire / smoke / dust).

argtypedescription
tag?
pts?
mat?
o?

streaks(tag: ?, pts: ?, o: ?) → void

Velocity-aligned streaks (sparks / embers).

argtypedescription
tag?
pts?
o?

course(tag: ?, nx: ?, rows: ?, yc: ?) → void

argtypedescription
tag?
nx?
rows?
yc?

blockAttrs(pts: ?) → void

blocks: unit box scaled to a block, a whisker of yaw, per-block tint/seed

argtypedescription
pts?

rockDress(pts: ?) → void

argtypedescription
pts?

newCurl0(tag: ?) → void

argtypedescription
tag?

flow(K: ?) → void

Every solver gets its OWN copy of every field node it reads. Field kernels are cached by content and a node wired into two solvers (or two generators of one graph) was compiled for only one of them, which then silently lost the force: the plume would sit on the ground in some runs and rise in others.

argtypedescription
K?

newCurl(tag: ?, freq: ?, amp: ?, seed: ?) → void

argtypedescription
tag?
freq?
amp?
seed?

shock(tag: ?, delay: ?, strength: ?, maxR: ?, seed: ?) → void

shockwave discs

argtypedescription
tag?
delay?
strength?
maxR?
seed?

out(name: ?, ...: ?) → void

One output per material: a geometry merged on the device may carry only one Material.

argtypedescription
name?
...?
⌬ Metadata
descriptionwall_blast: a charge blowing a breach through a stone block wall, on a 9.6 s loop. The wall stands whole, a fireball bursts from its face a second in, the blocks around it are thrown out as tumbling debris with sparks, a shock ring runs across the ground, and dust and smoke roll out and settle before the breach knits back in for the next blast.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.

30+items
✦
shader · born here
❒asset
# blast_shock Ground shockwave disc: refracting ring edge plus a hot leading glare, driven by lanes (life, radius, strength, seed). It draws on a flat disc lying on the ground. Near the disc's rim a thin band bends the scene behind it: the shader reads the scene colour through `zero_scene_color_refract`, pushed radially outward from the centre (with the vertical push scaled by 0.35 for the foreshortened ground), by 46 times the band's amount (its profile times the life fade times strength). The band has a steep outer front and a long soft trail toward the centre, and its width wobbles with a three-octave `fx_noise` fBm around the circle. A warm white glare `(1.0, 0.86, 0.66)` sits on the leading edge. The ring is held at a thickness in metres, so it thins relative to the disc as the front runs out, and the whole effect fades with the square of the remaining life. The `wall_blast` graph (`blast/wall_blast.procGraph`) draws two fronts with it through its `shock_mat` material (transparent blend): one at strength 1.0 that grows to a radius of 30, and a second at strength 0.55, starting 0.12 s later, that grows to 24. Each lives 1.5 s; the graph scales a unit plane to the front's diameter and writes `data0` as (life, radius, strength, random seed). The shader includes `fx_noise` and `zero::scene_color`. ## Properties | Property | Type | Default | Meaning | |---|---|---|---| | `unused` | float | 0 | The one entry properties.yaml lists (range 0 to 1). Every value the shader reads comes from the lanes below. | ## Lanes | Lane | Carries | |---|---| | `data0.x` | Life, 0 to 1. | | `data0.y` | Radius of the front in metres; sets the ring's width relative to the disc. | | `data0.z` | Strength: scales the bend and the glare. | | `data0.w` | Seed for the ripple noise. |
▲ 0↑ born
✦
shader · born here
❒asset
# blast_puff Soft, domain-warped-fBm sprite used for the blast's fire (mode 0, additive) and lit smoke and dust (mode 1, alpha). Each particle is a camera-facing card (`zero_billboard`) cut to a disc and turned by its seed. Two-octave `fx_noise` fBm warps the coordinates, a four-octave fBm and a finer two-octave fBm erode the disc from the rim, and the domain drifts with the particle's life so the edge curls as it ages. Per-particle colour, life, seed and glow arrive on `data0`/`data1`. The sprite is depth-faded against the scene (soft particles) over 1 unit wherever a surface lies behind it; over the sky it keeps its full opacity. - Mode 0 (fire) is brightest in the dense middle: the colour runs from 0.55 of the lane colour at the thin edge to 1.25 of it plus a warm `(0.5, 0.32, 0.12)` boost scaled by glow at the core. It returns the colour multiplied by its coverage, for additive blending. - Mode 1 (smoke and dust) lights a sphere normal bumped by the noise: wrapped sun light, half the ambient light, a rim catching the sun, self-shadowing from the noise, and an orange fire underlight `(1.0, 0.4, 0.09)` that grows with the square of glow on the underside and core. - A mode above 1.5 draws a debug ramp from blue to orange over world height 0 to 14. The `wall_blast` graph (`blast/wall_blast.procGraph`) builds two materials from it: `fire_mat` (mode 0, additive) for the fireball and the white flash cards, and `smoke_mat` (mode 1, transparent) for the smoke column and cap, the smoke trailing behind flying rock, the dust puffs where rock lands and the dust ring rolling along the ground. The graph sizes each card from the particle's size and life and writes `data1` as (life, a random value, a glow ramp over life, a constant erode bias). 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 1: below 0.5 fire, 0.5 to 1.5 smoke and dust. | | `vertexBoundsDilation` | float | 34 | 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; HDR for fire. | | `data0.a` | Peak opacity. | | `data1.x` | Life, 0 at birth to 1 at death; drifts the noise domain. | | `data1.y` | Seed: turns the card and offsets the noise. | | `data1.z` | Glow 0 to 1: the fire core boost in mode 0 and the fire underlight in mode 1. | | `data1.w` | Erode bias, subtracted from the shape so a larger value thins the puff. |
▲ 0↑ born
✦
shader · born here
❒asset
# blast_spark Additive streak or dot for sparks and embers; velocity-aligned via `zero_billboard_streak`. The instance's +Y runs along its velocity and its Y scale is stretched by speed, so a fast spark draws as a streak and a slow ember as a dot. The fragment shapes a capsule with a bright core and a soft tail, and flickers it with `0.72 + 0.28 * sin(time * rate + seed * 91)`. It returns the HDR colour times coverage with the coverage as alpha. The `wall_blast` graph (`blast/wall_blast.procGraph`) uses it through `spark_mat` (additive) for the embers and sparks thrown from the blast. The graph turns each particle onto its velocity, stretches its Y scale from 1 to 9 times its size over speeds 0 to 32, colours it from an HDR ramp that cools from yellow-white to dull red over life, and writes `data1` as (life, a random seed, a flicker rate of 45, 0). The shader includes `@builtin::shaderModules.billboard`. ## Properties | Property | Type | Default | Meaning | |---|---|---|---| | `unused` | float | 0 | The one entry properties.yaml lists (range 0 to 1). Every value the shader reads comes from the lanes below. | | `vertexBoundsDilation` | float | 0.1 | 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` | HDR colour. | | `data0.a` | Intensity, multiplied into the colour. | | `data1.x` | Life 0 to 1, as the header states and the graph writes it. | | `data1.y` | Seed: the flicker's phase. | | `data1.z` | Flicker rate, multiplied by time inside the flicker sine. | | `data1.w` | 0. |
▲ 0↑ born
✦
shader · born here
❒asset
# blast_stone Procedural weathered stone (surface/PBR) for the wall and everything it breaks into. Per-instance lanes: tint, seed, heat (emissive glow), soot. The pattern is computed from the mesh UV scaled by 5.5 and offset by the seed, so every block reads differently. A height field of `fx_noise` fBm plus inverted worley cells gives pitting, and its finite-difference slope bends the normal. The base is warm sandstone, mixed between `(0.27, 0.21, 0.16)` and `(0.42, 0.34, 0.26)` by the tint lane, with broad fBm shading, fine speckle, darker crack lines, a grimy course toward the low end of the UV, and near-black soot by the soot lane. Roughness is 0.93 (0.85 along cracks). A hot block glows orange `(2.6, 0.75, 0.12)` through a vein pattern, scaled by the square of heat. The `wall_blast` graph (`blast/wall_blast.procGraph`) uses it through `stone_mat` on unit boxes scaled to blocks, with shadows on: the wall blocks that stand, the blocks the blast takes (held in place until the detonation), and the flying rubble. Standing blocks carry heat 0 and soot 0; rubble carries a heat ramp from 0.6 at birth to 0 and a soot ramp from 0.1 to 0.85 over its life. The shader includes `fx_noise`. ## Properties | Property | Type | Default | Meaning | |---|---|---|---| | `unused` | float | 0 | The one entry properties.yaml lists (range 0 to 1). Every value the shader reads comes from the lanes below. | ## Lanes | Lane | Carries | |---|---| | `data0.x` | Per-block tint 0 to 1, between the darker and lighter sandstone. | | `data0.y` | Per-block seed: offsets the noise pattern. | | `data0.z` | Heat 0 to 1: orange emissive glow, scaled by heat squared. | | `data0.w` | Char and soot 0 to 1: blends the albedo toward near-black. |
▲ 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
backing path · effectShowcase.package/blast/wall_blast.procGraph

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.