Spec-Zone.ru › Qt 6.1

Тип QML ShaderImage

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

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

Свойства

  • access : перечисление
  • format : перечисление
  • layer : int
  • layered : bool
  • mipLevel : int

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

Для того, чтобы содержимое текстур было доступно для операций чтения и записи в шейдере, они должны быть представлены как ShaderImage. Текстуры могут состоять из нескольких уровней mip, слоёв и граней. Кроме того, объявление ShaderImage позволяет указать, какой уровень, слой или грань содержимого текстуры мы хотим получить доступ.

ShaderImage должен быть присвоен в качестве значения параметра и ссылаться на допустимую Qt3D.Render.AbstractTexture для корректной работы.

Если ссылаемая текстура является одномерным массивом, двумерным массивом, трёхмерной, кубовой картой, массивом кубовых карт или двумерной текстурой с многократным выбором образцов, то можно привязать либо весь уровень текстуры, либо отдельный слой или грань уровня текстуры. Это можно контролировать с помощью свойства layered.

Поддержка ShaderImage поддерживается только с OpenGL 4 и частично с OpenGL ES 3.1 и 3.2.

OpenGL 4 поддерживает следующие типы изображений:

GLSL Тип Перечисление типа OpenGL Тип текстуры
image1D GL_IMAGE_1D Texture1D
image2D GL_IMAGE_2D Texture2D
image3D GL_IMAGE_3D Texture3D
image2DRect GL_IMAGE_2D_RECT TextureRectangle
imageCube GL_IMAGE_CUBE TextureCubeMap
imageBuffer GL_IMAGE_BUFFER TextureBuffer
image1DArray GL_IMAGE_1D_ARRAY Texture1DArray
image2DArray GL_IMAGE_2D_ARRAY Texture2DArray
imageCubeArray GL_IMAGE_CUBE_MAP_ARRAY TextureCubeMapArray
image2DMS GL_IMAGE_2D_MULTISAMPLE Texture2DMultisample
image2DMSArray GL_IMAGE_2D_MULTISAMPLE_ARRAY Texture2DMultisampleArray
iimage1D GL_INT_IMAGE_1D Texture1D
iimage2D GL_INT_IMAGE_2D Texture2D
iimage3D GL_INT_IMAGE_3D Texture3D
iimage2DRect GL_INT_IMAGE_2D_RECT TextureRectangle
iimageCube GL_INT_IMAGE_CUBE TextureCubeMap
iimageBuffer GL_INT_IMAGE_BUFFER TextureBuffer
iimage1DArray GL_INT_IMAGE_1D_ARRAY Texture1DArray
iimage2DArray GL_INT_IMAGE_2D_ARRAY Texture2DArray
iimageCubeArray GL_INT_IMAGE_CUBE_MAP_ARRAY TextureCubeMapArray
iimage2DMS GL_INT_IMAGE_2D_MULTISAMPLE Texture2DMultisample
iimage2DMSArray GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY Texture2DMultisampleArray
uimage1D GL_UNSIGNED_INT_IMAGE_1D Texture1D
uimage2D GL_UNSIGNED_INT_IMAGE_2D Texture2D
uimage3D GL_UNSIGNED_INT_IMAGE_3D Texture3D
uimage2DRect GL_UNSIGNED_INT_IMAGE_2D_RECT TextureRectangle
uimageCube GL_UNSIGNED_INT_IMAGE_CUBE TextureCubeMap
uimageBuffer GL_UNSIGNED_INT_IMAGE_BUFFER TextureBuffer
uimage1DArray GL_UNSIGNED_INT_IMAGE_1D_ARRAY Texture1DArray
uimage2DArray GL_UNSIGNED_INT_IMAGE_2D_ARRAY Texture2DArray
uimageCubeArray GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY TextureCubeMapArray
uimage2DMS GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE Texture2DMultisample
uimage2DMSArray GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY Texture2DMultisampleArray

OpenGL ES 3.1 поддерживает следующие типы изображений:

