Fragment shader
Rasterizer 단계에서 Scan Conversion을 통해서
프래그먼트들의 정보를 다 넣어줬고
이러한 정보를 활용해서 색을 칠해서 픽셀을 만들어주는 과정이
fragment shader에서 진행되는데
픽셀을 만들어주는 과정 중에 대표적인 것이
Lighting과 Texteuring이다
Texture Coordinates
다양한 텍스쳐링 방법 중 하나는 image texturing이다
image texturing은 모델에 이미지를 입히는 것을 의미한다
텍스쳐는 fragment의 pixel처럼 texels(texture elements)의 형태로 구성되어 있다


Texturing
아티스트가 modeling 단계에서
텍스쳐링을 위해 (s, t) 혹은 (u, v) 형태의 texture coordinates를
폴리곤 매쉬(삼각형)의 정점에 할당한다
그리고 rasterizer 단계에서 interpolation을 통해
framgent 단위로 각각의 fragment 데이터를 가지게 된다
(s, t) 좌표와 이미지 텍스쳐의 좌표를 서로 연결시켜
색을 입히는 과정이 Texturing이다

normalized texture coordinates
이미지의 크기와 관련 없이 색을 계산하기 위해서
정규화된 texture coordinates를 사용한다

Surface Parameterization
각각의 Vertex가 어떤 (s, t) 좌표를 가지게 되는지 결정하는 과정이다
이 과정을 위해서는 3D surface를 2D plane으로 unfolding을 해야 한다

Patch와 Atlas
복잡한 매쉬를 모델링할 때는 한 덩어리 전체가 아닌
patch 단위로 나누어서 모델링한다
그리고 GPU에 올릴 수 있는 이미지의 개수에 제한이 있기에
효율성을 위해서 한장의 이미지로 만든다
이처럼 여러 모델에 사용할 텍스쳐들을 한 장으로 합친 것을 atlas라고 한다

'게임 그래픽스 > [전북대] OpenGL' 카테고리의 다른 글
[OpenGL Note] Fragment Shader (0) | 2024.04.18 |
---|---|
[OpenGL Note] Texture Wrapping과 Texture Filtering (0) | 2024.04.18 |
[OpenGL Note] Rasterizer (0) | 2024.04.17 |
[OpenGL Note] Vertex Shader (0) | 2024.04.16 |
[OpenGL Note] Uniforms, VAO (0) | 2024.04.16 |