CS/그래픽스

[Rendering Optimization] Stage 4 : Geometry Shader (Optional Generation)

tae-woong 2026. 1. 20. 18:43

개발자가 쉐이더 코드로 제어 가능한 영역입니다.

 

버텍스 쉐이더처럼 개발자가 코드를 작성하여 도형을 생성하거나 삭제할 수 있습니다.

 

개요

이 단계는 "도형을 조작하는 단계"입니다.

 

점, 선, 삼각형을 입력받아 아예 새로운 도형을 생성(Amplification)하거나 없앨(Culling) 수 있는 유일한 단계였습니다. (예: 점 하나를 입력받아 사각형 파티클로 뻥튀기하기)

 

하지만 구조적인 문제로 인해 현대 GPU에서는 "성능 저하의 주범"으로 취급받고 있습니다.

 

<핵심 목표>

  1. Avoid Pipeline Stall : 병렬 처리를 방해하는 GS 사용을 피합니다.
  2. Modernize : 필요한 기능이 있다면 최신 기술(Compute Shader)로 대체합니다.

 

최적화 방법

1. Avoid Usage (기능 비활성화)

  • 설명 : 최신 그래픽스 프로그래밍 가이드(NVIDIA/AMD) 및 모바일 환경에서는 Geometry Shader를 아예 사용하지 않는 것이 제1의 최적화 규칙입니다.
  • 지금 단계에서 효과 :
    • Stage 4 (GS) : 파이프라인 흐름을 막는 병목 구간을 제거합니다.
  • 장점 :
    • 병목 제거 : GS는 하드웨어적으로 병렬 처리가 어렵게 설계되어 있어, 이를 끄는 것만으로도 프레임 이득을 봅니다.
  • 단점 :
    • 기능 제한 : 와이어프레임 렌더링이나 특정 특수 효과(Mesh 폭파 등)를 구현하기가 까다로워집니다.

2. Replace with Compute Shader (컴퓨트 쉐이더로 대체)

  • 설명 : 풀(Grass) 생성이나 파티클 생성처럼 GS의 기능이 꼭 필요하다면, 느린 GS 대신 GPGPU 기술인 Compute Shader를 사용하여 버텍스 버퍼를 직접 조작하는 방식으로 구현합니다. (최신 AAA 게임 트렌드)
  • 지금 단계에서 효과 :
    • Stage 4 (GS) : 느린 GS 대신 압도적으로 빠른 병렬 처리를 사용합니다.
  • 장점 :
    • 고성능 : GS 대비 월등히 빠른 속도로 대량의 지오메트리 조작이 가능합니다.
  • 단점 :
    • 구현 난이도 상 : 그래픽스 파이프라인 외부에서 메모리를 직접 관리하고 동기화해야 하므로 코딩 난이도가 매우 높습니다.
  • ※ 헷갈리기 쉬운 포인트 : Geometry Shader vs Compute Shader
    • GS : 렌더링 파이프라인 도중에 끼어 있음. (직렬적 성격, 느림)
    • CS : 파이프라인 외부에서 별도로 돔. (병렬적 성격, 빠름) -> CS로 데이터를 다 만들어놓고 IA(1단계)로 넘겨주는 방식을 씀.