midas+son의 크리에이티브(creative) 이야기

밉맵(MipMap)이라고 불리는 맵핑(Mapping) 기법을 알게되었다.


DirectX를 할 땐 신경 쓰지 않았는데

유니티에서는 기본으로 되어있는 옵션이 있어서 알아보았다.


멀리 있는 사물이나 땅에 Texture를 씌운다고 생각을 해보자.

한 영역이 화면에서는 멀리 있어서 8 pixel 이내에 찍어야 하는데

그 영역에 들어갈 Texture가 256x256 짜리라면 이 것을 줄여

연산을 통해서 그 적은 pixel만큼 들어갈수 있게 평균을 낸 RGB값을 넣게 된다.

멀리 떨어져 있다면 그 영역의 수도 많아지게되고

연산이 많아 지는 것은 3D 에서의 큰 문제일 수 밖에 없다.


그래서 나온 방법이 미리 미리 작은 해상도의 Texture를 준비하는 것이다.(논리적이든 물리적이든)

Texture의 크기는 2의 배수로 하는 것이 최적이고

256x256이라면 128x128, 64x64, 32x32, 16x16, 8x8, 4x4, 2x2....와 같이 

미리 적은 pixel의 Texture를 메모리에 넣어 놓고

나중에 연산을 할때 적절한 크기의 Texture를 꺼내 사용하는 것이다.


장점은 말그대로 런타임 시의 연산을 줄여 프레임이 떨어지는 것을 미리 방지 할 수 있다는 것이고

단점은 미리 Texture를 만들어넣기 때문에 메모리를 많이 사용한다는 것이다.


옛날에는 하드웨어 성능이 좋지 않아 메모리 문제도 생각을 많이 했지만

요즘은 모바일도 렘이 크기 때문에 MipMap을 사용하는 것이 3D게임에서는 기본이라 생각하면 된다.

2D는 오히려 버짐 현상이 나올 수 있으므로 MipMap을 사용 하지 않는 것이 좋다.