[D3D12] ROV: Alpha saturate blending factor
This commit is contained in:
@@ -147,55 +147,59 @@ class DxbcShaderTranslator : public ShaderTranslator {
|
||||
enum : uint32_t {
|
||||
// X/Z of the blend constant for the render target.
|
||||
|
||||
kBlendX_Src_SrcColor_Shift = 0,
|
||||
// For ONE_MINUS modes, enable both One and the needed factor with _Neg.
|
||||
kBlendX_Src_One_Shift = 0,
|
||||
kBlendX_Src_One = 1u << kBlendX_Src_One_Shift,
|
||||
kBlendX_Src_SrcColor_Shift = 1,
|
||||
kBlendX_Src_SrcColor_Pos = 1u << kBlendX_Src_SrcColor_Shift,
|
||||
kBlendX_Src_SrcColor_Neg = 3u << kBlendX_Src_SrcColor_Shift,
|
||||
kBlendX_Src_SrcAlpha_Shift = 2,
|
||||
kBlendX_Src_SrcAlpha_Shift = 3,
|
||||
kBlendX_Src_SrcAlpha_Pos = 1u << kBlendX_Src_SrcAlpha_Shift,
|
||||
kBlendX_Src_SrcAlpha_Neg = 3u << kBlendX_Src_SrcAlpha_Shift,
|
||||
kBlendX_Src_DestColor_Shift = 4,
|
||||
kBlendX_Src_DestColor_Shift = 5,
|
||||
kBlendX_Src_DestColor_Pos = 1u << kBlendX_Src_DestColor_Shift,
|
||||
kBlendX_Src_DestColor_Neg = 3u << kBlendX_Src_DestColor_Shift,
|
||||
kBlendX_Src_DestAlpha_Shift = 6,
|
||||
kBlendX_Src_DestAlpha_Shift = 7,
|
||||
kBlendX_Src_DestAlpha_Pos = 1u << kBlendX_Src_DestAlpha_Shift,
|
||||
kBlendX_Src_DestAlpha_Neg = 3u << kBlendX_Src_DestAlpha_Shift,
|
||||
// For ONE_MINUS modes, enable both One and the needed factor with _Neg.
|
||||
kBlendX_Src_One_Shift = 8,
|
||||
kBlendX_Src_One = 1u << kBlendX_Src_One_Shift,
|
||||
kBlendX_Src_SrcAlphaSaturate_Shift = 9,
|
||||
kBlendX_Src_SrcAlphaSaturate = 1u << kBlendX_Src_SrcAlphaSaturate_Shift,
|
||||
|
||||
kBlendX_SrcAlpha_SrcAlpha_Shift = 9,
|
||||
kBlendX_SrcAlpha_One_Shift = 10,
|
||||
kBlendX_SrcAlpha_One = 1u << kBlendX_SrcAlpha_One_Shift,
|
||||
kBlendX_SrcAlpha_SrcAlpha_Shift = 11,
|
||||
kBlendX_SrcAlpha_SrcAlpha_Pos = 1u << kBlendX_SrcAlpha_SrcAlpha_Shift,
|
||||
kBlendX_SrcAlpha_SrcAlpha_Neg = 3u << kBlendX_SrcAlpha_SrcAlpha_Shift,
|
||||
kBlendX_SrcAlpha_DestAlpha_Shift = 11,
|
||||
kBlendX_SrcAlpha_DestAlpha_Shift = 13,
|
||||
kBlendX_SrcAlpha_DestAlpha_Pos = 1u << kBlendX_SrcAlpha_DestAlpha_Shift,
|
||||
kBlendX_SrcAlpha_DestAlpha_Neg = 3u << kBlendX_SrcAlpha_DestAlpha_Shift,
|
||||
kBlendX_SrcAlpha_One_Shift = 13,
|
||||
kBlendX_SrcAlpha_One = 1u << kBlendX_SrcAlpha_One_Shift,
|
||||
|
||||
kBlendX_Dest_SrcColor_Shift = 14,
|
||||
// For ONE_MINUS modes, enable both One and the needed factor with _Neg.
|
||||
kBlendX_Dest_One_Shift = 15,
|
||||
kBlendX_Dest_One = 1u << kBlendX_Dest_One_Shift,
|
||||
kBlendX_Dest_SrcColor_Shift = 16,
|
||||
kBlendX_Dest_SrcColor_Pos = 1u << kBlendX_Dest_SrcColor_Shift,
|
||||
kBlendX_Dest_SrcColor_Neg = 3u << kBlendX_Dest_SrcColor_Shift,
|
||||
kBlendX_Dest_SrcAlpha_Shift = 16,
|
||||
kBlendX_Dest_SrcAlpha_Shift = 18,
|
||||
kBlendX_Dest_SrcAlpha_Pos = 1u << kBlendX_Dest_SrcAlpha_Shift,
|
||||
kBlendX_Dest_SrcAlpha_Neg = 3u << kBlendX_Dest_SrcAlpha_Shift,
|
||||
kBlendX_Dest_DestColor_Shift = 18,
|
||||
kBlendX_Dest_DestColor_Shift = 20,
|
||||
kBlendX_Dest_DestColor_Pos = 1u << kBlendX_Dest_DestColor_Shift,
|
||||
kBlendX_Dest_DestColor_Neg = 3u << kBlendX_Dest_DestColor_Shift,
|
||||
kBlendX_Dest_DestAlpha_Shift = 20,
|
||||
kBlendX_Dest_DestAlpha_Shift = 22,
|
||||
kBlendX_Dest_DestAlpha_Pos = 1u << kBlendX_Dest_DestAlpha_Shift,
|
||||
kBlendX_Dest_DestAlpha_Neg = 3u << kBlendX_Dest_DestAlpha_Shift,
|
||||
// For ONE_MINUS modes, enable both One and the needed factor with _Neg.
|
||||
kBlendX_Dest_One_Shift = 22,
|
||||
kBlendX_Dest_One = 1u << kBlendX_Dest_One_Shift,
|
||||
kBlendX_Dest_SrcAlphaSaturate_Shift = 24,
|
||||
kBlendX_Dest_SrcAlphaSaturate = 1u << kBlendX_Dest_SrcAlphaSaturate_Shift,
|
||||
|
||||
kBlendX_DestAlpha_SrcAlpha_Shift = 23,
|
||||
kBlendX_DestAlpha_One_Shift = 25,
|
||||
kBlendX_DestAlpha_One = 1u << kBlendX_DestAlpha_One_Shift,
|
||||
kBlendX_DestAlpha_SrcAlpha_Shift = 26,
|
||||
kBlendX_DestAlpha_SrcAlpha_Pos = 1u << kBlendX_DestAlpha_SrcAlpha_Shift,
|
||||
kBlendX_DestAlpha_SrcAlpha_Neg = 3u << kBlendX_DestAlpha_SrcAlpha_Shift,
|
||||
kBlendX_DestAlpha_DestAlpha_Shift = 25,
|
||||
kBlendX_DestAlpha_DestAlpha_Shift = 28,
|
||||
kBlendX_DestAlpha_DestAlpha_Pos = 1u << kBlendX_DestAlpha_DestAlpha_Shift,
|
||||
kBlendX_DestAlpha_DestAlpha_Neg = 3u << kBlendX_DestAlpha_DestAlpha_Shift,
|
||||
kBlendX_DestAlpha_One_Shift = 27,
|
||||
kBlendX_DestAlpha_One = 1u << kBlendX_DestAlpha_One_Shift,
|
||||
|
||||
// Y/W of the blend constant for the render target.
|
||||
|
||||
@@ -225,38 +229,28 @@ class DxbcShaderTranslator : public ShaderTranslator {
|
||||
kBlendY_DestAlpha_ConstantAlpha_Neg =
|
||||
3u << kBlendY_DestAlpha_ConstantAlpha_Shift,
|
||||
|
||||
kBlendY_Src_AlphaSaturate_Shift = 12,
|
||||
kBlendY_Src_AlphaSaturate = 1u << kBlendY_Src_AlphaSaturate_Shift,
|
||||
kBlendY_SrcAlpha_AlphaSaturate_Shift = 13,
|
||||
kBlendY_SrcAlpha_AlphaSaturate = 1u << kBlendY_SrcAlpha_AlphaSaturate_Shift,
|
||||
kBlendY_Dest_AlphaSaturate_Shift = 14,
|
||||
kBlendY_Dest_AlphaSaturate = 1u << kBlendY_Dest_AlphaSaturate_Shift,
|
||||
kBlendY_DestAlpha_AlphaSaturate_Shift = 15,
|
||||
kBlendY_DestAlpha_AlphaSaturate = 1u
|
||||
<< kBlendY_DestAlpha_AlphaSaturate_Shift,
|
||||
|
||||
// For addition/subtraction/inverse subtraction, but must be positive for
|
||||
// min/max.
|
||||
kBlendY_Src_OpSign_Shift = 16,
|
||||
kBlendY_Src_OpSign_Shift = 12,
|
||||
kBlendY_Src_OpSign_Pos = 1u << kBlendY_Src_OpSign_Shift,
|
||||
kBlendY_Src_OpSign_Neg = 3u << kBlendY_Src_OpSign_Shift,
|
||||
kBlendY_SrcAlpha_OpSign_Shift = 18,
|
||||
kBlendY_SrcAlpha_OpSign_Shift = 14,
|
||||
kBlendY_SrcAlpha_OpSign_Pos = 1u << kBlendY_SrcAlpha_OpSign_Shift,
|
||||
kBlendY_SrcAlpha_OpSign_Neg = 3u << kBlendY_SrcAlpha_OpSign_Shift,
|
||||
kBlendY_Dest_OpSign_Shift = 20,
|
||||
kBlendY_Dest_OpSign_Shift = 16,
|
||||
kBlendY_Dest_OpSign_Pos = 1u << kBlendY_Dest_OpSign_Shift,
|
||||
kBlendY_Dest_OpSign_Neg = 3u << kBlendY_Dest_OpSign_Shift,
|
||||
kBlendY_DestAlpha_OpSign_Shift = 22,
|
||||
kBlendY_DestAlpha_OpSign_Shift = 18,
|
||||
kBlendY_DestAlpha_OpSign_Pos = 1u << kBlendY_DestAlpha_OpSign_Shift,
|
||||
kBlendY_DestAlpha_OpSign_Neg = 3u << kBlendY_DestAlpha_OpSign_Shift,
|
||||
|
||||
kBlendY_Color_OpMin_Shift = 24,
|
||||
kBlendY_Color_OpMin_Shift = 20,
|
||||
kBlendY_Color_OpMin = 1u << kBlendY_Color_OpMin_Shift,
|
||||
kBlendY_Color_OpMax_Shift = 25,
|
||||
kBlendY_Color_OpMax_Shift = 21,
|
||||
kBlendY_Color_OpMax = 1u << kBlendY_Color_OpMax_Shift,
|
||||
kBlendY_Alpha_OpMin_Shift = 26,
|
||||
kBlendY_Alpha_OpMin_Shift = 22,
|
||||
kBlendY_Alpha_OpMin = 1u << kBlendY_Alpha_OpMin_Shift,
|
||||
kBlendY_Alpha_OpMax_Shift = 27,
|
||||
kBlendY_Alpha_OpMax_Shift = 23,
|
||||
kBlendY_Alpha_OpMax = 1u << kBlendY_Alpha_OpMax_Shift,
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user