ShaderProgram QML Type
Encapsula un programa de sombreado. Más...
| Import Statement: | import Qt3D.Render 2.11 |
| In C++: | QShaderProgram |
| Status: | Deprecated |
Propiedades
- 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
Métodos
- string loadSource(url sourceUrl)
Descripción detallada
La clase ShaderProgram encapsula un programa de sombreado. Un programa de sombreado se compone de varios sombreadores diferentes, tales como sombreadores de vértices y fragmentos.
Qt3D rellenará automáticamente un conjunto de uniformes por defecto si se encuentran durante la fase de instrospección del shader.
| Uniforme por defecto | Asociado Qt3D Nombre del parámetro | Declaración GLSL | |||
|---|---|---|---|---|---|
| ModelMatrix | modelMatrix | mat4 uniforme modelMatrix; | |||
| ViewMatrix | viewMatrix | mat4 uniforme viewMatrix; | |||
| Matriz de proyección | matrizdeproyección | mat4 uniforme projectionMatrix; | |||
| ModelViewMatrix | modelView | mat4 uniforme modelView; | |||
| ViewProjectionMatrix | viewProjectionMatrix | mat4 uniforme viewProjectionMatrix; | |||
| ModelViewProjectionMatrix | modelViewProjection mvp | uniform mat4 modelViewProjection; uniform mat4 mvp; | |||
| InverseModelMatrix | inverseModelMatrix | mat4 uniforme inverseModelMatrix; | |||
| InverseViewMatrix | inverseViewMatrix | mat4 uniforme inverseViewMatrix; | |||
| InverseProjectionMatrix | inverseProjectionMatrix | mat4 uniforme inverseProjectionMatrix; | |||
| InverseModelViewMatrix | inverseModelView | mat4 uniforme inverseModelView; | |||
| InverseViewProjectionMatrix | inverseViewProjectionMatrix | mat4 uniforme inverseViewProjectionMatrix; | |||
| InverseModelViewProjectionMatrix | inverseModelViewProjection | mat4 uniforme inverseModelViewProjection; | |||
| ModelNormalMatrix | modelNormalMatrix | mat3 uniforme modelNormalMatrix; | |||
| ModelViewNormalMatrix | modelViewNormal | mat3 uniforme modelViewNormal; | |||
| ViewportMatrix | viewportMatrix | mat4 uniforme viewportMatrix; | |||
| InverseViewportMatrix | inverseViewportMatrix | mat4 uniforme inverseViewportMatrix; | |||
| AspectRatio (anchura de la superficie / altura de la superficie) | aspectRatio | float uniforme aspectRatio; | |||
| Exposición | exposición | float uniforme exposure; | |||
| Gamma | gamma | float uniforme gamma; | |||
| Tiempo (en nano segundos) | tiempo | float uniforme time; | |||
| EyePosition | eyePosition | vec3 uniforme eyePosition; | |||
| SkinningPalette | skinningPalette[0] | const int maxJoints = 100; uniform mat4 skinningPalette[maxJoints]; | |||
Soporte RHI
Al escribir código de sombreado GLSL 450 para utilizarlo con el backend RHI de Qt 3D, los uniformes predeterminados se proporcionarán como 2 objetos de búfer uniforme.
Las ubicaciones de enlace para estos se establece en los enlaces 0 para los uniformes RenderView y 1 para los uniformes de comandos.
#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);
}Para los objetos uniform buffer definidos por el usuario, utilice binding empezando en 2 o auto para dejar que Qt 3D resuelva el binding automáticamente. Asegúrese de mantener la coherencia entre las diferentes etapas de sombreado.
#version 450 core
layout(std140, binding = auto) uniform my_uniforms {
vec4 myColor;
};
layout(location=0) out vec4 fragColor;
void main()
{
fragColor = myColor;
}No hay ningún cambio involucrado cuando se trata de la alimentación de valores a los uniformes.
Para el ejemplo anterior, el establecimiento de myColor podría hacerse con:
Parameter { name: "myColor"; value: "blue" }Las texturas todavía tienen que ser definidas como uniformes independientes.
#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));
}Documentación de propiedades
computeShaderCode : string
Contiene el código de sombreado de cálculo utilizado por este programa de sombreado.
computeShaderGraph : string
Contiene la URL del gráfico de sombreado de cálculo utilizado por este constructor de programas de sombreado.
format : enumeration
Contiene el formato del código proporcionado en ShaderProgram. Por defecto es ShaderProgram.GLSL
fragmentShaderCode : string
Contiene el código del sombreador de fragmentos utilizado por este programa de sombreado.
fragmentShaderGraph : string
Contiene la URL del gráfico de sombreado de fragmentos utilizado por este constructor de programas de sombreado.
geometryShaderCode : string
Contiene el código del sombreador de geometría utilizado por este programa de sombreado.
geometryShaderGraph : string
Contiene la URL del gráfico de sombreado geométrico utilizado por este constructor de programas de sombreado.
log : string [read-only]
Contiene el registro del programa de sombreado actual. Esto es útil para diagnosticar un fallo de compilación del programa de sombreado.
status : enumeration [read-only]
Mantiene el estado del programa de sombreado actual.
tessellationControlShaderCode : string
Contiene el código del sombreador de control de teselación utilizado por este programa de sombreado.
tessellationControlShaderGraph : string
Contiene la URL del gráfico del sombreador de control de teselación utilizado por este constructor de programas de sombreado.
tessellationEvaluationShaderCode : string
Contiene el código del shader de evaluación de teselación utilizado por este programa de shader.
tessellationEvaluationShaderGraph : string
Contiene la URL del gráfico del sombreador de evaluación de teselación utilizado por este constructor de programas de sombreado.
vertexShaderCode : string
Contiene el código del sombreador de vértices utilizado por este programa de sombreado.
vertexShaderGraph : string
Contiene la URL del gráfico del sombreador de vértices utilizado por este constructor de programas de sombreado.
Documentación del método
string loadSource(url sourceUrl)
Devuelve el código shader cargado desde 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.