위의 그림을 모니터에 출력하기 위해 또는 게임에서 구현하기 위해서 컴퓨터에서 자동으로 수행하는 작업들이 있습니다. 그 작업들을 묶어서 랜더링 파이프라인 이라고 합니다.
렌더링 파이프라인은 3D 모델링 데이터를 2D 화면에 렌더링하는 복잡한 과정을 체계적으로 수행하는 과정입니다. 각 단계는 특정한 작업을 담당하며, GPU의 성능을 최적화하여 실시간으로 고품질의 그래픽을 생성할 수 있도록 설계되어 있습니다. 이러한 파이프라인은 게임, 영화, 시뮬레이션 등 다양한 응용 분야에서 활용됩니다.
이 단계는 CPU에서 실행되며, 게임 로직, 물리 연산, 카메라 설정, 사용자 입력 처리 등과 같은 고수준 작업을 수행합니다. 이 단계에서 생성된 데이터는 다음 단계인 GPU로 전달됩니다.
3D 모델의 버텍스 데이터를 입력받습니다.
각 버텍스(정점)의 위치, 색상, 텍스처 좌표 등을 처리합니다. 이 단계에서 주로 월드 좌표계를 카메라(뷰) 좌표계로 변환하거나, 조명 효과를 계산하는 작업이 이루어집니다.(버텍스 셰이더(Vertex Shader))
변환된 버텍스 좌표와 기타 정보(색상, 텍스처 좌표 등)가 출력됩니다.
기하 셰이더의 출력을 기반으로 하는 3D 프리미티브(삼각형 등)을 입력합니다.
3D 공간의 기하학적 데이터를 2D 픽셀로 변환합니다. 이 과정에서 가시성 결정(Z-버퍼링)과 프래그먼트 생성이 이루어집니다.(레스터화)
프래그먼트(화면의 각 픽셀에 해당하는 데이터)를 출력합니다.
래스터화 과정에서 생성된 프래그먼트입니다.
각 프래그먼트의 색상, 텍스처, 조명, 그림자, 반사 등 다양한 효과를 계산합니다.(프래그먼트 셰이더(Fragment Shader))
최종 픽셀 값을 출력합니다.
각 프래그먼트가 기존의 깊이(거리) 정보와 비교되어 앞에 있는지 뒤에 있는지 판단합니다.
특정 픽셀을 렌더링할지 여부를 결정하는 추가적인 테스트입니다.(스텐실 테스트)
기존의 픽셀 데이터와 새로 계산된 프래그먼트 데이터를 합성(예: 반투명 효과)합니다.(블랜딩)
최종 이미지 버퍼에 저장되는 픽셀 데이터
이 단계에서는 최종적으로 생성된 프래그먼트를 화면에 표시할 최종 이미지로 결합합니다. 모든 픽셀의 색상, 깊이 및 스텐실 정보가 최종 출력 이미지로 병합됩니다.
위의 작업들을 1프레임이라고 합니다. 우리가 흔히 말하는 60프레임은 1초에 저 작업들을 60번한다고 생각하시면 됩니다. 따라서 프레임이 높아질 수록 게임이 더 부드러워 지는 것을 느낄 수 있습니다.