밉 또는 밉 레벨은 특정 해상도의 텍스처 버전입니다. 밉은 밉맵이라는 집합에 존재합니다. 밉맵에는 점진적으로 더 작고 더 낮은 해상도 버전의 단일 텍스처가 포함됩니다.
For example, a mipmap might contain four versions of a texture, from the original texture (Mip 0), to Mip 1, Mip 2, and Mip 3:
밉맵은 일반적으로 3D 씬에서 오브젝트를 렌더링하는 데 사용되며 여기서 텍스처된 오브젝트는 카메라로부터 거리에 따라 달라질 수 있습니다. 더 높은 밉 레벨은 카메라에 가까운 오브젝트에 사용되며 더 낮은 밉 레벨은 더 먼 오브젝트에 사용됩니다.
밉맵은 GPU가 전체 해상도보다 낮은 해상도로 텍스처를 렌더링하는 상황에서 렌더링 작업 속도를 높이고 렌더링이 아티팩트를 줄일 수 있습니다. 효과적으로 캐시된 밉은 원본 텍스처의 다운샘플링된 버전입니다. GPU는 원본 전체 해상도 텍스처에서 더 많은 샘플링을 작업하는 대신 이미 다운샘플링된 버전에서 더 적은 수의 작업을 수행할 수 있습니다.
Sometimes, mipmaps aren’t beneficial. Mipmaps increase the size of a texture by 33%, both on disk and in memory. They also provide no benefit when a texture is only rendered at its full resolution, such as a UI texture that isn’t scaled.
You can create a mipmap for a texture manually, or you can instruct Unity to generate a mipmap for you. To automatically generate a mipmap, ensure that your original texture’s resolution is a power of two value, as shown in the example mipmap image.
텍스처 임포트 설정 인스펙터에서 텍스처 에셋에 대한 밉맵을 활성화하거나 비활성화할 수 있습니다.
GPU의 밉 레벨 샘플링 방법
GPU는 텍스처를 샘플링할 때 현재 픽셀의 텍스처 좌표(UV)와 GPU가 계산하는 두 가지 내부 값(DDX와 DDY)에 따라 사용할 밉 레벨을 결정합니다. DDX와 DDY는 현재 픽셀의 거리와 각도를 포함하여 옆 픽셀과 위 필셀의 UV에 대한 정보를 제공합니다.
The GPU uses these values to determine how much of a texture’s detail is visible to the camera. A greater distance and a more extreme angle between the current pixel and its neighbors means that the GPU picks a lower resolution mip; a shorter distance and less extreme angle means that the GPU picks a mip with a higher resolution.
The GPU can also blend the texture information from two mips together with trilinear filtering. Blending mips while sampling can make the transition from one mip to another less noticeable. To blend mips, the GPU takes a specific percentage of texture information from one mip and the rest from another mip.
A setting called mip bias can do two things while sampling, based on the sampler settings:
The GPU has a global mip bias that it applies to its mip selection by default. Textures can have their own mip bias, which Unity adds or subtracts from the global mip bias. You can also specify your own mip bias for an individual texture sampling operation in a shader.
개별 텍스처에 대한 밉 바이어스를 설정하려면 Texture.mipMapBias를 참조하십시오. 직접 코딩한 셰이더에서 텍스처 샘플링 작업에 대한 밉 바이어스를 설정하려면 tex2dbias와 같은 HLSL 함수를 사용합니다. 셰이더 그래프에서 텍스처 샘플링 작업에 대한 밉 바이어스를 설정하려면 샘플 텍스처 2D 배열 노드 또는 샘플 텍스처 2D 노드를 참조하십시오.
You can control the way that Unity loads mipmaps at runtime with Mipmap Streaming.