From 68a2efd3c5db62c2c011ccbad84f58be5e539fe3 Mon Sep 17 00:00:00 2001 From: Dzmitry Malyshau Date: Tue, 29 Jun 2021 02:18:56 -0400 Subject: [PATCH] glsl-out: make the cs adjustment to also flip Y --- src/back/glsl/mod.rs | 4 ++-- tests/out/glsl/quad-vert.main.Vertex.glsl | 2 +- tests/out/glsl/quad.main.Vertex.glsl | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/back/glsl/mod.rs b/src/back/glsl/mod.rs index 9090aba396..ef1a71cbc0 100644 --- a/src/back/glsl/mod.rs +++ b/src/back/glsl/mod.rs @@ -130,7 +130,7 @@ bitflags::bitflags! { #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] pub struct WriterFlags: u32 { - /// Extend output Z from (0,1) to (-1,1). + /// Flip output Y and extend Z from (0,1) to (-1,1). const ADJUST_COORDINATE_SPACE = 0x1; /// Supports GL_EXT_texture_shadow_lod on the host, which provides /// additional functions on shadows and arrays of shadows. @@ -1520,7 +1520,7 @@ impl<'a, W: Write> Writer<'a, W> { { writeln!( self.out, - "gl_Position.z = gl_Position.z * 2.0 - gl_Position.w;", + "gl_Position.yz = vec2(-gl_Position.y, gl_Position.z * 2.0 - gl_Position.w);", )?; write!(self.out, "{}", INDENT.repeat(indent))?; } diff --git a/tests/out/glsl/quad-vert.main.Vertex.glsl b/tests/out/glsl/quad-vert.main.Vertex.glsl index fb0a07283b..b60099c18e 100644 --- a/tests/out/glsl/quad-vert.main.Vertex.glsl +++ b/tests/out/glsl/quad-vert.main.Vertex.glsl @@ -49,7 +49,7 @@ void main() { type10 _tmp_return = type10(_expr10, _expr11, _expr12, _expr13, _expr14); _vs2fs_location0 = _tmp_return.member; gl_Position = _tmp_return.gen_gl_Position; - gl_Position.z = gl_Position.z * 2.0 - gl_Position.w; + gl_Position.yz = vec2(-gl_Position.y, gl_Position.z * 2.0 - gl_Position.w); return; } diff --git a/tests/out/glsl/quad.main.Vertex.glsl b/tests/out/glsl/quad.main.Vertex.glsl index e32509b959..cde8ac8d46 100644 --- a/tests/out/glsl/quad.main.Vertex.glsl +++ b/tests/out/glsl/quad.main.Vertex.glsl @@ -17,7 +17,7 @@ void main() { VertexOutput _tmp_return = VertexOutput(uv, vec4((1.2 * pos), 0.0, 1.0)); _vs2fs_location0 = _tmp_return.uv; gl_Position = _tmp_return.position; - gl_Position.z = gl_Position.z * 2.0 - gl_Position.w; + gl_Position.yz = vec2(-gl_Position.y, gl_Position.z * 2.0 - gl_Position.w); return; }