En esta página

ShaderImage QML Type

Proporciona acceso de imagen a los programas de sombreado. Más...

Import Statement: import Qt3D.Render 2.11
In C++: QShaderImage
Status: Deprecated

Propiedades

Descripción detallada

Para que el contenido de las texturas esté disponible para operaciones de lectura y escritura en un shader, es necesario exponerlas como ShaderImage. Las texturas pueden estar compuestas de varios niveles mip, capas y caras. Adicionalmente declarar un ShaderImage permite especificar a que nivel, capa o cara del contenido de la textura queremos acceder.

ShaderImage tiene que ser asignado como valor de un parámetro y hacer referencia a un Qt3D.Render.AbstractTexture válido para que funcione correctamente.

Si la textura referenciada es un array unidimensional, un array bidimensional, una textura tridimensional, un mapa cúbico, un array de mapa cúbico, o un array multi-muestra bidimensional, es posible enlazar o bien todo el nivel de textura o bien una sola capa o cara del nivel de textura. Esto puede controlarse con la propiedad layered.

El soporte para ShaderImage sólo es compatible con OpenGL 4 y parcialmente con OpenGL ES 3.1 y 3.2.

OpenGL 4 soporta los siguientes tipos de imagen:

Tipo GLSLTipo OpenGL EnumTipo de textura
imagen1DGL_IMAGE_1DTexture1D
imagen2DGL_IMAGE_2DTexture2D
imagen3DGL_IMAGE_3DTexture3D
image2DRectGL_IMAGE_2D_RECTTextureRectangle
imageCubeGL_IMAGE_CUBETextureCubeMap
imageBufferGL_IMAGE_BUFFERTextureBuffer
image1DArrayGL_IMAGE_1D_ARRAYTexture1DArray
image2DArrayGL_IMAGE_2D_ARRAYTexture2DArray
imageCubeArrayGL_IMAGE_CUBE_MAP_ARRAYTextureCubeMapArray
image2DMSGL_IMAGE_2D_MULTISAMPLETexture2DMultisample
image2DMSArrayGL_IMAGE_2D_MULTISAMPLE_ARRAYTexture2DMultisampleArray
iimage1DGL_INT_IMAGE_1DTexture1D
iimage2DGL_INT_IMAGE_2DTexture2D
iimage3DGL_INT_IMAGE_3DTexture3D
iimage2DRectGL_INT_IMAGE_2D_RECTTextureRectangle
iimageCubeGL_INT_IMAGE_CUBETextureCubeMap
iimageBufferGL_INT_IMAGE_BUFFERTextureBuffer
iimage1DArrayGL_INT_IMAGE_1D_ARRAYTexture1DArray
iimage2DArrayGL_INT_IMAGE_2D_ARRAYTexture2DArray
iimageCubeArrayGL_INT_IMAGE_CUBE_MAP_ARRAYTextureCubeMapArray
iimage2DMSGL_INT_IMAGE_2D_MULTISAMPLETexture2DMultisample
iimage2DMSArrayGL_INT_IMAGE_2D_MULTISAMPLE_ARRAYTexture2DMultisampleArray
uimage1DGL_UNSIGNED_INT_IMAGE_1DTexture1D
uimage2DGL_UNSIGNED_INT_IMAGE_2DTexture2D
uimage3DGL_UNSIGNED_INT_IMAGE_3DTexture3D
uimage2DRectGL_UNSIGNED_INT_IMAGE_2D_RECTTextureRectangle
uimageCubeGL_UNSIGNED_INT_IMAGE_CUBETextureCubeMap
uimageBufferGL_UNSIGNED_INT_IMAGE_BUFFERTextureBuffer
uimage1DArrayGL_UNSIGNED_INT_IMAGE_1D_ARRAYTexture1DArray
uimage2DArrayGL_UNSIGNED_INT_IMAGE_2D_ARRAYTexture2DArray
uimageCubeArrayGL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAYTextureCubeMapArray
uimage2DMSGL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLETexture2DMultisample
uimage2DMSArrayGL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAYTexture2DMultisampleArray

OpenGL ES 3.1 admite los siguientes tipos de imagen:

Tipo GLSLTipo OpenGL EnumTipo de textura
imagen2DGL_IMAGE_2DTexture2D
imagen3DGL_IMAGE_3DTexture3D
imageCubeGL_IMAGE_CUBETextureCubeMap
image2DArrayGL_IMAGE_2D_ARRAYTexture2DArray
iimage2DGL_INT_IMAGE_2DTexture2D
iimage3DGL_INT_IMAGE_3DTexture3D
iimageCubeGL_INT_IMAGE_CUBETextureCubeMap
iimage2DArrayGL_INT_IMAGE_2D_ARRAYTexture2DArray
uimage2DGL_UNSIGNED_INT_IMAGE_2DTexture2D
uimage3DGL_UNSIGNED_INT_IMAGE_3DTexture3D
uimageCubeGL_UNSIGNED_INT_IMAGE_CUBETextureCubeMap
uimage2DArrayGL_UNSIGNED_INT_IMAGE_2D_ARRAYTexture2DArray

OpenGL ES 3.2 admite todos los tipos de imagen de OpenGL ES 3.1, así como los siguientes:

Tipo GLSLTipo OpenGL EnumTipo de textura
imageBufferGL_IMAGE_BUFFERTextureBuffer
imageCubeArrayGL_IMAGE_CUBE_MAP_ARRAYTextureCubeMapArray
iimageBufferBÚFER_IMAGEN_GLTextureBuffer
iimageCubeArrayGL_INT_IMAGE_CUBE_MAP_ARRAYTextureCubeMapArray
uimageBufferGL_UNSIGNED_INT_IMAGE_BUFFERTextureBuffer
uimageCubeArrayGL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAYTextureCubeMapArray

El uso esperado sería el siguiente

import Qt3D.Render 2.14

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

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

Documentación de propiedades

access : enumeration

Especifica el tipo de acceso que queremos permitir desde nuestras instancias de sombreado a la imagen. Si un sombreador intenta escribir o leer de una imagen que tiene un acceso incompatible, el comportamiento es indefinido.

ConstanteDescripción
ShaderImage.ReadOnlyAcceso de sólo lectura.
ShaderImage.WriteOnlyAcceso de sólo escritura.
ShaderImage.ReadWriteAcceso de lectura y escritura.

El valor por defecto es ShaderImage.ReadWrite.

format : enumeration

Especifica el formato de la imagen, que es esencialmente importante cuando se almacenan valores en ShaderImage desde un shader.

El formato no tiene que ser el mismo que el de la textura referenciada. Sin embargo tiene que ser compatible (coincidir en tamaño pero no necesariamente por tipo de clase). Por ejemplo una textura de formato R32F (tamaño 32bits, clase 1x32) podría ser utilizada con una imagen de formato RGBA8I (tamaño 32bits, clase 4x8). La tabla 8.27 de las especificaciones OpenGL muestra el tamaño y la clase para todos los formatos de imagen soportados.

Por defecto Qt3D intentará establecer el formato de imagen para que coincida con el de la textura referenciada.

El valor por defecto es ShaderImage.Automatic.

layer : int

Indica qué capa de la textura referenciada debe utilizarse para ShaderImage. Esta propiedad no hace nada si layered es igual a true o si el tipo de la textura de referencia no es compatible con las capas.

Nota: Cuando la textura referenciada es de tipo cube map o cube map array y ĺayered está establecido a false, la cara y la capa se recuperan de la siguiente manera:

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

El valor por defecto es 0.

layered : bool

*

Si se establece a true, si la textura referenciada es una matriz unidimensional, matriz bidimensional, tridimensional, mapa cúbico, matriz de mapa cúbico, o textura de matriz multi-muestra bidimensional, todo el nivel será enlazado para todas las capas. Si se establece a false, sólo se vinculará la capa especificada por la propiedad layer.

El valor por defecto es false.

mipLevel : int

Mantiene qué mipLevel de la textura referenciada debe usarse para ShaderImage.

El valor por defecto es 0.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.