밉 또는 밉 레벨은 특정 해상도의 텍스처 버전입니다. 밉은 밉맵이라는 집합에 존재합니다. 밉맵에는 점진적으로 더 작고 더 낮은 해상도 버전의 단일 텍스처가 포함됩니다.
예를 들어 밉맵에는 원본 텍스처(Mip 0)에서 Mip 1, Mip 2, Mip 3까지 4가지 버전의 텍스처가 포함될 수 있습니다.
밉맵은 일반적으로 3D 씬에서 오브젝트를 렌더링하는 데 사용되며 여기서 텍스처된 오브젝트는 카메라로부터 거리에 따라 달라질 수 있습니다. 더 높은 밉 레벨은 카메라에 가까운 오브젝트에 사용되며 더 낮은 밉 레벨은 더 먼 오브젝트에 사용됩니다.
밉맵은 GPU가 전체 해상도보다 낮은 해상도로 텍스처를 렌더링하는 상황에서 렌더링 작업 속도를 높이고 렌더링이 아티팩트를 줄일 수 있습니다. 효과적으로 캐시된 밉은 원본 텍스처의 다운샘플링된 버전입니다. GPU는 원본 전체 해상도 텍스처에서 더 많은 샘플링을 작업하는 대신 이미 다운샘플링된 버전에서 더 적은 수의 작업을 수행할 수 있습니다.
밉맵이 유용하지 않은 경우도 있습니다. 밉맵은 디스크와 메모리 모두에서 텍스처 크기를 33% 늘립니다. 또한 크기가 조정되지 않은 UI 텍스처와 같이 텍스처가 전체 해상도로만 렌더링되는 경우에는 장점이 없습니다. 텍스처에 대한 밉맵을 수동으로 생성하거나 Unity가 밉맵을 생성하도록 지시할 수 있습니다. 밉맵을 자동으로 생성하려면 예시 밉맵 이미지와 같이 원본 텍스처의 해상도가 2의 거듭제곱 값인지 확인해야 합니다.
텍스처 임포트 설정 인스펙터에서 텍스처 에셋에 대한 밉맵을 활성화하거나 비활성화할 수 있습니다.
GPU의 밉 레벨 샘플링 방법
GPU는 텍스처를 샘플링할 때 현재 픽셀의 텍스처 좌표(UV)와 GPU가 계산하는 두 가지 내부 값(DDX와 DDY)에 따라 사용할 밉 레벨을 결정합니다. DDX와 DDY는 현재 픽셀의 거리와 각도를 포함하여 옆 픽셀과 위 필셀의 UV에 대한 정보를 제공합니다.
GPU는 이러한 값을 사용하여 카메라에 표시되는 텍스처의 디테일 정도를 결정합니다. 현재 필셀과 인접한 픽셀 사이의 거리가 더 멀고 더 극단적인 각도를 가질수록 GPU가 더 낮은 해상도의 밉을 선택해야 함을 의미하고 더 짧은 거리와 덜 극단적인 각도를 가질수록 GPU가 더 높은 해상도의 밉을 선택해야 함을 의미합니다.
GPU는 삼선형 필터링을 사용할 때 두 밉의 텍스처 정보를 함께 블렌딩할 수 있습니다. 샘플링하는 동안 밉을 블렌딩하면 한 밉에서 다른 밉으로의 전환을 덜 눈에 띄게 만들 수 있습니다. 밉을 블랜딩하기 위해 GPU는 한 밉에서 특정 비율의 텍스처 정보를 가져오고 나머지는 다른 밉에서 가져옵니다.
밉 바이어스라는 설정은 샘플러 설정에 따라 샘플링 중에 다음 두 가지 작업을 수행할 수 있습니다.
GPU에는 기본적으로 밉 선택에 적용되는 전역 밉 바이어스가 있습니다. 텍스처에는 Unity가 전역 밉 바이어스를 추가하거나 뺄 수 있는 고유한 밉 바이어스가 있습니다. 셰이더에서 개별 텍스처 샘플링 작업에 대해 고유한 밉 바이어스를 지정할 수도 있습니다.
개별 텍스처에 대한 밉 바이어스를 설정하려면 Texture.mipMapBias를 참조하십시오. 직접 코딩한 셰이더에서 텍스처 샘플링 작업에 대한 밉 바이어스를 설정하려면 tex2dbias와 같은 HLSL 함수를 사용합니다. 셰이더 그래프에서 텍스처 샘플링 작업에 대한 밉 바이어스를 설정하려면 샘플 텍스처 2D 배열 노드 또는 샘플 텍스처 2D 노드를 참조하십시오.
밉맵 스트리밍을 사용하여 Unity가 런타임 시 밉맵을 로드하는 방식을 제어할 수 있습니다.
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.