Auf dieser Seite

ShaderProgram QML Type

Kapseln ein Shader-Programm. Mehr...

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

Dieser Typ ist veraltet. Wir raten dringend davon ab, ihn in neuem Code zu verwenden.

Eigenschaften

Methoden

Ausführliche Beschreibung

Die Klasse „ShaderProgram“ kapselt ein Shader-Programm. Ein Shader-Programm besteht aus mehreren verschiedenen Shadern, wie beispielsweise Vertex- und Fragment-Shadern.

Qt3D füllt automatisch eine Reihe von Standard-Uniforms, sofern diese während der Shader-Introspektionsphase gefunden werden.

Standard-UniformZugehöriger Qt3D-ParameternameGLSL-Deklaration
ModelMatrixmodelMatrixuniform mat4 modelMatrix;
ViewMatrixviewMatrixuniform mat4 viewMatrix;
ProjektionsmatrixprojectionMatrixuniform mat4 Projektionsmatrix;
ModelViewMatrixmodelViewuniform mat4 modelView;
ViewProjectionMatrixviewProjectionMatrixuniform mat4 viewProjectionMatrix;
ModelViewProjectionMatrixmodelViewProjection
mvp
uniform mat4 modelViewProjection;
uniform mat4 mvp;
InverseModelMatrixinverseModelMatrixuniform mat4 inverseModelMatrix;
InverseViewMatrixinverseViewMatrixuniform mat4 inverseViewMatrix;
InverseProjektionsmatrixinverseProjectionMatrixuniform mat4 inverseProjectionMatrix;
InverseModelViewMatrixinverseModelViewuniform mat4 inverseModelView;
InverseViewProjectionMatrixinverseViewProjectionMatrixuniform mat4 inverseViewProjectionMatrix;
InverseModelViewProjectionMatrixinverseModelViewProjectionuniform mat4 inverseModelViewProjection;
Modell-NormalenmatrixmodelNormalMatrixuniform mat3 modelNormalMatrix;
ModelViewNormalMatrixmodelViewNormaluniform mat3 modelViewNormal;
ViewportMatrixviewportMatrixuniform mat4 viewportMatrix;
InverseViewportMatrixinverseViewportMatrixuniform mat4 inverseViewportMatrix;
AspectRatio
(Oberflächenbreite / Oberflächenhöhe)
aspectRatiouniform float aspectRatio;
BelichtungBelichtunguniform float Belichtung;
GammaGammagleichmäßige Gammakorrektur mit Gleitkommawert;
Zeit
(in Nanosekunden)
Zeituniform float time;
AugenpositionAugenpositionuniform vec3 eyePosition;
SkinningPaletteskinningPalette[0]const int maxJoints = 100;
uniform mat4 skinningPalette[maxJoints];

RHI-Unterstützung

Beim Schreiben von GLSL-450-Shader-Code zur Verwendung mit dem RHI-Backend von Qt 3D werden die Standard-Uniforms als zwei Uniform-Buffer-Objekte bereitgestellt.

Die Bindungspositionen hierfür sind auf Bindung 0 für RenderView-Uniforms und auf Bindung 1 für Command-Uniforms festgelegt.

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

Verwenden Sie für benutzerdefinierte Uniform-Buffer-Objekte eine Bindung ab 2 oder „auto“, damit „ Qt 3D “ die Bindung automatisch ermittelt. Achten Sie darauf, dass die Konsistenz zwischen den verschiedenen Shader-Stufen gewahrt bleibt.

#version 450 core

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

layout(location=0) out vec4 fragColor;

void main()
{
    fragColor = myColor;
}

Bei der Übergabe von Werten an Uniforms gibt es keine Änderungen.

Im obigen Beispiel könnte die Einstellung von „myColor“ wie folgt erfolgen:

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

Texturen müssen weiterhin als eigenständige Uniforms definiert werden.

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

Dokumentation zu den Eigenschaften

computeShaderCode : string

Enthält den Compute-Shader-Code, der von diesem Shader-Programm verwendet wird.

computeShaderGraph : string

Enthält die URL zum Compute-Shader-Graphen, der von diesem Shader-Programmierwerkzeug verwendet wird.

format : enumeration

Entspricht dem Format des Codes, der unter ShaderProgram bereitgestellt wird. Der Standardwert ist ShaderProgram.GLSL

fragmentShaderCode : string

Enthält den Fragment-Shader-Code, der von diesem Shader-Programm verwendet wird.

fragmentShaderGraph : string

Enthält die URL zum Fragment-Shader-Graphen, der von diesem Shader-Programmierwerkzeug verwendet wird.

geometryShaderCode : string

Enthält den Geometrie-Shader-Code, der von diesem Shader-Programm verwendet wird.

geometryShaderGraph : string

Enthält die URL zum Geometrie-Shader-Diagramm, das von diesem Shader-Programm-Generator verwendet wird.

log : string [read-only]

Enthält das Protokoll des aktuellen Shader-Programms. Dies ist hilfreich, um einen Kompilierungsfehler des Shader-Programms zu diagnostizieren.

status : enumeration [read-only]

Enthält den Status des aktuellen Shader-Programms.

tessellationControlShaderCode : string

Enthält den Shader-Code für die Tesselierungssteuerung, der von diesem Shader-Programm verwendet wird.

tessellationControlShaderGraph : string

Enthält die URL zum Shader-Graph für die Tesselierung, der von diesem Shader-Programmierwerkzeug verwendet wird.

tessellationEvaluationShaderCode : string

Enthält den Shader-Code zur Tessellationsauswertung, der von diesem Shader-Programm verwendet wird.

tessellationEvaluationShaderGraph : string

Enthält die URL zum Shader-Graphen für die Tesselationsauswertung, der von diesem Shader-Programmierwerkzeug verwendet wird.

vertexShaderCode : string

Enthält den Vertex-Shader-Code, der von diesem Shader-Programm verwendet wird.

vertexShaderGraph : string

Enthält die URL zum Vertex-Shader-Graphen, der von diesem Shader-Programmier-Generator verwendet wird.

Methodendokumentation

string loadSource(url sourceUrl)

Gibt den von sourceUrl geladenen Shader-Code zurück.

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