Sur cette page

ShaderProgram QML Type

Encapsule un programme de shader. En savoir plus...

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

Ce type est obsolète. Nous vous déconseillons fortement de l'utiliser dans du nouveau code.

Propriétés

Méthodes

Description détaillée

La classe ShaderProgram encapsule un programme de shaders. Un programme de shaders se compose de plusieurs shaders différents, tels que les shaders de sommets et de fragments.

Qt3D renseignera automatiquement un ensemble d’uniformes par défaut s’ils sont détectés lors de la phase d’introspection du shader.

Uniforme par défautNom du paramètre Qt3D associéDéclaration GLSL
ModelMatrixmodelMatrixuniform mat4 modelMatrix;
ViewMatrixviewMatrixuniform mat4 viewMatrix;
Matrice de projectionprojectionMatrixuniform mat4 projectionMatrix;
Matrice de vue du modèlemodelViewuniform mat4 modelView;
Matrice de projection de la vuematrice de projection de la vueuniform mat4 viewProjectionMatrix;
Matrice de projection modèle-vuemodelViewProjection
mvp
uniform mat4 modelViewProjection;
uniform mat4 mvp;
Matrice inverse du modèleinverseModelMatrixuniform mat4 inverseModelMatrix;
Matrice de vue inverseinverseViewMatrixuniform mat4 inverseViewMatrix;
Matrice de projection inversematrice de projection inverseuniform mat4 inverseProjectionMatrix;
Matrice inverse de la projection modèle-vueinverseModelViewuniform mat4 inverseModelView ;
Matrice de projection inverse de la vuematrice inverse de projection vueuniform mat4 inverseViewProjectionMatrix ;
Matrice de projection inverse du modèle et de la vueinverseModelViewProjectionuniform mat4 inverseModelViewProjection;
Matrice normale du modèlemodelNormalMatrixuniform mat3 matriceNormaleDuModèle;
Matrice de normales de vue du modèlemodelViewNormaluniform mat3 modelViewNormal;
ViewportMatrixviewportMatrixuniform mat4 viewportMatrix;
Matrice inverse de la fenêtre de visualisationinverseViewportMatrixuniform mat4 inverseViewportMatrix;

du rapport d'aspect (largeur de la surface / hauteur de la surface)
aspectRatiouniform float aspectRatio;
Expositionexposureuniform float exposure;
Gammagammagamma uniforme à virgule flottante ;

temporelle (en nanosecondes)
tempsuniform float time;
EyePositioneyePositionuniform vec3 eyePosition;
SkinningPaletteskinningPalette[0]const int maxJoints = 100;
uniform mat4 skinningPalette[maxJoints];

Prise en charge de RHI

Lors de l'écriture de code de shader GLSL 450 destiné à être utilisé avec le backend RHI d'Qt 3D, les uniformes par défaut seront fournis sous la forme de 2 objets de tampon uniformes.

Leurs emplacements de liaison sont définis sur 0 pour les uniformes RenderView et sur 1 pour les uniformes Command.

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

Pour les objets de tampon uniform définis par l’utilisateur, utilisez une liaison à partir de 2 ou « auto » pour laisser Qt 3D déterminer automatiquement la liaison. Veillez à maintenir la cohérence entre les différentes étapes du shader.

#version 450 core

layout(std140, binding = auto) uniform my_uniforms {
  vec4 myColor;
};

layout(location=0) out vec4 fragColor;

void main()
{
    fragColor = myColor;
}

Il n’y a aucun changement à apporter en ce qui concerne la transmission de valeurs aux uniformes.

Pour l’exemple ci-dessus, la définition de myColor pourrait se faire ainsi :

Parameter { name: "myColor"; value: "blue" }

Les textures doivent toujours être définies en tant qu’uniformes autonomes.

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

Documentation sur les propriétés

computeShaderCode : string

Contient le code du shader de calcul utilisé par ce programme de shader.

computeShaderGraph : string

Contient l'URL du graphe de shaders de calcul utilisé par ce générateur de programmes de shaders.

format : enumeration

Respecte le format du code fourni sur ShaderProgram. La valeur par défaut est ShaderProgram.GLSL

fragmentShaderCode : string

Contient le code du shader de fragment utilisé par ce programme de shader.

fragmentShaderGraph : string

Contient l'URL du graphe de shaders de fragment utilisé par ce générateur de programmes de shaders.

geometryShaderCode : string

Contient le code du shader géométrique utilisé par ce programme de shader.

geometryShaderGraph : string

Contient l'URL du graphe de shaders géométriques utilisé par ce générateur de programmes de shaders.

log : string [read-only]

Contient le journal du programme de shader actuel. Cela s'avère utile pour diagnostiquer un échec de compilation du programme de shader.

status : enumeration [read-only]

Contient l'état du programme de shader actuel.

tessellationControlShaderCode : string

Contient le code du shader de contrôle de tessellation utilisé par ce programme de shader.

tessellationControlShaderGraph : string

Contient l'URL du graphe de shaders de contrôle de tessellation utilisé par ce générateur de programmes de shaders.

tessellationEvaluationShaderCode : string

Contient le code du shader d'évaluation de la tessellation utilisé par ce programme de shader.

tessellationEvaluationShaderGraph : string

Contient l'URL du graphe de shaders d'évaluation de la tessellation utilisé par ce générateur de programmes de shaders.

vertexShaderCode : string

Contient le code du shader de sommets utilisé par ce programme de shader.

vertexShaderGraph : string

Contient l'URL du graphe de shaders de sommets utilisé par ce générateur de programmes de shaders.

Documentation des méthodes

string loadSource(url sourceUrl)

Renvoie le code du shader chargé depuis 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.