diff --git a/doc/generated/primitives.cpp b/doc/generated/primitives.cpp index 454b81014..0baed4474 100644 --- a/doc/generated/primitives.cpp +++ b/doc/generated/primitives.cpp @@ -278,7 +278,8 @@ int PrimitiveVisualizer::exec() { } } - Shaders::MeshVisualizerGL2D wireframe2D{Shaders::MeshVisualizerGL2D::Flag::Wireframe}; + Shaders::MeshVisualizerGL2D wireframe2D{Shaders::MeshVisualizerGL2D::Configuration{} + .setFlags(Shaders::MeshVisualizerGL2D::Flag::Wireframe)}; wireframe2D.setColor(0x00000000_srgbaf) .setWireframeColor(OutlineColor) .setWireframeWidth(2.0f) @@ -309,7 +310,8 @@ int PrimitiveVisualizer::exec() { } } - Shaders::MeshVisualizerGL3D wireframe3D{Shaders::MeshVisualizerGL3D::Flag::Wireframe}; + Shaders::MeshVisualizerGL3D wireframe3D{Shaders::MeshVisualizerGL3D::Configuration{} + .setFlags(Shaders::MeshVisualizerGL3D::Flag::Wireframe)}; wireframe3D.setColor(0x00000000_srgbaf) .setWireframeColor(OutlineColor) .setWireframeWidth(2.0f) diff --git a/doc/generated/shaders.cpp b/doc/generated/shaders.cpp index 368e72f20..9ceec77a3 100644 --- a/doc/generated/shaders.cpp +++ b/doc/generated/shaders.cpp @@ -180,7 +180,9 @@ std::string ShaderVisualizer::meshVisualizer2D() { Matrix3::projection(Vector2{3.0f})* Matrix3::rotation(13.7_degf); - Shaders::MeshVisualizerGL2D{Shaders::MeshVisualizerGL2D::Flag::Wireframe} + Shaders::MeshVisualizerGL2D shader{Shaders::MeshVisualizerGL2D::Configuration{} + .setFlags(Shaders::MeshVisualizerGL2D::Flag::Wireframe)}; + shader .setColor(BaseColor) .setWireframeColor(OutlineColor) .setWireframeWidth(2.0f) @@ -206,7 +208,9 @@ std::string ShaderVisualizer::meshVisualizer2DPrimitiveId() { .setStorage(1, GL::TextureFormat::SRGB8Alpha8, size) .setSubImage(0, {}, ImageView2D{PixelFormat::RGB8Srgb, size, map}); - Shaders::MeshVisualizerGL2D{Shaders::MeshVisualizerGL2D::Flag::PrimitiveId} + Shaders::MeshVisualizerGL2D shader{Shaders::MeshVisualizerGL2D::Configuration{} + .setFlags(Shaders::MeshVisualizerGL2D::Flag::PrimitiveId)}; + shader .setTransformationProjectionMatrix(projection) .setColorMapTransformation(1.0f/255.0f, 1.0f/8.0f) .bindColorMapTexture(colorMapTexture) @@ -220,10 +224,12 @@ std::string ShaderVisualizer::meshVisualizer3D() { Matrix4::rotationZ(13.7_degf)* Matrix4::rotationX(-12.6_degf); - Shaders::MeshVisualizerGL3D{Shaders::MeshVisualizerGL3D::Flag::Wireframe| - Shaders::MeshVisualizerGL3D::Flag::TangentDirection| - Shaders::MeshVisualizerGL3D::Flag::BitangentFromTangentDirection| - Shaders::MeshVisualizerGL3D::Flag::NormalDirection} + Shaders::MeshVisualizerGL3D shader{Shaders::MeshVisualizerGL3D::Configuration{} + .setFlags(Shaders::MeshVisualizerGL3D::Flag::Wireframe| + Shaders::MeshVisualizerGL3D::Flag::TangentDirection| + Shaders::MeshVisualizerGL3D::Flag::BitangentFromTangentDirection| + Shaders::MeshVisualizerGL3D::Flag::NormalDirection)}; + shader .setColor(BaseColor) .setWireframeColor(OutlineColor) .setWireframeWidth(2.0f) @@ -253,7 +259,9 @@ std::string ShaderVisualizer::meshVisualizer3DPrimitiveId() { .setStorage(1, GL::TextureFormat::SRGB8Alpha8, size) .setSubImage(0, {}, ImageView2D{PixelFormat::RGB8Srgb, size, map}); - Shaders::MeshVisualizerGL3D{Shaders::MeshVisualizerGL3D::Flag::PrimitiveId} + Shaders::MeshVisualizerGL3D shader{Shaders::MeshVisualizerGL3D::Configuration{} + .setFlags(Shaders::MeshVisualizerGL3D::Flag::PrimitiveId)}; + shader .setTransformationMatrix(transformation) .setProjectionMatrix(Projection) .setColorMapTransformation(1.0f/255.0f, 1.0f/32.0f) diff --git a/doc/snippets/MagnumShaders-gl.cpp b/doc/snippets/MagnumShaders-gl.cpp index 48819075f..72028fe21 100644 --- a/doc/snippets/MagnumShaders-gl.cpp +++ b/doc/snippets/MagnumShaders-gl.cpp @@ -145,7 +145,8 @@ drawUniform.setData({ .setNormalMatrix(transformationMatrix.normalMatrix()) }); -Shaders::PhongGL shader{Shaders::PhongGL::Flag::UniformBuffers}; +Shaders::PhongGL shader{Shaders::PhongGL::Configuration{} + .setFlags(Shaders::PhongGL::Flag::UniformBuffers)}; shader .bindProjectionBuffer(projectionUniform) .bindLightBuffer(lightUniform) @@ -191,8 +192,11 @@ drawUniform.setData({ .setMaterialId(0), }); -/* One light, two materials, three draws */ -Shaders::PhongGL shader{Shaders::PhongGL::Flag::UniformBuffers, 1, 2, 3}; +Shaders::PhongGL shader{Shaders::PhongGL::Configuration{} + .setFlags(Shaders::PhongGL::Flag::UniformBuffers) + .setLightCount(1) + .setMaterialCount(2) + .setDrawCount(3)}; shader .bindProjectionBuffer(projectionUniform) .bindTransformationBuffer(transformationUniform) @@ -214,8 +218,11 @@ GL::Mesh mesh; GL::MeshView redConeView{DOXYGEN_ELLIPSIS(mesh)}, yellowCubeView{DOXYGEN_ELLIPSIS(mesh)}, redSphereView{DOXYGEN_ELLIPSIS(mesh)}; DOXYGEN_ELLIPSIS() -/* One light, two materials, three draws; with multidraw enabled */ -Shaders::PhongGL shader{Shaders::PhongGL::Flag::MultiDraw, 1, 2, 3}; +Shaders::PhongGL shader{Shaders::PhongGL::Configuration{} + .setFlags(Shaders::PhongGL::Flag::MultiDraw) + .setLightCount(1) + .setMaterialCount(2) + .setDrawCount(3)}; shader DOXYGEN_ELLIPSIS() .draw({redConeView, yellowCubeView, redSphereView}); @@ -253,8 +260,9 @@ sphereInstanced.addVertexBufferInstanced(GL::Buffer{instanceData}, 1, 0, Shaders::PhongGL::Color3{}); sphereInstanced.setInstanceCount(3); -Shaders::PhongGL shader{Shaders::PhongGL::Flag::InstancedTransformation| - Shaders::PhongGL::Flag::VertexColor}; +Shaders::PhongGL shader{Shaders::PhongGL::Configuration{} + .setFlags(Shaders::PhongGL::Flag::InstancedTransformation| + Shaders::PhongGL::Flag::VertexColor)}; shader .setProjectionMatrix(projectionMatrix) DOXYGEN_ELLIPSIS() @@ -268,7 +276,8 @@ GL::Mesh mesh; GL::Texture2D diffuseTexture; DOXYGEN_ELLIPSIS() -Shaders::PhongGL shader{Shaders::PhongGL::Flag::DiffuseTexture}; +Shaders::PhongGL shader{Shaders::PhongGL::Configuration{} + .setFlags(Shaders::PhongGL::Flag::DiffuseTexture)}; shader.bindDiffuseTexture(diffuseTexture) DOXYGEN_ELLIPSIS() .draw(mesh); @@ -302,11 +311,13 @@ textureTransformationUniform.setData({ .setLayer(2), }); -Shaders::PhongGL shader{ - Shaders::PhongGL::Flag::MultiDraw| - Shaders::PhongGL::Flag::DiffuseTexture| - Shaders::PhongGL::Flag::TextureArrays, - 1, 2, 3}; +Shaders::PhongGL shader{Shaders::PhongGL::Configuration{} + .setFlags(Shaders::PhongGL::Flag::MultiDraw| + Shaders::PhongGL::Flag::DiffuseTexture| + Shaders::PhongGL::Flag::TextureArrays) + .setLightCount(1) + .setMaterialCount(2) + .setDrawCount(3)}; shader DOXYGEN_ELLIPSIS() .bindDiffuseTexture(diffuseTexture) @@ -331,7 +342,8 @@ mesh.addVertexBuffer(vertices, 0, GL::Mesh mesh; Matrix4 transformationMatrix, projectionMatrix; /* [shaders-meshvisualizer] */ -Shaders::MeshVisualizerGL3D shader{Shaders::MeshVisualizerGL3D::Flag::Wireframe}; +Shaders::MeshVisualizerGL3D shader{Shaders::MeshVisualizerGL3D::Configuration{} + .setFlags(Shaders::MeshVisualizerGL3D::Flag::Wireframe)}; shader .setColor(0x2f83cc_rgbf) .setWireframeColor(0xdcdcdc_rgbf) @@ -347,9 +359,11 @@ shader Shaders::FlatGL3D::CompileState flatState = Shaders::FlatGL3D::compile(); Shaders::FlatGL3D::CompileState flatTexturedState = - Shaders::FlatGL3D::compile(Shaders::FlatGL3D::Flag::Textured); + Shaders::FlatGL3D::compile( + Shaders::FlatGL3D::Configuration{} + .setFlags(Shaders::FlatGL3D::Flag::Textured)); Shaders::MeshVisualizerGL3D::CompileState meshVisualizerState = - Shaders::MeshVisualizerGL3D::compile(DOXYGEN_ELLIPSIS(Shaders::MeshVisualizerGL3D::Flag::Wireframe)); + Shaders::MeshVisualizerGL3D::compile(DOXYGEN_ELLIPSIS(Shaders::MeshVisualizerGL3D::Configuration{})); while(!flatState.isLinkFinished() || !flatTexturedState.isLinkFinished() || @@ -428,8 +442,8 @@ drawUniform.setData({ }); Shaders::DistanceFieldVectorGL2D shader{ - Shaders::DistanceFieldVectorGL2D::Flag::UniformBuffers -}; + Shaders::DistanceFieldVectorGL2D::Configuration{} + .setFlags(Shaders::DistanceFieldVectorGL2D::Flag::UniformBuffers)}; shader .bindTransformationProjectionBuffer(projectionTransformationUniform) .bindMaterialBuffer(materialUniform) @@ -498,7 +512,8 @@ mesh.addVertexBuffer(vertices, 0, Matrix4 transformationMatrix, projectionMatrix; GL::Texture2D texture; -Shaders::FlatGL3D shader{Shaders::FlatGL3D::Flag::Textured}; +Shaders::FlatGL3D shader{Shaders::FlatGL3D::Configuration{} + .setFlags(Shaders::FlatGL3D::Flag::Textured)}; shader.setTransformationProjectionMatrix(projectionMatrix*transformationMatrix) .bindTexture(texture) .draw(mesh); @@ -519,7 +534,8 @@ objectId.setStorage(GL::RenderbufferFormat::R16UI, size); // large as needed framebuffer.attachRenderbuffer(GL::Framebuffer::ColorAttachment{0}, color) .attachRenderbuffer(GL::Framebuffer::ColorAttachment{1}, objectId); -Shaders::FlatGL3D shader{Shaders::FlatGL3D::Flag::ObjectId}; +Shaders::FlatGL3D shader{Shaders::FlatGL3D::Configuration{} + .setFlags(Shaders::FlatGL3D::Flag::ObjectId)}; // ... @@ -581,7 +597,8 @@ drawUniform.setData({ .setMaterialId(0) }); -Shaders::FlatGL3D shader{Shaders::FlatGL3D::Flag::UniformBuffers}; +Shaders::FlatGL3D shader{Shaders::FlatGL3D::Configuration{} + .setFlags(Shaders::FlatGL3D::Flag::UniformBuffers)}; shader .bindTransformationProjectionBuffer(projectionTransformationUniform) .bindMaterialBuffer(materialUniform) @@ -677,7 +694,8 @@ Matrix4 transformationMatrix = Matrix4::translation(Vector3::zAxis(-5.0f)); Matrix4 projectionMatrix = Matrix4::perspectiveProjection(35.0_degf, 1.0f, 0.001f, 100.0f); -Shaders::MeshVisualizerGL3D shader{Shaders::MeshVisualizerGL3D::Flag::Wireframe}; +Shaders::MeshVisualizerGL3D shader{Shaders::MeshVisualizerGL3D::Configuration{} + .setFlags(Shaders::MeshVisualizerGL3D::Flag::Wireframe)}; shader.setColor(0x2f83cc_rgbf) .setWireframeColor(0xdcdcdc_rgbf) .setViewportSize(Vector2{GL::defaultFramebuffer.viewport().size()}) @@ -726,10 +744,10 @@ mesh.addVertexBuffer(vertices, 0, /* [MeshVisualizerGL3D-usage-tbn2] */ Matrix4 transformationMatrix, projectionMatrix; -Shaders::MeshVisualizerGL3D shader{ - Shaders::MeshVisualizerGL3D::Flag::TangentDirection| - Shaders::MeshVisualizerGL3D::Flag::BitangentFromTangentDirection| - Shaders::MeshVisualizerGL3D::Flag::NormalDirection}; +Shaders::MeshVisualizerGL3D shader{Shaders::MeshVisualizerGL3D::Configuration{} + .setFlags(Shaders::MeshVisualizerGL3D::Flag::TangentDirection| + Shaders::MeshVisualizerGL3D::Flag::BitangentFromTangentDirection| + Shaders::MeshVisualizerGL3D::Flag::NormalDirection)}; shader.setViewportSize(Vector2{GL::defaultFramebuffer.viewport().size()}) .setTransformationMatrix(transformationMatrix) .setProjectionMatrix(projectionMatrix) @@ -759,9 +777,9 @@ GL::Mesh mesh; /* [MeshVisualizerGL3D-usage-no-geom2] */ Matrix4 transformationMatrix, projectionMatrix; -Shaders::MeshVisualizerGL3D shader{ - Shaders::MeshVisualizerGL3D::Flag::Wireframe| - Shaders::MeshVisualizerGL3D::Flag::NoGeometryShader}; +Shaders::MeshVisualizerGL3D shader{Shaders::MeshVisualizerGL3D::Configuration{} + .setFlags(Shaders::MeshVisualizerGL3D::Flag::Wireframe| + Shaders::MeshVisualizerGL3D::Flag::NoGeometryShader)}; shader.setColor(0x2f83cc_rgbf) .setWireframeColor(0xdcdcdc_rgbf) .setTransformationMatrix(transformationMatrix) @@ -787,8 +805,8 @@ colorMapTexture .setStorage(1, GL::TextureFormat::RGBA8, size) .setSubImage(0, {}, ImageView2D{PixelFormat::RGB8Srgb, size, map}); -Shaders::MeshVisualizerGL3D shader{ - Shaders::MeshVisualizerGL3D::Flag::InstancedObjectId}; +Shaders::MeshVisualizerGL3D shader{Shaders::MeshVisualizerGL3D::Configuration{} + .setFlags(Shaders::MeshVisualizerGL3D::Flag::InstancedObjectId)}; shader.setColorMapTransformation(0.0f, 1.0f/Math::max(objectIds)) .setTransformationMatrix(transformationMatrix) .setProjectionMatrix(projectionMatrix) @@ -824,9 +842,9 @@ drawUniform.setData({ .setMaterialId(0) }); -Shaders::MeshVisualizerGL3D shader{ - Shaders::MeshVisualizerGL3D::Flag::Wireframe| - Shaders::MeshVisualizerGL3D::Flag::UniformBuffers +Shaders::MeshVisualizerGL3D shader{Shaders::MeshVisualizerGL3D::Configuration{} + .setFlags(Shaders::MeshVisualizerGL3D::Flag::Wireframe| + Shaders::MeshVisualizerGL3D::Flag::UniformBuffers) }; shader .setViewportSize(Vector2{GL::defaultFramebuffer.viewport().size()}) @@ -923,8 +941,9 @@ mesh.addVertexBuffer(vertices, 0, Matrix4 transformationMatrix, projectionMatrix; GL::Texture2D diffuseTexture, specularTexture; -Shaders::PhongGL shader{Shaders::PhongGL::Flag::DiffuseTexture| - Shaders::PhongGL::Flag::SpecularTexture}; +Shaders::PhongGL shader{Shaders::PhongGL::Configuration{} + .setFlags(Shaders::PhongGL::Flag::DiffuseTexture| + Shaders::PhongGL::Flag::SpecularTexture)}; shader.bindTextures(nullptr, &diffuseTexture, &specularTexture, nullptr) .setTransformationMatrix(transformationMatrix) .setNormalMatrix(transformationMatrix.normalMatrix()) @@ -938,7 +957,8 @@ shader.bindTextures(nullptr, &diffuseTexture, &specularTexture, nullptr) /* [PhongGL-usage-lights] */ Matrix4 directionalLight, pointLight1, pointLight2; // camera-relative -Shaders::PhongGL shader{{}, 3}; // 3 lights +Shaders::PhongGL shader{Shaders::PhongGL::Configuration{} + .setLightCount(3)}; shader .setLightPositions({Vector4{directionalLight.up(), 0.0f}, Vector4{pointLight1.translation(), 1.0f}, @@ -959,7 +979,8 @@ GL::Texture2D diffuseTexture; /* [PhongGL-usage-lights-ambient] */ Trade::LightData ambientLight = DOXYGEN_ELLIPSIS(Trade::LightData{{}, {}, {}}); -Shaders::PhongGL shader{Shaders::PhongGL::Flag::AmbientTexture|DOXYGEN_ELLIPSIS(Shaders::PhongGL::Flag::DiffuseTexture), DOXYGEN_ELLIPSIS(3)}; +Shaders::PhongGL shader{Shaders::PhongGL::Configuration{} + .setFlags(Shaders::PhongGL::Flag::AmbientTexture|DOXYGEN_ELLIPSIS(Shaders::PhongGL::Flag::DiffuseTexture))}; shader .setAmbientColor(ambientColor + ambientLight.color()*ambientLight.intensity()) .bindAmbientTexture(diffuseTexture) @@ -971,8 +992,9 @@ shader GL::Texture2D diffuseAlphaTexture; Color3 diffuseRgb, specularRgb; /* [PhongGL-usage-alpha] */ -Shaders::PhongGL shader{Shaders::PhongGL::Flag::AmbientTexture| - Shaders::PhongGL::Flag::DiffuseTexture}; +Shaders::PhongGL shader{Shaders::PhongGL::Configuration{} + .setFlags(Shaders::PhongGL::Flag::AmbientTexture| + Shaders::PhongGL::Flag::DiffuseTexture)}; shader.bindTextures(&diffuseAlphaTexture, &diffuseAlphaTexture, nullptr, nullptr) .setAmbientColor(0x000000ff_rgbaf) .setDiffuseColor(Color4{diffuseRgb, 0.0f}) @@ -1010,7 +1032,8 @@ drawUniform.setData({ .setMaterialId(0) }); -Shaders::PhongGL shader{Shaders::PhongGL::Flag::UniformBuffers}; +Shaders::PhongGL shader{Shaders::PhongGL::Configuration{} + .setFlags(Shaders::PhongGL::Flag::UniformBuffers)}; shader .bindProjectionBuffer(projectionUniform) .bindLightBuffer(lightUniform) @@ -1075,7 +1098,8 @@ drawUniform.setData({ .setMaterialId(0) }); -Shaders::VectorGL2D shader{Shaders::VectorGL2D::Flag::UniformBuffers}; +Shaders::VectorGL2D shader{Shaders::VectorGL2D::Configuration{} + .setFlags(Shaders::VectorGL2D::Flag::UniformBuffers)}; shader .bindTransformationProjectionBuffer(projectionTransformationUniform) .bindMaterialBuffer(materialUniform) @@ -1129,7 +1153,8 @@ projectionTransformationUniform.setData({ .setTransformationProjectionMatrix(projectionMatrix*transformationMatrix) }); -Shaders::VertexColorGL3D shader{Shaders::VertexColorGL3D::Flag::UniformBuffers}; +Shaders::VertexColorGL3D shader{Shaders::VertexColorGL3D::Configuration{} + .setFlags(Shaders::VertexColorGL3D::Flag::UniformBuffers)}; shader .bindTransformationProjectionBuffer(projectionTransformationUniform) .draw(mesh); diff --git a/src/Magnum/MeshTools/Test/CompileGLTest.cpp b/src/Magnum/MeshTools/Test/CompileGLTest.cpp index ae85bfb11..52d81f19a 100644 --- a/src/Magnum/MeshTools/Test/CompileGLTest.cpp +++ b/src/Magnum/MeshTools/Test/CompileGLTest.cpp @@ -123,12 +123,14 @@ struct CompileGLTest: GL::OpenGLTester { PluginManager::Manager _manager{"nonexistent"}; Shaders::FlatGL2D _flat2D; - Shaders::FlatGL2D _flatTextured2D{Shaders::FlatGL2D::Flag::Textured}; + Shaders::FlatGL2D _flatTextured2D{Shaders::FlatGL2D::Configuration{} + .setFlags(Shaders::FlatGL2D::Flag::Textured)}; #ifndef MAGNUM_TARGET_GLES2 Shaders::FlatGL2D _flatObjectId2D{NoCreate}; #endif Shaders::FlatGL3D _flat3D; - Shaders::FlatGL3D _flatTextured3D{Shaders::FlatGL3D::Flag::Textured}; + Shaders::FlatGL3D _flatTextured3D{Shaders::FlatGL3D::Configuration{} + .setFlags(Shaders::FlatGL3D::Flag::Textured)}; #ifndef MAGNUM_TARGET_GLES2 Shaders::FlatGL3D _flatObjectId3D{NoCreate}; #endif @@ -331,8 +333,10 @@ CompileGLTest::CompileGLTest() { if(GL::Context::current().isExtensionSupported()) #endif { - _flatObjectId2D = Shaders::FlatGL2D{Shaders::FlatGL2D::Flag::InstancedObjectId}; - _flatObjectId3D = Shaders::FlatGL3D{Shaders::FlatGL3D::Flag::InstancedObjectId}; + _flatObjectId2D = Shaders::FlatGL2D{Shaders::FlatGL2D::Configuration{} + .setFlags(Shaders::FlatGL2D::Flag::InstancedObjectId)}; + _flatObjectId3D = Shaders::FlatGL3D{Shaders::FlatGL3D::Configuration{} + .setFlags(Shaders::FlatGL3D::Flag::InstancedObjectId)}; _objectId.setStorage(GL::RenderbufferFormat::R32UI, {32, 32}); _framebuffer .attachRenderbuffer(GL::Framebuffer::ColorAttachment{1}, _objectId) @@ -351,14 +355,14 @@ CompileGLTest::CompileGLTest() { if(GL::Context::current().isExtensionSupported()) #endif { - _meshVisualizer3D = Shaders::MeshVisualizerGL3D{ - Shaders::MeshVisualizerGL3D::Flag::TangentDirection| - Shaders::MeshVisualizerGL3D::Flag::BitangentDirection| - Shaders::MeshVisualizerGL3D::Flag::NormalDirection}; - _meshVisualizerBitangentsFromTangents3D = Shaders::MeshVisualizerGL3D{ - Shaders::MeshVisualizerGL3D::Flag::TangentDirection| - Shaders::MeshVisualizerGL3D::Flag::BitangentFromTangentDirection| - Shaders::MeshVisualizerGL3D::Flag::NormalDirection}; + _meshVisualizer3D = Shaders::MeshVisualizerGL3D{Shaders::MeshVisualizerGL3D::Configuration{} + .setFlags(Shaders::MeshVisualizerGL3D::Flag::TangentDirection| + Shaders::MeshVisualizerGL3D::Flag::BitangentDirection| + Shaders::MeshVisualizerGL3D::Flag::NormalDirection)}; + _meshVisualizerBitangentsFromTangents3D = Shaders::MeshVisualizerGL3D{Shaders::MeshVisualizerGL3D::Configuration{} + .setFlags(Shaders::MeshVisualizerGL3D::Flag::TangentDirection| + Shaders::MeshVisualizerGL3D::Flag::BitangentFromTangentDirection| + Shaders::MeshVisualizerGL3D::Flag::NormalDirection)}; } #endif } diff --git a/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp b/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp index 04e19a965..c03b8460a 100644 --- a/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp +++ b/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp @@ -374,7 +374,8 @@ template void DistanceFieldVectorGLTest::construct() { auto&& data = ConstructData[testCaseInstanceId()]; setTestCaseDescription(data.name); - DistanceFieldVectorGL shader{data.flags}; + DistanceFieldVectorGL shader{typename DistanceFieldVectorGL::Configuration{} + .setFlags(data.flags)}; CORRADE_COMPARE(shader.flags(), data.flags); CORRADE_VERIFY(shader.id()); { @@ -390,7 +391,8 @@ template void DistanceFieldVectorGLTest::construct() { template void DistanceFieldVectorGLTest::constructAsync() { setTestCaseTemplateName(Utility::format("{}", dimensions)); - typename DistanceFieldVectorGL::CompileState state = DistanceFieldVectorGL::compile(DistanceFieldVectorGL2D::Flag::TextureTransformation); + typename DistanceFieldVectorGL::CompileState state = DistanceFieldVectorGL::compile(typename DistanceFieldVectorGL::Configuration{} + .setFlags(DistanceFieldVectorGL2D::Flag::TextureTransformation)); CORRADE_COMPARE(state.flags(), DistanceFieldVectorGL2D::Flag::TextureTransformation); while(!state.isLinkFinished()) @@ -435,7 +437,10 @@ template void DistanceFieldVectorGLTest::constructUnifor #endif } - DistanceFieldVectorGL shader{data.flags, data.materialCount, data.drawCount}; + DistanceFieldVectorGL shader{typename DistanceFieldVectorGL::Configuration{} + .setFlags(data.flags) + .setMaterialCount(data.materialCount) + .setDrawCount(data.drawCount)}; CORRADE_COMPARE(shader.flags(), data.flags); CORRADE_COMPARE(shader.materialCount(), data.materialCount); CORRADE_COMPARE(shader.drawCount(), data.drawCount); @@ -458,7 +463,10 @@ template void DistanceFieldVectorGLTest::constructUnifor CORRADE_SKIP(GL::Extensions::ARB::uniform_buffer_object::string() << "is not supported."); #endif - typename DistanceFieldVectorGL::CompileState state = DistanceFieldVectorGL::compile(DistanceFieldVectorGL2D::Flag::UniformBuffers, 16, 48); + typename DistanceFieldVectorGL::CompileState state = DistanceFieldVectorGL::compile(typename DistanceFieldVectorGL::Configuration{} + .setFlags(DistanceFieldVectorGL2D::Flag::UniformBuffers) + .setMaterialCount(16) + .setDrawCount(48)); CORRADE_COMPARE(state.flags(), DistanceFieldVectorGL2D::Flag::UniformBuffers); CORRADE_COMPARE(state.materialCount(), 16); CORRADE_COMPARE(state.drawCount(), 48); @@ -486,7 +494,8 @@ template void DistanceFieldVectorGLTest::constructUnifor template void DistanceFieldVectorGLTest::constructMove() { setTestCaseTemplateName(Utility::format("{}", dimensions)); - DistanceFieldVectorGL a{DistanceFieldVectorGL::Flag::TextureTransformation}; + DistanceFieldVectorGL a{typename DistanceFieldVectorGL::Configuration{} + .setFlags(DistanceFieldVectorGL::Flag::TextureTransformation)}; const GLuint id = a.id(); CORRADE_VERIFY(id); @@ -513,7 +522,10 @@ template void DistanceFieldVectorGLTest::constructMoveUn CORRADE_SKIP(GL::Extensions::ARB::uniform_buffer_object::string() << "is not supported."); #endif - DistanceFieldVectorGL a{DistanceFieldVectorGL::Flag::UniformBuffers, 2, 5}; + DistanceFieldVectorGL a{typename DistanceFieldVectorGL::Configuration{} + .setFlags(DistanceFieldVectorGL::Flag::UniformBuffers) + .setMaterialCount(2) + .setDrawCount(5)}; const GLuint id = a.id(); CORRADE_VERIFY(id); @@ -552,7 +564,10 @@ template void DistanceFieldVectorGLTest::constructUnifor std::ostringstream out; Error redirectError{&out}; - DistanceFieldVectorGL{data.flags, data.materialCount, data.drawCount}; + DistanceFieldVectorGL{typename DistanceFieldVectorGL::Configuration{} + .setFlags(data.flags) + .setMaterialCount(data.materialCount) + .setDrawCount(data.drawCount)}; CORRADE_COMPARE(out.str(), Utility::formatString( "Shaders::DistanceFieldVectorGL: {}\n", data.message)); } @@ -572,7 +587,8 @@ template void DistanceFieldVectorGLTest::setUniformUnifo std::ostringstream out; Error redirectError{&out}; - DistanceFieldVectorGL shader{DistanceFieldVectorGL::Flag::UniformBuffers}; + DistanceFieldVectorGL shader{typename DistanceFieldVectorGL::Configuration{} + .setFlags(DistanceFieldVectorGL::Flag::UniformBuffers)}; shader.setTransformationProjectionMatrix({}) .setTextureMatrix({}) .setColor({}) @@ -650,7 +666,8 @@ template void DistanceFieldVectorGLTest::bindTextureTran Error redirectError{&out}; GL::Buffer buffer{GL::Buffer::TargetHint::Uniform}; - DistanceFieldVectorGL shader{DistanceFieldVectorGL::Flag::UniformBuffers}; + DistanceFieldVectorGL shader{typename DistanceFieldVectorGL::Configuration{} + .setFlags(DistanceFieldVectorGL::Flag::UniformBuffers)}; shader.bindTextureTransformationBuffer(buffer) .bindTextureTransformationBuffer(buffer, 0, 16); CORRADE_COMPARE(out.str(), @@ -672,8 +689,11 @@ template void DistanceFieldVectorGLTest::setWrongDrawOff std::ostringstream out; Error redirectError{&out}; - DistanceFieldVectorGL{DistanceFieldVectorGL::Flag::UniformBuffers, 2, 5} - .setDrawOffset(5); + DistanceFieldVectorGL shader{typename DistanceFieldVectorGL::Configuration{} + .setFlags(DistanceFieldVectorGL::Flag::UniformBuffers) + .setMaterialCount(2) + .setDrawCount(5)}; + shader.setDrawOffset(5); CORRADE_COMPARE(out.str(), "Shaders::DistanceFieldVectorGL::setDrawOffset(): draw offset 5 is out of bounds for 5 draws\n"); } @@ -751,7 +771,8 @@ template void DistanceFieldVectorGLTest::ren .setSubImage(0, {}, *image); #endif - DistanceFieldVectorGL2D shader{flag}; + DistanceFieldVectorGL2D shader{DistanceFieldVectorGL2D::Configuration{} + .setFlags(flag)}; shader.bindVectorTexture(texture); if(flag == DistanceFieldVectorGL2D::Flag{}) { @@ -839,7 +860,8 @@ template void DistanceFieldVectorGLTest::ren .setSubImage(0, {}, *image); #endif - DistanceFieldVectorGL3D shader{flag}; + DistanceFieldVectorGL3D shader{DistanceFieldVectorGL3D::Configuration{} + .setFlags(flag)}; shader.bindVectorTexture(texture); if(flag == DistanceFieldVectorGL3D::Flag{}) { @@ -930,7 +952,8 @@ template void DistanceFieldVectorGLTest::ren .setSubImage(0, {}, *image); #endif - DistanceFieldVectorGL2D shader{data.flags|flag}; + DistanceFieldVectorGL2D shader{DistanceFieldVectorGL2D::Configuration{} + .setFlags(data.flags|flag)}; shader.bindVectorTexture(texture); if(flag == DistanceFieldVectorGL2D::Flag{}) { @@ -1038,7 +1061,8 @@ template void DistanceFieldVectorGLTest::ren .setSubImage(0, {}, *image); #endif - DistanceFieldVectorGL3D shader{data.flags|flag}; + DistanceFieldVectorGL3D shader{DistanceFieldVectorGL3D::Configuration{} + .setFlags(data.flags|flag)}; shader.bindVectorTexture(texture); if(flag == DistanceFieldVectorGL3D::Flag{}) { @@ -1235,7 +1259,10 @@ void DistanceFieldVectorGLTest::renderMulti2D() { .setMaterialId(data.drawCount == 1 ? 0 : 0); GL::Buffer drawUniform{GL::Buffer::TargetHint::Uniform, drawData}; - DistanceFieldVectorGL2D shader{DistanceFieldVectorGL2D::Flag::UniformBuffers|DistanceFieldVectorGL2D::Flag::TextureTransformation|data.flags, data.materialCount, data.drawCount}; + DistanceFieldVectorGL2D shader{DistanceFieldVectorGL2D::Configuration{} + .setFlags(DistanceFieldVectorGL2D::Flag::UniformBuffers|DistanceFieldVectorGL2D::Flag::TextureTransformation|data.flags) + .setMaterialCount(data.materialCount) + .setDrawCount(data.drawCount)}; shader.bindVectorTexture(vector); /* Just one draw, rebinding UBOs each time */ @@ -1441,7 +1468,10 @@ void DistanceFieldVectorGLTest::renderMulti3D() { .setMaterialId(data.drawCount == 1 ? 0 : 0); GL::Buffer drawUniform{GL::Buffer::TargetHint::Uniform, drawData}; - DistanceFieldVectorGL3D shader{DistanceFieldVectorGL3D::Flag::UniformBuffers|DistanceFieldVectorGL3D::Flag::TextureTransformation|data.flags, data.materialCount, data.drawCount}; + DistanceFieldVectorGL3D shader{DistanceFieldVectorGL3D::Configuration{} + .setFlags(DistanceFieldVectorGL3D::Flag::UniformBuffers|DistanceFieldVectorGL3D::Flag::TextureTransformation|data.flags) + .setMaterialCount(data.materialCount) + .setDrawCount(data.drawCount)}; shader.bindVectorTexture(vector); /* Just one draw, rebinding UBOs each time */ diff --git a/src/Magnum/Shaders/Test/FlatGLTest.cpp b/src/Magnum/Shaders/Test/FlatGLTest.cpp index 83d980dc5..3e4bcacfa 100644 --- a/src/Magnum/Shaders/Test/FlatGLTest.cpp +++ b/src/Magnum/Shaders/Test/FlatGLTest.cpp @@ -853,7 +853,8 @@ template void FlatGLTest::construct() { CORRADE_SKIP(GL::Extensions::EXT::texture_array::string() << "is not supported."); #endif - FlatGL shader{data.flags}; + FlatGL shader{typename FlatGL::Configuration{} + .setFlags(data.flags)}; CORRADE_COMPARE(shader.flags(), data.flags); CORRADE_VERIFY(shader.id()); { @@ -869,7 +870,8 @@ template void FlatGLTest::construct() { template void FlatGLTest::constructAsync() { setTestCaseTemplateName(Utility::format("{}", dimensions)); - typename FlatGL::CompileState state = FlatGL::compile(FlatGL2D::Flag::Textured|FlatGL2D::Flag::TextureTransformation); + typename FlatGL::CompileState state = FlatGL::compile(typename FlatGL::Configuration{} + .setFlags(FlatGL2D::Flag::Textured|FlatGL2D::Flag::TextureTransformation)); CORRADE_COMPARE(state.flags(), FlatGL2D::Flag::Textured|FlatGL2D::Flag::TextureTransformation); while(!state.isLinkFinished()) @@ -918,7 +920,10 @@ template void FlatGLTest::constructUniformBuffers() { #endif } - FlatGL shader{data.flags, data.materialCount, data.drawCount}; + FlatGL shader{typename FlatGL::Configuration{} + .setFlags(data.flags) + .setMaterialCount(data.materialCount) + .setDrawCount(data.drawCount)}; CORRADE_COMPARE(shader.flags(), data.flags); CORRADE_COMPARE(shader.materialCount(), data.materialCount); CORRADE_COMPARE(shader.drawCount(), data.drawCount); @@ -941,7 +946,10 @@ template void FlatGLTest::constructUniformBuffersAsync() CORRADE_SKIP(GL::Extensions::ARB::uniform_buffer_object::string() << "is not supported."); #endif - typename FlatGL::CompileState state = FlatGL::compile(FlatGL2D::Flag::UniformBuffers|FlatGL2D::Flag::AlphaMask, 8, 48); + typename FlatGL::CompileState state = FlatGL::compile(typename FlatGL::Configuration{} + .setFlags(FlatGL2D::Flag::UniformBuffers|FlatGL2D::Flag::AlphaMask) + .setMaterialCount(8) + .setDrawCount(48)); CORRADE_COMPARE(state.flags(), FlatGL2D::Flag::UniformBuffers|FlatGL2D::Flag::AlphaMask); CORRADE_COMPARE(state.materialCount(), 8); CORRADE_COMPARE(state.drawCount(), 48); @@ -969,7 +977,8 @@ template void FlatGLTest::constructUniformBuffersAsync() template void FlatGLTest::constructMove() { setTestCaseTemplateName(Utility::format("{}", dimensions)); - FlatGL a{FlatGL::Flag::Textured}; + FlatGL a{typename FlatGL::Configuration{} + .setFlags(FlatGL::Flag::Textured)}; const GLuint id = a.id(); CORRADE_VERIFY(id); @@ -996,7 +1005,10 @@ template void FlatGLTest::constructMoveUniformBuffers() CORRADE_SKIP(GL::Extensions::ARB::uniform_buffer_object::string() << "is not supported."); #endif - FlatGL a{FlatGL::Flag::UniformBuffers, 2, 5}; + FlatGL a{typename FlatGL::Configuration{} + .setFlags(FlatGL::Flag::UniformBuffers) + .setMaterialCount(2) + .setDrawCount(5)}; const GLuint id = a.id(); CORRADE_VERIFY(id); @@ -1028,7 +1040,8 @@ template void FlatGLTest::constructInvalid() { std::ostringstream out; Error redirectError{&out}; - FlatGL{data.flags}; + FlatGL{typename FlatGL::Configuration{} + .setFlags(data.flags)}; CORRADE_COMPARE(out.str(), Utility::formatString( "Shaders::FlatGL: {}\n", data.message)); } @@ -1048,7 +1061,10 @@ template void FlatGLTest::constructUniformBuffersInvalid std::ostringstream out; Error redirectError{&out}; - FlatGL{data.flags, data.materialCount, data.drawCount}; + FlatGL{typename FlatGL::Configuration{} + .setFlags(data.flags) + .setMaterialCount(data.materialCount) + .setDrawCount(data.drawCount)}; CORRADE_COMPARE(out.str(), Utility::formatString( "Shaders::FlatGL: {}\n", data.message)); } @@ -1068,7 +1084,8 @@ template void FlatGLTest::setUniformUniformBuffersEnable std::ostringstream out; Error redirectError{&out}; - FlatGL shader{FlatGL::Flag::UniformBuffers}; + FlatGL shader{typename FlatGL::Configuration{} + .setFlags(FlatGL::Flag::UniformBuffers)}; shader.setTransformationProjectionMatrix({}) .setTextureMatrix({}) .setTextureLayer({}) @@ -1131,7 +1148,8 @@ template void FlatGLTest::bindTexturesInvalid() { std::ostringstream out; Error redirectError{&out}; - FlatGL shader{data.flags}; + FlatGL shader{typename FlatGL::Configuration{} + .setFlags(data.flags)}; GL::Texture2D texture; shader.bindTexture(texture); #ifndef MAGNUM_TARGET_GLES2 @@ -1156,7 +1174,8 @@ template void FlatGLTest::bindTextureArraysInvalid() { std::ostringstream out; Error redirectError{&out}; - FlatGL shader{data.flags}; + FlatGL shader{typename FlatGL::Configuration{} + .setFlags(data.flags)}; GL::Texture2DArray textureArray; shader.bindTexture(textureArray); shader.bindObjectIdTexture(textureArray); @@ -1226,7 +1245,8 @@ template void FlatGLTest::bindTextureTransformBufferNotE Error redirectError{&out}; GL::Buffer buffer{GL::Buffer::TargetHint::Uniform}; - FlatGL shader{FlatGL::Flag::UniformBuffers}; + FlatGL shader{typename FlatGL::Configuration{} + .setFlags(FlatGL::Flag::UniformBuffers)}; shader.bindTextureTransformationBuffer(buffer) .bindTextureTransformationBuffer(buffer, 0, 16); CORRADE_COMPARE(out.str(), @@ -1265,8 +1285,11 @@ template void FlatGLTest::setWrongDrawOffset() { std::ostringstream out; Error redirectError{&out}; - FlatGL{FlatGL::Flag::UniformBuffers, 2, 5} - .setDrawOffset(5); + FlatGL shader{typename FlatGL::Configuration{} + .setFlags(FlatGL::Flag::UniformBuffers) + .setMaterialCount(2) + .setDrawCount(5)}; + shader.setDrawOffset(5); CORRADE_COMPARE(out.str(), "Shaders::FlatGL::setDrawOffset(): draw offset 5 is out of bounds for 5 draws\n"); } @@ -1313,7 +1336,8 @@ template void FlatGLTest::renderDefaults2D() { GL::Mesh circle = MeshTools::compile(Primitives::circle2DSolid(32)); - FlatGL2D shader{flag}; + FlatGL2D shader{FlatGL2D::Configuration{} + .setFlags(flag)}; if(flag == FlatGL2D::Flag{}) { shader.draw(circle); @@ -1366,7 +1390,8 @@ template void FlatGLTest::renderDefaults3D() { GL::Mesh sphere = MeshTools::compile(Primitives::uvSphereSolid(16, 32)); - FlatGL3D shader{flag}; + FlatGL3D shader{FlatGL3D::Configuration{} + .setFlags(flag)}; if(flag == FlatGL3D::Flag{}) { shader.draw(sphere); @@ -1419,7 +1444,8 @@ template void FlatGLTest::renderColored2D() { GL::Mesh circle = MeshTools::compile(Primitives::circle2DSolid(32)); - FlatGL2D shader{flag}; + FlatGL2D shader{FlatGL2D::Configuration{} + .setFlags(flag)}; if(flag == FlatGL2D::Flag{}) { shader @@ -1482,7 +1508,8 @@ template void FlatGLTest::renderColored3D() { GL::Mesh sphere = MeshTools::compile(Primitives::uvSphereSolid(16, 32)); - FlatGL3D shader{flag}; + FlatGL3D shader{FlatGL3D::Configuration{} + .setFlags(flag)}; if(flag == FlatGL3D::Flag{}) { shader @@ -1586,7 +1613,8 @@ template void FlatGLTest::renderSinglePixelTextured2D() { flags |= FlatGL2D::Flag::TextureTransformation; } #endif - FlatGL2D shader{flags}; + FlatGL2D shader{FlatGL2D::Configuration{} + .setFlags(flags)}; const Color4ub imageData[]{ 0x9999ff_rgb }; ImageView2D image{PixelFormat::RGBA8Unorm, Vector2i{1}, imageData}; @@ -1698,7 +1726,8 @@ template void FlatGLTest::renderSinglePixelTextured3D() { flags |= FlatGL3D::Flag::TextureTransformation; } #endif - FlatGL3D shader{flags}; + FlatGL3D shader{FlatGL3D::Configuration{} + .setFlags(flags)}; const Color4ub imageData[]{ 0x9999ff_rgb }; ImageView2D image{PixelFormat::RGBA8Unorm, Vector2i{1}, imageData}; @@ -1830,7 +1859,8 @@ template void FlatGLTest::renderTextured2D() { flags |= FlatGL2D::Flag::TextureTransformation; } #endif - FlatGL2D shader{flags}; + FlatGL2D shader{FlatGL2D::Configuration{} + .setFlags(flags)}; GL::Texture2D texture{NoCreate}; #ifndef MAGNUM_TARGET_GLES2 @@ -1956,7 +1986,8 @@ template void FlatGLTest::renderTextured3D() { flags |= FlatGL3D::Flag::TextureTransformation; } #endif - FlatGL3D shader{flags}; + FlatGL3D shader{FlatGL3D::Configuration{} + .setFlags(flags)}; GL::Texture2D texture{NoCreate}; #ifndef MAGNUM_TARGET_GLES2 @@ -2096,7 +2127,8 @@ template void FlatGLTest::renderVertexColor2D() { .setStorage(1, TextureFormatRGB, image->size()) .setSubImage(0, {}, *image); - FlatGL2D shader{FlatGL2D::Flag::Textured|FlatGL2D::Flag::VertexColor|flag}; + FlatGL2D shader{FlatGL2D::Configuration{} + .setFlags(FlatGL2D::Flag::Textured|FlatGL2D::Flag::VertexColor|flag)}; shader.bindTexture(texture); if(flag == FlatGL2D::Flag{}) { @@ -2185,7 +2217,8 @@ template void FlatGLTest::renderVertexColor3D() { .setStorage(1, TextureFormatRGB, image->size()) .setSubImage(0, {}, *image); - FlatGL3D shader{FlatGL3D::Flag::Textured|FlatGL3D::Flag::VertexColor|flag}; + FlatGL3D shader{FlatGL3D::Configuration{} + .setFlags(FlatGL3D::Flag::Textured|FlatGL3D::Flag::VertexColor|flag)}; shader.bindTexture(texture); if(flag == FlatGL2D::Flag{}) { @@ -2289,7 +2322,8 @@ template void FlatGLTest::renderAlpha2D() { GL::Mesh circle = MeshTools::compile(Primitives::circle2DSolid(32, Primitives::Circle2DFlag::TextureCoordinates)); - FlatGL2D shader{data.flags|flag}; + FlatGL2D shader{FlatGL2D::Configuration{} + .setFlags(data.flags|flag)}; shader.bindTexture(texture); if(flag == FlatGL2D::Flag{}) { @@ -2375,7 +2409,8 @@ template void FlatGLTest::renderAlpha3D() { GL::Mesh sphere = MeshTools::compile(Primitives::uvSphereSolid(16, 32, Primitives::UVSphereFlag::TextureCoordinates)); - FlatGL3D shader{data.flags|flag}; + FlatGL3D shader{FlatGL3D::Configuration{} + .setFlags(data.flags|flag)}; shader.bindTexture(texture); if(flag == FlatGL2D::Flag{}) { @@ -2519,7 +2554,8 @@ template void FlatGLTest::renderObjectId2D() { CORRADE_INFO("Texture arrays currently require texture transformation if UBOs are used, enabling implicitly."); flags |= FlatGL2D::Flag::TextureTransformation; } - FlatGL2D shader{FlatGL2D::Flag::ObjectId|flags}; + FlatGL2D shader{FlatGL2D::Configuration{} + .setFlags(FlatGL2D::Flag::ObjectId|flags)}; GL::Texture2D texture{NoCreate}; GL::Texture2DArray textureArray{NoCreate}; @@ -2651,7 +2687,8 @@ template void FlatGLTest::renderObjectId3D() { CORRADE_INFO("Texture arrays currently require texture transformation if UBOs are used, enabling implicitly."); flags |= FlatGL3D::Flag::TextureTransformation; } - FlatGL3D shader{FlatGL3D::Flag::ObjectId|flags}; + FlatGL3D shader{FlatGL3D::Configuration{} + .setFlags(FlatGL3D::Flag::ObjectId|flags)}; GL::Texture2D texture{NoCreate}; GL::Texture2DArray textureArray{NoCreate}; @@ -2850,8 +2887,9 @@ template void FlatGLTest::renderInstanced2D() { ) .setInstanceCount(3); - FlatGL2D shader{FlatGL2D::Flag::VertexColor| - FlatGL2D::Flag::InstancedTransformation|data.flags|flag}; + FlatGL2D shader{FlatGL2D::Configuration{} + .setFlags(FlatGL2D::Flag::VertexColor| + FlatGL2D::Flag::InstancedTransformation|data.flags|flag)}; GL::Texture2D texture{NoCreate}; #ifndef MAGNUM_TARGET_GLES2 @@ -3163,8 +3201,9 @@ template void FlatGLTest::renderInstanced3D() { ) .setInstanceCount(3); - FlatGL3D shader{FlatGL3D::Flag::VertexColor| - FlatGL3D::Flag::InstancedTransformation|data.flags|flag}; + FlatGL3D shader{FlatGL3D::Configuration{} + .setFlags(FlatGL3D::Flag::VertexColor| + FlatGL3D::Flag::InstancedTransformation|data.flags|flag)}; GL::Texture2D texture{NoCreate}; #ifndef MAGNUM_TARGET_GLES2 @@ -3426,7 +3465,10 @@ void FlatGLTest::renderMulti2D() { CORRADE_SKIP("UBOs with dynamically indexed arrays are a crashy dumpster fire on SwiftShader, can't test."); #endif - FlatGL2D shader{FlatGL2D::Flag::UniformBuffers|data.flags, data.materialCount, data.drawCount}; + FlatGL2D shader{FlatGL2D::Configuration{} + .setFlags(FlatGL2D::Flag::UniformBuffers|data.flags) + .setMaterialCount(data.materialCount) + .setDrawCount(data.drawCount)}; GL::Texture2D texture{NoCreate}; GL::Texture2DArray textureArray{NoCreate}; @@ -3762,7 +3804,10 @@ void FlatGLTest::renderMulti3D() { CORRADE_SKIP("UBOs with dynamically indexed arrays are a crashy dumpster fire on SwiftShader, can't test."); #endif - FlatGL3D shader{FlatGL3D::Flag::UniformBuffers|data.flags, data.materialCount, data.drawCount}; + FlatGL3D shader{FlatGL3D::Configuration{} + .setFlags(FlatGL3D::Flag::UniformBuffers|data.flags) + .setMaterialCount(data.materialCount) + .setDrawCount(data.drawCount)}; GL::Texture2D texture{NoCreate}; GL::Texture2DArray textureArray{NoCreate}; diff --git a/src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp b/src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp index 717981b3a..c645c20ef 100644 --- a/src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp +++ b/src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp @@ -1403,7 +1403,8 @@ void MeshVisualizerGLTest::construct2D() { } #endif - MeshVisualizerGL2D shader{data.flags}; + MeshVisualizerGL2D shader{MeshVisualizerGL2D::Configuration{} + .setFlags(data.flags)}; CORRADE_COMPARE(shader.flags(), data.flags); CORRADE_VERIFY(shader.id()); { @@ -1418,7 +1419,8 @@ void MeshVisualizerGLTest::construct2D() { void MeshVisualizerGLTest::construct2DAsync() { - MeshVisualizerGL2D::CompileState state = MeshVisualizerGL2D::compile(MeshVisualizerGL2D::Flag::Wireframe|MeshVisualizerGL2D::Flag::NoGeometryShader); + MeshVisualizerGL2D::CompileState state = MeshVisualizerGL2D::compile(MeshVisualizerGL2D::Configuration{} + .setFlags(MeshVisualizerGL2D::Flag::Wireframe|MeshVisualizerGL2D::Flag::NoGeometryShader)); CORRADE_COMPARE(state.flags(), MeshVisualizerGL2D::Flag::Wireframe|MeshVisualizerGL2D::Flag::NoGeometryShader); while(!state.isLinkFinished()) @@ -1503,7 +1505,10 @@ void MeshVisualizerGLTest::constructUniformBuffers2D() { #endif } - MeshVisualizerGL2D shader{data.flags, data.materialCount, data.drawCount}; + MeshVisualizerGL2D shader{MeshVisualizerGL2D::Configuration{} + .setFlags(data.flags) + .setMaterialCount(data.materialCount) + .setDrawCount(data.drawCount)}; CORRADE_COMPARE(shader.flags(), data.flags); CORRADE_VERIFY(shader.id()); { @@ -1523,7 +1528,10 @@ void MeshVisualizerGLTest::constructUniformBuffers2DAsync() { CORRADE_SKIP(GL::Extensions::ARB::uniform_buffer_object::string() << "is not supported."); #endif - MeshVisualizerGL2D::CompileState state = MeshVisualizerGL2D::compile( MeshVisualizerGL2D::Flag::UniformBuffers|MeshVisualizerGL2D::Flag::Wireframe|MeshVisualizerGL2D::Flag::NoGeometryShader, 8, 55); + MeshVisualizerGL2D::CompileState state = MeshVisualizerGL2D::compile(MeshVisualizerGL2D::Configuration{} + .setFlags( MeshVisualizerGL2D::Flag::UniformBuffers|MeshVisualizerGL2D::Flag::Wireframe|MeshVisualizerGL2D::Flag::NoGeometryShader) + .setMaterialCount(8) + .setDrawCount(55)); CORRADE_COMPARE(state.flags(), MeshVisualizerGL2D::Flag::UniformBuffers|MeshVisualizerGL2D::Flag::Wireframe|MeshVisualizerGL2D::Flag::NoGeometryShader); CORRADE_COMPARE(state.materialCount(), 8); CORRADE_COMPARE(state.drawCount(), 55); @@ -1595,7 +1603,8 @@ void MeshVisualizerGLTest::construct3D() { } #endif - MeshVisualizerGL3D shader{data.flags}; + MeshVisualizerGL3D shader{MeshVisualizerGL3D::Configuration{} + .setFlags(data.flags)}; CORRADE_COMPARE(shader.flags(), data.flags); CORRADE_VERIFY(shader.id()); { @@ -1609,7 +1618,8 @@ void MeshVisualizerGLTest::construct3D() { } void MeshVisualizerGLTest::construct3DAsync() { - MeshVisualizerGL3D::CompileState state = MeshVisualizerGL3D::compile(MeshVisualizerGL3D::Flag::Wireframe|MeshVisualizerGL3D::Flag::NoGeometryShader); + MeshVisualizerGL3D::CompileState state = MeshVisualizerGL3D::compile(MeshVisualizerGL3D::Configuration{} + .setFlags(MeshVisualizerGL3D::Flag::Wireframe|MeshVisualizerGL3D::Flag::NoGeometryShader)); CORRADE_COMPARE(state.flags(), MeshVisualizerGL3D::Flag::Wireframe|MeshVisualizerGL3D::Flag::NoGeometryShader); while(!state.isLinkFinished()) @@ -1694,7 +1704,10 @@ void MeshVisualizerGLTest::constructUniformBuffers3D() { #endif } - MeshVisualizerGL3D shader{data.flags, data.materialCount, data.drawCount}; + MeshVisualizerGL3D shader{MeshVisualizerGL3D::Configuration{} + .setFlags(data.flags) + .setMaterialCount(data.materialCount) + .setDrawCount(data.drawCount)}; CORRADE_COMPARE(shader.flags(), data.flags); CORRADE_VERIFY(shader.id()); { @@ -1713,7 +1726,10 @@ void MeshVisualizerGLTest::constructUniformBuffers3DAsync() { CORRADE_SKIP(GL::Extensions::ARB::uniform_buffer_object::string() << "is not supported."); #endif - MeshVisualizerGL3D::CompileState state = MeshVisualizerGL3D::compile(MeshVisualizerGL3D::Flag::UniformBuffers|MeshVisualizerGL3D::Flag::Wireframe|MeshVisualizerGL3D::Flag::NoGeometryShader, 6, 28); + MeshVisualizerGL3D::CompileState state = MeshVisualizerGL3D::compile(MeshVisualizerGL3D::Configuration{} + .setFlags(MeshVisualizerGL3D::Flag::UniformBuffers|MeshVisualizerGL3D::Flag::Wireframe|MeshVisualizerGL3D::Flag::NoGeometryShader) + .setMaterialCount(6) + .setDrawCount(28)); CORRADE_COMPARE(state.flags(), MeshVisualizerGL3D::Flag::UniformBuffers|MeshVisualizerGL3D::Flag::Wireframe|MeshVisualizerGL3D::Flag::NoGeometryShader); CORRADE_COMPARE(state.materialCount(), 6); CORRADE_COMPARE(state.drawCount(), 28); @@ -1746,7 +1762,8 @@ void MeshVisualizerGLTest::construct2DInvalid() { std::ostringstream out; Error redirectError{&out}; - MeshVisualizerGL2D{data.flags}; + MeshVisualizerGL2D{MeshVisualizerGL2D::Configuration{} + .setFlags(data.flags)}; CORRADE_COMPARE(out.str(), Utility::formatString("Shaders::MeshVisualizerGL{}\n", data.message)); } @@ -1764,7 +1781,10 @@ void MeshVisualizerGLTest::constructUniformBuffers2DInvalid() { std::ostringstream out; Error redirectError{&out}; - MeshVisualizerGL2D{data.flags, data.materialCount, data.drawCount}; + MeshVisualizerGL2D{MeshVisualizerGL2D::Configuration{} + .setFlags(data.flags) + .setMaterialCount(data.materialCount) + .setDrawCount(data.drawCount)}; CORRADE_COMPARE(out.str(), Utility::formatString("Shaders::MeshVisualizerGL2D: {}\n", data.message)); } #endif @@ -1777,7 +1797,8 @@ void MeshVisualizerGLTest::construct3DInvalid() { std::ostringstream out; Error redirectError{&out}; - MeshVisualizerGL3D{data.flags}; + MeshVisualizerGL3D{MeshVisualizerGL3D::Configuration{} + .setFlags(data.flags)}; CORRADE_COMPARE(out.str(), Utility::formatString("Shaders::MeshVisualizerGL{}\n", data.message)); } @@ -1795,13 +1816,17 @@ void MeshVisualizerGLTest::constructUniformBuffers3DInvalid() { std::ostringstream out; Error redirectError{&out}; - MeshVisualizerGL3D{data.flags, data.materialCount, data.drawCount}; + MeshVisualizerGL3D{MeshVisualizerGL3D::Configuration{} + .setFlags(data.flags) + .setMaterialCount(data.materialCount) + .setDrawCount(data.drawCount)}; CORRADE_COMPARE(out.str(), Utility::formatString("Shaders::MeshVisualizerGL3D: {}\n", data.message)); } #endif void MeshVisualizerGLTest::constructMove2D() { - MeshVisualizerGL2D a{MeshVisualizerGL2D::Flag::Wireframe|MeshVisualizerGL2D::Flag::NoGeometryShader}; + MeshVisualizerGL2D a{MeshVisualizerGL2D::Configuration{} + .setFlags(MeshVisualizerGL2D::Flag::Wireframe|MeshVisualizerGL2D::Flag::NoGeometryShader)}; const GLuint id = a.id(); CORRADE_VERIFY(id); @@ -1826,7 +1851,10 @@ void MeshVisualizerGLTest::constructMoveUniformBuffers2D() { CORRADE_SKIP(GL::Extensions::ARB::uniform_buffer_object::string() << "is not supported."); #endif - MeshVisualizerGL2D a{MeshVisualizerGL2D::Flag::UniformBuffers|MeshVisualizerGL2D::Flag::Wireframe|MeshVisualizerGL2D::Flag::NoGeometryShader, 2, 5}; + MeshVisualizerGL2D a{MeshVisualizerGL2D::Configuration{} + .setFlags(MeshVisualizerGL2D::Flag::UniformBuffers|MeshVisualizerGL2D::Flag::Wireframe|MeshVisualizerGL2D::Flag::NoGeometryShader) + .setMaterialCount(2) + .setDrawCount(5)}; const GLuint id = a.id(); CORRADE_VERIFY(id); @@ -1850,7 +1878,8 @@ void MeshVisualizerGLTest::constructMoveUniformBuffers2D() { #endif void MeshVisualizerGLTest::constructMove3D() { - MeshVisualizerGL3D a{MeshVisualizerGL3D::Flag::Wireframe|MeshVisualizerGL3D::Flag::NoGeometryShader}; + MeshVisualizerGL3D a{MeshVisualizerGL3D::Configuration{} + .setFlags(MeshVisualizerGL3D::Flag::Wireframe|MeshVisualizerGL3D::Flag::NoGeometryShader)}; const GLuint id = a.id(); CORRADE_VERIFY(id); @@ -1875,7 +1904,10 @@ void MeshVisualizerGLTest::constructMoveUniformBuffers3D() { CORRADE_SKIP(GL::Extensions::ARB::uniform_buffer_object::string() << "is not supported."); #endif - MeshVisualizerGL3D a{MeshVisualizerGL3D::Flag::UniformBuffers|MeshVisualizerGL3D::Flag::Wireframe|MeshVisualizerGL3D::Flag::NoGeometryShader, 2, 5}; + MeshVisualizerGL3D a{MeshVisualizerGL3D::Configuration{} + .setFlags(MeshVisualizerGL3D::Flag::UniformBuffers|MeshVisualizerGL3D::Flag::Wireframe|MeshVisualizerGL3D::Flag::NoGeometryShader) + .setMaterialCount(2) + .setDrawCount(5)}; const GLuint id = a.id(); CORRADE_VERIFY(id); @@ -1910,7 +1942,8 @@ void MeshVisualizerGLTest::setUniformUniformBuffersEnabled2D() { std::ostringstream out; Error redirectError{&out}; - MeshVisualizerGL2D shader{MeshVisualizerGL2D::Flag::UniformBuffers|MeshVisualizerGL2D::Flag::Wireframe|MeshVisualizerGL2D::Flag::NoGeometryShader}; + MeshVisualizerGL2D shader{MeshVisualizerGL2D::Configuration{} + .setFlags(MeshVisualizerGL2D::Flag::UniformBuffers|MeshVisualizerGL2D::Flag::Wireframe|MeshVisualizerGL2D::Flag::NoGeometryShader)}; shader.setTransformationProjectionMatrix({}) .setTextureMatrix({}) .setTextureLayer({}) @@ -1944,7 +1977,8 @@ void MeshVisualizerGLTest::setUniformUniformBuffersEnabled3D() { std::ostringstream out; Error redirectError{&out}; - MeshVisualizerGL3D shader{MeshVisualizerGL3D::Flag::UniformBuffers|MeshVisualizerGL3D::Flag::Wireframe|MeshVisualizerGL3D::Flag::NoGeometryShader}; + MeshVisualizerGL3D shader{MeshVisualizerGL3D::Configuration{} + .setFlags(MeshVisualizerGL3D::Flag::UniformBuffers|MeshVisualizerGL3D::Flag::Wireframe|MeshVisualizerGL3D::Flag::NoGeometryShader)}; shader.setProjectionMatrix({}) .setTransformationMatrix({}) .setTextureMatrix({}) @@ -1989,7 +2023,8 @@ void MeshVisualizerGLTest::bindBufferUniformBuffersNotEnabled2D() { Error redirectError{&out}; GL::Buffer buffer; - MeshVisualizerGL2D shader{MeshVisualizerGL2D::Flag::Wireframe|MeshVisualizerGL2D::Flag::NoGeometryShader}; + MeshVisualizerGL2D shader{MeshVisualizerGL2D::Configuration{} + .setFlags(MeshVisualizerGL2D::Flag::Wireframe|MeshVisualizerGL2D::Flag::NoGeometryShader)}; shader.bindTransformationProjectionBuffer(buffer) .bindTransformationProjectionBuffer(buffer, 0, 16) .bindDrawBuffer(buffer) @@ -2018,7 +2053,8 @@ void MeshVisualizerGLTest::bindBufferUniformBuffersNotEnabled3D() { Error redirectError{&out}; GL::Buffer buffer; - MeshVisualizerGL3D shader{MeshVisualizerGL3D::Flag::Wireframe|MeshVisualizerGL3D::Flag::NoGeometryShader}; + MeshVisualizerGL3D shader{MeshVisualizerGL3D::Configuration{} + .setFlags(MeshVisualizerGL3D::Flag::Wireframe|MeshVisualizerGL3D::Flag::NoGeometryShader)}; shader.bindProjectionBuffer(buffer) .bindProjectionBuffer(buffer, 0, 16) .bindTransformationBuffer(buffer) @@ -2058,7 +2094,8 @@ void MeshVisualizerGLTest::bindObjectIdTextureInvalid2D() { #endif GL::Texture2D texture; - MeshVisualizerGL2D shader{data.flags2D}; + MeshVisualizerGL2D shader{MeshVisualizerGL2D::Configuration{} + .setFlags(data.flags2D)}; std::ostringstream out; Error redirectError{&out}; @@ -2078,7 +2115,8 @@ void MeshVisualizerGLTest::bindObjectIdTextureInvalid3D() { #endif GL::Texture2D texture; - MeshVisualizerGL3D shader{data.flags3D}; + MeshVisualizerGL3D shader{MeshVisualizerGL3D::Configuration{} + .setFlags(data.flags3D)}; std::ostringstream out; Error redirectError{&out}; @@ -2101,7 +2139,8 @@ void MeshVisualizerGLTest::bindObjectIdTextureArrayInvalid2D() { Error redirectError{&out}; GL::Texture2DArray textureArray; - MeshVisualizerGL2D shader{data.flags2D}; + MeshVisualizerGL2D shader{MeshVisualizerGL2D::Configuration{} + .setFlags(data.flags2D)}; shader.bindObjectIdTexture(textureArray); CORRADE_COMPARE(out.str(), data.message); @@ -2122,7 +2161,8 @@ void MeshVisualizerGLTest::bindObjectIdTextureArrayInvalid3D() { Error redirectError{&out}; GL::Texture2DArray textureArray; - MeshVisualizerGL3D shader{data.flags3D}; + MeshVisualizerGL3D shader{MeshVisualizerGL3D::Configuration{} + .setFlags(data.flags3D)}; shader.bindObjectIdTexture(textureArray); CORRADE_COMPARE(out.str(), data.message); @@ -2198,7 +2238,8 @@ void MeshVisualizerGLTest::setWireframeNotEnabled3D() { void MeshVisualizerGLTest::setTextureMatrixNotEnabled2D() { CORRADE_SKIP_IF_NO_ASSERT(); - MeshVisualizerGL2D shader{MeshVisualizerGL2D::Flag::ObjectIdTexture}; + MeshVisualizerGL2D shader{MeshVisualizerGL2D::Configuration{} + .setFlags(MeshVisualizerGL2D::Flag::ObjectIdTexture)}; std::ostringstream out; Error redirectError{&out}; @@ -2210,7 +2251,8 @@ void MeshVisualizerGLTest::setTextureMatrixNotEnabled2D() { void MeshVisualizerGLTest::setTextureMatrixNotEnabled3D() { CORRADE_SKIP_IF_NO_ASSERT(); - MeshVisualizerGL3D shader{MeshVisualizerGL3D::Flag::ObjectIdTexture}; + MeshVisualizerGL3D shader{MeshVisualizerGL3D::Configuration{} + .setFlags(MeshVisualizerGL3D::Flag::ObjectIdTexture)}; std::ostringstream out; Error redirectError{&out}; @@ -2222,7 +2264,8 @@ void MeshVisualizerGLTest::setTextureMatrixNotEnabled3D() { void MeshVisualizerGLTest::setTextureLayerNotArray2D() { CORRADE_SKIP_IF_NO_ASSERT(); - MeshVisualizerGL2D shader{MeshVisualizerGL2D::Flag::ObjectIdTexture}; + MeshVisualizerGL2D shader{MeshVisualizerGL2D::Configuration{} + .setFlags(MeshVisualizerGL2D::Flag::ObjectIdTexture)}; std::ostringstream out; Error redirectError{&out}; @@ -2234,7 +2277,8 @@ void MeshVisualizerGLTest::setTextureLayerNotArray2D() { void MeshVisualizerGLTest::setTextureLayerNotArray3D() { CORRADE_SKIP_IF_NO_ASSERT(); - MeshVisualizerGL3D shader{MeshVisualizerGL3D::Flag::ObjectIdTexture}; + MeshVisualizerGL3D shader{MeshVisualizerGL3D::Configuration{} + .setFlags(MeshVisualizerGL3D::Flag::ObjectIdTexture)}; std::ostringstream out; Error redirectError{&out}; @@ -2252,7 +2296,8 @@ void MeshVisualizerGLTest::bindTextureTransformBufferNotEnabled2D() { #endif GL::Buffer buffer{GL::Buffer::TargetHint::Uniform}; - MeshVisualizerGL2D shader{MeshVisualizerGL2D::Flag::UniformBuffers|MeshVisualizerGL2D::Flag::ObjectIdTexture}; + MeshVisualizerGL2D shader{MeshVisualizerGL2D::Configuration{} + .setFlags(MeshVisualizerGL2D::Flag::UniformBuffers|MeshVisualizerGL2D::Flag::ObjectIdTexture)}; std::ostringstream out; Error redirectError{&out}; @@ -2272,7 +2317,8 @@ void MeshVisualizerGLTest::bindTextureTransformBufferNotEnabled3D() { #endif GL::Buffer buffer{GL::Buffer::TargetHint::Uniform}; - MeshVisualizerGL2D shader{MeshVisualizerGL2D::Flag::UniformBuffers|MeshVisualizerGL2D::Flag::ObjectIdTexture}; + MeshVisualizerGL2D shader{MeshVisualizerGL2D::Configuration{} + .setFlags(MeshVisualizerGL2D::Flag::UniformBuffers|MeshVisualizerGL2D::Flag::ObjectIdTexture)}; std::ostringstream out; Error redirectError{&out}; @@ -2355,7 +2401,8 @@ void MeshVisualizerGLTest::setTangentBitangentNormalNotEnabled3D() { std::ostringstream out; Error redirectError{&out}; - MeshVisualizerGL3D shader{MeshVisualizerGL3D::Flag::Wireframe}; + MeshVisualizerGL3D shader{MeshVisualizerGL3D::Configuration{} + .setFlags(MeshVisualizerGL3D::Flag::Wireframe)}; shader.setNormalMatrix({}) .setLineWidth({}) .setLineLength({}); @@ -2378,8 +2425,11 @@ void MeshVisualizerGLTest::setWrongDrawOffset2D() { std::ostringstream out; Error redirectError{&out}; - MeshVisualizerGL2D{MeshVisualizerGL2D::Flag::UniformBuffers|MeshVisualizerGL2D::Flag::Wireframe|MeshVisualizerGL2D::Flag::NoGeometryShader, 2, 5} - .setDrawOffset(5); + MeshVisualizerGL2D shader{MeshVisualizerGL2D::Configuration{} + .setFlags(MeshVisualizerGL2D::Flag::UniformBuffers|MeshVisualizerGL2D::Flag::Wireframe|MeshVisualizerGL2D::Flag::NoGeometryShader) + .setMaterialCount(2) + .setDrawCount(5)}; + shader.setDrawOffset(5); CORRADE_COMPARE(out.str(), "Shaders::MeshVisualizerGL::setDrawOffset(): draw offset 5 is out of bounds for 5 draws\n"); } @@ -2394,7 +2444,11 @@ void MeshVisualizerGLTest::setWrongDrawOffset3D() { std::ostringstream out; Error redirectError{&out}; - MeshVisualizerGL3D{MeshVisualizerGL3D::Flag::UniformBuffers|MeshVisualizerGL3D::Flag::Wireframe|MeshVisualizerGL3D::Flag::NoGeometryShader, 2, 5} + MeshVisualizerGL3D shader{MeshVisualizerGL3D::Configuration{} + .setFlags(MeshVisualizerGL3D::Flag::UniformBuffers|MeshVisualizerGL3D::Flag::Wireframe|MeshVisualizerGL3D::Flag::NoGeometryShader) + .setMaterialCount(2) + .setDrawCount(5)}; + shader .setDrawOffset(5); CORRADE_COMPARE(out.str(), "Shaders::MeshVisualizerGL::setDrawOffset(): draw offset 5 is out of bounds for 5 draws\n"); @@ -2463,7 +2517,8 @@ template void MeshVisualizerGLTest::renderDefault GL::Mesh circle = MeshTools::compile(Primitives::circle2DSolid(16)); - MeshVisualizerGL2D shader{MeshVisualizerGL2D::Flag::Wireframe|flag}; + MeshVisualizerGL2D shader{MeshVisualizerGL2D::Configuration{} + .setFlags(MeshVisualizerGL2D::Flag::Wireframe|flag)}; if(flag == MeshVisualizerGL2D::Flag{}) { shader.draw(circle); @@ -2556,7 +2611,8 @@ template void MeshVisualizerGLTest::renderDefault GL::Mesh sphere = MeshTools::compile(Primitives::icosphereSolid(1)); - MeshVisualizerGL3D shader{MeshVisualizerGL3D::Flag::Wireframe|flag}; + MeshVisualizerGL3D shader{MeshVisualizerGL3D::Configuration{} + .setFlags(MeshVisualizerGL3D::Flag::Wireframe|flag)}; if(flag == MeshVisualizerGL3D::Flag{}) { shader.draw(sphere); @@ -2651,7 +2707,8 @@ template void MeshVisualizerGLTest::renderDefault GL::Mesh circle = MeshTools::compile(Primitives::circle2DSolid(16)); - MeshVisualizerGL2D shader{MeshVisualizerGL2D::Flag::ObjectId|flag}; + MeshVisualizerGL2D shader{MeshVisualizerGL2D::Configuration{} + .setFlags(MeshVisualizerGL2D::Flag::ObjectId|flag)}; shader.bindColorMapTexture(_colorMapTexture); if(flag == MeshVisualizerGL2D::Flag{}) { @@ -2704,7 +2761,8 @@ template void MeshVisualizerGLTest::renderDefault GL::Mesh icosphere = MeshTools::compile(Primitives::icosphereSolid(0)); - MeshVisualizerGL3D shader{MeshVisualizerGL3D::Flag::InstancedObjectId|flag}; + MeshVisualizerGL3D shader{MeshVisualizerGL3D::Configuration{} + .setFlags(MeshVisualizerGL3D::Flag::InstancedObjectId|flag)}; shader.bindColorMapTexture(_colorMapTexture); if(flag == MeshVisualizerGL3D::Flag{}) { @@ -2785,7 +2843,8 @@ template void MeshVisualizerGLTest::renderDefault Containers::arrayView(ids)} })); - MeshVisualizerGL2D shader{MeshVisualizerGL2D::Flag::InstancedObjectId|flag}; + MeshVisualizerGL2D shader{MeshVisualizerGL2D::Configuration{} + .setFlags(MeshVisualizerGL2D::Flag::InstancedObjectId|flag)}; shader.bindColorMapTexture(colorMapTexture); if(flag == MeshVisualizerGL2D::Flag{}) { @@ -2861,7 +2920,8 @@ template void MeshVisualizerGLTest::renderDefault Containers::arrayView(ids)} })); - MeshVisualizerGL3D shader{MeshVisualizerGL3D::Flag::InstancedObjectId|flag}; + MeshVisualizerGL3D shader{MeshVisualizerGL3D::Configuration{} + .setFlags(MeshVisualizerGL3D::Flag::InstancedObjectId|flag)}; shader.bindColorMapTexture(colorMapTexture); if(flag == MeshVisualizerGL3D::Flag{}) { @@ -2921,7 +2981,8 @@ template void MeshVisualizerGLTest::renderDefault GL::Mesh circle = MeshTools::compile(Primitives::circle2DSolid(16)); - MeshVisualizerGL2D shader{MeshVisualizerGL2D::Flag::VertexId|flag}; + MeshVisualizerGL2D shader{MeshVisualizerGL2D::Configuration{} + .setFlags(MeshVisualizerGL2D::Flag::VertexId|flag)}; shader.bindColorMapTexture(_colorMapTexture); if(flag == MeshVisualizerGL2D::Flag{}) { @@ -2972,7 +3033,8 @@ template void MeshVisualizerGLTest::renderDefault GL::Mesh icosphere = MeshTools::compile(Primitives::icosphereSolid(0)); - MeshVisualizerGL3D shader{MeshVisualizerGL3D::Flag::VertexId|flag}; + MeshVisualizerGL3D shader{MeshVisualizerGL3D::Configuration{} + .setFlags(MeshVisualizerGL3D::Flag::VertexId|flag)}; shader.bindColorMapTexture(_colorMapTexture); if(flag == MeshVisualizerGL3D::Flag{}) { @@ -3056,7 +3118,8 @@ template void MeshVisualizerGLTest::renderDefault GL::Mesh circle = MeshTools::compile(circleData); - MeshVisualizerGL2D shader{flags|flag}; + MeshVisualizerGL2D shader{MeshVisualizerGL2D::Configuration{} + .setFlags(flags|flag)}; shader.bindColorMapTexture(_colorMapTexture); if(flag == MeshVisualizerGL2D::Flag{}) { @@ -3137,7 +3200,8 @@ template void MeshVisualizerGLTest::renderDefault GL::Mesh icosphere = MeshTools::compile(icosphereData); - MeshVisualizerGL3D shader{flags|flag}; + MeshVisualizerGL3D shader{MeshVisualizerGL3D::Configuration{} + .setFlags(flags|flag)}; shader.bindColorMapTexture(_colorMapTexture); if(flag == MeshVisualizerGL3D::Flag{}) { @@ -3196,9 +3260,8 @@ template void MeshVisualizerGLTest::renderDefault GL::Mesh sphere = MeshTools::compile(Primitives::uvSphereSolid(4, 8, Primitives::UVSphereFlag::Tangents)); - MeshVisualizerGL3D shader{MeshVisualizerGL3D::Flag::TangentDirection| - MeshVisualizerGL3D::Flag::BitangentFromTangentDirection| - MeshVisualizerGL3D::Flag::NormalDirection|flag}; + MeshVisualizerGL3D shader{MeshVisualizerGL3D::Configuration{} + .setFlags(MeshVisualizerGL3D::Flag::TangentDirection|MeshVisualizerGL3D::Flag::BitangentFromTangentDirection|MeshVisualizerGL3D::Flag::NormalDirection|flag)}; /** @todo make this unnecessary */ shader.setViewportSize({80, 80}); @@ -3296,7 +3359,8 @@ template void MeshVisualizerGLTest::renderWirefra } } else circle = MeshTools::compile(circleData); - MeshVisualizerGL2D shader{data.flags|MeshVisualizerGL2D::Flag::Wireframe|flag}; + MeshVisualizerGL2D shader{MeshVisualizerGL2D::Configuration{} + .setFlags(data.flags|MeshVisualizerGL2D::Flag::Wireframe|flag)}; shader.setViewportSize({80, 80}); if(flag == MeshVisualizerGL2D::Flag{}) { @@ -3425,7 +3489,8 @@ template void MeshVisualizerGLTest::renderWirefra } } else sphere = MeshTools::compile(sphereData); - MeshVisualizerGL3D shader{data.flags|MeshVisualizerGL3D::Flag::Wireframe|flag}; + MeshVisualizerGL3D shader{MeshVisualizerGL3D::Configuration{} + .setFlags(data.flags|MeshVisualizerGL3D::Flag::Wireframe|flag)}; shader.setViewportSize({80, 80}); if(flag == MeshVisualizerGL3D::Flag{}) { @@ -3605,7 +3670,8 @@ template void MeshVisualizerGLTest::renderObjectV CORRADE_INFO("Texture arrays currently require texture transformation if UBOs are used, enabling implicitly."); flags |= MeshVisualizerGL2D::Flag::TextureTransformation; } - MeshVisualizerGL2D shader{flags}; + MeshVisualizerGL2D shader{MeshVisualizerGL2D::Configuration{} + .setFlags(flags)}; shader /* Shouldn't assert (nor warn) when wireframe is not enabled */ .setViewportSize({80, 80}) @@ -3792,7 +3858,8 @@ template void MeshVisualizerGLTest::renderObjectV CORRADE_INFO("Texture arrays currently require texture transformation if UBOs are used, enabling implicitly."); flags |= MeshVisualizerGL3D::Flag::TextureTransformation; } - MeshVisualizerGL3D shader{flags}; + MeshVisualizerGL3D shader{MeshVisualizerGL3D::Configuration{} + .setFlags(flags)}; shader /* Shouldn't assert (nor warn) when wireframe is not enabled */ .setViewportSize({80, 80}) @@ -3937,8 +4004,9 @@ void MeshVisualizerGLTest::renderWireframe3DPerspective() { GL::Mesh plane = MeshTools::compile(Primitives::planeSolid()); - MeshVisualizerGL3D{MeshVisualizerGL3D::Flag::Wireframe} - .setWireframeWidth(8.0f) + MeshVisualizerGL3D shader{MeshVisualizerGL3D::Configuration{} + .setFlags(MeshVisualizerGL3D::Flag::Wireframe)}; + shader.setWireframeWidth(8.0f) .setWireframeColor(0xff0000_rgbf) .setViewportSize({80, 80}) .setTransformationMatrix( @@ -4067,7 +4135,9 @@ template void MeshVisualizerGLTest::renderTangent Matrix4::scaling(Vector3::yScale(1.5f)); if(data.secondPassFlags) { - MeshVisualizerGL3D{data.secondPassFlags} + MeshVisualizerGL3D shader{MeshVisualizerGL3D::Configuration{} + .setFlags(data.secondPassFlags)}; + shader /** @todo make this unnecessary */ .setViewportSize({80, 80}) .setTransformationMatrix(transformation) @@ -4077,7 +4147,8 @@ template void MeshVisualizerGLTest::renderTangent .draw(mesh); } - MeshVisualizerGL3D shader{data.flags|flag}; + MeshVisualizerGL3D shader{MeshVisualizerGL3D::Configuration{} + .setFlags(data.flags|flag)}; /** @todo make this unnecessary */ shader.setViewportSize({80, 80}); if(data.flags & (MeshVisualizerGL3D::Flag::PrimitiveId|MeshVisualizerGL3D::Flag::ObjectId|MeshVisualizerGL3D::Flag::VertexId)) @@ -4258,8 +4329,8 @@ template void MeshVisualizerGLTest::renderInstanc ) .setInstanceCount(3); - MeshVisualizerGL2D shader{ - MeshVisualizerGL2D::Flag::InstancedTransformation|data.flags|flag}; + MeshVisualizerGL2D shader{MeshVisualizerGL2D::Configuration{} + .setFlags(MeshVisualizerGL2D::Flag::InstancedTransformation|data.flags|flag)}; shader.setViewportSize(Vector2{RenderSize}); #ifndef MAGNUM_TARGET_GLES2 if(data.flags & (MeshVisualizerGL2D::Flag::VertexId|MeshVisualizerGL2D::Flag::ObjectId)) @@ -4528,8 +4599,8 @@ template void MeshVisualizerGLTest::renderInstanc ) .setInstanceCount(3); - MeshVisualizerGL3D shader{ - MeshVisualizerGL3D::Flag::InstancedTransformation|data.flags|flag}; + MeshVisualizerGL3D shader{MeshVisualizerGL3D::Configuration{} + .setFlags(MeshVisualizerGL3D::Flag::InstancedTransformation|data.flags|flag)}; shader.setViewportSize(Vector2{RenderSize}); #ifndef MAGNUM_TARGET_GLES2 if(data.flags & (MeshVisualizerGL3D::Flag::VertexId|MeshVisualizerGL3D::Flag::ObjectId)) @@ -4749,7 +4820,10 @@ void MeshVisualizerGLTest::renderMulti2D() { CORRADE_SKIP("UBOs with dynamically indexed arrays are a crashy dumpster fire on SwiftShader, can't test."); #endif - MeshVisualizerGL2D shader{MeshVisualizerGL2D::Flag::UniformBuffers|data.flags, data.materialCount, data.drawCount}; + MeshVisualizerGL2D shader{MeshVisualizerGL2D::Configuration{} + .setFlags(MeshVisualizerGL2D::Flag::UniformBuffers|data.flags) + .setMaterialCount(data.materialCount) + .setDrawCount(data.drawCount)}; shader.setViewportSize(Vector2{RenderSize}); if(data.flags & (MeshVisualizerGL2D::Flag::VertexId|MeshVisualizerGL2D::Flag::ObjectId)) shader.bindColorMapTexture(_colorMapTexture); @@ -5069,7 +5143,10 @@ void MeshVisualizerGLTest::renderMulti3D() { CORRADE_SKIP("UBOs with dynamically indexed arrays are a crashy dumpster fire on SwiftShader, can't test."); #endif - MeshVisualizerGL3D shader{MeshVisualizerGL3D::Flag::UniformBuffers|data.flags, data.materialCount, data.drawCount}; + MeshVisualizerGL3D shader{MeshVisualizerGL3D::Configuration{} + .setFlags(MeshVisualizerGL3D::Flag::UniformBuffers|data.flags) + .setMaterialCount(data.materialCount) + .setDrawCount(data.drawCount)}; shader.setViewportSize(Vector2{RenderSize}); if(data.flags & (MeshVisualizerGL3D::Flag::VertexId|MeshVisualizerGL3D::Flag::ObjectId)) shader.bindColorMapTexture(_colorMapTexture); diff --git a/src/Magnum/Shaders/Test/PhongGLTest.cpp b/src/Magnum/Shaders/Test/PhongGLTest.cpp index da9b83694..2ebdba527 100644 --- a/src/Magnum/Shaders/Test/PhongGLTest.cpp +++ b/src/Magnum/Shaders/Test/PhongGLTest.cpp @@ -1186,7 +1186,9 @@ void PhongGLTest::construct() { CORRADE_SKIP(GL::Extensions::EXT::texture_array::string() << "is not supported."); #endif - PhongGL shader{data.flags, data.lightCount}; + PhongGL shader{PhongGL::Configuration{} + .setFlags(data.flags) + .setLightCount(data.lightCount)}; CORRADE_COMPARE(shader.flags(), data.flags); CORRADE_COMPARE(shader.lightCount(), data.lightCount); CORRADE_VERIFY(shader.id()); @@ -1201,7 +1203,9 @@ void PhongGLTest::construct() { } void PhongGLTest::constructAsync() { - PhongGL::CompileState state = PhongGL::compile(PhongGL::Flag::SpecularTexture|PhongGL::Flag::InstancedTextureOffset, 3); + PhongGL::CompileState state = PhongGL::compile(PhongGL::Configuration{} + .setFlags(PhongGL::Flag::SpecularTexture|PhongGL::Flag::InstancedTextureOffset) + .setLightCount(3)); CORRADE_COMPARE(state.flags(), PhongGL::Flag::SpecularTexture|PhongGL::Flag::InstancedTextureOffset); CORRADE_COMPARE(state.lightCount(), 3); @@ -1250,7 +1254,11 @@ void PhongGLTest::constructUniformBuffers() { #endif } - PhongGL shader{data.flags, data.lightCount, data.materialCount, data.drawCount}; + PhongGL shader{PhongGL::Configuration{} + .setFlags(data.flags) + .setLightCount(data.lightCount) + .setMaterialCount(data.materialCount) + .setDrawCount(data.drawCount)}; CORRADE_COMPARE(shader.flags(), data.flags); CORRADE_COMPARE(shader.lightCount(), data.lightCount); CORRADE_COMPARE(shader.materialCount(), data.materialCount); @@ -1272,7 +1280,11 @@ void PhongGLTest::constructUniformBuffersAsync() { CORRADE_SKIP(GL::Extensions::ARB::uniform_buffer_object::string() << "is not supported."); #endif - PhongGL::CompileState state = PhongGL::compile(PhongGL::Flag::UniformBuffers|PhongGL::Flag::LightCulling, 8, 8, 24); + PhongGL::CompileState state = PhongGL::compile(PhongGL::Configuration{} + .setFlags(PhongGL::Flag::UniformBuffers|PhongGL::Flag::LightCulling) + .setLightCount(8) + .setMaterialCount(8) + .setDrawCount(24)); CORRADE_COMPARE(state.flags(), PhongGL::Flag::UniformBuffers|PhongGL::Flag::LightCulling); CORRADE_COMPARE(state.lightCount(), 8); CORRADE_COMPARE(state.materialCount(), 8); @@ -1300,7 +1312,9 @@ void PhongGLTest::constructUniformBuffersAsync() { #endif void PhongGLTest::constructMove() { - PhongGL a{PhongGL::Flag::AlphaMask, 3}; + PhongGL a{PhongGL::Configuration{} + .setFlags(PhongGL::Flag::AlphaMask) + .setLightCount(3)}; const GLuint id = a.id(); CORRADE_VERIFY(id); @@ -1327,7 +1341,11 @@ void PhongGLTest::constructMoveUniformBuffers() { CORRADE_SKIP(GL::Extensions::ARB::uniform_buffer_object::string() << "is not supported."); #endif - PhongGL a{PhongGL::Flag::UniformBuffers, 3, 2, 5}; + PhongGL a{PhongGL::Configuration{} + .setFlags(PhongGL::Flag::UniformBuffers) + .setLightCount(3) + .setMaterialCount(2) + .setDrawCount(5)}; const GLuint id = a.id(); CORRADE_VERIFY(id); @@ -1360,7 +1378,8 @@ void PhongGLTest::constructInvalid() { std::ostringstream out; Error redirectError{&out}; - PhongGL{data.flags}; + PhongGL{PhongGL::Configuration{} + .setFlags(data.flags)}; CORRADE_COMPARE(out.str(), Utility::formatString( "Shaders::PhongGL: {}\n", data.message)); } @@ -1379,7 +1398,11 @@ void PhongGLTest::constructUniformBuffersInvalid() { std::ostringstream out; Error redirectError{&out}; - PhongGL{data.flags, data.lightCount, data.materialCount, data.drawCount}; + PhongGL{PhongGL::Configuration{} + .setFlags(data.flags) + .setLightCount(data.lightCount) + .setMaterialCount(data.materialCount) + .setDrawCount(data.drawCount)}; CORRADE_COMPARE(out.str(), Utility::formatString( "Shaders::PhongGL: {}\n", data.message)); } @@ -1397,7 +1420,8 @@ void PhongGLTest::setUniformUniformBuffersEnabled() { std::ostringstream out; Error redirectError{&out}; - PhongGL shader{PhongGL::Flag::UniformBuffers}; + PhongGL shader{PhongGL::Configuration{} + .setFlags(PhongGL::Flag::UniformBuffers)}; shader.setAmbientColor({}) .setDiffuseColor({}) .setNormalTextureScale({}) @@ -1494,7 +1518,8 @@ void PhongGLTest::bindTexturesInvalid() { Error redirectError{&out}; GL::Texture2D texture; - PhongGL shader{data.flags}; + PhongGL shader{PhongGL::Configuration{} + .setFlags(data.flags)}; shader.bindAmbientTexture(texture) .bindDiffuseTexture(texture) .bindSpecularTexture(texture) @@ -1523,7 +1548,8 @@ void PhongGLTest::bindTextureArraysInvalid() { Error redirectError{&out}; GL::Texture2DArray textureArray; - PhongGL shader{data.flags}; + PhongGL shader{PhongGL::Configuration{} + .setFlags(data.flags)}; shader.bindAmbientTexture(textureArray) .bindDiffuseTexture(textureArray) .bindSpecularTexture(textureArray) @@ -1554,7 +1580,8 @@ void PhongGLTest::setSpecularDisabled() { Error redirectError{&out}; GL::Texture2D texture; - PhongGL shader{PhongGL::Flag::NoSpecular}; + PhongGL shader{PhongGL::Configuration{} + .setFlags(PhongGL::Flag::NoSpecular)}; shader.setSpecularColor({}) .setShininess({}) /* {{}} makes GCC 4.8 warn about zero as null pointer constant */ @@ -1621,7 +1648,8 @@ void PhongGLTest::bindTextureTransformBufferNotEnabled() { Error redirectError{&out}; GL::Buffer buffer{GL::Buffer::TargetHint::Uniform}; - PhongGL shader{PhongGL::Flag::UniformBuffers}; + PhongGL shader{PhongGL::Configuration{} + .setFlags(PhongGL::Flag::UniformBuffers)}; shader.bindTextureTransformationBuffer(buffer) .bindTextureTransformationBuffer(buffer, 0, 16); CORRADE_COMPARE(out.str(), @@ -1650,7 +1678,9 @@ void PhongGLTest::setWrongLightCount() { std::ostringstream out; Error redirectError{&out}; - PhongGL{{}, 5} + PhongGL shader{PhongGL::Configuration{} + .setLightCount(5)}; + shader .setLightColors({Color3{}}) .setLightPositions({Vector4{}}) .setLightRanges({0.0f}); @@ -1665,7 +1695,9 @@ void PhongGLTest::setWrongLightId() { std::ostringstream out; Error redirectError{&out}; - PhongGL{{}, 3} + PhongGL shader{PhongGL::Configuration{} + .setLightCount(3)}; + shader .setLightColor(3, Color3{}) .setLightPosition(3, Vector4{}) .setLightRange(3, 0.0f); @@ -1686,8 +1718,12 @@ void PhongGLTest::setWrongDrawOffset() { std::ostringstream out; Error redirectError{&out}; - PhongGL{PhongGL::Flag::UniformBuffers, 1, 2, 5} - .setDrawOffset(5); + PhongGL shader{PhongGL::Configuration{} + .setFlags(PhongGL::Flag::UniformBuffers) + .setLightCount(1) + .setMaterialCount(2) + .setDrawCount(5)}; + shader.setDrawOffset(5); CORRADE_COMPARE(out.str(), "Shaders::PhongGL::setDrawOffset(): draw offset 5 is out of bounds for 5 draws\n"); } @@ -1740,7 +1776,8 @@ template void PhongGLTest::renderDefaults() { GL::Mesh sphere = MeshTools::compile(Primitives::uvSphereSolid(16, 32)); - PhongGL shader{flag}; + PhongGL shader{PhongGL::Configuration{} + .setFlags(flag)}; if(flag == PhongGL::Flag{}) { shader.draw(sphere); @@ -1816,7 +1853,9 @@ template void PhongGLTest::renderColored() { GL::Mesh sphere = MeshTools::compile(Primitives::uvSphereSolid(16, 32)); - PhongGL shader{flag, 2}; + PhongGL shader{PhongGL::Configuration{} + .setFlags(flag) + .setLightCount(2)}; if(flag == PhongGL::Flag{}) { shader @@ -1944,7 +1983,9 @@ template void PhongGLTest::renderSinglePixelTextured() { flags |= PhongGL::Flag::TextureTransformation; } #endif - PhongGL shader{flags, 2}; + PhongGL shader{PhongGL::Configuration{} + .setFlags(flags) + .setLightCount(2)}; const Color4ub ambientData[]{ 0x330033_rgb }; ImageView2D ambientImage{PixelFormat::RGBA8Unorm, Vector2i{1}, ambientData}; @@ -2130,7 +2171,9 @@ template void PhongGLTest::renderTextured() { flags |= PhongGL::Flag::TextureTransformation; } #endif - PhongGL shader{flags, 2}; + PhongGL shader{PhongGL::Configuration{} + .setFlags(flags) + .setLightCount(2)}; Containers::Pointer importer = _manager.loadAndInstantiate("AnyImageImporter"); CORRADE_VERIFY(importer); @@ -2375,7 +2418,9 @@ template void PhongGLTest::renderTexturedNormal() { flags |= PhongGL::Flag::TextureTransformation; } #endif - PhongGL shader{flags, 2}; + PhongGL shader{PhongGL::Configuration{} + .setFlags(flags) + .setLightCount(2)}; GL::Texture2D normal{NoCreate}; #ifndef MAGNUM_TARGET_GLES2 @@ -2576,7 +2621,9 @@ template void PhongGLTest::renderVertexColor() { .setStorage(1, TextureFormatRGB, image->size()) .setSubImage(0, {}, *image); - PhongGL shader{PhongGL::Flag::DiffuseTexture|PhongGL::Flag::VertexColor|flag, 2}; + PhongGL shader{PhongGL::Configuration{} + .setFlags(PhongGL::Flag::DiffuseTexture|PhongGL::Flag::VertexColor|flag) + .setLightCount(2)}; shader.bindDiffuseTexture(diffuse); if(flag == PhongGL::Flag{}) { @@ -2672,7 +2719,8 @@ template void PhongGLTest::renderShininess() { GL::Mesh sphere = MeshTools::compile(Primitives::uvSphereSolid(16, 32)); - PhongGL shader{flag|data.flags}; + PhongGL shader{PhongGL::Configuration{} + .setFlags(flag|data.flags)}; if(flag == PhongGL::Flag{}) { if(!(data.flags & PhongGL::Flag::NoSpecular)) shader .setSpecularColor(data.specular) @@ -2860,7 +2908,9 @@ template void PhongGLTest::renderAlpha() { GL::Mesh sphere = MeshTools::compile(Primitives::uvSphereSolid(16, 32, Primitives::UVSphereFlag::TextureCoordinates)); - PhongGL shader{data.flags|flag, 2}; + PhongGL shader{PhongGL::Configuration{} + .setFlags(data.flags|flag) + .setLightCount(2)}; shader.bindTextures(&ambient, &diffuse, nullptr, nullptr); if(flag == PhongGL::Flag{}) { @@ -3026,7 +3076,9 @@ template void PhongGLTest::renderObjectId() { CORRADE_INFO("Texture arrays currently require texture transformation if UBOs are used, enabling implicitly."); flags |= PhongGL::Flag::TextureTransformation; } - PhongGL shader{PhongGL::Flag::ObjectId|flags, 2}; + PhongGL shader{PhongGL::Configuration{} + .setFlags(PhongGL::Flag::ObjectId|flags) + .setLightCount(2)}; GL::Texture2D texture{NoCreate}; GL::Texture2DArray textureArray{NoCreate}; @@ -3178,7 +3230,9 @@ template void PhongGLTest::renderLights() { Matrix4 transformation = Matrix4::translation({0.0f, 0.0f, -1.5f}); - PhongGL shader{flag, 1}; + PhongGL shader{PhongGL::Configuration{} + .setFlags(flag) + .setLightCount(1)}; if(flag == PhongGL::Flag{}) { shader /* Set non-black ambient to catch accidental NaNs -- the render @@ -3268,7 +3322,9 @@ void PhongGLTest::renderLightsSetOneByOne() { Matrix4 transformation = Matrix4::translation({0.0f, 0.0f, -1.5f}); - PhongGL{{}, 2} + PhongGL shader{PhongGL::Configuration{} + .setLightCount(2)}; + shader /* Set non-black ambient to catch accidental NaNs -- the render should never be fully black */ .setAmbientColor(0x222222_rgbf) @@ -3334,7 +3390,9 @@ void PhongGLTest::renderLowLightAngle() { in the vertex shader, where the incorrect normalization caused the fragment-interpolated light direction being incorrect, most visible with long polygons and low light angles. */ - PhongGL{{}, 1} + PhongGL shader{PhongGL::Configuration{} + .setLightCount(1)}; + shader .setLightPositions({{0.0f, 0.1f, 0.0f, 1.0f}}) .setShininess(200) .setTransformationMatrix(transformation) @@ -3404,7 +3462,9 @@ void PhongGLTest::renderLightCulling() { .setColor(0x669933_rgbf); GL::Buffer lightUniform{lights}; - PhongGL shader{PhongGL::Flag::UniformBuffers|PhongGL::Flag::LightCulling, 64}; + PhongGL shader{PhongGL::Configuration{} + .setFlags(PhongGL::Flag::UniformBuffers|PhongGL::Flag::LightCulling) + .setLightCount(64)}; shader .bindProjectionBuffer(projectionUniform) .bindTransformationBuffer(transformationUniform) @@ -3464,7 +3524,9 @@ template void PhongGLTest::renderZeroLights() { flags |= PhongGL::Flag::ObjectId; } #endif - PhongGL shader{flags|flag, 0}; + PhongGL shader{PhongGL::Configuration{} + .setFlags(flags|flag) + .setLightCount(0)}; Containers::Pointer importer = _manager.loadAndInstantiate("AnyImageImporter"); CORRADE_VERIFY(importer); @@ -3700,8 +3762,9 @@ template void PhongGLTest::renderInstanced() { ) .setInstanceCount(3); - PhongGL shader{PhongGL::Flag::VertexColor| - PhongGL::Flag::InstancedTransformation|data.flags|flag, 2}; + PhongGL shader{PhongGL::Configuration{} + .setFlags(PhongGL::Flag::VertexColor|PhongGL::Flag::InstancedTransformation|data.flags|flag) + .setLightCount(2)}; GL::Texture2D diffuse{NoCreate}; GL::Texture2D normal{NoCreate}; @@ -4046,7 +4109,11 @@ void PhongGLTest::renderMulti() { CORRADE_SKIP("UBOs with dynamically indexed arrays are a crashy dumpster fire on SwiftShader, can't test."); #endif - PhongGL shader{PhongGL::Flag::UniformBuffers|PhongGL::Flag::LightCulling|data.flags, data.lightCount, data.materialCount, data.drawCount}; + PhongGL shader{PhongGL::Configuration{} + .setFlags(PhongGL::Flag::UniformBuffers|PhongGL::Flag::LightCulling|data.flags) + .setLightCount(data.lightCount) + .setMaterialCount(data.materialCount) + .setDrawCount(data.drawCount)}; GL::Texture2D diffuse{NoCreate}; GL::Texture2DArray diffuseArray{NoCreate}; diff --git a/src/Magnum/Shaders/Test/ShadersGLBenchmark.cpp b/src/Magnum/Shaders/Test/ShadersGLBenchmark.cpp index 7624ad78e..b00f655b7 100644 --- a/src/Magnum/Shaders/Test/ShadersGLBenchmark.cpp +++ b/src/Magnum/Shaders/Test/ShadersGLBenchmark.cpp @@ -594,9 +594,11 @@ template void ShadersGLBenchmark::flat() { } #endif - FlatGL shader{data.flags + FlatGL shader{typename FlatGL::Configuration{} + .setFlags(data.flags) #ifndef MAGNUM_TARGET_GLES2 - , data.materialCount, data.drawCount + .setMaterialCount(data.materialCount) + .setDrawCount(data.drawCount) #endif }; @@ -705,9 +707,12 @@ void ShadersGLBenchmark::phong() { } #endif - PhongGL shader{data.flags, data.lightCount + PhongGL shader{PhongGL::Configuration{} + .setFlags(data.flags) + .setLightCount(data.lightCount) #ifndef MAGNUM_TARGET_GLES2 - , data.materialCount, data.drawCount + .setMaterialCount(data.materialCount) + .setDrawCount(data.drawCount) #endif }; @@ -873,9 +878,10 @@ template void ShadersGLBenchmark::vertexColor() { } #endif - VertexColorGL shader{data.flags + VertexColorGL shader{typename VertexColorGL::Configuration{} + .setFlags(data.flags) #ifndef MAGNUM_TARGET_GLES2 - , data.drawCount + .setDrawCount(data.drawCount) #endif }; @@ -932,9 +938,11 @@ template void ShadersGLBenchmark::vector() { } #endif - VectorGL shader{data.flags + VectorGL shader{typename VectorGL::Configuration{} + .setFlags(data.flags) #ifndef MAGNUM_TARGET_GLES2 - , data.materialCount, data.drawCount + .setMaterialCount(data.materialCount) + .setDrawCount(data.drawCount) #endif }; shader.bindVectorTexture(_textureWhite); @@ -1004,9 +1012,11 @@ template void ShadersGLBenchmark::distanceFieldVector() } #endif - DistanceFieldVectorGL shader{data.flags + DistanceFieldVectorGL shader{typename DistanceFieldVectorGL::Configuration{} + .setFlags(data.flags) #ifndef MAGNUM_TARGET_GLES2 - , data.materialCount, data.drawCount + .setMaterialCount(data.materialCount) + .setDrawCount(data.drawCount) #endif }; shader.bindVectorTexture(_textureWhite); @@ -1116,7 +1126,8 @@ void ShadersGLBenchmark::meshVisualizer2D() { } #endif - MeshVisualizerGL2D shader{data.flags}; + MeshVisualizerGL2D shader{MeshVisualizerGL2D::Configuration{} + .setFlags(data.flags)}; shader.setViewportSize(Vector2{RenderSize}); #ifndef MAGNUM_TARGET_GLES2 if(data.flags & (MeshVisualizerGL2D::Flag::InstancedObjectId|MeshVisualizerGL2D::Flag::VertexId|MeshVisualizerGL2D::Flag::PrimitiveIdFromVertexId @@ -1250,7 +1261,8 @@ void ShadersGLBenchmark::meshVisualizer3D() { } #endif - MeshVisualizerGL3D shader{data.flags}; + MeshVisualizerGL3D shader{MeshVisualizerGL3D::Configuration{} + .setFlags(data.flags)}; shader.setViewportSize(Vector2{RenderSize}); #ifndef MAGNUM_TARGET_GLES2 diff --git a/src/Magnum/Shaders/Test/VectorGLTest.cpp b/src/Magnum/Shaders/Test/VectorGLTest.cpp index 6b0f95967..950f6ff97 100644 --- a/src/Magnum/Shaders/Test/VectorGLTest.cpp +++ b/src/Magnum/Shaders/Test/VectorGLTest.cpp @@ -370,7 +370,8 @@ template void VectorGLTest::construct() { auto&& data = ConstructData[testCaseInstanceId()]; setTestCaseDescription(data.name); - VectorGL shader{data.flags}; + VectorGL shader{typename VectorGL::Configuration{} + .setFlags(data.flags)}; CORRADE_COMPARE(shader.flags(), data.flags); CORRADE_VERIFY(shader.id()); { @@ -386,7 +387,8 @@ template void VectorGLTest::construct() { template void VectorGLTest::constructAsync() { setTestCaseTemplateName(Utility::format("{}", dimensions)); - typename VectorGL::CompileState state = VectorGL::compile(VectorGL2D::Flag::TextureTransformation); + typename VectorGL::CompileState state = VectorGL::compile(typename VectorGL::Configuration{} + .setFlags(VectorGL2D::Flag::TextureTransformation)); CORRADE_COMPARE(state.flags(), VectorGL2D::Flag::TextureTransformation); while(!state.isLinkFinished()) @@ -432,7 +434,10 @@ template void VectorGLTest::constructUniformBuffers() { #endif } - VectorGL shader{data.flags, data.materialCount, data.drawCount}; + VectorGL shader{typename VectorGL::Configuration{} + .setFlags(data.flags) + .setMaterialCount(data.materialCount) + .setDrawCount(data.drawCount)}; CORRADE_COMPARE(shader.flags(), data.flags); CORRADE_COMPARE(shader.drawCount(), data.drawCount); CORRADE_VERIFY(shader.id()); @@ -454,7 +459,10 @@ template void VectorGLTest::constructUniformBuffersAsync CORRADE_SKIP(GL::Extensions::ARB::uniform_buffer_object::string() << "is not supported."); #endif - typename VectorGL::CompileState state = VectorGL::compile(VectorGL2D::Flag::UniformBuffers|VectorGL2D::Flag::TextureTransformation, 15, 42); + typename VectorGL::CompileState state = VectorGL::compile(typename VectorGL::Configuration{} + .setFlags(VectorGL2D::Flag::UniformBuffers|VectorGL2D::Flag::TextureTransformation) + .setMaterialCount(15) + .setDrawCount(42)); CORRADE_COMPARE(state.flags(), VectorGL2D::Flag::UniformBuffers|VectorGL2D::Flag::TextureTransformation); CORRADE_COMPARE(state.materialCount(), 15); CORRADE_COMPARE(state.drawCount(), 42); @@ -482,7 +490,8 @@ template void VectorGLTest::constructUniformBuffersAsync template void VectorGLTest::constructMove() { setTestCaseTemplateName(Utility::format("{}", dimensions)); - VectorGL a{VectorGL::Flag::TextureTransformation}; + VectorGL a{typename VectorGL::Configuration{} + .setFlags(VectorGL::Flag::TextureTransformation)}; const GLuint id = a.id(); CORRADE_VERIFY(id); @@ -509,7 +518,10 @@ template void VectorGLTest::constructMoveUniformBuffers( CORRADE_SKIP(GL::Extensions::ARB::uniform_buffer_object::string() << "is not supported."); #endif - VectorGL a{VectorGL::Flag::UniformBuffers, 2, 5}; + VectorGL a{typename VectorGL::Configuration{} + .setFlags(VectorGL::Flag::UniformBuffers) + .setMaterialCount(2) + .setDrawCount(5)}; const GLuint id = a.id(); CORRADE_VERIFY(id); @@ -547,7 +559,10 @@ template void VectorGLTest::constructUniformBuffersInval std::ostringstream out; Error redirectError{&out}; - VectorGL{data.flags, data.materialCount, data.drawCount}; + VectorGL{typename VectorGL::Configuration{} + .setFlags(data.flags) + .setMaterialCount(data.materialCount) + .setDrawCount(data.drawCount)}; CORRADE_COMPARE(out.str(), Utility::formatString( "Shaders::VectorGL: {}\n", data.message)); } @@ -567,7 +582,8 @@ template void VectorGLTest::setUniformUniformBuffersEnab std::ostringstream out; Error redirectError{&out}; - VectorGL shader{VectorGL::Flag::UniformBuffers}; + VectorGL shader{typename VectorGL::Configuration{} + .setFlags(VectorGL::Flag::UniformBuffers)}; shader.setTransformationProjectionMatrix({}) .setTextureMatrix({}) .setBackgroundColor({}) @@ -641,7 +657,8 @@ template void VectorGLTest::bindTextureTransformBufferNo Error redirectError{&out}; GL::Buffer buffer{GL::Buffer::TargetHint::Uniform}; - VectorGL shader{VectorGL::Flag::UniformBuffers}; + VectorGL shader{typename VectorGL::Configuration{} + .setFlags(VectorGL::Flag::UniformBuffers)}; shader.bindTextureTransformationBuffer(buffer) .bindTextureTransformationBuffer(buffer, 0, 16); CORRADE_COMPARE(out.str(), @@ -663,7 +680,10 @@ template void VectorGLTest::setWrongDrawOffset() { std::ostringstream out; Error redirectError{&out}; - VectorGL{VectorGL::Flag::UniformBuffers, 2, 5} + VectorGL{typename VectorGL::Configuration{} + .setFlags(VectorGL::Flag::UniformBuffers) + .setMaterialCount(2) + .setDrawCount(5)} .setDrawOffset(5); CORRADE_COMPARE(out.str(), "Shaders::VectorGL::setDrawOffset(): draw offset 5 is out of bounds for 5 draws\n"); @@ -742,7 +762,8 @@ template void VectorGLTest::renderDefaults2D() { .setSubImage(0, {}, *image); #endif - VectorGL2D shader{flag}; + VectorGL2D shader{VectorGL2D::Configuration{} + .setFlags(flag)}; shader.bindVectorTexture(texture); if(flag == VectorGL2D::Flag{}) { @@ -821,7 +842,8 @@ template void VectorGLTest::renderDefaults3D() { .setSubImage(0, {}, *image); #endif - VectorGL3D shader{flag}; + VectorGL3D shader{VectorGL3D::Configuration{} + .setFlags(flag)}; shader.bindVectorTexture(texture); if(flag == VectorGL3D::Flag{}) { @@ -903,7 +925,8 @@ template void VectorGLTest::render2D() { .setSubImage(0, {}, *image); #endif - VectorGL2D shader{data.flags|flag}; + VectorGL2D shader{VectorGL2D::Configuration{} + .setFlags(data.flags|flag)}; shader.bindVectorTexture(texture); if(flag == VectorGL2D::Flag{}) { @@ -1008,7 +1031,8 @@ template void VectorGLTest::render3D() { .setSubImage(0, {}, *image); #endif - VectorGL3D shader{data.flags|flag}; + VectorGL3D shader{VectorGL3D::Configuration{} + .setFlags(data.flags|flag)}; shader.bindVectorTexture(texture); if(flag == VectorGL3D::Flag{}) { @@ -1200,7 +1224,10 @@ void VectorGLTest::renderMulti2D() { .setMaterialId(data.drawCount == 1 ? 0 : 1); GL::Buffer drawUniform{GL::Buffer::TargetHint::Uniform, drawData}; - VectorGL2D shader{VectorGL2D::Flag::UniformBuffers|VectorGL2D::Flag::TextureTransformation|data.flags, data.materialCount, data.drawCount}; + VectorGL2D shader{VectorGL2D::Configuration{} + .setFlags(VectorGL2D::Flag::UniformBuffers|VectorGL2D::Flag::TextureTransformation|data.flags) + .setMaterialCount(data.materialCount) + .setDrawCount(data.drawCount)}; shader.bindVectorTexture(vector); /* Just one draw, rebinding UBOs each time */ @@ -1406,7 +1433,10 @@ void VectorGLTest::renderMulti3D() { .setMaterialId(data.drawCount == 1 ? 0 : 1); GL::Buffer drawUniform{GL::Buffer::TargetHint::Uniform, drawData}; - VectorGL3D shader{VectorGL3D::Flag::UniformBuffers|VectorGL3D::Flag::TextureTransformation|data.flags, data.materialCount, data.drawCount}; + VectorGL3D shader{VectorGL3D::Configuration{} + .setFlags(VectorGL3D::Flag::UniformBuffers|VectorGL3D::Flag::TextureTransformation|data.flags) + .setMaterialCount(data.materialCount) + .setDrawCount(data.drawCount)}; shader.bindVectorTexture(vector); /* Just one draw, rebinding UBOs each time */ diff --git a/src/Magnum/Shaders/Test/VertexColorGLTest.cpp b/src/Magnum/Shaders/Test/VertexColorGLTest.cpp index 669bb276d..f9816930b 100644 --- a/src/Magnum/Shaders/Test/VertexColorGLTest.cpp +++ b/src/Magnum/Shaders/Test/VertexColorGLTest.cpp @@ -367,7 +367,9 @@ template void VertexColorGLTest::constructUniformBuffers #endif } - VertexColorGL shader{data.flags, data.drawCount}; + VertexColorGL shader{typename VertexColorGL::Configuration{} + .setFlags(data.flags) + .setDrawCount(data.drawCount)}; CORRADE_COMPARE(shader.flags(), data.flags); CORRADE_COMPARE(shader.drawCount(), data.drawCount); CORRADE_VERIFY(shader.id()); @@ -389,7 +391,9 @@ template void VertexColorGLTest::constructUniformBuffers CORRADE_SKIP(GL::Extensions::ARB::uniform_buffer_object::string() << "is not supported."); #endif - typename VertexColorGL::CompileState state = VertexColorGL::compile(VertexColorGL2D::Flag::UniformBuffers, 63); + typename VertexColorGL::CompileState state = VertexColorGL::compile(typename VertexColorGL::Configuration{} + .setFlags(VertexColorGL2D::Flag::UniformBuffers) + .setDrawCount(63)); CORRADE_COMPARE(state.flags(), VertexColorGL2D::Flag::UniformBuffers); CORRADE_COMPARE(state.drawCount(), 63); @@ -440,7 +444,9 @@ template void VertexColorGLTest::constructMoveUniformBuf CORRADE_SKIP(GL::Extensions::ARB::uniform_buffer_object::string() << "is not supported."); #endif - VertexColorGL a{VertexColorGL::Flag::UniformBuffers, 5}; + VertexColorGL a{typename VertexColorGL::Configuration{} + .setFlags(VertexColorGL::Flag::UniformBuffers) + .setDrawCount(5)}; const GLuint id = a.id(); CORRADE_VERIFY(id); @@ -474,7 +480,9 @@ template void VertexColorGLTest::constructUniformBuffers std::ostringstream out; Error redirectError{&out}; - VertexColorGL{VertexColorGL::Flag::UniformBuffers, 0}; + VertexColorGL{typename VertexColorGL::Configuration{} + .setFlags(VertexColorGL::Flag::UniformBuffers) + .setDrawCount(0)}; CORRADE_COMPARE(out.str(), "Shaders::VertexColorGL: draw count can't be zero\n"); } @@ -494,7 +502,8 @@ template void VertexColorGLTest::setUniformUniformBuffer std::ostringstream out; Error redirectError{&out}; - VertexColorGL shader{VertexColorGL::Flag::UniformBuffers}; + VertexColorGL shader{typename VertexColorGL::Configuration{} + .setFlags(VertexColorGL::Flag::UniformBuffers)}; shader.setTransformationProjectionMatrix({}); CORRADE_COMPARE(out.str(), "Shaders::VertexColorGL::setTransformationProjectionMatrix(): the shader was created with uniform buffers enabled\n"); @@ -531,7 +540,9 @@ template void VertexColorGLTest::setWrongDrawOffset() { std::ostringstream out; Error redirectError{&out}; - VertexColorGL{VertexColorGL::Flag::UniformBuffers, 5} + VertexColorGL{typename VertexColorGL::Configuration{} + .setFlags(VertexColorGL::Flag::UniformBuffers) + .setDrawCount(5)} .setDrawOffset(5); CORRADE_COMPARE(out.str(), "Shaders::VertexColorGL::setDrawOffset(): draw offset 5 is out of bounds for 5 draws\n"); @@ -591,7 +602,8 @@ template void VertexColorGLTest::renderDefa GL::Mesh circle = MeshTools::compile(circleData); circle.addVertexBuffer(colors, 0, GL::Attribute{}); - VertexColorGL2D shader{flag}; + VertexColorGL2D shader{VertexColorGL2D::Configuration{} + .setFlags(flag)}; if(flag == VertexColorGL2D::Flag{}) { shader.draw(circle); @@ -657,7 +669,8 @@ template void VertexColorGLTest::renderDefa GL::Mesh sphere = MeshTools::compile(sphereData); sphere.addVertexBuffer(colors, 0, GL::Attribute{}); - VertexColorGL3D shader{flag}; + VertexColorGL3D shader{VertexColorGL3D::Configuration{} + .setFlags(flag)}; if(flag == VertexColorGL3D::Flag{}) { shader.draw(sphere); @@ -717,7 +730,8 @@ template void VertexColorGLTest::render2D() GL::Mesh circle = MeshTools::compile(circleData); circle.addVertexBuffer(colors, 0, GL::Attribute{}); - VertexColorGL2D shader{flag}; + VertexColorGL2D shader{VertexColorGL2D::Configuration{} + .setFlags(flag)}; if(flag == VertexColorGL2D::Flag{}) { shader.setTransformationProjectionMatrix(Matrix3::projection({2.1f, 2.1f})) @@ -784,7 +798,8 @@ template void VertexColorGLTest::render3D() GL::Mesh sphere = MeshTools::compile(sphereData); sphere.addVertexBuffer(colors, 0, GL::Attribute{}); - VertexColorGL3D shader{flag}; + VertexColorGL3D shader{VertexColorGL3D::Configuration{} + .setFlags(flag)}; if(flag == VertexColorGL3D::Flag{}) { shader.setTransformationProjectionMatrix( @@ -908,7 +923,9 @@ void VertexColorGLTest::renderMulti2D() { ); GL::Buffer transformationProjectionUniform{GL::Buffer::TargetHint::Uniform, transformationProjectionData}; - VertexColorGL2D shader{VertexColorGL2D::Flag::UniformBuffers|data.flags, data.drawCount}; + VertexColorGL2D shader{VertexColorGL2D::Configuration{} + .setFlags(VertexColorGL2D::Flag::UniformBuffers|data.flags) + .setDrawCount(data.drawCount)}; /* Just one draw, rebinding UBOs each time */ if(data.drawCount == 1) { @@ -1039,7 +1056,9 @@ void VertexColorGLTest::renderMulti3D() { ); GL::Buffer transformationProjectionUniform{GL::Buffer::TargetHint::Uniform, transformationProjectionData}; - VertexColorGL3D shader{VertexColorGL3D::Flag::UniformBuffers|data.flags, data.drawCount}; + VertexColorGL3D shader{VertexColorGL3D::Configuration{} + .setFlags(VertexColorGL3D::Flag::UniformBuffers|data.flags) + .setDrawCount(data.drawCount)}; /* Just one draw, rebinding UBOs each time */ if(data.drawCount == 1) {