[GGP] 6. Rasterization

Cherish·2023년 6월 4일

Game Graphic Programming

목록 보기
5/14
post-thumbnail

☁️ Rendering Piepline


☁️ Rasterizer Stage

Rasterizer Stage에 도달하면 verticies는 hard-wired vertex post-processing step을 거친다.

  • Primitive Clipping
  • Perspective Division
  • Viewport Transform

Rasterization : pixel fragmentation = primitive를 2차원 이미지 요소(pixels)로 분할한다.

  • pixel 마다 필요한 data들을 넣어준다.
  • pixel shader는 연산이 많기 때문에 이전에 불필요한 것들을 제거해줘야 한다.



☁️ Primitive Clipping

= 안보이는(= clipping volume 밖) primitive 자르기

  • Point : clipping volume 밖에 있으면 버린다. 크기가 1 pixel보다 클 경우에 중점을 체크해서 버릴지 결정.
  • Line : 일부만 벗어난 경우 새로운 vertex 생성 후 자르기.
  • Triangle : boundary of the clipping volume에 있는 vertices 생성 & 자르기



☁️ Perspective Division

  • Camera space의 (x,y,z,1)에 Mproj 적용
  • homogeneous(clip) space를 Cartesian space로 바꾸기 위해 w값으로 나눠준다



☁️ Viewport Transform

  • viewport : 2차원의 직사각형 모양 공간이다. 3D Scene이 투영된다.
  • DirectX = 2×2×1
  • OpenGL = 2×2×2
  • DirectX



☁️ Face Culling

🔎 Projection line

  • 수정본
  • 이상한본
  • negative = CW and front-face
  • positive = CCW and back-face
  • 0 = edge on face
  • 그치만 back face를 다 날려버리면 반투명같은 물체에서는 문제가 생길 수 있음.



☁️ Rasterization

= convert vector information into a raster image

  • window coordinate의 integer grid에서 어떤 square들이primitive에 의해 포함되어있는지 결정.
  • square마다 color와 depth value를 할당한다.
  • pixel shader가 나중에 최종 색 렌더링을 한다.ㄷ



☁️ Edge Equation

= 픽셀이 삼각형 안에 포함되는지를 판단할 때 사용

  • point가 left side에 있는 경우 : negative number
  • point가 right side에 있는 경우 : positive number
  • point is on the line : zero number

  • point가 triangle 내부에 있다면 point는 모든 edge들의 right side에 위치한 것.
  • 세개의 edge모두 edge function이 양수를 return

🔎 Edge equation (E)

  • A = v1 - v0, B = p - v0
  • E = A와 B의 외적 = A x B
  • 0 < θ < 180 : positive value
  • 180 < θ < 360 : negative value

☁️ Attribute Interpolation

= Fragment에 속성(색상, 텍스처 등)을 보간해서 부여하는 과정

  • C0, C1, C2 = 꼭짓점 색상
  • p = 내부 픽셀
  • 𝜆0, 𝜆1, 𝜆2 = 픽셀 p가 삼각형 내에서 얼마나 각 꼭짓점에 가까운지를 나타내는 가중치

🔎 Barycentric coordinate (중심 좌표계)

= 픽셀 p에 대한 𝜆0, 𝜆1, 𝜆2를 구하는 수학적인 방법 (Edge Equation 활용)

  • T0 can be computed by 0.5 ∗ E(p, v1, v2)
  • T1 can be computed by 0.5 ∗ E(p, v2, v0)
  • T2 can be computed by 0.5 ∗ E(p, v0, v1)


☁️ Rasterization Rule (Top-left Rule)

= 겹치는 픽셀이 있을 때 한쪽만 포함 시키자~

  • 삼각형의 edge가 겹칠 때, 겹치는 픽셀을 처리해주지 않으면 두번 계산되기 때문에 이에 대한 처리를 해주는 것
  • left edge와 top edge로 선택



0개의 댓글