본문 바로가기
그래픽스ㆍDirectX

그래픽스 파이프라인 (Graphics Pipeline)

by imagineer_jinny 2022. 5. 21.

OpenGL ES: 09. 그래픽스 파이프라인 - YouTube

그래픽스 파이프라인이란? (Graphics Pipeline) - 그래픽스 개발자의 코딩 블로그 (tistory.com)

 

그래픽스 파이프라인

3차원 도형 혹은 이미지를 2차원 래스터 이미지로 표현하기 위한 단계적 방법

 

 

  • 입력으로 정점들이 들어오면(Vertices)
  • Vertex Shader에서 계산해주고
  • Primitive Assembly에 의해 Assembly 정보에 따라 삼각형 만들어주고
  • 이 삼각형이 화면의 어디에 나오는지 Rasterization 단계를 거쳐
  • Fragment Shader에서 색상 결정한 후
  • Per-Fragment Operations
  • Framebuffer에 써짐

Transform Feedback? Vertex Shader의 결과를 Primitive Assembly까지 가지 않고 도중에 확인하고 싶거나 뭘 할 때 씀

Vertex Buffer? 정점들을 저장

 

Vertex Shader, Fragment Shader = Programable, 프로그래머가 원하는대로 바꿀 수 있음. 필수적으로 정해줘야함

 

 

Vertex Shader

Input은 Vertex Buffer로부터 읽혀 들어옴

Uniforms에는 상수값들이 있고 Samplers는 Texture을 읽기 위해 존재

상수와 텍스쳐들을 이용해서 최종 결과를 내게 되고 

Vertex Shader에서 가장 중요한 것은 gl_Position: NDC의 어디에 위치할건지 최종 정점을 정해주는 변수

 

Vertex Shader에서 어떤 계산을 하게 되면 이 큐브 안에 들어가야 화면에 나오게 됨

 

 

Primitive Assembly & Rasterization

한개의 도형(Primitive)으로 만들어주고(Primitive Assembly)

3D 공간에 있던 좌표를 윈도우인 2D 좌표로 바꿔줌(Rasterization)

 

Rasterization 단계로 가기 위해서 Viewport라는 코디네이터가 정의가 되어 있음

오픈지엘에서는 glViewport

 

Fragment Shader

 

최종 색상 결정

Input = Rasterization 단계에서 Interpolation된 값들

 

 

Framebuffer

계산된 최종 컬러를 가지고 Pixel Ownership Test를 하게 됨

이 과정들을 다 통과하면 Framebuffer에 기록하게 됨

 

Pixel Ownership Test

빨간 부분 중 가려진 부분은 렌더링 할 필요 없음

이런 부분 렌더링 아낄 수 있게 함

 

댓글