このページでは

ShaderImage QML Type

シェーダープログラムから画像にアクセスできるようにします。詳細...

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

この型は非推奨です。新しいコードでの使用は強く推奨しません。

プロパティ

詳細な説明

シェーダー内でテクスチャの内容を読み書きできるようにするには、それらを ShaderImage として公開する必要があります。テクスチャは、複数のミップレベル、レイヤー、およびフェースで構成される場合があります。さらに、ShaderImage を宣言することで、テクスチャの内容のうち、どのレベル、レイヤー、またはフェースにアクセスしたいかを指定することができます。

ShaderImageが正常に機能するためには、パラメータの値として割り当てられ、有効なQt3D.Render.AbstractTexture を参照している必要があります。

参照されるテクスチャが1次元配列、2次元配列、3次元、キューブマップ、キューブマップ配列、または2次元マルチサンプル配列テクスチャである場合、テクスチャレベル全体、あるいはそのテクスチャレベル内の単一のレイヤーやフェイスをバインドすることが可能です。これはlayered プロパティで制御できます。

ShaderImage のサポートは、OpenGL 4 でのみ完全に対応しており、OpenGL ES 3.1 および 3.2 では一部のみ対応しています。

OpenGL 4 では、以下の画像タイプがサポートされています:

GLSL タイプOpenGL 型列挙型テクスチャタイプ
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_ARRAYimage1DMSTexture2DMultisampleArray
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_ARRAYuimage1DMSTexture2DMultisampleArray
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_ARRAYuimageCubeArrayTexture2DArray
uimageCubeArrayGL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAYTextureCubeMapArray
uimage2DMSGL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLETexture2DMultisample
uimage2DMSArrayGL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAYTexture2DMultisampleArray

OpenGL ES 3.1 は、以下の画像タイプをサポートしています:

GLSL 型OpenGL 型列挙型テクスチャ型
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 は、OpenGL ES 3.1 のすべての画像タイプに加え、以下のタイプもサポートしています:

GLSL 型OpenGL 型列挙型テクスチャ型
imageBufferGL_IMAGE_BUFFERTextureBuffer
imageCubeArrayGL_IMAGE_CUBE_MAP_ARRAYTextureCubeMapArray
iimageBufferGL_IMAGE_BUFFERTextureBuffer
iimageCubeArrayGL_INT_IMAGE_CUBE_MAP_ARRAYiimageBufferGL_IMAGE_BUFFERiimageCubeArrayTextureCubeMapArray
uimageBufferGL_UNSIGNED_INT_IMAGE_BUFFERTextureBuffer
uimageCubeArrayGL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAYTextureCubeMapArray

想定される使用例は以下の通りです:

import Qt3D.Render 2.14

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

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

プロパティのドキュメント

access : enumeration

シェーダーインスタンスから画像に対して許可するアクセスの種類を指定します。シェーダーが、互換性のないアクセス権を持つ画像への書き込みや読み取りを試みた場合、その挙動は未定義となります。

定数説明
ShaderImage.ReadOnly読み取り専用アクセス。
ShaderImage.WriteOnly書き込み専用アクセス。
ShaderImage.ReadWrite読み取り/書き込みアクセス。

デフォルト値は `ShaderImage.ReadWrite` です。

format : enumeration

画像形式を指定します。これは、シェーダーからShaderImage に値を格納する際に極めて重要です。

このフォーマットは、参照されるテクスチャのフォーマットと同じである必要はありません。ただし、互換性がある必要があります(サイズは一致している必要がありますが、クラス型が一致している必要はありません)。 たとえば、フォーマット R32F(サイズ 32 ビット、クラス 1x32)のテクスチャを、フォーマット RGBA8I(サイズ 32 ビット、クラス 4x8)の画像とともに使用することができます。OpenGL 仕様の表8.27 には、サポートされているすべての画像フォーマットのサイズとクラスが示されています。

デフォルトでは、Qt3Dは参照されるテクスチャのフォーマットと一致するように画像フォーマットを設定しようとします。

デフォルト値はShaderImage.Automaticです。

layer : int

ShaderImage に使用する参照テクスチャのどのレイヤーを指定します。layered が true に設定されている場合、または参照テクスチャのタイプがレイヤーと互換性がない場合、このプロパティは機能しません。

注: 参照されるテクスチャのタイプがキューブマップまたはキューブマップ配列であり、ĺayered がfalseに設定されている場合 、面とレイヤーは以下の方法で取得されます:

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

デフォルト値は 0 です。

layered : bool

*

true に設定した場合、参照されるテクスチャが 1 次元配列、2 次元配列、3 次元、キューブマップ、キューブマップ配列、または 2 次元マルチサンプル配列テクスチャである場合、レベル全体がすべてのレイヤーに対してバインドされます。false に設定した場合、layer プロパティで指定された単一のレイヤーのみがバインドされます。

デフォルト値は `false` です。

mipLevel : int

ShaderImage に対して、参照先のテクスチャのどのmipLevelを使用すべきかを指定します。

デフォルト値は 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.