先上最终效果:

https://v.qq.com/x/page/e0777z5hbqa.html

1.用程序生成草地网格

1.1为什么使用程序生成而不使用美术提供的网格

要在移动端进行大规模草的渲染,首先要考虑的就是性能问题。对于草的渲染,目前肯定要采取的手段是批处理。就是一次性提交所有的草体到gpu进行渲染。目前主流的批渲染有三种方式,具体如下:

1)动态批处理

这也是渲染草的最简单的方式,只需要美术提供一根草的模型和贴图,程序通过自己的代码去控制草的数量和位置,然后依赖Unity自带的动态批处理系统,你可以看到所有的草体都是一次性提交渲染的。但我却非常不推荐这样的方式。因为动态批处理其实是每一帧都对这些草的网格进行动态合并,也就是说需要不停的新建一个大网格,然后去填充所有的草体数据,这样不仅会造成大量的gc,而且草的数量过多的话,可能会把性能瓶颈转移到草的合并过程上,这是下策。

2)静态批处理

这和动态批处理的区别在于你并不是每一帧都去动态合并,而是事先通过设置草体为静态的或者自己通过代码去合并所有的网格。一旦合并之后,就不需要再次合并了。这样合并之后,整个草原可以进行整体的移动,但每一根草是无法单独移动的。另外,Unity自带的静态合并是以SubMesh的方式进行合并的,就是说他们是拆开的一个一个小部分,好处是可以对局部进行隐藏,但带来的性能开销也是需要引起重视的。总体来说会比动态批处理好上不少。

3)Gpu Instancing

这是OpenGL3.0之后的新特性&#x

移动端大规模草渲染的实现相关推荐

  1. 移动端大规模草渲染的实现(精简版)

    先上最终效果: https://v.qq.com/x/page/e0777z5hbqa.html 在群里经常看到草的问题,也会和他们一起讨论.结果现在不得不自己也开始做了,就想把一些东西给汇总一下, ...

  2. 分享《生死狙击2》的大场景草渲染

    重写引擎的草渲染的缘由 1. 效果图 2. 为什么决定重写引擎的草渲染 项目立项较早引擎版本为Unity 5.6,这里讨论Terrain自带草的问题,以及我一一对应的解决方案.以下的问题不是每个都必须 ...

  3. 三维管廊大规模实时渲染方案

    随着 WebBIM 和3D-GIS技术的大力发展,建筑模型的复杂度与构件数量呈几何倍数增长,其中管廊复杂网格是影响模型轻量化和在线渲染速率的一个关键性问题.为有效减少管廊复杂网格模型的数据量及复杂度, ...

  4. 移动端草海的渲染方案(一)

    塞尔达草海的模仿 塞尔达的草海 让人印象深刻,忍不住又要背诵台词: 我想起那天下午夕阳下的奔跑,那是我逝去的青春. 好了,现在回来. 如果尝试用unity内置的地形草来还原上图效果,我们会发现有点力不 ...

  5. [工作积累] 大型世界的草渲染

    最近工作在研究如何在大型世界的植被(主要是草)的渲染,主要考虑下面几个问题: 1.半自动化procedual生成,密度分布,画刷 2.受环境的的影响(风,角色等) 3.LOD和动态加载释放 由于睡觉后 ...

  6. 美摄云非编系统——网页端实时编辑渲染方案

    美摄云非编是一款新型网页端非线性编辑工具,应用WebAssembly技术实现网页端直接渲染图像.本次LiveVideoStackCon 2020线上峰会我们邀请到了北京美摄网络科技有限公司的研发总监黄 ...

  7. 3D开发工具HOOPS最新解析合集,助力实现web端高性能模型渲染

    一.3D技术为创新提供强大助力 不管您想搭建桌面.WEB或者移动端APP应用,技术领先全球的HOOPS Platform组件都可以为您提供弹性的3D集成架构,同时,一批可信任的工业领域3D技术专家也将 ...

  8. 在线非线编系统——网页端实时编辑渲染方案

    本次我分享的主题是云非编系统,是一种web端视音频实时编辑渲染方案. 本次内容分为五个部分: 是美摄云非编方案的技术背景,也就是目前web端视音频编辑的现状以及我们采用新方案的原因: 是美摄云非编的技 ...

  9. UE5引擎 PC端的Landscape渲染浅分析

    前言 游戏目前发展趋势是大世界,而大世界必不可少的元素是大地形,UE引擎从地形系统有完善的渲染管线和工具链. Landscape的创建 UE的地形在LanscapeMode进行创建,如下所示 地形创建 ...

最新文章

  1. R语言使用ggplot2同时可视化dataframe的多个数据列实战:多个数据列可视化在同一个图中、多个数据列可视化在多个图中(纵向多个子图)
  2. 电脑硬件学习(主板,CPU,内存,硬盘,显卡)
  3. Python微型Web框架Bottle源码分析
  4. Python中字符串的截取,列表的截取
  5. 动态代理-JDK_proxycglib
  6. 实现一个 WPF 版本的 ConnectedAnimation
  7. 软件生成目录没有图框_图纸目录和编号
  8. system.img格式打包学习
  9. 超级简单:在你的ASP.NET页面自定义列表和分页
  10. 记录一次bug解决过程:eclipse Installed JREs 配置引出的问题
  11. CSS各种选择符的优先级
  12. 驻定相位原理(POSP)的简单应用
  13. POJ2243 Knight Moves —— A*算法
  14. 计算机专业英语怎么翻译,计算机专业英语翻译(附件).pdf
  15. 命令行设置dns_dos命令netsh图文教程,设置修改IP地址子网掩码网关命令行改dns...
  16. 右侧快速入口滑动时左侧跟着变化
  17. 如何应对被地下的Oracle口令加密算法(2)
  18. 2016年3月8日----Javascript的函数
  19. ERNIE 3.0 | 刷榜了!60多项任务取得最好效果
  20. 在Ubuntu 18.04上安装tesseract 4.1.1

热门文章

  1. echarts南海诸岛问题
  2. JUnit 生命周期方法
  3. android什么控件能够输入多行文字,Android开发:文本控件详解——EditText(一)基本属性...
  4. 高中生编程_高中生是否必须参加编程课程?
  5. 最低仅3999元 6款热门超值本本推荐
  6. 文字转语音软件在哪里下载
  7. 二维图形的几何变换矩阵推导与齐次方程的深入理解
  8. windows安装kafka 2.8.1以及创建主题(topic)生产者和消费者消息接收和发送
  9. 家谱整站源码php_关系树族谱echarts +php
  10. Zeal超强软件开发人员编程手册管理软件