0
目前我正在使用下面的幾何着色器,一旦細分二十面體的二十面體的多個分區:使用HLSL幾何着色器
[maxvertexcount(8)]
void gs(triangle VS_OUT gin[3], inout TriangleStream<GS_OUT> s)
{
// p1
// /\
// / \
// m0 --- m1
// /\ /\
// / \/ \
// p0 -- m2 -- p2
float3 m0 = .5f * (gin[0].pos_l + gin[1].pos_l),
m1 = .5f * (gin[2].pos_l + gin[1].pos_l),
m2 = .5f * (gin[0].pos_l + gin[2].pos_l);
float3 v[6];
v[0] = gin[0].pos_l;
v[1] = m0;
v[2] = m2;
v[3] = m1;
v[4] = gin[2].pos_l;
v[5] = gin[1].pos_l;
GS_OUT gout;
for (int i = 0; i < 5; ++i)
{
gout.pos_h = mul(float4(v[i], 1.f), g_mat_wvp);
s.Append(gout);
}
s.RestartStrip();
gout.pos_h = mul(float4(v[1], 1.f), g_mat_wvp);
s.Append(gout);
gout.pos_h = mul(float4(v[5], 1.f), g_mat_wvp);
s.Append(gout);
gout.pos_h = mul(float4(v[3], 1.f), g_mat_wvp);
s.Append(gout);
}
不過,我想指定的細分級別。是否有可能再次使用輸出的頂點調用Shader,還是需要採用其他方法?