이제 텍스처를 올바르게 입힌 메시와 올바르게 톤 매핑된 Unity 렌더 설정으로 구성된 씬이 있을 것입니다. 하지만 씬에는 여전히 올바른 조명 설정이 필요합니다. 이 섹션에서는 여러분이 실시간 GI 전략으로 씬을 설정한 후 즉각적인 피드백을 얻기 위해 실시간 광원으로 조명을 비춘다는 가정 하에 작성되었습니다. 베이크하는 경우에도 동일한 팁과 조명 원리가 적용됩니다.
실외 조명과 씬 설정에 대해서는 다음 사항을 고려하십시오.
실외 조명의 중요한 컴포넌트 중 하나는 반구 조명 또는 스카이라이트라고도 하는 환경 조명입니다. 밤하늘이 비추는 조명은 미미하지만, 낮의 하늘은 매우 밝은 조명을 비춥니다. 환경 조명 설정은 라이팅 탭에 있습니다(창(Window) > 라이팅(Lighting) > 설정(Settings) > 환경(Environment)).
절차적 스카이박스 머티리얼은 HDRI 큐브맵보다 더욱 간단하고 사용하기 쉽습니다.
절차적 스카이박스 머티리얼 생성 방법:
프로젝트에 새 머티리얼을 추가하고 이름을 SkyMaterial 로 지정합니다.
인스펙터에서 머티리얼의 Shader 를 Skybox/Procedural로 설정합니다.
Lighting 창의 Scene 탭에서 SkyMaterial 을 Environment > Skybox Material 로 지정합니다.
이제 씬에 약간의 조명이 들어옵니다. 씬에는 주변광이 있지만, 올바른 환경 조명은 없습니다.
일반적인 태양광이나 월광은 광원의 평행한 성질과 가까운 거리부터 무한한 거리에 있는 광원과 유사한 그림자 방향 때문에 일반적으로 방향 광원으로 나타납니다.
방향 광원이나 주변광만으로는 사실적인 조명이 구현되지 않습니다. 올바른 환경 조명에는 스카이라이트 조명의 오클루전이 필요하고, 태양광에는 간접 조명 반사가 필요합니다. 이 문서의 예에서 현재 하늘은 컬러 값 하나를 씬에 렌더링하므로 명암이 드러나지 않습니다. 이 문제를 개선하기 위해 실시간 GI 또는 베이크된 조명을 사용해 오클루전과 간접 반사 조명을 계산해야 합니다. 이렇게 하려면 다음 절차를 따르십시오.
모든 관련 메시가 실시간 GI 또는 베이킹에 추가되도록 하려면 씬에서 게임 오브젝트를 선택한 후 인스펙터 창의 정적(Static) 드롭다운 메뉴에서 라이트맵 정적(Lightmap Static) 및 반사 프로브(Reflection Probes) 를 활성화합니다.
참고: 일반적으로 모든 큰 정적 메시에 이 단계를 적용해야 합니다.
Lighting 창에서 Scene > Realtime Lighting > Realtime Global Illumination 으로 이동하여 씬이 Realtime Global Illumination 을 사용하도록 설정되었는지 확인합니다.
Lighting 창 하단에서 Auto Generate 가 선택되었는지 확인합니다.
이 단계에서는 예제 씬이 더 어두워졌으며, 전차와 뒤쪽의 출입문 같은 일부 씬 요소가 자연스러워 보이지 않습니다.
씬의 정적 게임 오브젝트에는 현재 환경 조명(반구 조명)과 방향 광원에서 비롯되는 간접 반사 리스폰스에 적절한 오클루전이 적용되었지만, 나머지 게임 오브젝트에 대해 올바른 조명 설정이 이루어져야 합니다.
동적 게임 오브젝트와 비라이트맵 게임 오브젝트가 실시간 또는 베이크된 GI를 받으려면 씬에 라이트 프로브를 배포해야 할 수 있습니다. 라이트 프로브 그룹을 씬에서 동적 조명을 받는 게임 오브젝트 가까이나 플레이어가 지나가는 영역 등에 효율적으로 배포하십시오. 라이트 프로브 그룹에 대한 자세한 내용은 라이트 프로브를 참조하십시오.
라이팅 창에서 Auto Generate 이 선택되어 있기 때문에 변경 사항을 적용할 때마다 조명이 업데이트됩니다. 이제 예제 씬에 라이트 프로브가 있기 때문에 전차와 배경의 문이 조금 더 자연스러워졌지만, 반사 효과가 자연스럽지 않습니다. 하늘이 모든 부분에서 반사되고 있으며 터널 내부에까지 보이고 있습니다.
반사 프로브는 이 문제를 해결하는 데 유용합니다. 씬 전체에 충분히 적용되도록 반사 프로브를 효율적으로 배치하십시오. 위의 씬 그림에서는 공간 전체에 반사 프로브 하나만 있어도 충분합니다. 박스 투영을 사용한 128 픽셀 큐브맵 해상도는 대부분의 경우 좋은 기준이 되고, 메모리 사용량과 반사 베이크 시간을 줄이는 데도 유용합니다.
지금은 예제 씬의 모든 요소가 제대로 자리를 잡고 서로 조화를 이루는 것으로 보입니다. 이제 사실적인 씬을 구현하기 위한 기본적인 요소는 갖추어졌지만, 전반적으로 너무 어두워지기도 했고 사실적인 품질에 도달하려면 아직 멀었습니다.
반사 프로브에 대한 자세한 내용은 반사 프로브를 참조하십시오.
현실에서 환경 조명과 태양광은 픽셀 값 1보다도 훨씬 더 밝은 광원입니다. 따라서 0–1 범위를 벗어나는 픽셀 값을 지원할 수 있는 HDR 조명이 필요합니다. 환경 조명이 씬에 미치는 영향을 확인하기 위해 예제 씬에서 방향성 태양광을 끄고 SkyMaterial > Exposure 를 16으로 설정해 보겠습니다.
태양광이 하늘에 완전히 확산되고 방향 광원이 보이지 않는 흐린 날처럼 씬이 사실적으로 보이기 시작합니다. 이제 Intensity 를 5로 설정하여 태양광을 훨씬 더 높은 값으로 씬에 다시 포함시켜 보겠습니다. 실제 태양은 거의 흰색에 가까워 보이지만, 적절한 태양광 컬러를 선택하는 것이 중요합니다. 강렬한 태양광의 컬러가 간접적인 영향을 미쳐 씬의 전체적인 모습이 크게 달라질 수 있기 때문입니다.
이제 태양광(방향 광원)이 강렬한 에너지를 품은 실제 모습과 비슷해졌으며 꽤 사실적인 씬이 연출됩니다.
지금도 씬의 조명이 꽤 사실적이지만, 디테일을 더 추가하여 더욱 사실적인 씬을 연출할 수 있습니다. 적절한 성능을 얻기 위해 실시간 GI에서 해상도에 제한을 두었기 때문에 세밀한 오클루전을 베이크하는 것은 일반적으로 불가능합니다. 이때 스크린 공간 앰비언트 오클루전이 유용할 수 있습니다. 포스트 프로세싱 프로파일에서 Ambient Occlusion 을 선택하여 SSAO를 활성화하십시오. 샘플 씬에는 Rin_Post_Basic.asset 이라는 포스트 프로세싱 프로파일이 있고 다음의 Ambient Occlusion 설정이 적용되었습니다.
SSAO는 추가 앰비언트 조명 오클루전을 처리하는 한편, 스크린 공간 반사(SSR)는 정확도를 높입니다. 포스트 프로세싱 프로파일에서 Screen Space Reflection 를 활성화하면 젖은 트랙 왼쪽에 더 이상 밝은 반사가 렌더링되지 않습니다. SSR을 사용하면 씬의 온스크린 게임 오브젝트에 더 정확한 반사가 추가되기 때문입니다.
이 두 가지 포스트 프로세싱 옵션은 모두 런타임에 성능 저하의 원인이 되므로 신중하게 활성화하십시오. 런타임 요구 사항을 충족하면서 성능에 합당한 영향을 미치도록 값을 조정하십시오.
이 단계에는 샘플 씬에 실외 및 실내 값이 일정한 노출에서 사실적으로 분리되어 있습니다. 반사는 어두운 실내 영역에서 어둡고 흐린 값이 아닌 강한 하이라이트로 표시됩니다. 하지만 씬 전경 및 배경 요소는 강력한 원근 요소임에도 불구하고 표시되지 않습니다.
희미한 포그를 씬에 추가하면 씬에 차원을 하나 더 추가하는 막대한 차이가 발생합니다.
포그를 추가한 상태에서는 전경의 레일이 위의 포그가 없는 씬에 비해 더 뚜렷하게 보입니다. 포그를 사용하려면 라이팅 창을 열고 씬(Scene) > 기타 설정(Other Settings) > 포그(Fog) 로 이동합니다. 제공된 씬에서 포그(Fog) 는 #6D6B4EFF 컬러(Color) 를 사용하도록 설정되고 밀도(Density) 가 0.025로 설정된 지수(Exponential) 모드입니다. 디퍼드 렌더링에서 포그가 자동으로 활성화되지 않는 경우 포스트 프로세싱 프로파일에서 포그를 활성화해야 할 수 있습니다.