Version: 2022.1
언어: 한국어
밉맵
밉맵 스트리밍 시스템

밉맵 소개

밉 또는 밉 레벨은 특정 해상도의 텍스처 버전입니다. 밉은 밉맵이라는 집합에 존재합니다. 밉맵에는 점진적으로 더 작고 더 낮은 해상도 버전의 단일 텍스처가 포함됩니다.

예를 들어 밉맵에는 원본 텍스처(밉 0)부터 밉 1, 밉 2, 밉 3까지 네 가지 버전의 텍스처가 포함될 수 있습니다.

밉 레벨
밉 레벨

밉맵은 일반적으로 3D 씬에서 오브젝트를 렌더링하는 데 사용되며 여기서 텍스처된 오브젝트는 카메라로부터 거리에 따라 달라질 수 있습니다. 더 높은 밉 레벨은 카메라에 가까운 오브젝트에 사용되며 더 낮은 밉 레벨은 더 먼 오브젝트에 사용됩니다.

밉맵은 GPU가 전체 해상도보다 낮은 해상도로 텍스처를 렌더링하는 상황에서 렌더링 작업 속도를 높이고 렌더링이 아티팩트를 줄일 수 있습니다. 효과적으로 캐시된 밉은 원본 텍스처의 다운샘플링된 버전입니다. GPU는 원본 전체 해상도 텍스처에서 더 많은 샘플링을 작업하는 대신 이미 다운샘플링된 버전에서 더 적은 수의 작업을 수행할 수 있습니다.

밉맵이 도움이 되지 않는 경우도 있습니다.밉맵은 디스크와 메모리 모두에서 텍스처의 크기를 33% 늘립니다.또한 스케일링되지 않은 UI 텍스처와 같이 텍스처가 전체 해상도로만 렌더링되는 경우에도 유용하지 않습니다.

텍스처에 대한 밉맵을 수동으로 생성하거나 Unity에 밉맵을 생성하도록 지시할 수 있습니다.밉맵을 자동으로 생성하려면 원본 텍스처의 해상도가 예시 밉맵 이미지에 표시된 것처럼 값의 거듭제곱이어야 합니다.

텍스처 임포트 설정 인스펙터에서 텍스처 에셋에 대한 밉맵을 활성화하거나 비활성화할 수 있습니다.

GPU의 밉 레벨 샘플링 방법

GPU는 텍스처를 샘플링할 때 현재 픽셀의 텍스처 좌표(UV)와 GPU가 계산하는 두 가지 내부 값(DDX와 DDY)에 따라 사용할 밉 레벨을 결정합니다. DDX와 DDY는 현재 픽셀의 거리와 각도를 포함하여 옆 픽셀과 위 필셀의 UV에 대한 정보를 제공합니다.

GPU는 이 값을 사용하여 텍스처의 디테일이 카메라에 얼마나 표시되는지 결정합니다.즉, 현재 픽셀과 이웃 픽셀 사이의 거리가 멀고 각도가 클수록 GPU가 더 낮은 해상도의 밉을 선택하고, 거리가 가깝고 각도가 작을수록 GPU가 더 높은 해상도의 밉을 선택합니다.

또한 GPU는 두 밉의 텍스처 정보를 삼선형 필터링과 함께 블렌딩할 수도 있습니다.샘플링 중에 밉을 블렌딩하면 한 밉에서 다른 밉으로의 전환이 눈에 잘 띄지 않을 수 있습니다.밉을 블렌딩하기 위해 GPU는 한 밉에서 특정 비율의 텍스처 정보를 가져오고 나머지는 다른 밉에서 가져옵니다.

밉 바이어스

밉 바이어스라는 설정으로 샘플러 설정에 따라 샘플링 중에 두 가지를 수행할 수 있습니다.

  • 밉 바이어스는 GPU가 샘플에 대해 더 낮거나 더 높은 밉을 선택하는 임계값을 변경할 수 있습니다.샘플러에서 포인트 및 선형 필터링을 사용하면 GPU는 특정 밉을 선택합니다.예를 들어 GPU는 UV 세트의 텍스처가 밉 3의 샘플을 사용한다고 결정할 수 있습니다.대신 밉 바이어스가 –2인 경우 GPU는 샘플에 더 높은 해상도의 밉 1을 사용합니다.
  • 밉 바이어스는 서로 다른 밉의 샘플을 블렌딩할 때 GPU에 정확한 비율로 한 밉을 다른 밉보다 선호하도록 지시할 수 있습니다.샘플러에서 삼선형 필터링을 사용하면 GPU는 밉을 블렌딩합니다.예를 들어 GPU가 계산하여 0.5인 값을 반환할 수 있습니다.값이 0.5이면 GPU가 필요한 텍스처 정보의 50%를 한 밉에서 가져오고 나머지 50%는 밉맵의 다음 밉에서 가져오도록 지시합니다.밉 바이어스에 0.2를 추가하면 값은 0.5에서 0.7로 변경되며, GPU는 첫 번째 밉에서 텍스처 정보의 70%를 가져오고 두 번째 밉에서는 30%만 가져옵니다.

GPU에는 기본적으로 밉 선택에 적용하는 전역 밉 바이어스가 있습니다.텍스처에는 자체 밉 바이어스가 있을 수 있으며, Unity는 이를 전역 밉 바이어스에 더하거나 뺍니다.또한 셰이더에서 개별 텍스처 샘플링 작업에 대한 자체 밉 바이어스를 지정할 수도 있습니다.

개별 텍스처에 대한 밉 바이어스를 설정하려면 Texture.mipMapBias를 참조하십시오. 직접 코딩한 셰이더에서 텍스처 샘플링 작업에 대한 밉 바이어스를 설정하려면 tex2dbias와 같은 HLSL 함수를 사용합니다. 셰이더 그래프에서 텍스처 샘플링 작업에 대한 밉 바이어스를 설정하려면 샘플 텍스처 2D 배열 노드 또는 샘플 텍스처 2D 노드를 참조하십시오.

Unity의 밉맵 로드 방법

Unity가 런타임 시 밉맵 스트리밍으로 밉맵을 로드하는 방법을 제어할 수 있습니다.

밉맵
밉맵 스트리밍 시스템