diff options
| author | Markus Wick <degasus@users.noreply.github.com> | 2018-01-05 23:42:43 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-01-05 23:42:43 +0100 |
| commit | dc08b73db19b8d59ec9ba373a4fb8d7d8639c9e3 (patch) | |
| tree | f637ed6ba4099e0505b31283d141a0da2ff0db26 /Source/Core/VideoCommon/PixelShaderManager.cpp | |
| parent | 1cf1e7cde07abf5642c48da1f9a0f82b99b9de24 (diff) | |
| parent | c709f3c2d150ed35a33a32e45f7c3fe9605f682f (diff) | |
Merge pull request #6141 from JonnyH/WIP/shader-framebuffer-fetch2
Implement dual-source blending in shader
Diffstat (limited to 'Source/Core/VideoCommon/PixelShaderManager.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/PixelShaderManager.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/Source/Core/VideoCommon/PixelShaderManager.cpp b/Source/Core/VideoCommon/PixelShaderManager.cpp index 0fa3614bdb..8ada00ef3b 100644 --- a/Source/Core/VideoCommon/PixelShaderManager.cpp +++ b/Source/Core/VideoCommon/PixelShaderManager.cpp @@ -473,6 +473,43 @@ void PixelShaderManager::SetBlendModeChanged() constants.dither = dither; dirty = true; } + BlendingState state = {}; + state.Generate(bpmem); + if (constants.blend_enable != state.blendenable) + { + constants.blend_enable = state.blendenable; + dirty = true; + } + if (constants.blend_src_factor != state.srcfactor) + { + constants.blend_src_factor = state.srcfactor; + dirty = true; + } + if (constants.blend_src_factor_alpha != state.srcfactoralpha) + { + constants.blend_src_factor_alpha = state.srcfactoralpha; + dirty = true; + } + if (constants.blend_dst_factor != state.dstfactor) + { + constants.blend_dst_factor = state.dstfactor; + dirty = true; + } + if (constants.blend_dst_factor_alpha != state.dstfactoralpha) + { + constants.blend_dst_factor_alpha = state.dstfactoralpha; + dirty = true; + } + if (constants.blend_subtract != state.subtract) + { + constants.blend_subtract = state.subtract; + dirty = true; + } + if (constants.blend_subtract_alpha != state.subtractAlpha) + { + constants.blend_subtract_alpha = state.subtractAlpha; + dirty = true; + } s_bDestAlphaDirty = true; } |
