From dc798b73207f8f08a9f00e8b9f2b55a7783bd78d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Mon, 21 Jan 2013 00:29:08 +0100 Subject: [PATCH] Shaders: added missing 3D version of FlatShader vertex shader. Fragment shader is common for both 2D and 3D. --- src/Shaders/CMakeLists.txt | 2 +- src/Shaders/FlatShader.cpp | 18 +++++------------- .../{FlatShader2D.frag => FlatShader.frag} | 0 src/Shaders/FlatShader3D.vert | 19 +++++++++++++++++++ 4 files changed, 25 insertions(+), 14 deletions(-) rename src/Shaders/{FlatShader2D.frag => FlatShader.frag} (100%) create mode 100644 src/Shaders/FlatShader3D.vert diff --git a/src/Shaders/CMakeLists.txt b/src/Shaders/CMakeLists.txt index 5ea5c8577..95a50b182 100644 --- a/src/Shaders/CMakeLists.txt +++ b/src/Shaders/CMakeLists.txt @@ -1,5 +1,5 @@ corrade_add_resource(MagnumShaders_RCS MagnumShaders - FlatShader2D.vert FlatShader2D.frag + FlatShader2D.vert FlatShader3D.vert FlatShader.frag PhongShader.vert PhongShader.frag TextShader2D.vert TextShader2D.frag VertexColorShader2D.vert VertexColorShader3D.vert VertexColorShader.frag diff --git a/src/Shaders/FlatShader.cpp b/src/Shaders/FlatShader.cpp index e962e8f5f..70b32361f 100644 --- a/src/Shaders/FlatShader.cpp +++ b/src/Shaders/FlatShader.cpp @@ -23,17 +23,9 @@ namespace Magnum { namespace Shaders { namespace { - template struct ShaderName {}; - - template<> struct ShaderName<2> { - constexpr static const char* vertex() { return "FlatShader2D.vert"; } - constexpr static const char* fragment() { return "FlatShader2D.frag"; } - }; - - template<> struct ShaderName<3> { - constexpr static const char* vertex() { return "FlatShader3D.vert"; } - constexpr static const char* fragment() { return "FlatShader3D.frag"; } - }; + template constexpr const char* vertexShaderName(); + template<> constexpr const char* vertexShaderName<2>() { return "FlatShader2D.vert"; } + template<> constexpr const char* vertexShaderName<3>() { return "FlatShader3D.vert"; } } template FlatShader::FlatShader(): transformationProjectionMatrixUniform(0), colorUniform(1) { @@ -47,12 +39,12 @@ template FlatShader::FlatShader(): transfor Shader vertexShader(v, Shader::Type::Vertex); vertexShader.addSource(rs.get("compatibility.glsl")); - vertexShader.addSource(rs.get(ShaderName::vertex())); + vertexShader.addSource(rs.get(vertexShaderName())); attachShader(vertexShader); Shader fragmentShader(v, Shader::Type::Fragment); fragmentShader.addSource(rs.get("compatibility.glsl")); - fragmentShader.addSource(rs.get(ShaderName::fragment())); + fragmentShader.addSource(rs.get("FlatShader.frag")); attachShader(fragmentShader); #ifndef MAGNUM_TARGET_GLES diff --git a/src/Shaders/FlatShader2D.frag b/src/Shaders/FlatShader.frag similarity index 100% rename from src/Shaders/FlatShader2D.frag rename to src/Shaders/FlatShader.frag diff --git a/src/Shaders/FlatShader3D.vert b/src/Shaders/FlatShader3D.vert new file mode 100644 index 000000000..69eaead28 --- /dev/null +++ b/src/Shaders/FlatShader3D.vert @@ -0,0 +1,19 @@ +#ifndef NEW_GLSL +#define in attribute +#endif + +#ifdef EXPLICIT_UNIFORM_LOCATION +layout(location = 0) uniform mat4 transformationProjectionMatrix; +#else +uniform highp mat4 transformationProjectionMatrix; +#endif + +#ifdef EXPLICIT_ATTRIB_LOCATION +layout(location = 0) in highp vec4 position; +#else +in highp vec4 position; +#endif + +void main() { + gl_Position = transformationProjectionMatrix*position; +}