그래픽스

밉맵(Mipmap)

게임 개발 2023. 12. 21. 10:57

 

밉맵이란?

 

3차원 그래픽스의 텍스처 매핑 분야에서, 밉맵(mipmap)은 렌더링 속도를 향상시키기 위한 목적으로

기본 텍스처와 이를 연속적으로 미리 축소시킨 텍스처로 이루어진 비트맵 이미지의 집합이다.

 

밉맵은 일반적으로 3D 씬에서 오브젝트를 렌더링하는 데 사용되며

여기서 텍스처된 오브젝트는 카메라로부터 거리에 따라 달라질 수 있다.

더 높은 밉 레벨은 카메라에 가까운 오브젝트에 사용되며

더 낮은 밉 레벨은 더 먼 오브젝트에 사용된다.

 

출저 - <유니티 문서>

 

밉맵은 GPU가 전체 해상도보다 낮은 해상도로 텍스처를 렌더링하는 상황에서

렌더링 작업 속도를 높이고 렌더링이 아티팩트를 줄일 수 있다.

효과적으로 캐시된 밉은 원본 텍스처의 다운샘플링된 버전이다.

GPU는 원본 전체 해상도 텍스처에서 더 많은 샘플링 작업을 하는 대신에

이미 다운샘플링된 버전에서 더 적은 수의 작업을 수행할 수 있다.

 

밉맵이 도움 되지 않는 경우도 있는데,

밉맵은 디스크와 메모리 모두에서 텍스처의 크기를 33%정도 늘린다.

( = 33%의 효율성 저하)

또한 스케일링되지 않은 UI 텍스처와 같이

텍스처가 전체 해상도로만 렌더링 되는 경우에도 유용하지는 않다.

 

하지만 밉매핑은 깊이가 증가함에 따라 두 배로 최소화된 텍스처 버전을 병치하여

그래픽 표현의 품질을 향상시킨다는 부인할 수 없는 장점이기에,

때문에 밉맵을 활성화하거나 비활성화 할 수 있도록 설계하면 좋다.

 

이 그라데이션은 한 밉맵 수준에서 다음 수준으로의 전환은

텍스처 LOD( Level Of Detail )에 의해 결정된다

 

GPU의 밉 레벨 샘플링 방법


GPU는 텍스처를 샘플링할 때 현재 픽셀의 텍스처 좌표(UV)와 GPU가 계산하는

두 가지 내부 값(DDX와 DDY)에 따라 사용할 밉 레벨을 결정한다.

DDX와 DDY는 현재 픽셀의 거리와 각도를 포함하여 옆 픽셀과 위 픽셀의 UV에 대한 정보를 제공한다.

 

GPU는 이 값을 사용하여 텍스처의 디테일이 카메라에 얼마나 표시되는지 결정한다.

즉, 현재 픽셀과 이웃 픽셀 사이의 거리가 멀고 각도가 클수록 GPU가 더 낮은 해상도의 밉을 선택하고

거리가 가깝고 각도가 작을수록 GPU가 더 높은 해상도의 밉을 선택한다.

 

또한 GPU는 두 밉의 텍스처 정보를 삼선형 필터링과 함께 블렌딩할 수도 있다.

샘플링 중에 밉을 블렌딩하면 한 밉에서 다른 밉으로의 전환이 눈에 잘 띄지 않을 수 있다.

밉을 블렌딩하기 위해 GPU는 한 밉에서

특정 비율의 텍스처 정보를 가져오고 나머지는 다른 밉에서 가져온다.