728x90
반응형
- 래스터라이저가 출력하는 프래그먼트별 애트리뷰트는 대체로 노멀과 텍스처 좌표를 포함한다.
- 프래그먼트 쉐이더는 이들을 이용해 프래그먼트의 색상을 계산한다.
- 최종 영상의 품질에 결정적인 역할을 하는 프래그먼트 쉐이더는 크게 라이팅(lighting)과 텍스처링(texturing)으로 구분된다.
8.1 텍스처 좌표
- 일반적으로 텍스처는 배열 구조를 가지는데, 이 배열이 색상 정보를 저장하고 있다면 이를 이미지 텍스처(image texture)라 부른다.
- 텍스처는 텍셀(texel)로 구성된다. 이미지 텍스처의 텍셀은 픽셀과 동일한 것이지만, 구분상, 편의를 위해 이름을 따로 붙였다.
- 텍스처링은 물체 표면에 벽지 바르듯이 텍스처를 입히는 것으로 이해하면 된다.
- (b)의 경우 원통면 폴리곤 메시의 각 정점마다 텍스처 좌표(texture coordinates)를 할당해야 한다.
- 왼쪽 그림에 세 정점에 각각 (0, 0), (1, 0), (0, 1)의 텍스처 좌표가 주어졌다.
- 스캔 전환 알고리즘은 먼저 변을 따라, 그 다음에 스캔라인을 따라 이들 텍스처 좌표를 보간한다.
- 스캔 전환이 완료되면 각각의 프래그먼트는 보간된 (s, t) 좌표를 가지게 된다.
- 해상도가 r_x × r_y인 텍스처가 주어졌을 때, 정규화된 텍스처 좌표 (s, t)는 아래와 같은 방식으로 실제 텍스처 공간으로 매핑된다.
- 이를 텍스처 좌표 (s, t)가 텍스처 공간의 (s', t')로 투영(procject)되었다고 표현한다.
- 원통면 폴리곤 메시의 텍스처 좌표 변경 없이도 상이한 해당도를 가진 두 개의 텍스처를 사용할 수 있다.
- 사실 위 그림은 계산된 (s', t')가 항상 텍셀 한가운데로 투영되었는데, 사실 이런 경우는 거의 없고 텍스처 공간 내 임의의 위치로 투영된다.
- 한편, 텍스처는 2차원으로 국한되지 않고, CT와 MRI 등과 같이 층층이 쌓인 영상은 3차원 텍스처에 해당한다. 이를 볼륨 텍스처라고 부르기도 한다.
8.2 표면 파라미터화
- 폴리곤 메시의 각 정점에 텍스처 좌표 (s, t)를 할당하는 작업을 표면 파라미터화(surface parameterization) 혹은 단순히 파라미터화라고 부른다.
- 이 작업을 위해서는 3차원 메시를 2차원 평면에 펼쳐야 한다.
- 3차원 폴리곤 메시를 2차원 평면으로 펼치는 과정에서는 대부분 왜곡 현상이 발생한다.
- 하지만 이러한 왜곡을 최소화하는 많은 파라미터화 기술이 컴퓨터 그래픽스 분야에서 꾸준히 연구 개발되어 왔다.
- 복잡한 폴리곤 메시는 여러 개의 패치(patch)로 나눠져 각각 파라미터화된다.
- 그래픽 디자이너는 파라미터화가 완료된 2차원 패치에 포토샵 등을 이용하여 이미지를 그린다. 이 이미지를 차트라고 한다. (왼쪽)
- 대개의 경우 효율적인 렌더링을 위해 여러 차트를 하나의 커다란 텍스처에 모으는데, 이를 아틀라스(atlas)라고 부른다. (오른쪽)
8.3 GL에서의 텍스처 정의
- 텍스처 오브젝트(texture object) 생성을 위해 glGenTextures(GLsizei n, GLuint* textures)를 호출한다. glGenTextures는 n개의 텍스처 오브젝트를 textures에 저장한다.
- 이를 바인드(bind)하기 위하여 glBindTextures를 호출한다.
- 텍스처 오브젝트를 실제 텍스처로 채우기 위하여 glTexImage2D를 호출한다.
출처
[OpenGL ES를 이용한 3차원 컴퓨터 그래픽스 입문]을 보고 공부하고 정리한 내용입니다.
728x90
'공부 > Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문' 카테고리의 다른 글
[Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 9 - 라이팅 (디퓨즈, 스페큘러) [1/2] (0) | 2022.02.27 |
---|---|
[Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 8 - 이미지 텍스처링 [2/2] (0) | 2022.02.18 |
[OpenGL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 7 - 래스터라이저 (0) | 2022.02.15 |
[OpenGL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 6 - OpenGL ES와 쉐이더 (0) | 2022.02.14 |
[Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 5 - 정점 처리 (0) | 2022.02.13 |