其实unity shader除了vertex shader和frag shader之外,还有一个geom shader,处理流程在vextex shader和frag shader之间
首先 [maxvertexcount(num)]这个必须写在geomshader前面,是不可少的,主要是定义输出顶点的最大数量,输出顶点可以每次都不同,但是不超过这个数就行,注意这个数不要太大,影响性能哦
然后geom shader里面有两个参数,一个输入的一个输出的,(其实不止两个,不过大部分情况下只考虑这两种就可以了),输入参数有下面几种
1:point 输入图元为点
2:line 输入图元为线
3:triangle 输入图元为三角形
4:lineadj:输入图元为带有邻接信息的直线,由4个顶点构成4条线
5:triangleadj:输入图元为带有邻接信息的三角形,由6个顶点构成
输出类型
PointStream<OutputVertexType>
LineStream<OutputVertexType>
TriangeStream<OutputVertexType>
当你希望输出一个三角形列表时,应该没输出三个顶点就执行一次triangeStream.RestartStrip();
下面是一个例子
Shader "Custom/GeomShader"
{
Properties
{
_MainTex("Texture", 2D) =