GLSL Тип Перечисление типа OpenGL Тип текстуры
image2D GL_IMAGE_2D Texture2D
image3D GL_IMAGE_3D Texture3D
imageCube GL_IMAGE_CUBE TextureCubeMap
image2DArray GL_IMAGE_2D_ARRAY Texture2DArray
iimage2D GL_INT_IMAGE_2D Texture2D
iimage3D GL_INT_IMAGE_3D Texture3D
iimageCube GL_INT_IMAGE_CUBE TextureCubeMap
iimage2DArray GL_INT_IMAGE_2D_ARRAY Texture2DArray
uimage2D GL_UNSIGNED_INT_IMAGE_2D Texture2D
uimage3D GL_UNSIGNED_INT_IMAGE_3D Texture3D
uimageCube GL_UNSIGNED_INT_IMAGE_CUBE TextureCubeMap
uimage2DArray GL_UNSIGNED_INT_IMAGE_2D_ARRAY Texture2DArray

OpenGL ES 3.2 поддерживает все типы изображений OpenGL ES 3.1, а также следующие:

GLSL Тип Перечисление типа OpenGL Тип текстуры
imageBuffer GL_IMAGE_BUFFER TextureBuffer
imageCubeArray GL_IMAGE_CUBE_MAP_ARRAY TextureCubeMapArray
iimageBuffer GL_IMAGE_BUFFER TextureBuffer
iimageCubeArray GL_INT_IMAGE_CUBE_MAP_ARRAY TextureCubeMapArray
uimageBuffer GL_UNSIGNED_INT_IMAGE_BUFFER TextureBuffer
uimageCubeArray GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY TextureCubeMapArray

Ожидаемое использование:

import Qt3D.Render 2.14

Entity {
...
    Texture2D {
        id: tex2D
        ...
    }

    Material {
        parameters: Parameter {
            name: "imageUniformName"
            value: ShaderImage {
                texture: tex2D
            }
        }
        ...
    }
 ...
}

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

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

Указывает тип доступа, который мы хотим разрешить для наших экземпляров шейдеров к изображению. Если шейдер пытается записать или прочитать изображение с несовместимым доступом, поведение неопределено.

Постоянная Описание
ShaderImage.ReadOnly Только чтение.
ShaderImage.WriteOnly Только запись.
ShaderImage.ReadWrite Чтение и запись.

Значение по умолчанию — ShaderImage.ReadWrite.

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

Указывает формат изображения, что очень важно при хранении значений в ShaderImage из шейдера.

Формат не обязательно должен совпадать с форматом текстуры, к которой он относится. Однако он должен быть совместим (совпадать по размеру, но не обязательно по типу). Например, текстура формата R32F (размер 32 бита, класс 1x32) может использоваться с изображением формата RGBA8I (размер 32 бита, класс 4x8). Таблица 8.27 спецификаций OpenGL показывает размер и класс для всех поддерживаемых форматов изображений.

По умолчанию Qt3D попытается установить формат изображения, соответствующий формату связанной текстуры.

Значение по умолчанию — ShaderImage.Automatic.

layer : целое

Указывает, какой слой из связанной текстуры следует использовать для ShaderImage. Это свойство ничего не делает, если layered установлено в значение true или если тип текстуры-ссылки несовместим со слоями.

Примечание: Когда связанная текстура является текстурой типа куб или массивом текстур куб и ĺayered установлено в значение false, грань и слой извлекаются следующим образом:

cubeMapLayer = layer / 6
cubeMapFace = layer - (cubeMapLayer * 6)

Значение по умолчанию — 0.

layered : логическое

*

Если установлено в значение true, если связанная текстура является одномерным, двумерным, трехмерным, массивом текстур куб, массивом текстур куб или двумерным многократным массивом текстур, весь уровень будет привязан для всех слоев. Если установлено в значение false, будет привязана только единственная плоскость, определённая свойством layer.

Значение по умолчанию — false.

mipLevel : целое

Указывает, какой mipLevel из связанной текстуры следует использовать для ShaderImage.

Значение по умолчанию — 0.

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

Spec-Zone.ru

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