Browse Source

Shaders: ye, SwiftShader, thanks for reminding me of the harsh reality.

256 vectors in total is really damn low, guess I'll have to optimize the
remaining uniform structures to deduplicate the redundant material info.
pull/518/head
Vladimír Vondruš 5 years ago
parent
commit
24f6c33069
  1. 4
      src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp
  2. 4
      src/Magnum/Shaders/Test/FlatGLTest.cpp
  3. 8
      src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp
  4. 6
      src/Magnum/Shaders/Test/PhongGLTest.cpp
  5. 4
      src/Magnum/Shaders/Test/VectorGLTest.cpp
  6. 4
      src/Magnum/Shaders/Test/VertexColorGLTest.cpp

4
src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp

@ -156,7 +156,9 @@ constexpr struct {
{"classic fallback", {}, 1, 1}, {"classic fallback", {}, 1, 1},
{"", DistanceFieldVectorGL2D::Flag::UniformBuffers, 1, 1}, {"", DistanceFieldVectorGL2D::Flag::UniformBuffers, 1, 1},
{"texture transformation", DistanceFieldVectorGL2D::Flag::UniformBuffers|DistanceFieldVectorGL2D::Flag::TextureTransformation, 1, 1}, {"texture transformation", DistanceFieldVectorGL2D::Flag::UniformBuffers|DistanceFieldVectorGL2D::Flag::TextureTransformation, 1, 1},
{"multiple materials, draws", DistanceFieldVectorGL2D::Flag::UniformBuffers, 64, 128}, /* SwiftShader has 256 uniform vectors at most, per-draw is 4+1 in 3D case
and 3+1 in 2D, per-material 4 */
{"multiple materials, draws", DistanceFieldVectorGL2D::Flag::UniformBuffers, 16, 48},
}; };
constexpr struct { constexpr struct {

4
src/Magnum/Shaders/Test/FlatGLTest.cpp

@ -199,7 +199,9 @@ constexpr struct {
} ConstructUniformBuffersData[]{ } ConstructUniformBuffersData[]{
{"classic fallback", {}, 1}, {"classic fallback", {}, 1},
{"", FlatGL2D::Flag::UniformBuffers, 1}, {"", FlatGL2D::Flag::UniformBuffers, 1},
{"multiple draws", FlatGL2D::Flag::UniformBuffers, 128}, /* SwiftShader has 256 uniform vectors at most, per-draw is 4+2 in 3D case
and 3+2 in 2D */
{"multiple draws", FlatGL2D::Flag::UniformBuffers, 42},
{"texture transformation", FlatGL2D::Flag::UniformBuffers|FlatGL2D::Flag::Textured|FlatGL2D::Flag::TextureTransformation, 1}, {"texture transformation", FlatGL2D::Flag::UniformBuffers|FlatGL2D::Flag::Textured|FlatGL2D::Flag::TextureTransformation, 1},
{"alpha mask", FlatGL2D::Flag::UniformBuffers|FlatGL2D::Flag::AlphaMask, 1}, {"alpha mask", FlatGL2D::Flag::UniformBuffers|FlatGL2D::Flag::AlphaMask, 1},
{"object ID", FlatGL2D::Flag::UniformBuffers|FlatGL2D::Flag::ObjectId, 1} {"object ID", FlatGL2D::Flag::UniformBuffers|FlatGL2D::Flag::ObjectId, 1}

8
src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp

@ -215,7 +215,9 @@ constexpr struct {
} ConstructUniformBuffersData2D[] { } ConstructUniformBuffersData2D[] {
{"classic fallback", MeshVisualizerGL2D::Flag::Wireframe|MeshVisualizerGL2D::Flag::NoGeometryShader, 1, 1}, {"classic fallback", MeshVisualizerGL2D::Flag::Wireframe|MeshVisualizerGL2D::Flag::NoGeometryShader, 1, 1},
{"", MeshVisualizerGL2D::Flag::UniformBuffers|MeshVisualizerGL2D::Flag::Wireframe|MeshVisualizerGL2D::Flag::NoGeometryShader, 1, 1}, {"", MeshVisualizerGL2D::Flag::UniformBuffers|MeshVisualizerGL2D::Flag::Wireframe|MeshVisualizerGL2D::Flag::NoGeometryShader, 1, 1},
{"multiple materials, draws", MeshVisualizerGL2D::Flag::UniformBuffers|MeshVisualizerGL2D::Flag::Wireframe|MeshVisualizerGL2D::Flag::NoGeometryShader, 64, 128}, /* SwiftShader has 256 uniform vectors at most, per-2D-draw is 4,
per-material 4, two need to be left for drawOffset + viewportSize */
{"multiple materials, draws", MeshVisualizerGL2D::Flag::UniformBuffers|MeshVisualizerGL2D::Flag::Wireframe|MeshVisualizerGL2D::Flag::NoGeometryShader, 8, 55},
/* The rest is basically a copy of ConstructData2D with UniformBuffers /* The rest is basically a copy of ConstructData2D with UniformBuffers
added */ added */
#ifndef MAGNUM_TARGET_WEBGL #ifndef MAGNUM_TARGET_WEBGL
@ -271,7 +273,9 @@ constexpr struct {
} ConstructUniformBuffersData3D[] { } ConstructUniformBuffersData3D[] {
{"classic fallback", MeshVisualizerGL3D::Flag::Wireframe|MeshVisualizerGL3D::Flag::NoGeometryShader, 1, 1}, {"classic fallback", MeshVisualizerGL3D::Flag::Wireframe|MeshVisualizerGL3D::Flag::NoGeometryShader, 1, 1},
{"", MeshVisualizerGL3D::Flag::UniformBuffers|MeshVisualizerGL3D::Flag::Wireframe|MeshVisualizerGL3D::Flag::NoGeometryShader, 1, 1}, {"", MeshVisualizerGL3D::Flag::UniformBuffers|MeshVisualizerGL3D::Flag::Wireframe|MeshVisualizerGL3D::Flag::NoGeometryShader, 1, 1},
{"multiple materials, draws", MeshVisualizerGL3D::Flag::UniformBuffers|MeshVisualizerGL3D::Flag::Wireframe|MeshVisualizerGL3D::Flag::NoGeometryShader, 64, 128}, /* SwiftShader has 256 uniform vectors at most, per-3D-draw is 4+4,
per-material 4, plus 4 for projection */
{"multiple materials, draws", MeshVisualizerGL3D::Flag::UniformBuffers|MeshVisualizerGL3D::Flag::Wireframe|MeshVisualizerGL3D::Flag::NoGeometryShader, 6, 28},
/* The rest is basically a copy of ConstructData2D with UniformBuffers /* The rest is basically a copy of ConstructData2D with UniformBuffers
added */ added */
#ifndef MAGNUM_TARGET_WEBGL #ifndef MAGNUM_TARGET_WEBGL

6
src/Magnum/Shaders/Test/PhongGLTest.cpp

@ -218,8 +218,10 @@ constexpr struct {
} ConstructUniformBuffersData[]{ } ConstructUniformBuffersData[]{
{"classic fallback", {}, 1, 1, 1}, {"classic fallback", {}, 1, 1, 1},
{"", PhongGL::Flag::UniformBuffers, 1, 1, 1}, {"", PhongGL::Flag::UniformBuffers, 1, 1, 1},
{"multiple lights, materials, draws", PhongGL::Flag::UniformBuffers, 30, 64, 128}, /* SwiftShader has 256 uniform vectors at most, per-3D-draw is 4+4,
{"zero lights", PhongGL::Flag::UniformBuffers, 0, 64, 128}, per-material 4, per-light 4 plus 4 for projection */
{"multiple lights, materials, draws", PhongGL::Flag::UniformBuffers, 8, 8, 24},
{"zero lights", PhongGL::Flag::UniformBuffers, 0, 16, 24},
{"ambient + diffuse + specular texture", PhongGL::Flag::UniformBuffers|PhongGL::Flag::AmbientTexture|PhongGL::Flag::DiffuseTexture|PhongGL::Flag::SpecularTexture, 1, 1, 1}, {"ambient + diffuse + specular texture", PhongGL::Flag::UniformBuffers|PhongGL::Flag::AmbientTexture|PhongGL::Flag::DiffuseTexture|PhongGL::Flag::SpecularTexture, 1, 1, 1},
{"ambient + diffuse + specular texture + texture transformation", PhongGL::Flag::UniformBuffers|PhongGL::Flag::AmbientTexture|PhongGL::Flag::DiffuseTexture|PhongGL::Flag::SpecularTexture|PhongGL::Flag::TextureTransformation, 1, 1, 1}, {"ambient + diffuse + specular texture + texture transformation", PhongGL::Flag::UniformBuffers|PhongGL::Flag::AmbientTexture|PhongGL::Flag::DiffuseTexture|PhongGL::Flag::SpecularTexture|PhongGL::Flag::TextureTransformation, 1, 1, 1},
{"normal texture", PhongGL::Flag::UniformBuffers|PhongGL::Flag::NormalTexture, 1, 1, 1}, {"normal texture", PhongGL::Flag::UniformBuffers|PhongGL::Flag::NormalTexture, 1, 1, 1},

4
src/Magnum/Shaders/Test/VectorGLTest.cpp

@ -155,7 +155,9 @@ constexpr struct {
{"classic fallback", {}, 1}, {"classic fallback", {}, 1},
{"", VectorGL2D::Flag::UniformBuffers, 1}, {"", VectorGL2D::Flag::UniformBuffers, 1},
{"texture transformation", VectorGL2D::Flag::UniformBuffers|VectorGL2D::Flag::TextureTransformation, 1}, {"texture transformation", VectorGL2D::Flag::UniformBuffers|VectorGL2D::Flag::TextureTransformation, 1},
{"multiple draws", VectorGL2D::Flag::UniformBuffers, 128}, /* SwiftShader has 256 uniform vectors at most, per-draw is 4+3 in 3D case
and 3+3 in 2D */
{"multiple draws", VectorGL2D::Flag::UniformBuffers, 36},
}; };
#endif #endif

4
src/Magnum/Shaders/Test/VertexColorGLTest.cpp

@ -132,7 +132,9 @@ constexpr struct {
} ConstructUniformBuffersData[]{ } ConstructUniformBuffersData[]{
{"classic fallback", {}, 1}, {"classic fallback", {}, 1},
{"", VertexColorGL2D::Flag::UniformBuffers, 1}, {"", VertexColorGL2D::Flag::UniformBuffers, 1},
{"multiple draws", VertexColorGL2D::Flag::UniformBuffers, 128} /* SwiftShader has 256 uniform vectors at most, per-draw is 4 in 3D case
and 3 in 2D; one needs to be reserved for drawOffset */
{"multiple draws", VertexColorGL2D::Flag::UniformBuffers, 63}
}; };
#endif #endif

Loading…
Cancel
Save