render3d: a renderer that cannot draw says so and stops - LUDIC_HOME's leading ~ expanded (an unexpanded one left a run without shaders, logging 27 missing variants and drawing on), the SPIR-V manifest ends with E <count> and a cut or miscounted one is refused, and every such failure is a fault: r3d_open / r3d_load_step fail on it, r3d_fault() / r3d_fault_exit(code) for the game; tests/manifest_test

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Orkun ÇAKILKAYA 2026-09-29 22:12:39 +03:00
parent aac58ec6fa
commit c3fc896dea
13 changed files with 227 additions and 54 deletions

11
changes/r3d-fault-loud.md Normal file
View file

@ -0,0 +1,11 @@
bump: minor
type: fix
**A renderer that cannot draw says so and stops.** A `LUDIC_HOME` handed over with its `~` unexpanded
(`env LUDIC_HOME=~/x`) left render3d without its shaders: "vulkan cannot start" was printed, and the run
went on, logging "no SPIR-V variant" for every program - a world with no terrain, shadows or impostors.
Now `r3d_home` puts a leading `~` under `$HOME`; the SPIR-V manifest ends with `E <count>` (written by
`ludic-dev shaders`) and one without it, or miscounted, is refused; and every such failure is a fault
(`gpu_fault.ludic`): `r3d_open` and each `r3d_load_step` return false on one, a program with no variant is
listed, and a game asks `r3d_fault()` and ends with `r3d_fault_exit(code)`, which prints the reason and
every missing program. `tests/manifest_test.ludic` holds the parse, the refusals, `r3d_tilde` and that
every program in variants.list resolves in the shipped manifest.