效果图
这次着重解析下 SampTexture 的特点和用法。
模块解析
点开进去是这样,其实非常简单。根据给定的 UV 值,对贴图进行采样,然后将采样的颜色储存到 SampleColor 属性中,将这次 UV 储存到 SampleUV 中。所以,我们可以通过遍历 UV 来对图片上的颜色进行保存,可以随机遍历也可以顺序遍历。
实现结构
因为做贴图采样, 请先把粒子类型改成 GPU
- 新建 UV 变量,然后设置成随机值,相当于随机遍历 UV 了,每个粒子的 UV 属性都会不同。
PS:这里可以写个模块根据粒子生成序号来有序遍历。
-
SampleTexture模块,附上贴图,同时将 Particle 属性赋给 UV 栏。 -
新建一个模块来根据 UV 设定位置,Chris 讲座中用的表达式实现,这里写了个模块,主要是可以扩展以及更方便的调试大小等属性,内部逻辑如下:
- 将采样的颜色设置给
Color模块。
一些应用的拓展
1. 使用贴图采样数据更新粒子位置
图形学的领域里,颜色 = 向量。贴图记录位置是常规操作, Niagara 提供贴图采样意味着我们可以使用伪3d贴图实现连续波动的粒子,或者使用场景深度反推粒子位置 —— Chris的讲座就是这样做的,等一系列在 Shader 中常用的实现。
比如这里用一个简单噪波图来控制粒子高度:
只是在 UVLocation 模块中修改了一点逻辑修改后逻辑如下:
红框是新增部分,采样颜色的 R 通道,加上原来的 z 值最后给粒子位置。
2. 搭配 RT 实现各种脑洞
Chris 讲座中利用 CaptureCamera 采场景深度,然后重投射世界位置实现了全息投影特效。
同样思路可以把 CaptureCamera 绑到玩家相机上,采样深度,实现全场景生成特效,类似量子破碎那种场景物体上冒出碎片的效果。
3. 采模型对象的 UV 图和颜色,搭配模型位置实现角色各种效果
可以直接通过粒子构成角色。或者对角色某些部件做定制粒子效果。
肯定还有些其他用法,希望大家有想法多多交流~
END~