Direct3D 12 Pipeline State Objects (PSO)

SYiee·2023년 2월 1일
0

Graphics

목록 보기
2/5

Pipeline State Objects (PSO)

기하 도형을 그리기 위해 GPU로 전송할 경우 입력 데이터가 해석 및 렌더링되는 방식을 결정하는 다양한 하드웨어 설정이 있다. 종합적으로 이러한 설정을 Pipeline State Objects 라고 한다.

  • ID3D12PipelineState로 대표됨

  • rendering pipeline의 상태를 제어하는 대부분의 객체를 지정하는데 사용함

  • During initialization time
    → create many of these Pipeline State Objects
    → then setting them with a Command List takes very little CPU overhead

  • 생성할 수 있는 개수에는 제한이 없다

  • PSO를 생성할 때는 D3D12_GRAPHICS_PIPELINE_STATE_DESC 구조를 사용

    → PSO가 설정될 때 pipeline state를 결정

  • 대부분의 pipelin state가 PSO로 지정되지만 Command List(ID3D12GraphicsCommandList)에 의해 지정되는 경우도 존재

  1. 앱은 일반적으로 초기화 시에 ID3D12PipelineState 인터페이스로 나타내는 이러한 개체를 개수에 제한없이 만듬.
  2. 렌더링 시에 명령 목록은 직접 명령 목록이나 번들에서 ID3D12GraphicsCommandList::SetPipelineState를 호출하여 활성 PSO를 설정함으로써 파이프라인 상태의 여러 설정 간을 빠르게 전환할 수 있다.

✔ 기본 개념은 GPU가 혼합 상태 설정과 같은 관련 설정을 한 번에 모두 지정하여 효율성을 얻는다는 것
→ 오늘날의 그래픽 하드웨어를 사용할 경우 여러 하드웨어 장치 간에 종속성이 존재
→ Direct3D 12의 PSO는 GPU가 일반적으로 초기화 중에 각 파이프라인 상태의 모든 종속 설정을 미리 처리하여 렌더링 시에 가능한 한 효율적으로 상태 간을 전환할 수 있도록 디자인되었다.

profile
게임 개발자

0개의 댓글