Revision control
++ // Copyright (C) 2019 The Qt Company Ltd.
++ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
++
++ /*!
++ \example customshaders
++ \ingroup quick3d-examples
++ \title Qt Quick 3D - Custom Shaders Example
++ \examplecategory {3D}
++ \brief Demonstrates the use of custom vertex and fragment shaders.
++
++ This example demonstrates using a material with completely custom vertex
++ and fragment shader code.
++
++ \image customshaders-example.jpg
++ {Rainbow-colored sphere with wave deformation and shader settings}
++
++ This example is the counterpart to the \l{Qt Quick 3D - Custom Materials
++ Example}{custommaterials} example, which demonstrates the other group of
++ custom materials: \c shaded materials where the shader code snippet
++ augments a PrincipledMaterial, rather than replacing it.
++
++ \section1 Implementing a custom material
++
++ In this example, a mesh is deformed by the vertex shader according to a
++ sine function. The end result is controlled by two sliders corresponding to
++ the time and amplitude values of the sine function.
++
++ The fragment shader is used to color the mesh according to the position
++ values of the vertices. There are two fragment shaders included: one with
++ and without texturing. The textured version samples a texture that is
++ source from either an image file, or from a live Qt Quick layer.
++
++ The material does not participate in the default lighting or shadowing
++ system, and therefore has its \l{CustomMaterial::shadingMode}{shadingMode}
++ property set to \c CustomMaterial.Unshaded.
++
++ See \l CustomMaterial for a detailed description of custom material
++ capabilities.
++
++ \snippet customshaders/ExampleMaterial.qml implementation
++
++ \section1 Using a custom material
++
++ A custom material using custom shaders is used the same way as any other
++ material. The uniforms in the shader can be easily updated through QML
++ property bindings.
++
++ \snippet customshaders/main.qml use
++ */