본문 바로가기
유니티 엔진

유니티5의 라이트맵핑의 비밀 : Realtime GI와 BakedGI 동시에 쓰기

by 대마왕J 2015. 4. 5.

뭐 그럼 이번에야말로.

왜 도대체 처음에는 저놈의 리얼타임 GI와 베이킹 GI가 동시에 켜 있는지 궁금했었죠 ㅋㅋㅋㅋ

아놔 ㅋㅋㅋ 저거 베이킹 GI 꺼도 아무 변화 없잖아!@!! 제기랄!!! 이러면서 ㅋㅋㅋ

 

 

맨 처음 시작하면 저 상태에서

 

 

 

Baked GI를 꺼도 아무 변화가 없었다는 거죠.

그래서 처음에는 오해하기 딱 좋습니다.

"리얼타임 GI가 켜지면 베이크드 GI는 동작하지 않는구나!!!"

 

하지만 이건 정확하지 않습니다.

베이크드 GI가 동작하지 않는게 아니라, 지금 설정이 모두 베이크드 GI 뿐이라서 그렇습니다.

 

 

그 증거로 Directional Light일때, 리얼타임 GI를 끄면 이상한 데이터가 나옵니다.

 

 

이것은 아마도 , 베이크드 GI가 동작했지만 Directional Light는 리얼타임 GI로 동작중이라 , 이런 경우에는 Baking된 상태 + 리얼타임 그림자가 된 상태라서 굉장히 그림자가 검게 나옵니다 (사실 그렇다고 해도 PointLight나 SpotLight는 좀 다르게 동작합니다. 그것의 이유는 아마도 Self Shadow의 여부일지도요?)

 

즉 다시 정리하면,

 '둘 다 켜있을때 하나만 동작하는게 아니라, 기본 라이팅/셰이딩 속성이 모두 리얼타임이었던 것 뿐입니다'

 

 

 

그렇다면 둘 다 켜놓은 상태에서, 라이트나 쉐이더가

일일히 리얼타임Gi로 동작할거냐 베이크드 GI로 동작할거냐를 선택할 수 있다는 말인가요????

 

네 그렇습니다. 그게 정답입니다.

 

 

엄청난 자유도네요. 언리얼과 차별점은 확실히 이런 자유도입니다.

대신 너무 정밀하고 조절이 복잡한게 단점이지만요.

 

 

그럼 그 옵션들이 어디 있는지 살펴보죠

 

1. 라이트에

 

 

조명에 옵션이 있습니다. 리얼타임용이냐 베이크 용이냐 말이죠.

 

이 옵션에 따라 라이트맵이 구워지는 위치가 달라집니다 (리얼타임은 라이트맵을 굽지만 맵으로 존재하진 않고 스냅샷으로 존재하지만요)

 

 

 

이렇게 두 개의 조명에 두 개의 공이 있다면, 그리고 둘 다 리얼타임으로 동작한다면

 

 

당연히 라이트맵은 안구워집니다.

지금은 BakedGI가 전혀 안동작하고 있는 상태란 말입니다.

 

 

당연히 라이트맵은 없죠. 연속 베이킹 (Countinuous Baking) 이 켜져 있다면 하드디스크의 캐쉬 안에,

꺼져있어서 수동 베이킹 했다면 스냅샷과 스카이박스 리플렉션 프로브를 이용해서 라이트맵이 계산되고 있을 겁니다.

이 데이터는 라이트가 어디로 튕겨서 어디로 갈 것인가만 저장된 데이터라는 점이 대단한 점입니다.

 

이렇게 한 번 실시간 라이트맵이 베이킹되었다면, 오브젝트가 고정되어 있는 상황이라면 여기다가 아무리 빛을 추가해도 , 색을 바꿔도 위치를 이동해도 - 라이트에 제한되지만 - 실시간 GI가 작동합니다. 조명의 GI 반사가 계산되어 고정되어 있기 때문이지요. 이 것이 실시간 GI의 무서운 점입니다. 심지어 플레이 중간에서도 GI상태를 유지한 채 라이트를 동적으로 변화시킬 수 있으니까요!!

단 아쉬운 점은, Baking GI에서 사용하던 AO를 구을수는 없다는 것 정도입니다.

 

 

 

이 상태에서 그럼 하나만 Baked Light로 바꿔 보지요.

 

 

이미지가 좀 밝아졌습니다.

역시 Baked랑 RealTime Bake 의 색상이 완벽히 맞기를 기대하는건 무리일까요?

 

요즘 이슈가 되고 있는 라이트 프로브의 색상이 밝아진다는 것도 이것의 차이가 아닐지 라는 생각이 드네요.

 

 

 

이 상태의 라이트맵은... 과연 라이트 하나의 상태만 구워졌습니다!

 

이렇게 라이트별로 라이트맵의 방법을 정할 수 있다는 막강한 점이 대단한 것 같습니다.

 

여전히 파랑 공 옆 라이트는 리얼타임으로 움직이고, 빨간 공만 베이크드로 움직입니다. ㄷㄷㄷㄷ 놀라운 자유도

 

그리고 이렇게 되면, 당연하게도 리얼라임 GI데이터와 라이트맵이 동시에 생깁니다.

 

 

 

 

 

2. 셰이더에

 

공이 빛나는 것도 현재 리얼타임으로 되어 있어서 구워지지 않습니다.

플레이 중간에 동적으로는 불가능하지만, 어쨌건 Emission을 에디터에서 실시간으로 색상과 강도를 조절하면 리얼타임으로 발동됩니다.

 

그리고 이것도 당연히 구을 수 있습니다.

 

 

요렇게요.

 

 

그리고 요렇게 구워집니다. 옆에 파랑 공이 있는 자리는 그냥 비어 있다는 것을 주의하세요

 

 

 

만약 모든 라이트와 셰이더의 Emission이 Baked 옵션이라면

라이트맵은 이렇게 나옵니다.

 

 

 

아무것도 안건드렸는데 Realtime이랑 Baked가 상당히 느낌이 다릅니다!! 이걸 어떻게 생각해야 할지 어지럽네요.

 

 

3. Ambient GI에

 

이것으로 끝이 아닙니다. 유니티5의 라이트는 엠비언트에도 있다는 사실을 잊지 마시길.

기존과 같은 단색 엠비언트 칼라가 아니라 스카이 라이트의 개념이기 때문에 엠비언트도 중요한 단백질 공급원이죠

 

 

 

 

그래서 여기에 있습니다.

 

이걸 적용하면....

 

확실히 라이트맵이 좀 밝아집니다. Ambient GI 영향값을 텍스쳐로 구워 버렸으니까요

 

 

잘 모르시겠다면... 하늘을 붉고 밝게 바꿔 보았습니다.

아무래도 EXR이라 선명함은 덜하지만 확실히 붉어진건 보실 수 있으실 겁니다.

 

 

 

뭐 그치만 이 기능은 그냥

 

 

이것만 꺼주셔도 자동으로 동작합니다.

 

대신 이렇게 하면 리얼타임 GI가 동작하지 않아 라이팅쪽은 일일히 바꿔 줘야 겠지만 ㅎㅎ

 

 

이렇게 유니티5의 라이트맵은 리얼타임과 베이크가 얽혀 있어서 한 눈에 알기가 좀 힘들게 되어 있습니다.

그치만 뭐 조금만 주의해서 공부하면 못할 레벨은 아니지요.

 

 

이후에는 ...시간나면 라이트 프로브라던가 리플렉션 프로브에 대해서도 글 써볼까 합니다.

근데 뭐 그것들은 쉬워서요.

 

 

반응형

댓글