Spec-Zone.ru › Qt 6.0

Тип QML ShaderProgram

Инкапсулирует программу шейдеров. Подробнее...

Заявление об импорте: import Qt3D.Render 2.0
С: Qt 5.5
Инициализирует: QShaderProgram
  • Список всех членов, включая унаследованные

Свойства

  • computeShaderCode : строка
  • computeShaderGraph : строка
  • формат : перечисление
  • fragmentShaderCode : строка
  • fragmentShaderGraph : строка
  • geometryShaderCode : строка
  • geometryShaderGraph : строка
  • журнал : строка
  • статус : перечисление
  • tessellationControlShaderCode : строка
  • tessellationControlShaderGraph : строка
  • tessellationEvaluationShaderCode : строка
  • tessellationEvaluationShaderGraph : строка
  • vertexShaderCode : строка
  • vertexShaderGraph : строка

Методы

  • строка loadSource(url sourceUrl)

Подробное описание

Класс ShaderProgram инкапсулирует программу шейдеров. Программа шейдеров состоит из нескольких разных шейдеров, таких как вершинный и фрагментный шейдеры.

Qt3D автоматически заполнит набор стандартных униформ, если они будут встречены во время фазы интроспекции шейдера.

Униформа по умолчанию Соответствующее имя параметра Qt3D Декларация GLSL
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 uniform float aspectRatio;
Экспозиция exposure uniform float exposure;
Гамма gamma uniform float gamma;
Время (в наносекундах) time uniform float time;
EyePosition eyePosition uniform vec3 eyePosition;
SkinningPalette skinningPalette[0] const int maxJoints = 100; uniform mat4 skinningPalette[maxJoints];

Поддержка RHI

При написании кода шейдера GLSL 450 для использования с бэкэндом RHI Qt 3D униформы по умолчанию будут предоставлены в виде 2 uniform buffer objects.

Место привязки для этих униформ установлено в привязки 0 для униформ RenderView и 1 для униформ Command.

#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);
}

Для пользовательского uniform buffer object используйте привязку, начиная с 2 или auto, чтобы позволить Qt 3D автоматически рассчитать привязку. Убедитесь, что вы сохраняете согласованность между различными стадиями шейдеров.

#version 450 core

layout(std140, binding = auto) uniform my_uniforms {
  vec4 myColor;
};

layout(location=0) out vec4 fragColor;

void main()
{
    fragColor = myColor;
}

При передаче значений униформам изменений нет.

В приведенном выше примере установка myColor может быть выполнена следующим образом:

Документация по свойствам

computeShaderCode : строка

Содержит код вычислительного шейдера, используемый этой программой шейдеров.

computeShaderGraph : строка

Содержит URL вычислительного графика шейдера, используемого этим создателем программы шейдеров.

[since 5.15] формат : перечисление

Содержит формат кода, предоставленного в ShaderProgram. По умолчанию ShaderProgram.GLSL

Это свойство было введено в Qt 5.15.

fragmentShaderCode : строка

Содержит код фрагментного шейдера, используемый этой программой шейдеров.

fragmentShaderGraph : строка

Содержит URL графика фрагментного шейдера, используемого этим создателем программы шейдеров.

geometryShaderCode : строка

Содержит код геометрического шейдера, используемый этой программой шейдеров.

geometryShaderGraph : строка

Содержит URL графика геометрического шейдера, используемого этим создателем программы шейдеров.

журнал : строка

Содержит журнал текущей программы шейдеров. Это полезно для диагностики сбоя компиляции программы шейдеров.

статус : перечисление

Содержит статус текущей программы шейдеров.

tessellationControlShaderCode : строка

Содержит код шейдера управления трассировкой, используемый этой программой шейдеров.

tessellationControlShaderGraph : строка

Содержит URL графика шейдера управления трассировкой, используемого этим создателем программы шейдеров.

tessellationEvaluationShaderCode : строка

Содержит код шейдера оценки трассировки, используемый этой программой шейдеров.

tessellationEvaluationShaderGraph : строка

Содержит URL графа шейдера для вычисления разбиения, используемого данным создателем программы шейдера.

vertexShaderCode : строка

Содержит код вершинного шейдера, используемый этой программой шейдера.

vertexShaderGraph : строка

Содержит URL графа вершинного шейдера, используемого данным создателем программы шейдера.

Документация методов

строка loadSource(url sourceUrl)

Возвращает код шейдера, загруженный из sourceUrl.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qml-qt3d-render-shaderprogram.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API