diff --git a/src/Shaders/AbstractVector2D.vert b/src/Shaders/AbstractVector2D.vert index 6f0f9baa4..82dfb3914 100644 --- a/src/Shaders/AbstractVector2D.vert +++ b/src/Shaders/AbstractVector2D.vert @@ -34,8 +34,8 @@ uniform highp mat3 transformationProjectionMatrix; #endif #ifdef EXPLICIT_ATTRIB_LOCATION -layout(location = 0) in highp vec2 position; -layout(location = 1) in mediump vec2 textureCoordinates; +layout(location = POSITION_ATTRIBUTE_LOCATION) in highp vec2 position; +layout(location = TEXTURECOORDINATES_ATTRIBUTE_LOCATION) in mediump vec2 textureCoordinates; #else in highp vec2 position; in mediump vec2 textureCoordinates; diff --git a/src/Shaders/AbstractVector3D.vert b/src/Shaders/AbstractVector3D.vert index f74fb0989..3da3fba47 100644 --- a/src/Shaders/AbstractVector3D.vert +++ b/src/Shaders/AbstractVector3D.vert @@ -34,8 +34,8 @@ uniform highp mat4 transformationProjectionMatrix; #endif #ifdef EXPLICIT_ATTRIB_LOCATION -layout(location = 0) in highp vec4 position; -layout(location = 1) in mediump vec2 textureCoordinates; +layout(location = POSITION_ATTRIBUTE_LOCATION) in highp vec4 position; +layout(location = TEXTURECOORDINATES_ATTRIBUTE_LOCATION) in mediump vec2 textureCoordinates; #else in highp vec4 position; in mediump vec2 textureCoordinates; diff --git a/src/Shaders/DistanceFieldVector.cpp b/src/Shaders/DistanceFieldVector.cpp index d26e2280a..fac5a9b88 100644 --- a/src/Shaders/DistanceFieldVector.cpp +++ b/src/Shaders/DistanceFieldVector.cpp @@ -49,6 +49,7 @@ template DistanceFieldVector::DistanceFieldV Shader frag(version, Shader::Type::Vertex); frag.addSource(rs.get("compatibility.glsl")) + .addSource(rs.get("generic.glsl")) .addSource(rs.get(vertexShaderName())); CORRADE_INTERNAL_ASSERT_OUTPUT(frag.compile()); AbstractShaderProgram::attachShader(frag); diff --git a/src/Shaders/Flat.cpp b/src/Shaders/Flat.cpp index acb40e535..a6f94d830 100644 --- a/src/Shaders/Flat.cpp +++ b/src/Shaders/Flat.cpp @@ -49,6 +49,7 @@ template Flat::Flat(const Flags flags): tran Shader vert(version, Shader::Type::Vertex); vert.addSource(flags & Flag::Textured ? "#define TEXTURED\n" : "") .addSource(rs.get("compatibility.glsl")) + .addSource(rs.get("generic.glsl")) .addSource(rs.get(vertexShaderName())); CORRADE_INTERNAL_ASSERT_OUTPUT(vert.compile()); attachShader(vert); diff --git a/src/Shaders/Flat2D.vert b/src/Shaders/Flat2D.vert index aa0577bc7..34bd475af 100644 --- a/src/Shaders/Flat2D.vert +++ b/src/Shaders/Flat2D.vert @@ -34,14 +34,14 @@ uniform highp mat3 transformationProjectionMatrix; #endif #ifdef EXPLICIT_ATTRIB_LOCATION -layout(location = 0) in highp vec2 position; +layout(location = POSITION_ATTRIBUTE_LOCATION) in highp vec2 position; #else in highp vec2 position; #endif #ifdef TEXTURED #ifdef EXPLICIT_ATTRIB_LOCATION -layout(location = 1) in mediump vec2 textureCoords; +layout(location = TEXTURECOORDINATES_ATTRIBUTE_LOCATION) in mediump vec2 textureCoords; #else in mediump vec2 textureCoords; #endif diff --git a/src/Shaders/Flat3D.vert b/src/Shaders/Flat3D.vert index 5ddc90060..000db457f 100644 --- a/src/Shaders/Flat3D.vert +++ b/src/Shaders/Flat3D.vert @@ -34,14 +34,14 @@ uniform highp mat4 transformationProjectionMatrix; #endif #ifdef EXPLICIT_ATTRIB_LOCATION -layout(location = 0) in highp vec4 position; +layout(location = POSITION_ATTRIBUTE_LOCATION) in highp vec4 position; #else in highp vec4 position; #endif #ifdef TEXTURED #ifdef EXPLICIT_ATTRIB_LOCATION -layout(location = 1) in mediump vec2 textureCoords; +layout(location = TEXTURECOORDINATES_ATTRIBUTE_LOCATION) in mediump vec2 textureCoords; #else in mediump vec2 textureCoords; #endif diff --git a/src/Shaders/MeshVisualizer.cpp b/src/Shaders/MeshVisualizer.cpp index 2baeef4a8..bc7dcbbac 100644 --- a/src/Shaders/MeshVisualizer.cpp +++ b/src/Shaders/MeshVisualizer.cpp @@ -56,6 +56,7 @@ MeshVisualizer::MeshVisualizer(const Flags flags): flags(flags), transformationP vert.addSource(flags & Flag::Wireframe ? "#define WIREFRAME_RENDERING\n" : "") .addSource(flags & Flag::NoGeometryShader ? "#define NO_GEOMETRY_SHADER\n" : "") .addSource(rs.get("compatibility.glsl")) + .addSource(rs.get("generic.glsl")) .addSource(rs.get("MeshVisualizer.vert")); CORRADE_INTERNAL_ASSERT_OUTPUT(vert.compile()); vert.compile(); diff --git a/src/Shaders/MeshVisualizer.vert b/src/Shaders/MeshVisualizer.vert index 42391307a..117de747e 100644 --- a/src/Shaders/MeshVisualizer.vert +++ b/src/Shaders/MeshVisualizer.vert @@ -34,7 +34,7 @@ uniform highp mat4 transformationProjectionMatrix; #endif #ifdef EXPLICIT_ATTRIB_LOCATION -layout(location = 0) highp in vec4 position; +layout(location = POSITION_ATTRIBUTE_LOCATION) highp in vec4 position; #else in highp vec4 position; #endif diff --git a/src/Shaders/Phong.cpp b/src/Shaders/Phong.cpp index a6e2bce8b..c352fc98a 100644 --- a/src/Shaders/Phong.cpp +++ b/src/Shaders/Phong.cpp @@ -43,6 +43,7 @@ Phong::Phong(const Flags flags): transformationMatrixUniform(0), projectionMatri Shader vert(version, Shader::Type::Vertex); vert.addSource(flags ? "#define TEXTURED\n" : "") .addSource(rs.get("compatibility.glsl")) + .addSource(rs.get("generic.glsl")) .addSource(rs.get("Phong.vert")); CORRADE_INTERNAL_ASSERT_OUTPUT(vert.compile()); attachShader(vert); diff --git a/src/Shaders/Phong.vert b/src/Shaders/Phong.vert index b9d69aa79..bc0f711cb 100644 --- a/src/Shaders/Phong.vert +++ b/src/Shaders/Phong.vert @@ -40,8 +40,8 @@ uniform highp vec3 light; #endif #ifdef EXPLICIT_ATTRIB_LOCATION -layout(location = 0) in highp vec4 position; -layout(location = 2) in mediump vec3 normal; +layout(location = POSITION_ATTRIBUTE_LOCATION) in highp vec4 position; +layout(location = NORMAL_ATTRIBUTE_LOCATION) in mediump vec3 normal; #else in highp vec4 position; in mediump vec3 normal; @@ -49,7 +49,7 @@ in mediump vec3 normal; #ifdef TEXTURED #ifdef EXPLICIT_ATTRIB_LOCATION -layout(location = 1) in mediump vec2 textureCoords; +layout(location = TEXTURECOORDINATES_ATTRIBUTE_LOCATION) in mediump vec2 textureCoords; #else in mediump vec2 textureCoords; #endif diff --git a/src/Shaders/Vector.cpp b/src/Shaders/Vector.cpp index 76ee1da9b..c2895bdc6 100644 --- a/src/Shaders/Vector.cpp +++ b/src/Shaders/Vector.cpp @@ -49,6 +49,7 @@ template Vector::Vector(): transformationPro Shader vert(version, Shader::Type::Vertex); vert.addSource(rs.get("compatibility.glsl")) + .addSource(rs.get("generic.glsl")) .addSource(rs.get(vertexShaderName())); CORRADE_INTERNAL_ASSERT_OUTPUT(vert.compile()); AbstractShaderProgram::attachShader(vert); diff --git a/src/Shaders/VertexColor.cpp b/src/Shaders/VertexColor.cpp index 7cccca382..a91dad60a 100644 --- a/src/Shaders/VertexColor.cpp +++ b/src/Shaders/VertexColor.cpp @@ -48,6 +48,7 @@ template VertexColor::VertexColor(): transfo Shader vert(version, Shader::Type::Vertex); vert.addSource(rs.get("compatibility.glsl")) + .addSource(rs.get("generic.glsl")) .addSource(rs.get(vertexShaderName())); CORRADE_INTERNAL_ASSERT_OUTPUT(vert.compile()); attachShader(vert); diff --git a/src/Shaders/VertexColor2D.vert b/src/Shaders/VertexColor2D.vert index de59a8983..ffa189dc6 100644 --- a/src/Shaders/VertexColor2D.vert +++ b/src/Shaders/VertexColor2D.vert @@ -38,7 +38,7 @@ uniform highp mat3 transformationProjectionMatrix; #endif #ifdef EXPLICIT_ATTRIB_LOCATION -layout(location = 0) in highp vec2 position; +layout(location = POSITION_ATTRIBUTE_LOCATION) in highp vec2 position; layout(location = 3) in lowp vec3 color; #else in highp vec2 position; diff --git a/src/Shaders/VertexColor3D.vert b/src/Shaders/VertexColor3D.vert index 0e0e37b48..89efd7132 100644 --- a/src/Shaders/VertexColor3D.vert +++ b/src/Shaders/VertexColor3D.vert @@ -38,7 +38,7 @@ uniform highp mat4 transformationProjectionMatrix; #endif #ifdef EXPLICIT_ATTRIB_LOCATION -layout(location = 0) in highp vec4 position; +layout(location = POSITION_ATTRIBUTE_LOCATION) in highp vec4 position; layout(location = 3) in lowp vec3 color; #else in highp vec4 position; diff --git a/src/Shaders/generic.glsl b/src/Shaders/generic.glsl new file mode 100644 index 000000000..5c9044877 --- /dev/null +++ b/src/Shaders/generic.glsl @@ -0,0 +1,27 @@ +/* + This file is part of Magnum. + + Copyright © 2010, 2011, 2012, 2013 Vladimír Vondruš + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. +*/ + +#define POSITION_ATTRIBUTE_LOCATION 0 +#define TEXTURECOORDINATES_ATTRIBUTE_LOCATION 1 +#define NORMAL_ATTRIBUTE_LOCATION 2 diff --git a/src/Shaders/resources.conf b/src/Shaders/resources.conf index 8edde95b8..a9aa28940 100644 --- a/src/Shaders/resources.conf +++ b/src/Shaders/resources.conf @@ -18,6 +18,9 @@ filename=Flat.frag [file] filename=FullScreenTriangle.glsl +[file] +filename=generic.glsl + [file] filename=MeshVisualizer.vert