diff --git a/CMakeLists.txt b/CMakeLists.txt index d2fbff84d..cad3d375a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -245,7 +245,7 @@ cmake_dependent_option(MAGNUM_WITH_SHADERTOOLS "Build ShaderTools library" ON "N cmake_dependent_option(MAGNUM_WITH_TEXT "Build Text library" ON "NOT MAGNUM_WITH_FONTCONVERTER;NOT MAGNUM_WITH_MAGNUMFONT;NOT MAGNUM_WITH_MAGNUMFONTCONVERTER" ON) cmake_dependent_option(MAGNUM_WITH_TEXTURETOOLS "Build TextureTools library" ON "NOT MAGNUM_WITH_TEXT;NOT MAGNUM_WITH_DISTANCEFIELDCONVERTER" ON) cmake_dependent_option(MAGNUM_WITH_TRADE "Build Trade library" ON "NOT MAGNUM_WITH_MATERIALTOOLS;NOT MAGNUM_WITH_MESHTOOLS;NOT MAGNUM_WITH_PRIMITIVES;NOT MAGNUM_WITH_SCENETOOLS;NOT MAGNUM_WITH_IMAGECONVERTER;NOT MAGNUM_WITH_ANYIMAGEIMPORTER;NOT MAGNUM_WITH_ANYIMAGECONVERTER;NOT MAGNUM_WITH_ANYSCENEIMPORTER;NOT MAGNUM_WITH_OBJIMPORTER;NOT MAGNUM_WITH_TGAIMAGECONVERTER;NOT MAGNUM_WITH_TGAIMPORTER" ON) -cmake_dependent_option(MAGNUM_WITH_GL "Build GL library" ON "NOT MAGNUM_WITH_SHADERS;NOT MAGNUM_WITH_GL_INFO;NOT MAGNUM_WITH_ANDROIDAPPLICATION;NOT MAGNUM_WITH_WINDOWLESSIOSAPPLICATION;NOT MAGNUM_WITH_WINDOWLESSCGLAPPLICATION;NOT MAGNUM_WITH_WINDOWLESSGLXAPPLICATION;NOT MAGNUM_WITH_CGLCONTEXT;NOT MAGNUM_WITH_GLXAPPLICATION;NOT MAGNUM_WITH_GLXCONTEXT;NOT MAGNUM_WITH_XEGLAPPLICATION;NOT MAGNUM_WITH_WINDOWLESSWGLAPPLICATION;NOT MAGNUM_WITH_WGLCONTEXT;NOT MAGNUM_WITH_DISTANCEFIELDCONVERTER" ON) +cmake_dependent_option(MAGNUM_WITH_GL "Build GL library" ON "NOT MAGNUM_WITH_GL_INFO;NOT MAGNUM_WITH_ANDROIDAPPLICATION;NOT MAGNUM_WITH_WINDOWLESSIOSAPPLICATION;NOT MAGNUM_WITH_WINDOWLESSCGLAPPLICATION;NOT MAGNUM_WITH_WINDOWLESSGLXAPPLICATION;NOT MAGNUM_WITH_CGLCONTEXT;NOT MAGNUM_WITH_GLXAPPLICATION;NOT MAGNUM_WITH_GLXCONTEXT;NOT MAGNUM_WITH_XEGLAPPLICATION;NOT MAGNUM_WITH_WINDOWLESSWGLAPPLICATION;NOT MAGNUM_WITH_WGLCONTEXT;NOT MAGNUM_WITH_DISTANCEFIELDCONVERTER" ON) cmake_dependent_option(MAGNUM_TARGET_GL "Build libraries with OpenGL interoperability" ON "MAGNUM_WITH_GL" OFF) diff --git a/doc/building.dox b/doc/building.dox index 3a309b8c0..45a09f52f 100644 --- a/doc/building.dox +++ b/doc/building.dox @@ -563,8 +563,7 @@ can specify which parts will be built and which not: - `MAGNUM_WITH_AUDIO` --- Build the @ref Audio library. Depends on [OpenAL](https://www.openal.org/), not enabled by default. - `MAGNUM_WITH_DEBUGTOOLS` --- Build the @ref DebugTools library. -- `MAGNUM_WITH_GL` --- Build the @ref GL library. Enabled automatically if - `MAGNUM_WITH_SHADERS` is enabled. +- `MAGNUM_WITH_GL` --- Build the @ref GL library - `MAGNUM_WITH_MATERIALTOOLS` --- Build the @ref MaterialTools library. Enables also building of the @ref Trade library. - `MAGNUM_WITH_MESHTOOLS` --- Build the @ref MeshTools library. Enables also @@ -574,8 +573,7 @@ can specify which parts will be built and which not: - `MAGNUM_WITH_SCENEGRAPH` --- Build the @ref SceneGraph library - `MAGNUM_WITH_SCENETOOLS` --- Build the @ref SceneTools library. Enables also building of the @ref Trade library. -- `MAGNUM_WITH_SHADERS` --- Build the @ref Shaders library. Enables also - building of the @ref GL library. +- `MAGNUM_WITH_SHADERS` --- Build the @ref Shaders library - `MAGNUM_WITH_SHADERTOOLS` --- Build the @ref ShaderTools library - `MAGNUM_WITH_TEXT` --- Build the @ref Text library. Enables also building of the @ref TextureTools library. diff --git a/doc/changelog.dox b/doc/changelog.dox index 0987c64c1..73776610b 100644 --- a/doc/changelog.dox +++ b/doc/changelog.dox @@ -892,6 +892,9 @@ See also: @subsubsection changelog-latest-changes-shaders Shaders library +- This library no longer has a hard dependency on OpenGL. If + @ref MAGNUM_TARGET_GL is not enabled, this library will contain just + uniform struct definitions and related utilities. - In the original implementation of normal mapping in @ref Shaders::PhongGL, there shader didn't provide a way to supply bitangent direction, forcing users to patch normal maps. This is now possible using newly added diff --git a/doc/custom-buildsystems-order.dot b/doc/custom-buildsystems-order.dot index f7bd8fe26..02cdbd72d 100644 --- a/doc/custom-buildsystems-order.dot +++ b/doc/custom-buildsystems-order.dot @@ -92,7 +92,7 @@ digraph "Magnum library dependency order" { MagnumSceneGraph -> Magnum - MagnumShaders -> MagnumGL + MagnumShaders -> MagnumGL [style=dotted] MagnumShaderTools -> Magnum MagnumShaderTools -> CorradePluginManager diff --git a/modules/FindMagnum.cmake b/modules/FindMagnum.cmake index 2c5482be7..03656d1a6 100644 --- a/modules/FindMagnum.cmake +++ b/modules/FindMagnum.cmake @@ -491,7 +491,10 @@ endif() set(_MAGNUM_SceneGraph_DEPENDENCIES ) set(_MAGNUM_SceneTools_DEPENDENCIES Trade) -set(_MAGNUM_Shaders_DEPENDENCIES GL) +set(_MAGNUM_Shaders_DEPENDENCIES ) +if(MAGNUM_TARGET_GL) + list(APPEND _MAGNUM_Shaders_DEPENDENCIES GL) +endif() set(_MAGNUM_Text_DEPENDENCIES TextureTools) if(MAGNUM_TARGET_GL) diff --git a/src/Magnum/Shaders/CMakeLists.txt b/src/Magnum/Shaders/CMakeLists.txt index d7672852b..dc6ec56c7 100644 --- a/src/Magnum/Shaders/CMakeLists.txt +++ b/src/Magnum/Shaders/CMakeLists.txt @@ -28,92 +28,103 @@ # property that would have to be set on each target separately. set(CMAKE_FOLDER "Magnum/Shaders") -if(NOT MAGNUM_WITH_GL) - message(SEND_ERROR "Shaders are available only if MAGNUM_WITH_GL is enabled") -endif() - -if(MAGNUM_TARGET_GLES2) - corrade_add_resource(MagnumShaders_RESOURCES_GL resources-gles2.conf) -else() - corrade_add_resource(MagnumShaders_RESOURCES_GL resources-gl.conf) -endif() - -set(MagnumShaders_SRCS - ${MagnumShaders_RESOURCES_GL}) +set(MagnumShaders_SRCS ) set(MagnumShaders_GracefulAssert_SRCS - DistanceFieldVectorGL.cpp - FlatGL.cpp - Line.cpp - MeshVisualizerGL.cpp - PhongGL.cpp - VectorGL.cpp - VertexColorGL.cpp - - glShaderWrapper.cpp) + Line.cpp) set(MagnumShaders_HEADERS DistanceFieldVector.h - DistanceFieldVectorGL.h Flat.h - FlatGL.h Generic.h - GenericGL.h Line.h MeshVisualizer.h - MeshVisualizerGL.h Phong.h - PhongGL.h Shaders.h Vector.h - VectorGL.h - VertexColorGL.h - glShaderWrapper.h visibility.h) # Header files to display in project view of IDEs only set(MagnumShaders_PRIVATE_HEADERS Implementation/lineMiterLimit.h) -if(NOT MAGNUM_TARGET_GLES2) +if(MAGNUM_TARGET_GL) + if(MAGNUM_TARGET_GLES2) + corrade_add_resource(MagnumShaders_RESOURCES_GL resources-gles2.conf) + else() + corrade_add_resource(MagnumShaders_RESOURCES_GL resources-gl.conf) + endif() + + list(APPEND MagnumShaders_SRCS + ${MagnumShaders_RESOURCES_GL}) + list(APPEND MagnumShaders_GracefulAssert_SRCS - LineGL.cpp) + DistanceFieldVectorGL.cpp + FlatGL.cpp + MeshVisualizerGL.cpp + PhongGL.cpp + VectorGL.cpp + VertexColorGL.cpp - list(APPEND MagnumShaders_HEADERS - LineGL.h) -endif() + glShaderWrapper.cpp) -if(MAGNUM_BUILD_DEPRECATED) list(APPEND MagnumShaders_HEADERS - VertexColor.h) -endif() + DistanceFieldVectorGL.h + FlatGL.h + GenericGL.h + MeshVisualizerGL.h + PhongGL.h + VectorGL.h + VertexColorGL.h + + glShaderWrapper.h) + + if(NOT MAGNUM_TARGET_GLES2) + list(APPEND MagnumShaders_GracefulAssert_SRCS + LineGL.cpp) + + list(APPEND MagnumShaders_HEADERS + LineGL.h) + endif() -# Objects shared between main and test library -add_library(MagnumShadersObjects OBJECT - ${MagnumShaders_SRCS} - ${MagnumShaders_HEADERS} - ${MagnumShaders_PRIVATE_HEADERS}) -if(MAGNUM_BUILD_STATIC) - # On the static build we're importing the resources manually, so no need to - # have the implicit initializers as well. - set_property(SOURCE ${MagnumShaders_RCS} APPEND PROPERTY COMPILE_DEFINITIONS - "CORRADE_AUTOMATIC_INITIALIZER=CORRADE_NOOP" - "CORRADE_AUTOMATIC_FINALIZER=CORRADE_NOOP") -endif() -target_include_directories(MagnumShadersObjects PUBLIC - $ - $) -if(NOT MAGNUM_BUILD_STATIC) - target_compile_definitions(MagnumShadersObjects PRIVATE "MagnumShadersObjects_EXPORTS") + if(MAGNUM_BUILD_DEPRECATED) + list(APPEND MagnumShaders_HEADERS + VertexColor.h) + endif() endif() -if(NOT MAGNUM_BUILD_STATIC OR MAGNUM_BUILD_STATIC_PIC) - set_target_properties(MagnumShadersObjects PROPERTIES POSITION_INDEPENDENT_CODE ON) + +# Objects shared between main and test library. On non-GL builds contains +# nothing so it's not even defined. +if(MAGNUM_TARGET_GL) + add_library(MagnumShadersObjects OBJECT + ${MagnumShaders_SRCS} + ${MagnumShaders_HEADERS} + ${MagnumShaders_PRIVATE_HEADERS}) + if(MAGNUM_BUILD_STATIC) + # On the static build we're importing the resources manually, so no need to + # have the implicit initializers as well. + set_property(SOURCE ${MagnumShaders_RCS} APPEND PROPERTY COMPILE_DEFINITIONS + "CORRADE_AUTOMATIC_INITIALIZER=CORRADE_NOOP" + "CORRADE_AUTOMATIC_FINALIZER=CORRADE_NOOP") + endif() + target_include_directories(MagnumShadersObjects PUBLIC + $ + $) + if(NOT MAGNUM_BUILD_STATIC) + target_compile_definitions(MagnumShadersObjects PRIVATE "MagnumShadersObjects_EXPORTS") + endif() + if(NOT MAGNUM_BUILD_STATIC OR MAGNUM_BUILD_STATIC_PIC) + set_target_properties(MagnumShadersObjects PROPERTIES POSITION_INDEPENDENT_CODE ON) + endif() + set(MagnumShadersObjects_OBJECTS $) +else() + set(MagnumShadersObjects_OBJECTS ) endif() # Main Shaders library add_library(MagnumShaders ${SHARED_OR_STATIC} - $ + ${MagnumShadersObjects_OBJECTS} ${MagnumShaders_GracefulAssert_SRCS}) set_target_properties(MagnumShaders PROPERTIES DEBUG_POSTFIX "-d") if(NOT MAGNUM_BUILD_STATIC) @@ -121,9 +132,10 @@ if(NOT MAGNUM_BUILD_STATIC) elseif(MAGNUM_BUILD_STATIC_PIC) set_target_properties(MagnumShaders PROPERTIES POSITION_INDEPENDENT_CODE ON) endif() -target_link_libraries(MagnumShaders PUBLIC - Magnum - MagnumGL) +target_link_libraries(MagnumShaders PUBLIC Magnum) +if(MAGNUM_TARGET_GL) + target_link_libraries(MagnumShaders PUBLIC MagnumGL) +endif() install(TARGETS MagnumShaders RUNTIME DESTINATION ${MAGNUM_BINARY_INSTALL_DIR} @@ -134,7 +146,7 @@ install(FILES ${MagnumShaders_HEADERS} DESTINATION ${MAGNUM_INCLUDE_INSTALL_DIR} if(MAGNUM_BUILD_TESTS) # Library with graceful assert for testing add_library(MagnumShadersTestLib ${SHARED_OR_STATIC} ${EXCLUDE_FROM_ALL_IF_TEST_TARGET} - $ + ${MagnumShadersObjects_OBJECTS} ${MagnumShaders_GracefulAssert_SRCS}) set_target_properties(MagnumShadersTestLib PROPERTIES DEBUG_POSTFIX "-d") target_compile_definitions(MagnumShadersTestLib PRIVATE @@ -142,9 +154,10 @@ if(MAGNUM_BUILD_TESTS) if(MAGNUM_BUILD_STATIC_PIC) set_target_properties(MagnumShadersTestLib PROPERTIES POSITION_INDEPENDENT_CODE ON) endif() - target_link_libraries(MagnumShadersTestLib PUBLIC - Magnum - MagnumGL) + target_link_libraries(MagnumShadersTestLib PUBLIC Magnum) + if(MAGNUM_TARGET_GL) + target_link_libraries(MagnumShadersTestLib PUBLIC MagnumGL) + endif() add_subdirectory(Test ${EXCLUDE_FROM_ALL_IF_TEST_TARGET}) endif() diff --git a/src/Magnum/Shaders/DistanceFieldVector.h b/src/Magnum/Shaders/DistanceFieldVector.h index fe4ef6cc9..a0dd5f08d 100644 --- a/src/Magnum/Shaders/DistanceFieldVector.h +++ b/src/Magnum/Shaders/DistanceFieldVector.h @@ -33,7 +33,7 @@ #include "Magnum/Magnum.h" #include "Magnum/Math/Color.h" -#ifdef MAGNUM_BUILD_DEPRECATED +#if defined(MAGNUM_TARGET_GL) && defined(MAGNUM_BUILD_DEPRECATED) #include #include "Magnum/Shaders/DistanceFieldVectorGL.h" @@ -247,7 +247,7 @@ struct DistanceFieldVectorMaterialUniform { #endif }; -#ifdef MAGNUM_BUILD_DEPRECATED +#if defined(MAGNUM_TARGET_GL) && defined(MAGNUM_BUILD_DEPRECATED) /** @brief @copybrief DistanceFieldVectorGL * @m_deprecated_since_latest Use @ref DistanceFieldVectorGL instead. */ diff --git a/src/Magnum/Shaders/DistanceFieldVectorGL.h b/src/Magnum/Shaders/DistanceFieldVectorGL.h index 8b25b2e08..0efcd19a9 100644 --- a/src/Magnum/Shaders/DistanceFieldVectorGL.h +++ b/src/Magnum/Shaders/DistanceFieldVectorGL.h @@ -27,11 +27,16 @@ DEALINGS IN THE SOFTWARE. */ +#ifdef MAGNUM_TARGET_GL /** @file * @brief Class @ref Magnum::Shaders::DistanceFieldVectorGL, typedef @ref Magnum::Shaders::DistanceFieldVectorGL2D, @ref Magnum::Shaders::DistanceFieldVectorGL3D * @m_since_latest */ +#endif + +#include "Magnum/configure.h" +#ifdef MAGNUM_TARGET_GL #include #include "Magnum/DimensionTraits.h" @@ -80,6 +85,10 @@ working on the framebuffer, you need to enable @image html shaders-distancefieldvector.png width=256px +@note This class is available only if Magnum is compiled with + @ref MAGNUM_TARGET_GL enabled (done by default). See @ref building-features + for more information. + @section Shaders-DistanceFieldVectorGL-usage Example usage Common mesh setup: @@ -883,12 +892,20 @@ template class DistanceFieldVectorGL::Compil /** @brief Two-dimensional distance field vector OpenGL shader @m_since_latest + +@note This typedef is available only if Magnum is compiled with + @ref MAGNUM_TARGET_GL enabled (done by default). See @ref building-features + for more information. */ typedef DistanceFieldVectorGL<2> DistanceFieldVectorGL2D; /** @brief Three-dimensional distance field vector OpenGL shader @m_since_latest + +@note This typedef is available only if Magnum is compiled with + @ref MAGNUM_TARGET_GL enabled (done by default). See @ref building-features + for more information. */ typedef DistanceFieldVectorGL<3> DistanceFieldVectorGL3D; @@ -906,5 +923,8 @@ namespace Implementation { #endif }} +#else +#error this header is available only in the OpenGL build +#endif #endif diff --git a/src/Magnum/Shaders/Flat.h b/src/Magnum/Shaders/Flat.h index 742fa945e..89ab63849 100644 --- a/src/Magnum/Shaders/Flat.h +++ b/src/Magnum/Shaders/Flat.h @@ -33,7 +33,7 @@ #include "Magnum/Magnum.h" #include "Magnum/Math/Color.h" -#ifdef MAGNUM_BUILD_DEPRECATED +#if defined(MAGNUM_TARGET_GL) && defined(MAGNUM_BUILD_DEPRECATED) #include #include "Magnum/Shaders/FlatGL.h" @@ -274,7 +274,7 @@ struct FlatMaterialUniform { #endif }; -#ifdef MAGNUM_BUILD_DEPRECATED +#if defined(MAGNUM_TARGET_GL) && defined(MAGNUM_BUILD_DEPRECATED) /** @brief @copybrief FlatGL * @m_deprecated_since_latest Use @ref FlatGL instead. */ diff --git a/src/Magnum/Shaders/FlatGL.h b/src/Magnum/Shaders/FlatGL.h index 6e0a92260..f3e7d7a79 100644 --- a/src/Magnum/Shaders/FlatGL.h +++ b/src/Magnum/Shaders/FlatGL.h @@ -27,11 +27,16 @@ DEALINGS IN THE SOFTWARE. */ +#ifdef MAGNUM_TARGET_GL /** @file * @brief Class @ref Magnum::Shaders::FlatGL, typedef @ref Magnum::Shaders::FlatGL2D, @ref Magnum::Shaders::FlatGL3D * @m_since_latest */ +#endif + +#include "Magnum/configure.h" +#ifdef MAGNUM_TARGET_GL #include #include "Magnum/DimensionTraits.h" @@ -85,6 +90,10 @@ configure the shader. @image html shaders-flat.png width=256px +@note This function is available only if Magnum is compiled with + @ref MAGNUM_TARGET_GL enabled (done by default). See @ref building-features + for more information. + @section Shaders-FlatGL-colored Colored rendering Common mesh setup: @@ -1590,12 +1599,20 @@ template class FlatGL::CompileState: public /** @brief 2D flat OpenGL shader @m_since_latest + +@note This typedef is available only if Magnum is compiled with + @ref MAGNUM_TARGET_GL enabled (done by default). See @ref building-features + for more information. */ typedef FlatGL<2> FlatGL2D; /** @brief 3D flat OpenGL shader @m_since_latest + +@note This typedef is available only if Magnum is compiled with + @ref MAGNUM_TARGET_GL enabled (done by default). See @ref building-features + for more information. */ typedef FlatGL<3> FlatGL3D; @@ -1613,5 +1630,8 @@ namespace Implementation { #endif }} +#else +#error this header is available only in the OpenGL build +#endif #endif diff --git a/src/Magnum/Shaders/Generic.h b/src/Magnum/Shaders/Generic.h index 31d836b2d..bd9c3cc84 100644 --- a/src/Magnum/Shaders/Generic.h +++ b/src/Magnum/Shaders/Generic.h @@ -34,7 +34,7 @@ #include "Magnum/Math/Matrix3.h" #include "Magnum/Math/Matrix4.h" -#ifdef MAGNUM_BUILD_DEPRECATED +#if defined(MAGNUM_TARGET_GL) && defined(MAGNUM_BUILD_DEPRECATED) #include #include "Magnum/Shaders/GenericGL.h" diff --git a/src/Magnum/Shaders/GenericGL.h b/src/Magnum/Shaders/GenericGL.h index 2229e1920..286985aae 100644 --- a/src/Magnum/Shaders/GenericGL.h +++ b/src/Magnum/Shaders/GenericGL.h @@ -27,11 +27,16 @@ DEALINGS IN THE SOFTWARE. */ +#ifdef MAGNUM_TARGET_GL /** @file * @brief Struct @ref Magnum::Shaders::GenericGL, typedef @ref Magnum::Shaders::GenericGL2D, @ref Magnum::Shaders::GenericGL3D * @m_since_latest */ +#endif + +#include "Magnum/configure.h" +#ifdef MAGNUM_TARGET_GL #include "Magnum/GL/Attribute.h" #include "Magnum/Shaders/Shaders.h" @@ -632,5 +637,8 @@ typedef CORRADE_DEPRECATED("use GenericGL3D instead") GenericGL3D Generic3D; #endif }} +#else +#error this header is available only in the OpenGL build +#endif #endif diff --git a/src/Magnum/Shaders/LineGL.h b/src/Magnum/Shaders/LineGL.h index 2e8bab90d..7c48af7ff 100644 --- a/src/Magnum/Shaders/LineGL.h +++ b/src/Magnum/Shaders/LineGL.h @@ -26,13 +26,16 @@ DEALINGS IN THE SOFTWARE. */ -#ifndef MAGNUM_TARGET_GLES2 +#if defined(MAGNUM_TARGET_GL) && !defined(MAGNUM_TARGET_GLES2) /** @file * @brief Class @ref Magnum::Shaders::LineGL, typedef @ref Magnum::Shaders::LineGL2D, @ref Magnum::Shaders::LineGL3D * @m_since_latest */ #endif +#include "Magnum/configure.h" + +#if defined(MAGNUM_TARGET_GL) && !defined(MAGNUM_TARGET_GLES2) #include #include "Magnum/DimensionTraits.h" @@ -41,7 +44,6 @@ #include "Magnum/Shaders/glShaderWrapper.h" #include "Magnum/Shaders/visibility.h" -#ifndef MAGNUM_TARGET_GLES2 namespace Magnum { namespace Shaders { namespace Implementation { @@ -72,6 +74,10 @@ styles, and antialiased independently of MSAA being used or not. @experimental +@note This class is available only if Magnum is compiled with + @ref MAGNUM_TARGET_GL enabled (done by default). See @ref building-features + for more information. + @requires_gl30 Extension @gl_extension{EXT,gpu_shader4} @requires_gles30 Requires integer support in shaders which is not available in OpenGL ES 2.0. @@ -1144,12 +1150,20 @@ template class LineGL::CompileState: public /** @brief 2D line OpenGL shader @m_since_latest + +@note This typedef is available only if Magnum is compiled with + @ref MAGNUM_TARGET_GL enabled (done by default). See @ref building-features + for more information. */ typedef LineGL<2> LineGL2D; /** @brief 3D LineGL OpenGL shader @m_since_latest + +@note This typedef is available only if Magnum is compiled with + @ref MAGNUM_TARGET_GL enabled (done by default). See @ref building-features + for more information. */ typedef LineGL<3> LineGL3D; @@ -1173,8 +1187,10 @@ namespace Implementation { #endif }} -#else +#elif defined(MAGNUM_TARGET_GLES2) #error this header is not available in the OpenGL ES 2.0 / WebGL 1.0 build +#else +#error this header is available only in the OpenGL build #endif #endif diff --git a/src/Magnum/Shaders/MeshVisualizer.h b/src/Magnum/Shaders/MeshVisualizer.h index a24282128..9da804828 100644 --- a/src/Magnum/Shaders/MeshVisualizer.h +++ b/src/Magnum/Shaders/MeshVisualizer.h @@ -34,7 +34,7 @@ #include "Magnum/Math/Color.h" #include "Magnum/Math/Matrix.h" -#ifdef MAGNUM_BUILD_DEPRECATED +#if defined(MAGNUM_TARGET_GL) && defined(MAGNUM_BUILD_DEPRECATED) #include #include "Magnum/Shaders/MeshVisualizerGL.h" @@ -598,7 +598,7 @@ struct MeshVisualizerMaterialUniform { #endif }; -#ifdef MAGNUM_BUILD_DEPRECATED +#if defined(MAGNUM_TARGET_GL) && defined(MAGNUM_BUILD_DEPRECATED) /** @brief @copybrief MeshVisualizerGL2D * @m_deprecated_since_latest Use @ref MeshVisualizerGL2D instead. */ diff --git a/src/Magnum/Shaders/MeshVisualizerGL.h b/src/Magnum/Shaders/MeshVisualizerGL.h index e8982887e..acf029b7a 100644 --- a/src/Magnum/Shaders/MeshVisualizerGL.h +++ b/src/Magnum/Shaders/MeshVisualizerGL.h @@ -27,11 +27,16 @@ DEALINGS IN THE SOFTWARE. */ +#ifdef MAGNUM_TARGET_GL /** @file * @brief Class @ref Magnum::Shaders::MeshVisualizerGL2D, @ref Magnum::Shaders::MeshVisualizerGL3D * @m_since_latest */ +#endif + +#include "Magnum/configure.h" +#ifdef MAGNUM_TARGET_GL #include #include @@ -180,6 +185,10 @@ behavior with nothing enabled. The shader is a 2D variant of @ref MeshVisualizerGL3D with mostly identical workflow. See its documentation for more information, workflows that differ are shown below. +@note This class is available only if Magnum is compiled with + @ref MAGNUM_TARGET_GL enabled (done by default). See @ref building-features + for more information. + @section Shaders-MeshVisualizerGL2D-instancing Instanced rendering Enabling @ref Flag::InstancedTransformation will turn the shader into an @@ -1421,6 +1430,10 @@ visualization or object/primitive ID visualization by passing an appropriate @ref Flag to @ref Configuration::setFlags() --- there's no default behavior with nothing enabled. +@note This class is available only if Magnum is compiled with + @ref MAGNUM_TARGET_GL enabled (done by default). See @ref building-features + for more information. + @section Shaders-MeshVisualizerGL3D-wireframe Wireframe visualization Wireframe visualization is done by enabling @ref Flag::Wireframe. It is done @@ -3420,5 +3433,8 @@ CORRADE_ENUMSET_OPERATORS(MeshVisualizerGL2D::Flags) CORRADE_ENUMSET_OPERATORS(MeshVisualizerGL3D::Flags) }} +#else +#error this header is available only in the OpenGL build +#endif #endif diff --git a/src/Magnum/Shaders/Phong.h b/src/Magnum/Shaders/Phong.h index 1001358af..2a24630f9 100644 --- a/src/Magnum/Shaders/Phong.h +++ b/src/Magnum/Shaders/Phong.h @@ -35,7 +35,7 @@ #include "Magnum/Math/Color.h" #include "Magnum/Math/Matrix.h" -#ifdef MAGNUM_BUILD_DEPRECATED +#if defined(MAGNUM_TARGET_GL) && defined(MAGNUM_BUILD_DEPRECATED) #include #include "Magnum/Shaders/PhongGL.h" @@ -549,7 +549,7 @@ struct PhongLightUniform { #endif }; -#ifdef MAGNUM_BUILD_DEPRECATED +#if defined(MAGNUM_TARGET_GL) && defined(MAGNUM_BUILD_DEPRECATED) /** @brief @copybrief PhongGL * @m_deprecated_since_latest Use @ref PhongGL instead. */ diff --git a/src/Magnum/Shaders/PhongGL.h b/src/Magnum/Shaders/PhongGL.h index 9ff67d802..10f672329 100644 --- a/src/Magnum/Shaders/PhongGL.h +++ b/src/Magnum/Shaders/PhongGL.h @@ -28,11 +28,16 @@ DEALINGS IN THE SOFTWARE. */ +#ifdef MAGNUM_TARGET_GL /** @file * @brief Class @ref Magnum::Shaders::PhongGL * @m_since_latest */ +#endif + +#include "Magnum/configure.h" +#ifdef MAGNUM_TARGET_GL #include #include @@ -56,6 +61,10 @@ shader. @image html shaders-phong.png width=256px +@note This class is available only if Magnum is compiled with + @ref MAGNUM_TARGET_GL enabled (done by default). See @ref building-features + for more information. + @section Shaders-PhongGL-colored Colored rendering Common mesh setup: @@ -2434,5 +2443,8 @@ MAGNUM_SHADERS_EXPORT Debug& operator<<(Debug& debug, PhongGL::Flags value); CORRADE_ENUMSET_OPERATORS(PhongGL::Flags) }} +#else +#error this header is available only in the OpenGL build +#endif #endif diff --git a/src/Magnum/Shaders/Shaders.h b/src/Magnum/Shaders/Shaders.h index 5717666f4..7b3f4a9a1 100644 --- a/src/Magnum/Shaders/Shaders.h +++ b/src/Magnum/Shaders/Shaders.h @@ -32,13 +32,17 @@ #include "Magnum/Types.h" -#ifdef MAGNUM_BUILD_DEPRECATED +#if defined(MAGNUM_TARGET_GL) && defined(MAGNUM_BUILD_DEPRECATED) #include #endif #ifndef DOXYGEN_GENERATING_OUTPUT namespace Magnum { namespace Shaders { +enum class LineCapStyle: UnsignedByte; +enum class LineJoinStyle: UnsignedByte; + +#ifdef MAGNUM_TARGET_GL template class DistanceFieldVectorGL; typedef DistanceFieldVectorGL<2> DistanceFieldVectorGL2D; typedef DistanceFieldVectorGL<3> DistanceFieldVectorGL3D; @@ -57,12 +61,9 @@ typedef CORRADE_DEPRECATED("use FlatGL2D instead") FlatGL2D Flat2D; typedef CORRADE_DEPRECATED("use FlatGL3D instead") FlatGL3D Flat3D; #endif -/* Generic is used only statically */ +/* GenericGL is used only statically */ #ifndef MAGNUM_TARGET_GLES2 -enum class LineCapStyle: UnsignedByte; -enum class LineJoinStyle: UnsignedByte; - template class LineGL; typedef LineGL<2> LineGL2D; typedef LineGL<3> LineGL3D; @@ -98,6 +99,7 @@ template using VertexColor CORRADE_DEPRECATED_ALIAS("use typedef CORRADE_DEPRECATED("use VertexColorGL2D instead") VertexColorGL2D VertexColor2D; typedef CORRADE_DEPRECATED("use VertexColorGL3D instead") VertexColorGL3D VertexColor3D; #endif +#endif }} #endif diff --git a/src/Magnum/Shaders/Test/CMakeLists.txt b/src/Magnum/Shaders/Test/CMakeLists.txt index aef455808..6f365db04 100644 --- a/src/Magnum/Shaders/Test/CMakeLists.txt +++ b/src/Magnum/Shaders/Test/CMakeLists.txt @@ -31,446 +31,381 @@ set(CMAKE_FOLDER "Magnum/Shaders/Test") corrade_add_test(ShadersDistanceFieldVectorTest DistanceFieldVectorTest.cpp LIBRARIES MagnumShaders) corrade_add_test(ShadersFlatTest FlatTest.cpp LIBRARIES MagnumShaders) corrade_add_test(ShadersGenericTest GenericTest.cpp LIBRARIES MagnumShaders) -corrade_add_test(ShadersGLShaderWrapperTest GLShaderWrapperTest.cpp LIBRARIES MagnumShaders) corrade_add_test(ShadersMeshVisualizerTest MeshVisualizerTest.cpp LIBRARIES MagnumShaders) corrade_add_test(ShadersPhongTest PhongTest.cpp LIBRARIES MagnumShaders) +corrade_add_test(ShadersLineTest LineTest.cpp LIBRARIES MagnumShadersTestLib) +target_compile_definitions(ShadersLineTest PRIVATE "CORRADE_GRACEFUL_ASSERT") corrade_add_test(ShadersVectorTest VectorTest.cpp LIBRARIES MagnumShaders) -# There's an underscore between GL and Test to disambiguate from GLTest, which -# is a common suffix used to mark tests that need a GL context. Ugly, I know. -corrade_add_test(ShadersDistanceFieldVectorGL_Test DistanceFieldVectorGL_Test.cpp LIBRARIES MagnumShaders) -corrade_add_test(ShadersFlatGL_Test FlatGL_Test.cpp LIBRARIES MagnumShadersTestLib) -corrade_add_test(ShadersGenericGL_Test GenericGL_Test.cpp LIBRARIES MagnumShaders) -corrade_add_test(ShadersMeshVisualizerGL_Test MeshVisualizerGL_Test.cpp LIBRARIES MagnumShadersTestLib) -corrade_add_test(ShadersPhongGL_Test PhongGL_Test.cpp LIBRARIES MagnumShadersTestLib) -corrade_add_test(ShadersVectorGL_Test VectorGL_Test.cpp LIBRARIES MagnumShaders) -corrade_add_test(ShadersVertexColorGL_Test VertexColorGL_Test.cpp LIBRARIES MagnumShaders) +if(MAGNUM_TARGET_GL) + corrade_add_test(ShadersGLShaderWrapperTest GLShaderWrapperTest.cpp LIBRARIES MagnumShaders) -if(NOT MAGNUM_TARGET_GLES2) - corrade_add_test(ShadersLineTest LineTest.cpp LIBRARIES MagnumShadersTestLib) - target_compile_definitions(ShadersLineTest PRIVATE "CORRADE_GRACEFUL_ASSERT") + # There's an underscore between GL and Test to disambiguate from GLTest, + # which is a common suffix used to mark tests that need a GL context. Ugly, + # I know. + corrade_add_test(ShadersDistanceFieldVectorGL_Test DistanceFieldVectorGL_Test.cpp LIBRARIES MagnumShaders) + corrade_add_test(ShadersFlatGL_Test FlatGL_Test.cpp LIBRARIES MagnumShadersTestLib) + corrade_add_test(ShadersGenericGL_Test GenericGL_Test.cpp LIBRARIES MagnumShaders) + corrade_add_test(ShadersMeshVisualizerGL_Test MeshVisualizerGL_Test.cpp LIBRARIES MagnumShadersTestLib) + corrade_add_test(ShadersPhongGL_Test PhongGL_Test.cpp LIBRARIES MagnumShadersTestLib) + corrade_add_test(ShadersVectorGL_Test VectorGL_Test.cpp LIBRARIES MagnumShaders) + corrade_add_test(ShadersVertexColorGL_Test VertexColorGL_Test.cpp LIBRARIES MagnumShaders) - corrade_add_test(ShadersLineGL_Test LineGL_Test.cpp LIBRARIES MagnumShaders) -endif() - -if(MAGNUM_BUILD_GL_TESTS) - # Otherwise CMake complains that Corrade::PluginManager is not found, wtf - find_package(Corrade REQUIRED PluginManager) - - if(CORRADE_TARGET_EMSCRIPTEN OR CORRADE_TARGET_ANDROID) - set(SHADERS_TEST_DIR ".") - else() - set(SHADERS_TEST_DIR ${CMAKE_CURRENT_SOURCE_DIR}) - endif() - - if(NOT MAGNUM_BUILD_PLUGINS_STATIC) - if(MAGNUM_WITH_ANYIMAGEIMPORTER) - set(ANYIMAGEIMPORTER_PLUGIN_FILENAME $) - endif() - if(MAGNUM_WITH_TGAIMPORTER) - set(TGAIMPORTER_PLUGIN_FILENAME $) - endif() + if(NOT MAGNUM_TARGET_GLES2) + corrade_add_test(ShadersLineGL_Test LineGL_Test.cpp LIBRARIES MagnumShaders) endif() - # First replace ${} variables, then $<> generator expressions - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/configure.h.cmake - ${CMAKE_CURRENT_BINARY_DIR}/configure.h.in) - file(GENERATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/$/configure.h - INPUT ${CMAKE_CURRENT_BINARY_DIR}/configure.h.in) + if(MAGNUM_BUILD_GL_TESTS) + # Otherwise CMake complains that Corrade::PluginManager is not found, + # wtf + find_package(Corrade REQUIRED PluginManager) - set(ShadersDistanceFieldVectorGLTest_SRCS DistanceFieldVectorGLTest.cpp) - if(CORRADE_TARGET_IOS) - list(APPEND ShadersDistanceFieldVectorGLTest_SRCS TestFiles VectorTestFiles) - endif() - corrade_add_test(ShadersDistanceFieldVectorGLTest ${ShadersDistanceFieldVectorGLTest_SRCS} - LIBRARIES - MagnumDebugTools - MagnumMeshTools - MagnumPrimitives - MagnumShadersTestLib - MagnumOpenGLTester - FILES - TestFiles/vector-distancefield.tga - - VectorTestFiles/defaults.tga - VectorTestFiles/defaults-distancefield.tga - VectorTestFiles/smooth0.1-2D.tga - VectorTestFiles/smooth0.1-3D.tga - VectorTestFiles/smooth0.2-2D.tga - VectorTestFiles/smooth0.2-3D.tga - VectorTestFiles/outline2D.tga - VectorTestFiles/outline3D.tga - VectorTestFiles/multidraw2D-distancefield.tga - VectorTestFiles/multidraw3D-distancefield.tga) - target_include_directories(ShadersDistanceFieldVectorGLTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/$) - if(MAGNUM_BUILD_PLUGINS_STATIC) - if(MAGNUM_WITH_ANYIMAGEIMPORTER) - target_link_libraries(ShadersDistanceFieldVectorGLTest PRIVATE AnyImageImporter) - endif() - if(MAGNUM_WITH_TGAIMPORTER) - target_link_libraries(ShadersDistanceFieldVectorGLTest PRIVATE TgaImporter) - endif() - else() - # So the plugins get properly built when building the test - if(MAGNUM_WITH_ANYIMAGEIMPORTER) - add_dependencies(ShadersDistanceFieldVectorGLTest AnyImageImporter) - endif() - if(MAGNUM_WITH_TGAIMPORTER) - add_dependencies(ShadersDistanceFieldVectorGLTest TgaImporter) + if(CORRADE_TARGET_EMSCRIPTEN OR CORRADE_TARGET_ANDROID) + set(SHADERS_TEST_DIR ".") + else() + set(SHADERS_TEST_DIR ${CMAKE_CURRENT_SOURCE_DIR}) endif() - endif() - - set(ShadersFlatGLTest_SRCS FlatGLTest.cpp) - if(CORRADE_TARGET_IOS) - list(APPEND ShadersFlatGLTest_SRCS TestFiles FlatTestFiles) - endif() - corrade_add_test(ShadersFlatGLTest ${ShadersFlatGLTest_SRCS} - LIBRARIES - MagnumDebugTools - MagnumMeshTools - MagnumPrimitives - MagnumShadersTestLib - MagnumOpenGLTester - FILES - TestFiles/diffuse-alpha-texture.tga - TestFiles/diffuse-texture.tga - TestFiles/alpha-mask1.0.tga - TestFiles/skinning.tga - TestFiles/skinning-default.tga - TestFiles/skinning-instanced.tga - TestFiles/skinning-multi.tga - FlatTestFiles/colored2D.tga - FlatTestFiles/colored3D.tga - FlatTestFiles/defaults.tga - FlatTestFiles/instanced2D.tga - FlatTestFiles/instanced3D.tga - FlatTestFiles/instanced-textured2D.tga - FlatTestFiles/instanced-textured3D.tga - FlatTestFiles/textured2D.tga - FlatTestFiles/textured3D.tga - FlatTestFiles/textured2D-alpha.tga - FlatTestFiles/textured3D-alpha.tga - FlatTestFiles/textured2D-alpha-mask0.5.tga - FlatTestFiles/textured3D-alpha-mask0.5.tga - FlatTestFiles/vertexColor2D.tga - FlatTestFiles/vertexColor3D.tga - FlatTestFiles/multidraw2D.tga - FlatTestFiles/multidraw3D.tga - FlatTestFiles/multidraw-textured2D.tga - FlatTestFiles/multidraw-textured3D.tga) - target_include_directories(ShadersFlatGLTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/$) - if(MAGNUM_BUILD_PLUGINS_STATIC) - if(MAGNUM_WITH_ANYIMAGEIMPORTER) - target_link_libraries(ShadersFlatGLTest PRIVATE AnyImageImporter) - endif() - if(MAGNUM_WITH_TGAIMPORTER) - target_link_libraries(ShadersFlatGLTest PRIVATE TgaImporter) - endif() - else() - # So the plugins get properly built when building the test - if(MAGNUM_WITH_ANYIMAGEIMPORTER) - add_dependencies(ShadersFlatGLTest AnyImageImporter) - endif() - if(MAGNUM_WITH_TGAIMPORTER) - add_dependencies(ShadersFlatGLTest TgaImporter) + if(NOT MAGNUM_BUILD_PLUGINS_STATIC) + if(MAGNUM_WITH_ANYIMAGEIMPORTER) + set(ANYIMAGEIMPORTER_PLUGIN_FILENAME $) + endif() + if(MAGNUM_WITH_TGAIMPORTER) + set(TGAIMPORTER_PLUGIN_FILENAME $) + endif() endif() - endif() - corrade_add_test(ShadersGLShaderWrapperGLTest GLShaderWrapperGLTest.cpp LIBRARIES MagnumShaders MagnumOpenGLTester) + # First replace ${} variables, then $<> generator expressions + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/configure.h.cmake + ${CMAKE_CURRENT_BINARY_DIR}/configure.h.in) + file(GENERATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/$/configure.h + INPUT ${CMAKE_CURRENT_BINARY_DIR}/configure.h.in) - set(ShadersMeshVisualizerGLTest_SRCS MeshVisualizerGLTest.cpp) - if(CORRADE_TARGET_IOS) - list(APPEND ShadersMeshVisualizerGLTest_SRCS FlatTestFiles MeshVisualizerTestFiles) - endif() - corrade_add_test(ShadersMeshVisualizerGLTest ${ShadersMeshVisualizerGLTest_SRCS} - LIBRARIES - MagnumDebugTools - MagnumMeshTools - MagnumPrimitives - MagnumShadersTestLib - MagnumOpenGLTester - FILES - MeshVisualizerTestFiles/bitangents-from-tangents.tga - MeshVisualizerTestFiles/defaults-instancedobjectid2D.tga - MeshVisualizerTestFiles/defaults-instancedobjectid3D.tga - MeshVisualizerTestFiles/defaults-objectid2D.tga - MeshVisualizerTestFiles/defaults-objectid3D.tga - MeshVisualizerTestFiles/defaults-primitiveid2D.tga - MeshVisualizerTestFiles/defaults-primitiveid3D.tga - MeshVisualizerTestFiles/defaults-tbn.tga - MeshVisualizerTestFiles/defaults-vertexid2D.tga - MeshVisualizerTestFiles/defaults-vertexid3D.tga - MeshVisualizerTestFiles/defaults-wireframe2D.tga - MeshVisualizerTestFiles/defaults-wireframe3D.tga - MeshVisualizerTestFiles/instancedobjectid2D.tga - MeshVisualizerTestFiles/instancedobjectid3D.tga - MeshVisualizerTestFiles/objectid-tn.tga - MeshVisualizerTestFiles/objectid2D.tga - MeshVisualizerTestFiles/objectid3D.tga - MeshVisualizerTestFiles/objectidtexture2D.tga - MeshVisualizerTestFiles/objectidtexture3D.tga - MeshVisualizerTestFiles/primitiveid-tn.tga - MeshVisualizerTestFiles/primitiveid2D.tga - MeshVisualizerTestFiles/primitiveid3D.tga - MeshVisualizerTestFiles/tbn-wide.tga - MeshVisualizerTestFiles/tbn.tga - MeshVisualizerTestFiles/vertexid-tn.tga - MeshVisualizerTestFiles/vertexid2D.tga - MeshVisualizerTestFiles/vertexid3D.tga - MeshVisualizerTestFiles/wireframe-nogeo2D.tga - MeshVisualizerTestFiles/wireframe-nogeo3D.tga - MeshVisualizerTestFiles/wireframe-instancedobjectid2D.tga - MeshVisualizerTestFiles/wireframe-instancedobjectid3D.tga - MeshVisualizerTestFiles/wireframe-nogeo-instancedobjectid2D.tga - MeshVisualizerTestFiles/wireframe-nogeo-instancedobjectid3D.tga - MeshVisualizerTestFiles/wireframe-objectidtexture2D.tga - MeshVisualizerTestFiles/wireframe-objectidtexture3D.tga - MeshVisualizerTestFiles/wireframe-perspective.tga - MeshVisualizerTestFiles/wireframe-primitiveid-tn.tga - MeshVisualizerTestFiles/wireframe-tn-smooth.tga - MeshVisualizerTestFiles/wireframe-vertexid2D.tga - MeshVisualizerTestFiles/wireframe-vertexid3D.tga - MeshVisualizerTestFiles/wireframe-wide2D.tga - MeshVisualizerTestFiles/wireframe-wide3D.tga - MeshVisualizerTestFiles/wireframe2D.tga - MeshVisualizerTestFiles/wireframe3D.tga - MeshVisualizerTestFiles/instanced-wireframe2D.tga - MeshVisualizerTestFiles/instanced-wireframe3D.tga - MeshVisualizerTestFiles/instanced-wireframe-nogeo2D.tga - MeshVisualizerTestFiles/instanced-wireframe-nogeo3D.tga - MeshVisualizerTestFiles/instanced-wireframe-tbn3D.tga - MeshVisualizerTestFiles/instanced-vertexid2D.tga - MeshVisualizerTestFiles/instanced-vertexid3D.tga - MeshVisualizerTestFiles/instanced-instancedobjectid2D.tga - MeshVisualizerTestFiles/instanced-instancedobjectid3D.tga - MeshVisualizerTestFiles/instanced-instancedobjectidtexture2D.tga - MeshVisualizerTestFiles/instanced-instancedobjectidtexture3D.tga - MeshVisualizerTestFiles/instanced-objectidtexture2D.tga - MeshVisualizerTestFiles/instanced-objectidtexture3D.tga - MeshVisualizerTestFiles/multidraw-wireframe2D.tga - MeshVisualizerTestFiles/multidraw-wireframe3D.tga - MeshVisualizerTestFiles/multidraw-wireframe-tbn3D.tga - MeshVisualizerTestFiles/multidraw-wireframe-nogeo2D.tga - MeshVisualizerTestFiles/multidraw-wireframe-nogeo3D.tga - MeshVisualizerTestFiles/multidraw-vertexid2D.tga - MeshVisualizerTestFiles/multidraw-vertexid3D.tga - MeshVisualizerTestFiles/multidraw-instancedobjectid2D.tga - MeshVisualizerTestFiles/multidraw-instancedobjectid3D.tga - MeshVisualizerTestFiles/multidraw-objectidtexture2D.tga - MeshVisualizerTestFiles/multidraw-objectidtexture3D.tga - MeshVisualizerTestFiles/skinning.tga - MeshVisualizerTestFiles/skinning-default.tga - MeshVisualizerTestFiles/skinning-instanced.tga - MeshVisualizerTestFiles/skinning-multi.tga) - target_include_directories(ShadersMeshVisualizerGLTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/$) - if(MAGNUM_BUILD_PLUGINS_STATIC) - if(MAGNUM_WITH_ANYIMAGEIMPORTER) - target_link_libraries(ShadersMeshVisualizerGLTest PRIVATE AnyImageImporter) - endif() - if(MAGNUM_WITH_TGAIMPORTER) - target_link_libraries(ShadersMeshVisualizerGLTest PRIVATE TgaImporter) - endif() - else() - # So the plugins get properly built when building the test - if(MAGNUM_WITH_ANYIMAGEIMPORTER) - add_dependencies(ShadersMeshVisualizerGLTest AnyImageImporter) - endif() - if(MAGNUM_WITH_TGAIMPORTER) - add_dependencies(ShadersMeshVisualizerGLTest TgaImporter) + set(ShadersDistanceFieldVectorGLTest_SRCS DistanceFieldVectorGLTest.cpp) + if(CORRADE_TARGET_IOS) + list(APPEND ShadersDistanceFieldVectorGLTest_SRCS TestFiles VectorTestFiles) endif() - endif() - - set(ShadersPhongGLTest_SRCS PhongGLTest.cpp) - if(CORRADE_TARGET_IOS) - list(APPEND ShadersPhongGLTest_SRCS TestFiles PhongTestFiles FlatTestFiles) - endif() - corrade_add_test(ShadersPhongGLTest ${ShadersPhongGLTest_SRCS} - LIBRARIES - MagnumDebugTools - MagnumMeshTools - MagnumPrimitives - MagnumShadersTestLib - MagnumOpenGLTester - FILES - TestFiles/alpha-texture.tga - TestFiles/ambient-texture.tga - TestFiles/diffuse-alpha-texture.tga - TestFiles/diffuse-texture.tga - TestFiles/normal-texture.tga - TestFiles/specular-texture.tga - TestFiles/alpha-mask1.0.tga - TestFiles/skinning.tga - TestFiles/skinning-default.tga - TestFiles/skinning-instanced.tga - TestFiles/skinning-multi.tga - - PhongTestFiles/colored.tga - PhongTestFiles/defaults.tga - PhongTestFiles/double-sided.tga - PhongTestFiles/instanced.tga - PhongTestFiles/instanced-textured.tga - PhongTestFiles/instanced-normal.tga - PhongTestFiles/low-light-angle.tga - PhongTestFiles/shininess-no-specular.tga - PhongTestFiles/shininess0-overflow.tga - PhongTestFiles/shininess0.tga - PhongTestFiles/shininess10.tga - PhongTestFiles/shininess80.tga - PhongTestFiles/textured-ambient.tga - PhongTestFiles/textured-diffuse-alpha.tga - PhongTestFiles/textured-diffuse-alpha-mask0.5.tga - PhongTestFiles/textured-diffuse-alpha.tga - PhongTestFiles/textured-diffuse.tga - PhongTestFiles/textured-diffuse-transformed.tga - PhongTestFiles/textured-normal.tga - PhongTestFiles/textured-normal-left.tga - PhongTestFiles/textured-normal0.0.tga - PhongTestFiles/textured-normal0.5.tga - PhongTestFiles/textured-specular.tga - PhongTestFiles/textured.tga - PhongTestFiles/vertexColor.tga - PhongTestFiles/light-directional-intensity2.tga - PhongTestFiles/light-directional.tga - PhongTestFiles/light-none.tga - PhongTestFiles/light-point-attenuated-specular.tga - PhongTestFiles/light-point-intensity10-range1.0.tga - PhongTestFiles/light-point-range1.5.tga - PhongTestFiles/light-point-specular-color.tga - PhongTestFiles/light-point.tga - PhongTestFiles/multidraw.tga - PhongTestFiles/multidraw-textured.tga + corrade_add_test(ShadersDistanceFieldVectorGLTest ${ShadersDistanceFieldVectorGLTest_SRCS} + LIBRARIES + MagnumDebugTools + MagnumMeshTools + MagnumPrimitives + MagnumShadersTestLib + MagnumOpenGLTester + FILES + TestFiles/vector-distancefield.tga - # For zero lights test (equivalency to Flat3D) - FlatTestFiles/textured3D-alpha-mask0.5.tga) - target_include_directories(ShadersPhongGLTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/$) - if(MAGNUM_BUILD_PLUGINS_STATIC) - if(MAGNUM_WITH_ANYIMAGEIMPORTER) - target_link_libraries(ShadersPhongGLTest PRIVATE AnyImageImporter) - endif() - if(MAGNUM_WITH_TGAIMPORTER) - target_link_libraries(ShadersPhongGLTest PRIVATE TgaImporter) + VectorTestFiles/defaults.tga + VectorTestFiles/defaults-distancefield.tga + VectorTestFiles/smooth0.1-2D.tga + VectorTestFiles/smooth0.1-3D.tga + VectorTestFiles/smooth0.2-2D.tga + VectorTestFiles/smooth0.2-3D.tga + VectorTestFiles/outline2D.tga + VectorTestFiles/outline3D.tga + VectorTestFiles/multidraw2D-distancefield.tga + VectorTestFiles/multidraw3D-distancefield.tga) + target_include_directories(ShadersDistanceFieldVectorGLTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/$) + if(MAGNUM_BUILD_PLUGINS_STATIC) + if(MAGNUM_WITH_ANYIMAGEIMPORTER) + target_link_libraries(ShadersDistanceFieldVectorGLTest PRIVATE AnyImageImporter) + endif() + if(MAGNUM_WITH_TGAIMPORTER) + target_link_libraries(ShadersDistanceFieldVectorGLTest PRIVATE TgaImporter) + endif() + else() + # So the plugins get properly built when building the test + if(MAGNUM_WITH_ANYIMAGEIMPORTER) + add_dependencies(ShadersDistanceFieldVectorGLTest AnyImageImporter) + endif() + if(MAGNUM_WITH_TGAIMPORTER) + add_dependencies(ShadersDistanceFieldVectorGLTest TgaImporter) + endif() endif() - else() - # So the plugins get properly built when building the test - if(MAGNUM_WITH_ANYIMAGEIMPORTER) - add_dependencies(ShadersPhongGLTest AnyImageImporter) + + set(ShadersFlatGLTest_SRCS FlatGLTest.cpp) + if(CORRADE_TARGET_IOS) + list(APPEND ShadersFlatGLTest_SRCS TestFiles FlatTestFiles) endif() - if(MAGNUM_WITH_TGAIMPORTER) - add_dependencies(ShadersPhongGLTest TgaImporter) + corrade_add_test(ShadersFlatGLTest ${ShadersFlatGLTest_SRCS} + LIBRARIES + MagnumDebugTools + MagnumMeshTools + MagnumPrimitives + MagnumShadersTestLib + MagnumOpenGLTester + FILES + TestFiles/diffuse-alpha-texture.tga + TestFiles/diffuse-texture.tga + TestFiles/alpha-mask1.0.tga + TestFiles/skinning.tga + TestFiles/skinning-default.tga + TestFiles/skinning-instanced.tga + TestFiles/skinning-multi.tga + + FlatTestFiles/colored2D.tga + FlatTestFiles/colored3D.tga + FlatTestFiles/defaults.tga + FlatTestFiles/instanced2D.tga + FlatTestFiles/instanced3D.tga + FlatTestFiles/instanced-textured2D.tga + FlatTestFiles/instanced-textured3D.tga + FlatTestFiles/textured2D.tga + FlatTestFiles/textured3D.tga + FlatTestFiles/textured2D-alpha.tga + FlatTestFiles/textured3D-alpha.tga + FlatTestFiles/textured2D-alpha-mask0.5.tga + FlatTestFiles/textured3D-alpha-mask0.5.tga + FlatTestFiles/vertexColor2D.tga + FlatTestFiles/vertexColor3D.tga + FlatTestFiles/multidraw2D.tga + FlatTestFiles/multidraw3D.tga + FlatTestFiles/multidraw-textured2D.tga + FlatTestFiles/multidraw-textured3D.tga) + target_include_directories(ShadersFlatGLTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/$) + if(MAGNUM_BUILD_PLUGINS_STATIC) + if(MAGNUM_WITH_ANYIMAGEIMPORTER) + target_link_libraries(ShadersFlatGLTest PRIVATE AnyImageImporter) + endif() + if(MAGNUM_WITH_TGAIMPORTER) + target_link_libraries(ShadersFlatGLTest PRIVATE TgaImporter) + endif() + else() + # So the plugins get properly built when building the test + if(MAGNUM_WITH_ANYIMAGEIMPORTER) + add_dependencies(ShadersFlatGLTest AnyImageImporter) + endif() + if(MAGNUM_WITH_TGAIMPORTER) + add_dependencies(ShadersFlatGLTest TgaImporter) + endif() endif() - endif() - set(ShadersVectorGLTest_SRCS VectorGLTest.cpp) - if(CORRADE_TARGET_IOS) - list(APPEND ShadersVectorGLTest_SRCS TestFiles VectorTestFiles) - endif() - corrade_add_test(ShadersVectorGLTest ${ShadersVectorGLTest_SRCS} - LIBRARIES - MagnumDebugTools - MagnumMeshTools - MagnumPrimitives - MagnumShadersTestLib - MagnumOpenGLTester - FILES - TestFiles/vector.tga + corrade_add_test(ShadersGLShaderWrapperGLTest GLShaderWrapperGLTest.cpp LIBRARIES MagnumShaders MagnumOpenGLTester) - VectorTestFiles/defaults.tga - VectorTestFiles/vector2D.tga - VectorTestFiles/vector3D.tga - VectorTestFiles/multidraw2D.tga - VectorTestFiles/multidraw3D.tga) - target_include_directories(ShadersVectorGLTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/$) - if(MAGNUM_BUILD_PLUGINS_STATIC) - if(MAGNUM_WITH_ANYIMAGEIMPORTER) - target_link_libraries(ShadersVectorGLTest PRIVATE AnyImageImporter) - endif() - if(MAGNUM_WITH_TGAIMPORTER) - target_link_libraries(ShadersVectorGLTest PRIVATE TgaImporter) + set(ShadersMeshVisualizerGLTest_SRCS MeshVisualizerGLTest.cpp) + if(CORRADE_TARGET_IOS) + list(APPEND ShadersMeshVisualizerGLTest_SRCS FlatTestFiles MeshVisualizerTestFiles) endif() - else() - # So the plugins get properly built when building the test - if(MAGNUM_WITH_ANYIMAGEIMPORTER) - add_dependencies(ShadersVectorGLTest AnyImageImporter) + corrade_add_test(ShadersMeshVisualizerGLTest ${ShadersMeshVisualizerGLTest_SRCS} + LIBRARIES + MagnumDebugTools + MagnumMeshTools + MagnumPrimitives + MagnumShadersTestLib + MagnumOpenGLTester + FILES + MeshVisualizerTestFiles/bitangents-from-tangents.tga + MeshVisualizerTestFiles/defaults-instancedobjectid2D.tga + MeshVisualizerTestFiles/defaults-instancedobjectid3D.tga + MeshVisualizerTestFiles/defaults-objectid2D.tga + MeshVisualizerTestFiles/defaults-objectid3D.tga + MeshVisualizerTestFiles/defaults-primitiveid2D.tga + MeshVisualizerTestFiles/defaults-primitiveid3D.tga + MeshVisualizerTestFiles/defaults-tbn.tga + MeshVisualizerTestFiles/defaults-vertexid2D.tga + MeshVisualizerTestFiles/defaults-vertexid3D.tga + MeshVisualizerTestFiles/defaults-wireframe2D.tga + MeshVisualizerTestFiles/defaults-wireframe3D.tga + MeshVisualizerTestFiles/instancedobjectid2D.tga + MeshVisualizerTestFiles/instancedobjectid3D.tga + MeshVisualizerTestFiles/objectid-tn.tga + MeshVisualizerTestFiles/objectid2D.tga + MeshVisualizerTestFiles/objectid3D.tga + MeshVisualizerTestFiles/objectidtexture2D.tga + MeshVisualizerTestFiles/objectidtexture3D.tga + MeshVisualizerTestFiles/primitiveid-tn.tga + MeshVisualizerTestFiles/primitiveid2D.tga + MeshVisualizerTestFiles/primitiveid3D.tga + MeshVisualizerTestFiles/tbn-wide.tga + MeshVisualizerTestFiles/tbn.tga + MeshVisualizerTestFiles/vertexid-tn.tga + MeshVisualizerTestFiles/vertexid2D.tga + MeshVisualizerTestFiles/vertexid3D.tga + MeshVisualizerTestFiles/wireframe-nogeo2D.tga + MeshVisualizerTestFiles/wireframe-nogeo3D.tga + MeshVisualizerTestFiles/wireframe-instancedobjectid2D.tga + MeshVisualizerTestFiles/wireframe-instancedobjectid3D.tga + MeshVisualizerTestFiles/wireframe-nogeo-instancedobjectid2D.tga + MeshVisualizerTestFiles/wireframe-nogeo-instancedobjectid3D.tga + MeshVisualizerTestFiles/wireframe-objectidtexture2D.tga + MeshVisualizerTestFiles/wireframe-objectidtexture3D.tga + MeshVisualizerTestFiles/wireframe-perspective.tga + MeshVisualizerTestFiles/wireframe-primitiveid-tn.tga + MeshVisualizerTestFiles/wireframe-tn-smooth.tga + MeshVisualizerTestFiles/wireframe-vertexid2D.tga + MeshVisualizerTestFiles/wireframe-vertexid3D.tga + MeshVisualizerTestFiles/wireframe-wide2D.tga + MeshVisualizerTestFiles/wireframe-wide3D.tga + MeshVisualizerTestFiles/wireframe2D.tga + MeshVisualizerTestFiles/wireframe3D.tga + MeshVisualizerTestFiles/instanced-wireframe2D.tga + MeshVisualizerTestFiles/instanced-wireframe3D.tga + MeshVisualizerTestFiles/instanced-wireframe-nogeo2D.tga + MeshVisualizerTestFiles/instanced-wireframe-nogeo3D.tga + MeshVisualizerTestFiles/instanced-wireframe-tbn3D.tga + MeshVisualizerTestFiles/instanced-vertexid2D.tga + MeshVisualizerTestFiles/instanced-vertexid3D.tga + MeshVisualizerTestFiles/instanced-instancedobjectid2D.tga + MeshVisualizerTestFiles/instanced-instancedobjectid3D.tga + MeshVisualizerTestFiles/instanced-instancedobjectidtexture2D.tga + MeshVisualizerTestFiles/instanced-instancedobjectidtexture3D.tga + MeshVisualizerTestFiles/instanced-objectidtexture2D.tga + MeshVisualizerTestFiles/instanced-objectidtexture3D.tga + MeshVisualizerTestFiles/multidraw-wireframe2D.tga + MeshVisualizerTestFiles/multidraw-wireframe3D.tga + MeshVisualizerTestFiles/multidraw-wireframe-tbn3D.tga + MeshVisualizerTestFiles/multidraw-wireframe-nogeo2D.tga + MeshVisualizerTestFiles/multidraw-wireframe-nogeo3D.tga + MeshVisualizerTestFiles/multidraw-vertexid2D.tga + MeshVisualizerTestFiles/multidraw-vertexid3D.tga + MeshVisualizerTestFiles/multidraw-instancedobjectid2D.tga + MeshVisualizerTestFiles/multidraw-instancedobjectid3D.tga + MeshVisualizerTestFiles/multidraw-objectidtexture2D.tga + MeshVisualizerTestFiles/multidraw-objectidtexture3D.tga + MeshVisualizerTestFiles/skinning.tga + MeshVisualizerTestFiles/skinning-default.tga + MeshVisualizerTestFiles/skinning-instanced.tga + MeshVisualizerTestFiles/skinning-multi.tga) + target_include_directories(ShadersMeshVisualizerGLTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/$) + if(MAGNUM_BUILD_PLUGINS_STATIC) + if(MAGNUM_WITH_ANYIMAGEIMPORTER) + target_link_libraries(ShadersMeshVisualizerGLTest PRIVATE AnyImageImporter) + endif() + if(MAGNUM_WITH_TGAIMPORTER) + target_link_libraries(ShadersMeshVisualizerGLTest PRIVATE TgaImporter) + endif() + else() + # So the plugins get properly built when building the test + if(MAGNUM_WITH_ANYIMAGEIMPORTER) + add_dependencies(ShadersMeshVisualizerGLTest AnyImageImporter) + endif() + if(MAGNUM_WITH_TGAIMPORTER) + add_dependencies(ShadersMeshVisualizerGLTest TgaImporter) + endif() endif() - if(MAGNUM_WITH_TGAIMPORTER) - add_dependencies(ShadersVectorGLTest TgaImporter) + + set(ShadersPhongGLTest_SRCS PhongGLTest.cpp) + if(CORRADE_TARGET_IOS) + list(APPEND ShadersPhongGLTest_SRCS TestFiles PhongTestFiles FlatTestFiles) endif() - endif() + corrade_add_test(ShadersPhongGLTest ${ShadersPhongGLTest_SRCS} + LIBRARIES + MagnumDebugTools + MagnumMeshTools + MagnumPrimitives + MagnumShadersTestLib + MagnumOpenGLTester + FILES + TestFiles/alpha-texture.tga + TestFiles/ambient-texture.tga + TestFiles/diffuse-alpha-texture.tga + TestFiles/diffuse-texture.tga + TestFiles/normal-texture.tga + TestFiles/specular-texture.tga + TestFiles/alpha-mask1.0.tga + TestFiles/skinning.tga + TestFiles/skinning-default.tga + TestFiles/skinning-instanced.tga + TestFiles/skinning-multi.tga - set(ShadersVertexColorGLTest_SRCS VertexColorGLTest.cpp) - if(CORRADE_TARGET_IOS) - list(APPEND ShadersVertexColorGLTest_SRCS FlatTestFiles VertexColorTestFiles) - endif() - corrade_add_test(ShadersVertexColorGLTest ${ShadersVertexColorGLTest_SRCS} - LIBRARIES - MagnumDebugTools - MagnumMeshTools - MagnumPrimitives - MagnumShadersTestLib - MagnumOpenGLTester - FILES - FlatTestFiles/defaults.tga + PhongTestFiles/colored.tga + PhongTestFiles/defaults.tga + PhongTestFiles/double-sided.tga + PhongTestFiles/instanced.tga + PhongTestFiles/instanced-textured.tga + PhongTestFiles/instanced-normal.tga + PhongTestFiles/low-light-angle.tga + PhongTestFiles/shininess-no-specular.tga + PhongTestFiles/shininess0-overflow.tga + PhongTestFiles/shininess0.tga + PhongTestFiles/shininess10.tga + PhongTestFiles/shininess80.tga + PhongTestFiles/textured-ambient.tga + PhongTestFiles/textured-diffuse-alpha.tga + PhongTestFiles/textured-diffuse-alpha-mask0.5.tga + PhongTestFiles/textured-diffuse-alpha.tga + PhongTestFiles/textured-diffuse.tga + PhongTestFiles/textured-diffuse-transformed.tga + PhongTestFiles/textured-normal.tga + PhongTestFiles/textured-normal-left.tga + PhongTestFiles/textured-normal0.0.tga + PhongTestFiles/textured-normal0.5.tga + PhongTestFiles/textured-specular.tga + PhongTestFiles/textured.tga + PhongTestFiles/vertexColor.tga + PhongTestFiles/light-directional-intensity2.tga + PhongTestFiles/light-directional.tga + PhongTestFiles/light-none.tga + PhongTestFiles/light-point-attenuated-specular.tga + PhongTestFiles/light-point-intensity10-range1.0.tga + PhongTestFiles/light-point-range1.5.tga + PhongTestFiles/light-point-specular-color.tga + PhongTestFiles/light-point.tga + PhongTestFiles/multidraw.tga + PhongTestFiles/multidraw-textured.tga - VertexColorTestFiles/vertexColor2D.tga - VertexColorTestFiles/vertexColor3D.tga - VertexColorTestFiles/multidraw2D.tga - VertexColorTestFiles/multidraw3D.tga) - target_include_directories(ShadersVertexColorGLTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/$) - if(MAGNUM_BUILD_PLUGINS_STATIC) - if(MAGNUM_WITH_ANYIMAGEIMPORTER) - target_link_libraries(ShadersVertexColorGLTest PRIVATE AnyImageImporter) - endif() - if(MAGNUM_WITH_TGAIMPORTER) - target_link_libraries(ShadersVertexColorGLTest PRIVATE TgaImporter) - endif() - else() - # So the plugins get properly built when building the test - if(MAGNUM_WITH_ANYIMAGEIMPORTER) - add_dependencies(ShadersVertexColorGLTest AnyImageImporter) - endif() - if(MAGNUM_WITH_TGAIMPORTER) - add_dependencies(ShadersVertexColorGLTest TgaImporter) + # For zero lights test (equivalency to Flat3D) + FlatTestFiles/textured3D-alpha-mask0.5.tga) + target_include_directories(ShadersPhongGLTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/$) + if(MAGNUM_BUILD_PLUGINS_STATIC) + if(MAGNUM_WITH_ANYIMAGEIMPORTER) + target_link_libraries(ShadersPhongGLTest PRIVATE AnyImageImporter) + endif() + if(MAGNUM_WITH_TGAIMPORTER) + target_link_libraries(ShadersPhongGLTest PRIVATE TgaImporter) + endif() + else() + # So the plugins get properly built when building the test + if(MAGNUM_WITH_ANYIMAGEIMPORTER) + add_dependencies(ShadersPhongGLTest AnyImageImporter) + endif() + if(MAGNUM_WITH_TGAIMPORTER) + add_dependencies(ShadersPhongGLTest TgaImporter) + endif() endif() - endif() - corrade_add_test(ShadersGLBenchmark ShadersGLBenchmark.cpp - LIBRARIES - MagnumDebugTools - MagnumMeshTools - MagnumPrimitives - MagnumShaders - MagnumOpenGLTester - FILES - BenchmarkFiles/trivial.tga) - target_include_directories(ShadersGLBenchmark PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/$) - if(MAGNUM_BUILD_PLUGINS_STATIC) - if(MAGNUM_WITH_ANYIMAGEIMPORTER) - target_link_libraries(ShadersGLBenchmark PRIVATE AnyImageImporter) - endif() - if(MAGNUM_WITH_TGAIMPORTER) - target_link_libraries(ShadersGLBenchmark PRIVATE TgaImporter) + set(ShadersVectorGLTest_SRCS VectorGLTest.cpp) + if(CORRADE_TARGET_IOS) + list(APPEND ShadersVectorGLTest_SRCS TestFiles VectorTestFiles) endif() - endif() + corrade_add_test(ShadersVectorGLTest ${ShadersVectorGLTest_SRCS} + LIBRARIES + MagnumDebugTools + MagnumMeshTools + MagnumPrimitives + MagnumShadersTestLib + MagnumOpenGLTester + FILES + TestFiles/vector.tga - if(CORRADE_TARGET_IOS) - set_source_files_properties( - TestFiles - VectorTestFiles - FlatTestFiles - MeshVisualizerTestFiles - PhongTestFiles - VectorTestFiles - VertexColorTestFiles - PROPERTIES MACOSX_PACKAGE_LOCATION Resources) - endif() + VectorTestFiles/defaults.tga + VectorTestFiles/vector2D.tga + VectorTestFiles/vector3D.tga + VectorTestFiles/multidraw2D.tga + VectorTestFiles/multidraw3D.tga) + target_include_directories(ShadersVectorGLTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/$) + if(MAGNUM_BUILD_PLUGINS_STATIC) + if(MAGNUM_WITH_ANYIMAGEIMPORTER) + target_link_libraries(ShadersVectorGLTest PRIVATE AnyImageImporter) + endif() + if(MAGNUM_WITH_TGAIMPORTER) + target_link_libraries(ShadersVectorGLTest PRIVATE TgaImporter) + endif() + else() + # So the plugins get properly built when building the test + if(MAGNUM_WITH_ANYIMAGEIMPORTER) + add_dependencies(ShadersVectorGLTest AnyImageImporter) + endif() + if(MAGNUM_WITH_TGAIMPORTER) + add_dependencies(ShadersVectorGLTest TgaImporter) + endif() + endif() - if(NOT MAGNUM_TARGET_GLES2) - set(ShadersLineGLTest_SRCS LineGLTest.cpp) + set(ShadersVertexColorGLTest_SRCS VertexColorGLTest.cpp) if(CORRADE_TARGET_IOS) - list(APPEND ShadersLineGLTest_SRCS TestFiles LineTestFiles) + list(APPEND ShadersVertexColorGLTest_SRCS FlatTestFiles VertexColorTestFiles) endif() - corrade_add_test(ShadersLineGLTest ${ShadersLineGLTest_SRCS} + corrade_add_test(ShadersVertexColorGLTest ${ShadersVertexColorGLTest_SRCS} LIBRARIES MagnumDebugTools MagnumMeshTools @@ -478,48 +413,116 @@ if(MAGNUM_BUILD_GL_TESTS) MagnumShadersTestLib MagnumOpenGLTester FILES - LineTestFiles/caps-butt-joins-bevel.tga - LineTestFiles/caps-butt-joins-miter-flat.tga - LineTestFiles/caps-round-joins-miter.tga - LineTestFiles/caps-square-joins-bevel.tga - LineTestFiles/caps-square-joins-miter-flat.tga - LineTestFiles/caps-square-joins-miter-limit-36.tga - LineTestFiles/caps-square-joins-miter-limit-70deg.tga - LineTestFiles/caps-square-joins-miter-limit-91deg.tga - LineTestFiles/caps-square-joins-miter.tga - LineTestFiles/caps-triangle-joins-bevel.tga - LineTestFiles/cube3D-caps-butt-joins-bevel.tga - LineTestFiles/cube3D-caps-square-joins-miter.tga - LineTestFiles/cube3D-depth.tga - LineTestFiles/cube3D-flat-single-pixel.tga - LineTestFiles/defaults.tga - LineTestFiles/instanced.tga - LineTestFiles/multidraw.tga - LineTestFiles/perspective3D.tga - LineTestFiles/vertex-color.tga) - target_include_directories(ShadersLineGLTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/$) + FlatTestFiles/defaults.tga + + VertexColorTestFiles/vertexColor2D.tga + VertexColorTestFiles/vertexColor3D.tga + VertexColorTestFiles/multidraw2D.tga + VertexColorTestFiles/multidraw3D.tga) + target_include_directories(ShadersVertexColorGLTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/$) if(MAGNUM_BUILD_PLUGINS_STATIC) if(MAGNUM_WITH_ANYIMAGEIMPORTER) - target_link_libraries(ShadersLineGLTest PRIVATE AnyImageImporter) + target_link_libraries(ShadersVertexColorGLTest PRIVATE AnyImageImporter) endif() if(MAGNUM_WITH_TGAIMPORTER) - target_link_libraries(ShadersLineGLTest PRIVATE TgaImporter) + target_link_libraries(ShadersVertexColorGLTest PRIVATE TgaImporter) endif() else() # So the plugins get properly built when building the test if(MAGNUM_WITH_ANYIMAGEIMPORTER) - add_dependencies(ShadersLineGLTest AnyImageImporter) + add_dependencies(ShadersVertexColorGLTest AnyImageImporter) endif() if(MAGNUM_WITH_TGAIMPORTER) - add_dependencies(ShadersLineGLTest TgaImporter) + add_dependencies(ShadersVertexColorGLTest TgaImporter) + endif() + endif() + + corrade_add_test(ShadersGLBenchmark ShadersGLBenchmark.cpp + LIBRARIES + MagnumDebugTools + MagnumMeshTools + MagnumPrimitives + MagnumShaders + MagnumOpenGLTester + FILES + BenchmarkFiles/trivial.tga) + target_include_directories(ShadersGLBenchmark PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/$) + if(MAGNUM_BUILD_PLUGINS_STATIC) + if(MAGNUM_WITH_ANYIMAGEIMPORTER) + target_link_libraries(ShadersGLBenchmark PRIVATE AnyImageImporter) + endif() + if(MAGNUM_WITH_TGAIMPORTER) + target_link_libraries(ShadersGLBenchmark PRIVATE TgaImporter) endif() endif() if(CORRADE_TARGET_IOS) set_source_files_properties( - LineTestFiles + TestFiles + VectorTestFiles + FlatTestFiles + MeshVisualizerTestFiles + PhongTestFiles + VectorTestFiles + VertexColorTestFiles PROPERTIES MACOSX_PACKAGE_LOCATION Resources) endif() + + if(NOT MAGNUM_TARGET_GLES2) + set(ShadersLineGLTest_SRCS LineGLTest.cpp) + if(CORRADE_TARGET_IOS) + list(APPEND ShadersLineGLTest_SRCS TestFiles LineTestFiles) + endif() + corrade_add_test(ShadersLineGLTest ${ShadersLineGLTest_SRCS} + LIBRARIES + MagnumDebugTools + MagnumMeshTools + MagnumPrimitives + MagnumShadersTestLib + MagnumOpenGLTester + FILES + LineTestFiles/caps-butt-joins-bevel.tga + LineTestFiles/caps-butt-joins-miter-flat.tga + LineTestFiles/caps-round-joins-miter.tga + LineTestFiles/caps-square-joins-bevel.tga + LineTestFiles/caps-square-joins-miter-flat.tga + LineTestFiles/caps-square-joins-miter-limit-36.tga + LineTestFiles/caps-square-joins-miter-limit-70deg.tga + LineTestFiles/caps-square-joins-miter-limit-91deg.tga + LineTestFiles/caps-square-joins-miter.tga + LineTestFiles/caps-triangle-joins-bevel.tga + LineTestFiles/cube3D-caps-butt-joins-bevel.tga + LineTestFiles/cube3D-caps-square-joins-miter.tga + LineTestFiles/cube3D-depth.tga + LineTestFiles/cube3D-flat-single-pixel.tga + LineTestFiles/defaults.tga + LineTestFiles/instanced.tga + LineTestFiles/multidraw.tga + LineTestFiles/perspective3D.tga + LineTestFiles/vertex-color.tga) + target_include_directories(ShadersLineGLTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/$) + if(MAGNUM_BUILD_PLUGINS_STATIC) + if(MAGNUM_WITH_ANYIMAGEIMPORTER) + target_link_libraries(ShadersLineGLTest PRIVATE AnyImageImporter) + endif() + if(MAGNUM_WITH_TGAIMPORTER) + target_link_libraries(ShadersLineGLTest PRIVATE TgaImporter) + endif() + else() + # So the plugins get properly built when building the test + if(MAGNUM_WITH_ANYIMAGEIMPORTER) + add_dependencies(ShadersLineGLTest AnyImageImporter) + endif() + if(MAGNUM_WITH_TGAIMPORTER) + add_dependencies(ShadersLineGLTest TgaImporter) + endif() + endif() + + if(CORRADE_TARGET_IOS) + set_source_files_properties( + LineTestFiles + PROPERTIES MACOSX_PACKAGE_LOCATION Resources) + endif() + endif() endif() endif() - diff --git a/src/Magnum/Shaders/Vector.h b/src/Magnum/Shaders/Vector.h index ab19b2a1e..4501c156b 100644 --- a/src/Magnum/Shaders/Vector.h +++ b/src/Magnum/Shaders/Vector.h @@ -33,7 +33,7 @@ #include "Magnum/Magnum.h" #include "Magnum/Math/Color.h" -#ifdef MAGNUM_BUILD_DEPRECATED +#if defined(MAGNUM_TARGET_GL) && defined(MAGNUM_BUILD_DEPRECATED) #include #include "Magnum/Shaders/VectorGL.h" @@ -189,7 +189,7 @@ struct VectorMaterialUniform { #endif }; -#ifdef MAGNUM_BUILD_DEPRECATED +#if defined(MAGNUM_TARGET_GL) && defined(MAGNUM_BUILD_DEPRECATED) /** @brief @copybrief Shaders::VectorGL * @m_deprecated_since_latest Use @ref Shaders::VectorGL "VectorGL" instead. */ diff --git a/src/Magnum/Shaders/VectorGL.h b/src/Magnum/Shaders/VectorGL.h index 3bbf67f96..c3439c46b 100644 --- a/src/Magnum/Shaders/VectorGL.h +++ b/src/Magnum/Shaders/VectorGL.h @@ -27,11 +27,16 @@ DEALINGS IN THE SOFTWARE. */ +#ifdef MAGNUM_TARGET_GL /** @file * @brief Class @ref Magnum::Shaders::VectorGL, typedef @ref Magnum::Shaders::VectorGL2D, @ref Magnum::Shaders::VectorGL3D * @m_since_latest */ +#endif + +#include "Magnum/configure.h" +#ifdef MAGNUM_TARGET_GL #include #include "Magnum/DimensionTraits.h" @@ -78,6 +83,10 @@ working on the framebuffer, you need to enable @ref GL::Renderer::Feature::Blending and set up the blending function. See @ref GL::Renderer::setBlendFunction() for details. +@note This class is available only if Magnum is compiled with + @ref MAGNUM_TARGET_GL enabled (done by default). See @ref building-features + for more information. + @section Shaders-VectorGL-usage Example usage Common mesh setup: @@ -837,12 +846,20 @@ template class VectorGL::CompileState: publi /** @brief Two-dimensional vector OpenGL shader @m_since_latest + +@note This typedef is available only if Magnum is compiled with + @ref MAGNUM_TARGET_GL enabled (done by default). See @ref building-features + for more information. */ typedef VectorGL<2> VectorGL2D; /** @brief Three-dimensional vector OpenGL shader @m_since_latest + +@note This typedef is available only if Magnum is compiled with + @ref MAGNUM_TARGET_GL enabled (done by default). See @ref building-features + for more information. */ typedef VectorGL<3> VectorGL3D; @@ -860,5 +877,8 @@ namespace Implementation { #endif }} +#else +#error this header is available only in the OpenGL build +#endif #endif diff --git a/src/Magnum/Shaders/VertexColor.h b/src/Magnum/Shaders/VertexColor.h index 10c16ee50..2515d52d7 100644 --- a/src/Magnum/Shaders/VertexColor.h +++ b/src/Magnum/Shaders/VertexColor.h @@ -26,7 +26,7 @@ DEALINGS IN THE SOFTWARE. */ -#ifdef MAGNUM_BUILD_DEPRECATED +#if defined(MAGNUM_TARGET_GL) && defined(MAGNUM_BUILD_DEPRECATED) /** @file * @brief Typedef @ref Magnum::Shaders::VertexColor, alias @ref Magnum::Shaders::VertexColor2D, @ref Magnum::Shaders::VertexColor3D * @m_deprecated_since_latest Use @ref Magnum/Shaders/VertexColorGL.h, the @@ -37,7 +37,7 @@ #include "Magnum/configure.h" -#ifdef MAGNUM_BUILD_DEPRECATED +#if defined(MAGNUM_TARGET_GL) && defined(MAGNUM_BUILD_DEPRECATED) #include #include "Magnum/Shaders/VertexColorGL.h" @@ -64,8 +64,10 @@ typedef CORRADE_DEPRECATED("use VertexColorGL2D instead") VertexColorGL2D Vertex typedef CORRADE_DEPRECATED("use VertexColorGL3D instead") VertexColorGL3D VertexColor3D; }} -#else +#elif defined(MAGNUM_TARGET_GL) #error use Magnum/Shaders/VertexColorGL.h, the VertexColorGL class and related typedefs instead +#else +#error this header is available only in the OpenGL build #endif #endif diff --git a/src/Magnum/Shaders/VertexColorGL.h b/src/Magnum/Shaders/VertexColorGL.h index 5a7143b56..7c027200c 100644 --- a/src/Magnum/Shaders/VertexColorGL.h +++ b/src/Magnum/Shaders/VertexColorGL.h @@ -27,11 +27,16 @@ DEALINGS IN THE SOFTWARE. */ +#ifdef MAGNUM_TARGET_GL /** @file * @brief Class @ref Magnum::Shaders::VertexColorGL, typedef @ref Magnum::Shaders::VertexColorGL2D, @ref Magnum::Shaders::VertexColorGL3D * @m_since_latest */ +#endif + +#include "Magnum/configure.h" +#ifdef MAGNUM_TARGET_GL #include #include "Magnum/DimensionTraits.h" @@ -77,6 +82,10 @@ working on the framebuffer, you need to enable @ref GL::Renderer::Feature::Blending and set up the blending function. See @ref GL::Renderer::setBlendFunction() for details. +@note This class is available only if Magnum is compiled with + @ref MAGNUM_TARGET_GL enabled (done by default). See @ref building-features + for more information. + @section Shaders-VertexColorGL-example Example usage Common mesh setup. The shader accepts either three- or four-component color @@ -558,12 +567,20 @@ template class VertexColorGL::CompileState: /** @brief 2D vertex color OpenGL shader @m_since_latest + +@note This typedef is available only if Magnum is compiled with + @ref MAGNUM_TARGET_GL enabled (done by default). See @ref building-features + for more information. */ typedef VertexColorGL<2> VertexColorGL2D; /** @brief 3D vertex color OpenGL shader @m_since_latest + +@note This typedef is available only if Magnum is compiled with + @ref MAGNUM_TARGET_GL enabled (done by default). See @ref building-features + for more information. */ typedef VertexColorGL<3> VertexColorGL3D; @@ -581,5 +598,8 @@ namespace Implementation { #endif }} +#else +#error this header is available only in the OpenGL build +#endif #endif