LOD(Level Of Detail)은 게임내에서 사용되는 모델링의 detail한 정도를 조절하면서 성능상의 이점을 얻고자 하는 기술을 말한다. 메인 카메라와의 거리 또는 화면에서 차지하는 비율에 따라 LOD를 구현할 수 있는데, 언리얼 엔진에서는 후자를 채택하고 있다.
모델링 파일(.fbx)을 언리얼 에디터로 열면 Details패널에서 LOD세팅을 할 수 있다. 특이한 점은
언리얼 엔진 자체에서 LOD로 모델링을 단순화하는 기능을 제공하고 있다는 것이다(LOD->Reduction Settings). 언리얼 엔진에서 내부 알고리즘을 이용해 모델링의 폴리곤들을 줄인다고 예상할 수 있지만, 그 구현까지는 이 글에서 다루지 않는다.
언리얼 내부에서 LOD세팅을 할 수 있다는 것은 알겠는데, 과연 어느정도로 최적화가 되는것인지 궁금해서 실험을 하나 진행해봤다.
언리얼 에디터에 LOD를 적용한 바위 모델링을 맵에 9555개를 복사 붙여넣기 한후 'stat FPS' cmd명령으로 프레임을 관찰했다.
9555개의 돌이 없는 곳을 바라볼때는 120 FPS가 나왔고
LOD가 적용되어 단순화된 9555개의 돌을 바라볼때는 30-40 FPS가 나왔고
화면에 돌을 가득채워서 LOD0 상태인 9555개의 돌을 바라볼때는 3FPS가 나왔다.
LOD로 모델링을 단순화 시키는 것은 성능상의 효과가 분명히 있다고 결론내릴 수 있겠다.
실험을 하면서 새로 알게 된 것인데, 9555개의 돌이 맵상에 존재해도 바라보지 않으면 전혀 렌더링을 하지 않아서 성능상의 이점을 얻게해주는 엔진 기능이 있다는 것을 확인했다.
'occlusion culling'이라는 기술인데, 다음에는 이에 대한 포스팅을 진행해 보려고 한다.