添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
任性的大脸猫  ·  email - ...·  1 年前    · 
英俊的羊肉串  ·  The supplied data ...·  1 年前    · 
失恋的面包  ·  Tkinter ...·  1 年前    · 

URP练习:多Pass毛发shader

专栏 / URP练习:多Pass毛发shader

URP练习:多Pass毛发shader

2020-09-21 00:20 --阅读 · --喜欢 · 凉虾目鱼仔
粉丝: 42 文章: 2

这部分的文章知乎上已经比较多了,参考我放到后面,这里只是简单的提一下整个实现思路。

该方法最主要的步骤就是将模型延法线法向挤出,每次挤出一个微小的比例,这样循环多次后便可以得到最初始的效果(可以理解成复制了N次模型,每一次都沿轴心放大一定的比例)。

复制的次数不够的时候很容易造成失真

只进行这一步操作的话其实只是让模型看上去更“臃肿”了,想要得到毛发效果就必须使用一张noise贴图控制每层模型的Alpha

Noise贴图
RenderFeature输入FurOffset要方便许多

做这个主要是想学习一下Urp RenderFeature的使用,因为Built-in管线中没有办法通过设置每层毛发的偏移系数(FurOffset),因此如果需要做20层毛发的话需要手动复制20层vert与frag,分别给其中的FurOffset赋值。而使用URP配合RenderFeature可以做到for循环输入偏移值,修改层数和偏移值会十分方便。可以通过SRP对多个毛发材质进行合批操作,缺点就是场景中的同一个LightMode的层数都是一样多的。

目前实现的功能:

  • 自定义的层数控制

  • 自定义的毛发渲染模型

  • FlowMap与Gravity控制

  • 根据Pass绘制假AO

  • 阴影投射与接受

  • SRP合批

最终效果

代码写的丑,后续会进行完善。

https://github.com/shyaZhou/Demo

参考

https://mp.weixin.qq.com/s?__biz=MzI3MTQzOTY3OQ==&mid=2247488264&idx=1&sn=262a1800172f00553c43001e8b2e0b90&chksm=eac09158ddb7184e913cd9832057d09d7e7a6666c1f158f9822a04ddf2369d7b9d0db4b068a3&mpshare=1&scene=23&srcid=#rd

https://zhuanlan.zhihu.com/p/57897827

https://zhuanlanzhihu.com/p/147988824

Unity URP源码

感谢Colin大佬和草泥马大佬的帮助


投诉或建议