Auf dieser Seite

RenderPass QML Type

Definiert einen benutzerdefinierten Render-Pass zum Rendern von 3D-Inhalten. Mehr...

Import Statement: import QtQuick3D
Since: Qt 6.11
Inherits:

Object3D

Eigenschaften

Ausführliche Beschreibung

Ein RenderPass definiert einen Rendering-Schritt und das Renderziel, in das er schreibt. Er setzt sich aus drei Aspekten zusammen:

Ein „RenderPass“ wird für eine Szene aktiv, wenn er als untergeordnetes Element eines „ View3D “ oder eines „ Node “ platziert wird.

Das folgende Beispiel richtet einen einfachen Off-Screen-Pass ein, der alle Szenenobjekte in eine benutzerdefinierte Textur rendert, die dann von einem Material oder einem „ SimpleQuadRenderer “ verwendet werden kann:

import QtQuick3D

View3D {
    // Declare the off-screen color buffer
    RenderPassTexture {
        id: myColorTexture
        format: RenderPassTexture.RGBA8
    }

    // The render pass: where + what + how
    RenderPass {
        id: myRenderPass
        commands: [
            // Where: attach the texture as the color output
            ColorAttachment {
                name: "color0"
                target: myColorTexture
            },
            // What: render all objects into it
            RenderablesFilter {
                renderableTypes: RenderablesFilter.Opaque | RenderablesFilter.Transparent
            }
        ]
    }
}

Bereitstellung von Daten für die Shader

Wie bei Effekten und benutzerdefinierten Materialien stellt der RenderPass benutzerdefinierte Eigenschaften automatisch den Shadern zur Verfügung und aktualisiert sie. Alle QML-Eigenschaften, die für einen RenderPass-Untertyp deklariert wurden, stehen im Shader als Uniforms zur Verfügung.

Siehe auch „ SubRenderPass “, „ RenderOutputProvider “ und „ RenderablesFilter “.

Dokumentation zu Eigenschaften

augmentShader : url

Diese Eigenschaft enthält die URL des Augment-Shaders für den Render-Durchgang, wenn „ materialMode “ auf „ AugmentMaterial “ gesetzt ist.

Die Shader-Datei sollte eine Funktion mit der folgenden Signatur enthalten:

void MAIN_FRAGMENT_AUGMENT() {
    // Custom shader code here
}

Diese Funktion wird mit dem vorhandenen Fragment-Shader des Materials kombiniert, das von dem Objekt verwendet wird, das in diesem Render-Durchgang gerendert wird. So können Benutzer den vorhandenen Material-Shader mit benutzerdefiniertem Code erweitern.

clearColor : color [default: Qt.black]

Diese Eigenschaft enthält die Hintergrundfarbe für den Render-Durchgang.

commands : list<RenderCommand>

Diese Eigenschaft enthält die Liste der Renderbefehle für den Renderdurchlauf.

Die Befehle in der Liste werden in der Reihenfolge ausgeführt, in der sie in der Liste erscheinen.

Hinweis: Die Befehle für „ RenderPass “ und „Effects“ sind ähnlich, aber nicht identisch; nur diejenigen, die als kompatibel gekennzeichnet sind, können mit diesem „ RenderPass “ verwendet werden.

Siehe auch „ SubRenderPass“ , „ PipelineStateOverride “, „ RenderablesFilter “, „ RenderPassTexture “, „ ColorAttachment “, „ DepthTextureAttachment “, „ DepthStencilAttachment “, „ AddDefine “ und „ renderTargetBlend “.

depthClearValue : real [default: 1.0]

Diese Eigenschaft enthält den Wert für „Depth Clear“ des Render-Passes.

materialMode : RenderPass::MaterialModes [default: RenderPass.OriginalMaterial]

Legt fest, wie Objektmaterialien beim Rendern in diesem Durchgang behandelt werden.

