QShaderProgramBuilder Class
class Qt3DRender::QShaderProgramBuilderGenerates 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 |
Instantiated By: | ShaderProgramBuilder |
Inherits: | Qt3DCore::QNode |
Properties
|
|
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]
computeShaderCode : const QByteArray
Holds the generate compute shader code.
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]
fragmentShaderCode : const QByteArray
Holds the generate fragment shader code.
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]
geometryShaderCode : const QByteArray
Holds the generate geometry shader code.
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]
tessellationControlShaderCode : const QByteArray
Holds the generate tessellation control shader code.
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]
tessellationEvaluationShaderCode : const QByteArray
Holds the generate tessellation evaluation shader code.
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]
vertexShaderCode : const QByteArray
Holds the generate vertex shader code.
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) |