밉맵 레벨은 특정 해상도를 갖는 텍스처의 버전입니다. 밉맵 레벨은 밉맵이라는 집합으로 존재합니다. 밉맵에는 점진적으로 더 작고 낮은 단일 텍스처의 해상도 버전이 포함됩니다.
예를 들어 밉맵에는 원본 텍스처(밉맵 레벨 0)부터 밉맵 레벨 1, 밉맵 레벨 2, 밉맵 레벨 3까지 4가지 버전의 텍스처가 포함될 수 있습니다.
밉맵은 일반적으로 텍스처 오브젝트가 카메라와의 거리에 따라 달라질 수 있는 3D 씬에서 오브젝트를 렌더링하는 데 사용됩니다. 카메라에 가까운 오브젝트에는 높은 밉맵 레벨이 사용되고, 더 멀리 있는 오브젝트에는 낮은 밉맵 레벨이 사용됩니다.
밉맵은 GPU가 텍스처를 전체 해상도보다 낮은 해상도로 렌더링하는 상황에서 렌더링 작업의 속도를 높이고 렌더링 아티팩트를 줄일 수 있습니다. 밉맵은 사실상 원본 텍스처의 캐시 및 다운샘플링된 버전입니다. GPU는 원본 전체 해상도 텍스처에 대해 많은 샘플링 작업을 수행하는 대신, 이미 다운샘플링된 버전에 대해 더 적은 수의 작업을 수행할 수 있습니다.
때로는 밉맵이 도움이 되지 않을 수도 있습니다. 밉맵은 디스크와 메모리에서 텍스처의 크기를 33% 증가시킵니다. 스케일되지 않은__ UI__(사용자 인터페이스) 사용자가 애플리케이션과 상호 작용하도록 해 줍니다. Unity는 현재 3개의 UI 시스템을 지원합니다. 자세한 정보
See in Glossary 텍스처와 같이 텍스처가 전체 해상도로만 렌더링되는 경우에도 도움이 되지 않습니다.
텍스처에 대한 밉맵을 수동으로 생성하거나 Unity가 밉맵을 생성하도록 할 수 있습니다. 밉맵을 자동으로 생성하려면 예제 밉맵 이미지와 같이 원본 텍스처의 해상도가 2의 거듭제곱이어야 합니다.
Texture Import Settings 인스펙터에서 텍스처 에셋에 대한 밉맵을 활성화하거나 비활성화할 수 있습니다.
GPU는 텍스처를 샘플링할 때 현재 픽셀의 텍스처 좌표(UV)와 GPU가 계산하는 두 가지 내부 값을 기반으로 사용할 밉맵 레벨을 결정합니다. 이 두 가지 값은 DDX와 DDY입니다. DDX와 DDY는 거리와 각도를 포함하여 현재 픽셀의 옆과 위에 있는 픽셀의 UV에 대한 정보를 제공합니다.
GPU는 이 값을 사용하여 텍스처의 디테일이 카메라에 표시되는 정도를 결정합니다. 현재 픽셀과 인접한 픽셀 사이의 거리가 멀고 각도가 급격할수록 GPU는 더 낮은 해상도의 밉맵 레벨을 선택하며, 거리가 짧고 각도가 완만할수록 GPU는 더 높은 해상도의 밉맵 레벨을 선택하게 됩니다.
또한 GPU는 삼선형 필터링을 통해 두 밉맵 레벨의 텍스처 정보를 블렌딩할 수도 있습니다. 샘플링하는 동안 밉맵 레벨을 블렌딩하면 한 밉맵 레벨에서 다른 밉맵 레벨로의 전환을 덜 알아차리게 만들 수 있습니다. 밉맵 레벨을 블렌딩하기 위해 GPU는 한 밉맵 레벨에서 일정 백분율의 텍스처 정보를 가져오고 나머지는 다른 밉맵 레벨에서 가져옵니다.
밉맵 바이어스라는 설정은 샘플러 설정에 따라 샘플링 중에 두 가지 작업을 수행할 수 있습니다.
GPU에는 기본적으로 밉맵 레벨 선택에 적용되는 전역 밉맵 바이어스가 있습니다. 텍스처는 자체 밉맵 바이어스를 가질 수 있으며, Unity는 전역 밉맵 바이어스에서 이를 더하거나 뺍니다. 셰이더에서 개별 텍스처 샘플링 작업에 대한 자체 밉맵 바이어스를 지정할 수도 있습니다.
개별 텍스처에 대한 밉맵 바이어스를 설정하려면 Texture.mipMapBias를 참조하십시오. 직접 코딩된 셰이더에서 텍스처 샘플링 작업에 대한 밉맵 바이어스를 설정하려면 tex2dbias와 같은 HLSL 함수를 사용하십시오. Shader Graph에서 텍스처 샘플링 작업을 위한 밉맵 바이어스를 설정하려면 Sample texture 2D Array 노드 또는 Sample texture 2D 노드를 참조하십시오.
Unity가 런타임 시 밉맵 스트리밍으로 밉맵을 로드하는 방법을 제어할 수 있습니다.