1. 개요[편집]
| 레벨 오브 디테일 Level of Detail | |
|---|---|
| 약칭 | LOD |
| 분야 | 컴퓨터 그래픽스 × 게임 렌더링 × 최적화 |
| 기준 | 카메라 거리 · 화면 점유율(screen coverage) |
| 종류 | 이산 LOD · 연속 LOD · 가상화 지오메트리 |
| 고질병 | 팝핑(popping) |
코앞의 나무는 잎맥까지 그리고, 지평선의 나무는 초록 삼각형 두 개면 충분하다. 눈치 못 채면 이긴 거다.
레벨 오브 디테일(Level of Detail, LOD)은 물체가 카메라에서 멀어지거나 화면에서 차지하는 픽셀 수가 줄어들면 메시의 폴리곤 수, 텍스처 해상도, 셰이더 복잡도를 단계적으로 낮춰 렌더링 부하를 줄이는 최적화 기법이다. 멀리 있는 물체는 어차피 화면에서 몇 픽셀 안 되므로, 100만 폴리곤짜리 원본을 그대로 그리는 건 순수한 낭비다.1
핵심 발상은 “보이는 만큼만 그린다”이다. 화면 픽셀 하나에 삼각형 수십 개가 몰려 봐야 사람 눈에는 티가 안 나므로, 그 삼각형들을 미리 뭉개 놔도 최종 이미지 품질은 거의 그대로다. 대신 GPU가 처리할 정점(vertex) 수와 드로우콜이 극적으로 줄어든다. 실시간 렌더링에서 방대한 오픈월드를 60 FPS로 굴리는 뒤편에는 거의 항상 LOD가 있다.
2. 이산 LOD[편집]
가장 전통적이고 널리 쓰이는 방식은 이산 LOD(discrete LOD)다. 한 물체에 대해 폴리곤 수가 다른 여러 버전의 메시(LOD0, LOD1, LOD2, …)를 미리 만들어 두고, 런타임에 거리나 화면 점유율에 따라 통째로 갈아 끼운다.
전환 기준으로는 카메라까지의 거리보다 화면 점유율(screen coverage) 또는 투영된 화면 오차가 더 정확하다. 같은 거리라도 큰 물체는 화면을 많이 차지하니 고해상도를 유지해야 하고, 작은 물체는 일찍 낮춰도 되기 때문이다. 흔히 물체의 경계구를 화면에 투영한 반경이 임계 픽셀 수 아래로 떨어지면 다음 단계로 내린다.
장점은 단순함과 예측 가능성이다. 메시가 이미 만들어져 있으니 런타임 비용이 사실상 “어느 걸 그릴까” 판단 한 번뿐이다. 단점은 단계가 유한하다는 것 — 그래서 팝핑이 생긴다.
3. 팝핑, 히스테리시스, 디졸브[편집]
이산 LOD의 숙적은 팝핑(popping)이다. LOD0에서 LOD1로 순간 전환되는 프레임에 실루엣이 눈에 띄게 툭 바뀌어, 물체가 “딸깍”하고 변하는 게 보인다. 이걸 완화하는 표준 처방이 몇 가지 있다.
- 히스테리시스(hysteresis) — 전환 임계값을 올라갈 때와 내려갈 때 다르게 준다. 예컨대 45 m에서 LOD를 낮췄다면 다시 높이는 건 40 m는 돼야 한다. 카메라가 임계 거리 근처에서 미세하게 흔들릴 때 LOD가 매 프레임 앞뒤로 깜빡이는 채터링을 막는다.
- 디졸브(dissolve) / 크로스페이드 — 두 LOD를 잠깐 동시에 그리며 알파나 디더링으로 서서히 섞어, 전환을 몇 프레임에 걸쳐 부드럽게 녹인다. 순간 팝을 시각적 그라데이션으로 바꾸는 것.
- 알파 디더링 — 반투명 대신 픽셀 단위 디더 패턴으로 두 메시를 섞어 반투명 정렬 문제를 피하는 흔한 구현.
어느 쪽도 공짜는 아니다. 히스테리시스는 메모리에, 디졸브는 잠깐의 이중 렌더링 비용에 기댄다.
4. 연속 LOD와 가상화 지오메트리[편집]
이산 단계의 한계를 넘으려는 시도가 연속 LOD(continuous LOD, CLOD)다. 미리 구운 몇 개 버전이 아니라, 정점을 실시간으로 붙였다 뗐다 하며 디테일을 매끄럽게 조절한다. 지형(terrain)에서 특히 발달해, ROAM이나 지오미핑(geo-mipmapping) 같은 기법이 카메라 거리에 따라 삼각형을 세분·병합했다. 이론적으로 팝핑이 없지만 CPU 부하가 크고 구현이 복잡해, 범용 물체에는 널리 퍼지지 못했다.
그 계보의 현대적 정점이 가상화 지오메트리(virtualized geometry), 대표적으로 언리얼 엔진의 나나이트(Nanite)다. 메시를 작은 삼각형 클러스터(cluster) 단위로 잘라 계층 구조로 저장하고, 화면 픽셀 밀도에 맞춰 클러스터별로 적절한 디테일 수준을 GPU에서 실시간 선택한다. 사실상 “삼각형 하나가 대략 픽셀 하나”가 되도록 자동으로 맞춰, 아티스트가 LOD를 손으로 만들 필요를 없앴다.2 텍스처의 밉맵이 해상도에 했던 일을, 나나이트는 지오메트리에 한 셈이다.
5. 메시 단순화: 에지 축약[편집]
이산/연속 LOD 모두 결국 원본 메시에서 폴리곤을 줄인 저해상도 버전이 필요하다. 이 메시 단순화(mesh simplification/decimation)의 표준 알고리즘이 에지 축약(edge collapse)이다. 메시의 한 에지를 골라 양 끝 두 정점을 하나로 합쳐, 에지 하나와 삼각형 둘을 없앤다. 이걸 반복하면 폴리곤 수가 점점 준다.
관건은 “어느 에지를 먼저 축약할 것인가”이다. Garland-Heckbert의 이차 오차 계량(Quadric Error Metrics, QEM)이 사실상 업계 표준이다. 각 정점에 원래 표면들과의 거리 제곱합을 나타내는 이차형식(quadric)을 붙여, 축약해도 형상 오차가 가장 적은 에지부터 우선순위 큐로 골라 없앤다. 실루엣과 특징이 잘 살아남으면서도 빠르게 단순화되는 게 장점이다.3
6. 컬링과의 관계[편집]
LOD는 렌더링을 아예 건너뛰는 컬링(culling)과 자주 한 세트로 묶인다. 둘은 목적이 다르다.
- 컬링은 “그릴까 말까”를 정한다. 시야 밖(프러스텀 컬링), 다른 물체에 가려짐(오클루전 컬링), 너무 작음(스몰 오브젝트 컬링)이면 아예 안 그린다. 경계 볼륨 계층이나 공간 분할 자료구조가 이 판정을 가속한다.
- LOD는 “그리되 얼마나 정교하게”를 정한다.
파이프라인에서는 보통 컬링으로 안 그릴 것을 먼저 쳐내고, 살아남은 물체에 대해 LOD를 골라 부하를 조절한다. 화면 점유율이 극도로 작아지면 LOD가 자연스럽게 컬링으로 이어지기도 한다(가장 낮은 LOD = 안 그림). 결국 둘 다 “인간의 눈이 알아채지 못하는 계산은 하지 않는다”는 렌더링 최적화의 대원칙을 공유한다.
7. 관련 문서[편집]
8. Footnotes[편집]
-
LOD라는 용어와 개념 자체는 1976년 제임스 클라크(James Clark)의 논문까지 거슬러 올라간다. 컴퓨터 그래픽스 역사에서 몇 안 되는 “50년 가까이 살아남은 최적화 아이디어”인데, 하드웨어가 아무리 빨라져도 “멀리 있는 건 대충 그린다”는 발상은 늙지 않기 때문이다. ↩
-
나나이트가 “LOD를 없앴다”는 마케팅 문구가 돌지만 엄밀히는 틀렸다. LOD를 없앤 게 아니라 아티스트의 수작업 LOD 제작을 없애고, 그 결정을 연속적·자동적으로 GPU가 매 프레임 내리게 한 것이다. 개념적으로는 지극히 정교한 클러스터 기반 연속 LOD 시스템이다. ↩
-
흥미롭게도 에지 축약의 역연산(정점 분할, vertex split)을 저장해 두면 저해상도에서 고해상도로 무손실 복원이 가능하다. 이 아이디어가 Hoppe의 프로그레시브 메시(progressive mesh)로, 하나의 자료구조에서 임의의 디테일 수준을 뽑아내는 연속 LOD의 이론적 뼈대가 됐다. ↩