写在前面
最近本专业开始多很多事情了,要开始建模写论文了(不然研究生毕不了业),TA方面的学习进度更慢了,,so sad。
废话不多说,这篇文章其实是个小总结,毕竟学习新东西就是先要当一只copy cat(不是)。
至于草地交互,把草地做出来再说!
1 基于物理(无合批)
2021.5 【Unity】ShaderGraph制作卡通草地教程
这个实现方法是非常基础的、基于物理的。我理解的“基于物理”是:用一个个小面片实现一根根草的效果,复制,实现草地。这种方法十分耗性能。
2021.3 风格化草地制作过程 Part.2 在Unity中实现草的Shader以及使用Unity内置地形工具刷草
这个教程也是,首先在Blender里做好一丛草的模型,导入Unity着色好后,
再结合Terrain在地形上刷草。
2 曲面细分+几何着色器
【技术美术百人计划】图形 3.3 曲面细分与几何着色器 大规模草渲染
首先贴个大家都很熟悉的百人计划里介绍曲面细分和几何着色器的视频。
2018.3 Unity Grass Shader Tutorial (roystan.net)
这篇文章利用几何着色器输入三角形(一根草)后再生成多个草,然后曲面细分着色器控制草的密度。
菜鸡都能学会的Unity草地shader - 知乎 (zhihu.com)
这篇文章算是复刻了上述文章的方法。
Geometry Grass Shader for URP | Patreon 上的 Minions Art
这是Minions大佬实现的草地,关于草shader部分也是参考了Roystan的方法,不同的是这是个URP下的Shader(带URP玩,妙!),不仅如此,Minions还通过脚本实现了在Mesh刷草地的Tool,Youtube链接及具体的文章如下:
2020.7 【Unity Shader】草地制作教程
Unity | I made an Interactive Grass Shader + Tool
搭配的文章:https://www.patreon.com/posts/grass-geometry-2-40077798
3 Computer Shader
Unity | I made a better Interactive Grass Shader + Tool
搭配文章:Compute Shader Interactive Grass + Updated Painter Tool | Patreon 上的 Minions Art
仍旧是Minions,她考虑到Geometry Shader不被Windows以外的平台支持,选择用了适用于多平台的Computer Shader替代Geometry Shader再来实现一次草地。
4 基于GPU Instancing
基于GPU Instance的草地渲染学习笔记 | 烟雨迷离半世殇的成长之路 (lfzxb.top)
传递一个Mesh(草片),指定绘制次数和材质,Unity在GPU开辟好缓冲区以指定材质对Mesh进行指定次数的渲染,达到一次Drawcall绘制海量对象的目的。
这跟第1小节的方法有点相似,不同的是第1小节纯粹是绘制多少个草的mesh就要传递多少次数据,对于大世界草地来说性能一定是吃不消的,GPU Instancing只需要从CPU传递一次数据,效率上直接飞升。
5 优化*
说白了就是根据距离划分层次节省性能,按距离分成近景中景和远景,三个层次的草用不同的方式渲染。
除了优化其实还有草的交互,先码一个对交互挺好的实现:UE5手撸交互草Shader教程支持移动端(上)
目前来说首先会把重点放在草地的实现上。
废话说完了,开始实现!