瀏覽代碼

from timmy: fix for seperated out RGB and A blends

Azaezel 6 年之前
父節點
當前提交
b19fe23473
共有 1 個文件被更改,包括 7 次插入4 次删除
  1. 7 4
      Engine/source/gfx/D3D11/gfxD3D11StateBlock.cpp

+ 7 - 4
Engine/source/gfx/D3D11/gfxD3D11StateBlock.cpp

@@ -59,15 +59,18 @@ GFXD3D11StateBlock::GFXD3D11StateBlock(const GFXStateBlockDesc& desc)
 
 
    ZeroMemory(&mBlendDesc, sizeof(D3D11_BLEND_DESC));
    ZeroMemory(&mBlendDesc, sizeof(D3D11_BLEND_DESC));
    mBlendDesc.AlphaToCoverageEnable = false;
    mBlendDesc.AlphaToCoverageEnable = false;
-   mBlendDesc.IndependentBlendEnable = mDesc.separateAlphaBlendEnable;
+   mBlendDesc.IndependentBlendEnable = false;
 
 
    mBlendDesc.RenderTarget[0].BlendEnable = mDesc.blendEnable;
    mBlendDesc.RenderTarget[0].BlendEnable = mDesc.blendEnable;
+   //color
    mBlendDesc.RenderTarget[0].BlendOp = GFXD3D11BlendOp[mDesc.blendOp];
    mBlendDesc.RenderTarget[0].BlendOp = GFXD3D11BlendOp[mDesc.blendOp];
-   mBlendDesc.RenderTarget[0].BlendOpAlpha = GFXD3D11BlendOp[mDesc.separateAlphaBlendOp];
    mBlendDesc.RenderTarget[0].DestBlend = GFXD3D11Blend[mDesc.blendDest];
    mBlendDesc.RenderTarget[0].DestBlend = GFXD3D11Blend[mDesc.blendDest];
-   mBlendDesc.RenderTarget[0].DestBlendAlpha = GFXD3D11Blend[mDesc.separateAlphaBlendDest];
    mBlendDesc.RenderTarget[0].SrcBlend = GFXD3D11Blend[mDesc.blendSrc];
    mBlendDesc.RenderTarget[0].SrcBlend = GFXD3D11Blend[mDesc.blendSrc];
-   mBlendDesc.RenderTarget[0].SrcBlendAlpha = GFXD3D11Blend[mDesc.separateAlphaBlendSrc];
+   //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];
+   //target write mask
    mBlendDesc.RenderTarget[0].RenderTargetWriteMask = mColorMask;
    mBlendDesc.RenderTarget[0].RenderTargetWriteMask = mColorMask;
 
 
    HRESULT hr = D3D11DEVICE->CreateBlendState(&mBlendDesc, &mBlendState);
    HRESULT hr = D3D11DEVICE->CreateBlendState(&mBlendDesc, &mBlendState);