Strumpy Shader Editor入门教程

对于3D游戏来说,有很多绚丽的效果,都是靠shader(着色器)来实现的。不过很多朋友估计都不会编写shader,阿赵我自己也只是看了个入门,明白了它的原理,很多具体的效果都写不出来的。这次来介绍一个Unity3D的第三方shader编辑器:Strumpy。这个编辑器是完全可视化编辑,使用起来相对简单一点。

先来看看我们这次需要做的例子:

Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
我们需要使用Strumpy,编辑出这样一个shader:包括了漫反射通道、法线通道、高光通道,以及在模型的边缘运动的光效。
很显然,Unity3D自带的shader没有能直接实现这样的功能的,最多也只能使用法线和高光通道而已。
      由于这个例子稍微复杂,所以我们先来做一个更简单的例子,来熟悉一下strumpy的界面和基本操作。
首先肯定是要先下载Strumpy插件了。在Asset Store里面有,免费下载的。我这里使用的是4.0a版本。
下载完之后导入,会看到多了一个选项:
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
选择之后打开了Strumpy的编辑窗口: 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
Flie的功能很直观,新建,读取,保存和导出的功能,我们可以先看看读取功能
 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
插件自带了一些已经编辑好的范例,有兴趣的朋友可以逐个看看,会有很大的收益。
 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
然后我们来正式开始做这个简单的例子,我们准备了一张带有透明通道的贴图(拿斩首大刀的阿赵),接下来我们做一个shader,把这张贴图显示在一个面片上面,使它实现漫反射通道和透明通道的显示。
 
我们新建一个着色器编辑:
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
注意看,新建时,在Settings的标签是红色的,然后Shader Name也是红色的,这是提醒我们,每一个shader必须要先有一个名称,而这个名称就是以后你在材质栏里面选择的材质名称了。比如你可以用“myshader/test”,这样test材质会出现在myshader下面。
 
输入材质名词之后,我们先来Inputs里面,新建一个输入。这个输入,就是我们平常在Unity自带的材质球里面看到的输入通道了。假如我们需要它能调节颜色,那么就要新建一个颜色的输入,假如需要调用贴图,就要新建一个贴图的输入。这里我们新建一个Unity预设的MainTexture。熟悉用脚本替换材质贴图的朋友估计很熟悉这个标签的含义了。
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
新建之后,我们可以看到,出现了一个贴图选择的通道,就像我们平常操作的自带材质球一样。
接下来我们会新建一些节点,然后对他们进行编辑。
创建节点的方式有两种:
第一种是在Nodes里面选择相应的节点:
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
第二种是在节点编辑的窗口鼠标右键单击,选择相应的节点。 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
我个人比较习惯第二种方法。
我们选择了一个Sampler2D的输入 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
刚生成的时候,这个节点是红色的,因为我们没有指定输入的来源。想起刚才我们新建的Input了吧?那个MainTexture指定在这里。
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
在选中该节点的情况下,来到Node的标签,会看到提示错误了
 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
我们选择_MainTex
 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
这时候,节点就不再是红色了,而是出现了两项输出,分别是2D采样和UV信息。节点名称里面,也会相应的显示出_MainTex,也就是我们刚才新建的Input的名称。
 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
接下来我们新建一个Tex2D方法节点。
 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
然后像上图一样,用鼠标把他们之间连起来。
这时候,把我们预先准备好的贴图指定在贴图通道里面
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
点击预览窗口的Update Preview,会看到预览的物体上面出现了我们的贴图
 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
为了便于观察,我们选择一个片面模型。这时候,漫反射通道已经完成了,接下来我们继续做透明通道。
 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
如上图一样,把A连接到Alpha通道。
 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
然后来到Settings,按上图设置一下。
 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
打开背景显示,会看到透明通道已经生效了。
在完成了以上的小例子之后,我们正式来解释一下Strumpy各个部分的意思吧。 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
在master里面,分别是各个通道的最终输出。
 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
