type
status
date
slug
summary
tags
category
icon
password
本篇笔记主要介绍了在Unity引擎中实现遮罩纹理效果的基础实现方法。
📝 正文
基本思路
1. 准备两张图片,一张图片作为主纹理,另一张图片作为遮罩,通过两者的像素相乘运算实现叠加效果:


- 使用Panner(平移)节点,并添加UV坐标节点和Vector2节点,用其控制纹理的UV位移:

以同样的方法也可以对遮罩纹理进行实时的偏移(具体实现原理在总结部分)
- 添加一个Color属性,控制最终输出的颜色值:

- 保存Shader,并应用到材质和模型上,在窗口中查看渲染效果:


最终节点图

其他注意点:
还需要在ASE编辑器中设置以下内容


总结
遮罩纹理涉及到的核心知识主要是数字图像处理中的【图像的代数运算】,在本例中就是用图像的乘法实现遮罩效果,即Multiply结点处的运算;
遮罩纹理中的透明像素(透明度等于0)和主纹理中对应位置的像素相乘后,相当于“0乘以任何一个数都等于0”的效果,因此这部分像素就好像被“遮住”了,因此出现了遮罩效果;
另外,Color节点也是利用像素乘法使得我们可以控制最终输出的颜色值,例如将Color设置为(1,1,1,1)即白色,那么进行像素乘法后的结果就相当于“1乘以任何一个数都等于它本身”,也就是仍然保持原本的图像输出。
第二点就是关于Panner平移节点的使用,它的主要功能如下:

虽然这是UE中的节点,但与ASE基本一致,在本例中我们就是传入模型的UV坐标,然后使用一个Vector2变量来控制UV坐标平移的方向和速度(注意,向量既包含大小也包含方向),这样就能让纹理的UV坐标发生偏移,得到想要的效果了。
🤗 总结归纳
在该案例中,主要涉及到对纹理像素以及UV坐标的处理,还有一些渲染管线的零散知识点,难度较低,适合前期快速上手尝试,了解Shader渲染的一些基本过程。
📎 参考文章
关于图像的代数运算,可以参考文章:
有关UnityShader与图形渲染的相关问题,欢迎在底部评论区留言,一起交流~
- 作者:Damier
- 链接:https://notion-next-coral-eta.vercel.app/article/article_2
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。