- Qt 6.4
- Qt 3D
- C++ Classes
- Qt3DRender
- QShaderProgramBuilder
- Qt 6.4.3 Reference Documentation

# QShaderProgramBuilder Class

class Qt3DRender::QShaderProgramBuilder

Generates a Shader Program content from loaded graphs. More...

Header: | #include <QShaderProgramBuilder>
CMake: | find_package(Qt6 REQUIRED COMPONENTS 3drender) target_link_libraries(mytarget PRIVATE Qt6::3drender)
qmake: | QT += 3drender
Since: | Qt 5.10
Instantiated By: | ShaderProgramBuilder
Inherits: | Qt3DCore::QNode

- List of all members, including inherited members

## Properties

computeShaderCode : const QByteArray computeShaderGraph : QUrl enabledLayers : QStringList fragmentShaderCode : const QByteArray fragmentShaderGraph : QUrl geometryShaderCode : const QByteArray geometryShaderGraph : QUrl | shaderProgram : Qt3DRender::QShaderProgram* tessellationControlShaderCode : const QByteArray tessellationControlShaderGraph : QUrl tessellationEvaluationShaderCode : const QByteArray tessellationEvaluationShaderGraph : QUrl vertexShaderCode : const QByteArray vertexShaderGraph : QUrl

## Public Functions

QByteArray | computeShaderCode() const
QUrl | computeShaderGraph() const
QStringList | enabledLayers() const
QByteArray | fragmentShaderCode() const
QUrl | fragmentShaderGraph() const
QByteArray | geometryShaderCode() const
QUrl | geometryShaderGraph() const
Qt3DRender::QShaderProgram * | shaderProgram() const
QByteArray | tessellationControlShaderCode() const
QUrl | tessellationControlShaderGraph() const
QByteArray | tessellationEvaluationShaderCode() const
QUrl | tessellationEvaluationShaderGraph() const
QByteArray | vertexShaderCode() const
QUrl | vertexShaderGraph() const

## Public Slots

void | setComputeShaderGraph(const QUrl &computeShaderGraph)
void | setEnabledLayers(const QStringList &layers)
void | setFragmentShaderGraph(const QUrl &fragmentShaderGraph)
void | setGeometryShaderGraph(const QUrl &geometryShaderGraph)
void | setShaderProgram(Qt3DRender::QShaderProgram *program)
void | setTessellationControlShaderGraph(const QUrl &tessellationControlShaderGraph)
void | setTessellationEvaluationShaderGraph(const QUrl &tessellationEvaluationShaderGraph)
void | setVertexShaderGraph(const QUrl &vertexShaderGraph)

## Signals

void | computeShaderCodeChanged(const QByteArray &computeShaderCode)
void | computeShaderGraphChanged(const QUrl &computeShaderGraph)
void | enabledLayersChanged(const QStringList &layers)
void | fragmentShaderCodeChanged(const QByteArray &fragmentShaderCode)
void | fragmentShaderGraphChanged(const QUrl &fragmentShaderGraph)
void | geometryShaderCodeChanged(const QByteArray &geometryShaderCode)
void | geometryShaderGraphChanged(const QUrl &geometryShaderGraph)
void | shaderProgramChanged(Qt3DRender::QShaderProgram *shaderProgram)
void | tessellationControlShaderCodeChanged(const QByteArray &tessellationControlShaderCode)
void | tessellationControlShaderGraphChanged(const QUrl &tessellationControlShaderGraph)
void | tessellationEvaluationShaderCodeChanged(const QByteArray &tessellationEvaluationShaderCode)
void | tessellationEvaluationShaderGraphChanged(const QUrl &tessellationEvaluationShaderGraph)
void | vertexShaderCodeChanged(const QByteArray &vertexShaderCode)
void | vertexShaderGraphChanged(const QUrl &vertexShaderGraph)

## Detailed Description

A shader program builder consists of several different shader graphs used to generate shader code.

A cache of generated shader code is maintained. Generated shaders are by defaults saved in QStandardPaths::writableLocation(QStandardPaths::TempLocation)). This path can be overridden by setting environment variable QT3D_WRITABLE_CACHE_PATH to a valid writable path.

The use of the cache can be disabled by setting environment variable QT3D_DISABLE_SHADER_CACHE.

In most cases, changes made to a graph are detected by Qt 3D and a new cache entry will be generated. One case were this will not happen is when code snippets included by a graphs are changed. To work around that, clearing the cache directory or setting environment variable QT3D_REBUILD_SHADER_CACHE can be used to force shader code to be generated again.

## Property Documentation

### `[read-only, since 5.13]` computeShaderCode : const QByteArray

Holds the generate compute shader code.

