このページでは

RenderPass QML Type

3Dコンテンツをレンダリングするためのカスタムレンダーパスを定義します。詳細...

Import Statement: import QtQuick3D
Since: Qt 6.11
Inherits:

Object3D

プロパティ

詳細な説明

RenderPass は、レンダリングのステップと、そこに書き込まれるレンダリングターゲットを定義します。これは、以下の 3 つの要素の組み合わせです:

  • レンダリング先— 『commands 』内でColorAttachment またはDepthTextureAttachment コマンドとして宣言された、1つまたは複数の出力テクスチャ。
  • 何をレンダリングするか— パスが描画するシーンオブジェクト。これは `RenderablesFilter ` コマンドによって制御されます。同じレンダリングターゲット内での作業の細分化は、`SubRenderPass ` コマンドを使用して記述されます。
  • レンダリング方法— `materialMode ` コマンドおよび `PipelineStateOverride ` コマンドです。

RenderPassは、View3D またはNode の子として配置されたときに、そのシーンに対して有効になります。

次の例では、すべてのシーンオブジェクトをカスタムテクスチャにレンダリングする単純なオフスクリーンパスを設定しています。このテクスチャは、マテリアルや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
            }
        ]
    }
}

シェーダーへのデータの公開

エフェクトやカスタムマテリアルと同様に、RenderPassはユーザー定義のプロパティをシェーダーに対して自動的に公開・更新します。RenderPassのサブタイプで宣言されたQMLプロパティは、すべてシェーダー内でユニフォームとして利用可能になります。

関連項目: SubRenderPass 、RenderOutputProvider 、およびRenderablesFilter 。

プロパティのドキュメント

augmentShader : url

このプロパティは、materialMode がAugmentMaterial に設定されている場合、レンダリングパスのオーグメントシェーダーのURLを保持します。

シェーダーファイルには、以下のシグネチャを持つ関数が含まれている必要があります。

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

この関数は、このレンダーパスでレンダリングされるオブジェクトが使用しているマテリアルの既存のフラグメントシェーダーと組み合わされます。これにより、ユーザーは既存のマテリアルシェーダーをカスタムコードで拡張できるようになります。

clearColor : color [default: Qt.black]

このプロパティは、レンダリングパスに適用されるクリアカラーを指定します。

commands : list<RenderCommand>

このプロパティには、レンダリングパス用のレンダリングコマンドのリストが格納されます。

リスト内のコマンドは、リストに表示される順序で実行されます。

注: RenderPass とEffectsのコマンドは 似ていますが、まったく同じではありません。互換性があるとマークされたもののみ、このRenderPass で使用できます。

関連項目: SubRenderPass 、PipelineStateOverride 、RenderablesFilter 、RenderPassTexture 、ColorAttachment 、DepthTextureAttachment 、DepthStencilAttachment 、AddDefine 、およびrenderTargetBlend 。

depthClearValue : real [default: 1.0]

このプロパティには、レンダリングパスの「深度クリア」値が格納されます。

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

このパスへのレンダリング時に、オブジェクトのマテリアルがどのように扱われるかを制御します。

定数説明
RenderPass.OriginalMaterialオブジェクトは、それぞれに割り当てられたマテリアルを使用してレンダリングされ、照明、テクスチャ、マテリアルプロパティが通常通り完全に適用されます。これは、シーンの忠実なコピーをカスタムレンダリングターゲットにレンダリングするための標準モードです。例えば、リフレクションプローブ用のセカンダリ視点、リアビューカメラ、またはピクチャー・イン・ピクチャー効果などが該当します。 このモードでは、overrideMaterial 、augmentShader 、およびshaders プロパティは使用されません。
RenderPass.AugmentMaterial各オブジェクトは独自のマテリアルでレンダリングされますが、augmentShader で定義されたMAIN_FRAGMENT_AUGMENT() 関数の内容が、元のマテリアルの出力定義の後に挿入されます。これにより、拡張コードはマテリアルで計算された色を読み取り、そのパス内のColorAttachment コマンドで定義された追加の色出力に書き込むことができます。 これは、1回の描画呼び出しで、1つのアタッチメントに照明付きの色を書き込み、別のアタッチメントにワールド空間の法線を書き込むなど、マテリアルごとのシェーディングを必要とするマルチレンダリングターゲット(MRT)パスで役立ちます。
RenderPass.OverrideMaterialこのパスでレンダリングされるすべてのオブジェクトは、独自のoverrideMaterial の代わりに単一の を使用します。これは、深度専用のパス、シャドウマップ、シルエットやアウトライン効果、およびどのマテリアルが割り当てられていてもすべてのジオメトリを同一のシェーディングで処理したい場合などに役立ちます。このモードでは、augmentShader プロパティは使用されません。

overrideMaterial : Material

このプロパティは、materialMode がOverrideMaterial に設定されている場合、レンダリングパスのオーバーライドマテリアルを保持します。

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

このプロパティは、レンダリングパスのパスモードを保持します。

標準のユーザーレンダリングパスに加え、Qt Quick 3D では、スカイボックスや 2D アイテムをレンダリングするための内部レンダリングパスをユーザーが手動でトリガーすることも可能です。

定数説明
RenderPass.UserPassユーザー指定のレンダーパス。
RenderPass.SkyboxPassQt Quick 定数説明xml-ph-0000@deepl.internal 3D に組み込まれているスカイボックス・レンダリングパス。
RenderPass.Item2DPassQt Quick 3D に組み込まれている 2D アイテムのレンダリングパス。

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

このプロパティは、レンダリングパスに対するレンダリングターゲットのフラグを保持します。これらのフラグは、各フレームの開始時および終了時にレンダリングターゲットの内容がどのように処理されるかに影響を与えます。

定数説明
RenderPass.None特別な動作はありません。各フレームの開始時に、色および深度/ステンシルの内容がクリアされます。
RenderPass.PreserveColorContentsフレーム間でレンダリングターゲットの色データを保持するため、明示的に上書きされるまで前のフレームの出力が残ります。
RenderPass.PreserveDepthStencilContentsフレーム間でレンダリングターゲットの深度およびステンシルの内容を保持します。
RenderPass.DoNotStoreDepthStencilContentsレンダリング後にレンダリングターゲットの深度およびステンシル内容を保存しません(タイル型 GPU ではパフォーマンスが向上する場合があります)。

QRhiTextureRenderTarget::Flagsも参照してください 。

stencilClearValue : int [default: 0]

このプロパティには、レンダーパスに対するステンシルクリア値が格納されます。

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