물리 기반 음영으로 작업하기: 실용적인 접근 방식

Unity 5 개발 기간 동안 내부적으로 바이킹 빌리지 프로젝트를 셰이딩 및 라이팅 워크플로에 대한 시험장으로 사용했습니다.
Unity 5 베타 버전을 사용 중인 경우 에셋 스토어에서 바이킹 빌리지 패키지를 다운로드하여 Unity 5에서 씬을 조립하고 조명하는 방법에 대한 인사이트를 얻을 수 있습니다. 또한 아래에 몇 가지 학습 내용을 소개합니다.
텍스처링 및 셰이더 구성이 적절하게 작동하는지 확인하려면 다양한 조명 설정이 포함된 간단한 씬을 사용하는 것이 좋습니다. 이는 스카이박스, 조명 등 모델을 비추는 데 기여하는 모든 것을 의미할 수 있습니다.
Unity 5를 열면 새로운 빈 씬에 프로시저럴 스카이와 기본 앰비언트 및 리플렉션 세팅이 있는 것을 확인할 수 있습니다. 이는 적절한 시작점을 제공합니다.

템플릿 환경에서는 다음과 같이 사용했습니다:
- HDR 카메라 렌더링
- 몇 개의 산란 반사 프로브(물체에 국부적으로 반사되는 경우)
- 조명 프로브 그룹
- HDR 스카이 텍스처와 머티리얼, 프로시저럴 스카이 세트입니다. 이 프로젝트와 함께 제공되는 하늘은 네덜란드 스카이 360의 저자 밥 그루하우스(Bob Groothuis)가 Unity를 위해 맞춤 제작했습니다.
- 강도와 HDR 하늘색이 일치하는 오프 화이트 방향성 조명
하늘 텍스처 파노라마 조정하기
대부분의 하늘 텍스처에는 태양(플레어 등)이 포함되므로 태양의 빛이 표면에 반사됩니다. 이로 인해 세 가지 문제가 발생할 수 있습니다:
1) 태양을 표현하는 데 사용하는 디렉셔널 라이트는 스카이박스에 칠해진 태양의 정확한 방향과 일치해야 하며, 그렇지 않으면 머티리얼에 여러 개의 스페큘러 핫스팟이 생깁니다.
2) 반사된 태양과 스페큘러 핫스팟이 겹쳐서 강렬한 스페큘러 하이라이트가 발생합니다.
3) 구운 태양 반사는 표면이 그림자 속에 있을 때 가려지지 않고 어두운 곳에서 지나치게 반짝입니다.

따라서 태양 하이라이트, 플레어, 태양 광선 및 HDR 값을 하늘 텍스처에서 편집한 후 디렉셔널 라이트를 사용하여 다시 적용해야 합니다.
물리 기반 셰이딩 머티리얼 제작
실제 머티리얼을 에뮬레이션할 때 추측을 피하려면 신뢰할 수 있는 알려진 레퍼런스를 따르는 것이 유용하며, 표준 셰이더는 스페큘러 컬러와 메탈릭 워크플로우를 모두 지원합니다. 둘 다 리플렉션의 색상을 정의합니다.
표면으로 이동합니다. 스페큘러 워크플로에서는 컬러를 직접 지정하는 반면, 메탈릭 워크플로에서는 표준 셰이더 컨트롤에 설정된 디퓨즈 컬러와 메탈릭 값의 조합에서 컬러를 파생합니다.
바이킹 빌리지 프로젝트에서는 표준 셰이더의 스페큘러 컬러 워크플로를 사용했습니다. 에셋 스토어에서 다운로드할 수 있는 캘리브레이션 장면에는 유용한 캘리브레이션 차트가 포함되어 있습니다. 다음과 같은 경우 차트를 정기적으로 참조했습니다.
자료를 디자인합니다.
머티리얼에 접근할 때 각각 고유한 값 세트와 참조 차트가 있는 스페큘러 및 메탈릭 워크플로 중에서 선택할 수 있습니다. 스페큘러 워크플로에서는 스페큘러 반사광의 색상을 직접 선택하고, 메탈릭 워크플로에서는 머티리얼이 조명을 받았을 때 금속처럼 작동할지 여부를 선택합니다.


스페큘러 또는 메탈릭 워크플로 중 선택하는 것은 주로 개인적인 취향의 문제이며, 일반적으로 어떤 워크플로를 사용하든 동일한 결과를 얻을 수 있습니다.
차트와 값 외에도 실제 표면의 샘플을 수집하는 것은 매우 유용합니다. 모방하려는 표면 유형을 찾고 빛에 어떻게 반응하는지 이해하는 것이 큰 도움이 됩니다.
자료 설정
처음 시작할 때는 보정 차트에서 파생된 색상, 값 및 슬라이더를 사용하여 단순하지만 조정 가능한 재질 표현을 만드는 것이 유용할 때가 많습니다. 그런 다음 원본 머티리얼을 참조로 유지하면서 텍스처를 적용하여 특성이 유지되는지 확인할 수 있습니다.

