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);
}

ユーザー定義のユニフォーム・バッファ・オブジェクトの場合は、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 [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 から読み込んだシェーダーコードを返します。


© 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.