草地shader一直是shader效果的热门主题,实现草地效果,结合了集合绘制,顶点动画,光照很多shader编程的技巧,这里总结一下我在网上查到博客的几种实现方案。

我居然拖了一年还没有写完,woc,反正也没有人看,先发一个。


第一位是chenjd,一位中国博主,提供了一个完整项目和中英说明博客,详细介绍了自己的方法。
他先使用GeometryShader绘制出草的Mesh,这需要在代码中计算每个草节点的顶点和UV。
他做的草是长方形,然后通过一个alpha贴图控制草的外形。
然后通过一张高度图,画了一个地形,地形的每个顶点都要计算。
然后在每个顶点上产生草根的位置,在每个草根的位置上产生一根草。

博客教程:利用GPU实现无尽草地的实时渲染 - 慕容小匹夫 - 博客园

GitHub地址:https://github.com/chenjd/Realistic-Real-Time-Grass-Rendering-With-Unity


第二位IronWarrior,他提供了一个完成项目和一个英文教程。他还提供了卡通水的教程,很有价值。
他写了一个很好的教程博客,你可以按照他的指导一步一步完成。
他也使用GeometryShader,绘制草,他绘制的草就是草的形状。

博客教程:Unity Grass Shader Tutorial - Roystan

GitHub地址:GitHub - IronWarrior/UnityGrassGeometryShader: Source code for Grass Shader tutorial for Unity. Generates blades with a geometry shader, tessellates input mesh to control density.


第三位是ColinLeung-NiloCat,是一位二次元大佬。
他提供了一个完整项目,该项目是在URP上实现的,他使用DrawMeshInstancedIndirect()绘制,表现出很好的性能。草地基于相机裁剪,草地可以和人物互动怎么画的还需要研究

Github地址:https://github.com/ColinLeung-NiloCat/UnityURP-MobileDrawMeshInstancedIndirectExample


第四位是WalkingFat,他提供了一个博客,包含demo试玩和代码,但是不能拷贝代码。
他的方案应该是最简单的,但是效果很好,草地可以和人物互动。
他的草是独立的mesh,提前做好的。人物坐标通过C#输入shader,然后草地做出对应效果。

博客地址:http://walkingfat.com/dynamic-grass-%e5%8a%a8%e6%80%81%e8%8d%89%e5%9c%b0%e5%88%b6%e4%bd%9c/


最后一位是,一个油管大佬,提供了一套基于URP的教程视频,但是没有提供项目。
视频详细讲解了GeometryShader,ComputeShader以及使用他们来绘制草地
他通过多种方式实现草地,包括shadergraph,可以全面了解草地模拟这个技术。

youtube地址:https://www.youtube.com/watch?v=JDpt9xYaUYc

相信通过以上的教学内容,你可以制作出自己的生草shader

Compute shader

ComputeShader把本该CPU的处理高并行处理任务转移到GPU,在特定任务上更高效,如用来生成贴图或者模拟数据。
GPU有数百个线程而且容易实现多线程
computeShader由HLSL或CG写成,由C#脚本dispatch(),执行。
ComputeBuffers显卡上的一块显存,用来在CPUGPU之间传递数据
Data流向:C#Script->SourceGeometryBuffer->ComputerShader->DrawGeometeyBuffer->
GraphicsShader->Screen

Geometry shader

Gshader运行在顶点着色器之后,片元着色器之前,Gshader可以增删改顶点着色器的三角面数据。
GeometryShader不能在苹果设备上运行,相比之下,computeShader的性能更好。

生艹的过程。

