렌더링 파이프라인
렌더링 파이프라인은 3D 세계에 대한 기하학적 표현과, 이 세계를 바라보는 관점을
정의하는 가상 카메라를 이용해 2D 이미지를 만들어내는 역할을 담당한다.
쉽게 말해, 오브젝트를 화면에 표현하기 위한 일련의 작업들이라고 할 수 있다.
오늘은 이러한 렌더링 파이프라인의 과정과 렌더링 파이프라인을 시작하기 앞서,
그래픽스 API의 초기화과정을 자세하게 살펴볼 것이다.
- 로컬 스페이스
- 월드 스페이스
- 뷰 스페이스
- 후면 추려내기
- 조명
- 클리핑
- 투영
- 뷰포트
- 래스터 라이즈
순으로 일련의 렌더링 파이프라인 과정을 요약해 보았다.
그래픽스 API 초기화
1. GPU Device 생성
GPU 디바이스는 GPU 하드웨어를 추상적으로 표현한 오브젝트로서
실제 커멘드 큐로부터 들어온 명령들을 처리하는 공간이라고 할 수 있다
즉 GPU Device는 현재 기기의 GPU 하드웨어라고 생각하면 된다.
2. 커멘드 큐 생성
위에 GPU Device를 설명하면서도 나온 용어이다.
여기선 CPU에서 전달된 명령들을 Queue형태로 쌓아두는 곳이다.
자료구조에서의 Queue와 같은 구조다
GPU에는 명령 대기열(Command Queue)이 있고
CPU에는 명령 목록(Command List)이 있는데,
CPU는 그리는 명령이 담긴 Command List를
GPU의 Command Queue에 제출한다.
따라서 선입선출 방식으로 먼저 CPU에서 들어온 명령들이
차례대로 명령 대기열에서 처리되는 방식이다.
여기서 주의해야 될 점은 무조건 커멘드 큐에 지정된 명령들은
바로 GPU로 전달되어 실행되는 것이 아닌, 명령들을 예약하는
공간이라고 생각하면 된다.
3. 렌더링 파이프라인 상태 생성
렌더링 파이프라인의 현재 상태를 표현한다.
그리고 렌더링 파이프라인에 사용할 다양한 속성들을 가지고 있다
이러한 렌더링 파이프라인 상태 오브젝트는 여러 개 생성하여
사용할 수 있다.
렌더링 파이프라인 상태 내부에는
렌더링 파이프라인 서술자(Rendering Pipeline Descriptor)
라는 것이 존재하는데 이것은 렌더링 파이프라인이 어떻게
구성되어 있는지에 대한 정보가 담겨 있다.
각각의 정보들은
정점 서술자, 버텍스 셰이더, 프래그먼트 셰이더 등이 있다.
이상으로 그래픽스 API 초기화 과정을 알아보았고
이후에도 계속 포스팅을 이어나가도록 하겠다.
'필수 지식 > 셰이더' 카테고리의 다른 글
[Shader] 렌더링 파이프라인(3) 래스터라이저와 프래그먼트 셰이더 (0) | 2022.01.23 |
---|---|
[Shader] 렌더링 파이프라인(2) 정점 조립과 버텍스 셰이더 (0) | 2022.01.22 |