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

tracer.procGraph

The glowing streak of a round in flight: a white-hot streak leaving the muzzle along -Z and burning out `distance` metres on, shedding embers that fall and cool behind it.

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

tracer

The glowing streak of a round in flight: a white-hot streak leaving the muzzle along -Z and burning out distance metres on, shedding embers that fall and cool behind it.

Fire it at the muzzle with its -Z turned toward what the round hits, and distance the range to it:

-- `graph` is this graph's reference: the AssetRef `asset.resolve` or a search returns for it.
local function tracer(from, to)
    local dx, dy, dz = to[1] - from[1], to[2] - from[2], to[3] - from[3]
    local e = entity.spawn("tracer", { position = from, temporary = true })
    e:lookAt(to)
    e.component.add("Generator", {
        graph = graph, playOn = "load", ending = "hold",
        params = { distance = math.sqrt(dx * dx + dy * dy + dz * dz) },
    })
    e.component.get("Generator").events.onFinished:connect(function()
        e:despawn()
    end)
    return e
end
InputDefaultWhat it does
distance40How far the round flies before it burns out, in metres: the range to what it hits.
speed240How fast it flies, in metres per second.
width0.04Width of the streak, in metres.

The streak runs back from the round for as far as it flies in a sixtieth of a second, and never behind the muzzle. It plays 45 frames at 60 fps (0.75 s). Each distance is its own set of frames: plays at one range share what the first one cooked.

Interface

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

conforms to

zero/source-extract/v2

tracer — the glowing streak of a round in flight. One burning round leaves the muzzle down -Z at `speed` and burns out `distance` metres on, drawn as a white-hot streak stretched along its flight, with a few embers shed behind it that fall and cool. Play it at the muzzle facing the shot, with `distance` the range to what it hits.

drawn(name: string, points: any) → any

argtypedescription
namestring
pointsany
⌬ Metadata
cost{"cookMs":212,"gpuMs":0.2,"measuredOn":"native debug build, headless, on an empty stage in edit mode. `vramBytes` is the peak rise in renderer.gpuMemory() (compute, instances, meshes, textures) over an idle baseline while one play runs from an empty cook cache: its solvers, its instanced draws and the frames its cache holds. `cookMs` is that play's cook time over every frame (playback().cost.cookMs); a play fired while one holds the frames, or after, replays them. `gpuMs` is the peak rise in the frame's measured GPU time over the same baseline, whose own spread is about 0.2 ms, so it is the bound that instrument supports.","vramBytes":375000}descriptionThe glowing streak of a round in flight: a white-hot streak leaving along -Z at `speed` and burning out `distance` metres on, shedding a few embers that fall and cool.familycombatkindeffect

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
# fxSpark A spark: a card turned onto its element's motion and stretched along it (`zero_billboard_streak`), drawn as a white-hot core fading to its colour at the rim and tapering to a point at both ends. The width across the streak follows `1 - along^2`, so the card is widest at its middle; pixels outside that width are discarded. The body carries the element's colour, and a white core is added on the axis, scaled by the colour's brightest channel (capped at 4) times 0.35. The result times `gain` is added to the frame. The combat graphs beside it in `combat/` draw with it as `fxSpark`, additive. The `impact` graph uses it for the sparks thrown back off the struck surface, the `muzzleFlash` graph for the burning powder streaking out of the bore, and the `tracer` graph for the round's white-hot streak and the embers it sheds. Each graph turns the particle onto its velocity, lengthens its Y scale, and colours it from an HDR ramp that cools over its life. The `bench_mixed` scene places all three graphs and the `main` scene places `muzzleFlash`. The shader includes `@builtin::shaderModules.billboard`. ## Properties | Property | Type | Default | Meaning | |---|---|---|---| | `gain` | float | 1.0 | Multiplies the output colour. | | `vertexBoundsDilation` | float | 0.3 | 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` | The element's colour in linear HDR. |
▲ 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.