[ Graphics ] 이미지 텍스처링
이미지 텍스처링
1. 텍스처링
텍스처(texture) : 텍셀(texel)로 이루어진 2D 배열
텍셀(texel) : texture pixel로, 텍스처 이미지의 픽셀
텍스처링 시, 텍스처 좌표(texture coordinate)에 따라 텍셀 위치가 할당된다.
텍스처 좌표는 스캔라인 알고리즘에서 스캔라인을 따라 보간되어 각각의 프래그먼트는 보간된 $(s, t)$ 좌표를 가진다.
이를 텍스처 좌표$(s,t)$가 텍스처 공간 $(s’,t’)$로 투영(projection)됬다고 표현한다.
- 표면 파라미터화(surface parameteriazation) : 폴리곤 매시의 각 정점에 텍스처 좌표를 할당하는 작업, 이를 위해 3차원 매시를 2차원으로 변환한다.
복잡한 폴리곤 매시는 여러 개의 패치 (patch)로 나누고, 이를 통해 이미지, 차트(chart)를 생성한다. 여러 개의 차트를 pack하여 하나의 큰 텍스처로 만드는데 이를 아틀라스(atlas)라고 한다.
2. 텍스처 필터링
- 텍스처 필터링(texture filtering) : 텍스처 좌표에 따라 텍스처 공간으로 텍스처가 투영되면 주변 텍셀에 따라 프래그먼트의 색상을 결정
텍셀과 픽셀이 일치하는 경우는 거의 없고, 이를 맞추기 위해 확대, 축소를 사용한다.
1) 텍스처 확대
- 근접점 샘플링(nearest point sampling) : (s’,t’)와 가장 가까운 텍셀을 사용, 여러 개의 픽셀이 하나의 텍셀을 참조
- 겹선형 보간(bilinear interpolation) : 주위를 둘러싼 네 개의 텍셀을 겹선형 보간하여 해당 픽셀의 텍셀 결정, 근접점 샘플링보다 부드러운 텍스처링으로, 대부분 근접점 샘플링 보다 우수한 결과
2) 텍스처 축소
픽셀들이 텍스처 공간에 듬성듬성 투영되어, 픽셀 대비 텍셀의 개수 차이로 인한 엘리어싱(aliasing) 문제가 발생
이를 해결하기 위해 안티 엘리어싱(anti-aliasing) 기법 사용
- 밈 맵핑: 텍스처를 작게 만들어서 텍셀 수를 픽셀에 맞춤
색상 평균을 구하는 과정인 다운 샘플링(down sampling) 시, 원본 텍스처의 평균 색상을 담고 있는 작은 크기의 텍스처를 만들 수 있다. 원본 텍스처의 해상도가 $2^l$ x $2^l$일 때, 총$(l+1)$개의 레벨을 가지는 텍스처 피라미드로 묶을 수 있고 이를 밉맵(mipmap)이라고 한다.
텍스처 공간에 투영된 픽셀은 (s’,t’)를 중심으로 일정 영역에 할당되는데, 이러한 영역을 발자국 (footprint)이라고 한다. 발자국의 크기가 하나의 텍셀을 차지하는 level 1에서 픽셀과 텍셀의 수가 같으므로, 필터링을 수행할 수 있다.이를 통해 앨리어싱 문제를 해결하고 필터링을 수행한 밈맵의 레벨을 $λ$로 표현하고, m x m 텍셀에서 $λ$는 $log_2 m$으로 표현한다.
밉맵을 통한 필터링 시에도, 텍셀과 픽셀이 일치하는 경우는 거의 없어, 가까운 레벨을 선택하거나 근접점 샘플링 또는 겹선형 보간을 사용하거나 더 나아가 $λ$가 포함된 두 레벨을 모두 선택, 보간하는 삼선형 보간(trilinear interpolation)을 사용한다.
그리고 이 또한 GPU가 전담한다.
출처: OpenGL ES를 이용한 3차원 컴퓨터 그래픽스 입문