[glsl-out] Explicitly set location bindings

This commit is contained in:
Gordon-F
2021-03-17 15:37:18 +03:00
committed by Dzmitry Malyshau
parent a17ae022c6
commit 6736bcefa6
6 changed files with 27 additions and 13 deletions

View File

@@ -811,8 +811,22 @@ impl<'a, W: Write> Writer<'a, W> {
}
// Write the storage class
write!(self.out, "{} ", if output { "out" } else { "in" })?;
if self.options.version >= Version::Embedded(310)
|| self.options.version >= Version::Desktop(410)
{
if let Binding::Location(index, ..) = *binding {
write!(
self.out,
"layout(location = {}) {} ",
index,
if output { "out" } else { "in" }
)?;
} else {
write!(self.out, "{} ", if output { "out" } else { "in" })?;
}
} else {
write!(self.out, "{} ", if output { "out" } else { "in" })?;
}
// Write the type
// `write_type` adds no leading or trailing spaces
self.write_type(ty)?;

View File

@@ -13,8 +13,8 @@ struct VertexOutput {
uniform highp sampler2D _group_0_binding_0;
in vec2 _in_location_0;
out vec4 _out_location_0;
layout(location = 0) in vec2 _in_location_0;
layout(location = 0) out vec4 _out_location_0;
void main() {
vec2 uv2 = _in_location_0;

View File

@@ -11,9 +11,9 @@ struct VertexOutput {
vec4 position;
};
in vec2 _in_location_0;
in vec2 _in_location_1;
out vec2 _out_location_0;
layout(location = 0) in vec2 _in_location_0;
layout(location = 1) in vec2 _in_location_1;
layout(location = 0) out vec2 _out_location_0;
void main() {
vec2 pos = _in_location_0;

View File

@@ -22,9 +22,9 @@ readonly buffer Lights_block_1 {
uniform highp sampler2DArrayShadow _group_0_binding_2;
in vec3 _in_location_0;
in vec4 _in_location_1;
out vec4 _out_location_0;
layout(location = 0) in vec3 _in_location_0;
layout(location = 1) in vec4 _in_location_1;
layout(location = 0) out vec4 _out_location_0;
float fetch_shadow(uint light_id, vec4 homogeneous_coords) {
if((homogeneous_coords[3] <= 0.0)) {

View File

@@ -13,8 +13,8 @@ struct VertexOutput {
uniform highp samplerCube _group_0_binding_1;
in vec3 _in_location_0;
out vec4 _out_location_0;
layout(location = 0) in vec3 _in_location_0;
layout(location = 0) out vec4 _out_location_0;
void main() {
vec3 uv1 = _in_location_0;

View File

@@ -16,7 +16,7 @@ uniform Data_block_0 {
mat4x4 view;
} _group_0_binding_0;
out vec3 _out_location_0;
layout(location = 0) out vec3 _out_location_0;
void main() {
uint vertex_index = uint(gl_VertexID);