节点是通过有方向性的线条来连接的,分为输入端和输出端,上图是一个单向输入输出的例子。
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
再来是一个运算的例子,Add是相加的操作,这里是两个输入端进入了相加,然后输出一个结果。
在这里要说明一下的是,这些操作很大一部分都是数学运算的方法,比如加减乘除、sin、cos之类,各位在学习之前最好要先理解他们的意思。比如相加就是互相叠加,两张图相加会整张图都变得更亮。相乘是波峰波谷的叠加,两张图相乘,会使亮的地方更亮,暗的地方更暗。其他的方法请各位自行百度去查阅了,就不一一说明。
再来看看设置的选项 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
如果曾经自己写过shader的朋友,对于这些选项应该是很熟悉的。比如很多朋友问的双面显示,其实就是把CullMode选择为Off就行。
介绍完基本功能,我们正式的来做这次的目标例子了。 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
这里我们准备了一个模型。
 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
模型带有了漫反射贴图和法线贴图。
 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
首先新建一个着色器编辑,然后给shader起名为:myShader
 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
按照第一个例子的操作,我们完成了漫反射通道。
 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
为了应用在我们的模型上,我们需要先生成一个shader。选择导出(Export As)
 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
给shader起一个文件名。这个名称没有太大的意义。
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
导出之后,我们来到材质球选择的地方,会看到了我们新建的myShader,选择它。
 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
然后指定漫反射贴图,我们的模型变成了上图的效果。
 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
接下来,我们在Inputs里面新建一个凹凸贴图的输入
 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
然后完成法线通道节点的编辑。由于需要使用法线贴图,所以需要加入一个UnPackNormal的节点。
 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
这时候,我们会发现输入通道处多了Normalmap通道,我们把法线贴图赋予上去。模型变成上图的效果。
 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
我们再新建一个颜色输入,作为高光的颜色。
 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
完成高光通道和光泽强度的节点编辑。
这里我用了一个Multiply(相乘),目的是让光泽强度范围的对比度更大,显得高光会更尖锐一点。高光颜色直接连接到Specular通道。
 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
现在我们的模型已经拥有了一定的质感了。由于模型原来是没有法线贴图的,我拿了漫反射贴图来直接转换,所以效果差了点,有兴趣的朋友可以自己做法线贴图增强效果。
接下来做有动画效果的光。
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
我们新建了几个输入:发光颜色(_LightColor),一个发光颜色的遮罩贴图(_Light),一个浮点(_dir)作为光运动的方向,一个范围选择(_RimPow)作为发光强度的控制。
 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
这张是发光遮罩贴图,是一张黑白的梯度图。
 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
这一个步骤的节点编辑有点复杂,基本的思路是将颜色和遮罩贴图混合在一起,并用时间控制UV动画:
1、遮罩贴图我用了ViewDirection和Fresnel结合控制显示方向,并用_RimPow作为显示方向的次幂控制显示强度。
2、为了让光会随着时间自己做动画,我是用来Time和_dir相乘,这样可以控制动画的速度和方向。
3、为了让UV移动做动画,我用了UV_Pan。记得UV_Pan需要选择输入的轴,这里我选择了Y轴。
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
4、最后,我把发光颜色和遮罩运算的结果相乘,达到叠加波峰改变颜色的目的。
 
