shared/rast: pure-C cross-platform triangle rasterizer + self-tests
Foundation for the arena parity + WASM-speedup plan. One C99 file
(raster.c ~180 lines) implementing perspective-correct, depth-buffered,
textured / per-vertex-color / solid-fill triangles. No libc allocs in
the hot path, no mutable globals — every call is re-entrant so workers
can rasterize independent tiles against shared framebuffers.
Also ships raster_test.c with four self-tests (solid fill, color
interpolation dominance, depth occlusion with late-draw rejection,
scissor clipping). Builds with plain gcc today; emscripten build
comes next. The same test binary will run against the .wasm output
via wasmtime/node once that's wired.
Next steps:
1. Wire raster.c into fedac/native/src/graph3d.c so ac-native
switches to the shared implementation (zero behavior change —
current graph3d.c code was the source).
2. Emscripten build producing raster.wasm + raster.js loader.
3. Replace bios.mjs's JS triangle path with a WASM call.
4. Tile binning + WebWorker pool (SAB + Atomics) for the parallel
path; native gets pthread pool with same tile data structures.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This is a binary file and will not be displayed.