ConstantManager: Add logic ops to PixelShaderConstants
This commit is contained in:
parent
8e72136eeb
commit
04ec02c06b
|
@ -15,6 +15,7 @@ using int4 = std::array<s32, 4>;
|
|||
enum class DstBlendFactor : u32;
|
||||
enum class SrcBlendFactor : u32;
|
||||
enum class ZTexOp : u32;
|
||||
enum class LogicOp : u32;
|
||||
|
||||
struct PixelShaderConstants
|
||||
{
|
||||
|
@ -54,6 +55,9 @@ struct PixelShaderConstants
|
|||
DstBlendFactor blend_dst_factor_alpha;
|
||||
u32 blend_subtract;
|
||||
u32 blend_subtract_alpha;
|
||||
// For shader_framebuffer_fetch logic ops:
|
||||
u32 logic_op_enable; // bool
|
||||
LogicOp logic_op_mode;
|
||||
};
|
||||
|
||||
struct VertexShaderConstants
|
||||
|
|
|
@ -423,6 +423,8 @@ void WritePixelShaderCommonHeader(ShaderCode& out, APIType api_type,
|
|||
"\tuint blend_dst_factor_alpha;\n"
|
||||
"\tbool blend_subtract;\n"
|
||||
"\tbool blend_subtract_alpha;\n"
|
||||
"\tbool logic_op_enable;\n"
|
||||
"\tuint logic_op_mode;\n"
|
||||
"}};\n\n");
|
||||
out.Write("#define bpmem_combiners(i) (bpmem_pack1[(i)].xy)\n"
|
||||
"#define bpmem_tevind(i) (bpmem_pack1[(i)].z)\n"
|
||||
|
|
|
@ -510,6 +510,16 @@ void PixelShaderManager::SetBlendModeChanged()
|
|||
constants.blend_subtract_alpha = state.subtractAlpha;
|
||||
dirty = true;
|
||||
}
|
||||
if (constants.logic_op_enable != state.logicopenable)
|
||||
{
|
||||
constants.logic_op_enable = state.logicopenable;
|
||||
dirty = true;
|
||||
}
|
||||
if (constants.logic_op_mode != state.logicmode)
|
||||
{
|
||||
constants.logic_op_mode = state.logicmode;
|
||||
dirty = true;
|
||||
}
|
||||
s_bDestAlphaDirty = true;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue