Spec-Zone.ru › Qt 6.0

Тип QML ShaderImage

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

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

Свойства

  • access : перечисление
  • format : перечисление
  • слой : int
  • многослойный : bool
  • уровеньMip : int

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

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

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

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

Поддержка 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.0/qml-qt3d-render-shaderimage.html

Spec-Zone.ru

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