ShaderProgram QML Type
Verkapselt ein Shader-Programm. Mehr...
| Import Statement: | import Qt3D.Render 2.11 |
| In C++: | QShaderProgram |
| Status: | Deprecated |
Eigenschaften
- computeShaderCode : string
- computeShaderGraph : string
- format : enumeration
- fragmentShaderCode : string
- fragmentShaderGraph : string
- geometryShaderCode : string
- geometryShaderGraph : string
- log : string
- status : enumeration
- tessellationControlShaderCode : string
- tessellationControlShaderGraph : string
- tessellationEvaluationShaderCode : string
- tessellationEvaluationShaderGraph : string
- vertexShaderCode : string
- vertexShaderGraph : string
Methoden
- string loadSource(url sourceUrl)
Detaillierte Beschreibung
Die Klasse ShaderProgram kapselt ein Shader-Programm. Ein Shaderprogramm besteht aus mehreren verschiedenen Shadern, wie z.B. Vertex- und Fragment-Shadern.
Qt3D füllt automatisch einen Satz von Standard-Uniformen, wenn sie während der Shader-Instrospektionsphase angetroffen werden.
| Standard Uniform | Zugehöriger Qt3D Parametername | GLSL-Deklaration | |||
|---|---|---|---|---|---|
| ModelMatrix | modelMatrix | einheitliche mat4 modelMatrix; | |||
| ViewMatrix | viewMatrix | uniform mat4 viewMatrix; | |||
| ProjektionsMatrix | projectionMatrix | uniform mat4 projectionMatrix; | |||
| ModelViewMatrix | modelView | uniform mat4 modelView; | |||
| ViewProjectionMatrix | viewProjectionMatrix | uniform mat4 viewProjectionMatrix; | |||
| ModelViewProjectionMatrix | modelViewProjection mvp | uniform mat4 modelViewProjection; uniform mat4 mvp; | |||
| InverseModelMatrix | inverseModelMatrix | uniform mat4 inverseModelMatrix; | |||
| InverseViewMatrix | inverseViewMatrix | uniform mat4 inverseViewMatrix; | |||
| InverseProjectionMatrix | inverseProjectionMatrix | uniform mat4 inverseProjectionMatrix; | |||
| InverseModelViewMatrix | inverseModelView | uniform mat4 inverseModelView; | |||
| InverseViewProjectionMatrix | inverseViewProjectionMatrix | uniform mat4 inverseViewProjectionMatrix; | |||
| InverseModelViewProjectionMatrix | inverseModelViewProjektion | uniform mat4 inverseModelViewProjection; | |||
| ModelNormalMatrix | modelNormalMatrix | uniform mat3 modelNormalMatrix; | |||
| ModelViewNormalMatrix | modelViewNormal | uniform mat3 modelViewNormal; | |||
| AnsichtsfensterMatrix | AnsichtsfensterMatrix | uniform mat4 viewportMatrix; | |||
| InverseViewportMatrix | inverseViewportMatrix | einheitliche mat4 inverseViewportMatrix; | |||
| AspectRatio (Breite der Oberfläche / Höhe der Oberfläche) | aspectRatio | uniform float aspectRatio; | |||
| Belichtung | Belichtung | uniform float Belichtung; | |||
| Gamma | gamma | einheitliche Größe gamma; | |||
| Zeit (in Nanosekunden) | Zeit | uniform float time; | |||
| AugenPosition | Augenposition | einheitlicher vec3 eyePosition; | |||
| SkinningPalette | skinningPalette[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-Uniformen als 2 Uniform-Buffer-Objekte bereitgestellt.
Die Bindungspositionen für diese sind auf die Bindungen 0 für RenderView-Uniformen und 1 für Command-Uniformen 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);
}Für benutzerdefinierte einheitliche Pufferobjekte verwenden Sie die Bindung beginnend mit 2 oder auto, damit Qt 3D die Bindung automatisch vornehmen kann. Achten Sie darauf, dass Sie zwischen den verschiedenen Shader-Stufen konsistent bleiben.
#version 450 core
layout(std140, binding = auto) uniform my_uniforms {
vec4 myColor;
};
layout(location=0) out vec4 fragColor;
void main()
{
fragColor = myColor;
}Es gibt keine Änderungen, wenn es darum geht, Werte an Uniformen zu übergeben.
Für das obige Beispiel könnte das Setzen von myColor mit erledigt werden:
Parameter { name: "myColor"; value: "blue" }Texturen müssen immer noch als eigenständige Uniformen 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 der Eigenschaften
computeShaderCode : string
Enthält den von diesem Shader-Programm verwendeten Compute-Shader-Code.
computeShaderGraph : string
Enthält die URL zu dem von diesem Shader Program Builder verwendeten Compute Shader Graph.
format : enumeration
Enthält das Format des auf ShaderProgram bereitgestellten Codes. Die Standardeinstellung 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-Programmersteller verwendet wird.
geometryShaderCode : string
Enthält den von diesem Shader-Programm verwendeten Geometrie-Shader-Code.
geometryShaderGraph : string
Enthält die URL zum Geometrie-Shader-Graphen, der von diesem Shader-Programmersteller verwendet wird.
log : string [read-only]
Enthält das Protokoll des aktuellen Shader-Programms. Dies ist nützlich, 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 von diesem Shader-Programm verwendeten Shader-Code zur Steuerung der Tesselation.
tessellationControlShaderGraph : string
Enthält die URL zum Tesselation Control Shader Graph, der von diesem Shader Program Builder verwendet wird.
tessellationEvaluationShaderCode : string
Enthält den von diesem Shader-Programm verwendeten Shader-Code für die Tesselationsauswertung.
tessellationEvaluationShaderGraph : string
Enthält die URL zum Tesselation Evaluation Shader Graph, der von diesem Shader Program Builder verwendet wird.
vertexShaderCode : string
Enthält den von diesem Shader-Programm verwendeten Vertex-Shader-Code.
vertexShaderGraph : string
Enthält die URL des Vertex-Shader-Graphen, der von diesem Shader Program Builder verwendet wird.
Dokumentation der Methode
string loadSource(url sourceUrl)
Gibt den Shader-Code zurück, der von sourceUrl geladen wurde.
© 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.