Stream-Output 단계

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

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

파이프라인에서 스트림 출력 단계의 위치 다이어그램

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

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

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

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

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

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

섹션 내용

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

그래픽 파이프라인

파이프라인 단계(Direct3D 10)