From 6dffc0a91ed8b57cd4defd712819df72198105de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sun, 11 Feb 2018 23:22:07 +0100 Subject: [PATCH] Shaders: documentation update for the new theme. Also made the shader image background transparent to better fit in the docs and updated the images to match site colors. --- doc/generated/shaders.cpp | 9 +++-- doc/shaders-distancefieldvector.png | Bin 11044 -> 10308 bytes doc/shaders-flat.png | Bin 4828 -> 3740 bytes doc/shaders-meshvisualizer.png | Bin 24834 -> 21392 bytes doc/shaders-phong.png | Bin 28879 -> 18564 bytes doc/shaders-vector.png | Bin 10704 -> 9637 bytes doc/shaders-vertexcolor.png | Bin 20356 -> 13296 bytes src/Magnum/Shaders/DistanceFieldVector.h | 20 ++++----- src/Magnum/Shaders/Flat.h | 25 +++++++----- src/Magnum/Shaders/Generic.h | 2 +- src/Magnum/Shaders/MeshVisualizer.h | 49 +++++++++++++---------- src/Magnum/Shaders/Phong.h | 40 +++++++++--------- src/Magnum/Shaders/Shaders.h | 2 +- src/Magnum/Shaders/Vector.h | 10 +++-- src/Magnum/Shaders/VertexColor.h | 10 +++-- src/Magnum/Shapes/Shapes.h | 2 +- 16 files changed, 95 insertions(+), 74 deletions(-) diff --git a/doc/generated/shaders.cpp b/doc/generated/shaders.cpp index 7907cfa4c..91ce8dbcb 100644 --- a/doc/generated/shaders.cpp +++ b/doc/generated/shaders.cpp @@ -120,6 +120,7 @@ int ShaderVisualizer::exec() { framebuffer.attachRenderbuffer(Framebuffer::ColorAttachment{0}, color); Renderer::enable(Renderer::Feature::DepthTest); + Renderer::setClearColor(0x000000_rgbaf); for(auto fun: {&ShaderVisualizer::phong, &ShaderVisualizer::meshVisualizer, @@ -144,8 +145,8 @@ int ShaderVisualizer::exec() { namespace { const auto Projection = Matrix4::perspectiveProjection(35.0_degf, 1.0f, 0.001f, 100.0f); const auto Transformation = Matrix4::translation(Vector3::zAxis(-5.0f)); - const auto BaseColor = Color3::fromHsv(216.0_degf, 0.85f, 1.0f); - const auto OutlineColor = Color3{0.95f}; + const auto BaseColor = 0x2f83cc_rgbf; + const auto OutlineColor = 0xdcdcdc_rgbf; } std::string ShaderVisualizer::phong() { @@ -154,7 +155,7 @@ std::string ShaderVisualizer::phong() { std::tie(mesh, vertices, indices) = MeshTools::compile(Primitives::UVSphere::solid(16, 32), BufferUsage::StaticDraw); Shaders::Phong shader; - shader.setAmbientColor(Color3(0.025f)) + shader.setAmbientColor(0x22272e_rgbf) .setDiffuseColor(BaseColor) .setShininess(200.0f) .setLightPosition({5.0f, 5.0f, 7.0f}) @@ -209,7 +210,7 @@ std::string ShaderVisualizer::vertexColor() { std::vector colors; colors.reserve(sphere.positions(0).size()); for(Vector3 position: sphere.positions(0)) - colors.push_back(Color3::fromHsv(Math::lerp(240.0_degf, 420.0_degf, Math::max(1.0f - (position - target).length(), 0.0f)), 0.85f, 0.85f)); + colors.push_back(Color3::fromHsv(Math::lerp(240.0_degf, 420.0_degf, Math::max(1.0f - (position - target).length(), 0.0f)), 0.75f, 0.75f)); Buffer vertices, indices; vertices.setData(MeshTools::interleave(sphere.positions(0), colors), BufferUsage::StaticDraw); diff --git a/doc/shaders-distancefieldvector.png b/doc/shaders-distancefieldvector.png index c54d99240bd50ef4669fb6f7ade9db44a5769c3a..15044a28ddfdc7ac3d83b7f31159b9952ccc7579 100644 GIT binary patch literal 10308 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 Y#hSo;G$;5JJRJzVlu?u}m(=(FA4wr{MgRZ+ literal 11044 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 KdXB1pHTu6UvdXsr literal 4828 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 diff --git a/doc/shaders-meshvisualizer.png b/doc/shaders-meshvisualizer.png index 896dda5756d0e843e72b718e13a8b89a16461a06..1a38dafb097c85d78f66093bab7cf6e3182c5fe5 100644 GIT binary patch literal 21392 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 WEdFQcC+*WF-CYAS{Tf~8g#Q7fD|(p# literal 24834 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 Fe*pnn>W%;a diff --git a/doc/shaders-phong.png b/doc/shaders-phong.png index 2f1a44a33a7ca226f10ade0e8044e713fbaf6ac7..185e6d38a0bc6b883e68991f0a0605b457854666 100644 GIT binary patch literal 18564 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 STX#TrA>f$nNtbFODeYh2F_A(5 literal 28879 zcmb5VX;>3k*EU*}N-6;gk}xI+CJ>}SK|=zHiX;IHQBfmKh^S$XI5gtWXrrkxBT<6V z2xv-h|skQg6T5I2H z-S;k#E(y1`bhZQlzKnLi!> zC;V3pjq!${s{PXQpH_*t)?jYWbe-Itfj{zp-Br@*gz9*p+F~zmIhCSv1ghH<_@x!v z-uP{>p|Y?Xo!m+0uP?$aA<+t_B{AK`eo&V2u{a-hkZrnLAx8e@Ig2X(aUH+PSoo4DXG#iV4DjE=2 zQ6VTlDJfYdi%T|j-D=kv46R01Yw{4V=NR3POuVa+%Em`Xwv6in=mmzTu3rb


5m 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 OUo2W0c_v(x_kRFad^;}y diff --git a/doc/shaders-vector.png b/doc/shaders-vector.png index 9697fdd7af88157008c3a734d8e74470867ff70e..cd8a01f9e49eb6c97e55cd49b7b76289431c1b05 100644 GIT binary patch literal 9637 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 literal 10704 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 literal 20356 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ⅇAC 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 BVOanG diff --git a/src/Magnum/Shaders/DistanceFieldVector.h b/src/Magnum/Shaders/DistanceFieldVector.h index d99f9cc72..4f6bbee2a 100644 --- a/src/Magnum/Shaders/DistanceFieldVector.h +++ b/src/Magnum/Shaders/DistanceFieldVector.h @@ -52,10 +52,11 @@ value passed to @ref setSmoothness(). You need to provide @ref Position and @image html shaders-distancefieldvector.png @image latex shaders-distancefieldvector.png -## Example usage +@section Shaders-DistanceFieldVector-usage Example usage Common mesh setup: -@code + +@code{.cpp} struct Vertex { Vector2 position; Vector2 textureCoordinates; @@ -72,13 +73,14 @@ mesh.addVertexBuffer(vertices, 0, @endcode Common rendering setup: -@code + +@code{.cpp} Matrix3 transformationMatrix, projectionMatrix; Texture2D texture; Shaders::DistanceFieldVector2D shader; -shader.setColor(Color3::fromHSV(216.0_degf, 0.85f, 1.0f)) - .setOutlineColor(Color3{0.95f}) +shader.setColor(0x2f83cc_rgbf) + .setOutlineColor(0xdcdcdc_rgbf) .setOutlineRange(0.6f, 0.4f) .setVectorTexture(texture) .setTransformationProjectionMatrix(projectionMatrix*transformationMatrix); @@ -148,12 +150,12 @@ template class MAGNUM_SHADERS_EXPORT DistanceFieldVector * @return Reference to self (for method chaining) * * Parameter @p start describes where fill ends and possible outline - * starts. Initial value is `0.5f`, larger values will make the vector - * art look thinner, smaller will make it look thicker. + * starts. Initial value is @cpp 0.5f @ce, larger values will make the + * vector art look thinner, smaller will make it look thicker. * * Parameter @p end describes where outline ends. If set to value * larger than @p start the outline is not drawn. Initial value is - * `1.0f`. + * @cpp 1.0f @ce. * * @see @ref setOutlineColor() */ @@ -168,7 +170,7 @@ template class MAGNUM_SHADERS_EXPORT DistanceFieldVector * * Larger values will make edges look less aliased (but blurry), * smaller values will make them look more crisp (but possibly - * aliased). Initial value is `0.04f`. + * aliased). Initial value is @cpp 0.04f @ce. */ DistanceFieldVector& setSmoothness(Float value) { AbstractShaderProgram::setUniform(_smoothnessUniform, value); diff --git a/src/Magnum/Shaders/Flat.h b/src/Magnum/Shaders/Flat.h index 34187c63f..b61ad1be7 100644 --- a/src/Magnum/Shaders/Flat.h +++ b/src/Magnum/Shaders/Flat.h @@ -62,12 +62,13 @@ For coloring the texture based on intensity you can use the @ref Vector shader. @image html shaders-flat.png @image latex shaders-flat.png -## Example usage +@section Shaders-Flat-usage Example usage -### Colored mesh +@subsection Shaders-Flat-usage-colored Colored mesh Common mesh setup: -@code + +@code{.cpp} struct Vertex { Vector3 position; }; @@ -81,21 +82,23 @@ mesh.addVertexBuffer(vertices, 0, Shaders::Flat3D::Position{}); @endcode Common rendering setup: -@code + +@code{.cpp} Matrix4 transformationMatrix = Matrix4::translation(Vector3::zAxis(-5.0f)); Matrix4 projectionMatrix = Matrix4::perspectiveProjection(35.0_degf, 1.0f, 0.001f, 100.0f); Shaders::Flat3D shader; -shader.setColor(Color3::fromHSV(216.0_degf, 0.85f, 1.0f)) +shader.setColor(0x2f83cc_rgbf) .setTransformationProjectionMatrix(projectionMatrix*transformationMatrix); mesh.draw(shader); @endcode -### Textured mesh +@subsection Shaders-Flat-usage-textured Textured mesh Common mesh setup: -@code + +@code{.cpp} struct Vertex { Vector3 position; Vector2 textureCoordinates; @@ -112,7 +115,8 @@ mesh.addVertexBuffer(vertices, 0, @endcode Common rendering setup: -@code + +@code{.cpp} Matrix4 transformationMatrix, projectionMatrix; Texture2D texture; @@ -198,8 +202,9 @@ template class MAGNUM_SHADERS_EXPORT Flat: public Abstra * @brief Set color * @return Reference to self (for method chaining) * - * If @ref Flag::Textured is set, default value is `{1.0f, 1.0f, 1.0f}` - * and the color will be multiplied with texture. + * If @ref Flag::Textured is set, default value is + * @cpp 0xffffffff_rgbaf @ce and the color will be multiplied with + * texture. * @see @ref setTexture() */ Flat& setColor(const Color4& color){ diff --git a/src/Magnum/Shaders/Generic.h b/src/Magnum/Shaders/Generic.h index 98dc633ae..542a8067f 100644 --- a/src/Magnum/Shaders/Generic.h +++ b/src/Magnum/Shaders/Generic.h @@ -83,7 +83,7 @@ template struct Generic { constexpr explicit Color(Components components, DataType dataType = DataType::Float, DataOptions dataOptions = {}); #ifdef MAGNUM_BUILD_DEPRECATED - /** @copybrief Color(Components, DataType, DataOptions) + /** @brief @copybrief Color(Components, DataType, DataOptions) * @deprecated Use @ref Color(Components, DataType, DataOptions) instead. */ CORRADE_DEPRECATED("use Color(Components, DataType, DataOptions) instead") constexpr explicit Color(DataType dataType = DataType::Float, DataOptions dataOptions = {}); diff --git a/src/Magnum/Shaders/MeshVisualizer.h b/src/Magnum/Shaders/MeshVisualizer.h index 5c43ad575..c389e134b 100644 --- a/src/Magnum/Shaders/MeshVisualizer.h +++ b/src/Magnum/Shaders/MeshVisualizer.h @@ -47,7 +47,7 @@ Uses geometry shader to visualize wireframe of 3D meshes. You need to provide @image html shaders-meshvisualizer.png @image latex shaders-meshvisualizer.png -## Wireframe visualization +@section Shaders-MeshVisualizer-wireframe Wireframe visualization Wireframe visualization is done by enabling @ref Flag::Wireframe. It is done either using geometry shaders or with help of additional vertex information. @@ -71,12 +71,13 @@ you have OpenGL < 3.1 or OpenGL ES 2.0, you need to provide also If using geometry shaders on OpenGL ES, @extension{NV,shader_noperspective_interpolation} is optionally used for improving line appearance. -## Example usage +@section Shaders-MeshVisualizer-usage Example usage -### Wireframe visualization with geometry shader (desktop GL) +@subsection Shaders-MeshVisualizer-usage-wireframe-geom Wireframe visualization with geometry shader (desktop GL) Common mesh setup: -@code + +@code{.cpp} struct Vertex { Vector3 position; }; @@ -90,24 +91,26 @@ mesh.addVertexBuffer(vertices, 0, Shaders::MeshVisualizer::Position{}); @endcode Common rendering setup: -@code + +@code{.cpp} Matrix4 transformationMatrix = Matrix4::translation(Vector3::zAxis(-5.0f)); Matrix4 projectionMatrix = Matrix4::perspectiveProjection(35.0_degf, 1.0f, 0.001f, 100.0f); Shaders::MeshVisualizer shader{Shaders::MeshVisualizer::Wireframe}; -shader.setColor(Color3::fromHSV(216.0_degf, 0.85f, 1.0f)) - .setWireframeColor(Color3{0.95f}) +shader.setColor(0x2f83cc_rgbf) + .setWireframeColor(0xdcdcdc_rgbf) .setViewportSize(defaultFramebuffer.viewport().size()) .setTransformationProjectionMatrix(projectionMatrix*transformationMatrix); mesh.draw(shader); @endcode -### Wireframe visualization without geometry shader on older hardware +@subsection Shaders-MeshVisualizer-usage-wireframe-no-geom-old Wireframe visualization without geometry shader on older hardware You need to provide also the @ref VertexIndex attribute. Mesh setup *in addition to the above*: -@code + +@code{.cpp} constexpr std::size_t vertexCount = std::extent::value; Float vertexIndex[vertexCount]; std::iota(vertexIndex, vertexIndex + vertexCount, 0.0f); @@ -119,22 +122,24 @@ mesh.addVertexBuffer(vertexIndices, 0, Shaders::MeshVisualizer::VertexIndex{}); @endcode Rendering setup: -@code + +@code{.cpp} Matrix4 transformationMatrix, projectionMatrix; Shaders::MeshVisualizer shader{Shaders::MeshVisualizer::Wireframe| Shaders::MeshVisualizer::NoGeometryShader}; -shader.setColor(Color3::fromHSV(216.0_degf, 0.85f, 1.0f)) - .setWireframeColor(Color3{0.95f}) +shader.setColor(0x2f83cc_rgbf) + .setWireframeColor(0xdcdcdc_rgbf) .setTransformationProjectionMatrix(projectionMatrix*transformationMatrix); mesh.draw(shader); @endcode -### Wireframe visualization of indexed meshes without geometry shader +@subsection Shaders-MeshVisualizer-usage-wireframe-no-geom Wireframe visualization of indexed meshes without geometry shader The vertices must be converted to non-indexed array. Mesh setup: -@code + +@code{.cpp} std::vector indices{ ... }; std::vector indexedPositions{ ... }; @@ -165,10 +170,10 @@ class MAGNUM_SHADERS_EXPORT MeshVisualizer: public AbstractShaderProgram { * * @ref Magnum::Float "Float", used only in OpenGL < 3.1 and OpenGL ES * 2.0 if @ref Flag::Wireframe is enabled. This attribute (modulo 3) - * specifies index of given vertex in triangle, i.e. `0` for first, `1` - * for second, `2` for third. In OpenGL 3.1, OpenGL ES 3.0 and newer - * this value is provided by the shader itself, so the attribute is not - * needed. + * specifies index of given vertex in triangle, i.e. @cpp 0.0f @ce for + * first, @cpp 1.0f @ce for second, @cpp 2.0f @ce for third. In OpenGL + * 3.1, OpenGL ES 3.0 and newer this value is provided by the shader + * itself, so the attribute is not needed. */ typedef Attribute<3, Float> VertexIndex; @@ -267,8 +272,8 @@ class MAGNUM_SHADERS_EXPORT MeshVisualizer: public AbstractShaderProgram { * @brief Set wireframe width * @return Reference to self (for method chaining) * - * Initial value is `1.0f`. Has effect only if @ref Flag::Wireframe is - * enabled. + * Initial value is @cpp 1.0f @ce. Has effect only if @ref Flag::Wireframe + * is enabled. */ MeshVisualizer& setWireframeWidth(Float width) { if(_flags & Flag::Wireframe) setUniform(_wireframeWidthUniform, width); @@ -279,8 +284,8 @@ class MAGNUM_SHADERS_EXPORT MeshVisualizer: public AbstractShaderProgram { * @brief Set line smoothness * @return Reference to self (for method chaining) * - * Initial value is `2.0f`. Has effect only if @ref Flag::Wireframe is - * enabled. + * Initial value is @cpp 2.0f @ce. Has effect only if @ref Flag::Wireframe + * is enabled. */ MeshVisualizer& setSmoothness(Float smoothness); diff --git a/src/Magnum/Shaders/Phong.h b/src/Magnum/Shaders/Phong.h index 60952423c..1a0d58653 100644 --- a/src/Magnum/Shaders/Phong.h +++ b/src/Magnum/Shaders/Phong.h @@ -55,12 +55,13 @@ enabled textures. @image html shaders-phong.png @image latex shaders-phong.png -## Example usage +@section Shaders-Phong-usage Example usage -### Colored mesh +@subsection Shaders-Phong-usage-colored Colored mesh Common mesh setup: -@code + +@code{.cpp} struct Vertex { Vector3 position; Vector3 normal; @@ -77,12 +78,13 @@ mesh.addVertexBuffer(vertices, 0, @endcode Common rendering setup: -@code + +@code{.cpp} Matrix4 transformationMatrix = Matrix4::translation(Vector3::zAxis(-5.0f)); Matrix4 projectionMatrix = Matrix4::perspectiveProjection(35.0_degf, 1.0f, 0.001f, 100.0f); Shaders::Phong shader; -shader.setDiffuseColor(Color4::fromHSV(216.0_degf, 0.85f, 1.0f)) +shader.setDiffuseColor(0x2f83cc_rgbf) .setShininess(200.0f) .setLightPosition({5.0f, 5.0f, 7.0f}) .setTransformationMatrix(transformationMatrix) @@ -92,10 +94,11 @@ shader.setDiffuseColor(Color4::fromHSV(216.0_degf, 0.85f, 1.0f)) mesh.draw(shader); @endcode -### Diffuse and specular texture +@subsection Shaders-Phong-usage-texture Diffuse and specular texture Common mesh setup: -@code + +@code{.cpp} struct Vertex { Vector3 position; Vector3 normal; @@ -114,7 +117,8 @@ mesh.addVertexBuffer(vertices, 0, @endcode Common rendering setup: -@code + +@code{.cpp} Matrix4 transformationMatrix, projectionMatrix; Texture2D diffuseTexture, specularTexture; @@ -129,14 +133,15 @@ shader.setTextures(nullptr, &diffuseTexture, &specularTexture) mesh.draw(shader); @endcode -### Alpha-masked drawing +@subsection Shaders-Phong-usage-alpha Alpha-masked drawing For general alpha-masked drawing you need to provide ambient texture with alpha channel and set alpha channel of diffuse/specular color to `0.0f` so only ambient alpha will be taken into account. If you have diffuse texture combined with the alpha mask, you can use that texture for both ambient and diffuse part and then separate the alpha like this: -@code + +@code{.cpp} Shaders::Phong shader{Shaders::Phong::AmbientTexture| Shaders::Phong::DiffuseTexture}; shader.setTextures(&diffuseAlphaTexture, &diffuseAlphaTexture, nullptr) @@ -216,8 +221,8 @@ class MAGNUM_SHADERS_EXPORT Phong: public AbstractShaderProgram { * @return Reference to self (for method chaining) * * If @ref Flag::AmbientTexture is set, default value is - * `{1.0f, 1.0f, 1.0f, 1.0f}` and the color will be multiplied with - * ambient texture, otherwise default value is `{0.0f, 0.0f, 0.0f, 1.0f}`. + * @cpp 0xffffffff_rgbaf @ce and the color will be multiplied with + * ambient texture, otherwise default value is @cpp 0x000000ff_rgbaf @ce. * @see @ref setAmbientTexture() */ Phong& setAmbientColor(const Color4& color) { @@ -239,7 +244,7 @@ class MAGNUM_SHADERS_EXPORT Phong: public AbstractShaderProgram { * @return Reference to self (for method chaining) * * If @ref Flag::DiffuseTexture is set, default value is - * `{1.0f, 1.0f, 1.0f, 1.0f}` and the color will be multiplied with + * @cpp 0xffffffff_rgbaf @ce and the color will be multiplied with * diffuse texture. * @see @ref setDiffuseTexture() */ @@ -261,9 +266,8 @@ class MAGNUM_SHADERS_EXPORT Phong: public AbstractShaderProgram { * @brief Set specular color * @return Reference to self (for method chaining) * - * Default value is `{1.0f, 1.0f, 1.0f, 1.0f}`. Color will be - * multiplied with specular texture if @ref Flag::SpecularTexture is - * set. + * Default value is @cpp 0xffffffff_rgbaf @ce. Color will be multiplied + * with specular texture if @ref Flag::SpecularTexture is set. * @see @ref setSpecularTexture() */ Phong& setSpecularColor(const Color4& color) { @@ -297,7 +301,7 @@ class MAGNUM_SHADERS_EXPORT Phong: public AbstractShaderProgram { * @return Reference to self (for method chaining) * * The larger value, the harder surface (smaller specular highlight). - * If not set, default value is `80.0f`. + * If not set, default value is @cpp 80.0f @ce. */ Phong& setShininess(Float shininess) { setUniform(_shininessUniform, shininess); @@ -347,7 +351,7 @@ class MAGNUM_SHADERS_EXPORT Phong: public AbstractShaderProgram { * @brief Set light color * @return Reference to self (for method chaining) * - * If not set, default value is `{1.0f, 1.0f, 1.0f, 1.0f}`. + * If not set, default value is @cpp 0xffffffff_rgbaf @ce. */ Phong& setLightColor(const Color4& color) { setUniform(_lightColorUniform, color); diff --git a/src/Magnum/Shaders/Shaders.h b/src/Magnum/Shaders/Shaders.h index af67901ce..099603c20 100644 --- a/src/Magnum/Shaders/Shaders.h +++ b/src/Magnum/Shaders/Shaders.h @@ -26,7 +26,7 @@ */ /** @file - * @brief Forward declarations for @ref Magnum::Shaders namespace + * @brief Forward declarations for the @ref Magnum::Shaders namespace */ #include "Magnum/Types.h" diff --git a/src/Magnum/Shaders/Vector.h b/src/Magnum/Shaders/Vector.h index b073acde6..b6a534666 100644 --- a/src/Magnum/Shaders/Vector.h +++ b/src/Magnum/Shaders/Vector.h @@ -51,10 +51,11 @@ attributes in your triangle mesh and call at least @image html shaders-vector.png @image latex shaders-vector.png -## Example usage +@section Shaders-Vector-usage Example usage Common mesh setup: -@code + +@code{.cpp} struct Vertex { Vector2 position; Vector2 textureCoordinates; @@ -71,12 +72,13 @@ mesh.addVertexBuffer(vertices, 0, @endcode Common rendering setup: -@code + +@code{.cpp} Matrix3 transformationMatrix, projectionMatrix; Texture2D texture; Shaders::Vector2D shader; -shader.setColor(Color3::fromHSV(216.0_degf, 0.85f, 1.0f)) +shader.setColor(0x2f83cc_rgbf) .setVectorTexture(texture) .setTransformationProjectionMatrix(projectionMatrix*transformationMatrix); diff --git a/src/Magnum/Shaders/VertexColor.h b/src/Magnum/Shaders/VertexColor.h index 73348c715..e08eda3ad 100644 --- a/src/Magnum/Shaders/VertexColor.h +++ b/src/Magnum/Shaders/VertexColor.h @@ -49,13 +49,14 @@ attributes in your triangle mesh and call at least @image html shaders-vertexcolor.png @image latex shaders-vertexcolor.png -## Example usage +@section Shaders-VertexColor-example Example usage Common mesh setup. Note the explicit specification of components for the color -attribute -- the shader accepts four-component color attribute but, similarly +attribute --- the shader accepts four-component color attribute but, similarly to all other attributes, it's possible to supply also three-component colors if alpha is not important. -@code + +@code{.cpp} struct Vertex { Vector3 position; Color3 color; @@ -72,7 +73,8 @@ mesh.addVertexBuffer(vertices, 0, @endcode Common rendering setup: -@code + +@code{.cpp} Matrix4 transformationMatrix = Matrix4::translation(Vector3::zAxis(-5.0f)); Matrix4 projectionMatrix = Matrix4::perspectiveProjection(35.0_degf, 1.0f, 0.001f, 100.0f); diff --git a/src/Magnum/Shapes/Shapes.h b/src/Magnum/Shapes/Shapes.h index 97b821a7e..81f1adf1b 100644 --- a/src/Magnum/Shapes/Shapes.h +++ b/src/Magnum/Shapes/Shapes.h @@ -26,7 +26,7 @@ */ /** @file - * @brief Forward declarations for @ref Magnum::Shapes namespace + * @brief Forward declarations for the @ref Magnum::Shapes namespace */ #include "Magnum/Types.h"