본문 바로가기
이펙트 (FX)/이펙트 팁 : Unreal

[Unreal] Custom Depth Pass란? (Stencil, 스텐실, 커스텀뎁스)

by Minkyu Lee 2023. 10. 10.

Custom Depth Pass를 사용하면,

화면에 출력되지 않는 텍스처(Offscreen Texture)에 게임 화면이 렌더링된다.

 

렌더되는 정보는 깊이스텐실 정보다.

활성화 된 컴포넌트가 있다면 렌더가 되는 것이다.

 

따라서 특징은 두가지다.

1. 임의로 한 번 더 렌더링한다.

2. 원하는 컴포넌트만 출력한다.

뷰모드 - 버퍼 시각화를 통해 결과를 확인할 수 있다. (커스템 뎁스, 커스텀 스텐실)

 

 

1. 스텐실 버퍼(Stencil Buffer)란?

스텐실 버퍼는 화면의 각 픽셀에 대해 **8비트의 정수 값(0~255)**을 저장할 수 있는 일종의 '마스크(Mask)' 데이터 공간입니다.

  • 역할: 특정 물체가 그려진 영역에 "여기는 1번이야", "저기는 2번이야"라고 숫자로 태그를 붙이는 것과 같습니다.
  • 특징: 이 값 자체는 화면에 보이지 않지만, 포스트 프로세스(Post Process) 단계에서 이 숫자를 읽어와서 "1번 숫자가 써진 곳에만 외곽선을 그려라" 같은 명령을 내릴 수 있게 해줍니다.

 

2. 커스텀 뎁스(Custom Depth)와의 관계

언리얼에서 스텐실 버퍼는 보통 Custom Depth Pass와 함께 작동합니다.

  • Custom Depth: 메인 장면의 깊이값(Scene Depth)과는 별도로, 특정 오브젝트들만 따로 렌더링해서 깊이(거리) 정보를 기록하는 버퍼입니다.
  • 연결 고리: 커스텀 뎁스를 활성화하면 해당 오브젝트의 픽셀 위치에 **스텐실 값(CustomStencil Value)**을 함께 기록할 수 있습니다. 즉, 커스텀 뎁스가 "어디에 물체가 있는지"를 알려준다면, 스텐실 버퍼는 "그 물체가 어떤 종류(ID)인지"를 알려줍니다.

3. 설정 방법 (3단계)

1단계: 프로젝트 설정 활성화

스텐실 버퍼를 사용하려면 먼저 엔진에서 기능을 켜야 합니다.

  1. Project Settings (프로젝트 세팅)을 엽니다.
  2. Custom Depth-Stencil Pass를 검색합니다.
  3. 설정값을 Enabled with Stencil로 변경합니다. (이 설정을 해야 8비트 스텐실 데이터를 사용할 수 있습니다.)

 

2단계: 액터(Actor) 설정

효과를 적용하고 싶은 오브젝트(스태틱 메시 등)를 선택합니다.

  1. 디테일 패널에서 Rendering 섹션을 찾습니다.
  2. Render CustomDepth Pass 옵션을 체크합니다.
  3. CustomDepth Stencil Value에 원하는 숫자(예: 1, 2, 100 등)를 입력합니다.

 

3단계: 포스트 프로세스 머티리얼 작성

이제 머티리얼 에디터에서 이 값을 불러와 활용합니다.

  • SceneTexture 노드를 생성합니다.
  • Scene Texture Id를 CustomStencil로 설정합니다.
  • 이 노드에서 나오는 값을 비교(If 노드 등)하여 특정 숫자일 때만 색상을 바꾸거나 효과를 줍니다.

4. 주요 활용 사례

이 기술은 게임 개발에서 매우 필수적입니다.

  1. 외곽선(Outline) 효과: * 특정 아이템에 마우스를 올렸을 때 테두리가 생기게 할 때 사용합니다. 스텐실 값이 있는 영역과 없는 영역의 경계선을 찾아 선을 그립니다.
  2. 투시(X-Ray) 효과:
    • 캐릭터가 벽 뒤로 가려졌을 때 실루엣만 보이게 하고 싶을 때 사용합니다. Scene Depth(벽의 거리)보다 Custom Depth(캐릭터의 거리)가 클 때(즉, 가려졌을 때) 특정 색을 칠하도록 로직을 짭니다.
  3. 오브젝트별 개별 효과:
    • 아이템 등급에 따라 (예: 일반=1, 전설=2) 스텐실 값을 다르게 부여하고, 포스트 프로세스에서 1번은 하얀색, 2번은 황금색 광원 효과를 줄 수 있습니다.
  4. 특정 구역 마스킹:
    • 포털(Portal) 효과처럼 특정 창문을 통해서만 다른 세상이 보이게 할 때 스텐실 버퍼로 해당 창문 영역만 마스킹합니다.

 

요약

커스텀 뎁스는 물체를 '선별'하는 역할을 하고, 스텐실 버퍼는 선별된 물체에 '번호표'를 붙이는 역할을 합니다.

댓글