Sur cette page

ShaderImage QML Type

Fournit un accès par image aux programmes de nuanceurs. Plus d'informations...

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

Propriétés

Description détaillée

Pour que le contenu des textures soit disponible pour les opérations de lecture et d'écriture dans un shader, elles doivent être exposées en tant que ShaderImage. Les textures peuvent être composées de plusieurs niveaux, couches et faces. En outre, la déclaration d'une ShaderImage permet de spécifier le niveau, la couche ou la face du contenu de la texture auquel nous voulons accéder.

Pour fonctionner correctement, le ShaderImage doit être assigné comme valeur d'un paramètre et faire référence à un Qt3D.Render.AbstractTexture valide.

Si la texture référencée est un tableau unidimensionnel, un tableau bidimensionnel, un tableau tridimensionnel, une carte cubique, un tableau de cartes cubiques ou un tableau bidimensionnel à échantillons multiples, il est possible de lier soit l'ensemble du niveau de texture, soit une seule couche ou une seule face du niveau de texture. Ceci peut être contrôlé avec la propriété layered.

La prise en charge de ShaderImage n'est possible qu'avec OpenGL 4 et partiellement avec OpenGL ES 3.1 et 3.2.

OpenGL 4 supporte les types d'images suivants :

Type GLSLType OpenGL EnumType de texture
image1DGL_IMAGE_1DTexture1D
image2DGL_IMAGE_2DTexture2D
image3DGL_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 supporte les types d'images suivants :

Type GLSLType OpenGL EnumType de texture
image2DGL_IMAGE_2DTexture2D
image3DGL_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 supporte tous les types d'images OpenGL ES 3.1 ainsi que les suivants :

Type GLSLType OpenGL EnumType de texture
imageBufferGL_IMAGE_BUFFERTextureBuffer
imageCubeArrayGL_IMAGE_CUBE_MAP_ARRAYTextureCubeMapArray
iimageBufferGL_IMAGE_BUFFERTextureBuffer
iimageCubeArrayGL_INT_IMAGE_CUBE_MAP_ARRAYTextureCubeMapArray
uimageBufferGL_UNSIGNED_INT_IMAGE_BUFFERTextureBuffer
uimageCubeArrayGL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAYTextureCubeMapArray

L'utilisation prévue ressemblerait à ce qui suit :

import Qt3D.Render 2.14

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

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

Propriété Documentation

access : enumeration

Spécifie le type d'accès à l'image que nous voulons autoriser pour nos instances de shaders. Si un shader tente d'écrire ou de lire une image dont l'accès est incompatible, le comportement est indéfini.

ConstanteDescription
ShaderImage.ReadOnlyAccès en lecture seule.
ShaderImage.WriteOnlyAccès en écriture seule.
ShaderImage.ReadWriteAccès en lecture-écriture.

La valeur par défaut est ShaderImage.ReadWrite.

format : enumeration

Spécifie le format de l'image, ce qui est essentiellement important lorsque l'on stocke des valeurs dans ShaderImage à partir d'un shader.

Le format n'a pas besoin d'être le même que celui de la texture référencée. Il doit cependant être compatible (correspondre en taille mais pas nécessairement en type de classe). Par exemple, une texture de format R32F (taille 32bits, classe 1x32) peut être utilisée avec une image de format RGBA8I (taille 32bits, classe 4x8). Le tableau 8.27 des spécifications OpenGL indique la taille et la classe de tous les formats d'image supportés.

Par défaut, Qt3D essaiera de définir le format de l'image pour qu'il corresponde à celui de la texture référencée.

La valeur par défaut est ShaderImage.Automatic.

layer : int

Indique quel calque de la texture référencée doit être utilisé pour l'image ShaderImage. Cette propriété n'a aucun effet si layered vaut true ou si le type de la texture référencée n'est pas compatible avec les calques.

Remarque : lorsque la texture référencée est de type cube map ou cube map array et que ĺayered vaut false, la face et le calque sont récupérés de la manière suivante :

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

La valeur par défaut est 0.

layered : bool

*

Si la valeur vaut true, si la texture référencée est un tableau unidimensionnel, un tableau bidimensionnel, un tableau tridimensionnel, un tableau de cubes, un tableau de cubes ou un tableau bidimensionnel à échantillons multiples, l'ensemble du niveau sera lié pour toutes les couches. Si la valeur est fixée à false, seule la couche unique spécifiée par la propriété layer sera liée.

La valeur par défaut est false.

mipLevel : int

Détient le mipLevel de la texture référencée qui doit être utilisé pour ShaderImage.

La valeur par défaut est 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.