컨택트 그림자
컨택트 그림자 볼륨 오버라이드는 컨택트 그림자의 동작을 제어할 프로퍼티를 지정합니다. 컨택트 그림자는 고해상도 렌더 파이프라인(HDRP)이 뎁스 버퍼 내 스크린 공간에서 레이마칭하는 그림자입니다. 컨택트 그림자를 사용하는 목적은 일반 그림자 매핑 알고리즘이 캡처하지 못하는 작은 디테일을 캡처하는 것입니다.
컨택트 그림자 활성화
씬에서 이 기능을 사용하려면 먼저 해당 기능을 프로젝트에 활성화한 다음 카메라에도 활성화합니다. 프로젝트에서 기능을 활성화하려면 HDRP 에셋을 사용하고 카메라에 대해 기능을 활성화하려면 프레임 설정을 사용합니다. 기본 프레임 설정을 사용하여 모든 카메라에 대해 기능을 활성화할 수도 있고 각 카메라의 개별 프레임 설정을 오버라이드하여 특정 카메라에만 기능을 활성화할 수도 있습니다.
이 기능의 경우 다음과 같습니다. HDRP 에셋에서 활성화되는 프로퍼티는 Lighting > Shadows > Use Contact Shadows입니다. 프레임 설정에서 활성화되는 프로퍼티는 Lighting > Contact Shadows입니다.
컨택트 그림자 사용
Contact Shadows는 볼륨 프레임워크를 사용합니다. 따라서 Contact Shadow 프로퍼티를 활성화하고 수정하려면 씬의 볼륨에 Contact Shadows 오버라이드를 추가해야 합니다. 볼륨에 Contact Shadows를 추가하려면 다음 단계를 따르십시오.
- 씬 또는 계층 구조 뷰에서 Volume 컴포넌트가 포함된 게임 오브젝트를 선택하여 인스펙터에서 확인합니다.
- 인스펙터에서 Add Override > Shadowing으로 이동한 후 Contact Shadows를 클릭합니다. 그러면 HDRP가 이 볼륨이 영향을 주는 모든 카메라에 Contact Shadows를 적용합니다.
방향, 점 및 스폿 광원별로 컨택트 그림자를 활성화할 수 있습니다. 각 광원의 Shadows 섹션에 있는 Contact Shadows 드롭다운에서 Enable 체크박스를 선택하여 HDRP가 해당 광원에 대한 컨택트 그림자를 계산해야 함을 표시하십시오.
한 번에 하나의 광원만 컨택트 그림자를 드리울 수 있습니다. 즉 화면에 컨택트 그림자를 드리우는 광원이 두 개 이상 있는 경우 지배적인 광원만 컨택트 그림자를 렌더링합니다. HDRP는 광원 바운딩 박스의 스크린 공간 크기를 사용하여 우세한 광원을 선택합니다. 컨택트 그림자를 드리우는 방향 광원은 항상 우세한 광원입니다.
참고: 광원은 뎁스 버퍼를 작성하는 머티리얼이 사용된 모든 메시 렌더러에 컨택트 그림자를 드리웁니다. 이는 메시 렌더러에 Cast Shadows 프로퍼티를 활성화했는지 여부와 관계가 없습니다. 즉 작은 게임 오브젝트/프랍에서 Cast Shadows를 비활성화해도 계속 컨택트 그림자를 드리우게 할 수 있습니다. 이는 HDRP가 그림자 맵에서 이러한 게임 오브젝트를 렌더링하기를 바라지 않는 경우에 좋습니다. 이 동작을 원치 않는 경우 셰이더 그래프를 사용하여 뎁스 버퍼에 작성하지 않는 머티리얼을 저작합니다.
API
런타임 시 이 오버라이드에 액세스하여 제어하려면 볼륨 스크립팅 API를 사용합니다. 볼륨 시스템이 작동하는 방식으로 인해 표준 Unity 컴포넌트에 다른 방식으로 프로퍼티를 편집합니다. 각 프로퍼티에 오버라이드 상태가 있는 것과 마찬가지로 주의해야 할 다른 미묘한 차이가 있습니다. 이는 설정한 프로퍼티 값을 사용해야 하는지 또는 볼륨 프로파일에 저장된 기본값을 사용해야 하는지 볼륨 시스템에 알려줍니다. API를 올바르게 사용하는 방법에 대한 자세한 내용은 볼륨 스크립팅 API를 참조하십시오.
프로퍼티
모든 Volume 컴포넌트 오버라이드에서 프로퍼티를 편집하려면 프로퍼티 왼쪽에 있는 체크박스를 활성화합니다. 이는 또한 HDRP가 기본값이 아닌 Volume 컴포넌트에 대해 지정한 프로퍼티 값을 사용하도록 지시합니다. 체크박스를 비활성화하는 경우 HDRP는 설정한 프로퍼티를 무시하고, 해당 프로퍼티에 대한 볼륨의 기본값을 대신 사용합니다.
프로퍼티 | 설명 |
---|---|
Enable | 체크박스를 활성화하면 HDRP가 이 볼륨에 대한 컨택트 그림자를 처리합니다. |
Length | 슬라이더를 사용하여 HDRP가 트레이싱에 사용하는 광선의 길이(미터 단위)를 설정합니다. 광선이 디테일을 캡처할 수 있는 최대 거리의 역할도 수행합니다. |
Distance Scale Factor | HDRP가 거리에 따라 컨택트 그림자를 확대합니다. 슬라이더를 사용하여 HDRP가 스케일을 감쇠하는 데 사용하는 값을 설정하여 거리에 따른 바이어스 결함을 방지합니다. |
Min Distance | HDRP가 컨택트 그림자를 페이드인하기 시작하는 카메라로부터의 거리(미터)입니다. |
Max Distance | HDRP가 컨택트 그림자를 0으로 페이드아웃하기 시작하는 카메라로부터의 거리(미터)입니다. |
Fade In Distance | Min Distance를 지날 때 HDRP가 컨택트 그림자를 페이드인하는 거리(미터)입니다. |
Fade Out Distance | Max Distance 에서 HDRP가 컨택트 그림자를 페이드아웃하는 거리(미터)입니다. |
Opacity | 슬라이더를 사용하여 컨택트 그림자의 불투명도를 설정합니다. 값이 낮을수록 더 부드럽고 덜 두드러진 그림자를 생성합니다. |
Bias | 컨택트 그림자를 가져오기 위해 광선이 드리워진 스크린 공간에 적용된 바이어스를 제어합니다. 값이 높을수록 셀프 섀도잉을 줄일 수 있지만 값이 너무 높으면 컨택트 그림자에 특히 바람직하지 않을 수 있는 피터 패닝 현상이 발생할 수도 있습니다. |
Thickness | 광선을 따라 발견되는 오브젝트의 두께를 제어하며 기본적으로 컨택트 그림자를 두껍게 합니다. 그림자 안의 구멍을 채우는 데 사용될 수 있지만 또한 과도하게 넓은 그림자가 발생할 수도 있습니다. |
Quality | 이 효과에 대해 사용하는 품질 수준을 지정합니다. 각 품질 수준은 다른 프리셋 값을 적용합니다. Unity는 또한 프리셋이 오버라이드하는 프로퍼티 편집을 방지합니다. 모든 프로퍼티에 대해 자체 값을 설정하고자 하는 경우 Custom을 선택해야 합니다. |
Sample Count | 슬라이더를 사용하여 HDRP가 레이 캐스팅에 사용하는 샘플 수를 설정합니다. 값을 높이면 품질이 향상되고 성능이 저하됩니다. |
세부 정보
Mesh Renderer 컴포넌트의 경우 Cast Shadows 를 Off 로 설정하면 컨택트 그림자에 적용되지 않습니다.
컨택트 그림자는 1080p의 기본 PS4에서 0.5-1.3ms의 가변 비용을 지니고 있습니다.