QuadTextureProvider QML Type
カスタムフラグメントシェーダーを使用してクワッドテクスチャをレンダリングするために使用されます。詳細...
| Import Statement: | import QtQuick3D.Helpers |
| Since: | Qt 6.12 |
| Inherits: |
プロパティ
- format : enumeration
(since 6.12) - fragmentShader : url
(since 6.12) - fragmentShaderCode : string
(since 6.12) - height : int
(since 6.12) - width : int
(since 6.12)
詳細な説明
このタイプは、カスタムシェーダーコードを使用してクワッドテクスチャをレンダリングするために使用され、プログラム可能なテクスチャを簡単に取得できる方法を提供します。フラグメントシェーダーと必要なプロパティを指定することで、パスが作成され、指定されたデータに基づいてシェーダーパイプラインが構築されます。この際、プロパティはユニフォーム値としてフラグメントシェーダーに渡されます。
提供される組み込み関数:
| キーワード | 型 | 説明 |
|---|---|---|
| MAIN | void MAIN() はエントリポイントです。提供されるフラグメントシェーダーには、この関数が必ず含まれている必要があります。 | |
| INPUT_UV | vec2 | 現在のフラグメントの UV 座標。右上が [1, 1]、左下が [0, 0] です。 |
| OUTPUT_SIZE | vec2 | 出力テクスチャのサイズ。 |
カスタムプロパティはユニフォームにマッピングされます。値が変更されるたびに、更新された値がシェーダーに反映されます。この概念は、ShaderEffect ですでに馴染みのあるものかもしれません。
QMLプロパティ名とGLSL変数名は一致している必要があります。個々のユニフォームについて、シェーダーコード内で別途宣言を行う必要はありません。代わりに、QMLプロパティ名をそのまま使用できます。
以下の表に、型のマッピング関係を示します:
| QML 型 | シェーダーの型 | 備考 |
|---|---|---|
| real、int、bool | float、int、bool | |
| color | vec4 | sRGB からリニアへの変換は暗黙的に行われます |
| vector2d | vec2 | |
| vector3d | vec3 | |
| vector4d | vec4 | |
| matrix4x4 | mat4 | |
| クォータニオン | vec4 | スカラー値はw |
| rect | vec4 | |
| 点、サイズ | vec2 | |
| TextureInput | sampler2D |
単純な赤色のテクスチャを出力する例としては、次のように行うことができます:
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"
}
}
}結果は次のようになります:

注: 頂点シェーダーの指定は サポートされておらず、フラグメントシェーダーのみがサポートされています。
注: Texture プロパティが指定された場合 、依存するテクスチャが利用可能になるまでレンダリングは行われません。
注: 現在、実行時にプロパティを追加・削除する機能はサポートされておらず 、既存のプロパティの変更のみ可能です 。
「ShaderEffect」も参照してください 。
プロパティのドキュメント
format : enumeration [default: TexureData.RGBA16F, since 6.12]
このプロパティは、出力テクスチャのフォーマットを指定します。
| 定数 | 説明 |
|---|---|
TexureData.RGBA8 | カラーフォーマットは、R、G、B、およびアルファチャンネルにおいて 8 ビット整数とみなされます。 |
TexureData.RGBA16F | カラーフォーマットは、R、G、B、およびアルファチャンネルにおいて 16 ビット浮動小数点数として扱われます。 |
TexureData.RGBA32F | R、G、B、およびアルファチャンネルで、カラーフォーマットは 32 ビット浮動小数点として扱われます。 |
TexureData.RGBE8 | この色形式は、R、G、B チャンネルが 8 ビットの仮数、指数が 8 ビットの共有指数として扱われます。 |
TexureData.R8 | このカラーフォーマットは、R チャンネルにおいて 8 ビットの整数として扱われます。 |
TexureData.R16 | R チャンネルでは、カラーフォーマットは 16 ビット整数とみなされます。 |
TexureData.R16F | このカラーフォーマットは、R チャンネルにおいて 16 ビットの浮動小数点数として扱われます。 |
TexureData.R32F | この色形式は、R チャンネルが 32 ビット浮動小数点数として扱われます。 注: |
このプロパティは 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.