상세 컨텐츠

본문 제목

Geometry Processing - Geometry Shading

Computer Graphics/Graphics Pipeline

by Banjosh 2024. 11. 29. 14:42

본문

Geometry Processing의 세 번째 단계: Geometry Shading

이번에는 Geometry Processing의 세 번째 단계인 Geometry Shading에 대해 알아보자. Geometry Shading은 입력으로 받은 프리미티브(Primitive)변형, 삭제하거나 새로운 프리미티브를 추가하는 과정을 수행한다.


왜 Geometry Shading이 필요한가?

Geometry Shading은 기존에 생성된 프리미티브를 바탕으로 실시간으로 메쉬 디테일을 추가하거나, 오브젝트의 실루엣, 그림자, 입체감을 표현할 수 있게 해준다. 또한 다양한 기하학적 효과를 추가할 수 있어 더 풍부한 표현이 가능하다.


Geometry Shading의 쓰임새

1. 프리미티브 변형 및 생성

  • 새로운 프리미티브 생성
    입력으로 받은 프리미티브 정보를 바탕으로 새로운 프리미티브를 생성할 수 있다.
  • 프리미티브 유형 변경
    예를 들어, 삼각형을 선(Line)으로 변환하거나 점(Point)으로 변경 가능하다.
  • 프리미티브 정보 수정
    현재 작업 중인 프리미티브의 위치나 속성을 수정할 수 있다.
  • 프리미티브 삭제
    필요 없는 프리미티브를 제거하여 렌더링을 최적화할 수 있다.

2. 쉐도우 볼륨 생성

  • 쉐도우 볼륨이란?
    빛의 위치를 기준으로 현재 프리미티브에 대한 그림자 프리미티브를 생성하는 기법이다.
    이 그림자 프리미티브는 스텐실 버퍼(Stencil Buffer)를 이용해 실제 그림자를 적용하는 데 사용된다.
  • 쉐도우 볼륨의 특징
    • 정확한 그림자 표현
      쉐도우 맵보다 해상도에 영향을 덜 받아 더 정확한 그림자를 표현할 수 있다.
    • 3D 공간 기반
      2D 맵에 깊이를 저장하는 쉐도우 맵과 달리, 3D 공간에 그림자의 영역을 계산하기 때문에 오차가 적다.

3. 기하학적 효과

  1. 법선 벡터 계산 및 시각화
    • 입력으로 받은 정점의 법선 벡터를 수정하거나, Line 프리미티브를 추가해 법선 벡터를 시각화할 수 있다.
  2. 엣지 디텍션 (윤곽선 찾기)
    • 첫 번째 렌더 패스에서 기본 렌더링을 수행한 후, 두 번째 패스로 윤곽선을 찾아 덧칠할 수 있다.
    • Geometry Shader에서 프리미티브의 법선 벡터카메라 방향 벡터를 활용해 윤곽선을 찾는다.
      예를 들어, 두 벡터가 이루는 각이 90도에 가까우면 윤곽선으로 간주해 윤곽선 프리미티브를 생성한다.
  3. 와이어프레임 출력
    • 삼각형 프리미티브를 입력으로 받아 모든 선을 Line 프리미티브로 변환하여 와이어프레임 형태로 렌더링한다.
  4. 파티클 생성
    • 점(Point) 프리미티브를 입력으로 받아 여러 개의 파티클을 생성할 수 있다.
  5. 빌보드 생성
    • 빌보드는 점(Point) 또는 선(Line) 프리미티브를 입력으로 받아 항상 카메라를 향하는 2D 평면을 생성하는 방법이다.
    • 복잡한 3D 모델 대신 가벼운 렌더링으로 사물을 표현할 수 있다.
    • 활용 사례:
      • 게임에서 나무, 풀 같은 환경 요소 표현
      • 폭발, 연기, 불꽃 등 입자 시스템 표현
      • 캐릭터의 얼굴, UI 요소 등
  6. 실시간 기하학적 표현
    • 실시간으로 물체의 표면을 변형하거나, 물체를 파편으로 나누는 등의 기하학적 효과를 적용할 수 있다.

Geometry Shading의 단점

Geometry Shading은 강력한 기능을 제공하지만 몇 가지 단점도 존재한다:

  1. 성능 부담
    • Vertex Shader에 비해 Geometry Shader는 GPU 성능에 더 큰 부하를 줄 수 있다.
  2. 정점 생성 한계
    • Geometry Shader에서 생성할 수 있는 정점의 수에는 하드웨어적으로 제한이 있다.
  3. 정점 처리 속도
    • 너무 많은 정점을 생성하거나 변형하면 GPU의 처리 속도가 느려질 수 있다.

Geometry Shading의 핵심

Geometry Shading은 기존 프리미티브를 활용해 새로운 프리미티브를 생성하거나, 기하학적 효과를 추가할 수 있는 강력한 도구다. 법선 벡터 시각화, 윤곽선 찾기, 와이어프레임 출력, 파티클 생성 등 다양한 응용이 가능하며, 쉐도우 볼륨을 이용한 정밀한 그림자 표현도 구현할 수 있다.
다만, 성능 부담이 더 크다는 점과 생성할 수 있는 정점 수의 한계를 고려하여 적절히 사용하는 것이 중요하다. Geometry Shading은 시각적 효과를 극대화하고 렌더링 디테일을 높이는 데 중요한 역할을 한다.

'Computer Graphics > Graphics Pipeline' 카테고리의 다른 글

Geometry Processing - Screen Mapping  (0) 2024.11.29
Geometry Processing - Clipping  (0) 2024.11.29
Geometry Processing - Tesselation  (0) 2024.11.29
Geometry Processing - Vertex Shading  (0) 2024.11.29
Graphics Pipeline 개요  (0) 2024.11.29

관련글 더보기