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 OpenGL | Type de texture |
|---|---|---|
| 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 prend en charge les types d'images suivants :
| Type GLSL | Énumération de type OpenGL | Type de texture |
|---|---|---|
| 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 prend en charge tous les types d'images d'OpenGL ES 3.1 ainsi que les suivants :
| Type GLSL | Énumération de type OpenGL | Type de texture |
|---|---|---|
| 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 |
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.
| Constante | Description |
|---|---|
ShaderImage.ReadOnly | Accès en lecture seule. |
ShaderImage.WriteOnly | Accès en écriture uniquement. |
ShaderImage.ReadWrite | Accè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.