Qt Quick 3D - Custom Shaders Example

 // Copyright (C) 2019 The Qt Company Ltd.
 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause

 import QtQuick
 import QtQuick3D

 CustomMaterial {
     id: root
     property real time: 0.0
     property real amplitude: 5.0
     property real alpha: 1.0

     property bool texturing: false
     property bool textureFromItem: false
     property Item texSrc
     Texture {
         id: texFromFile
         source: "qt_logo.png"
     }
     Texture {
         id: texFromItem
         sourceItem: root.texSrc
     }
     property TextureInput tex: TextureInput {
         enabled: root.texturing
         texture: root.textureFromItem ? texFromItem : texFromFile
     }

     shadingMode: CustomMaterial.Unshaded
     sourceBlend: root.alpha < 1.0 ? CustomMaterial.SrcAlpha : CustomMaterial.NoBlend
     destinationBlend: root.alpha < 1.0 ? CustomMaterial.OneMinusSrcAlpha : CustomMaterial.NoBlend
     cullMode: CustomMaterial.BackFaceCulling

     vertexShader: "example.vert"
     fragmentShader: root.texturing ? "example_tex.frag" : "example.frag"
 }