URP-BoatAttack项目研究

前言

BoatAttack 示例地址,这个项目是unity官方用来展示URP功能的开源项目。

山崖的渲染分析

  • 山崖上方的草(Grass Mask):用一个Grass Height Blend属性,来控制长草的最低高度和最大高度,从而对草生长的高度进行了限制;然后前面的高度结果与岩石法线在世界空间中的Y坐标相乘,然后引入一个Grass Angle属性,来控制长草的最小角度和最大角度;这样就能得到需要长草的范围和不需要长草的范围。(草的覆盖跟雪的覆盖差不多?)

植被的渲染分析

  • 植被的动画和着色,这里参考的是《GPU Gems 3》里面的第16章Crysis 中植被的程序化动画和着色(Vegetation Procedural Animation and Shading in Crysis)。主弯曲还是很容易把书上的代码和这里的代码对应起来的,细节弯曲好像不太一样,需要再多看看,可以采用倒推的方式看,比如从SmoothTriangleWave这个函数倒推。
  • 需要注意的是:1.书上的Y和Z坐标,与这里的Z和Y坐标对应。2.计算vWaves时这里没有像书中用frac。
  • 网上的一篇可以参考的文章和对应的视频。这篇文章相当于在详细解释GPU GEMS里面的动画部分的内容,说的比较详细。
  • 知乎上的一个问题也提到了这个。
  • 植被也做了LOD,距离近的是非billboard版本,距离远的是billboard版本。用的都是同一个shader。
  • (动画部分细节,以后再看)(着色部分似乎也是根据GPU Gems 3那文章上做的,具体以后再详细看)

房屋的渲染分析

  • 这里的房屋渲染有个特别之处:会根据时间是白天还是晚上进行调整。晚上会让房屋的窗户亮起来,模拟房屋开灯的效果。挺有意思的。
  • 窗户亮的效果是通过把全局的时间(DayNightController.cs里面的time,time发生变化的时候就会实时同步到shaderd的_NightFade参数)作为参数引入,然后通过Emission自发光来做。

云的渲染分析

模板使用的Unlit Graph。

  • Vertex Normal:法线部分看的不太明白。

扩展阅读资料

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