Spec-Zone.ru › Qt 6.1

Тип QML ShaderProgram

Оборачивает программу шейдеров. Подробнее...

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

Свойства

  • computeShaderCode : строка
  • computeShaderGraph : строка
  • format : перечисление
  • fragmentShaderCode : строка
  • fragmentShaderGraph : строка
  • geometryShaderCode : строка
  • geometryShaderGraph : строка
  • log : строка
  • status : перечисление
  • 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 uniform vec3 eyePosition;
Palette скелетирования skinningPalette[0] const int maxJoints = 100; uniform mat4 skinningPalette[maxJoints];

Поддержка RHI

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

Место привязки к ним установлено в привязки 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);
}

Для униформ 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 может быть выполнена так:

Parameter { name: "myColor"; value: "blue" }

Текстуры по-прежнему должны быть определены как отдельные униформы.

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

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

computeShaderCode : строка

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

computeShaderGraph : строка

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

[since 5.15] format : перечисление

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

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

fragmentShaderCode : строка

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

fragmentShaderGraph : строка

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

geometryShaderCode : строка

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

geometryShaderGraph : строка

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

log : строка

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

status : перечисление

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

tessellationControlShaderCode : строка

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

tessellationControlShaderGraph : строка

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

tessellationEvaluationShaderCode : строка

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

tessellationEvaluationShaderGraph : string

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

vertexShaderCode : string

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

vertexShaderGraph : string

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

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

string loadSource(url sourceUrl)

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

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

Spec-Zone.ru

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