Fix kill instructions.

This commit is contained in:
Skyth 2025-01-24 22:56:27 +03:00
parent ab277869d4
commit 96458eb7bc

View file

@ -540,22 +540,22 @@ void ShaderRecompiler::recompile(const AluInstruction& instr)
{ {
case AluVectorOpcode::KillEq: case AluVectorOpcode::KillEq:
indent(); indent();
println("clip(any({} == {}) ? 1 : -1);", op(VECTOR_0), op(VECTOR_1)); println("clip(any({} == {}) ? -1 : 1);", op(VECTOR_0), op(VECTOR_1));
break; break;
case AluVectorOpcode::KillGt: case AluVectorOpcode::KillGt:
indent(); indent();
println("clip(any({} > {}) ? 1 : -1);", op(VECTOR_0), op(VECTOR_1)); println("clip(any({} > {}) ? -1 : 1);", op(VECTOR_0), op(VECTOR_1));
break; break;
case AluVectorOpcode::KillGe: case AluVectorOpcode::KillGe:
indent(); indent();
println("clip(any({} >= {}) ? 1 : -1);", op(VECTOR_0), op(VECTOR_1)); println("clip(any({} >= {}) ? -1 : 1);", op(VECTOR_0), op(VECTOR_1));
break; break;
case AluVectorOpcode::KillNe: case AluVectorOpcode::KillNe:
indent(); indent();
println("clip(any({} != {}) ? 1 : -1);", op(VECTOR_0), op(VECTOR_1)); println("clip(any({} != {}) ? -1 : 1);", op(VECTOR_0), op(VECTOR_1));
break; break;
} }
@ -1062,7 +1062,7 @@ void ShaderRecompiler::recompile(const AluInstruction& instr)
if (instr.scalarOpcode >= AluScalarOpcode::KillsEq && instr.scalarOpcode <= AluScalarOpcode::KillsOne) if (instr.scalarOpcode >= AluScalarOpcode::KillsEq && instr.scalarOpcode <= AluScalarOpcode::KillsOne)
{ {
indent(); indent();
out += "clip(ps != 0.0 ? 1 : -1);\n"; out += "clip(ps != 0.0 ? -1 : 1);\n";
} }
if (closeIfBracket) if (closeIfBracket)