기존의 경직된 버텍스 파이프라인을 해체하고 GPU의 자유도를 극대화하는 메시 셰이더의 개념적 구조와, 이를 응용한 극강 성능의 절차적 지오메트리 렌더링에 대해 분석합니다.
1. 레거시 버텍스 파이프라인의 종말
수십 년간 3D 그래픽스는 입력 조립기(Input Assembler)가 인덱스를 읽어 버텍스 셰이더를 거쳐 래스터라이저로 넘기는 고정된 순서를 따라왔습니다. 이는 초정밀 씬에서 심각한 병목 현상을 유발했습니다. 이를 근본적으로 혁신하기 위해 메시 셰이더 파이프라인이 도입되었습니다.
2. 컴퓨트 모델로의 편입: 앰플리피케이션과 메시 셰이더
메시 셰이더 아키텍처는 고정 함수 블록인 Input Assembler를 제거하고, 개발자가 직접 지오메트리를 생성하도록 허용합니다. 파이프라인은 앰플리피케이션 셰이더(Task Shader)와 메시 셰이더로 나뉩니다. 앰플리피케이션 셰이더는 메시를 구성하는 메시렛 단위로 오클루전 컬링 등을 수행하여 안 보이는 부분을 즉시 버립니다. 살아남은 메시렛에 대해서만 메시 셰이더를 호출합니다.
3. 극단적인 오클루전 컬링과 서브 메쉬 단위 최적화
기존에는 드로우 콜 단위로 컬링을 했으나, 메시 셰이더를 도입하면 수십 개의 삼각형 뭉치인 메시렛 단위로 검사합니다. 이를 통해 버텍스 처리량이 비약적으로 감소하고 GPU 성능이 크게 절약됩니다.
4. 메시 셰이더를 활용한 절차적 지형 생성 (Procedural Terrain)
메시 셰이더의 진가는 데이터를 동적으로 만들어내는 프로시저럴 생성에서 나타납니다. CPU 개입 없이 앰플리피케이션 셰이더에서 거리에 따라 테셀레이션 레벨을 결정하고 메시 셰이더를 호출하여, 수학 함수 기반의 지형이나 해수면을 즉각적으로 만들어 냅니다.
5. 엔진 통합 및 과제
이 파이프라인을 도입하기 위해서는 렌더링 엔진의 에셋 임포트 과정을 변경하여, 모델을 미리 메시렛으로 쪼개는 전처리 도구가 필수적입니다. 데이터 지향 설계의 극한을 추구해야 합니다.
6. 결론
메시 셰이더는 버텍스의 제약을 끊어내고 지오메트리 렌더링을 컴퓨팅의 영역으로 해방시켰습니다.
[outputtopology("triangle")]
[numthreads(64, 1, 1)]
void MS_Main(
in payload PayloadData payload,
in uint gtid : SV_GroupThreadID,
in uint gid : SV_GroupID,
out indices uint3 tris[126],
out vertices VertexOut verts[64]
)
{
// 메시렛 기반 버텍스 변환 및 인덱스 출력
}