Strumpy Shader Editor入门教程 - 阿赵 - 有爪的小羔羊阿赵
最后,发布shader,根据需要选择相应的遮罩贴图,指定发光的颜色、强度和方向,我们的例子就完成了。
补充说明几点:
1、可能很多功能自带的shader都有,不过有时候你就是会需要一些功能特殊一点的shader,具体需要什么输入通道,和怎样的操作,请根据实际情况考虑。
2、关于即时镜面反射的shader,估计很多朋友都很感兴趣。不过我这里不打算详细介绍,因为unity没有直接即时反射运算的shader。
简单说明一下其原理:
在自带的水面和愤怒机器人场景里面,我们都看到了类似镜面反射的效果,其实这都是一种欺骗。做法不算复杂,其实是根据了当前摄像机的位置,新建了一个相对角度的反射摄像机,并把反射摄像机看到的内容渲染成RenderTexture。最后把RenderTexture和位置矩阵输入到普通材质的贴图通道,达到好像即时反射的效果。水面的例子做法会傻一点,因为它是针对水面物体自己生成了一个反射摄像机,所以的反射效果只会对水面本身有效果,每个可以反射的面,都要单独生成。而愤怒机器人里面的例子会聪明很多,它会在摄像机的脚本里面根据预先选择的可反射的图层,统一生成了一张RenderTexture,并让所有可以反射的shader使用。
结合着即时反射这个例子,可以看出实际上很多特殊的效果,都不是单独的shader能直接实现的,还需要到其他的脚本去配合。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Shadero Sprite is a real time node-based shader tool for Unity 5, 2017 and 2018 NEW! Forum : https://forum.vetasoft.store/ Discuss with us about Shadero Sprite and more ! Description Shadero Sprite is a real time node-based shader editor. Shadero was made to be a real production time saver. Beautiful and fast, it creates many astonishing effects with the several premade and fully optimized node effects. Shadero will increase the number of the premade effects in every update. No code required. Features - Ultimate tools for 2D Shader Editor - Node based editor - Real time preview - Source code included - Load/Save project - Optimised shader - Fog Support - HDR Support - Visual selection node preview - Light Support - Blend Mode support - Normalmap with light Support - Preview directly the scene - Works with Unity UI - Many premade effects (+100) - Help Tutorial in editor - Project examples - Unity 5 and 2017 and 2018 compatible - Support Anima 2D - Support Render Texture - Support Mesh Renderer - Generate a Sprite - Create Morphing - And much much more ! http://www.shadero.com New version 1.7.0 see version history Version 1.1 - Add Node: UV > FX (UV) > Sprite Sheet Animation - Add Node: UV > FX (UV) > Pixel - Add Node: UV > FX (UV) > Fish Eye - Add Node: UV > FX (UV) > Pinch - Add Node: UV > FX (UV) > Kaleiodoscope - Add Node: Generate > Shape > XRay - Add Node: Generate > Shape > Donuts - Add Node: Generate > Shape > Lines - Add Node: Generate > Shape > Noise - Add Node: RGBA > Color > Turn Metal - Add Node: RGBA > Color > Turn Gold - Add Node: RGBA > Color > Turn Transparent - Add Node: RGBA > Color > HDR Control Value - Add Node: RGBA > Color > HDR Create - Add Force Change Parameters to the Build Shader Node (Experimental) - Add Lightning Support - Fix Node: UV > FX (UV) > Pixel XY precision - Fix new Shader Project that keep the preview material issue - Fix Auto variable order issue when you add the same node Any Feedback, error reports, questions or suggestions, please contact us at support@vetasoft.com If you like Shadero Sprite you can rate it on the asset store, it would be very helpful. Any idea or suggestions to improve Shadero Sprite? Feel free to contact us at : support@vetasoft.com
需要Unity 5.6.0或更高版本。 Shadero Sprite是Unity 5和2017的基于节点的实时着色器工具 描述 Shadero Sprite是一个实时的基于节点的着色器编辑器。 Shadero被认为是一个真正的生产时间节省。美丽而快速,它通过几个预制和完全优化的节点效果创造出许多令人惊叹的效果。 Shadero将在每次更新中增加预制效果的数量。无需代码。 特征 - 基于节点的编辑器 - 实时预览 - 包含源代码 - 加载/保存项目 - 优化着色器 - 可视化选择节点预览 - 直接预览场景 - 适用于Unity UI - 许多预制效果 - 编辑器中的帮助教程 - 项目示例 - Unity 5和2017兼容 版本1.1 - 添加节点:UV> FX(UV)> Sprite Sheet Animation - 添加节点:UV> FX(UV)>像素 - 添加节点:UV> FX(UV)>鱼眼 - 添加节点:UV> FX(UV)>捏 - 添加节点:UV> FX(UV)> Kaleiodoscope - 添加节点:生成>形状> XRay - 添加节点:生成>形状>甜甜圈 - 添加节点:生成>形状>线条 - 添加节点:生成>形状>噪声 - 添加节点:RGBA>颜色>转动金属 - 添加节点:RGBA>颜色>转金 - 添加节点:RGBA>颜色>打开透明 - 添加节点:RGBA>颜色> HDR控制值 - 添加节点:RGBA>颜色> HDR创建 - 将强制更改参数添加到构建着色器节点(实验) - 添加闪电支持 - 修复节点:UV> FX(UV)>像素XY精度 - 修复了保留预览材质问题的新着色器项目 - 修复添加同一节点时的自动变量订单问题

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值