From dd0327e566709d8057ac4c9bd837615628e3e422 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Wed, 2 Oct 2024 17:47:17 +0200 Subject: [PATCH] arealights: don't hardcode attribute locations. This is why the example was broken basically since the 2020.06 release, which changed the normal attribute location from 2 to 5. Sigh. --- src/arealights/AreaLights.vert | 4 ++-- src/arealights/AreaLightsExample.cpp | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/arealights/AreaLights.vert b/src/arealights/AreaLights.vert index db8ef6da..60cc9986 100644 --- a/src/arealights/AreaLights.vert +++ b/src/arealights/AreaLights.vert @@ -30,8 +30,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -layout(location = 0) in vec4 position; -layout(location = 2) in vec3 normal; +layout(location = POSITION_ATTRIBUTE_LOCATION) in vec4 position; +layout(location = NORMAL_ATTRIBUTE_LOCATION) in vec3 normal; out vec4 v_position; out vec3 v_normal; diff --git a/src/arealights/AreaLightsExample.cpp b/src/arealights/AreaLightsExample.cpp index 6bae9a80..b5f7d1f0 100644 --- a/src/arealights/AreaLightsExample.cpp +++ b/src/arealights/AreaLightsExample.cpp @@ -89,7 +89,12 @@ class AreaLightShader: public GL::AbstractShaderProgram { GL::Shader vert{GL::Version::GL430, GL::Shader::Type::Vertex}; GL::Shader frag{GL::Version::GL430, GL::Shader::Type::Fragment}; - vert.addSource(rs.getString("AreaLights.vert")); + vert.addSource(Utility::format( + "#define POSITION_ATTRIBUTE_LOCATION {}\n" + "#define NORMAL_ATTRIBUTE_LOCATION {}\n", + Shaders::GenericGL3D::Position::Location, + Shaders::GenericGL3D::Normal::Location)) + .addSource(rs.getString("AreaLights.vert")); frag.addSource(rs.getString("AreaLights.frag")); CORRADE_INTERNAL_ASSERT_OUTPUT(vert.compile() && frag.compile());