Add subtractive blending mode to backends

This commit is contained in:
Jack Andersen
2017-09-04 16:59:41 -10:00
parent 18cbfd2865
commit dd6e53119a
6 changed files with 71 additions and 11 deletions

View File

@@ -575,8 +575,18 @@ class D3D11ShaderPipeline : public IShaderPipeline
CD3D11_BLEND_DESC blDesc(D3D11_DEFAULT);
blDesc.RenderTarget[0].BlendEnable = (dstFac != BlendFactor::Zero);
blDesc.RenderTarget[0].SrcBlend = BLEND_FACTOR_TABLE[int(srcFac)];
blDesc.RenderTarget[0].DestBlend = BLEND_FACTOR_TABLE[int(dstFac)];
if (srcFac == BlendFactor::Subtract || dstFac == BlendFactor::Subtract)
{
blDesc.RenderTarget[0].SrcBlend = D3D11_BLEND_DEST_COLOR;
blDesc.RenderTarget[0].DestBlend = D3D11_BLEND_SRC_COLOR;
blDesc.RenderTarget[0].BlendOp = D3D11_BLEND_OP_SUBTRACT;
}
else
{
blDesc.RenderTarget[0].SrcBlend = BLEND_FACTOR_TABLE[int(srcFac)];
blDesc.RenderTarget[0].DestBlend = BLEND_FACTOR_TABLE[int(dstFac)];
blDesc.RenderTarget[0].BlendOp = D3D11_BLEND_OP_ADD;
}
blDesc.RenderTarget[0].SrcBlendAlpha = D3D11_BLEND_ONE;
blDesc.RenderTarget[0].DestBlendAlpha = D3D11_BLEND_ZERO;
blDesc.RenderTarget[0].RenderTargetWriteMask =