본문 바로가기

Library/Computer Graphics

D3D10 Pipeline : Stream-Output Stage

스트림 아웃풋(SO, stream-output) 스테이지의 목적은 지오메트리 쉐이더(geometry shader) 스테이지로부터의 버텍스 데이터를 메모리 상의 하나, 또는 이 이상의 버퍼에 연속적으로 출력하기 위한 것이다. SO 스테이지는 파이프라인에서 지오메트리 쉐이더 스테이지 후, 그리고 래스터라이저 스테이지 바로 전에 위치한다.

메모리로 스트림 출력되는 데이터는 연속적인 렌더링 패스에서 파이프라인으로 다시 읽혀지거나 스테이지 자원으로 복사될 수도 있다. 스트림 출력되는 데이터는 총량은 다양하다. ID3D10Device::DrawAuto()와 같은 API는 쓰여진 데이터의 총량에 대해 질의를 하지않고도 이 데이터를 다룰 수 있도록 디자인되었다.

삼각형이나 선 스트립이 IA 스테이지에 바인딩될 때, 각 스트립은 그들이 스트림 출력되기 전에 리스트로 변환된다. 버텍스들은 언제나 완전한 프리미티브로서 쓰여진다. (예를 들어, 하나의 삼각형에는 3개의 버텍스) 완전하게 만들어지지 않는 프리미티브는 절대로 스트림 출력되지 않는다. 인접 정보를 가진 프리미티브 타입들은 스트림 출력되기 전에, 이들 인접성을 무시한다.

스트림 출력된 데이터가 파이프라인으로 피드되는 것에는 다음 2 가지 형태가 있다.

A. 스트림 출력되는 데이터는 IA 스테이지로 다시 피드백되거나,
B. load 함수를 사용하는 프로그래밍 가능한 쉐이더에 의해 스트림 출력되는 데이터가 다시 읽혀질 수 있다.

스트림 출력 자원으로서 버퍼를 사용하기 위해, D3D10_BIND_STREAM_OUTPUT 플래그를 가진 버퍼를 생성해야 한다. SO 스테이지는 동시에 최대 4개까지의 버퍼를 제공한다.


Translated from
http://msdn.microsoft.com/en-us/library/ee415710(VS.85).aspx