> 技术文档 > 【推荐100个unity插件】完全程序化且动态的 性能极佳的Unity URP 物理交互草地——UnityURP-InfiniteGrass的使用_unity parallax grass

【推荐100个unity插件】完全程序化且动态的 性能极佳的Unity URP 物理交互草地——UnityURP-InfiniteGrass的使用_unity parallax grass


文章目录

  • 前言
  • 插件下载安装
  • 使用方法
    • 1、进入你的 URP 设置,将\"GrassDataRendererFeature\"添加到其中。
    • 2、添加地面,并配置地面层和前面一致
    • 3、接下来,在您的场景中创建一个空对象,并将\"InfiniteGrassRenderer\"脚本添加到该对象上。
    • 4、效果
    • 4、在Unity6使用
  • 扩展知识
    • 1、完全程序化
    • 2、视锥体剔除和随距离降低密度
    • 3、动态颜色调节器
    • 4、风浪
    • 5、动态遮罩和密度
    • 6、 动态坡度
    • 7、风系统
    • 8、风格化 billboard广告牌 草
  • 专栏推荐
  • 完结

前言

UnityURP-InfiniteGrass用于 Unity URP 的完全程序化和动态草地。这是一个旨在快速实现的草地系统,无需任何烘焙或静态环境。只需启用它,给它您希望它出现的对象的 LayerMask,所有内容都会程序化绘制。

插件下载安装

  • github地址:https://github.com/Youssef-Afella/UnityURP-InfiniteGrass
  • gitee地址:https://gitee.com/unity_data/UnityURP-InfiniteGrass

【推荐100个unity插件】完全程序化且动态的 性能极佳的Unity URP 物理交互草地——UnityURP-InfiniteGrass的使用_unity parallax grass
只需将\"InfiniteGrass\"文件夹拖到你的项目中即可,如果你想看到demo可以将\"SampleScene\"一起导入进项目。

使用方法

1、进入你的 URP 设置,将\"GrassDataRendererFeature\"添加到其中。

【推荐100个unity插件】完全程序化且动态的 性能极佳的Unity URP 物理交互草地——UnityURP-InfiniteGrass的使用_unity parallax grass

  • 选择你的地形网格的 LayerMask。
  • 配置材质和计算着色器(包含在文件夹中)

2、添加地面,并配置地面层和前面一致

【推荐100个unity插件】完全程序化且动态的 性能极佳的Unity URP 物理交互草地——UnityURP-InfiniteGrass的使用_unity parallax grass

3、接下来,在您的场景中创建一个空对象,并将\"InfiniteGrassRenderer\"脚本添加到该对象上。

配置草材质(包含在文件夹中),并调整设置直到您满意为止。
【推荐100个unity插件】完全程序化且动态的 性能极佳的Unity URP 物理交互草地——UnityURP-InfiniteGrass的使用_unity parallax grass

4、效果

【推荐100个unity插件】完全程序化且动态的 性能极佳的Unity URP 物理交互草地——UnityURP-InfiniteGrass的使用_unity parallax grass

4、在Unity6使用

如果你想在unity6中使用它的话,经过前面的步骤大概率会看到一条警告,而且草也没有生成出来。

The render pass GrassDataRendererFeature+GrassDataPass does not have an implementation of the RecordRenderGraph method. Please implement this method, or consider turning on Compatibility Mode (RenderGraph disabled) in the menu Edit > Project Settings > Graphics > URP.Otherwise the render pass will have no effect. For more information

【推荐100个unity插件】完全程序化且动态的 性能极佳的Unity URP 物理交互草地——UnityURP-InfiniteGrass的使用_unity parallax grass
解决方案就如提示所说,前往项目配置,打开Compatibility Mode (RenderGraph disabled)
【推荐100个unity插件】完全程序化且动态的 性能极佳的Unity URP 物理交互草地——UnityURP-InfiniteGrass的使用_unity parallax grass
这时会有新的警告,但是我们不用管,因为草已经生成出来了并不影响我们项目的使用

扩展知识

1、完全程序化

你不需要有高度图或使用 Unity 地形,只需通过更改 LayerMask,你就可以将草放在任何物体上。此外,它不需要生成整个世界位置的大型缓冲区,它仅生成相机周围必要数量的位置,因此内存不是一个大问题。
【推荐100个unity插件】完全程序化且动态的 性能极佳的Unity URP 物理交互草地——UnityURP-InfiniteGrass的使用_unity parallax grass

2、视锥体剔除和随距离降低密度

它允许你在较远的距离上以较低的性能成本进行绘制。
【推荐100个unity插件】完全程序化且动态的 性能极佳的Unity URP 物理交互草地——UnityURP-InfiniteGrass的使用_unity parallax grass

