hex_to_rgba put sRGB fractions straight into Blender's LINEAR Base Color socket, so baseColorFactor shipped linear-encoded-as-sRGB and three's linear->sRGB display step made every surface one gamma step too light and desaturated, on every asset, since Sprint 1. Measured: leaf_gum #7C8F5E displayed #B9C5A3, bark_gum #BFB8A8 displayed #E0DDD4 (the near-white gum trunk THREADS blamed on Blender's view transform). Fixed at source with the exact IEC curve (alpha untouched — coverage, not colour) and the whole factory rebuilt: ALL ASSETS PASS. e.test now pins mat.color.getHexString(SRGBColorSpace) against the authored PAL hex — factory intent vs what the runtime draws, the one comparison neither end can fake. Mutation-checked red-then-green against the pre-fix GLB. 523/0/0, verified by eye in the running game before and after. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
11 KiB
11 KiB