mirror of
https://github.com/KytyPS5/KytyPS5.git
synced 2026-10-20 02:47:02 +02:00
83db2efec3
* shader: pack v_cvt_pkrtz_f16_f32 with the native half conversion The round-toward-zero pack was emulated with integer operations: about 20 to 30 operations per half. GTA V uses it in 613 of its 656 pixel shaders, about 16 times in each G-buffer pixel shader. The pair is now packed with PackHalf2x16, unpacked again, and each half whose magnitude exceeds its input's takes one unit off. Half signs and magnitudes are separate, so that is the next value toward zero, whatever rounding the native conversion uses as long as it returns one of the two neighbours. Same bits as before for every finite input and infinity; a NaN stays a NaN. Checked against the old code on 2 million values on the CPU, and on an Apple M5 GPU through Metal (400 000 values, subnormals included, safe and fast math). GTA V on an Apple M5 (MoltenVK), 1080p, fixed script camera, three places, A B B A between launches: -1.7 to -2.8 ms per frame (+4 to +6 %). Scope: generic Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * shader: remove half-pack commentary and unused shift helper --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: nmzik <Nmzik@mail.ru>