SkyMaterial QML Type
절차적 하늘을 렌더링하고 이미지 기반 조명 데이터를 생성합니다. 더 보기...
| Import Statement: | import QtQuick3D |
| Since: | Qt 6.12 |
속성
- enableIBL : bool
(since 6.12) - fragmentShader : url
(since 6.12) - fragmentShaderCode : string
(since 6.12) - iblRenderFrames : int
(since 6.12) - iblSampleCount : int
(since 6.12) - radianceMapSize : int
(since 6.12) - skyboxMode : enumeration
(since 6.12)
상세 설명
SkyMaterial은 사용자 정의 프래그먼트 셰이더 코드를 사용하여 하늘 환경을 큐브맵으로 렌더링합니다. 생성된 큐브맵은 선택적으로 필터링하여 물리 기반 렌더링(PBR)을 위한 이미지 기반 조명(IBL)으로 사용할 수 있습니다.
이 셰이더는 큐브맵의 6개 면 모두에 대해 평가되며, 임의의 절차적 하늘, 그라데이션 또는 분석적 모델을 구현할 수 있습니다.
생성된 큐브맵은 가시적인 씬 배경으로 사용될 뿐만 아니라, 활성화된 경우 이미지 기반 조명의 소스로도 사용됩니다.
참고: 셰이더 코드나 속성을변경하면, 변경 사항이 생성된 IBL에 반영되기까지 한 프레임 이상 걸릴 수 있습니다.
셰이더
셰이더는 내장 변수 qt_eyeDir (vec3)에 접근할 수 있으며, 이 변수는 큐브맵의 중심에서 현재 샘플 방향으로 향하는 비정규화된 방향 벡터를 제공합니다.
프래그먼트 셰이더는 MAIN() 진입점을 정의해야 하며, 이 진입점은 큐브맵 렌더링 중에 생성된 각 프래그먼트에 대해 실행됩니다.
최종 픽셀 색상은 프래그먼트 셰이더의 출력 변수인 FRAGCOLOR (vec4)에 기록되어야 합니다.
최소 구성의 셰이더 예시:
void MAIN()
{
vec3 dir = normalize(qt_eyeDir);
// Output color (encoded direction as RGB)
FRAGCOLOR = vec4(dir * 0.5 + 0.5, 1.0);
}SkyMaterial에 선언된 사용자 정의 QML 속성은 프래그먼트 셰이더에서 자동으로 유니폼으로 노출됩니다. 속성 이름은 GLSL 변수 이름과 일치해야 합니다. 별도의 유니폼 선언은 필요하지 않습니다.
다음과 같은 유형 매핑이 지원됩니다:
| 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 |
속성 설명
enableIBL : bool [default: true, since 6.12]
생성된 스카이 큐브맵을 이미지 기반 라이팅에 사용할지 여부를 결정합니다.
이 옵션이 활성화되면, 엔진은 물리 기반 렌더링에서 앰비언트 라이팅 및 반사에 사용되는 필터링된 방사도 및 조도 맵을 생성합니다.
비활성화되면 하늘은 시각적 배경으로만 렌더링되며 IBL 전처리는 수행되지 않습니다.
이 속성은 Qt 6.12에서 도입되었습니다.
SceneEnvironment::lightProbe도 참조하십시오 .
fragmentShader : url [since 6.12]
파일이나 리소스 URL에서 불러온 프래그먼트 셰이더를 지정합니다.
fragmentShader와 fragmentShaderCode 가 모두 설정된 경우, fragmentShaderCode 가 우선 적용됩니다.
셰이더가 지정되지 않은 경우, 내장된 디버그 셰이더가 사용됩니다.
이 속성은 Qt 6.12에서 도입되었습니다.
fragmentShaderCode도 참조하십시오 .
fragmentShaderCode : string [since 6.12]
인라인 프래그먼트 셰이더 소스 코드를 지정합니다.
이 속성은 ` fragmentShader `와 동일하게 동작하며, 동일한 실행 모델, 내장 함수 및 속성-유니폼 자동 매핑을 사용합니다.
fragmentShader 와 fragmentShaderCode가 모두 설정된 경우, 이 속성이 우선 적용됩니다.
이 속성은 Qt 6.12에서 도입되었습니다.
fragmentShader도 참조하십시오 .
iblRenderFrames : int [default: 0, since 6.12]
IBL 프리필터의 작동 방식이 프레임 간에 어떻게 분배되는지를 제어합니다.
- 0 — 모든 처리를 하나의 프레임에서 수행: 샘플 누적, 정규화 및 조도 계산이 모두 동일한 프레임에서 수행됩니다.
- N ≥ 1 — iblSampleCount 샘플이 N개의 슬라이스 프레임(프레임당
ceil(iblSampleCount / N)개의 샘플)으로 분할된 후, 전용 정규화 및 조도 프레임이 이어집니다.
값이 높을수록 GGX 프리필터 비용이 더 많은 프레임에 분산되므로, 하늘의 변화가 드물고 품질을 위해 높은 iblSampleCount 이 필요한 경우에 유용합니다.
참고: 이 속성은 enableIBL 가 false 일 때는 효과가 없습니다.
이 속성은 Qt 6.12에서 도입되었습니다.
‘ iblSampleCount ’ 및 ‘ enableIBL ’항목도 참조하십시오 .
iblSampleCount : int [default: 32, since 6.12]
필터링된 방사도 맵의 출력 텍셀당 평가된 GGX 중요도 샘플의 총 수입니다. 이 값이 높을수록 태양 원반과 같은 고주파 특징에서 발생하는 쉬머링 현상이 줄어들지만, 그 대가로 생성 시간이 늘어납니다.
값은 [1, 1024] 범위로 제한됩니다.
참고: ` enableIBL `가 ` false`로 설정된 경우이 속성은 효과가 없습니다.
이 속성은 Qt 6.12에서 도입되었습니다.
iblRenderFrames 및 enableIBL도 참조하십시오 .
radianceMapSize : int [default: 512, since 6.12]
이미지 기반 조명 및 반사 프로브에 사용되는 생성된 환경 큐브맵의 해상도를 지정합니다.
값이 높을수록 특히 광택이 있는 재질의 경우 반사 선명도와 조명 품질이 향상되지만, 메모리 사용량과 렌더링 비용이 증가합니다.
값은 가장 가까운 2의 제곱으로 반올림되며 [8, 2048] 범위로 제한됩니다.
참고: ‘ skyboxMode ’가 ‘ ScreenSpace ’ 값으로 설정된경우 , 보이는 하늘은 화면에서 직접 평가되며 이 속성은 IBL/반사 큐브맵에만 영향을 미칩니다. ‘ SkyMaterial.Cubemap ’가 설정된 경우, 이 속성은 보이는 배경의 선명도도 결정합니다. ‘ enableIBL ’가 ‘ false ’이고, ‘ skyboxMode ’가 ‘ ScreenSpace ’ 값이며, 반사 프로브가 없는 경우, 큐브맵은 전혀 생성되지 않습니다.
이 속성은 Qt 6.12에서 도입되었습니다.
skyboxMode 및 enableIBL도 참조하십시오 .
skyboxMode : enumeration [default: SkyMaterial.Cubemap, since 6.12]
SkyMaterial 가 표시되는 배경으로 생성할 내용을 선택합니다.
| 상수 | 설명 |
|---|---|
SkyMaterial.Cubemap | 배경은 라디언스 큐브맵(이미지 기반 라이팅에 사용되는 것과 동일한 큐브)을 샘플링하며, 이 큐브의 해상도는 radianceMapSize 에 따라 결정됩니다. 정적 하늘의 경우 큐브는 한 번 렌더링된 후 매 프레임마다 낮은 비용으로 샘플링되므로, 카메라 외에는 아무것도 움직이지 않을 때 프레임당 비용이 가장 낮습니다. 선명도는 radianceMapSize 로 제한됩니다. |
SkyMaterial.ScreenSpaceFull | 하늘 셰이더는 매 프레임마다 전체 뷰포트 해상도로 화면에서 직접 평가됩니다(가장 선명하지만 비용이 가장 많이 듭니다). |
SkyMaterial.ScreenSpaceHalf | 축당 절반의 해상도(픽셀의 1/4)에서 화면 공간에서 직접 평가한 후 뷰포트로 업스케일링합니다. |
SkyMaterial.ScreenSpaceQuarter | 축당 1/4 해상도(픽셀의 1/16)에서 직접 스크린 스페이스 평가를 수행한 후 뷰포트로 업스케일링합니다. |
ScreenSpace 모드는 보이는 배경을 IBL 큐브에서 분리하며, 동적 하늘(예: 움직이는 태양, 애니메이션이 적용된 볼륨 구름)에 가장 적합합니다. Cubemap 은 정적 하늘에 가장 적합합니다. Cubemap 은 enableIBL 이 false 인 경우에도 큐브맵이 생성되도록 강제합니다.
이 속성은 Qt 6.12에서 도입되었습니다.
radianceMapSize 및 enableIBL도 참조하십시오 .
© 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.