好几天没有更新了,来个比较常用的需求,在unity里去除三角边的线框显示,老规矩先来个图
具体的线框连接方式、线框颜色、还有常用的模型生长,可以在材质面板里任意配置
微信号:ITComputerGraph
更多精彩内容:关注公众号《IT木子李》
下面上代码+讲解
顶点着色器很简单,把顶点输出到几何着色器就可以了
GS_INPUT VS_Main(appdata_base v)
{
GS_INPUT output;
output.pos = v.vertex;
return output;
};
主要工作在几何着色器 ,把三角面做为输入,输出线框。分别判断每一条边是否需要连接,如果需要就输出这个流信息
[maxvertexcount(3)]
void GS_Main(triangle GS_INPUT p[3], inout LineStream<FS_INPUT> triStream)
{
FS_INPUT output;
float index = 0;
if (_LineOne)
{
output.objPos = p[index].pos;
output.pos = UnityObjectToClipPos(p[index].pos);
triStream.Append(output);
}
index += 1;
if (_LineTwo)
{
output.objPos = p[index].pos;
output.pos = UnityObjectToClipPos(p[index].pos);
triStream.Append(output);
}
index += 1;
if (_LineThree)
{
output.objPos = p[index].pos;
output.pos = UnityObjectToClipPos(p[index].pos);
triStream.Append(output);
}
}
片元着色器也很简单,把颜色输出,加一个裁剪控制就好了
float4 FS_Main(FS_INPUT i):COLOR
{
clip(i.objPos.y - _Height);
return fixed4(_Color);
}