바이킹 빌리지의 텍스처는 퀵셀에서 제공한 스캔한 디퓨즈/알베도, 스페큘러, 광택, 노멀 맵 이미지뿐만 아니라 전통적인 수동 방법(사진 + 조정)을 사용하여 제작했습니다.
머티리얼의 텍스처 채널에 디테일을 추가할 때는 주의하세요. 예를 들어 텍스처에 조명(앰비언트 오클루전, 그림자 등)을 배치하지 않는 것이 좋습니다. 물리 기반 렌더링 방식은 필요한 모든 조명을 제공한다는 점을 기억하세요.
당연히 사진 보정은 스캔 데이터를 사용하는 것보다 더 까다로운 작업이며, 특히 PBS 친화적인 값의 경우 더욱 그렇습니다. 퀵셀 스위트 및 알레고리틱 서브스턴트 페인터와 같이 프로세스를 더 쉽게 도와주는 툴이 있습니다.
스캔한 데이터
PBS 보정 스캔 텍스처는 데이터가 이미 채널로 분리되어 있고 알베도, 스페큘러 및 평활도 값이 포함되어 있으므로 편집의 필요성을 줄여줍니다. PBS 보정 데이터를 제공하는 소프트웨어에 익스포트용 Unity 프로파일이 포함되어 있는 것이 가장 좋습니다. 참조 차트는 언제든지 정신 상태를 점검하고 포토샵이나 관련 도구를 사용하여 값을 보정해야 하는 경우 가이드로 사용할 수 있습니다.
자료 예시
바이킹 마을 씬은 콘텐츠 양이 많으면서도 텍스처 메모리 사용량을 적정 수준으로 유지하려고 노력했습니다. 10미터 높이의 나무 크레인을 설치하는 방법을 예로 들어 보겠습니다.
많은 텍스처, 특히 스페큘러 및 디퓨즈 텍스처는 균질하며 다양한 해상도가 필요하다는 점에 유의하세요.



- 알베도 텍스처: 스페큘러 워크플로에서는 표면에서 반사된 확산광의 색상을 나타냅니다. 왼쪽 이미지(크레인)에서 볼 수 있듯이 매우 디테일할 필요는 없지만 오른쪽 텍스처(방패)에는 상당히 독특한 디테일이 포함되어 있습니다.


- 스페큘러: 비금속(절연체)은 비교적 어둡고 회색조인 반면 금속 값은 밝고 색상이 있을 수 있습니다(금속의 녹, 기름, 먼지는 금속이 아니라는 점을 기억하세요). 나무 표면의 스페큘러는 스페큘러 텍스처의 이점이 크지 않았기 때문에 맵을 입력하는 대신 값을 사용했습니다.


- 부드러움은 PBS 자료의 핵심 요소입니다. 표면의 변화, 불완전성, 디테일을 더하고 표면의 상태와 나이를 표현하는 데 도움이 됩니다. 크레인의 경우 매끄러움은 표면 전체에 걸쳐 상당히 일정했기 때문에 값으로 대체했습니다. 이를 통해 텍스처 메모리를 합리적으로 늘릴 수 있었습니다.


- 오클루전은 표면의 여러 지점이 주변 환경의 빛에 얼마나 노출되어 있는지를 나타냅니다. 앰비언트 오클루전은 간접광이 거의 없는 영역에서 앰비언트와 반사를 음소거하여 표면의 디테일과 깊이를 살립니다. 씬에 SSAO(스크린 스페이스 앰비언트 오클루전)를 사용하는 옵션도 있다는 점을 기억하세요. SSAO와 AO를 사용하면 특정 영역이 이중으로 어두워질 수 있으며, 이 경우 AO 맵을 캐비티 맵으로 처리하는 것을 고려할 수 있습니다.
게임에서 SSAO 및/또는 라이트 매핑 앰비언트 오클루전을 사용하는 경우 깊은 균열과 주름을 강조하는 AO 맵이 가장 좋은 옵션일 수 있습니다.

보조 텍스처 및 해상도
보조 텍스처는 디테일 수준을 높이거나 머티리얼 내에서 변화를 주는 데 사용할 수 있습니다. 디테일 마스크 속성을 사용하여 마스킹할 수 있습니다.
크레인 예시에서는 해상도가 낮은 1차 디퓨즈 우드 텍스처가 사용되었기 때문에 2차 텍스처 세트가 매우 중요합니다. 최종 표면에 미세한 디테일을 더합니다. 이 경우 세부 지도는 타일로 되어 있으며 해상도가 상당히 낮습니다. 다른 많은 나무 표면에서도 반복되므로 텍스처 메모리를 크게 절약할 수 있습니다.


이러한 워크플로는 바이킹 빌리지 프로젝트를 디자인할 때 확실히 도움이 되었습니다. 여러분도 유용하게 사용하시길 바라며, 여러분의 의견을 기다리겠습니다!
감사의 말
바이킹 빌리지 프로젝트는 HDR 표면 캡처 기술 및 PBS 지원 텍스처의 퀵셀 메가스캔 라이브러리를 개발한 퀵셀의 크리에이티브 팀과 협력하여 시작되었습니다.
이 장면에 생동감을 불어넣어준 재능 있는 Emmanuel "Manu" Tavares와 Plamen "Paco" Tamnev에게 큰 감사를 드립니다.
에셋 스토어에서 프로젝트를 다운로드하세요. Unity 5.0.0 RC2에 최적화되어 있다는 점에 유의하세요.