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 유형 열거형 | 텍스처 유형 |
|---|---|---|
| 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은 다음 이미지 유형을 지원합니다:
| GLSL 유형 | OpenGL 유형 열거형 | 텍스처 유형 |
|---|---|---|
| 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는 OpenGL ES 3.1의 모든 이미지 유형과 더불어 다음을 지원합니다:
| GLSL 유형 | OpenGL 유형 열거형 | 텍스처 유형 |
|---|---|---|
| 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 |
예상 사용 예는 다음과 같습니다:
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로 설정되어 있거나, 참조된 텍스처의 유형이 레이어와 호환되지 않는 경우 아무런 동작을 하지 않습니다.
참고: 참조된 텍스처의 유형이 큐브 맵(cube map) 또는 큐브 맵 배열(cube map array)이고 ĺayered 가 false로 설정된경우 , 면(face)과 레이어(layer)는 다음과 같은 방식으로 검색됩니다.
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.