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); }
ユーザー定義のユニフォームバッファオブジェクトの場合は、バインディングを2またはautoで開始し、Qt 3Dが自動的にバインディングを行うようにしてください。異なるシェーダステージ間で一貫性を保つようにしてください。
#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を保持します。
メソッドの説明
ここに含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。