Spec-Zone.ru › Qt

Тип QML ShaderProgram

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

Заявление об импорте: import Qt3D.Render
С версии: 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 объекта униформного буфера.

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

Для пользовательских объектов униформного буфера используйте привязку, начинающуюся с 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 вычислительного графика шейдеров, используемого этим конструктором программы шейдеров.

[с версии 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.2/qml-qt3d-render-shaderprogram.html

Spec-Zone.ru

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