라이팅의 기본 개념
라이팅이란 광원에서 반사된 빛이 물체에 반사되어 이것을 눈(카메라)에 보는것입니다.
Direct Lighting
그럼 어떻게 유니티나 언리얼에서는 사물이 이런식으로 사물이 빛에 영향을 받는지, 깊게 궁금하신 분들을 위해서 간단하게 설명 드리자면 모델링된 오브젝트는 모두 노멀 버택스를 가지고있습니다.
재미있는 사실은 이는 다이렉트X를 배워야 알수있는 3D 엔진의 구성 단계입니다.
이전에 내적을 글로 쓴적이 있는데 이 수학의 내적이 여기서 사용됩니다.
오브젝트의 수많은 노멀 버텍스는 광원과 내적으로 연산을 하게됩니다.
두 백터사이들의 접전이 내적시에 0(두 벡터가 마주본다)이면 최대 밝기
반대면(두 벡터가 방향이 같다) 1 가장 어두움으로 표현하며 이를 기존 텍스쳐의 색과 연산하여 오브젝트는 빛에 영향을 받을수있습니다, 단 지금 보시는것과 같이 한 오브젝트에도 무수한 노멀 버택스가 있으며 광원이 게임 퍼포먼스에 많은 연산량을 차지한다라는것을 바로 이해할 수 있습니다. 이 단계를 기본적으로 Direct Lighting이라고 합니다.
Indirect Illumination
빛은 한번만 반사되는게 아니라 여러번 반사될수있습니다 마우스 커서위치의 오브젝트는
빨간색을 띄지만 여러차례 반사된 빨간색 광원이 다른 구체들에 의해 희미한 빨간색으로 보여지는것을 확인 할수있는데
이런식으로 반사된 빛을 처리하는 방식을 Indirect Illumination 이라고합니다.
빛이 물체에 반사되었을때 반사 뿐만이 아닌 굴절,외곡,분산이 되는경우가 발생합니다.
이런경우는 유리,거울,이 광원에 받는 영향입니다.
지금까지의 과정을 모두 합친상태의 최종 라이팅이 Global Illumination이 됩니다.
라이팅 맵핑 알아보기
하지만 게임에서 이러한 Global Illumination을 실시간으로 연산하기에는 부하가 무척 큽니다.
여러분이 이를 테스트하기 쉬운경우는 단순히 유니티에서 실시간 라이팅을 키고 apk 빌드를 하는것만으로도
프레임 드랍이 발생되는것으로 확인 가능합니다.
예전부터 이런 라이팅의 연산량을 줄이고자 사용되는 방법이 라이팅 매핑입니다.
라이팅 매핑이란 정적인 오브젝트에 대한 DL(Direct Lighting) 과 IL(Indirect Illumination)에 대한
Global Illumination 결과값을 텍스쳐에 저장해서 오브젝트에 텍스쳐에 저장하는 방식입니다.
이를 유니티에서는 베이킹이라고 합니다.
라이팅/리플렉셕 프로브
1. 라이팅 프로브
Light Probe는 이전의 베이크된 라이트맵 정보를 씬에 저장하는 기법입니다.
라이트맵핑과 다른점은 라이트 맵핑은 표면의 정보만을 저장하지만 라이트 프로브는 공간에대한 정보를 저장한다고 보시면됩니다. 라이팅 프로브의 연산이 이루어지는 방법은 큐브맵으로 공간을 채워 오브젝트의 RGB 정보를 저장한다고 보시면 됩니다.
이것의 용도는 다이다믹 게임 오브젝트의 글로벌 일루미네이션 효과를 주기 위함입니다.
사용법
Hierarchy -> Lighting -> Lighting Probe Group 추가
노란색 구체마다 공간을 캡처하게된다 많으면 디테일한 라이팅 정보를 저장할수있으나
베이킹 과정의 시간이 늘어난다
프로브 추가
EditLight Probes 클릭 -> Ctrl + C / V로 반사광이 일어나는 부분까지 공간 확장
이상태에서 Window -> Lighting -> Generate Lighting (베이킹)
결과
오브젝트를 이동시키면 주변에 설치해두었던 라이팅 프로브가 캡채해둔 정보들을 출력하여 공간에 라이팅에 적용되는것을 확인할수있습니다.
2. 리플렉션 프로브
리플렉션 프로브는 리플렉션 매핑 기법을 통해 큐브맵에 주변 환경값을 텍스쳐로 저장하는 기법입니다.
큐브맵이란 간단히 설명드리자면 정육면체의 카메라 오브젝트를 두고 앞,뒤,좌,우,위,아래 면을
카메라로 캡쳐하게되면 이미지가 되는데 이것을 큐브맵으로 저장하게 됩니다.
이것을 큐브맵으로 사용하는 이유는 반사가되는 효과를 실시간으로 처리하기에는 굉장히 많은 부하가 걸리기 때문입니다.
유니티에서 중요한 부분은 실시간으로 처리가 가능하지만 그런게 아니라면 이런식으로 리플렉션 프로브로 연산량을 최적화하여 사용합니다.
'유니티' 카테고리의 다른 글
프로그램과 프로세스란 (0) | 2025.04.06 |
---|