ShaderProgram QML Type

シェーダープログラムをカプセル化します。詳細...

Import Statement: import Qt3D.Render 2.8
In C++: QShaderProgram
Status: Deprecated

プロパティ

メソッド

詳細説明

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 [read-only]

現在のシェーダープログラムのログを保持します。これは、シェーダープログラムのコンパイル失敗を診断するのに便利です。


status : enumeration [read-only]

現在のシェーダプログラムのステータスを保持します。


tessellationControlShaderCode : string

このシェーダプログラムが使用するテッセレーションコントロールシェーダコードを保持します。


tessellationControlShaderGraph : string

このシェーダプログラムビルダーが使用するテッセレーションコントロールシェーダグラフのURLを保持します。


tessellationEvaluationShaderCode : string

このシェーダプログラムで使用するテッセレーション評価シェーダコードを保持します。


tessellationEvaluationShaderGraph : string

このシェーダプログラムビルダが使用するテッセレーション評価シェーダグラフのURLを保持します。


vertexShaderCode : string

このシェーダプログラムで使用する頂点シェーダコードを保持します。


vertexShaderGraph : string

このシェーダプログラムビルダーが使用する頂点シェーダグラフのURLを保持します。


メソッドの説明

string loadSource(url sourceUrl)

sourceUrl から読み込んだシェーダーコードを返します。


ここに含まれるドキュメントの著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。