SO(스트림 출력) 단계

SO(스트림 출력) 단계에서는 이전의 활성 단계에서 하나 이상의 메모리 내 버퍼로 꼭짓점 데이터를 연속적으로 출력(또는 스트리밍)합니다. 메모리로 스트리밍된 데이터는 입력 데이터 또는 CPU에서 다시 읽기로 파이프라인으로 다시 재순환될 수 있습니다.

목적 및 사용

diagram of the stream-output stage's location in the pipeline

스트림 출력 단계에서는 파이프라인에서 메모리를 거쳐 래스터라이저로 원형 데이터를 스트리밍합니다. 이전 단계의 데이터는 메모리로 스트리밍되거나 래스터라이저로 전달될 수 있습니다. 메모리로 스트리밍된 데이터는 입력 데이터 또는 CPU에서 다시 읽기로 파이프라인으로 다시 재순환될 수 있습니다.

메모리로 스트리밍된 데이터는 이후의 렌더링 패스에서 파이프라인으로 다시 입력되거나 (CPU에서 읽을 수 있도록) 준비 리소스로 복사될 수 있습니다. 스트림 출력되는 데이터의 양은 경우에 따라 다릅니다. Direct3D는 쓰여진 데이터 양을 (GPU에) 쿼리하지 않아도 데이터를 처리하도록 설계되었습니다.-->

파이프라인에 스트림 출력 데이터를 공급하는 방법은 두 가지가 있습니다.

  • 스트림 출력 데이터를 IA(입력 어셈블러) 단계로 피드백할 수 있습니다.
  • 스트림 출력 데이터를 프로그래밍 가능 셰이더가 Load 함수를 사용하여 읽을 수 있습니다.

입력

이전 셰이더 단계의 꼭짓점 데이터.

출력

SO(스트림 출력) 단계에서는 이전 활성 단계(예: GS(기하 도형 셰이더) 단계)의 꼭짓점 데이터를 하나 이상의 메모리 내 버퍼로 연속적으로 출력(또는 스트리밍)합니다. GS(기하 도형 셰이더) 단계가 비활성 상태인 경우 SO(스트림 출력) 단계는 DS(도메인 셰이더) 단계(또는 DS 단계도 비활성 상태일 경우 VS(꼭짓점 셰이더) 단계)의 꼭짓점 데이터를 메모리 내 버퍼로 연속적으로 출력합니다.

삼각형 또는 선 스트립이 IA(입력 어셈블러) 단계에 바인딩된 경우 각 스트립은 목록으로 변환된 후 스트림 출력됩니다. 꼭짓점은 항상 완전한 원형으로 쓰여지며(예: 삼각형의 경우 한 번에 세 꼭짓점) 불완전한 원형은 스트림 출력되지 않습니다. 인접성을 포함한 원형 유형은 데이터를 스트림 출력하기 전에 인접성 데이터를 삭제합니다.

스트림 출력 단계는 최대 4개의 버퍼를 동시에 지원합니다.

  • 데이터를 여러 버퍼로 스트리밍하는 경우 각 버퍼는 암시된 데이터 진행 속도가 각 버퍼 내 요소 너비와 동일한(단일 요소 버퍼가 입력에 대해 셰이더 단계로 바인딩되는 방식과 호환됨), 꼭짓점당 데이터의 단일 요소(최대 4개 구성 요소)만 캡처할 수 있습니다. 또한 버퍼 크기가 서로 다를 경우 버퍼 중 하나가 가득 차는 즉시 쓰기가 중단됩니다.
  • 데이터를 단일 버퍼로 스트리밍하는 경우 버퍼는 꼭짓점당 데이터(256바이트 이하)의 스칼라 구성 요소를 최대 64개 캡처할 수 있거나 꼭짓점 진행 속도가 최대 2048바이트일 수 있습니다.

그래픽 파이프라인