mirror of
https://github.com/RPCS3/rpcs3.git
synced 2024-11-17 08:11:51 +00:00
rsx: Fix DST instruction
- It's the old-school distance vector, not the more modern distance() function - There is seemingly no glsl function that maps to it directly.
This commit is contained in:
parent
b301fecfd8
commit
0b6e2b26fa
@ -906,7 +906,7 @@ bool FragmentProgramDecompiler::handle_sct_scb(u32 opcode)
|
|||||||
|
|
||||||
// SCB-only ops
|
// SCB-only ops
|
||||||
case RSX_FP_OPCODE_COS: SetDst("cos($0.xxxx)"); return true;
|
case RSX_FP_OPCODE_COS: SetDst("cos($0.xxxx)"); return true;
|
||||||
case RSX_FP_OPCODE_DST: SetDst("distance($0, $1).xxxx", OPFLAGS::src_cast_f32); return true;
|
case RSX_FP_OPCODE_DST: SetDst("$Ty(1.0, $0.y * $1.y, $0.z, $1.w)", OPFLAGS::op_extern); return true;
|
||||||
case RSX_FP_OPCODE_REFL: SetDst(getFunction(FUNCTION::FUNCTION_REFL), OPFLAGS::op_extern); return true;
|
case RSX_FP_OPCODE_REFL: SetDst(getFunction(FUNCTION::FUNCTION_REFL), OPFLAGS::op_extern); return true;
|
||||||
case RSX_FP_OPCODE_EX2: SetDst("exp2($0.xxxx)"); return true;
|
case RSX_FP_OPCODE_EX2: SetDst("exp2($0.xxxx)"); return true;
|
||||||
case RSX_FP_OPCODE_FLR: SetDst("floor($0)"); return true;
|
case RSX_FP_OPCODE_FLR: SetDst("floor($0)"); return true;
|
||||||
|
@ -574,7 +574,7 @@ std::string VertexProgramDecompiler::Decompile()
|
|||||||
case RSX_VEC_OPCODE_DP3: SetDSTVec(getFunction(FUNCTION::FUNCTION_DP3)); break;
|
case RSX_VEC_OPCODE_DP3: SetDSTVec(getFunction(FUNCTION::FUNCTION_DP3)); break;
|
||||||
case RSX_VEC_OPCODE_DPH: SetDSTVec(getFunction(FUNCTION::FUNCTION_DPH)); break;
|
case RSX_VEC_OPCODE_DPH: SetDSTVec(getFunction(FUNCTION::FUNCTION_DPH)); break;
|
||||||
case RSX_VEC_OPCODE_DP4: SetDSTVec(getFunction(FUNCTION::FUNCTION_DP4)); break;
|
case RSX_VEC_OPCODE_DP4: SetDSTVec(getFunction(FUNCTION::FUNCTION_DP4)); break;
|
||||||
case RSX_VEC_OPCODE_DST: SetDSTVec("vec4(distance($0, $1))"); break;
|
case RSX_VEC_OPCODE_DST: SetDSTVec("vec4(1.0, $0.y * $1.y, $0.z, $1.w)"); break;
|
||||||
case RSX_VEC_OPCODE_MIN: SetDSTVec("min($0, $1)"); break;
|
case RSX_VEC_OPCODE_MIN: SetDSTVec("min($0, $1)"); break;
|
||||||
case RSX_VEC_OPCODE_MAX: SetDSTVec("max($0, $1)"); break;
|
case RSX_VEC_OPCODE_MAX: SetDSTVec("max($0, $1)"); break;
|
||||||
case RSX_VEC_OPCODE_SLT: SetDSTVec(getFloatTypeName(4) + "(" + compareFunction(COMPARE::FUNCTION_SLT, "$0", "$1") + ")"); break;
|
case RSX_VEC_OPCODE_SLT: SetDSTVec(getFloatTypeName(4) + "(" + compareFunction(COMPARE::FUNCTION_SLT, "$0", "$1") + ")"); break;
|
||||||
|
Loading…
Reference in New Issue
Block a user