PySide6.Qt3DRender.Qt3DRender.QShaderProgram¶
- class QShaderProgram¶
- Encapsulates a Shader Program. More… - Synopsis¶- Properties¶- Methods¶- def - __init__()
- def - format()
- def - log()
- def - setFormat()
- def - setShaderCode()
- def - shaderCode()
- def - status()
 - Slots¶- Signals¶- Static functions¶- def - loadSource()
 - Note - This documentation may contain snippets that were automatically translated from C++ to Python. We always welcome contributions to the snippet translation. If you see an issue with the translation, you can also let us know by creating a ticket on https:/bugreports.qt.io/projects/PYSIDE - Detailed Description¶- A shader program consists of several different shaders, such as vertex and fragment shaders. - Qt3D will automatically populate a set of default uniforms if they are encountered during the shader instrospection phase. - Default Uniform - Associated Qt3D Parameter name - GLSL declaration - ModelMatrix - modelMatrix - uniform mat4 modelMatrix; - ViewMatrix - viewMatrix - uniform mat4 viewMatrix; - ProjectionMatrix - 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 - inverseModelViewProjection - uniform mat4 inverseModelViewProjection; - ModelNormalMatrix - modelNormalMatrix - uniform mat3 modelNormalMatrix; - ModelViewNormalMatrix - modelViewNormal - uniform mat3 modelViewNormal; - ViewportMatrix - viewportMatrix - uniform mat4 viewportMatrix; - InverseViewportMatrix - inverseViewportMatrix - uniform mat4 inverseViewportMatrix; - AspectRatio (surface width / surface height) - aspectRatio - uniform float aspectRatio; - Exposure - exposure - uniform float exposure; - Gamma - gamma - uniform float gamma; - Time (in nano seconds) - time - uniform float time; - EyePosition - eyePosition - uniform vec3 eyePosition; - SkinningPalette - skinningPalette[0] - const int maxJoints = 100; uniform mat4 skinningPalette[maxJoints]; - RHI Support¶- When writing GLSL 450 shader code to use with Qt 3D’s RHI backend, the default uniforms will be provided as 2 uniform buffer objects. - The binding locations for these is set to bindings 0 for RenderView uniforms and 1 for Command uniforms. - #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); } - For user defined uniform buffer object, use binding starting at 2 or auto to let Qt 3D work out the binding automatically. Make sure to remain consistent between the different shader stages. - #version 450 core layout(std140, binding = auto) uniform my_uniforms { vec4 myColor; }; layout(location=0) out vec4 fragColor; void main() { fragColor = myColor; } - There is no change involved when it comes to feeding values to uniforms. - For the above example, setting myColor could be done with: - QParameter *parameter = new QParameter(); parameter->setName("myColor"); parameter->setValue(QVariant::fromValue(QColor(Qt::blue))); - Textures still have to be defined as standalone uniforms. - #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)); } - class ShaderType¶
- This enum identifies the type of shader used. - Constant - Description - Qt3DRender.QShaderProgram.Vertex - Vertex shader - Qt3DRender.QShaderProgram.Fragment - Fragment shader - Qt3DRender.QShaderProgram.TessellationControl - Tesselation control shader - Qt3DRender.QShaderProgram.TessellationEvaluation - Tesselation evaluation shader - Qt3DRender.QShaderProgram.Geometry - Geometry shader - Qt3DRender.QShaderProgram.Compute - Compute shader 
 - class Status¶
- This enum identifies the status of shader used. - Constant - Description - Qt3DRender.QShaderProgram.NotReady - The shader hasn’t been compiled and linked yet - Qt3DRender.QShaderProgram.Ready - The shader was successfully compiled - Qt3DRender.QShaderProgram.Error - An error occurred while compiling the shader 
 - class Format¶
- This enum identifies the format of the shader code used. - Constant - Description - Qt3DRender.QShaderProgram.GLSL - OpenGL - Qt3DRender.QShaderProgram.SPIRV - Vulkan, OpenGL 5 
 - Note - Properties can be used directly when - from __feature__ import true_propertyis used or via accessor functions otherwise.- property computeShaderCodeᅟ: QByteArray¶
 - Holds the compute shader code used by this shader program. - Access functions:
 - property formatᅟ: Qt3DRender.QShaderProgram.Format¶
 - Holds the format of the code provided on the ShaderProgram . The default is ShaderProgram .GLSL - Access functions:
- Signal - formatChanged()
 
 - property fragmentShaderCodeᅟ: QByteArray¶
 - Holds the fragment shader code used by this shader program. - Access functions:
 - property geometryShaderCodeᅟ: QByteArray¶
 - Holds the geometry shader code used by this shader program. - Access functions:
 - property logᅟ: str¶
 - Holds the log of the current shader program. This is useful to diagnose a compilation failure of the shader program. - Access functions:
- Signal - logChanged()
 
 - property statusᅟ: Qt3DRender.QShaderProgram.Status¶
 - Holds the status of the current shader program. - Access functions:
