diff --git a/src/dxso/dxso_compiler.cpp b/src/dxso/dxso_compiler.cpp index 905a9513466..abc55de810d 100644 --- a/src/dxso/dxso_compiler.cpp +++ b/src/dxso/dxso_compiler.cpp @@ -2029,12 +2029,22 @@ namespace dxvk { result.id = resultIndices[0]; else result.id = m_module.opCompositeConstruct(typeId, result.type.ccount, resultIndices.data()); + + if (m_moduleInfo.options.d3d9FloatEmulation == D3D9FloatEmulation::Enabled) { + result.id = m_module.opNMin(typeId, result.id, + m_module.constfReplicant(FLT_MAX, result.type.ccount)); + } break; } [[fallthrough]]; case DxsoOpcode::Exp: result.id = m_module.opExp2(typeId, emitRegisterLoad(src[0], mask).id); + + if (m_moduleInfo.options.d3d9FloatEmulation == D3D9FloatEmulation::Enabled) { + result.id = m_module.opNMin(typeId, result.id, + m_module.constfReplicant(FLT_MAX, result.type.ccount)); + } break; case DxsoOpcode::Pow: { uint32_t base = emitRegisterLoad(src[0], mask).id;