このページでは

QuadTextureProvider QML Type

カスタムフラグメントシェーダーを使用してクワッドテクスチャをレンダリングするために使用されます。詳細...

Import Statement: import QtQuick3D.Helpers
Since: Qt 6.12
Inherits:

TextureProviderExtension

プロパティ

詳細な説明

このタイプは、カスタムシェーダーコードを使用してクワッドテクスチャをレンダリングするために使用され、プログラム可能なテクスチャを簡単に取得できる方法を提供します。フラグメントシェーダーと必要なプロパティを指定することで、パスが作成され、指定されたデータに基づいてシェーダーパイプラインが構築されます。この際、プロパティはユニフォーム値としてフラグメントシェーダーに渡されます。

提供される組み込み関数:

キーワード型説明
MAINvoid MAIN() はエントリポイントです。提供されるフラグメントシェーダーには、この関数が必ず含まれている必要があります。
INPUT_UVvec2現在のフラグメントの UV 座標。右上が [1, 1]、左下が [0, 0] です。
OUTPUT_SIZEvec2出力テクスチャのサイズ。

カスタムプロパティはユニフォームにマッピングされます。値が変更されるたびに、更新された値がシェーダーに反映されます。この概念は、ShaderEffect ですでに馴染みのあるものかもしれません。

QMLプロパティ名とGLSL変数名は一致している必要があります。個々のユニフォームについて、シェーダーコード内で別途宣言を行う必要はありません。代わりに、QMLプロパティ名をそのまま使用できます。

以下の表に、型のマッピング関係を示します:

QML 型シェーダーの型備考
real、int、boolfloat、int、bool
colorvec4sRGB からリニアへの変換は暗黙的に行われます
vector2dvec2
vector3dvec3
vector4dvec4
matrix4x4mat4
クォータニオンvec4スカラー値はw
rectvec4
点、サイズvec2
TextureInputsampler2D

単純な赤色のテクスチャを出力する例としては、次のように行うことができます:

Texture {
    textureProvider: QuadTextureProvider {
        width: 128
        height: 128
        fragmentShaderCode: `
            void MAIN() {
                FRAGCOLOR = vec4(1.0, 0.0, 0.0, 1.0);
            }
        `
    }
}

Texture プロパティからサンプリングし、UVカラーと混合する別の例:

Texture {
    textureProvider: QuadTextureProvider {
        fragmentShaderCode: `
        void MAIN() {
            vec2 uv = INPUT_UV;
            vec4 c = texture(checkers, uv);
            FRAGCOLOR = mix(c, vec4(uv, 1, 1), 0.5);
        }`

        property Texture checkers : Texture {
            source: "../shared/maps/checkers2.png"
        }
    }
}

結果は次のようになります:

ティール、白、青、マゼンタでグラデーションが塗られたセルの2×2グリッド

注: 頂点シェーダーの指定は サポートされておらず、フラグメントシェーダーのみがサポートされています。

注: Texture プロパティが指定された場合 、依存するテクスチャが利用可能になるまでレンダリングは行われません。

注: 現在、実行時にプロパティを追加・削除する機能はサポートされておらず 、既存のプロパティの変更のみ可能です 。

「ShaderEffect」も参照してください 。

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

format : enumeration [default: TexureData.RGBA16F, since 6.12]

このプロパティは、出力テクスチャのフォーマットを指定します。

定数説明
TexureData.RGBA8カラーフォーマットは、R、G、B、およびアルファチャンネルにおいて 8 ビット整数とみなされます。
TexureData.RGBA16Fカラーフォーマットは、R、G、B、およびアルファチャンネルにおいて 16 ビット浮動小数点数として扱われます。
TexureData.RGBA32FR、G、B、およびアルファチャンネルで、カラーフォーマットは 32 ビット浮動小数点として扱われます。
TexureData.RGBE8この色形式は、R、G、B チャンネルが 8 ビットの仮数、指数が 8 ビットの共有指数として扱われます。
TexureData.R8このカラーフォーマットは、R チャンネルにおいて 8 ビットの整数として扱われます。
TexureData.R16R チャンネルでは、カラーフォーマットは 16 ビット整数とみなされます。
TexureData.R16Fこのカラーフォーマットは、R チャンネルにおいて 16 ビットの浮動小数点数として扱われます。
TexureData.R32Fこの色形式は、R チャンネルが 32 ビット浮動小数点数として扱われます。

注: TexureData.RGBA8を除き 、実行時にすべてのフォーマットがサポートされるわけではありません。これは、使用されているバックエンドやハードウェアによって異なるためです。

このプロパティは Qt 6.12 で導入されました。

fragmentShader : url [since 6.12]

カスタムフラグメントシェーダーコードのスニペットを含むファイルを指定します。

値は URL であり、ローカルファイルであるか、qrc スキームを使用して Qt リソースシステム経由で埋め込まれたファイルにアクセスする必要があります。相対ファイルパス(スキームなし)も使用可能で、その場合はファイルがコンポーネント(.qml ファイル)を基準とした相対パスとして扱われます。

警告:シェーダーの スニペットは、信頼できるコンテンツであるとみなされます。アプリケーション開発者は、アプリケーションの一部ではないユーザー提供のコンテンツの読み込みを許可する前に、潜在的な影響を慎重に検討することをお勧めします。

注: このプロパティが設定されている場合 、fragmentShaderCode は fragmentShader より優先されます。

このプロパティは Qt 6.12 で導入されました。

fragmentShaderCodeも参照してください 。

fragmentShaderCode : string [since 6.12]

カスタムフラグメントシェーダーコードの断片を指定します。

ファイルとして提供せずに、シェーダーコードを文字列としてインラインで記述する方法として使用されます。

注: このプロパティが設定されている場合 、fragmentShader よりも優先されます。

このプロパティは Qt 6.12 で導入されました。

「fragmentShader」も参照してください 。

height : int [default: 128, since 6.12]

出力テクスチャの高さをピクセル単位で指定します。

このプロパティは Qt 6.12 で導入されました。

「width」も参照してください 。

width : int [default: 128, since 6.12]

出力テクスチャの幅をピクセル単位で指定します。

このプロパティは Qt 6.12 で導入されました。

「height」も参照してください 。

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