본문 바로가기

Today I Learned

23.06.07 - SetSamplerState, MipMap(밉맵), 높이 맵

SetSamplerState

 

이미지를 렌더링할 때 카메라가 너무 가까이 있으면 이미지의 픽셀이 깨져보인다던지,

너무 멀리 있으면 이미지가 자글자글하게 보이는 경우가 있다.

SetSamplerState를 통해 샘플링 상태를 설정해서 이 상태를 어느 정도 해결할 수 있다.

 

설정 가능한 필터는 MAGFILTER, MINFILTER, MIPFILTER가 있다.

MAGFILTER을 LINEAR로 설정하면 이미지가 확대되었을 때 색을 선형보간해서 부드럽게 보여주고

MINFILTER을 LINEAR로 설정하면 이미지가 축소되었을 때 색을 선형보간해서 부드럽게 보여준다.

POINT로 설정하면 반대로 선형보간하지 않고 그대로 출력한다.

MIPFILTER는 밑에 밉맵에서 설명하겠다.

 

 

또 텍스쳐의 ADDRESSING MODE를 설정할 수 있다.

텍스쳐의 uv 좌표를 표현하는 방식인데

WRAP - uv좌표가 1을 넘어갔을 때 0으로 다시 돌아옴(가장 보편적)

CLAMP - uv좌표가 1을 넘어갔을 때 1일 때의 색이 쭉 이어짐

MIRROR - uv좌표가 1을 넘어갔을 때 대칭 형태로 보여짐.

 

 

 

MIPMAP(밉맵)

 

 MIPFILTER는 밉맵(MIPMAP)을 설정한다. 

DirectX는 텍스쳐를 만들 때 한개만 생성하는 것이 아니라 2의 n승 크기 별로 여러개를 만든다. (1x1, 2x2 .. 256x256)

텍스쳐가 축소되면 작은 사이즈의 텍스쳐를 가져와서 그리고 텍스쳐가 확대되면 큰 사이즈의 텍스쳐를 가져와서 그린다.

MIPFILTER을 LINEAR로 설정하면 자글자글하게 보이는 현상이 사라진다.

멀리 있는 텍스쳐일 수록 크기가 작고 그만큼 색을 덜 사용하기 때문이다.

 

 

 

높이 맵

 

 

높이 맵은 지형의 높이를 표현할 때 사용하는 텍스쳐로 검은색~흰색의 무채색으로 이루어져 있다. 

이 색들의 특징은 R, G, B 값이 모두 동일하다는 것이다. 그래서 세 값 중 하나를 비교해서 그 값과 높이가 비례한다.

RGB의 값이 클 수록 흰색에 가까워지므로 검은색은 낮은 지형, 흰 색은 높은 지형에 해당한다.

보통 RGB값 중 B로 비교하는데 RGB 데이터가 A,R,G,B순으로 있어 B는 가장 오른쪽에 있기 때문에

시프트 연산 필요없이 가장 작은 수로 표현할 수 있기 때문이다.