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 DstBlendFactor : u32;
|
||||||
enum class SrcBlendFactor : u32;
|
enum class SrcBlendFactor : u32;
|
||||||
enum class ZTexOp : u32;
|
enum class ZTexOp : u32;
|
||||||
|
enum class LogicOp : u32;
|
||||||
|
|
||||||
struct PixelShaderConstants
|
struct PixelShaderConstants
|
||||||
{
|
{
|
||||||
|
@ -54,6 +55,9 @@ struct PixelShaderConstants
|
||||||
DstBlendFactor blend_dst_factor_alpha;
|
DstBlendFactor blend_dst_factor_alpha;
|
||||||
u32 blend_subtract;
|
u32 blend_subtract;
|
||||||
u32 blend_subtract_alpha;
|
u32 blend_subtract_alpha;
|
||||||
|
// For shader_framebuffer_fetch logic ops:
|
||||||
|
u32 logic_op_enable; // bool
|
||||||
|
LogicOp logic_op_mode;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct VertexShaderConstants
|
struct VertexShaderConstants
|
||||||
|
|
|
@ -423,6 +423,8 @@ void WritePixelShaderCommonHeader(ShaderCode& out, APIType api_type,
|
||||||
"\tuint blend_dst_factor_alpha;\n"
|
"\tuint blend_dst_factor_alpha;\n"
|
||||||
"\tbool blend_subtract;\n"
|
"\tbool blend_subtract;\n"
|
||||||
"\tbool blend_subtract_alpha;\n"
|
"\tbool blend_subtract_alpha;\n"
|
||||||
|
"\tbool logic_op_enable;\n"
|
||||||
|
"\tuint logic_op_mode;\n"
|
||||||
"}};\n\n");
|
"}};\n\n");
|
||||||
out.Write("#define bpmem_combiners(i) (bpmem_pack1[(i)].xy)\n"
|
out.Write("#define bpmem_combiners(i) (bpmem_pack1[(i)].xy)\n"
|
||||||
"#define bpmem_tevind(i) (bpmem_pack1[(i)].z)\n"
|
"#define bpmem_tevind(i) (bpmem_pack1[(i)].z)\n"
|
||||||
|
|
|
@ -510,6 +510,16 @@ void PixelShaderManager::SetBlendModeChanged()
|
||||||
constants.blend_subtract_alpha = state.subtractAlpha;
|
constants.blend_subtract_alpha = state.subtractAlpha;
|
||||||
dirty = true;
|
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;
|
s_bDestAlphaDirty = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue