mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-04 00:49:02 -06:00 
			
		
		
		
	gl_shader_decompiler: Declare gl_Layer and gl_ViewportIndex within gl_PerVertex for vertex and tessellation shaders
This commit is contained in:
		@@ -619,6 +619,21 @@ private:
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (stage != ShaderType::Geometry &&
 | 
			
		||||
            (stage != ShaderType::Vertex || device.HasVertexViewportLayer())) {
 | 
			
		||||
            if (ir.UsesLayer()) {
 | 
			
		||||
                code.AddLine("int gl_Layer;");
 | 
			
		||||
            }
 | 
			
		||||
            if (ir.UsesViewportIndex()) {
 | 
			
		||||
                code.AddLine("int gl_ViewportIndex;");
 | 
			
		||||
            }
 | 
			
		||||
        } else if ((ir.UsesLayer() || ir.UsesViewportIndex()) && stage == ShaderType::Vertex &&
 | 
			
		||||
                   !device.HasVertexViewportLayer()) {
 | 
			
		||||
            LOG_ERROR(
 | 
			
		||||
                Render_OpenGL,
 | 
			
		||||
                "GL_ARB_shader_viewport_layer_array is not available and its required by a shader");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (ir.UsesPointSize()) {
 | 
			
		||||
            code.AddLine("float gl_PointSize;");
 | 
			
		||||
        }
 | 
			
		||||
@@ -635,18 +650,13 @@ private:
 | 
			
		||||
        code.AddLine("}};");
 | 
			
		||||
        code.AddNewLine();
 | 
			
		||||
 | 
			
		||||
        if (stage != ShaderType::Vertex || device.HasVertexViewportLayer()) {
 | 
			
		||||
        if (stage == ShaderType::Geometry) {
 | 
			
		||||
            if (ir.UsesLayer()) {
 | 
			
		||||
                code.AddLine("out int gl_Layer;");
 | 
			
		||||
            }
 | 
			
		||||
            if (ir.UsesViewportIndex()) {
 | 
			
		||||
                code.AddLine("out int gl_ViewportIndex;");
 | 
			
		||||
            }
 | 
			
		||||
        } else if ((ir.UsesLayer() || ir.UsesViewportIndex()) && stage == ShaderType::Vertex &&
 | 
			
		||||
                   !device.HasVertexViewportLayer()) {
 | 
			
		||||
            LOG_ERROR(
 | 
			
		||||
                Render_OpenGL,
 | 
			
		||||
                "GL_ARB_shader_viewport_layer_array is not available and its required by a shader");
 | 
			
		||||
        }
 | 
			
		||||
        code.AddNewLine();
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user