feat(hero): instanced ribbon trail renderer #30

Open
patman wants to merge 1 commit from patman/hero-renderer into patman/hero-shaders AGit
Owner

PR 5/7 in the hero-toolpaths stack (prev: hero-shaders, next: hero-lifecycle). One shader pair; trail segments are instanced ribbon quads (never gl.LINE_STRIP) over a fixed 2048-slot ring VBO per racer; one small bufferSubData per racer per frame is the only GPU upload. Fragment alpha fades with segment age so paths dissolve before the ring wraps — infinite trail, fixed memory. WebGL2 with WebGL1+ANGLE fallback; the cutting head is the newest segment redrawn 3.5x wide (age near 0 makes it white-hot), no second shader. Review focus: ring indexing incl. the head-redraw offset at wrap; instance attribute setup/divisors; constant draw cost.

PR 5/7 in the hero-toolpaths stack (prev: hero-shaders, next: hero-lifecycle). One shader pair; trail segments are instanced ribbon quads (never gl.LINE_STRIP) over a fixed 2048-slot ring VBO per racer; one small bufferSubData per racer per frame is the only GPU upload. Fragment alpha fades with segment age so paths dissolve before the ring wraps — infinite trail, fixed memory. WebGL2 with WebGL1+ANGLE fallback; the cutting head is the newest segment redrawn 3.5x wide (age near 0 makes it white-hot), no second shader. Review focus: ring indexing incl. the head-redraw offset at wrap; instance attribute setup/divisors; constant draw cost.
feat(hero): instanced ribbon trail renderer
All checks were successful
CI / build-test (pull_request) Successful in 1m15s
58e8fd8a0d
One shader pair. Trail segments are instanced screen-space ribbon quads
(constant pixel width — never gl.LINE_STRIP) over a fixed 2048-slot ring
VBO per racer; one small bufferSubData per racer per frame is the only
GPU upload. Fragment alpha fades with segment age so paths dissolve
before the ring wraps: infinite trail, fixed memory. Additive blending
for glow, no postprocessing. WebGL2 with WebGL1+ANGLE fallback; the head
is the newest segment redrawn wider, no second shader.
patman force-pushed patman/hero-renderer from 58e8fd8a0d
All checks were successful
CI / build-test (pull_request) Successful in 1m15s
to 6b8ff37d5c
All checks were successful
CI / build-test (pull_request) Successful in 1m28s
2026-06-12 21:12:32 +00:00
Compare
patman force-pushed patman/hero-renderer from 6b8ff37d5c
All checks were successful
CI / build-test (pull_request) Successful in 1m28s
to 35573a5e8c
Some checks failed
CI / build-test (pull_request) Has been cancelled
2026-07-02 03:06:48 +00:00
Compare
Some checks failed
CI / build-test (pull_request) Has been cancelled
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin +refs/pull/30/head:patman/hero-renderer
git switch patman/hero-renderer

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch patman/hero-shaders
git merge --no-ff patman/hero-renderer
git switch patman/hero-renderer
git rebase patman/hero-shaders
git switch patman/hero-shaders
git merge --ff-only patman/hero-renderer
git switch patman/hero-renderer
git rebase patman/hero-shaders
git switch patman/hero-shaders
git merge --no-ff patman/hero-renderer
git switch patman/hero-shaders
git merge --squash patman/hero-renderer
git switch patman/hero-shaders
git merge --ff-only patman/hero-renderer
git switch patman/hero-shaders
git merge patman/hero-renderer
git push origin patman/hero-shaders
Sign in to join this conversation.
No description provided.