Browse Source

Shaders: avoid MeshVisualizer::VertexIndex reusing a generic color slot.

Can't really future-proof that, so just adding a lot of comments
everywhere.
findsdl-include-root
Vladimír Vondruš 7 years ago
parent
commit
9315175a72
  1. 4
      src/Magnum/Shaders/Generic.h
  2. 2
      src/Magnum/Shaders/MeshVisualizer.h
  3. 2
      src/Magnum/Shaders/MeshVisualizer.vert
  4. 13
      src/Magnum/Shaders/Test/MeshVisualizerTest.cpp

4
src/Magnum/Shaders/Generic.h

@ -66,6 +66,10 @@ template<UnsignedInt dimensions> struct Generic {
#endif #endif
}; };
/* Index 5 used by MeshVisualizer::VertexIndex. Update
MeshVisualizerTest::vertexIndexNoConflict() when adding new attributes
here. */
/** /**
* @brief Vertex position * @brief Vertex position
* *

2
src/Magnum/Shaders/MeshVisualizer.h

@ -125,7 +125,7 @@ class MAGNUM_SHADERS_EXPORT MeshVisualizer: public GL::AbstractShaderProgram {
* @cb{.glsl} gl_VertexID @ce shader builtin, so the attribute is not * @cb{.glsl} gl_VertexID @ce shader builtin, so the attribute is not
* needed. * needed.
*/ */
typedef GL::Attribute<3, Float> VertexIndex; typedef GL::Attribute<5, Float> VertexIndex;
enum: UnsignedInt { enum: UnsignedInt {
/** /**

2
src/Magnum/Shaders/MeshVisualizer.vert

@ -45,7 +45,7 @@ in highp vec4 position;
#if defined(WIREFRAME_RENDERING) && defined(NO_GEOMETRY_SHADER) #if defined(WIREFRAME_RENDERING) && defined(NO_GEOMETRY_SHADER)
#if (!defined(GL_ES) && __VERSION__ < 140) || (defined(GL_ES) && __VERSION__ < 300) #if (!defined(GL_ES) && __VERSION__ < 140) || (defined(GL_ES) && __VERSION__ < 300)
#ifdef EXPLICIT_ATTRIB_LOCATION #ifdef EXPLICIT_ATTRIB_LOCATION
layout(location = 3) layout(location = 5)
#endif #endif
in lowp float vertexIndex; in lowp float vertexIndex;
#define gl_VertexID int(vertexIndex) #define gl_VertexID int(vertexIndex)

13
src/Magnum/Shaders/Test/MeshVisualizerTest.cpp

@ -37,6 +37,8 @@ struct MeshVisualizerTest: TestSuite::Tester {
void constructNoCreate(); void constructNoCreate();
void constructCopy(); void constructCopy();
void vertexIndexNoConflict();
void debugFlag(); void debugFlag();
void debugFlags(); void debugFlags();
}; };
@ -45,6 +47,8 @@ MeshVisualizerTest::MeshVisualizerTest() {
addTests({&MeshVisualizerTest::constructNoCreate, addTests({&MeshVisualizerTest::constructNoCreate,
&MeshVisualizerTest::constructCopy, &MeshVisualizerTest::constructCopy,
&MeshVisualizerTest::vertexIndexNoConflict,
&MeshVisualizerTest::debugFlag, &MeshVisualizerTest::debugFlag,
&MeshVisualizerTest::debugFlags}); &MeshVisualizerTest::debugFlags});
} }
@ -63,6 +67,15 @@ void MeshVisualizerTest::constructCopy() {
CORRADE_VERIFY(!(std::is_assignable<MeshVisualizer, const MeshVisualizer&>{})); CORRADE_VERIFY(!(std::is_assignable<MeshVisualizer, const MeshVisualizer&>{}));
} }
void MeshVisualizerTest::vertexIndexNoConflict() {
CORRADE_VERIFY(MeshVisualizer::VertexIndex::Location != Generic3D::Position::Location);
CORRADE_VERIFY(MeshVisualizer::VertexIndex::Location != Generic3D::Normal::Location);
CORRADE_VERIFY(MeshVisualizer::VertexIndex::Location != Generic3D::TextureCoordinates::Location);
CORRADE_VERIFY(MeshVisualizer::VertexIndex::Location != Generic3D::Color3::Location);
CORRADE_VERIFY(MeshVisualizer::VertexIndex::Location != Generic3D::Color4::Location);
CORRADE_VERIFY(MeshVisualizer::VertexIndex::Location != Generic3D::Tangent::Location);
}
void MeshVisualizerTest::debugFlag() { void MeshVisualizerTest::debugFlag() {
std::ostringstream out; std::ostringstream out;

Loading…
Cancel
Save