This property was introduced in Qt 5.13.

Access functions:

QByteArray | computeShaderCode() const

Notifier signal:

void | computeShaderCodeChanged(const QByteArray &computeShaderCode)

### computeShaderGraph : QUrl

Holds the URL to the compute shader graph used by this shader program builder.

Access functions:

QUrl | computeShaderGraph() const
void | setComputeShaderGraph(const QUrl &computeShaderGraph)

Notifier signal:

void | computeShaderGraphChanged(const QUrl &computeShaderGraph)

### enabledLayers : QStringList

Holds the list of layers this builder will activate on the shader graphs during code generation.

Access functions:

QStringList | enabledLayers() const
void | setEnabledLayers(const QStringList &layers)

Notifier signal:

void | enabledLayersChanged(const QStringList &layers)

### `[read-only, since 5.13]` fragmentShaderCode : const QByteArray

Holds the generate fragment shader code.

This property was introduced in Qt 5.13.

Access functions:

QByteArray | fragmentShaderCode() const

Notifier signal:

void | fragmentShaderCodeChanged(const QByteArray &fragmentShaderCode)

### fragmentShaderGraph : QUrl

Holds the URL to the fragment shader graph used by this shader program builder.

Access functions:

QUrl | fragmentShaderGraph() const
void | setFragmentShaderGraph(const QUrl &fragmentShaderGraph)

Notifier signal:

void | fragmentShaderGraphChanged(const QUrl &fragmentShaderGraph)

### `[read-only, since 5.13]` geometryShaderCode : const QByteArray

Holds the generate geometry shader code.

This property was introduced in Qt 5.13.

Access functions:

QByteArray | geometryShaderCode() const

Notifier signal:

void | geometryShaderCodeChanged(const QByteArray &geometryShaderCode)

### geometryShaderGraph : QUrl

Holds the URL to the geometry shader graph used by this shader program builder.

Access functions:

QUrl | geometryShaderGraph() const
void | setGeometryShaderGraph(const QUrl &geometryShaderGraph)

Notifier signal:

void | geometryShaderGraphChanged(const QUrl &geometryShaderGraph)

### shaderProgram : Qt3DRender::QShaderProgram*

Holds the shader program on which this builder generates code.

Access functions:

Qt3DRender::QShaderProgram * | shaderProgram() const
void | setShaderProgram(Qt3DRender::QShaderProgram *program)

Notifier signal:

void | shaderProgramChanged(Qt3DRender::QShaderProgram *shaderProgram)

### `[read-only, since 5.13]` tessellationControlShaderCode : const QByteArray

Holds the generate tessellation control shader code.

This property was introduced in Qt 5.13.

Access functions:

QByteArray | tessellationControlShaderCode() const

Notifier signal:

void | tessellationControlShaderCodeChanged(const QByteArray &tessellationControlShaderCode)

### tessellationControlShaderGraph : QUrl

Holds the URL to the tesselation control shader graph used by this shader program builder.

Access functions:

QUrl | tessellationControlShaderGraph() const
void | setTessellationControlShaderGraph(const QUrl &tessellationControlShaderGraph)

Notifier signal:

void | tessellationControlShaderGraphChanged(const QUrl &tessellationControlShaderGraph)

### `[read-only, since 5.13]` tessellationEvaluationShaderCode : const QByteArray

Holds the generate tessellation evaluation shader code.

This property was introduced in Qt 5.13.

Access functions:

QByteArray | tessellationEvaluationShaderCode() const

Notifier signal:

void | tessellationEvaluationShaderCodeChanged(const QByteArray &tessellationEvaluationShaderCode)

### tessellationEvaluationShaderGraph : QUrl

Holds the URL to the tesselation evaluation shader graph used by this shader program builder.

Access functions:

QUrl | tessellationEvaluationShaderGraph() const
void | setTessellationEvaluationShaderGraph(const QUrl &tessellationEvaluationShaderGraph)

Notifier signal:

void | tessellationEvaluationShaderGraphChanged(const QUrl &tessellationEvaluationShaderGraph)

### `[read-only, since 5.13]` vertexShaderCode : const QByteArray

Holds the generate vertex shader code.

This property was introduced in Qt 5.13.

Access functions:

QByteArray | vertexShaderCode() const

Notifier signal:

void | vertexShaderCodeChanged(const QByteArray &vertexShaderCode)

### vertexShaderGraph : QUrl

Holds the URL to the vertex shader graph used by this shader program builder.

Access functions:

QUrl | vertexShaderGraph() const
void | setVertexShaderGraph(const QUrl &vertexShaderGraph)

Notifier signal:

void | vertexShaderGraphChanged(const QUrl &vertexShaderGraph)