Bagikan melalui


Sintaks Aliran Keluar

Shader geometri dengan stream out dinyatakan dengan sintaks tertentu. Topik ini menguraikan sintaks. Dalam runtime efek, sintaks ini akan dikonversi ke panggilan ke ID3D11Device::CreateGeometryShaderWithStreamOutput.

Membangun Sintaksis

[ StreamingShaderVar = ] ConstructGSWithSO( ShaderVar, "OutputDecl0" )
Nama Deskripsi
StreamingShaderVar Pilihan. String ASCI yang secara unik mengidentifikasi nama variabel shader geometri dengan stream out. Ini opsional karena ConstructGSWithSO dapat ditempatkan langsung di panggilan SetGeometryShader atau BindInterfaces.
ShaderVar Shader geometri atau variabel shader vertex.
OutputDecl0 String yang menentukan output shader mana di aliran 0 yang dialirkan. Lihat di bawah ini untuk sintaks.

 

Ini adalah sintaks didefinisikan dalam file fx_4_0. Perhatikan bahwa dalam gs_4_0 dan vs_x shader, hanya ada satu aliran data. Shader yang dihasilkan akan menghasilkan satu aliran ke unit stream out dan unit rasterizer.

[ StreamingShaderVar = ] ConstructGSWithSO( ShaderVar, "OutputDecl0", "OutputDecl1", "OutputDecl2", 
"OutputDecl3", RasterizedStream )
Nama Deskripsi
StreamingShaderVar Pilihan. String ASCI yang secara unik mengidentifikasi nama variabel shader geometri dengan stream out. Ini opsional karena ConstructGSWithSO dapat ditempatkan langsung di panggilan SetGeometryShader atau BindInterfaces.
ShaderVar Shader geometri atau variabel shader vertex.
OutputDecl0 String yang menentukan output shader mana di aliran 0 yang dialirkan. Lihat di bawah ini untuk sintaks.
OutputDecl1 String yang menentukan output shader mana di aliran 1 yang dialirkan. Lihat di bawah ini untuk sintaks.
OutputDecl2 String yang menentukan output shader mana di aliran 2 yang dialirkan. Lihat di bawah ini untuk sintaks.
OutputDecl3 String yang menentukan output shader mana di aliran 3 yang dialirkan. Lihat di bawah ini untuk sintaks.
RasterizedStream Bilangan bulat yang menentukan aliran mana yang akan dikirim ke rasterizer.

 

Perhatikan bahwa gs_5_0 shader dapat menentukan hingga empat aliran data. Shader yang dihasilkan akan menghasilkan satu aliran ke unit stream out untuk setiap deklarasi output non-NULL dan satu aliran unit rasterizer.

Sintaks Deklarasi Stream Out

" [ Buffer: ] Semantic[ SemanticIndex ] [ .Mask ]; [ ... ; ] ... [ ... ;]"
Nama Deskripsi
Buffer Opsional. Bilangan bulat, 0 <= Buffer < 4, menentukan buffer aliran mana yang akan digunakan oleh nilai.
Semantik String, bersama dengan SemanticIndex, menentukan nilai mana yang akan dihasilkan.
SemanticIndex Pilihan. Indeks yang terkait dengan Semantik.
Masker Pilihan. Masker komponen, menunjukkan komponen nilai mana yang akan dihasilkan.

 

Ada satu Semantik khusus, berlabel "$SKIP" yang menunjukkan semantik kosong, meninggalkan memori yang sesuai di buffer aliran keluar tidak tersentuh. Semantik $SKIP tidak dapat memiliki SemanticIndex, tetapi dapat memiliki Masker.

Seluruh deklarasi stream out dapat berupa NULL.

Contoh

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);
    }
}

Efek (Direct3D 11)