Mixed Lighting - ShadowMask


새로 생긴 ShadowMask 기능입니다. 일단 옵션만 바꿔서 무식하게 구워 볼까요 



물론 다른 옵션은 바로 이전 글인 7편과 동일합니다. 위에 보이는 저 옵션만 다르다고 생각하시면 돼요. 

아래는 이전과 동일합니다. 




이전의 Baked Indirect 옵션이 '라이트와 그림자는 실시간으로, GI 만 라이트맵으로' 였다면 

이건 '라이트는 실시간이고, 그림자는 셰도우맵으로 굽고, GI는 라이트맵으로 굽고' 라는 겁니다. 




그래서 구워진 결과물을 보면 ... 뭐 잘 모릅니다. 


자 여기서 잘 생각해 봐야 합니다. 


- 라이트는 실시간이라서 색이나 강도를 변화시킬 수 있습니다. 

- 그림자는 셰도우맵으로 구워진거라 움직이거나 변화할 수 없습니다. 

(단 Dynamic 오브젝트의 그림자는 실시간이므로 움직일 수 있습니다)  

- GI는 라이트맵으로 구워진거라 움직이거나 변화할 수 없습니다. 


즉 이렇게 된다는 겁니다 

위 글을 아래 그림과 비교해 보세요 





그럼, 구워진 라이트맵을 봅시다 



오오 역시 말한대로 GI와 셰도우맵이 '따로' 구워졌습니다. 


이렇게 셰도우맵을 굳이 따로 굽는 이유는 다음과 같습니다. 


일단 먼저 얘기할 것은, '실시간 그림자도 사실은 셰도우맵(Shadowmap)에 실시간으로 그려지는 텍스쳐' 라는 것입니다. 

여기 보이지는 않지만 사실 다른데에 그렇게 그려지고 있어요. 

그리고 스테틱 오브젝트의 그림자도 리얼타임 셰도우와 같은 '속성' 을 지니는 셰도우맵에 구워진 겁니다. 위에 보이는 붉은 색 이미지가 그거입니다.  


이렇게 굳이 그림자를 따로 독립해서 굽게 되면 좋은 점이.. 



'구워진' Static 오브젝트의 그림자와

'실시간인' Dynamic 오브젝트의 그림자가 


완벽히 어울린다는 것입니다. 왜냐? 같은 셰도우 맵에 그려지고 있으니까요! 


이걸 위해서 굳이 그림자만 따로 떼어서 셰도우 맵에 그리는게 ShadowMask 기능입니다. 

이렇게 되니까 조명의 색상이나 강도를 바꾸는건 실시간으로 해도 별 문제 없어지는 겁니다. 


이 기능은 Mixed Lighting에서 가장 고급스럽고 품질좋은 (무거운) 옵션 중 하나입니다

라이트맵을 굽고 나서도 라이트의 색상과 강도는 수정할 수 있다는 장점도 있고요 




ShadowMask의 한계 


이 기능의 한계점은 '그림자의 갯수 제한이 있다' 라는 것입니다. 

아무래도 그림자만 셰도우맵 텍스쳐에 굽다 보니까, RGBA 에 따라 4장까지 그림자를 표현할 수 있는 것이지요 


다음과 같이 그림자를 4개 만들어 놓고 라이트맵을 구워보면,



이렇게 ShadowMap이 칼라풀하게 구워졌습니다.


이 맵을 자세히 보면.. .


이렇게 RGBA로 구워진 것을 알 수 있습니다. [각주:1]


그렇다면 4개 이상인 경우는 어떻게 되느냐?!????




이렇게 5개의 그림자가 있는 상태에서 구워보면.. 




5번째 그림자는 라이트맵으로 구워집니다. 

즉 셰도우맵이 아니므로 셰도우맵의 장점이 사라진다는것 [각주:2]


어떤 라이트는 셰도우맵으로 구워지고 어떤 라이트는 라이트맵으로 구워지냐.. 라면 

메뉴얼에서는 보지 못했지만 여태까지 유니티에서 하던 일반적인 순서로 보자면

1순위 디렉셔널 라이트

2순위 가장 밝은 라이트 (혹은 가까운 라이트) 

이므로 여기서도 그 순위를 따를듯



그리고 이건 Light Overlap 에서도 확인할 수 있습니다. 




  1. 언리얼에 있는 스테이셔너리 라이트와 동일한 구조를 가지고 있는 것으로 보입니다. 그것도 인라이튼이니. [본문으로]
  2. 셰도우맵이 아니라 그냥 라이트맵으로 그림자를 구우면 어떤 단점이 있는지는 다음 옵션 인 Subtractive 설명때.. [본문으로]