From db08f73530807e8400534cb2bdf696dee89d9e56 Mon Sep 17 00:00:00 2001 From: Samuliak Date: Mon, 8 Jul 2024 15:01:52 +0200 Subject: [PATCH] set stencil reference value --- include/renderer_mtl/mtl_depth_stencil_cache.hpp | 2 -- src/core/renderer_mtl/renderer_mtl.cpp | 6 ++++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/include/renderer_mtl/mtl_depth_stencil_cache.hpp b/include/renderer_mtl/mtl_depth_stencil_cache.hpp index 5f6ea37f..30a73895 100644 --- a/include/renderer_mtl/mtl_depth_stencil_cache.hpp +++ b/include/renderer_mtl/mtl_depth_stencil_cache.hpp @@ -37,7 +37,6 @@ public: MTL::StencilDescriptor* stencilDesc = nullptr; if (stencilEnable) { const u8 stencilFunc = Helpers::getBits<4, 3>(hash.stencilConfig); - const s8 reference = s8(Helpers::getBits<16, 8>(hash.stencilConfig)); // Signed reference value const u8 stencilRefMask = Helpers::getBits<24, 8>(hash.stencilConfig); const u32 stencilBufferMask = hash.depthStencilWrite ? Helpers::getBits<8, 8>(hash.stencilConfig) : 0; @@ -53,7 +52,6 @@ public: stencilDesc->setStencilCompareFunction(toMTLCompareFunc(stencilFunc)); stencilDesc->setReadMask(stencilRefMask); stencilDesc->setWriteMask(stencilBufferMask); - // TODO: Set reference value desc->setFrontFaceStencil(stencilDesc); desc->setBackFaceStencil(stencilDesc); diff --git a/src/core/renderer_mtl/renderer_mtl.cpp b/src/core/renderer_mtl/renderer_mtl.cpp index 2ce430c6..03696f39 100644 --- a/src/core/renderer_mtl/renderer_mtl.cpp +++ b/src/core/renderer_mtl/renderer_mtl.cpp @@ -574,6 +574,12 @@ void RendererMTL::drawVertices(PICA::PrimType primType, std::spansetBlendColor(r / 255.0f, g / 255.0f, b / 255.0f, a / 255.0f); } + // Stencil reference + if (stencilEnable) { + const s8 reference = s8(Helpers::getBits<16, 8>(depthStencilHash.stencilConfig)); // Signed reference value + renderCommandEncoder->setStencilReferenceValue(reference); + } + // Bind resources setupTextureEnvState(renderCommandEncoder); bindTexturesToSlots(renderCommandEncoder);