Merge branch 'alpha40_blendstateFix' of https://github.com/Azaezel/Torque3D into Preview4_0

This commit is contained in:
Areloch 2019-11-16 10:14:50 -06:00
commit 0dfd167771
3 changed files with 26 additions and 6 deletions

View file

@ -37,7 +37,7 @@ D3D11_FILL_MODE GFXD3D11FillMode[GFXFill_COUNT];
D3D11_PRIMITIVE_TOPOLOGY GFXD3D11PrimType[GFXPT_COUNT];
D3D11_TEXTURE_ADDRESS_MODE GFXD3D11TextureAddress[GFXAddress_COUNT];
DXGI_FORMAT GFXD3D11DeclType[GFXDeclType_COUNT];
D3D11_BLEND GFXD3D11BlendAlpha[GFXBlend_COUNT];
//------------------------------------------------------------------------------
void GFXD3D11EnumTranslate::init()
@ -102,6 +102,17 @@ void GFXD3D11EnumTranslate::init()
GFXD3D11Blend[GFXBlendDestColor] = D3D11_BLEND_DEST_COLOR;
GFXD3D11Blend[GFXBlendInvDestColor] = D3D11_BLEND_INV_DEST_COLOR;
GFXD3D11Blend[GFXBlendSrcAlphaSat] = D3D11_BLEND_SRC_ALPHA_SAT;
GFXD3D11BlendAlpha[GFXBlendZero] = D3D11_BLEND_ZERO;
GFXD3D11BlendAlpha[GFXBlendOne] = D3D11_BLEND_ONE;
GFXD3D11BlendAlpha[GFXBlendSrcColor] = D3D11_BLEND_SRC_ALPHA;
GFXD3D11BlendAlpha[GFXBlendInvSrcColor] = D3D11_BLEND_INV_SRC_ALPHA;
GFXD3D11BlendAlpha[GFXBlendSrcAlpha] = D3D11_BLEND_SRC_ALPHA;
GFXD3D11BlendAlpha[GFXBlendInvSrcAlpha] = D3D11_BLEND_INV_SRC_ALPHA;
GFXD3D11BlendAlpha[GFXBlendDestAlpha] = D3D11_BLEND_DEST_ALPHA;
GFXD3D11BlendAlpha[GFXBlendInvDestAlpha] = D3D11_BLEND_INV_DEST_ALPHA;
GFXD3D11BlendAlpha[GFXBlendDestColor] = D3D11_BLEND_DEST_ALPHA;
GFXD3D11BlendAlpha[GFXBlendInvDestColor] = D3D11_BLEND_INV_DEST_ALPHA;
GFXD3D11BlendAlpha[GFXBlendSrcAlphaSat] = D3D11_BLEND_SRC_ALPHA_SAT;
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
GFXD3D11BlendOp[GFXBlendOpAdd] = D3D11_BLEND_OP_ADD;

View file

@ -47,5 +47,5 @@ extern D3D11_FILL_MODE GFXD3D11FillMode[GFXFill_COUNT];
extern D3D11_PRIMITIVE_TOPOLOGY GFXD3D11PrimType[GFXPT_COUNT];
extern D3D11_TEXTURE_ADDRESS_MODE GFXD3D11TextureAddress[GFXAddress_COUNT];
extern DXGI_FORMAT GFXD3D11DeclType[GFXDeclType_COUNT];
#endif
extern D3D11_BLEND GFXD3D11BlendAlpha[GFXBlend_COUNT]; //maps color->alpha
#endif

View file

@ -67,9 +67,18 @@ GFXD3D11StateBlock::GFXD3D11StateBlock(const GFXStateBlockDesc& desc)
mBlendDesc.RenderTarget[0].DestBlend = GFXD3D11Blend[mDesc.blendDest];
mBlendDesc.RenderTarget[0].SrcBlend = GFXD3D11Blend[mDesc.blendSrc];
//alpha
mBlendDesc.RenderTarget[0].BlendOpAlpha = GFXD3D11BlendOp[mDesc.separateAlphaBlendEnable ? mDesc.separateAlphaBlendOp : mDesc.blendOp];
mBlendDesc.RenderTarget[0].SrcBlendAlpha = GFXD3D11Blend[mDesc.separateAlphaBlendEnable ? mDesc.separateAlphaBlendSrc : mDesc.blendSrc];
mBlendDesc.RenderTarget[0].DestBlendAlpha = GFXD3D11Blend[mDesc.separateAlphaBlendEnable ? mDesc.separateAlphaBlendDest : mDesc.blendDest];
if (mDesc.separateAlphaBlendEnable)
{
mBlendDesc.RenderTarget[0].BlendOpAlpha = GFXD3D11BlendOp[mDesc.separateAlphaBlendOp];
mBlendDesc.RenderTarget[0].SrcBlendAlpha = GFXD3D11Blend[mDesc.separateAlphaBlendSrc];
mBlendDesc.RenderTarget[0].DestBlendAlpha = GFXD3D11Blend[mDesc.separateAlphaBlendDest];
}
else
{
mBlendDesc.RenderTarget[0].BlendOpAlpha = mBlendDesc.RenderTarget[0].BlendOp;
mBlendDesc.RenderTarget[0].SrcBlendAlpha = GFXD3D11BlendAlpha[mDesc.blendSrc];
mBlendDesc.RenderTarget[0].DestBlendAlpha = GFXD3D11BlendAlpha[mDesc.blendDest];
}
//target write mask
mBlendDesc.RenderTarget[0].RenderTargetWriteMask = mColorMask;