在Unity中,我计划使用几何着色器将点处理为四边形,但无法弄清楚为什么我没有从几何着色器获得输出。我将其编辑为一个最小的工作示例,如下所示:
Shader "foo/bar"
{
SubShader{
Cull Off
Lighting Off
ZWrite Off
Pass{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma geometry geom
struct appdata {
float4 vertex : POSITION;
};
struct v2g {
float4 vertex : POSITION;
};
struct g2f {
float4 vertex : POSITION;
};
v2g vert(appdata v) {
v2g o = (v2g)0;
o.vertex = v.vertex;
return o;
}
[maxvertexcount(4)]
void geom(point v2g p[1], inout TriangleStream<g2f> tristream)
{
g2f o = (g2f)0;
o.vertex = float4(0.1, 0.1, 0, 0);
tristream.Append(o);
o.vertex = float4(0.1, 0.9, 0, 0);
tristream.Append(o);
o.vertex = float4(0.9, 0.9, 0, 0);
tristream.Append(o);
}
fixed4 frag(g2f i) : COLOR
{
return fixed4(1,1,1,1);
}
ENDCG
}
}
}
我希望能绘制一个白色三角形,覆盖正要渲染的纹理的一半以下。相反,它显示所有黑色,就像在着色器之前一样。
到目前为止,我已经:
我全都没主意。如果有人对我做错了什么甚至有一点头绪,请告诉我。谢谢。
-Fraser