다음을 통해 공유


Stream-Output 스테이지

스트림 출력 단계의 목적은 기하 도형 셰이더 단계(또는 기하 도형 셰이더 단계가 비활성 상태인 경우 꼭짓점 셰이더 단계)에서 메모리의 하나 이상의 버퍼로 꼭짓점 데이터를 지속적으로 출력(또는 스트림)하는 것입니다(Stream-Output 스테이지 시작하기참조).

SO(스트림 출력 단계)는 다음 다이어그램과 같이 기하 도형 셰이더 단계 바로 뒤와 래스터화 단계 바로 앞에 있는 파이프라인에 있습니다.

파이프라인다이어그램

메모리로 스트리밍된 데이터는 후속 렌더링 패스에서 파이프라인으로 다시 읽거나 스테이징 리소스에 복사할 수 있습니다(CPU에서 읽을 수 있도록). 스트리밍되는 데이터의 양은 다를 수 있습니다. ID3D11DeviceContext::D rawAuto API는 기록된 데이터의 양에 대해 GPU(쿼리)할 필요 없이 데이터를 처리하도록 설계되었습니다.

삼각형 또는 선 스트립이 입력 어셈블러 단계에 바인딩된 경우 각 스트립은 스트리밍되기 전에 목록으로 변환됩니다. 꼭짓점은 항상 완전한 기본 형식으로 작성됩니다(예: 삼각형의 경우 한 번에 3개의 꼭짓점). 불완전한 기본 형식은 스트리밍되지 않습니다. 인접한 기본 형식은 데이터를 스트리밍하기 전에 인접 데이터를 삭제합니다.

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

  • 스트림 출력 데이터는 입력 어셈블러 단계로 다시 공급될 수 있습니다.
  • 스트림 출력 데이터는 로드 함수(예: Load)를 사용하여 프로그래밍 가능한 셰이더에서 읽을 수 있습니다.

버퍼를 스트림 출력 리소스로 사용하려면 D3D11_BIND_STREAM_OUTPUT 플래그를 사용하여 버퍼를 만듭니다. 스트림 출력 단계에서는 최대 4개의 버퍼를 동시에 지원합니다.

  • 데이터를 여러 버퍼로 스트리밍하는 경우 각 버퍼는 꼭짓점당 데이터의 단일 요소(최대 4개 구성 요소)만 캡처할 수 있으며, 암시적 데이터 보폭은 각 버퍼의 요소 너비와 같습니다(단일 요소 버퍼를 셰이더 단계로 입력하기 위해 바인딩할 수 있는 방법과 호환됨). 또한 버퍼의 크기가 다른 경우 버퍼 중 하나가 가득 차자마자 쓰기가 중지됩니다.
  • 데이터를 단일 버퍼로 스트리밍하는 경우 버퍼는 꼭짓점당 데이터(256바이트 이하)의 스칼라 구성 요소를 최대 64개까지 캡처하거나 꼭짓점 보폭을 최대 2048바이트까지 캡처할 수 있습니다.

이 섹션에서는

주제 묘사
Stream-Output 스테이지 시작
이 섹션에서는 스트림 출력 단계에서 기하 도형 셰이더를 사용하는 방법을 설명합니다.

그래픽 파이프라인

파이프라인 단계(Direct3D 10)