컨택트 섀도

UE4 의 Contact Shadow, 컨택트 섀도에 대한 개요입니다.

추가 참고

어플리케이션에서 씬과 캐릭터를 만들 때, 렌더링에 시각적 깊이를 더하고 싶을 때가 있습니다. Contact Shadows (컨택트 섀도)를 더하면 씬의 시각적 깊이와 정확도를 높이기에 좋습니다. 그림자 추정을 보다 정확히 해 주어, 다른 그림자 알고리즘으로는 낼 수 없는 윤곽 그림자를 더할 수 있기 때문입니다.

캐릭터에 디테일 추가

컨택트 섀도를 켠 포인트 라이트 가 쓰이는 곳 하나 예를 들면, 캐릭터에 추가 레벨 오브 디테일 (LOD) 을 렌더링할 때입니다. 다음 그림에서 컨택트 섀도우를 쓰면 캐릭터에 어떤 것이 추가되는지 살펴볼 수 있을 것입니다. 비교 슬라이더를 오른쪽에서 왼쪽으로 끌면 컨택트 섀도가 켜진 포인트 라이트 반경 안에 위치한 캐릭터에 꺼졌을 때는 없던 디테일이 추가되는 것이 보일 것입니다.

컨택트 섀도 꺼짐

라이트의 컨택트 섀도 길이 = 0.1

컨택트 섀도를 켜면, 렌더러에게 라이트 별로 픽셀 단위 스크린 스페이스 알고리즘을 실행하라 명령을 내립니다. 즉 컨택트 섀도 알고리즘이 라이트 계산 패스를 실행하여, 씬 뎁스 버퍼 광선 검사를 통해 어떤 픽셀이 컨택트 섀도를 켠 포인트 라이트 위치에서 가려지는지 결정한다는 뜻입니다.

컨택트 섀도가 있는 씬

또 한가지 컨택트 섀도 사용 예라면, 라이트를 하나만 지원하는 머티리얼의 픽셀 셰이더 안에서 패럴랙스 오클루전 매핑 섀도 계산을 하지 않아도 되도록 만드는 경우입니다. 다음 그림은 컨택트 섀도를 켜고 끈 상태에서 패럴랙스 오클루전 매핑 머티리얼을 비교한 것입니다.

ContactShadow_Comparison.png

참고로 패럴랙스 오클루전 매핑 머티리얼은 픽셀 뎁스 오프셋을 출력해야 한다는 점이 중요합니다.

다음은 패럴랙스 오클루전 매핑 머티리얼과 상호작용하는 컨택트 섀도 예제입니다.

image alt text

양쪽 라이트에 컨택트 섀도 길이 = 0.1 입니다.

컨택트 섀도 켜기

기본적으로 컨택트 섀도는 포인트 라이트에 꺼져있습니다. 즉 포인트 라이트의 컨택트 섀도 길이 초기값은 0 입니다. 컨택트 섀도를 켜는 방법은 다음과 같습니다:

  1. 먼저 포인트 라이트 를 씬에 놓습니다.

    CastShadows_Step1.png

  2. 새로 만든 포인트 라이트 컴포넌트의 디테일 패널에서 Light 섹션의 확장 화살표를 클릭하여 펼칩니다.

    클릭하면 이미지 원본을 확인합니다.

  3. 컨택트 섀도를 켜려면, Contact Shadow Length (컨택트 섀도 길이) 값을 0 보다 큰 값으로 설정합니다.

    클릭하면 이미지 원본을 확인합니다.

컨택트 섀도 길이 값을 0 보다 큰 값으로 설정하면, 씬의 뎁스 버퍼를 통해 픽셀의 위치에서 라이트 소스 쪽으로 레이 트레이싱을 하도록 렌더러에게 지시하는 것입니다. 전형적으로 컨택트 섀도 길이 최대값은 1 로 하는 것이 좋은데, 1 은 광선이 화면 전체를 가로지른다는 뜻입니다. 반면 컨택트 섀도 길이 값을 0.5 로 설정하면, 광선이 화면 절반만 가로지른다는 뜻입니다. 참고로 씬 뎁스 버퍼에서 취하는 샘플 수는 고정되어 있어, 컨택트 섀도 길이 값을 높이면 노이즈 부작용이 심해진다는 뜻입니다. 기본적으로 컨택트 섀도 길이 0.75 는 0.1 보다 노이즈가 많이 생깁니다.

태그
언리얼 엔진 문서의 미래를 함께 만들어주세요! 더 나은 서비스를 제공할 수 있도록 문서 사용에 대한 피드백을 주세요.
설문조사에 참여해 주세요
취소