비타Cpp

DirectX 렌더링 파이프라인 본문

DirectX11/메모

DirectX 렌더링 파이프라인

멍C 2021. 6. 5. 19:15

DirectX 11 의 렌더링 파이프라인 구조


Input-Assembler Stage (IA)

  • 그래픽스 파이프라인의 진입점.
  • Primitives 데이터를 모아 다음 단계인 VertexShader로 보낸다. (Primitive : 삼각형의 각 정점(vertex)과 그리는 순서(index))
  • Vertex는 3D공간상의 좌표.
  • Vertex는 또한 Color, Normal값, Texture UV좌표값 등 다양한 값을 포함할 수 있다.
  • 이러한 데이터들은 DirectX Buffer를 사용하여 IA로 보내진다. 

Vertex Shader Stage (VS)

  • 프로그래밍이 가능한 첫번째 구역
  • 각 Vertex를 실행시킨다.

Tessellation

  • 두가지 프로그래밍이 가능한 구역(Hull Shader-HS, Domain Shader-DS).
  • 기하학의 세분화 프로그래밍.

Tessellation 예시


Geometry Shader Stage (GS)

  • 모든 Primitives를 수행한다.
  • 파이프 라인에서 Geometry를 추가하거나 제거할 수 있다.

Rasterizer Stage (RS)

  • Primitive에 그려질 Pixel을 결정한다.
  • Vertex정보를 보간한다.

`

RasterStage 예


 

PixelShader Stage (PS)

  • 프로그래밍이 가능한 구역 – 한 조각(픽셀?) 당 실행.
  • 각각의 색(Color), 깊이(Depth)를 출력한다.
  • Color = Red, Green, Blue, Alpha RGBA값을 사용한다.( 0 ~ 1 값)
  • Depth = 같은 위치에 여러 픽셀이 있을 경우 깊이 값을 이용하여 한 픽셀을 표현한다.(0 ~ 1 값)
  • 파이프 라인 중 무거운 구역

OutPut-Merger Stage (OM)

  • 픽셀 단위의 작업을 수행하고, Render Target에 픽셀을 써넣는다.
  • Render Target은 application의 해상도와 일치하는 2D Texture이며, 궁극적으로 화면에 표시된다.
  • 기본 Render Target은 backBuffer로도 불린다.
  • Display화면에 연결되지 않은 Render Target을 추가적으로도 만들 수 있다.
  • PixelColor와 Depth를 위한 별도의 Buffer가 존재한다.
  • Culling Tests – Depth test, Stencil test
  • Color Blending
Comments