- Signal - statusChanged()
 
 - property tessellationControlShaderCodeᅟ: QByteArray¶
 - Holds the tesselation control shader code used by this shader program. - Access functions:
 - property tessellationEvaluationShaderCodeᅟ: QByteArray¶
 - Holds the tesselation evaluation shader code used by this shader program. - Access functions:
 - property vertexShaderCodeᅟ: QByteArray¶
 - Holds the vertex shader code used by this shader program. - Access functions:
 - __init__([parent=None])¶
- Parameters:
- parent – - QNode
 
 - computeShaderCode()¶
- Return type:
 - See also - setComputeShaderCode()
 - Getter of property - computeShaderCodeᅟ.- computeShaderCodeChanged(computeShaderCode)¶
- Parameters:
- computeShaderCode – - QByteArray
 
 - Notification signal of property - computeShaderCodeᅟ.- format()¶
- Return type:
- Format
 - See also - setFormat()
 - Getter of property - formatᅟ.- formatChanged(format)¶
- Parameters:
- format – - Format
 
 - Notification signal of property - formatᅟ.- fragmentShaderCode()¶
- Return type:
 - See also - setFragmentShaderCode()
 - Getter of property - fragmentShaderCodeᅟ.- fragmentShaderCodeChanged(fragmentShaderCode)¶
- Parameters:
- fragmentShaderCode – - QByteArray
 
 - Notification signal of property - fragmentShaderCodeᅟ.- geometryShaderCode()¶
- Return type:
 - See also - setGeometryShaderCode()
 - Getter of property - geometryShaderCodeᅟ.- geometryShaderCodeChanged(geometryShaderCode)¶
- Parameters:
- geometryShaderCode – - QByteArray
 
 - Notification signal of property - geometryShaderCodeᅟ.- Returns the shader code loaded from - sourceUrl.- log()¶
- Return type:
- str 
 
 - Getter of property - logᅟ.- logChanged(log)¶
- Parameters:
- log – str 
 
 - Notification signal of property - logᅟ.- setComputeShaderCode(computeShaderCode)¶
- Parameters:
- computeShaderCode – - QByteArray
 - See also - computeShaderCode()
 - Setter of property - computeShaderCodeᅟ.- setFormat(format)¶
- Parameters:
- format – - Format
 - See also - format()
 - Setter of property - formatᅟ.- setFragmentShaderCode(fragmentShaderCode)¶
- Parameters:
- fragmentShaderCode – - QByteArray
 - See also - fragmentShaderCode()
 - Setter of property - fragmentShaderCodeᅟ.- setGeometryShaderCode(geometryShaderCode)¶
- Parameters:
- geometryShaderCode – - QByteArray
 - See also - geometryShaderCode()
 - Setter of property - geometryShaderCodeᅟ.- setShaderCode(type, shaderCode)¶
- Parameters:
- type – - ShaderType
- shaderCode – - QByteArray
 
 
 - Sets the shader code for - typeof shader to the- shaderCode.- See also - shaderCode()- setTessellationControlShaderCode(tessellationControlShaderCode)¶
- Parameters:
- tessellationControlShaderCode – - QByteArray
 - See also - tessellationControlShaderCode()
 - Setter of property - tessellationControlShaderCodeᅟ.- setTessellationEvaluationShaderCode(tessellationEvaluationShaderCode)¶
- Parameters:
- tessellationEvaluationShaderCode – - QByteArray
 - See also - tessellationEvaluationShaderCode()
 - Setter of property - tessellationEvaluationShaderCodeᅟ.- setVertexShaderCode(vertexShaderCode)¶
- Parameters:
- vertexShaderCode – - QByteArray
 - See also - vertexShaderCode()
 - Setter of property - vertexShaderCodeᅟ.- shaderCode(type)¶
- Parameters:
- type – - ShaderType
- Return type:
 
 - Returns the shader code for - type.- See also - setShaderCode()- status()¶
- Return type:
- Status
 
 - Returns the status of the current shader program. - Getter of property - statusᅟ.- statusChanged(status)¶
- Parameters:
- status – - Status
 
 - Notification signal of property - statusᅟ.- tessellationControlShaderCode()¶
- Return type:
 - See also - setTessellationControlShaderCode()
 - Getter of property - tessellationControlShaderCodeᅟ.- tessellationControlShaderCodeChanged(tessellationControlShaderCode)¶
- Parameters:
- tessellationControlShaderCode – - QByteArray
 
 - Notification signal of property - tessellationControlShaderCodeᅟ.- tessellationEvaluationShaderCode()¶
- Return type:
 - See also - setTessellationEvaluationShaderCode()
 - Getter of property - tessellationEvaluationShaderCodeᅟ.- tessellationEvaluationShaderCodeChanged(tessellationEvaluationShaderCode)¶
- Parameters:
- tessellationEvaluationShaderCode – - QByteArray
 
 - Notification signal of property - tessellationEvaluationShaderCodeᅟ.- vertexShaderCode()¶
- Return type:
 - See also - setVertexShaderCode()
 - Getter of property - vertexShaderCodeᅟ.- vertexShaderCodeChanged(vertexShaderCode)¶
- Parameters:
- vertexShaderCode – - QByteArray
 
 - Notification signal of property - vertexShaderCodeᅟ.