shader: initialize pixel position W as a reciprocal

This commit is contained in:
nmzik
2026-09-06 19:38:15 +04:00
parent 807a594c2d
commit e847f82fab
2 changed files with 31 additions and 5 deletions
@@ -1162,8 +1162,10 @@ IR::Program TranslateProgram(const Decoder::Program& decoded, const CFG::Graph&
builtin(IR::StageInputKind::FragCoord, 2));
}
if (ps->ps_pos_w) {
const auto reciprocal_w = entry_ir.BitCastF32(builtin(IR::StageInputKind::FragCoord, 3));
const auto w = IR::F32(entry_ir.Emit(IR::ValueOpcode::FPRecip32, {reciprocal_w}));
entry_ir.SetVectorReg(static_cast<IR::VectorReg>(reg++),
builtin(IR::StageInputKind::FragCoord, 3));
entry_ir.BitCastU32(w));
}
if (ps->ps_front_face) {
entry_ir.SetVectorReg(static_cast<IR::VectorReg>(reg++),