ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Unity学习shader笔记[二十五]SG电视机故障效果

2021-04-10 12:33:55  阅读:426  来源: 互联网

标签:UV shader 像素 Unity 偏移 SimpleNoise Add SG 节点


故障效果有两种,第一种连线如图:在这里插入图片描述

简单说下原理,原UV的V值是直接连接到了最终采样贴图的V,而最终采样贴图的U经过了原UV值加上扰乱的UV值,直接看最终图可能不容易解释,看下SimpleNoise的UV这个字段没有连接时候的图,

在这里插入图片描述
关注到Add这一部分,右边是纯白色的,这是因为Split的输出R代表的是UV里面的U,是横坐标,越靠右边U值越大,相加的最大值是1,是白色,SimpleNoise这个节点产出是一维向量即是个数字,越黑越接近0,越白越接近1,这样的噪点图因为挨个像素与UV图相加后靠右边的基本上都到达1或者超过1这个峰值了,所以右边都是纯白色,注意Add节点对于值超过1的像素点只能用白色表示,并不是说最大值就只是1。可以再将SimpleNoise的Scale变为0。Add的结果就是UV的U值的变化显示了。
在这里插入图片描述

图中可以看出经过噪声处理的值最终只是输出到了U上面,不确定可以尝试将噪声的Scale从小调节到大看看。
最后用time作为噪声uv的u放大值,将噪声贴图横向进行了拉伸,再在原uv的基础上增加这些U的变值,当像素所处的在最终输出UV的U值大于本身原UV坐标的时候就向右边取像素,小于本身原UV坐标的时候就像左边取像素。可以对比第一张图和最后一张图的Add结果,原本处于灰色的u值的像素如果处于了白色,那么它就向右采样了,即图像会向左偏移,如果处于了黑色,那么它就是向左采样了,即图像会向右偏移。


第二种做法

在这里插入图片描述
第二种做法多了干扰的移动,并且能较好调节干扰的方向,干扰的大小。

我发现看连接好的节点图从末端开始看起比较容易理清思路,Multiply节点的输出加上原UV的U值作为了最终采样贴图的UV的U值,形成了左偏移的效果,第二行的主要作用是降低干扰程度并且将干扰方向从左改成了右,单纯的降低干扰程度可以将Power节点的B值调大,但是因为第二行的Remap结果是整张图都是黑色,SG里面对于小于或者等于0的值只能用黑色表示,具体是小于0还是等于0就要开发者自己去推了,这里从最顶的Add节点来看基本都是小于0了,因为Add结果都是从左往右偏,而如果Power值的结果作为Add的参数是从右往左偏的,能造成相反方向的偏移的只能是负数。第三行的左边四个节点主要是产生一个U无限大V重复移动的UV来给simpleNoise节点进行纹理上的横向无限放大和竖向的垂直移动,不管怎样的横竖方向的偏移,噪声的值都在0-1之间,这样的值进行了Power操作之后,只能变成小很多的小数,所以Power的结果基本上都是全黑。

Remap节点是将某个范围内的数按照线性比例重新映射到一个新的范围内,比如0-1之间的数0.1,重新映射到3-5之间就是3.2,重新映射到0-0.5之间就是0.05。这样的操作我觉得应该会有大于0的部分,只是这里太不明显了,结果是全黑,可能第二行里面的simplenoise的值大部分都是小于0.5的,当第三行的power县白色的部分与对应区域一个小于0的值相乘以后,就也变成负数了。 看SG节点里两个节点进行操作后的结果节点要有像素对应的概念,即三个节点图片的相同部位进行对比,看实际上究竟做了什么,这像素对应的概念是之前从shader开发里面转移过来应用的,SimpleNoise里面的黑白灰的表示是用RGB表示一个相同的Vector1的向量。 如果希望最终结果同时有向右和向左的偏移,调节Remap参数的OutMinMax的0.5为3或者更大即可,这样Multiply的时候乘数有了正数就有了向左的偏移了。目前我不能理解第二行的SimpleNoise的结果是怎么来的,UV都是相同值的时候成像不应该是这样,可以评论区回复。

标签:UV,shader,像素,Unity,偏移,SimpleNoise,Add,SG,节点
来源: https://blog.csdn.net/weixin_43149049/article/details/115556043

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有