상세 컨텐츠

본문 제목

Geometry Processing - Vertex Shading

Computer Graphics/Graphics Pipeline

by Banjosh 2024. 11. 29. 13:44

본문

Geometry Processing의 첫 단계: Vertex Shading

이번에는 Geometry Processing의 첫 번째 단계인 Vertex Shading에 대해 알아보자. Vertex Shading은 Application 단계에서 준비된 Local 좌표계의 Object 정점 정보를 Clip 좌표계로 변환하는 역할을 한다. 보통 vertex shader를 통해 이 단계를 구현한다.


변환 행렬

Vertex Shading 과정에서 보통 Model-View-Projection (MVP) Matrix 변환을 적용하며, 각 행렬의 역할은 다음과 같다:

  1. Model Matrix
    • Local 좌표계 정보를 World 좌표계로 변환해준다.
    • 물체의 이동(Translate), 회전(Rotate), 크기(Scale) 변환을 반영.
  2. View Matrix
    • World 좌표계Camera 좌표계(View Space)로 변환해준다.
    • 카메라의 위치를 원점으로 옮기고, 카메라의 Front, Up, Right 벡터를 기준으로 좌표축을 설정.
  3. Projection Matrix
    • Camera 좌표계Clip 좌표계로 변환해준다.
    • 카메라에서 바라보는 3D 공간을 원근 투영(Perspective Projection) 또는 직교 투영(Orthographic Projection)을 적용해 2D로 표현.

벡터의 변환

벡터(특히 Normal Vector)의 변환에는 단순히 MVP 변환을 사용하는 것이 아니라, Model-View-Projection 행렬의 역행렬의 전치(Inverse Transpose)를 적용해야 한다.
이 행렬은 M이 MVP 행렬일 때 다음과 같이 정의된다:


정점 정보

Vertex Shading 단계에서 변환되는 정점 정보들은 다음과 같다:

  1. Position
    • 정점의 위치 정보를 나타낸다.
    • Local 좌표계로 주어지며, Model-View-Projection 변환 M을 통해 Clip 좌표계로 변환된다.
  2. Normal
    • 정점에서의 법선 벡터를 나타낸다.
    • Normal은 벡터이기 때문에 M의 역행렬의 전치행렬 N을 적용해야 한다.
  3. Texcoord
    • 텍스처 맵핑에서 사용하는 텍스처 좌표다.
    • 변환이 필요하지 않으며, 그대로 다음 단계로 전달된다.
  4. Tangent
    • 주로 Normal Map을 사용할 때 필요하다.
    • 프리미티브의 Local 좌표계에서 TBN(Tangent, Binormal, Normal) 좌표계를 구성하며, Normal과 마찬가지로 N 변환을 적용해야 한다.
    • 이를 통해 프리미티브의 표면 방향을 계산할 수 있다.
    • Normal Map을 사용하는 경우 Normal map texture 값에 TBN 행렬을 곱해 world 좌표계의 벡터로 변환해 사용할 수 있다.

애니메이션 및 변형

Vertex Shading에서는 정점 속성에 애니메이션이나 물리적 효과를 적용할 수도 있다. 대표적인 예시는 다음과 같다:

  1. 스키닝 (Skinning)
    • 스켈레탈 애니메이션에서 관절 주변 피부의 자연스러운 움직임을 구현하기 위해 사용된다.
    • 정점마다 영향을 주는 뼈(Bone)와 그 가중치를 이용해 변환을 적용하여 자연스럽게 동작한다.
  2. 물결 효과
    • 물체에 사인파(Sine Wave)를 적용하여 물결 효과를 구현할 수 있다.
    • 정점의 위치를 시간에 따라 주기적으로 변화시켜 애니메이션 효과를 준다.
  3. 바람 효과
    • 바람의 세기와 방향을 이용해 정점의 위치를 변화시켜 바람에 흔들리는 효과를 낼 수 있다.

이 외에도 다양한 물리적 효과를 Vertex Shader 단계에서 적용할 수 있다.


Vertex Shading의 역할

위 과정들을 통해 변환된 정점 정보들은 다음 단계로 전달된다. Vertex Shading은 정점의 위치, 법선, 텍스처 좌표, 그리고 기타 필요한 정보를 Clip 좌표계로 변환하여 Geometry Processing의 후속 작업이 가능하도록 준비하는 핵심 단계이다.

관련글 더보기