ShaderProgram QML Type
シェーダープログラムをカプセル化します。詳細...
Import Statement: | import Qt3D.Render 2.8 |
In C++: | QShaderProgram |
Status: | Deprecated |
プロパティ
- computeShaderCode : string
- computeShaderGraph : string
- format : enumeration
- fragmentShaderCode : string
- fragmentShaderGraph : string
- geometryShaderCode : string
- geometryShaderGraph : string
- log : string
- status : enumeration
- tessellationControlShaderCode : string
- tessellationControlShaderGraph : string
- tessellationEvaluationShaderCode : string
- tessellationEvaluationShaderGraph : string
- vertexShaderCode : string
- vertexShaderGraph : string
方法
- string loadSource(url sourceUrl)
詳細説明
ShaderProgramクラスはシェーダープログラムをカプセル化します。シェーダプログラムは、頂点シェーダやフラグメントシェーダなど、複数の異なるシェーダから構成されます。
Qt3Dは、シェーダのインスロスペクションの段階でデフォルトユニフォームのセットに遭遇した場合、自動的にユニフォームを入力します。
デフォルトユニフォーム | 関連する Qt3D パラメータ名 | GLSL 宣言 | |||
---|---|---|---|---|---|
モデル行列 | モデル行列 | uniform mat4 modelMatrix; | |||
ビュー行列 | ビュー行列 | 一様な mat4 viewMatrix; | |||
投影行列 | 投影行列 | 一様な mat4 projectionMatrix; | |||
モデルビュー行列 | モデルビュー | 一様な mat4 modelView; | |||
ビュー投影行列 | ビュー射影行列 | 一様な mat4 viewProjectionMatrix; | |||
モデルビュー投影行列 | modelViewProjection mvp | 一様 mat4 modelViewProjection; 一様 mat4 mvp; | |||
逆モデル行列 | 逆モデル行列 | 一様 mat4 inverseModelMatrix; | |||
逆ビュー行列 | 逆ビュー行列 | 一様な mat4 inverseViewMatrix; | |||
逆投影行列 | 逆投影行列 | 一様な mat4 inverseProjectionMatrix; | |||
逆モデルビュー行列 | 逆モデルビュー | 一様な mat4 inverseModelView. | |||
インバースビュー射影行列 | 逆ビュー射影行列 | 一様な mat4 inverseViewProjectionMatrix; | |||
逆モデルビュー射影行列 | 逆モデルビュー射影 | 一様な mat4 inverseModelViewProjection. | |||
モデル正規行列 | モデル正規行列 | 一様な mat3 modelNormalMatrix; | |||
モデルビュー法線行列 | モデルビュー法線 | 一様な mat3 modelViewNormal; | |||
ビューポート行列 | ビューポート行列 | 一様な mat4 viewportMatrix; | |||
逆ビューポート行列 | 逆ビューポート行列 | 一様な mat4 inverseViewportMatrix; | |||
アスペクト比 (面の幅 / 面の高さ) | アスペクト比 | 一様な浮動小数点アスペクト比; | |||
露出 | 露出 | 一様な float 露出; | |||
ガンマ | ガンマ | 一様な浮動小数点ガンマ; | |||
時間 (ナノ秒単位) | 時間 | 一様な float time; | |||
アイポジション | アイポジション | 一様な vec3 eyePosition; | |||
スキニングパレット | スキニングパレット[0] | const int maxJoints = 100; uniform mat4 skinningPalette[maxJoints]; |
RHI サポート
Qt 3D の RHI バックエンドで使用する GLSL 450 シェーダコードを記述する場合、デフォルトのユニフォームは 2 つのユニフォームバッファオブジェクトとして提供されます。
これらのバインディング位置は、RenderViewユニフォーム用のバインディング0とCommandユニフォーム用のバインディング1に設定されています。
#version 450 core layout(location = 0) in vec3 vertexPosition; layout(std140, binding = 0) uniform qt3d_render_view_uniforms { mat4 viewMatrix; mat4 projectionMatrix; mat4 uncorrectedProjectionMatrix; mat4 clipCorrectionMatrix; mat4 viewProjectionMatrix; mat4 inverseViewMatrix; mat4 inverseProjectionMatrix; mat4 inverseViewProjectionMatrix; mat4 viewportMatrix; mat4 inverseViewportMatrix; vec4 textureTransformMatrix; vec3 eyePosition; float aspectRatio; float gamma; float exposure; float time; float yUpInNDC; float yUpInFBO; }; layout(std140, binding = 1) uniform qt3d_command_uniforms { mat4 modelMatrix; mat4 inverseModelMatrix; mat4 modelViewMatrix; mat3 modelNormalMatrix; mat4 inverseModelViewMatrix; mat4 modelViewProjection; mat4 inverseModelViewProjectionMatrix; }; void main() { gl_Position = (projectionMatrix * viewMatrix * modelMatrix * vertexPosition); }
ユーザー定義のユニフォーム・バッファ・オブジェクトの場合は、Qt 3D に自動的にバインディングを行わせるために、2またはautoで始まるバインディングを使用してください。異なるシェーダステージ間で一貫性を保つようにしてください。
#version 450 core layout(std140, binding = auto) uniform my_uniforms { vec4 myColor; }; layout(location=0) out vec4 fragColor; void main() { fragColor = myColor; }
ユニフォームに値を与えることに関しては、変更はありません。
上記の例では、myColor を設定することで完了します:
Parameter { name: "myColor"; value: "blue" }
テクスチャはスタンドアロンのユニフォームとして定義する必要があります。
#version 450 core layout(binding=0) uniform sampler2D source; layout(location=0) out vec4 fragColor; void main() { fragColor = texture(source, vec2(0.5, 0.5)); }
プロパティ・ドキュメンテーション
computeShaderCode : string |
このシェーダプログラムによって使用されるコンピュートシェーダコードを保持します。
computeShaderGraph : string |
このシェーダプログラムビルダーによって使用されるコンピュートシェーダグラフへの URL を保持します。
format : enumeration |
ShaderProgram で提供されるコードのフォーマットを保持します。 デフォルトはShaderProgram.GLSL です。
fragmentShaderCode : string |
このシェーダプログラムで使用されるフラグメントシェーダコードを保持します。
fragmentShaderGraph : string |
このシェーダプログラムビルダが使用するフラグメントシェーダグラフへの URL を保持します。
geometryShaderCode : string |
このシェーダプログラムが使用するジオメトリシェーダコードを保持します。
geometryShaderGraph : string |
このシェーダプログラムビルダーが使用するジオメトリシェーダグラフへの URL を保持します。
log : string |
現在のシェーダープログラムのログを保持します。これは、シェーダープログラムのコンパイル失敗を診断するのに便利です。
status : enumeration |
現在のシェーダプログラムのステータスを保持します。
tessellationControlShaderCode : string |
このシェーダプログラムが使用するテッセレーションコントロールシェーダコードを保持します。
tessellationControlShaderGraph : string |
このシェーダプログラムビルダーが使用するテッセレーションコントロールシェーダグラフのURLを保持します。
tessellationEvaluationShaderCode : string |
このシェーダプログラムで使用するテッセレーション評価シェーダコードを保持します。
tessellationEvaluationShaderGraph : string |
このシェーダプログラムビルダが使用するテッセレーション評価シェーダグラフのURLを保持します。
vertexShaderCode : string |
このシェーダプログラムが使用する頂点シェーダコードを保持します。
vertexShaderGraph : string |
このシェーダプログラムビルダーが使用する頂点シェーダグラフのURLを保持します。
メソッドの説明
© 2025 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.