From da814668bc3fbad0c332832a9759791735e9b0ca Mon Sep 17 00:00:00 2001 From: Robin Kertels Date: Tue, 12 Mar 2024 23:38:18 +0100 Subject: [PATCH] [d3d9] FF: Prevent specular highlights on the back of geometry Fixes the Wine test "test_specular_lighting". --- src/d3d9/d3d9_fixed_function.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/d3d9/d3d9_fixed_function.cpp b/src/d3d9/d3d9_fixed_function.cpp index ca4f9266f..da90604dc 100644 --- a/src/d3d9/d3d9_fixed_function.cpp +++ b/src/d3d9/d3d9_fixed_function.cpp @@ -1331,6 +1331,8 @@ namespace dxvk { uint32_t midDot = m_module.opDot(m_floatType, normal, mid); midDot = m_module.opFClamp(m_floatType, midDot, m_module.constf32(0.0f), m_module.constf32(1.0f)); uint32_t doSpec = m_module.opFOrdGreaterThan(bool_t, midDot, m_module.constf32(0.0f)); + doSpec = m_module.opLogicalAnd(bool_t, doSpec, m_module.opFOrdGreaterThan(m_floatType, hitDot, m_module.constf32(0.0f))); + uint32_t specularness = m_module.opPow(m_floatType, midDot, m_vs.constants.materialPower); specularness = m_module.opFMul(m_floatType, specularness, atten); specularness = m_module.opSelect(m_floatType, doSpec, specularness, m_module.constf32(0.0f));