Amplify Shader Editor 案例解析系列——(6)HologramSimple

前言

该篇分析第六个案例,HologramSimple。后面会发现,很多知识都是之前案例中用过的,所以相关方面不再进行分析。

正文

按照Comment的顺序分析,首先观察效果,为方便观察效果,这里新建球体赋予材质,因为案例中的效果,不单单是这个shader的效果,还与模型有关,模型分三个材质渲染三层网格,最外层的材质是本文要分析的shader,修改透明度为1,加深效果,由于shader中常量值设置问题,这里有两张效果图,方便观察,第二张图是对第一张图的球缩放10倍的效果,后面会分析为什么要这样做:

 

上图右侧模型,字母“S”区域,以及底座区域的效果,不是shader导致的,而是模型用不同材质渲染的结果,前提是模型有多个submesh,然后对每个submesh使用一个材质渲染,而上图左侧才是该shader的效果。

发现有以下效果:

1.红黑色条纹在向上流动,且纹理中有些高亮的线段

2.从前向后,每隔一定距离有模糊的圈

分析Comment:

1.Hologram Color Comment  & Speed Comment

注册变量

2.Rim Comment

 先看节点Rim Normal Map的UV输入,其值是将节点Texture Coordinates的UV加上一个与时间有关的函数后的结果,其中节点Texture Coordinates不做任何操作时,输出的UV是从左下到右上,u,v分别从0趋于1的结果,这里可以与案例4中的Shield Main Pattern Comment进行比较,其实效果是大同小异的,都是对贴图进行UV滚动,只不过流动这里,一个采用的是在Texture Coordinates的UV输出后再处理,一个是先处理Offest再输出UV,效果是一样的。而节点Rim Normal Map之后的操作,与案例5中的Highlight (Rim) Comment基本一模一样,区别只是Power节点的Exp取值算法不同,这里就不再赘述,输出变量Rim的结果是 对象表面法线与视角夹角不同处,输出不同的值,由于法线贴图在流动,所以结果也在一直流动。

3.Scan Lines Comment

 先分析下面对World Position的Y分量的处理,我们直接看到Sin节点,World Position是对象的位置节点,这里对Y坐标进行了一系列的处理,包括Multiply,包括与时间变量的Add等等,一步步看来,一直到Sin节点,其实Sin节点的输出,只是Y坐标的一元一次函数,可以记作f(Y) = sin(a * Y + b).其中参数a,b是与时间有关的函数。依次来实现Sin节点的黑白条纹向上流动的效果,指的注意的是,这里的算法并不是唯一的,我们可以通过对Y进行其他计算方式来实现同样的效果。比如下面这样,省略了很多节点,实现了一样的效果,大概逻辑是一样的, 这里要表达的意思是,在分析的时候,不用过分在意这些常量数值的计算,碰到这样的模块,我们大可以认为,这只是随时间,或坐标,或某个变量值变化的函数结果,而不必在意具体的过程,当然类似法线与视线点积,深度混合等计算,还是要理清楚其实际的意义。

 继续分析该Comment上面对World Position的Z坐标的处理,也是Z的与时间有关的一元一次函数,Noise Generator节点之前遇到过,是对输入的参数进行噪音处理,返回 -1 ~ 1 内的值,含-1,1,该节点中,相同的输入必定得到相同的输出,这里可能会有疑问,为什么与时间有关,但是节点Noise Generator的结果,是静止的,不是动态的,其实这里的结果并不是静态的,而是因为值的变化幅度过小,导致结果变化太小,所以看起来是静态的,我们可以把Divide节点的B值从100修改为0.1,这样就能看到很明显的动态效果,这也是上述效果图中为什么要对球缩放10倍的原因,通过缩放来扩大World Position 的Z值。其实这里我不是很理解为什么要用到Noise Generator节点,因为我不清楚该节点的内部是怎么结算得出噪音结果,不过通过分析,我们也可以知道,该计算只是为了得出与关于Z的与时间有关的一元一次函数,那么我们大可以换一个计算方式,如下图:

效果大致是相同的,其中新增的第一个Multiply节点B值为2000(因为前面Divide的B = 100,Time节点输出的是 t / 20),第二个Multiply节点B值为0.05,当然都可以自行调节。

将Z与Y的一元一次函数结果Multiply,发现两个结果是呈规则条纹状的,但是结果的白色区域是断断续续的,这是因为Y与Z方向不同,且由于两个值范围都在[-1,1],结合负负得正,正负得负,所以结果不规则,而后面的操作就是使条纹规则化。首先对Y的函数Sin结果进行Remap(-1,1,0,1),得Out = 0.5 * In + 0.5,之后的Clamp(0,1)是多余的,因为当Remap的输入在[MinOld,MaxOld]区间时,那么结果必在[MinNew,MaxNew]区间。然后对黑白两色进行lerp取值,即在0,1之间lerp取值,即lerp结果为f(Y),然后再用lerp结果SubtractZ的一元一次结果(记作f(Z)),则

 即在Y相同时,随着Z的变化,结果的输出,部分区域输出为白色,部分输出为黑白间,或黑色。即效果图中,水平的条纹,在Z值的不同区间的不同表现,可以发现,在Z方向的模糊区间内,水平条纹与Z的模糊区间外,是不在同一水平的。

该Comment的分析可能会有问题,因为对其后续的处理处于怀疑态度,不清楚这样做的意义具体是什么,如果有错误欢迎指出。

4.最终结果输入

 流动条纹与外发光混合,再与颜色HologramColor进行Multiply,黑色区域为黑色,白色区域为相应程度的HologramColor值,再对颜色进行放大,输出到Emission外发光。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
NEW! Support for Lightweight SRP NEW! Multi-Pass on Templates NEW! Compatibility with Unity 2018 NEW! Xbox One/PS4/Switch Support NEW! Texture Array Creator tool NEW! Terrain support NEW! Shader Templates • Lightweight PBR SRP • Lightweight Unlit SRP • Post-Process effects • Alpha-Blended particles • Sprite • Unlit • UI New Samples • SRP Lightweight 2D Fractal • Projectors • XRay • Single Channel Masking by Sarah Akers and David Marshall • Stylized Skybox by BOXOPHOBIC • Melting by Gil Damoiseaux New Shader Functions • Detail Albedo • Fetch Lightmap Value • Lerp White To New Template • Lightweight Unlit SRP New Nodes • Transform Position • Transform Direction Latest Improvements • Amplify Shader Editor now supports Lightweight SRP v1.1.10 via templates. • Support for Specular workflow into Lightweight PBR SRP template. • Templates can now be Multi-Pass. • Amplify Shader Editor is now compatible with Unity 2018. • Official support for Xbox One/PS4/Switch. • Texture Array Creator tool now also creates 3D Textures. • Can create terrain shaders, completely from within ASE without external editing required. • Improved templates loading behavior after hot code reload. • Pragmas, Defines and Includes are now set over a single reorderable list. • Blend, Cull, Stencil, Color Mask and Depth options can now reference properties. • Properties now can have custom attributes. • Improved editor rendering pipeline leading to huge performance boost. • Reduced editor memory allocations resulting on a low Garbage Collector impact. • Editor more snappy and responsive when auto panning and zooming. • Multiple fixes over various nodes, editor and samples. Learn more: Amplify Wiki Discuss here: Unity Forum Thread Shader Samples: Full List The Editor will continue to be improved in future updates, there are a lot more features currently in development. Notable Features • Full source-code • Support for Xbox One/PS4/Switch • Custom Node API • Shader Templates • Shader Functions • Multi

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值