Custom Vertex Streams 自定义粒子顶点流

做特效经常用到一些流动的光效,流光等等,但是为了某些需要,需要粒子发射过程中,控制材质的变化参数
(比如控制光效流动)故unity提供了一个自定义的顶点流功能接口如下图所示:

代码部分:
在这里插入图片描述
顶点数据传入代码块,
其中包括渲染的基本数据,包括顶点坐标数据,顶点颜色数据,(顶点法线数据等等)
其中TEXCOORD是寄存器,其中TEXCOORD0可能即将存放的是uv数据(为什么是可能,因为
要看它到底后面存放什么数据,如果它用来在后面计算了uv坐标,
float2 uv_MainTex = i.ase_texcoord1.xy * _MainTex_ST.xy + _MainTex_ST.zw;那么它是存放uv数据,
如果它纯粹用于数据计算,就是存放其他数据)
,然后如果需要,可以设置更多TEXCOORD 1、2、3…
然后TEXCOORD1就是存放了我们自定义的数据,这个数据对应了粒子系统中的Custom1.xyzw
在这里插入图片描述
需要注意的是:

问题1
Custom Vertex Streams 下面的参数,要与代码块里面的字段对应起来,不然粒子会报错,像这样:
在这里插入图片描述
因为一套uv只需要2维数组,所以我用uv2又让其把TEXCOOORD0的数据占满。
接线来用Custom1.xyzw占用TEXCOORD1占满

我发现代码的排列也不能乱,不然粒子也会爆红,一一对应起来
在这里插入图片描述
问题2:
如果顶点色没有被片源着色器计算,也会报错:(解决方法,把顶点色数据在片元着色器里计算上即可)
在这里插入图片描述
然后我又尝试在ASE里面用节点方式来实现自定义顶点流,设置如下图所示:
在这里插入图片描述
reference 设置为None
UV Set设置为2(如果设置为1,那么就跟第一套TEXCOOORD0冲突了,必须要重新开辟新的TEXCOOORD1)

这是自己的分析,如有错误,欢迎指出来

这只是一个简单的控制水平UV 的x分量效果,要实现更加复杂的效果,要看美术的具体需求
在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值