밉맵이란?
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는 한 밉에서
특정 비율의 텍스처 정보를 가져오고 나머지는 다른 밉에서 가져온다.
'그래픽스' 카테고리의 다른 글
Mipmap_Normal Map_Diffusion Map (0) | 2024.07.23 |
---|---|
물리 기반 렌더러 - 레이 트레이싱 (2) - 카메라 (0) | 2023.10.16 |
물리 기반 렌더러 - 레이 트레이싱 (1) (0) | 2023.10.13 |