前言
最近学习Shader的过程中,发现了一个问题,顶点偏移后转换到裁剪空间的效果和顶点转换到裁剪空间后再偏移的效果不同,写下此文,供同学者参考。
正文
1.顶点偏移后转换到裁剪空间的效果
关键代码:o.pos = UnityObjectToClipPos(v.vertex + _Vec)
2.顶点转换到裁剪空间后再偏移的效果
关键代码:o.pos = UnityObjectToClipPos(v.vertex) + _Vec
可以看到,1的效果会出现三角面缺失的情况,而2不会,后经查询,参考这里,原因为:图元装配阶段在几何阶段之后,也就是说三角面的计算发生在顶点转换到裁剪空间之后。
参考下图: