Windows apps
Collapse the table of content
Expand the table of content
Information
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

Stream Out Syntax

A geometry shader with stream out is declared with a particular syntax. This topic describes the syntax. In the effect runtime, this syntax will be converted to a call to ID3D11Device::CreateGeometryShaderWithStreamOutput.

Construct Syntax


[ StreamingShaderVar = ] ConstructGSWithSO( ShaderVar, "OutputDecl0" )

NameDescription
StreamingShaderVarOptional. An ASCI string that uniquely identifies the name of a geometry shader variable with stream out. This is optional because ConstructGSWithSO can be placed directly in a SetGeometryShader or BindInterfaces call.
ShaderVar A geometry shader or vertex shader variable.
OutputDecl0 A string defining which shader outputs in stream 0 are streamed out. See below for syntax.

 

This is the syntax was defined in fx_4_0 files. Note that in gs_4_0 and vs_x shaders, there is only one stream of data. The resulting shader will output one stream to both the stream out unit and the rasterizer unit.



[ StreamingShaderVar = ] ConstructGSWithSO( ShaderVar, "OutputDecl0", "OutputDecl1", "OutputDecl2", 
"OutputDecl3", RasterizedStream )


NameDescription
StreamingShaderVar Optional. An ASCI string that uniquely identifies the name of a geometry shader variable with stream out. This is optional because ConstructGSWithSO can be placed directly in a SetGeometryShader or BindInterfaces call.
ShaderVar A geometry shader or vertex shader variable.
OutputDecl0 A string defining which shader outputs in stream 0 are streamed out. See below for syntax.
OutputDecl1 A string defining which shader outputs in stream 1 are streamed out. See below for syntax.
OutputDecl2 A string defining which shader outputs in stream 2 are streamed out. See below for syntax.
OutputDecl3 A string defining which shader outputs in stream 3 are streamed out. See below for syntax.
RasterizedStream An integer specifying which stream will be sent to the rasterizer.

 

Note that gs_5_0 shaders can define up to four streams of data. The resulting shader will output one stream to the stream out unit for each non-NULL output declaration and one stream the rasterizer unit.

Stream Out Declaration Syntax


" [ Buffer: ] Semantic[ SemanticIndex ] [ .Mask ]; [ ... ; ] ... [ ... ;]"

NameDescription
BufferOptional. An integer, 0 <= Buffer < 4, specifying which stream out buffer the value will go to.
SemanticA string, along with SemanticIndex, specifying which value to output.
SemanticIndexOptional. The index associated with Semantic.
MaskOptional. A component mask, indicating which components of the value to output.

 

There is one special Semantic, labeled "$SKIP" which indicates an empty semantic, leaving the corresponding memory in the stream out buffer untouched. The $SKIP semantic cannot have a SemanticIndex, but can have a Mask.

The entire stream out declaration can be NULL.

Example



struct GSOutput
{
int4 Pos : Position;
int4 Color : Color;
int4 Texcoord : Texcoord;
};

[maxvertexcount(1)]
void gsBase (inout PointStream<GSOutput> OutputStream, inout PointStream<GSOutput> OutputStream1)
{
GSOutput output;
output.Pos = int4(1,2,3,4);
output.Color = int4(5,6,7,8);
output.Texcoord = int4(9,10,11,12);
OutputStream.Append(output);

output.Pos = int4(1,2,3,4);
	output.Color = int4(5,6,7,8);
output.Texcoord = int4(9,10,11,12);
OutputStream1.Append(output);
};


GeometryShader pGSComp = CompileShader(gs_5_0, gsBase());
GeometryShader pGSwSO = ConstructGSWithSO(pGSComp, "0:Position.xy; 1:Position.zw; 2:Color.xy", 
                                                   "3:Texcoord.xyzw; 3:$SKIP.x;", NULL, NULL, 1);

// The following two passes perform the same operation
technique11 SOPoints
{
    pass 
    {
        SetGeometryShader(ConstructGSWithSO(pGSComp, "0:Position.xy; 1:Position.zw; 2:Color.xy", 
                                                     "3:Texcoord.xyzw; 3:$SKIP.x;", NULL, NULL, 1));
    }
    pass 
    {
        SetGeometryShader(pGSwSO);
    }
}


Related topics

Effects (Direct3D 11)

 

 

Show:
© 2016 Microsoft