3、动态颜色调节器

它允许你使用任何你想要的物体或纹理来修改草叶的颜色。要制作自己的颜色调节器。

从\"InfiniteGrass/Modifiers/GrassColoringShader\"创建一个新的材质,给材质添加纹理和颜色。

最后,将一个四边形网格添加到你的场景中,并将材质应用到它上,你可以像 Decal 一样,以任何比例或旋转将物体放置到你想要的位置。
【推荐100个unity插件】完全程序化且动态的 性能极佳的Unity URP 物理交互草地——UnityURP-InfiniteGrass的使用_unity parallax grass

4、风浪

在使用\"InfiniteGrass/Modifiers/GrassColoringShader\"着色器时,与粒子系统一起使用也没有问题,实现风浪的效果。

粒子效果如下
【推荐100个unity插件】完全程序化且动态的 性能极佳的Unity URP 物理交互草地——UnityURP-InfiniteGrass的使用_unity parallax grass
【推荐100个unity插件】完全程序化且动态的 性能极佳的Unity URP 物理交互草地——UnityURP-InfiniteGrass的使用_unity parallax grass
效果
【推荐100个unity插件】完全程序化且动态的 性能极佳的Unity URP 物理交互草地——UnityURP-InfiniteGrass的使用_unity parallax grass

5、动态遮罩和密度

就像颜色调节器一样,只需从\"InfiniteGrass/Modifiers/GrassMaskShader\"制作一个材质,并将其应用于一个四边形或任何其他网格。

请注意,这里的“遮罩”的通常含义并不是它的用途,白色表示草将被完全挖掉,黑色表示完全的密度。

您也可以选择不彻底切割草地,而是通过降低材质的\"不透明度\"属性来使密度降低。您的网格的顶点颜色的红色通道也会遮挡草地)。
【推荐100个unity插件】完全程序化且动态的 性能极佳的Unity URP 物理交互草地——UnityURP-InfiniteGrass的使用_unity parallax grass

6、 动态坡度

这里的\"坡度\"指的是草叶的倾斜度。

它只是一个简单的修改器,和其他的一样,只需创建一个材质并将其应用于一个四边形,但这次颜色将描述草叶将指向的方向。

红色控制草叶倾斜到 X 轴的程度(0:它将指向-x,1:它将指向 x,0.5:它将保持向上)。

绿色控制草叶倾斜到 Z 轴的程度(0:它将指向-z,1:它将指向 z,0.5:它将保持向上)。

没有必要使用蓝色通道,因为草叶不能倾斜到 Y 轴(这意味着它只是向上)。

如果想要制作自定义风效、爆炸、踩踏草地等效果,这会很有用。

样本场景中每个都有示例,可以前往查看。
【推荐100个unity插件】完全程序化且动态的 性能极佳的Unity URP 物理交互草地——UnityURP-InfiniteGrass的使用_unity parallax grass
【推荐100个unity插件】完全程序化且动态的 性能极佳的Unity URP 物理交互草地——UnityURP-InfiniteGrass的使用_unity parallax grass

7、风系统

从纹理来的风,类似于\"动态斜坡\",但只是应用于整个草地。下面是默认值
【推荐100个unity插件】完全程序化且动态的 性能极佳的Unity URP 物理交互草地——UnityURP-InfiniteGrass的使用_unity parallax grass

8、风格化 billboard广告牌 草

草叶总是(至少在尝试)从所有角度看起来朝向相机。

这个材质包含很多参数来定制外观。
【推荐100个unity插件】完全程序化且动态的 性能极佳的Unity URP 物理交互草地——UnityURP-InfiniteGrass的使用_unity parallax grass


专栏推荐

地址 【unity游戏开发入门到精通——C#篇】 【unity游戏开发入门到精通——unity通用篇】 【unity游戏开发入门到精通——unity3D篇】 【unity游戏开发入门到精通——unity2D篇】 【unity实战】 【制作100个Unity游戏】 【推荐100个unity插件】 【实现100个unity特效】 【unity框架/工具集开发】 【unity游戏开发——模型篇】 【unity游戏开发——InputSystem】 【unity游戏开发——Animator动画】 【unity游戏开发——UGUI】 【unity游戏开发——联网篇】 【unity游戏开发——优化篇】 【unity游戏开发——shader篇】 【unity游戏开发——编辑器扩展】 【unity游戏开发——热更新】 【unity游戏开发——网络】

完结

好了,我是向宇,博客地址:https://xiangyu.blog.csdn.net,如果学习过程中遇到任何问题,也欢迎你评论私信找我。

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!
在这里插入图片描述