고현우
개발 일지
고현우
전체 방문자
오늘
어제
  • 분류 전체보기 (14)
    • Unity (7)
      • 작업 (1)
      • 지식 (6)
    • DirectX (0)
      • 작업 (0)
      • 지식 (0)
    • C# (3)
      • 디자인 패턴 (0)
      • 알고리즘 (1)
      • 자료구조 (0)
      • 지식 (2)
    • C++ (0)
      • 디자인 패턴 (0)
      • 알고리즘 (0)
      • 자료구조 (0)
      • 지식 (0)
    • 필수 지식 (4)
      • 물리 (0)
      • 선형대수학 (0)
      • 셰이더 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 렌더링파이프라인
  • 뷰포트좌표
  • 버텍스 셰이더
  • Z-Up
  • 셰이더
  • Shader
  • 프래그먼트셰이더
  • 래스터라이저
  • .NET
  • 비동기
  • 월드좌표
  • VertexShader
  • 스크린좌표
  • 선형 탐색 알고리즘
  • 메모리 계층
  • RenderingPipeline
  • Y-Up
  • Unity
  • 그래픽스API
  • 로컬좌표

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
고현우

개발 일지

[Shader] 렌더링 파이프라인(1) 그래픽스 API 초기화 과정
필수 지식/셰이더

[Shader] 렌더링 파이프라인(1) 그래픽스 API 초기화 과정

2022. 1. 16. 18:32

렌더링 파이프라인

 

렌더링 파이프라인은 3D 세계에 대한 기하학적 표현과, 이 세계를 바라보는 관점을

정의하는 가상 카메라를 이용해 2D 이미지를 만들어내는 역할을 담당한다.

 

쉽게 말해, 오브젝트를 화면에 표현하기 위한 일련의 작업들이라고 할 수 있다.

 

오늘은 이러한 렌더링 파이프라인의 과정과 렌더링 파이프라인을 시작하기 앞서,

그래픽스 API의 초기화과정을 자세하게 살펴볼 것이다.

 

  1.  로컬 스페이스
  2.  월드 스페이스
  3.  뷰 스페이스
  4.  후면 추려내기
  5.  조명
  6.  클리핑
  7.  투영
  8.  뷰포트
  9.  래스터 라이즈

순으로 일련의 렌더링 파이프라인 과정을 요약해 보았다.

 


그래픽스 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
    '필수 지식/셰이더' 카테고리의 다른 글
    • [Shader] 렌더링 파이프라인(3) 래스터라이저와 프래그먼트 셰이더
    • [Shader] 렌더링 파이프라인(2) 정점 조립과 버텍스 셰이더
    고현우
    고현우
    Unity / DirectX 게임 개발

    티스토리툴바