본문 바로가기

Graphics

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

필자는 현재 클라이언트 프로그래머로써 4년차 엔지니어로 일하고 있습니다.

많은 신입 지원자 분들이 질문에 대해 곤란해 하는 것들이 그래픽스 관련 질문들인 것으로 보입니다.

클라이언트라고 그래픽스에 대해 몰라도 되는것이 아닌데, 참 안타깝다는 생각이 듭니다.

 

그래픽스 파이프라인(Graphics Pipeline)은 3D 그래픽스를 렌더링하기 위한 일련의 처리 과정을 나타내는 개념입니다. 그래픽스 파이프라인은 입력 데이터를 받아서 출력 이미지를 생성하는 일련의 단계로 이루어져 있습니다. 이러한 단계는 다음과 같습니다.

  1. 입력어셈블리(Input Assembly): 3D 모델을 나타내는 정점 데이터(Vertex Data)를 입력받아 그래픽스 카드가 처리할 수 있는 형식으로 변환합니다.
  2. 버텍스 쉐이더(Vertex Shader): 변환된 정점 데이터에 대해 버텍스 쉐이더(Vertex Shader)가 실행됩니다. 버텍스 쉐이더는 입력된 정점 위치와 속성 정보를 가지고, 변환 행렬을 적용하고, 빛의 모델과 같은 그래픽스 기술을 사용하여 정점에 대한 색상과 그림자를 계산합니다.
  3. 클리핑(Culling): 카메라가 보는 시야 밖의 정점을 제거하여 불필요한 계산을 줄입니다.
  4. 트라이앵글 어셈블리(Triangle Assembly): 입력 어셈블리(Input Assembly) 단계에서 생성된 정점 데이터를 삼각형으로 묶어서 출력합니다.
  5. 젠데어(Depth Test): 물체의 깊이를 검사하여 가장 앞에 있는 물체만 그리도록 합니다.
  6. 프래그먼트 쉐이더(Fragment Shader): 픽셀 단위의 그래픽스 처리가 이루어지는 단계입니다. 픽셀의 색상 및 빛의 모델에 대한 정보를 이용하여 출력 픽셀의 최종 색상 값을 계산합니다.
  7. 블렌딩(Blending): 출력 픽셀의 색상 값에 대해 블렌딩 기법을 적용하여 투명도 등의 효과를 구현합니다.
  8. 출력(Output): 최종 결과 이미지를 출력합니다.

이러한 단계는 그래픽스 카드 하드웨어에서 구현되며, 각 단계에서 발생하는 데이터는 그래픽스 메모리에 저장됩니다. 이렇게 처리된 데이터는 모니터에 출력되거나 파일로 저장될 수 있습니다.