RenderPass QML Type
Definiert einen benutzerdefinierten Render-Pass zum Rendern von 3D-Inhalten. Mehr...
| Import Statement: | import QtQuick3D |
| Since: | Qt 6.11 |
| Inherits: |
Eigenschaften
- augmentShader : url
- clearColor : color
- commands : list<RenderCommand>
- depthClearValue : real
- materialMode : RenderPass::MaterialModes
- overrideMaterial : Material
- passMode : RenderPass::PassMode
- renderTargetFlags : RenderPass::RenderTargetFlags
- stencilClearValue : int
Ausführliche Beschreibung
Ein RenderPass definiert einen Rendering-Schritt und das Renderziel, in das er schreibt. Er setzt sich aus drei Aspekten zusammen:
- Wo gerendert werden soll – eine oder mehrere Ausgabetexturen, die als „ ColorAttachment “- oder „ DepthTextureAttachment “-Befehle in „ commands “ deklariert sind.
- Was gerendert werden soll – welche Szenenobjekte der Pass zeichnet, gesteuert durch „ RenderablesFilter “-Befehle. Unterteilungen der Arbeit innerhalb desselben Renderziels werden mithilfe von „ SubRenderPass “-Befehlen beschrieben.
- Wie gerendert wird – die Befehle „ materialMode “ und alle „ PipelineStateOverride “-Befehle.
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.
| Konstante | Beschreibung |
|---|---|
RenderPass.OriginalMaterial | Objekte 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.AugmentMaterial | Jedes 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.OverrideMaterial | Alle 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.
| Konstante | Beschreibung |
|---|---|
RenderPass.UserPass | Ein vom Benutzer festgelegter Render-Pass. |
RenderPass.SkyboxPass | Qt Quick 3DDer integrierte Skybox-Render-Pass. |
RenderPass.Item2DPass | Qt 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.
| Konstante | Beschreibung |
|---|---|
RenderPass.None | Kein besonderes Verhalten. Farb- und Tiefen-/Stencil-Inhalte werden zu Beginn jedes Frames gelöscht. |
RenderPass.PreserveColorContents | Beibehaltung der Farbdaten des Renderziels zwischen den Einzelbildern, sodass die Ausgabe des vorherigen Einzelbilds erhalten bleibt, bis sie explizit überschrieben wird. |
RenderPass.PreserveDepthStencilContents | Die Tiefen- und Stencil-Inhalte des Renderziels werden zwischen den Frames beibehalten. |
RenderPass.DoNotStoreDepthStencilContents | Speichere 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.