KonstanteBeschreibung
RenderPass.OriginalMaterialObjekte werden mit ihren eigenen zugewiesenen Materialien gerendert, wobei Beleuchtung, Texturen und Materialeigenschaften vollständig und wie gewohnt angewendet werden. Dies ist der Standardmodus für das Rendern einer originalgetreuen Kopie der Szene in ein benutzerdefiniertes Renderziel – zum Beispiel einen sekundären Blickwinkel für eine Reflexionssonde, eine Rückfahrkamera oder einen Bild-in-Bild-Effekt. Die Eigenschaften „ overrideMaterial “, „ augmentShader “ und „ shaders “ werden in diesem Modus nicht verwendet.
RenderPass.AugmentMaterialJedes Objekt wird mit seinem eigenen Material gerendert, doch der Inhalt der in „ augmentShader “ definierten Funktion „ MAIN_FRAGMENT_AUGMENT() “ wird nach der Ausgabedefinition des ursprünglichen Materials eingefügt. Dadurch kann der Augment-Code die berechnete Farbe des Materials auslesen und in zusätzliche Farbausgaben schreiben, die durch „ ColorAttachment “-Befehle im Durchgang definiert sind. Dies ist nützlich für Multi-Render-Target-Pässe (MRT), die eine materialbezogene Schattierung erfordern, wie beispielsweise das Schreiben der beleuchteten Farbe in einen Anhang und einer Welt-Raum-Normalen in einen anderen in einem einzigen Zeichenaufruf.
RenderPass.OverrideMaterialAlle von diesem Pass gerenderten Objekte verwenden die einheitliche „ overrideMaterial “ anstelle ihrer eigenen. Dies ist nützlich für reine Tiefen-Pässe, Schattenkarten, Silhouetten- oder Kontureffekte sowie in allen anderen Fällen, in denen die gesamte Geometrie identisch schattiert werden soll, unabhängig davon, welches Material ihr zugewiesen ist. Die Eigenschaft „ augmentShader “ wird in diesem Modus nicht verwendet.

overrideMaterial : Material

Diese Eigenschaft enthält das Überschreibungsmaterial für den Render-Durchgang, wenn „ materialMode “ auf „ OverrideMaterial “ gesetzt ist.

passMode : RenderPass::PassMode [default: RenderPass.UserPass]

Diese Eigenschaft legt den Pass-Modus für den Render-Pass fest.

Zusätzlich zu den Standard-Render-Pässen unterstützt „ Qt Quick 3D “ die manuelle Auslösung interner Render-Pässe zum Rendern der Skybox und von 2D-Elementen.

KonstanteBeschreibung
RenderPass.UserPassEin vom Benutzer festgelegter Render-Pass.
RenderPass.SkyboxPassQt Quick 3DDer integrierte Skybox-Render-Pass.
RenderPass.Item2DPassQt Quick 3DDer integrierte 2D-Objekt-Render-Pass.

renderTargetFlags : RenderPass::RenderTargetFlags [default: RenderPass.None]

Diese Eigenschaft enthält die Render-Target-Flags für den Render-Durchlauf. Diese Flags beeinflussen, wie der Inhalt des Render-Targets zu Beginn und am Ende jedes Frames behandelt wird.

KonstanteBeschreibung
RenderPass.NoneKein besonderes Verhalten. Farb- und Tiefen-/Stencil-Inhalte werden zu Beginn jedes Frames gelöscht.
RenderPass.PreserveColorContentsBeibehaltung der Farbdaten des Renderziels zwischen den Einzelbildern, sodass die Ausgabe des vorherigen Einzelbilds erhalten bleibt, bis sie explizit überschrieben wird.
RenderPass.PreserveDepthStencilContentsDie Tiefen- und Stencil-Inhalte des Renderziels werden zwischen den Frames beibehalten.
RenderPass.DoNotStoreDepthStencilContentsSpeichere die Tiefen- und Stencil-Inhalte des Renderziels nach dem Rendern nicht (kann die Leistung auf gekachelten GPUs verbessern).

Siehe auch QRhiTextureRenderTarget::Flags.

stencilClearValue : int [default: 0]

Diese Eigenschaft enthält den Wert für die Transparenz der Schablone für den Render-Durchgang.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.