RenderPass QML Type
3D 콘텐츠를 렌더링하기 위한 사용자 정의 렌더 패스를 정의합니다. 더 보기...
| Import Statement: | import QtQuick3D |
| Since: | Qt 6.11 |
| Inherits: |
속성
- augmentShader : url
- clearColor : color
- commands : list<RenderCommand>
- depthClearValue : real
- materialMode : RenderPass::MaterialModes
- overrideMaterial : Material
- passMode : RenderPass::PassMode
- renderTargetFlags : RenderPass::RenderTargetFlags
- stencilClearValue : int
상세 설명
RenderPass는 렌더링 단계와 해당 단계가 데이터를 기록하는 렌더 타깃을 정의합니다. 이는 다음 세 가지 요소의 조합으로 구성됩니다:
- 렌더링 대상 — commands 에서 ` ColorAttachment ` 또는 ` DepthTextureAttachment ` 명령으로 선언된 하나 이상의 출력 텍스처.
- 무엇을 렌더링할 것인가 — 패스가 그리는 장면 오브젝트로, ` RenderablesFilter ` 명령어로 제어됩니다. 동일한 렌더 타겟 내의 작업 세분화는 ` SubRenderPass ` 명령어를 사용하여 설명됩니다.
- 렌더링 방법 — ` materialMode ` 및 모든 ` PipelineStateOverride ` 명령어.
RenderPass는 View3D 또는 Node 의 자식 노드로 배치될 때 해당 씬에서 활성화됩니다.
다음 예제는 모든 씬 오브젝트를 사용자 정의 텍스처로 렌더링하는 간단한 오프스크린 패스를 설정하는 것으로, 이 텍스처는 이후 머티리얼이나 SimpleQuadRenderer 에서 사용할 수 있습니다:
import QtQuick3D
View3D {
// Declare the off-screen color buffer
RenderPassTexture {
id: myColorTexture
format: RenderPassTexture.RGBA8
}
// The render pass: where + what + how
RenderPass {
id: myRenderPass
commands: [
// Where: attach the texture as the color output
ColorAttachment {
name: "color0"
target: myColorTexture
},
// What: render all objects into it
RenderablesFilter {
renderableTypes: RenderablesFilter.Opaque | RenderablesFilter.Transparent
}
]
}
}셰이더에 데이터 노출
이펙트(Effects) 및 사용자 정의 머티리얼(Custom Materials)과 마찬가지로, RenderPass는 사용자 정의 속성을 셰이더에 자동으로 노출하고 업데이트합니다. RenderPass 하위 유형에 선언된 모든 QML 속성은 셰이더에서 유니폼(uniforms)으로 사용할 수 있습니다.
SubRenderPass, RenderOutputProvider 및 RenderablesFilter도 참조하십시오 .
속성 문서
augmentShader : url
materialMode 가 AugmentMaterial 로 설정된 경우, 이 속성은 렌더 패스의 증강 셰이더 URL을 저장합니다.
셰이더 파일에는 다음 시그니처를 가진 함수가 포함되어야 합니다.
void MAIN_FRAGMENT_AUGMENT() {
// Custom shader code here
}이 함수는 이 렌더 패스에서 렌더링되는 오브젝트가 사용하는 머티리얼의 기존 프래그먼트 셰이더와 결합됩니다. 이를 통해 사용자는 사용자 정의 코드를 사용하여 기존 머티리얼 셰이더를 확장할 수 있습니다.
clearColor : color [default: Qt.black]
이 속성은 렌더 패스의 투명 색상을 지정합니다.
commands : list<RenderCommand>
이 속성은 렌더 패스에 대한 렌더 명령어 목록을 포함합니다.
목록에 포함된 명령들은 목록에 표시된 순서대로 실행됩니다.
참고: RenderPass 와 Effects에 대한명령은 비슷하지만 동일하지는 않으며, 호환 가능으로 표시된 명령만 이 RenderPass 과 함께 사용할 수 있습니다.
SubRenderPass, PipelineStateOverride, RenderablesFilter, RenderPassTexture, ColorAttachment, DepthTextureAttachment, DepthStencilAttachment, AddDefine 및 renderTargetBlend도 참조하십시오 .
depthClearValue : real [default: 1.0]
이 속성은 렌더 패스의 깊이 클리어 값을 저장합니다.
materialMode : RenderPass::MaterialModes [default: RenderPass.OriginalMaterial]
이 패스로 렌더링할 때 오브젝트 머티리얼이 어떻게 처리될지 제어합니다.
| 상수 | 설명 |
|---|---|
RenderPass.OriginalMaterial | 오브젝트는 각각 할당된 머티리얼을 사용하여 렌더링되며, 조명, 텍스처 및 머티리얼 속성이 정상적으로 적용됩니다. 이는 장면의 정확한 복사본을 사용자 정의 렌더 타깃(예: 리플렉션 프로브용 보조 시점, 후방 카메라 또는 PIP(picture-in-picture) 효과)으로 렌더링하기 위한 표준 모드입니다. overrideMaterial, augmentShader 및 shaders 속성은 이 모드에서 사용되지 않습니다. |
RenderPass.AugmentMaterial | 각 오브젝트는 고유한 머티리얼로 렌더링되지만, augmentShader 에 정의된 MAIN_FRAGMENT_AUGMENT() 함수의 내용이 원래 머티리얼의 출력 정의 뒤에 삽입됩니다. 이를 통해 증강 코드는 머티리얼의 계산된 색상을 읽고, 해당 패스에서 ColorAttachment 명령으로 정의된 추가 색상 출력에 쓰기를 수행할 수 있습니다. 이는 단일 드로우 콜 내에서 한 어태치먼트에는 조명이 적용된 색상을, 다른 어태치먼트에는 월드 스페이스 노멀을 기록하는 등, 머티리얼별 셰이딩이 필요한 멀티 렌더 타겟(MRT) 패스에 유용합니다. |
RenderPass.OverrideMaterial | 이 패스로 렌더링되는 모든 오브젝트는 자체 속성 대신 단일 overrideMaterial 을 사용합니다. 이는 깊이 전용 패스, 섀도우 맵, 실루엣 또는 윤곽선 효과, 그리고 어떤 머티리얼이 할당되었는지와 상관없이 모든 지오메트리에 동일한 셰이딩을 적용하고자 하는 모든 경우에 유용합니다. 이 모드에서는 augmentShader 속성이 사용되지 않습니다. |
overrideMaterial : Material
이 속성은 ‘ materialMode ’가 ‘ OverrideMaterial ’로 설정되었을 때 렌더 패스에 대한 오버라이드 머티리얼을 저장합니다.
passMode : RenderPass::PassMode [default: RenderPass.UserPass]
이 속성은 렌더 패스의 패스 모드를 지정합니다.
Qt Quick 3D 는 표준 사용자 렌더 패스 외에도, 사용자가 스카이박스 및 2D 항목을 렌더링하기 위해 내부 렌더 패스를 수동으로 트리거할 수 있도록 지원합니다.
| 상수 | 설명 |
|---|---|
RenderPass.UserPass | 사용자가 지정한 렌더 패스입니다. |
RenderPass.SkyboxPass | Qt Quick 3D상수설명 |
RenderPass.Item2DPass | Qt Quick 3D내장된 2D 아이템 렌더 패스. |
renderTargetFlags : RenderPass::RenderTargetFlags [default: RenderPass.None]
이 속성은 렌더 패스에 대한 렌더 타겟 플래그를 저장합니다. 이 플래그들은 각 프레임의 시작과 끝에서 렌더 타겟의 내용이 처리되는 방식에 영향을 미칩니다.
| 상수 | 설명 |
|---|---|
RenderPass.None | 특별한 동작이 없습니다. 각 프레임의 시작 시점에 색상 및 깊이/스텐실 내용이 지워집니다. |
RenderPass.PreserveColorContents | 프레임 간에 렌더 타겟의 색상 내용을 보존하므로, 명시적으로 덮어쓰기 전까지는 이전 프레임의 출력이 유지됩니다. |
RenderPass.PreserveDepthStencilContents | 프레임 간에 렌더 타겟의 깊이 및 스텐실 내용을 보존합니다. |
RenderPass.DoNotStoreDepthStencilContents | 렌더링 후 렌더 타겟의 깊이 및 스텐실 내용을 저장하지 않습니다(타일형 GPU에서 성능이 향상될 수 있음). |
QRhiTextureRenderTarget::Flags도 참조하십시오 .
stencilClearValue : int [default: 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.