2026. 8. 28. 16:00ㆍGame/Computer Graphics
.. 여튼 프래그먼트는 깊이, 노멀, 텍스쳐 좌표, RGB 색상등의 속성을 포함할 수 있게 된다. 이런 속성을 이용해서 각 프래그먼트의 최종 색상을 정하게 되는데 - 대표적으로 조명과 텍스처링이 이 과정이라고 할 수 있겠다.

Texturing
말 그대로 그림을 가져다가 붙이는 작업이다. 걍 물체의 표면 위에 이미지를 펴 바르는 방식인 셈이다. 그리고 이를 위해서 텍스처와 물체 표면간 대응 관계가 성립되게 한다. 다만 그냥 평범한 index를 쓰게 된다면 - 특정 텍스처에 폴리곤 메쉬가 종속되는 문제가 발생할 수 있을 것이다. 예를 들어서, 마인프래프트의 리소스팩이 16x16으로 고정된다면 고퀄리티의 리소스팩은 나오지 못할것이다. 이러한 문제를 해결하기 위해서 각 정점마다 정규화(Normalized)된 텍스처 좌표를 할당하게 된다.
이때 텍스처 좌표를 폴리곤 메쉬의 정점에 할당하는 작업을 표면 파라미터화(단순하게 파라미터화)라고 한다. 이 작업을 위해서는 3차원 메쉬를 2차원 평면에 펼쳐야 하며, 이게 바로 블렌드 등에서 눈물나는 UV Editing 작업이 되겠다.

Output Merging
근데 사실 텍스쳐만 입히면 별 문제가 없겠으나, 프래그먼트의 출력은 R/G/B 채널 뿐만 아니라 알파값(불투명도)와 Z값(깊이)를 가지게 된다. 그래서 RGBAZ 프래그먼트 라고도 말하기도 하는데, 쨋든 RGB만 쓰는건 아니라는 거다.
먼저 Z값의 경우를 생각해보자. 뷰포트 내에 삼각형이 두개가 있다 치면은 z값이 카메라에 가까운 놈이 승리해서 화면을 차지하게 될 것이다. 이러한 결정은 Z-buffer(or depth buffer)를 이용하여 이뤄지는데, 이를 이용한 알고리즘을 z-buffering이라고 하게 된다. 참고로 z-버퍼링 알고리즘은 삼각형들을 임의의 순서로 처리하는 것을 허용하게 된다. (참고로 z-buffer를 이용한 깊이 검사는 출력 병합시 수행되게 된다. 굳이 버려질 프래그먼트에 텍스쳐링을 할 필요는 없지 않은가? 얘를 z-culling이라고 한다.)
근데 문제는 반투명 물체를 렌더링 할 때이다. 반푸명한 프래그먼트의 z값이 컬러 버퍼에 있는 픽셀의 z값보다 작을 경우, 픽셀의 색은 프래그먼트를 통해 비쳐 보여야 한다. 즉 픽셀과 프래그먼트 색상의 혼합이 필요하단 소리인데 - 이러한 과정을 알파 블렌딩이라 하게 된다.

문제는 z-버퍼링 알고리즘은 삼각형 처리 순서에 독립적인데, 얘네들은 뒤에서 부터 앞으로 차례차례 처리되어야만 한다. 그러니까, 반투명한 삼각형들은 Sorting해줘야 하는 그지 깡깡이 같은 문제점이 발생한다는거다. 이에 대한 알고리즘은 연구가 활발하니 구글링 하던 아니면 Gemini에게 물어보던 해서 찾아보길 바란다.
'Game > Computer Graphics' 카테고리의 다른 글
| Scan Conversion (0) | 2026.08.27 |
|---|---|
| Rasterization (0) | 2026.08.19 |
| [CG] Vertex-Processing(1) (0) | 2026.07.22 |
| [CG] 폴리곤 메쉬 표현 기법 (0) | 2025.07.01 |