QuadTextureProvider QML Type
사용자 정의 프래그먼트 셰이더를 사용하여 쿼드 텍스처를 렌더링하는 데 사용됩니다. 더 보기...
| Import Statement: | import QtQuick3D.Helpers |
| Since: | Qt 6.12 |
| Inherits: |
속성
- format : enumeration
(since 6.12) - fragmentShader : url
(since 6.12) - fragmentShaderCode : string
(since 6.12) - height : int
(since 6.12) - width : int
(since 6.12)
상세 설명
이 유형은 사용자 정의 셰이더 코드를 사용하여 쿼드 텍스처를 렌더링하는 데 사용되며, 프로그래밍 가능한 텍스처를 편리하게 얻을 수 있는 방법을 제공합니다. 프래그먼트 셰이더와 원하는 속성을 제공하면 패스가 생성되고, 제공된 데이터를 기반으로 셰이더 파이프라인이 구축되며, 해당 속성이 유니폼 값으로 프래그먼트 셰이더에 전달됩니다.
제공되는 내장 함수:
| 키워드 | 유형 | 설명 |
|---|---|---|
| MAIN | void MAIN()은 진입점입니다. 제공된 프래그먼트 셰이더에는 이 함수가 반드시 포함되어야 합니다. | |
| INPUT_UV | vec2 | 현재 프래그먼트의 UV 좌표입니다. 오른쪽 상단: [1, 1], 왼쪽 하단: [0, 0]입니다. |
| OUTPUT_SIZE | vec2 | 출력 텍스처의 크기. |
사용자 정의 속성은 유니폼에 매핑됩니다. 값이 변경될 때마다 업데이트된 값이 셰이더에 반영됩니다. 이 개념은 ShaderEffect 에서 이미 익숙할 수 있습니다.
QML 속성 이름과 GLSL 변수 이름은 일치해야 합니다. 개별 유니폼에 대해 셰이더 코드에서 별도로 선언할 필요는 없습니다. 대신 QML 속성 이름을 그대로 사용할 수 있습니다.
다음 표는 유형이 어떻게 매핑되는지 보여줍니다:
| QML 유형 | 셰이더 유형 | 비고 |
|---|---|---|
| real, int, bool | float, int, bool | |
| color | vec4 | sRGB에서 선형으로의 변환은 암시적으로 수행됩니다 |
| vector2d | vec2 | |
| vector3d | vec3 | |
| vector4d | vec4 | |
| matrix4x4 | mat4 | |
| 쿼터니언 | vec4 | 스칼라 값은 w |
| rect | vec4 | |
| 점, 크기 | vec2 | |
| TextureInput | sampler2D |
간단한 빨간색 텍스처를 출력하는 예시는 다음과 같이 구현할 수 있습니다:
Texture {
textureProvider: QuadTextureProvider {
width: 128
height: 128
fragmentShaderCode: `
void MAIN() {
FRAGCOLOR = vec4(1.0, 0.0, 0.0, 1.0);
}
`
}
}Texture 속성에서 샘플링하여 UV 색상과 혼합하는 또 다른 예시는 다음과 같습니다:
Texture {
textureProvider: QuadTextureProvider {
fragmentShaderCode: `
void MAIN() {
vec2 uv = INPUT_UV;
vec4 c = texture(checkers, uv);
FRAGCOLOR = mix(c, vec4(uv, 1, 1), 0.5);
}`
property Texture checkers : Texture {
source: "../shared/maps/checkers2.png"
}
}
}결과는 다음과 같습니다:

참고: 버텍스 셰이더는 지원되지 않으며, 프래그먼트 셰이더만지원됩니다 .
참고: Texture 속성이 제공된경우 , 종속 텍스처가 사용 가능해질 때까지 렌더링되지 않습니다.
참고: 현재 런타임 시점에 속성을 추가하거나 제거하는 기능은지원되지 않으며 , 기존 속성만 수정할 수있습니다 .
ShaderEffect도 참조하십시오 .
속성 문서
format : enumeration [default: TexureData.RGBA16F, since 6.12]
이 속성은 출력 텍스처의 형식을 지정합니다.
| 상수 | 설명 |
|---|---|
TexureData.RGBA8 | 색상 형식은 R, G, B 및 알파 채널에서 8비트 정수로 간주됩니다. |
TexureData.RGBA16F | 색상 형식은 R, G, B 및 알파 채널에서 16비트 부동 소수점으로 간주됩니다. |
TexureData.RGBA32F | 색상 형식은 R, G, B 및 알파 채널에서 32비트 부동 소수점으로 간주됩니다. |
TexureData.RGBE8 | 색상 형식은 R, G, B 채널에서 8비트 맨티사, 8비트 공유 지수로 간주됩니다. |
TexureData.R8 | 색상 형식은 R 채널에서 8비트 정수로 간주됩니다. |
TexureData.R16 | 색상 형식은 R 채널에서 16비트 정수로 간주됩니다. |
TexureData.R16F | 색상 형식은 R 채널에서 16비트 부동 소수점으로 간주됩니다. |
TexureData.R32F | 색상 형식은 R 채널에서 32비트 부동 소수점으로 간주됩니다. 참고: |
이 속성은 Qt 6.12에서 도입되었습니다.
fragmentShader : url [since 6.12]
사용자 정의 프래그먼트 셰이더 코드 스니펫이 포함된 파일을 지정합니다.
값은 URL이어야 하며, 로컬 파일이어야 하거나 qrc 스키마를 사용하여 Qt 리소스 시스템을 통해 임베드된 파일에 접근해야 합니다. 상대 파일 경로(스키마 없음)도 허용되며, 이 경우 파일은 컴포넌트( .qml 파일)를 기준으로 상대 경로로 간주됩니다.
경고: 셰이더 스니펫은 신뢰할 수 있는 콘텐츠로 간주됩니다. 애플리케이션 개발자는 애플리케이션의 일부가 아닌 사용자가 제공한 콘텐츠의 로딩을 허용하기 전에 잠재적인 영향을 신중하게 고려해야 합니다.
참고: 이 속성이 설정된경우 , fragmentShaderCode 가 fragmentShader보다 우선 적용됩니다.
이 속성은 Qt 6.12에서 도입되었습니다.
fragmentShaderCode도 참조하십시오 .
fragmentShaderCode : string [since 6.12]
사용자 정의 프래그먼트 셰이더 코드의 일부를 지정합니다.
파일을 제공하는 대신 셰이더 코드를 문자열로 인라인 처리하는 방법으로 사용됩니다.
참고: 이 속성이 설정된경우 , ` fragmentShader`보다 우선 적용됩니다.
이 속성은 Qt 6.12에서 도입되었습니다.
fragmentShader도 참조하십시오 .
height : int [default: 128, since 6.12]
출력 텍스처의 높이를 픽셀 단위로 지정합니다.
이 속성은 Qt 6.12에서 도입되었습니다.
width도 참조하십시오 .
width : int [default: 128, since 6.12]
출력 텍스처의 너비를 픽셀 단위로 지정합니다.
이 속성은 Qt 6.12에서 도입되었습니다.
height도 참조하십시오 .
© 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.