SkyMaterial QML Type
プロシージャルな空をレンダリングし、画像ベースの照明データを生成します。詳細...
| Import Statement: | import QtQuick3D |
| Since: | Qt 6.12 |
プロパティ
- enableIBL : bool
(since 6.12) - fragmentShader : url
(since 6.12) - fragmentShaderCode : string
(since 6.12) - iblRenderFrames : int
(since 6.12) - iblSampleCount : int
(since 6.12) - radianceMapSize : int
(since 6.12) - skyboxMode : enumeration
(since 6.12)
詳細な説明
SkyMaterialは、カスタムフラグメントシェーダーコードを使用して、空の環境をキューブマップとしてレンダリングします。生成されたキューブマップは、必要に応じてフィルタリングを行い、物理ベースレンダリング用の画像ベースライティング(IBL)として使用することができます。
このシェーダーはキューブマップの6つの面すべてに対して評価され、任意のプロシージャルな空、グラデーション、または解析モデルを実装することができます。
生成されたキューブマップは、可視シーンの背景として、また有効になっている場合はイメージベースライティングのソースとしても使用されます。
注: シェーダーコードやプロパティの変更が 、生成された IBL に反映されるまでには、1 フレーム以上かかる場合があります。
シェーダー
シェーダーは、組み込み変数qt_eyeDir (vec3) にアクセスできます。この変数は、キューブマップの中心から現在のサンプル方向への、正規化されていない方向ベクトルを提供します。
フラグメントシェーダーは、MAIN() エントリーポイントを定義する必要があります。このエントリーポイントは、キューブマップのレンダリング中に生成される各フラグメントに対して実行されます。
最終的なピクセルカラーは、フラグメントシェーダーの出力変数であるFRAGCOLOR (vec4) に書き込まなければなりません。
最小限のシェーダー例:
void MAIN()
{
vec3 dir = normalize(qt_eyeDir);
// Output color (encoded direction as RGB)
FRAGCOLOR = vec4(dir * 0.5 + 0.5, 1.0);
}SkyMaterialで宣言されたカスタムQMLプロパティは、フラグメントシェーダー内で自動的にユニフォームとして公開されます。プロパティ名はGLSLの変数名と一致している必要があります。明示的なユニフォーム宣言は不要です。
以下の型マッピングがサポートされています:
| 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 |
プロパティのドキュメント
enableIBL : bool [default: true, since 6.12]
生成されたスカイクーブマップを画像ベースのライティングに使用するかどうかを指定します。
有効にすると、エンジンは、物理ベースレンダリングにおけるアンビエントライティングや反射に使用される、フィルタリング済みのラディアンスマップおよびイラディアンスマップを生成します。
無効の場合、空は視覚的な背景としてのみレンダリングされ、IBLの前処理は行われません。
このプロパティは Qt 6.12 で導入されました。
「SceneEnvironment::lightProbe」も参照してください 。
fragmentShader : url [since 6.12]
ファイルまたはリソースURLから読み込まれたフラグメントシェーダーを指定します。
fragmentShaderとfragmentShaderCode の両方が設定されている場合、fragmentShaderCode が優先されます。
シェーダーが指定されていない場合は、組み込みのデバッグ用シェーダーが使用されます。
このプロパティは Qt 6.12 で導入されました。
fragmentShaderCodeも参照してください 。
fragmentShaderCode : string [since 6.12]
インラインのフラグメントシェーダーのソースコードを指定します。
これは `fragmentShader ` と同様の動作をし、同じ実行モデル、組み込み関数、およびプロパティからユニフォームへの自動マッピングを使用します。
fragmentShader と fragmentShaderCode の両方が設定されている場合、このプロパティが優先されます。
このプロパティは Qt 6.12 で導入されました。
fragmentShaderも参照してください 。
iblRenderFrames : int [default: 0, since 6.12]
IBLプリフィルターの処理が各フレームにどのように割り振られるかを制御します。
- 0— すべてを1つのフレームに収める:サンプルの蓄積、正規化、および放射照度はすべて同じフレーム内で評価される。
- N ≥ 1—iblSampleCount のサンプルはN個のスライスフレーム(1フレームあたり
ceil(iblSampleCount / N)サンプル)に分割され、その後、専用の正規化および放射照度フレームが続きます。
値が大きいほど、GGX プリフィルターのコストがより多くのフレームに分散されます。これは、空の変化が頻繁ではなく、画質のために高いiblSampleCount が必要な場合に有用です。
注: enableIBL がfalse の場合、この プロパティは効果を持ちません。
このプロパティは Qt 6.12 で導入されました。
「 iblSampleCount 」および「enableIBL 」も参照してください 。
iblSampleCount : int [default: 32, since 6.12]
フィルタ処理された放射輝度マップの出力テクセルごとに評価されるGGX重要度サンプルの総数。この値を大きくすると、太陽の円盤などの高周波数成分におけるシマリングが軽減されますが、その代わりに生成時間が長くなります。
値は [1, 1024] の範囲にクリップされます。
注: enableIBL がfalse に設定されている場合、この プロパティは効果を持ちません。
このプロパティは Qt 6.12 で導入されました。
「 iblRenderFrames 」および「enableIBL 」も参照してください 。
radianceMapSize : int [default: 512, since 6.12]
画像ベースのライティングおよび反射プローブに使用される、生成された環境キューブマップの解像度を指定します。
値を高く設定すると、特に光沢のあるマテリアルにおいて、反射の鮮明さやライティングの品質が向上しますが、メモリ使用量とレンダリングコストが増加します。
値は最も近い 2 の累乗にスナップされ、[8, 2048] の範囲にクリップされます。
注: skyboxMode が ScreenSpace の値に設定されている場合 、表示される空は画面上で直接評価され、このプロパティはIBL/反射キューブマップにのみ影響します。SkyMaterial.Cubemap が設定されている場合、このプロパティは表示される背景の鮮明度も決定します。enableIBL がfalse で、skyboxMode がScreenSpace の値であり、反射プローブが存在しない場合、キューブマップはまったく生成されません。
このプロパティはQt 6.12で導入されました。
skyboxMode およびenableIBLも参照してください 。
skyboxMode : enumeration [default: SkyMaterial.Cubemap, since 6.12]
SkyMaterial が可視背景として生成する内容を選択します。
| 定数 | 説明 |
|---|---|
SkyMaterial.Cubemap | 背景は、ラディアンスキューブマップ(画像ベースの照明に使用されるものと同じキューブ)からサンプリングされ、その解像度はradianceMapSize に従います。静的な空の場合、キューブは一度レンダリングされた後、毎フレーム低コストでサンプリングされるため、カメラ以外が動いていない場合、これはフレームあたりのコストが最も低くなります。シャープネスはradianceMapSize に制限されます。 |
SkyMaterial.ScreenSpaceFull | スカイシェーダーは、毎フレーム、ビューポートのフル解像度で画面上で直接評価されます(最も鮮明ですが、コストも最も高くなります)。 |
SkyMaterial.ScreenSpaceHalf | 各軸ごとに半分の解像度(ピクセル数の4分の1)で画面空間上で直接評価し、ビューポートにアップスケーリングする。 |
SkyMaterial.ScreenSpaceQuarter | 各軸ごとに 4 分の 1 の解像度(ピクセル数が 16 分の 1)でスクリーン空間上で直接評価し、ビューポートにアップスケーリングします。 |
ScreenSpace モードは、可視背景をIBLキューブから切り離すもので、動的な空(例:動く太陽、アニメーション化されたボリュームクラウド)に最適です。Cubemap は静的な空に最適です。Cubemap は、enableIBL がfalse の場合でも、キューブマップの生成を強制します。
このプロパティは Qt 6.12 で導入されました。
radianceMapSize およびenableIBLも参照してください 。
© 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.