멀티뷰 렌더링
다중 뷰 렌더링이란 드로우 호출을 2D 텍스처 배열의 레이어로 인스턴스화하는 것을 말합니다. Qt에서 이는 특히 Qt Quick 3D Xr로 구축된 VR/AR 애플리케이션과 관련이 있습니다. 멀티뷰 렌더링을 사용하면 좌우 눈의 콘텐츠에 대해 씬 탐색, 렌더링 준비, 렌더 패스 기록을 각각 독립적으로 수행하는 대신, 이를 한 번만 수행할 수 있으며, 단일 렌더 패스의 드로우 콜이 텍스처 배열의 레이어 0과 1로 인스턴스화됩니다. 버텍스 셰이더는 뷰 인덱스를 나타내는 특수 변수를 사용하여, 이를 기반으로 뷰별 값을 계산합니다. 카메라 행렬과 같이 뷰에 종속적인 데이터를 포함하는 유니폼은 양쪽 눈 모두에 제공되어야 합니다. 멀티뷰 렌더링은 시스템에 가해지는 렌더러의 부하를 줄여, 잠재적으로 더 나은 성능을 이끌어낼 것으로 기대됩니다. 다만, 렌더러와 셰이더가 뷰에 종속적인 데이터와 텍스처 배열을 적절하게 처리할 수 있도록 해야 한다는 단점이 있습니다.
저수준 개요
Qt 애플리케이션 개발자는 Qt 렌더링 스택의 하위 수준에서 멀티뷰 렌더링이 어떻게 구현되는지 반드시 완전히 이해할 필요는 없습니다. 내부 작동 원리에 대해 더 자세히 알아보고자 하는 개발자를 위해 다음 링크를 제공합니다.
3D API의 멀티뷰 지원
멀티뷰 렌더링은 기본 3D API가 런타임에 이를 지원하는 경우에만 사용할 수 있습니다. 자세한 내용은 해당 사양 및 문서를 참조하십시오:
- OpenGL: OVR_multiview1 및 OVR_multiview2
- Vulkan: VK_KHR_multiview
- Direct 3D 12: ViewInstancing
- Metal: rendering_to_multiple_texture_slices
Qt의 렌더링 하드웨어 인터페이스(RHI)에서의 멀티뷰 지원
Qt에서는 3D 그래픽 API가 ` QRhi ` 클래스를 통해 추상화됩니다. ` Qt Quick ` 및 ` Qt Quick 3D `는 모든 가속 렌더링에 이 인프라를 사용합니다. 멀티뷰 렌더링 지원에 대한 자세한 저수준 정보는 다음을 참조하십시오:
Qt Quick 의 멀티뷰 지원 - Quick 3D - Quick 3D XR 스택
의 멀티뷰 지원 Qt Quick
Qt Quick 는 멀티뷰를 인식하지만, 자체적으로는 멀티뷰 렌더링을 사용하지 않습니다. 2D 요소가 3D 씬에 삽입될 때, Qt Quick 3D 와 함께 사용할 경우 멀티뷰 렌더링 지원이 중요해집니다. 3D 씬이 멀티뷰 렌더 타깃으로 출력될 때 2D 콘텐츠를 올바르게 렌더링하려면, 2D 렌더러와 그 머티리얼(셰이더)이 멀티뷰를 지원하도록 준비되어 있어야 합니다.
Qt 기반 애플리케이션 개발자는 대부분의 경우 이 점을 고려할 필요가 없습니다. Qt Quick 에 내장된 Rectangle, Image, Text 등의 항목이 기반으로 하는 내장 머티리얼은 모두 멀티뷰와 호환되기 때문입니다.
그러나 사용자 정의 머티리얼(QSGMaterial, QSGMaterialShader)을 개발하거나 ShaderEffect 용 셰이더를 작성할 때, Qt Quick 3D Xr 애플리케이션의 VR/AR 씬 내에서 해당 2D 콘텐츠를 사용하려는 경우, 사용자 정의 콘텐츠는 멀티뷰를 지원해야 합니다. 이에 대한 자세한 내용은 QSGMaterial::viewCount()을 참조하십시오.
멀티뷰를 지원하는 셰이더 작성은 Qt의 셰이더 컨디셔닝 파이프라인을 통해 가능합니다. 자세한 내용은 QSB 매뉴얼의 ‘Multiview’ 섹션과 qt_add_shaders() 를 참조하십시오.
xml-ph-0000@deepl.internal XR을 사용하지 않는 Qt Quick 3D
Qt Quick 3D Qt Quick 3D XR을 사용하지 않는 애플리케이션(즉, VR/AR 애플리케이션이 아닌 경우)에서는 현재 멀티뷰 렌더링을 사용할 수 없습니다. 그러나 Xr은 동일한 인프라를 기반으로 구축되었기 때문에 3D 렌더러는 멀티뷰를 완벽하게 지원합니다. 이나 과 같은 모든 표준 내장 기능은 멀티뷰와 완벽하게 호환됩니다. 구형 독립형 이펙트 모듈과 같은 일부 사용 중단된 기능은 멀티뷰 렌더링을 지원하지 않을 수 있습니다. Qt Quick 3D Model PrincipledMaterial
CustomMaterial 나 Effect 에 사용자 정의 셰이더 스니펫이 포함되는 경우, 멀티뷰 렌더링이 활성화된 Qt Quick 3D Xr 애플리케이션에서 올바르게 작동하려면 애플리케이션에서 제공하는 셰이더 코드를 멀티뷰 지원을 고려하여 작성해야 합니다. 이를 구현하는 방법에 대해서는 해당 유형의 문서를 참조하십시오. 이 점이 특히 중요한 특수 키워드는 VIEW_INDEX, INPUT, SCREEN_TEXTURE, DEPTH_TEXTURE, AO_TEXTURE 입니다.
예를 들어, 다음 후처리 효과는 INPUT 가 sampler2D 대신 sampler2DArray 인 경우를 대비하여 준비되었기 때문에 멀티뷰와 호환됩니다:
void MAIN()
{
vec4 c = texture(someTexture, TEXTURE_UV);
// ...
#if QSHADER_VIEW_COUNT >= 2
FRAGCOLOR = c * texture(INPUT, vec3(INPUT_UV, VIEW_INDEX));
#else
FRAGCOLOR = c * texture(INPUT, INPUT_UV);
#endif
}Qt Quick 3D Xr의 멀티뷰 지원
기본적으로, 기반 그래픽 API가 멀티뷰 렌더링을 지원하는 한 이 기능은 활성화되어 있습니다. 이는 최상의 성능을 보장하기 위함입니다. 멀티뷰 렌더링 지원 여부를 확인하려면 multiViewRenderingSupported 속성을 확인하십시오.
개발 및 테스트 목적으로 멀티뷰 렌더링 사용을 비활성화하는 것이 유용할 수 있습니다. 이를 위해서는 환경 변수 QT_QUICK3D_XR_DISABLE_MULTIVIEW 을 0이 아닌 값으로 설정하면 됩니다.
멀티뷰 렌더링이 활성화되어 있는지 확인하려면 multiViewRenderingEnabled 속성을 사용하십시오. 멀티뷰 렌더링을 활성화할 수 없는 경우 이 값은 항상 false로 유지됩니다.
일반적으로 VR/AR 애플리케이션은 멀티뷰 렌더링이 지원되는 경우 이를 활성화된 상태로 유지하고, 문제가 발생하거나 테스트 목적으로만 비활성화하는 것이 권장됩니다. 멀티뷰 렌더링은 성능을 향상시켜 GPU, 특히 CPU 부하를 줄여줄 것으로 기대됩니다.
© 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.