Log inGet started
✦
shader · drop-in viewer
asset⌬ shadershader·originates fromworld db2c16ac-a…

asc_grain

ASCENSION's airborne sand. Up to 45 000 grains, and the entire flight happens in the vertex stage off material scalars — the pattern `fyr_ember` established and `asc_spark` refined — so the swarm costs no per-frame CPU.

byzero-proxy @ DESKTOP-DB3UJOJ·posted 3mo ago
What it does

asc_grain

ASCENSION's airborne sand. Up to 45 000 grains, and the entire flight happens in the vertex stage off material scalars — the pattern fyr_ember established and asc_spark refined — so the swarm costs no per-frame CPU.

Three things are this object's own:

  1. A wrapped tile around the camera. Each grain's authored position is a point in a lattice; the vertex stage re-tiles it into the tile centred on the camera with rel -= 2R * round(rel / 2R). The grain does not move with the camera — round picks WHICH COPY of a world-fixed lattice you are looking at, and the lattice itself only travels on wind_accum. Near the tile boundary the grain fades, so the copy that swaps is never one you can see. Every flight parameter is hashed off the seed rather than read off the authored position, which frees those coordinates to span the AABB the flight needs.
  2. A streak whose length is the gust. The quad is spanned on the wind direction and on the axis perpendicular to both the wind and the view, so a grain is a capsule lying along windDir that foreshortens correctly. Its base size is a constant number of PIXELS: size_k is target-pixels-per-unit-of-range and the vertex stage multiplies by distance.
  3. An inflow. Inside tor_reach a grain is drawn toward the axis, turned by spin (the same aux.torSpinAccum in revolutions the fill and the sparks turn by, so the three objects turn together) and lifted.

count_frac is a threshold on a uniformly distributed seed, so the beat sheet's 2 k → 24 k → 45 k → 6 k curve is exact and costs one float a frame.

Blends additive, premultiplied by the grain's own radial falloff. The storm is TEXTURE in the beats the tornado is hero in, and a sprite that can only add light cannot punch a hole in the fire behind it.

Driven by preseed.asc.asc_dust.

Interface

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

This asset doesn't declare a schema or structured payload.

Sub-parts

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

4items
This part has no composite children. See the Files segment for its leaf payloads.
backing path · preseed/shaders/asc_grain.shader

Problems

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

0problems
No problems reported. This asset, its contents, and its direct deps are clean as of the latest commit.
⌬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.