生草shader的几种方法总结相关推荐

  1. JavaDoc生成文档的两种方法

    第一种方法:在cmd中使用命令实现 1.选中要生成JavaDoc文档的java文件,单击右键选中Open-->Explorer,就会到达java文件的目录文件中: 2.如图所示,在文件目录前输入 ...

  2. Unity之Shader Pass 通道显示贴图的几种方法- 六

    Pass 通道显示贴图的几种方法 下面是几种显示模型贴图的方法,在此使用的是固定管线方法 方法一 Shader "Custom/PassOne" {Properties {//定义 ...

  3. 求母牛生小牛函数c语言,编程求解以下问题 若一头母小牛,从出生的第四个年头开始每年生一头小母牛,按此规律,第n年时有多少头母牛?(要求用两种方法)...

    满意答案 zoav7 2015.10.15 采纳率:59%    等级:7 已帮助:962人 //第一种方法 int n = 100; //假设n=100 int[] Group = new int[ ...

  4. 教你几种方法最大限度减轻酒精对你身体的伤害

    郑重告知:新婚期间新娘新郎别喝酒!有证据表明,酒精摄入过多会对胎儿发育产生不良影响,甚至会产下畸形儿!切记切记! 人在江湖身不由己,"面对亲戚朋友的推杯换盏我怎么好拒绝?!" 那么 ...

  5. 伤疤好了有黑印怎么办_疤痕留下黑印怎么办 不妨试试这四种方法

    疤痕留下黑印怎么办 不妨试试这四种方法更新时间:2018-06-23 核心提示: 疤痕好转后可能会留下一些黑印,而去除这些黑印的方法也比较多,比如按摩可以促使局部血液循环速度加快,起到消除色素沉着的作 ...

  6. 点击表头排序的几种方法 动态表格

    我记得老早老早大家就开始在经典讨论表格排序的问题了,过了这么多年,这个问题的解决方案层出不穷,见仁见智. 用script,htc,xml+xsl等等怎么着都能实现,只是效率不同罢了. 今天正好学习.n ...

  7. 在R中子集化数据框的5种方法

    由于微信不允许外部链接,你需要点击文章尾部左下角的 "阅读原文",才能访问文中链接. 通常,我们在使用大型数据集时,只会对其中的一小部分感兴趣,用以进行特定分析. 那么,我们应该如 ...

  8. MPB:林科院袁志林组-提取杨树人工林土壤微生物菌体细胞的4种方法

    为进一步提高<微生物组实验手册>稿件质量,本项目新增大众评审环节.文章在通过同行评审后,采用公众号推送方式分享全文,任何人均可在线提交修改意见.公众号格式显示略有问题,建议电脑端点击文末阅 ...

  9. 独家 | 使EfficientNet更有效率的三种方法(附链接)

    作者:Dominic Masters翻译:王可汗校对:欧阳锦本文约3300字,建议阅读5分钟本文为大家介绍了提升EffcientNet效率和性能的三个策略. 在实践中有更好性能的EfficientNe ...

最新文章

  1. Oracle-ORA-01722 invalid number错误
  2. java getselectedrow_Java swing(2)自己设计完善的独特功能图书管理系统,获取下拉框等的文字内容等...
  3. java 生成校验验证码_java 验证码生成与校验
  4. python基础——可变长参数
  5. mysql维护计划 自动备份_MysQL windows 下自动备份,同时加入计划任务脚本
  6. CSS3产生渐变效果
  7. 联想thinkpadE14 vm蓝屏问题解决
  8. 工资纳税系统c语言编程加注释,基于C语言的个人所得税计税系统
  9. 诺基亚S40系统手机使用技巧大全(此乃刘某整理)
  10. Mysql区分大小写问题
  11. 2020武理计专上岸,拿下一等奖学金的曲折经历分享
  12. 修改封装系统的默认壁纸、锁屏和OEM信息
  13. 抽奖概率 php_php实现抽奖概率算法代码
  14. CF235C Cyclical Quest
  15. jquery的插件有哪些
  16. 单片机C语言流水灯花样编程,单片机C语言程序设计:花样流水灯
  17. 哈希函数(hash函数)
  18. Promise深入剖析
  19. Redis学习笔记(十八) 集群(下)
  20. EmguCV OCR识别实例演示与代码--Tesseract数字识别

热门文章

  1. at89c52串口通信c语言程序,AT89C52DEMO 基于51单片机的(89C51/52)C语言源码例程 - 下载 - 搜珍网...
  2. 计算机平面设计论文范,计算机平面设计论文
  3. Slf4j报错:No SLF4J providers were found.
  4. 转载: PostgreSQL SQL的性能调试方法2--数据库log分析
  5. wp门户新闻主题下载免授权自适应大门户WordPress主题
  6. 中序后序建树(C/C++)
  7. springboot log4j:WARN No appenders could be found for logger
  8. 全方位对比Mesos、Omega和Borg
  9. 网上支付平台接口使用总结
  10. 《网络协议》TCP 的成块数据流