게임 엔진의 라이팅 묘사
HDRP에서의 라이팅은 현실세계를 그대로 묘사했을 정도이다.
어떠한 시스템이 사실적인 라이팅을 가능하게 했을까?
우선 빌트인 혹은 URP와 비교하여 광원의 유형이나 형태는 크게 바뀌지 않았다.
그러나 HDRP에서는 빛과 관련된 수치가 실제 수치를 사용하며 광원 효과를 사실적으로 나타낼 여러 효과가 추가되었기 때문에 정교한 묘사가 가능해졌다.
그렇다면 어떻게 해야 높은 수준의 빛 표현을 나타낼 수 있을까?
아래의 5가지 광원 효과를 적절하게 사용하면 그럴듯한 렌더링 결과를 얻을 수 있다. 물론 추가적인 포스트 프로세싱은 필수다.
- 광원의 온도(켈빈)에 따른 색 변화
- 빛의 물리 광원 단위와 강도 사용
- 환경 조명
- 볼류메트릭 조명
- 스크린 스페이스 앰비언트 오클루전
이제 위의 기술들을 하나하나씩 살펴보자.
광원의 온도에 따른 색 변화
기존의 라이트와 차이점
빌트인과 URP에서는 라이트의 색을 지정해주는 형태였다. 하지만 HDRP에서는 Color뿐만 아니라 켈빈도를 기준으로 하여 컬러를 설정할 수 있도록 해놓았다. 만약 온도를 기준으로 라이트 색을 변경한다면 추가적으로 색 필터를 입혀 사용할 수 있다.
어떻게 사용할까?
라이트 하위 항목에 Emission탭으로 가서 Light Appearance항목을 Filter and Temperature로 변경한다.
이 항목을 사용하면 물리적으로 정확한 (온도에 따른)빛 표현이 가능하다.
물리 광원 단위와 강도 사용
상업용 단위 사용
HDRP에서는 PLU(물리 광원 단위)를 사용한다. PLU는 조도에 관련된 SI(국제 표준 단위)이다.
유니티 HDRP에서의 PLU는 다음과 같은 종류가 있다.
단위 | 정의 | 사용 |
칸델라 | 양초 하나의 광속 | - |
루멘 | 광속의 국제 표준 단위 | 점, 스폿, 면 광원 |
럭스 | 1제곱미터당 1루멘 | 방향 광원 |
니트 | 1제곱미터당 1칸델라 | 면 광원(LED 디스플레이 등) |
EV | 100 ISO필름의 노출값에 해당하는 강도 단위 | 조명 밝기 조정 |
아래는 광원에 따른 빛의 세기와 노출을 유니티에서 정리한 표이다.
어떻게 사용할까?
아래의 사진처럼 Intensity를 조정하여 사용할 수 있다.
필요한 단위를 설정한 후 수치를 변경하면 된다.
혹은 아래처럼 프리셋을 사용할 수 있다.
환경 조명
환경 조명이란?
물체에 의해 그림자진 부분은 어두운 것이 당연하지만 그렇다고 모두가 동일하게 어둡지는 않다. 예를 들어서 빛 반사가 많이 되는 곳의 그림자는 빛 반사가 적은 곳의 그림자보다 상대적으로 밝아서 옅은 그림자를 띤다. 이렇듯 하늘과 땅 같은 주변 환경에서 반사된 빛을 환경 조명이라고 한다. 다시 말해 환경 조명은 환경을 구성하는 주변광 역할을 한다.
어떻게 사용할까?
Volume의 Visual Environment를 오버라이드 하여 사용해야 한다.
사용 결과
Visual Environment OFF | Visual Environment ON |
언제 사용할 수 있을까?
환경 조명은 가능한 켜 두는 것이 좋다고 생각한다. 리소스를 많이 잡아먹지도 않을뿐더러 켰을때가 껐을 때에 비해 훨씬 자연스러운 분위기를 연출하기 때문이다.
볼류메트릭 조명
볼류메트릭 조명이란?
유니티 공식 가이드에서는 다음과 같이 설명하고 있다.
"볼류메트릭 조명을 사용하면 석양이 질 때 구름 뒤로 비치는 틈새빛살이나 나뭇잎 사이로 쏟아지는 빛 등 극적인 햇빛의 렌더링을 시뮬레이션할 수 있습니다." |
다음은 볼류메트릭 조명을 사용하여 빛 효과를 나타낸 것이다.
어떻게 사용할 수 있을까?
볼류메트릭 조명은 볼류메트릭 포그 볼륨에서 God Ray를 생성함으로써 효과를 나타낸다. 따라서 반드시 볼륨의 Fog가 켜져 있는 상태여야 한다.
HDRP의 모든 라이트에는 Volumetrics옵션이 있다. 여기서 Enable을 체크하고 다음 수치를 조절하면 된다.
Multiplier | 효과의 세기 대한 항목 |
Shadow Dimmer | 그림자가 드리우는 표면에 빛이 줄어드는 방식 제어값 |
Fade Distance | 효과가 나타나는 구간 |
스크린 스페이스 앰비언트 오클루전(SSAO)
SSAO란 무엇일까?
그대로 번역하면 '화면 공간 주위 차폐'라는 뜻이 된다. 먼저 Ambient Occlusion의 목적은 빛의 차폐를 통한 빛 감쇠 근사치를 구하여 공간감을 추가하는 것에 있다. 각 구간 공간의 표면이 얼마나 노출되어있는가에 따라 그림자를 더해주는 것이다. 간단히 말하면 평평하거나 볼록한 물체는 밝게, 오목한 물체는 어둡게 표현하여 입체감을 추가한다.
여기서 SS(스크린 스페이스)는 스크린에 나타나고 있는 영역만을 앰비언트 오클루전 한다는 의미이다. 실시간 렌더링을 하기 때문에 당연한 선택이라고 볼 수 있다.
아래 테스트 결과를 통해 자세히 알아보자.
SSAO가 꺼져 있을 때 보다 켜져 있을 때 분명한 명암의 대비를 이룬다.
어떻게 사용할까?
SSAO는 볼륨에서 오버라이드를 통해 사용할 수 있다.
위의 이미지처럼 Ambient Occlusion을 체크하고 내부의 변숫값을 조정하면 된다.
'유니티 > 그래픽스' 카테고리의 다른 글
[Unity] HDRP (4) - 포스트 프로세싱 (0) | 2022.08.11 |
---|---|
[Unity] HDRP (3) - 렌더링 보정 (0) | 2022.08.10 |
[Unity] HDRP (1) - 프로젝트 세팅 및 볼륨 (0) | 2022.08.09 |
[Unity] 라이트 세팅 (2) - 라이트 프로브와 리플렉션 프로브 (0) | 2022.05.07 |
[Unity] 라이트 세팅 (1) - 리얼타임 라이팅과 베이크드 라이팅 (0) | 2022.05.06 |