|
|
|
@ -24,8 +24,7 @@ layout (location = 0) out vec4 position; |
|
|
|
|
|
|
|
layout(std140) uniform vs_config { |
|
|
|
vec4 viewport_flip; |
|
|
|
uvec4 instance_id; |
|
|
|
uvec4 flip_stage; |
|
|
|
uvec4 config_pack; // instance_id, flip_stage, y_direction, padding
|
|
|
|
uvec4 alpha_test; |
|
|
|
}; |
|
|
|
)"; |
|
|
|
@ -63,7 +62,8 @@ void main() { |
|
|
|
out += R"( |
|
|
|
|
|
|
|
// Check if the flip stage is VertexB
|
|
|
|
if (flip_stage[0] == 1) { |
|
|
|
// Config pack's second value is flip_stage
|
|
|
|
if (config_pack[1] == 1) { |
|
|
|
// Viewport can be flipped, which is unsupported by glViewport
|
|
|
|
position.xy *= viewport_flip.xy; |
|
|
|
} |
|
|
|
@ -71,7 +71,7 @@ void main() { |
|
|
|
|
|
|
|
// TODO(bunnei): This is likely a hack, position.w should be interpolated as 1.0
|
|
|
|
// For now, this is here to bring order in lieu of proper emulation
|
|
|
|
if (flip_stage[0] == 1) { |
|
|
|
if (config_pack[1] == 1) { |
|
|
|
position.w = 1.0; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -101,8 +101,7 @@ layout (location = 0) out vec4 position; |
|
|
|
|
|
|
|
layout (std140) uniform gs_config { |
|
|
|
vec4 viewport_flip; |
|
|
|
uvec4 instance_id; |
|
|
|
uvec4 flip_stage; |
|
|
|
uvec4 config_pack; // instance_id, flip_stage, y_direction, padding
|
|
|
|
uvec4 alpha_test; |
|
|
|
}; |
|
|
|
|
|
|
|
@ -139,8 +138,7 @@ layout (location = 0) in vec4 position; |
|
|
|
|
|
|
|
layout (std140) uniform fs_config { |
|
|
|
vec4 viewport_flip; |
|
|
|
uvec4 instance_id; |
|
|
|
uvec4 flip_stage; |
|
|
|
uvec4 config_pack; // instance_id, flip_stage, y_direction, padding
|
|
|
|
uvec4 alpha_test; |
|
|
|
}; |
|
|
|
|
|
|
|
|