Sur cette page

ShaderImage QML Type

Permet aux programmes de shaders d'accéder à Image. En savoir plus...

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

Ce type est obsolète. Nous déconseillons fortement de l'utiliser dans du nouveau code.

Propriétés

Description détaillée

Pour que le contenu des textures soit accessible aux opérations de lecture et d'écriture dans un shader, celles-ci doivent être exposées sous la forme d'un ShaderImage. Les textures peuvent être composées de plusieurs niveaux de mip, couches et faces. De plus, la déclaration d'un ShaderImage permet de spécifier le niveau, la couche ou la face du contenu de la texture auquel on souhaite accéder.

Pour fonctionner correctement, un ShaderImage doit être attribué en tant que valeur d’un paramètre et faire référence à un objet Qt3D.Render.AbstractTexture.

Si la texture référencée est un tableau unidimensionnel, bidimensionnel ou tridimensionnel, une carte cubique, un tableau de cartes cubiques ou une texture bidimensionnelle à échantillonnage multiple, il est possible de lier soit le niveau de texture entier, soit un seul calque ou une seule face de ce niveau. Ce comportement peut être contrôlé à l’aide de la propriété ` layered `.

La prise en charge de ShaderImage n’est assurée qu’avec OpenGL 4 et partiellement avec OpenGL ES 3.1 et 3.2.

OpenGL 4 prend en charge les types d’images suivants :

Type GLSLÉnumération de type OpenGLType 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 prend en charge les types d'images suivants :

Type GLSLÉnumération de type OpenGLType 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 prend en charge tous les types d'images d'OpenGL ES 3.1 ainsi que les suivants :

Type GLSLÉnumération de type OpenGLType 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

Voici un exemple d'utilisation :

import Qt3D.Render 2.14

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

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

Documentation des propriétés

access : enumeration

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

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

La valeur par défaut est ShaderImage.ReadWrite.

format : enumeration

Spécifie le format d'image, ce qui revêt une importance capitale lors du stockage de valeurs dans l'ShaderImage à partir d'un shader.

Le format ne doit pas nécessairement être identique à celui de la texture référencée. Il doit toutefois être compatible (de même taille, mais pas nécessairement de même type de classe). Par exemple, une texture au format R32F (taille 32 bits, classe 1x32) pourrait être utilisée avec une image au format RGBA8I (taille 32 bits, classe 4x8). Le tableau 8.27 des spécifications OpenGL indique la taille et la classe de tous les formats d’image pris en charge.

Par défaut, Qt3D tentera de définir le format de l’image de manière à ce qu’il corresponde à celui de la texture référencée.

La valeur par défaut est ` ShaderImage.Automatic`.

layer : int

Détermine quelle couche de la texture référencée doit être utilisée pour l'ShaderImage. Cette propriété n'a aucun effet si l'option « layered » est définie sur « true » ou si le type de la texture référencée n'est pas compatible avec les couches.

Remarque : lorsque la texture référencée est de type « cube map » ou « cube map array » et que la propriété ` ĺayered ` est définie sur `false`, la face et la couche sont récupérées de la manière suivante :

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

La valeur par défaut est 0.

layered : bool

*

Si cette option est définie sur « true », et 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 une texture bidimensionnelle à échantillonnage multiple, le niveau entier sera lié pour toutes les couches. Si cette option est définie sur « false », seule la couche spécifiée par la propriété « layer » sera liée.

La valeur par défaut est « false ».

mipLevel : int

Spécifie quel niveau de mip (mipLevel) de la texture référencée doit être utilisé pour l'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.