Sur cette page

RenderPass QML Type

Définit un passage de rendu personnalisé pour le rendu de contenu 3D. En savoir plus...

Import Statement: import QtQuick3D
Since: Qt 6.11
Inherits:

Object3D

Propriétés

Description détaillée

Un RenderPass définit une étape de rendu et la cible de rendu dans laquelle il écrit. Il combine trois aspects :

Un RenderPass devient actif pour une scène lorsqu’il est placé en tant qu’enfant d’un View3D ou d’un Node.

L’exemple suivant configure un simple « pass » hors écran qui effectue le rendu de tous les objets de la scène dans une texture personnalisée, qui peut ensuite être utilisée par un matériau ou un « SimpleQuadRenderer » :

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
            }
        ]
    }
}

Exposition des données aux shaders

Comme pour les effets et les matériaux personnalisés, le RenderPass exposera et mettra à jour automatiquement les propriétés définies par l’utilisateur pour les shaders. Toutes les propriétés QML déclarées sur un sous-type de RenderPass seront disponibles en tant qu’uniformes dans le shader.

Voir également SubRenderPass, RenderOutputProvider et RenderablesFilter.

Documentation sur les propriétés

augmentShader : url

Cette propriété contient l'URL du shader d'augmentation pour le passage de rendu lorsque le paramètre « materialMode » est défini sur « AugmentMaterial ».

Le fichier de shader doit contenir une fonction présentant la signature suivante :

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

Cette fonction sera combinée avec le shader de fragment existant du matériau utilisé par l'objet rendu lors de ce passage de rendu. Cela permet aux utilisateurs d'étendre le shader de matériau existant avec du code personnalisé.

clearColor : color [default: Qt.black]

Cette propriété définit la couleur de transparence pour le passage de rendu.

commands : list<RenderCommand>

Cette propriété contient la liste des commandes de rendu pour la passe de rendu.

Les commandes de la liste sont exécutées dans l'ordre où elles apparaissent dans la liste.

Remarque : les commandes de la fonction « RenderPass » et celles de la fonction « Effects » sont similaires mais ne sont pas identiques ; seules celles marquées comme compatibles peuvent être utilisées avec cette fonction « RenderPass ».

Voir également SubRenderPass, PipelineStateOverride, RenderablesFilter, RenderPassTexture, ColorAttachment, DepthTextureAttachment, DepthStencilAttachment, AddDefine et renderTargetBlend.

depthClearValue : real [default: 1.0]

Cette propriété contient la valeur de « depth clear » pour le passage de rendu.

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

Détermine la manière dont les matériaux des objets sont traités lors du rendu dans cette passe.

ConstanteDescription
RenderPass.OriginalMaterialLes objets sont rendus en utilisant les matériaux qui leur sont attribués, avec l’éclairage complet, les textures et les propriétés de matériau appliquées normalement. Il s’agit du mode standard permettant de rendre une copie fidèle de la scène dans une cible de rendu personnalisée — par exemple, un point de vue secondaire pour une sonde de réflexion, une caméra de recul ou un effet d’image dans l’image. Les propriétés ` overrideMaterial`, ` augmentShader` et ` shaders ` ne sont pas utilisées dans ce mode.
RenderPass.AugmentMaterialChaque objet est rendu avec son propre matériau, mais le contenu de la fonction ` MAIN_FRAGMENT_AUGMENT() ` définie dans ` augmentShader ` est injecté après la définition de sortie du matériau d’origine. Cela permet au code d’augmentation de lire la couleur calculée du matériau et d’écrire dans des sorties de couleur supplémentaires définies par les commandes ` ColorAttachment ` dans le passage. Ceci est utile pour les passes à cibles de rendu multiples (MRT) qui nécessitent un shading par matériau, comme l’écriture de la couleur éclairée dans une attache et d’une normale dans l’espace mondial dans une autre, le tout en un seul appel de dessin.
RenderPass.OverrideMaterialTous les objets rendus par ce passage utilisent l’ overrideMaterial unique au lieu de leur propre . Cela s’avère utile pour les passages de profondeur uniquement, les cartes d’ombres, les effets de silhouette ou de contour, ainsi que dans tout autre cas où l’on souhaite que toute la géométrie soit ombrée de manière identique, quel que soit le matériau qui lui est attribué. La propriété augmentShader n’est pas utilisée dans ce mode.

overrideMaterial : Material

Cette propriété contient le matériau de remplacement pour le passage de rendu lorsque l'option « materialMode » est définie sur « OverrideMaterial ».

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

Cette propriété définit le mode de rendu pour la passe de rendu.

Outre les passes de rendu standard, Qt Quick 3D permet aux utilisateurs de déclencher manuellement des passes de rendu internes pour le rendu de la skybox et des éléments 2D.

ConstanteDescription
RenderPass.UserPassUn passage de rendu spécifié par l’utilisateur.
RenderPass.SkyboxPassQt Quick Passe de rendu de skybox intégrée à 3D.
RenderPass.Item2DPassQt Quick Pass de rendu des éléments 2D intégré à 3D.

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

Cette propriété contient les indicateurs de cible de rendu pour le passage de rendu. Ces indicateurs déterminent la manière dont le contenu de la cible de rendu est géré au début et à la fin de chaque image.

ConstanteDescription
RenderPass.NoneAucun comportement particulier. Le contenu de la couleur et de la profondeur/du stencil est effacé au début de chaque image.
RenderPass.PreserveColorContentsConserve le contenu couleur de la cible de rendu d'une image à l'autre, de sorte que la sortie de l'image précédente reste en place jusqu’à ce qu’elle soit explicitement écrasée.
RenderPass.PreserveDepthStencilContentsConserve le contenu de profondeur et de stencil de la cible de rendu d'une image à l'autre.
RenderPass.DoNotStoreDepthStencilContentsNe pas stocker le contenu de la profondeur et du pochoir de la cible de rendu après le rendu (cela peut améliorer les performances sur les GPU en mosaïque).

Voir également QRhiTextureRenderTarget::Flags.

stencilClearValue : int [default: 0]

Cette propriété contient la valeur « transparent » du pochoir pour le passage de rendu.

© 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.