Passthrough Window


SkyBox를 변경하는 대신 구를 하나 생성해 SkyBox Material을 만들고 구 형태의 스카이박스를 생성한다.

Meta Building Block의 Passthrough Window를 사용해 창을 생성한다.
VR세계에서 Passthrough를 생성하면, 모든 오브젝트들이 렌더링 된 이후에
자동으로 프레임 버퍼 알파값을 수정해 Passthrough 윈도우가 보이게 된다.
MR Window

Layer-Add Layer에 Stencil Mask Layer를 추가한다.

URP Renderer- Add Renderer Feature- Render Object를 생성한다.

Event-AfterRendering Qpaques설정
LayerMask- Stencil Mask설정
Stencil을 체크 후 Value값을 1로 설정
Compare Function- Equal 설정
우선, Render Object란 사용자가 설정한 특정 시간/ 특정 레이어/ 특정 오버라이드로개체를 렌더링 할 수 있도록 만든 렌더 오브젝트다.
어떤 오브젝트를 다른 방식으로 렌더할 때 사용된다.
Stencil을 체크해 렌더러가 스텐실 버퍼값을 처리하도록 한다.
Stencil란 [GPU에서 스텐실 버퍼는 각 픽셀에 대해 8비트 정수 값을 저장]
프레임 버퍼에서 셰이더를 실행하기 전에 설정된 픽셀에 대해, GPU는 스텐실 버퍼의 현재 값을 주어진 기준 값과 비교한다. 이것을 스텐실 테스트라고 하는데, 스텐실 테스트를 통과하면, GPU는 Depth 테스트를 수행한다.
만약스텐실 테스트가 실패하면, GPU는 해당 픽셀에 대한 나머지 처리를 건너뛴다.
이를 통해 스텐실 버퍼를 Mask(보이지 않음)으로 사용하여 GPU에 어떤 픽셀을 그리고 어떤 픽셀을 버릴지 설정할 수 있는 기능이다.
주로 Portal이나 거울과 같은 특수 효과에 스텐실 버퍼를 사용한다.
Compare Function-Equal: 참조 값이 스텐실 버퍼값과 같을 때 픽셀을 렌더링 한다.

SkyBox Sphere Layer를 Stencil Mask로 설정한다.

이후 Stencil을 위한 Shader를 생성한다.

Shader Material을 생성하고, Stencil ID를 이전 Render Object-Override- Value값과 같은 1로 설정한다.

Cube로 Window형태를 만들고, 앞서 만든 Material을 넣어 확인한다.
'Unity XR' 카테고리의 다른 글
| [Unity XR] OpenXR Setting (0) | 2024.09.17 |
|---|---|
| [Unity XR] Depth Mask Hole/Monster Shooting (0) | 2024.08.30 |
| [Unity XR] OVRInput-Shoot Ball XR (0) | 2024.08.25 |
| [Unity XR] Mixed Reality Utility Kit - Scene Effect Mesh (0) | 2024.08.24 |
| [Unity XR] Grab Interaction XR (0) | 2024.08.23 |