diff options
author | Ameer J <52414509+ameerj@users.noreply.github.com> | 2021-09-19 23:56:08 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-19 23:56:08 -0400 |
commit | cd973d603735bfc573871a6c719a98c312ffd41f (patch) | |
tree | 3dce46d1f0219b5df58e53785a51b5f2d60821f1 /src | |
parent | a9c3619d26beaaae338c5e902635147b9237350a (diff) | |
parent | 8984abfc76ec82cba2c919934981a5a5bf9216e7 (diff) |
Merge pull request #7017 from FernandoS27/i-am-barbie-girl
Spir-V: Rescale the frag depth to 0,1 mode when -1,1 mode is used in Vulkan.
Diffstat (limited to 'src')
-rw-r--r-- | src/shader_recompiler/backend/spirv/emit_spirv_context_get_set.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_context_get_set.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_context_get_set.cpp index 68f360b3ce..6f60c65747 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_context_get_set.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv_context_get_set.cpp @@ -477,7 +477,13 @@ void EmitSetSampleMask(EmitContext& ctx, Id value) { } void EmitSetFragDepth(EmitContext& ctx, Id value) { - ctx.OpStore(ctx.frag_depth, value); + if (!ctx.runtime_info.convert_depth_mode) { + ctx.OpStore(ctx.frag_depth, value); + return; + } + const Id unit{ctx.Const(0.5f)}; + const Id new_depth{ctx.OpFma(ctx.F32[1], value, unit, unit)}; + ctx.OpStore(ctx.frag_depth, new_depth); } void EmitGetZFlag(EmitContext&) { |