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},
{"", DistanceFieldVectorGL2D::Flag::UniformBuffers, 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 {

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

@ -199,7 +199,9 @@ constexpr struct {
} ConstructUniformBuffersData[]{
{"classic fallback", {}, 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},
{"alpha mask", FlatGL2D::Flag::UniformBuffers|FlatGL2D::Flag::AlphaMask, 1},
{"object ID", FlatGL2D::Flag::UniformBuffers|FlatGL2D::Flag::ObjectId, 1}

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

@ -215,7 +215,9 @@ constexpr struct {
} ConstructUniformBuffersData2D[] {
{"classic fallback", 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
added */
#ifndef MAGNUM_TARGET_WEBGL
@ -271,7 +273,9 @@ constexpr struct {
} ConstructUniformBuffersData3D[] {
{"classic fallback", 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
added */
#ifndef MAGNUM_TARGET_WEBGL

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

@ -218,8 +218,10 @@ constexpr struct {
} ConstructUniformBuffersData[]{
{"classic fallback", {}, 1, 1, 1},
{"", PhongGL::Flag::UniformBuffers, 1, 1, 1},
{"multiple lights, materials, draws", PhongGL::Flag::UniformBuffers, 30, 64, 128},
{"zero lights", PhongGL::Flag::UniformBuffers, 0, 64, 128},
/* SwiftShader has 256 uniform vectors at most, per-3D-draw is 4+4,
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 + 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},

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

@ -155,7 +155,9 @@ constexpr struct {
{"classic fallback", {}, 1},
{"", VectorGL2D::Flag::UniformBuffers, 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

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

@ -132,7 +132,9 @@ constexpr struct {
} ConstructUniformBuffersData[]{
{"classic fallback", {}, 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

Loading…
Cancel
Save