En esta página

ShaderProgram QML Type

Encapsula un programa de sombreado. Más...

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

Propiedades

Métodos

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 defectoAsociado Qt3D Nombre del parámetroDeclaración GLSL
ModelMatrixmodelMatrixmat4 uniforme modelMatrix;
ViewMatrixviewMatrixmat4 uniforme viewMatrix;
Matriz de proyecciónmatrizdeproyecciónmat4 uniforme projectionMatrix;
ModelViewMatrixmodelViewmat4 uniforme modelView;
ViewProjectionMatrixviewProjectionMatrixmat4 uniforme viewProjectionMatrix;
ModelViewProjectionMatrixmodelViewProjection
mvp
uniform mat4 modelViewProjection;
uniform mat4 mvp;
InverseModelMatrixinverseModelMatrixmat4 uniforme inverseModelMatrix;
InverseViewMatrixinverseViewMatrixmat4 uniforme inverseViewMatrix;
InverseProjectionMatrixinverseProjectionMatrixmat4 uniforme inverseProjectionMatrix;
InverseModelViewMatrixinverseModelViewmat4 uniforme inverseModelView;
InverseViewProjectionMatrixinverseViewProjectionMatrixmat4 uniforme inverseViewProjectionMatrix;
InverseModelViewProjectionMatrixinverseModelViewProjectionmat4 uniforme inverseModelViewProjection;
ModelNormalMatrixmodelNormalMatrixmat3 uniforme modelNormalMatrix;
ModelViewNormalMatrixmodelViewNormalmat3 uniforme modelViewNormal;
ViewportMatrixviewportMatrixmat4 uniforme viewportMatrix;
InverseViewportMatrixinverseViewportMatrixmat4 uniforme inverseViewportMatrix;
AspectRatio
(anchura de la superficie / altura de la superficie)
aspectRatiofloat uniforme aspectRatio;
Exposiciónexposiciónfloat uniforme exposure;
Gammagammafloat uniforme gamma;
Tiempo
(en nano segundos)
tiempofloat uniforme time;
EyePositioneyePositionvec3 uniforme eyePosition;
SkinningPaletteskinningPalette[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.