ShaderImage QML Type

Bietet Image-Zugriff auf Shader-Programme. Mehr...

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

Eigenschaften

Detaillierte Beschreibung

Um den Inhalt von Texturen für Lese- und Schreiboperationen in einem Shader verfügbar zu machen, müssen sie als ShaderImage dargestellt werden. Texturen können aus mehreren Mip-Ebenen, Layern und Flächen zusammengesetzt sein. Durch die Deklaration eines ShaderImage kann zusätzlich angegeben werden, auf welche Ebene, Schicht oder Fläche des Texturinhalts zugegriffen werden soll.

ShaderImage muss als Wert eines Parameters zugewiesen werden und eine gültige Qt3D.Render.AbstractTexture referenzieren, um korrekt zu funktionieren.

Wenn es sich bei der referenzierten Textur um eine eindimensionale Array-, zweidimensionale Array-, dreidimensionale, Cube-Map-, Cube-Map-Array- oder zweidimensionale Multisample-Array-Textur handelt, ist es möglich, entweder die gesamte Texturebene oder eine einzelne Schicht oder Fläche der Texturebene zu binden. Dies kann mit der Eigenschaft layered gesteuert werden.

Die Unterstützung für ShaderImage wird nur von OpenGL 4 und teilweise von OpenGL ES 3.1 und 3.2 unterstützt.

OpenGL 4 unterstützt die folgenden Bildtypen:

GLSL-TypOpenGL Typ EnumTextur-Typ
Bild1DGL_IMAGE_1DTexture1D
Bild2DGL_IMAGE_2DTexture2D
Bild3DGL_BILD_3DTexture3D
image2DRectGL_ABBILDUNG_2D_RECTTextureRectangle
bildWürfelGL_IMAGE_CUBETextureCubeMap
bildPufferGL_IMAGE_BUFFERTextureBuffer
image1DArrayGL_IMAGE_1D_ARRAYTexture1DArray
image2DArrayGL_IMAGE_2D_ARRAYTexture2DArray
imageCubeArrayGL_IMAGE_CUBE_MAP_ARRAYTextureCubeMapArray
bild2DMSGL_IMAGE_2D_MULTISAMPLETexture2DMultisample
image2DMSArrayGL_IMAGE_2D_MULTISAMPLE_ARRAYTexture2DMultisampleArray
iimage1DGL_INT_BILD_1DTexture1D
iimage2DGL_INT_BILD_2DTexture2D
iimage3DGL_INT_BILD_3DTexture3D
iimage2DRectGL_INT_ABBILDUNG_2D_RECHTECKTextureRectangle
iimageCubeGL_INT_BILD_WÜRFELTextureCubeMap
iimageBufferGL_INT_IMAGE_BUFFERTextureBuffer
iimage1DArrayGL_INT_BILD_1D_ANORDNUNGTexture1DArray
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_ARRAY (UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY)Texture2DMultisampleArray

OpenGL ES 3.1 unterstützt die folgenden Bildtypen:

GLSL-TypOpenGL-Typ EnumTextur-Typ
Bild2DGL_IMAGE_2DTexture2D
image3DGL_IMAGE_3DTexture3D
bildWürfelGL_IMAGE_CUBETextureCubeMap
image2DArrayGL_IMAGE_2D_ARRAYTexture2DArray
iBild2DGL_INT_BILD_2DTexture2D
iimage3DGL_INT_ABBILDUNG_3DTexture3D
iimageCubeGL_INT_IMAGE_CUBETextureCubeMap
iimage2DArrayGL_INT_BILD_2D_ANORDNUNGTexture2DArray
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 unterstützt alle OpenGL ES 3.1 Bildtypen sowie die folgenden:

GLSL-TypOpenGL-Typ EnumTextur-Typ
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

Die erwartete Verwendung würde wie folgt aussehen:

import Qt3D.Render 2.14

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

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

Eigenschaft Dokumentation

access : enumeration

Gibt die Art des Zugriffs an, den wir von unseren Shader-Instanzen auf das Bild erlauben wollen. Wenn ein Shader versucht, von einem Bild zu schreiben oder zu lesen, das einen inkompatiblen Zugriff hat, ist das Verhalten undefiniert.

KonstanteBeschreibung
ShaderImage.ReadOnlyNur-Lese-Zugriff.
ShaderImage.WriteOnlyNur-Schreibzugriff.
ShaderImage.ReadWriteSchreib-Lese-Zugriff.

Der Standardwert ist ShaderImage.ReadWrite.


format : enumeration

Legt das Bildformat fest, das beim Speichern von Werten in ShaderImage aus einem Shader von wesentlicher Bedeutung ist.

Das Format muss nicht dasselbe sein wie das Format der referenzierten Textur. Es muss jedoch kompatibel sein (übereinstimmend in der Größe, aber nicht notwendigerweise im Klassentyp). Zum Beispiel könnte eine Textur des Formats R32F (Größe 32bits, Klasse 1x32) mit einem Bild des Formats RGBA8I (Größe 32bits, Klasse 4x8) verwendet werden. Tabelle 8.27 der OpenGL Spezifikationen zeigt die Größe und Klasse für alle unterstützten Bildformate.

Standardmäßig versucht Qt3D, das Bildformat so einzustellen, dass es dem der referenzierten Textur entspricht.

Der Standardwert ist ShaderImage.Automatic.


layer : int

Hält fest, welche Ebene der referenzierten Textur für die ShaderImage verwendet werden soll. Diese Eigenschaft hat keine Wirkung, wenn layered auf true gesetzt ist oder wenn der Typ der referenzierten Textur nicht mit Ebenen kompatibel ist.

Hinweis: Wenn die referenzierte Textur vom Typ Cube Map oder Cube Map Array ist und ĺayered auf false gesetzt ist, werden die Fläche und der Layer auf folgende Weise abgerufen:

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

Der Standardwert ist 0.


layered : bool

*

Wenn auf true gesetzt, wenn die referenzierte Textur eine eindimensionale Array-, zweidimensionale Array-, dreidimensionale, Cube-Map-, Cube-Map-Array- oder zweidimensionale Multisample-Array-Textur ist, wird die gesamte Ebene für alle Ebenen gebunden. Wird der Wert auf false gesetzt, wird nur die einzelne Ebene, die durch die Eigenschaft layer angegeben ist, gebunden.

Der Standardwert ist false.


mipLevel : int

Hält fest, welcher mipLevel aus der referenzierten Textur für die ShaderImage verwendet werden soll.

Der Standardwert ist 0.


© 2025 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.