fixup! gl_shader_gen: Support vertical/horizontal viewport flipping.
This commit is contained in:
@@ -319,14 +319,15 @@ public:
|
||||
}
|
||||
} rt[NumRenderTargets];
|
||||
|
||||
f32 viewport_scale_x;
|
||||
f32 viewport_scale_y;
|
||||
f32 viewport_scale_z;
|
||||
u32 viewport_translate_x;
|
||||
u32 viewport_translate_y;
|
||||
u32 viewport_translate_z;
|
||||
|
||||
INSERT_PADDING_WORDS(0x7A);
|
||||
struct {
|
||||
f32 scale_x;
|
||||
f32 scale_y;
|
||||
f32 scale_z;
|
||||
u32 translate_x;
|
||||
u32 translate_y;
|
||||
u32 translate_z;
|
||||
INSERT_PADDING_WORDS(2);
|
||||
} viewport_transform[NumViewports];
|
||||
|
||||
struct {
|
||||
union {
|
||||
@@ -656,12 +657,7 @@ private:
|
||||
"Field " #field_name " has invalid position")
|
||||
|
||||
ASSERT_REG_POSITION(rt, 0x200);
|
||||
ASSERT_REG_POSITION(viewport_scale_x, 0x280);
|
||||
ASSERT_REG_POSITION(viewport_scale_y, 0x281);
|
||||
ASSERT_REG_POSITION(viewport_scale_z, 0x282);
|
||||
ASSERT_REG_POSITION(viewport_translate_x, 0x283);
|
||||
ASSERT_REG_POSITION(viewport_translate_y, 0x284);
|
||||
ASSERT_REG_POSITION(viewport_translate_z, 0x285);
|
||||
ASSERT_REG_POSITION(viewport_transform[0], 0x280);
|
||||
ASSERT_REG_POSITION(viewport, 0x300);
|
||||
ASSERT_REG_POSITION(vertex_buffer, 0x35D);
|
||||
ASSERT_REG_POSITION(zeta, 0x3F8);
|
||||
|
||||
@@ -55,8 +55,10 @@ void SetShaderSamplerBindings(GLuint shader) {
|
||||
|
||||
void MaxwellUniformData::SetFromRegs(const Maxwell3D::State::ShaderStageInfo& shader_stage) {
|
||||
const auto& regs = Core::System().GetInstance().GPU().Maxwell3D().regs;
|
||||
viewport_flip[0] = regs.viewport_scale_x < 0.0 ? -1.0 : 1.0;
|
||||
viewport_flip[1] = regs.viewport_scale_y < 0.0 ? -1.0 : 1.0;
|
||||
|
||||
// TODO(bunnei): Support more than one viewport
|
||||
viewport_flip[0] = regs.viewport_transform[0].scale_x < 0.0 ? -1.0 : 1.0;
|
||||
viewport_flip[1] = regs.viewport_transform[0].scale_y < 0.0 ? -1.0 : 1.0;
|
||||
}
|
||||
|
||||
} // namespace GLShader
|
||||
|
||||
Reference in New Issue
Block a user