1
0
Fork 0
forked from suyu/suyu

renderer_(opengl/vulkan): Fix tessellation clockwise parameter

This should be assigned CW only on Triangles_CW rather than not Triangles_CCW, making CCW the default winding order rather than CW.
This commit is contained in:
Morph 2022-10-13 15:52:56 -04:00
parent 26b76d2eaf
commit d3114c620d
3 changed files with 6 additions and 6 deletions

View file

@ -390,7 +390,7 @@ public:
FractionalEven = 2, FractionalEven = 2,
}; };
enum class OutputPrimitves : u32 { enum class OutputPrimitives : u32 {
Points = 0, Points = 0,
Lines = 1, Lines = 1,
Triangles_CW = 2, Triangles_CW = 2,
@ -401,7 +401,7 @@ public:
union { union {
BitField<0, 2, DomainType> domain_type; BitField<0, 2, DomainType> domain_type;
BitField<4, 2, Spacing> spacing; BitField<4, 2, Spacing> spacing;
BitField<8, 2, OutputPrimitves> output_primitives; BitField<8, 2, OutputPrimitives> output_primitives;
}; };
} params; } params;

View file

@ -317,8 +317,8 @@ GraphicsPipeline* ShaderCache::CurrentGraphicsPipeline() {
graphics_key.tessellation_primitive.Assign(regs.tessellation.params.domain_type.Value()); graphics_key.tessellation_primitive.Assign(regs.tessellation.params.domain_type.Value());
graphics_key.tessellation_spacing.Assign(regs.tessellation.params.spacing.Value()); graphics_key.tessellation_spacing.Assign(regs.tessellation.params.spacing.Value());
graphics_key.tessellation_clockwise.Assign( graphics_key.tessellation_clockwise.Assign(
regs.tessellation.params.output_primitives.Value() != regs.tessellation.params.output_primitives.Value() ==
Maxwell::Tessellation::OutputPrimitves::Triangles_CCW); Maxwell::Tessellation::OutputPrimitives::Triangles_CW);
graphics_key.xfb_enabled.Assign(regs.transform_feedback_enabled != 0 ? 1 : 0); graphics_key.xfb_enabled.Assign(regs.transform_feedback_enabled != 0 ? 1 : 0);
if (graphics_key.xfb_enabled) { if (graphics_key.xfb_enabled) {
SetXfbState(graphics_key.xfb_state, regs); SetXfbState(graphics_key.xfb_state, regs);

View file

@ -73,8 +73,8 @@ void FixedPipelineState::Refresh(Tegra::Engines::Maxwell3D& maxwell3d,
patch_control_points_minus_one.Assign(regs.patch_vertices - 1); patch_control_points_minus_one.Assign(regs.patch_vertices - 1);
tessellation_primitive.Assign(static_cast<u32>(regs.tessellation.params.domain_type.Value())); tessellation_primitive.Assign(static_cast<u32>(regs.tessellation.params.domain_type.Value()));
tessellation_spacing.Assign(static_cast<u32>(regs.tessellation.params.spacing.Value())); tessellation_spacing.Assign(static_cast<u32>(regs.tessellation.params.spacing.Value()));
tessellation_clockwise.Assign(regs.tessellation.params.output_primitives.Value() != tessellation_clockwise.Assign(regs.tessellation.params.output_primitives.Value() ==
Maxwell::Tessellation::OutputPrimitves::Triangles_CCW); Maxwell::Tessellation::OutputPrimitives::Triangles_CW);
logic_op_enable.Assign(regs.logic_op.enable != 0 ? 1 : 0); logic_op_enable.Assign(regs.logic_op.enable != 0 ? 1 : 0);
logic_op.Assign(PackLogicOp(regs.logic_op.op)); logic_op.Assign(PackLogicOp(regs.logic_op.op));
topology.Assign(regs.draw.topology); topology.Assign(regs.draw.topology);