Unity Shader unity文档学习笔记(二十一):几种草体的实现方式(透明度剔除,GPU Instaning, 曲面细分+几何着色器实现)
1.透明度剔除(性能较差,不同颜色时需要不同材质会导致多个dc)
clip(_Color.a - _Cutoff); 传入值为0时 剔除
类似的草体效果:
2.GPU Instaning(可以自定义一次性合批最多1023个,能够传递颜色值等等(做草体融入地形等等效果),不会额外产生DC)
Graphics.DrawMeshInstanced
效果:
3.曲面细分+几何着色器实现(适合大世界,方式2如果是大世界的话 草体数据会非常多,不太适用)
了解一下渲染管线
主要是在红框的阶段处理
曲面细分着色器(用来增加顶点):
几何着色器:
对每个顶点进行操作,可以修改一整个三角形(和顶点着色器的区别是:顶点是只能改一个独立的顶点,这个是改一整个独立的三角形或者四边形),输出一个草体三角形
曲面细分+几何着色器结合:
调整曲线细分次数:
细分次数2
细分次数5
参考:
Grass Shader翻译及实现(草地渲染): Grass Shader翻译及实现(草地渲染)
曲面细分和几何着色器链接:链接: 【百人计划】图形 3.3 曲面细分与几何着色器 大规模草渲染