From 967a74024a5a4856c61dda95b30d9202abff12f9 Mon Sep 17 00:00:00 2001 From: Samuliak Date: Sat, 21 Dec 2024 08:52:18 +0100 Subject: [PATCH] implement point coord properly --- .../Latte/LegacyShaderDecompiler/LatteDecompilerEmitMSL.cpp | 4 ++-- .../LegacyShaderDecompiler/LatteDecompilerEmitMSLHeader.hpp | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompilerEmitMSL.cpp b/src/Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompilerEmitMSL.cpp index bc2becf8..caba5229 100644 --- a/src/Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompilerEmitMSL.cpp +++ b/src/Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompilerEmitMSL.cpp @@ -4287,9 +4287,9 @@ void LatteDecompiler_emitMSLShader(LatteDecompilerShaderContext* shaderContext, cemu_assert_debug((psInputTable->paramGen) == 1); // handle the other bits (the same set of coordinates with different perspective/projection settings?) uint32 paramGenGPRIndex = psInputTable->paramGenGPR; if (shaderContext->typeTracker.defaultDataType == LATTE_DECOMPILER_DTYPE_FLOAT) - src->addFmt("{} = in.position.xyxy;" _CRLF, _getRegisterVarName(shaderContext, paramGenGPRIndex)); + src->addFmt("{} = pointCoord.xyxy;" _CRLF, _getRegisterVarName(shaderContext, paramGenGPRIndex)); else - src->addFmt("{} = bitCast(gl_PointCoord.xyxy);" _CRLF, _getRegisterVarName(shaderContext, paramGenGPRIndex)); + src->addFmt("{} = bitCast(pointCoord.xyxy);" _CRLF, _getRegisterVarName(shaderContext, paramGenGPRIndex)); } for (sint32 i = 0; i < psInputTable->count; i++) diff --git a/src/Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompilerEmitMSLHeader.hpp b/src/Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompilerEmitMSLHeader.hpp index 1a2dfa3c..2d871d99 100644 --- a/src/Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompilerEmitMSLHeader.hpp +++ b/src/Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompilerEmitMSLHeader.hpp @@ -516,6 +516,7 @@ namespace LatteDecompiler } else { + // TODO: only include these if needed? src->add("uint vid [[vertex_id]]"); src->add(", uint iid [[instance_id]]"); } @@ -532,6 +533,8 @@ namespace LatteDecompiler break; case LatteConst::ShaderType::Pixel: src->add("FragmentIn in [[stage_in]]"); + // TODO: only include these if needed? + src->add(", float2 pointCoord [[point_coord]]"); src->add(", bool frontFacing [[front_facing]]"); break; default: