▲ 유니티 매트 돈델린저 애드버킷

유니티는 지난 2019년 유나이트 코펜하겐에서 2D 게임 개발자를 위한 다양한 기능을 선보였다. 그 중 하나가 2D에서도 각종 광원 효과를 줄 수 있는 2D 라이트였다. 이전의 2D에서는 라이트를 활용해도 2D 오브젝트 하나하나를 인지하지 않고 씬 단위로 인식하기 때문에 세밀한 라이팅은 구현이 불가능했다. 그래서 횃불을 비롯해 각종 불빛 효과는 아티스트가 직접 그리거나 혹은 3D 라이트를 왜곡해서 표현하는 방식을 채택해야 했다.

그러나 유니티에서는 URP-HDRP 구분과 함께 URP에 2D 환경에 맞춰 조절 가능한 라이트가 추가되면서 2D 개발자의 고민을 쉽게 해결할 수 있는 길이 열렸다. 그 뒤로 2D 게임 개발 관련 기능을 다듬어온 유니티는 GDC 2023을 맞아 직접 부스에서 2D 라이트로 더욱 정교하게 다듬은 2D의 사례와 그 방법을 일부 공유했다.


우선 유니티의 2D 기능을 활용하기 위해서는 프로젝트를 시작할 때 2D 프로젝트에 2D URP 템플릿을 선택하면 쉽게 진행할 수 있다. 혹은 로스트크립트나 드래곤 크래셔 등 2D 샘플 프로젝트를 살펴보아도 무방하다. 샘플로 진행했다면 스프라이트 에디터 안에 다양한 2D 애셋이 보이는데, 여기에는 노멀맵과 마스크맵, 타일맵 등 다양한 것들이 이미 적용된 애셋이다.

노멀맵은 원래 3D 모델링에서 주로 활용된 개념이지만, 유니티에서는 2D 라이트를 추가하면서 2D 또한 빛의 변화에 따라 바뀌는 표면의 명암 표현 등을 더욱 정교하게 해줄 수단이 필요했다. 그래서 유니티에서는 2D 프로젝트를 활용할 때 노멀맵을 적용할 수 있게끔 했다.

▲ 원래 2D 오브젝트에 빛을 비추면 까맣게 혹은 하얗게 나오지만, 2D 라이트는 다르다

여기에 마스크맵까지 더해서 음영 및 명암 표현을 쉽게 구현할 수 있도록 보완했다. 마스크맵은 2D 라이트를 블렌딩하기 위한 맵으로, 단순히 어느 한쪽이 어둡고 밝은 하이라이트 명암 구도에서 벗어나 빛을 곱하고 블렌딩해서 더욱 정교한 형태로 가다듬을 수 있게 하는 기술이다. 이를 캐릭터의 외곽선을 따라서 입히면 그 선을 따라서 빛이 블렌딩되면서 2D임에도 한층 더 입체감이 있는 캐릭터를 구현할 수 있다. 또한 수풀에다가 마스크맵을 적용하면, 일일이 명암 표현이나 풀의 결을 그리지 않아도 블렌딩에 따라 수풀의 모습을 그려내는 것도 가능하다.

거기다가 처음 임포트한 상태에 고정된 스프라이트 이미지가 아닌 만큼, 씬 내에서 외부 광선의 변화가 일어나면 이를 반영해서 음영 및 명암 표현이 고스란히 생긴다는것이 큰 강점이었다. 일일이 스프라이트를 그려서 스프라이트를 교체하는 스크립트를 짜지 않아도 엔진에서 알아서 처리해주기 떄문이었다.



▲ 2D 라이트에 노멀맵, 마스크맵이 더해지면서 별도 스프라이트 교체 없이 빛의 변화가 실시간으로 반영됐다

그밖에도 글로벌 라이트가 씬 전체에 영향을 미쳐서 전반적인 분위기를 바꿀 수 있는 앰비언트 라이팅, 태양광에 해당하는 디렉셔널 라이트까지 더욱 표현을 풍부하게 해줄 광원들이 여럿 존재한다. 뿐만 아니라 그림자에 대한 옵션도 라이팅을 통해서 구현이 가능하다. 2D 환경에서 그림자는 네거티브 라이팅으로 재해석된 만큼, 블렌딩 옵션을 애딕티브에서 멀티플라이로 바꾸면 디렉셔널 라이트의 위치에 따라 그 반대 방향으로 그림자가 지는 걸 확인할 수 있다. 뿐만 아니라 빛이 직사로 들어와도 사물의 밑에 생기는 그림자, 영어로는 블롭 섀도우라 불리는 것도 흐릿한 스프라이트로 구현한 뒤 라이트 2D 스프라이트에 이식하면 그럴싸하게 구현된다.

물론 사물에 비치는 빛이 한두 종류가 아닌 만큼, 그림자의 종류도 그렇게 단순하게 네거티브 라이팅만으로 처리하기는 어렵다. 디렉셔널 라이트보다 더 가까운 위치에서 작동하는 포인트 라이트가 있으면 그림자가 여러 개 생기고, 그 위치도 디렉셔널 라이트가 있을 떄와는 다르기 떄문이다. 이렇게 투사되는 그림자들을 정교하게 표현하려면 2D 섀도우 캐스터창을 활용, 옵션을 조정하면 된다. 반대로 직사로 들어오는 빛의 영향을 사실적으로 보이기 위해서는 조절해야 하는 케이스도 있다. 나무에 드리운 그림자가 디렉셔널 라이트의 반대방향으로 지는 건 좋지만, 실제 크기보다 커지면 이상하게 보이기 때문이다. 이를 위해 유니티에는 블롭 섀도우를 스크립트로 조절할 수 있게끔 라이브러리가 갖춰졌다.




▲ 빛이 있으면 그림자도 있는 만큼, 그림자 관련 옵션도 여러 가지로 조절할 수 있다

이외에도 몰입감을 더하기 위해 클라우드 섀도우, 한 줄기 빛, 먼지 파티클, 수면에서 일어나는 빛의 굴절 등 여러 가지 이펙트들이 데모를 통해서 선보일 예정이다. 그리고 유니티 2022LTS와 유니티 2023.1 테크스트림에서는 소프트 인피니트 섀도우, 2D 라이트가 URP-HDRP에 일괄 작동할 뿐만 아니라 셰이더 그래프 노드 텍스처가 추가되거나 일괄 디버깅을 지원하는 등 새로운 기능들이 추가된다.

물론 이러한 기능을 사용하게 되면 최적화와 퍼포먼스, 편의성 사이에서 고민을 하게 된다. 특히 3D의 사례지만 실시간으로 반영되는 빛과 사물의 표현은 하드웨어의 스펙을 상당히 잡아먹는 작업인 만큼, 2D에서도 그럴 위험성이 높다고 생각하는 건 당연한 일이기 때문이다. 그래서 실제 게임플레이도 원활하게 이행될지 의문이 들 여지도 있다. 이에 매트 돈델린저 애드버킷은 로스트 크립트, 드래곤 크래셔에서 보듯 꾸준히 최적화와 퍼포먼스의 밸런스를 잡아가고 있다고 강조했다. 이밖에도 유니티에서는 앞서 언급한 것처럼 테크 데모 및 테크 스트림, LTS 업데이트를 통해서 각종 기능을 더욱 최적화할 것이라고 덧붙였다.