빠른 비교
| 방식 | 줄이는 비용 |
|---|---|
| Mesh LOD | 정점 수, 삼각형 수 |
| Texture mipmap | texture aliasing, bandwidth |
| Shader LOD | 먼 거리의 material 계산 단순화 |
| Impostor | 복잡한 3D 물체를 2D/간단한 대체 표현 |
| HLOD | 여러 물체를 묶은 계층적 LOD |
구조
LOD는 Level of Detail의 약자입니다. 멀리 있거나 화면에서 작게 보이는 물체는 세부 형태가 잘 보이지 않으므로 더 단순한 표현으로 바꿔 렌더링 비용을 줄입니다.
near -> high detail mesh/material
mid -> simplified mesh
far -> billboard/impostor기준은 거리만이 아니라 screen-space size가 더 적절할 때가 많습니다. 같은 거리라도 FOV, 해상도, 물체 크기에 따라 화면에서 차지하는 픽셀 수가 다르기 때문입니다.
Impostor
impostor는 복잡한 3D 물체를 미리 렌더링한 이미지나 매우 단순한 geometry로 대체하는 방식입니다. 나무, 구름, 먼 배경처럼 멀리서 silhouette과 큰 색감만 필요한 대상에 유리합니다.
선택 기준
| 상황 | 선택 |
|---|---|
| 멀리서 삼각형 수가 부담 | mesh LOD |
| 텍스처가 멀리서 반짝임 | mipmap |
| 먼 물체 shader가 비쌈 | shader LOD |
| 아주 먼 복잡한 물체 | impostor |
| 대규모 월드 | HLOD |
LOD는 렌더링 비용을 줄이는 동시에 aliasing도 줄일 수 있습니다. 너무 세밀한 geometry와 texture를 작은 화면 영역에 넣으면 성능뿐 아니라 시각적 안정성도 나빠집니다.
주의할 점
LOD 전환이 갑자기 일어나면 popping이 보입니다. cross-fade, dithering, hysteresis, screen-size threshold 조정으로 전환을 완화해야 합니다.
Impostor는 시점 변화에 약할 수 있습니다. 카메라가 가까워지거나 옆으로 크게 움직이면 flat한 대체 표현이 쉽게 드러납니다.