Skip to content

Draw the ASCII visuals on the GPU, drop decorative labels, add favicon - #7

Merged
bulbashenko merged 3 commits into
mainfrom
fix/after-cutover
Oct 11, 2026
Merged

bulbashenko merged 3 commits into
mainfrom
fix/after-cutover

Conversation

@bulbashenko

Copy link
Copy Markdown
Collaborator
  • GPU ASCII. The eye's ASCII pass moves into shaders: no per-frame getImageData readback and no ~8,000 fillText calls. The background is a single WebGL2 shader without three.js. Main-thread time in a headless benchmark (1600×900, software WebGL): eye ~1000 → ~22 ms/s, background ~300 → ~15 ms/s. Interactions (gaze, drag, modes, glitches) are unchanged.
  • The eye's code loads only at ≥1100px, where its panel is visible.
  • Nothing is drawn for reduced motion, Save-Data, missing or lost WebGL2, or slow frames (mean > 35 ms over 3 s).
  • Removed SYSTEM ONLINE, / ENCRYPTED CONNECTION, [ SECURE BY DESIGN ], ACCESS PORTAL / 01.
  • Favicon (16/32/48 px, 9 KB).
  • Fixes the red main: the login tests' getByRole("alert") matched two elements.

🤖 Generated with Claude Code

bulbashenko and others added 3 commits October 11, 2026 04:43
getByRole("alert") now matches two elements on the page, so the strict
locator failed and main went red.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The main thread was the bottleneck, not the 3D: every eye frame read the WebGL
canvas back with getImageData and drew ~8,000 glyphs with fillText, and the
background drew ~13,000 more at 15 fps on every device, phones included.

- Eye: three.js renders into an MSAA render target; a shader averages it per
  cell and picks glyph and colour, a second one draws the glyphs from an atlas
  texture. No readback per frame, no fillText. Gaze, drag, modes and glitches
  work as before.
- Background: one fragment shader in plain WebGL2, rain as a function of time.
  No three.js, so narrow screens (where the eye is hidden) don't download it.
- The eye loads only at >= 1100px, the width at which its panel is shown.
- Nothing is drawn for reduced motion, Save-Data, a missing or lost WebGL2
  context, or frames slower than 35 ms on average; the last two stick for the
  tab session.
- Fixes a TypeError when the color attribute was set before connection.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
SYSTEM ONLINE, / ENCRYPTED CONNECTION, [ SECURE BY DESIGN ] and ACCESS
PORTAL / 01 said nothing. The favicon keeps the 16, 32 and 48 px frames of the
original (9 KB instead of 432 KB).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@bulbashenko
bulbashenko merged commit ffd3cb5 into main Oct 11, 2026
1 of 2 checks passed
@bulbashenko
bulbashenko deleted the fix/after-cutover branch October 11, 2026 02:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant