このページでは

ShaderProgram QML Type

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

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

この型は非推奨です。新しいコードでの使用は強く推奨しません。

プロパティ

方法

詳細な説明

ShaderProgram クラスは、シェーダープログラムをカプセル化しています。シェーダープログラムは、頂点シェーダーやフラグメントシェーダーなど、いくつかの異なるシェーダーで構成されています。

Qt3Dは、シェーダーのイントロスペクションフェーズ中にデフォルトのユニフォームが検出された場合、それらを自動的に設定します。

デフォルトのユニフォーム関連する Qt3D パラメータ名GLSL 宣言
ModelMatrixmodelMatrixuniform mat4 modelMatrix;
ViewMatrixviewMatrixuniform mat4 viewMatrix;
投影行列projectionMatrixuniform mat4 projectionMatrix;
ModelViewMatrixmodelViewuniform mat4 modelView;
ViewProjectionMatrixviewProjectionMatrixuniform mat4 ビュー投影行列;
ModelViewProjectionMatrixmodelViewProjection
mvp
uniform mat4 modelViewProjection;
uniform mat4 mvp;
InverseModelMatrixinverseModelMatrixuniform mat4 inverseModelMatrix;
逆ビュー行列逆ビュー行列uniform mat4 inverseViewMatrix;
逆投影行列逆投影行列uniform mat4 inverseProjectionMatrix;
モデルビュー行列の逆行列逆モデルビュー行列uniform mat4 inverseModelView;
逆ビュー投影行列逆ビュー投影行列uniform mat4 inverseViewProjectionMatrix;
逆モデルビュー投影行列逆モデルビュー投影行列uniform mat4 inverseModelViewProjection;
モデル法線行列modelNormalMatrixuniform mat3 modelNormalMatrix;
ModelViewNormalMatrixmodelViewNormaluniform mat3 modelViewNormal;
ビューポート行列ビューポート行列uniform mat4 ビューポート行列;
逆ビューポート行列inverseViewportMatrixuniform mat4 inverseViewportMatrix;
アスペクト比
(サーフェスの幅 / サーフェスの高さ)
aspectRatioxml-ph-0000@deepl.internal (サーフェスの幅 / サーフェスの高さ)uniform float aspectRatio;
露光exposureuniform float exposure;
ガンマガンマ均一な浮動小数点ガンマ;
時間
(ナノ秒単位)
timeuniform float time;
EyePositioneyePositionuniform vec3 eyePosition;
スキニングパレットskinningPalette[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 から読み込まれたシェーダーコードを返します。

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