Revision control
+ // Copyright (C) 2026 The Qt Company Ltd.
+ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+ // A producer nested inside consumerA (depth 1) renders before ALL depth-0
+ // passes, so consumerB, which also samples the producer's output, sees fresh
+ // results without expressing the dependency a second time.
+
+ import QtQuick
+ import QtQuick3D
+ import QtQuick3D.Helpers
+
+ Item {
+ width: 400
+ height: 400
+
+ View3D {
+ anchors.fill: parent
+ renderOverrides: View3D.DisableInternalPasses
+
+ PerspectiveCamera { position: Qt.vector3d(0, 0, 300) }
+ DirectionalLight {}
+
+ RenderPassTexture { id: producerTexture; format: RenderPassTexture.RGBA8 }
+ RenderPassTexture { id: consumerATexture; format: RenderPassTexture.RGBA8 }
+ RenderPassTexture { id: consumerBTexture; format: RenderPassTexture.RGBA8 }
+
+ RenderPass {
+ id: consumerA
+ objectName: "consumerA"
+ materialMode: RenderPass.OriginalMaterial
+ clearColor: "black"
+ commands: [
+ ColorAttachment { target: consumerATexture },
+ DepthStencilAttachment {},
+ RenderablesFilter { layerMask: ContentLayer.Layer1 }
+ ]
+
+ RenderPass {
+ id: producerPass
+ objectName: "producerPass"
+ materialMode: RenderPass.OriginalMaterial
+ clearColor: "yellow"
+ commands: [
+ ColorAttachment { target: producerTexture },
+ DepthStencilAttachment {},
+ RenderablesFilter { layerMask: ContentLayer.Layer0 }
+ ]
+ }
+ }
+
+ RenderPass {
+ id: consumerB
+ objectName: "consumerB"
+ materialMode: RenderPass.OriginalMaterial
+ clearColor: "black"
+ commands: [
+ ColorAttachment { target: consumerBTexture },
+ DepthStencilAttachment {},
+ RenderablesFilter { layerMask: ContentLayer.Layer2 }
+ ]
+ }
+
+ // Display consumerB's output: it contains the producer's result even
+ // though the producer is nested in consumerA.
+ SimpleQuadRenderer {
+ texture: Texture {
+ textureProvider: RenderOutputProvider {
+ textureSource: RenderOutputProvider.UserPassTexture
+ renderPass: consumerB
+ }
+ }
+ }
+
+ // Red cube rendered by the producer.
+ Model {
+ layers: ContentLayer.Layer0
+ source: "#Cube"
+ materials: PrincipledMaterial {
+ baseColor: "red"
+ lighting: PrincipledMaterial.NoLighting
+ }
+ }
+
+ // Sphere for consumerA, textured with the producer's output.
+ Model {
+ layers: ContentLayer.Layer1
+ source: "#Sphere"
+ scale: Qt.vector3d(2, 2, 2)
+ materials: PrincipledMaterial {
+ lighting: PrincipledMaterial.NoLighting
+ baseColorMap: Texture {
+ textureProvider: RenderOutputProvider {
+ textureSource: RenderOutputProvider.UserPassTexture
+ renderPass: producerPass
+ }
+ }
+ }
+ }
+
+ // Sphere for consumerB, also textured with the producer's output.
+ Model {
+ layers: ContentLayer.Layer2
+ source: "#Sphere"
+ scale: Qt.vector3d(2, 2, 2)
+ materials: PrincipledMaterial {
+ lighting: PrincipledMaterial.NoLighting
+ baseColorMap: Texture {
+ textureProvider: RenderOutputProvider {
+ textureSource: RenderOutputProvider.UserPassTexture
+ renderPass: producerPass
+ }
+ }
+ }
+ }
+ }
+ }