본문 바로가기

게임 개발/Graphics

렌더링 파이프라인(rendering pipeline)

728x90
반응형

렌더링 파이프라인(rendering pipeline)은 3차원 환경을 2차원 래스터 이미지로 표현하기 위한 단계적 방법을 말한다.

(= graphics pipeline)

 

Graphics API마다 조금씩 다른 파이프라인 구조를 가지지만 일반적으로 크게 보면 다음과 같은 구조를 지닌다.

Graphics Pipeline

 

1. Vertex Processing / Greometry Processing

  • 삼각형 및 정점 조작을 책임지는 단계로, GPU상에서 실행된다. (vertex, index)
  • Screen Space(2D 좌표)상에서의 정점 위치를 결정한다.
  • 삼각형과 같은 기본 도형(Primitives)으로 재구성하여 다음 파이프라인 단계로 보낸다.

 

2. Rasterization

  1. 삼각형과 같은 기본 도형(Primitives)을 입력 받는다.
  2. 픽셀(pixel)을 결정하는데 필요한 데이터인 fragment를 생성한다.

*Fragment : 하나의 픽셀 생성하는데 필요한 데이터로 다음과 같은 정보들을 포함한다.

  • raster position
  • depth
  • interpolated attributes (color, texture coordinates, etc.)
  • stencil
  • alpha
  • window ID

이 단계에서 삼각형 세 꼭짓점에 의해 보간(interporation)된 데이터를 fragment 속성으로 지정한다.

 

3. Fragment Processing

  1. fragments를 입력 받는다. (존재하는 모든 fragments를 입력받음)
  2. fragments가 어느 frame buffer에 쓰여질지 결정하고, 어느 색, 깊이 값으로 쓰여지는지 결정하는 단계

하나의 fragment가 Pixel색을 결정짓는 것은 아니다. (예전에는 그런줄 알았다.)

 

4. Output Merging

  1. frame buffer각 위치에 대응되는 픽셀 색을 결정하는 단계이다.

파이프라인 상태에 따라 다음과 같은 처리 과정이 이 단계에 포함될 수 있다.

ex) Scissor Test, Stencil Test, Depth Test, Blending, Logical Operation, Write Mask

<참고> OpenGL Graphics Pipeline 위키

 

Graphics API Pipeline 비교

Vulkan

DirectX11

OpenGL

 

References

Explaining basic 3D theory

www.khronos.org/opengl/wiki/Rendering_Pipeline_Overview

 

 

영상 참고

 Real Time Computer Graphics and Rasterization work

728x90
반응형

'게임 개발 > Graphics' 카테고리의 다른 글

이미지 저장 방식  (0) 2020.11.16