shader forge插件导入unity 2020失败

(2)Shader Forge编辑如下(编辑方式看《》)

(4-2)如果不需要阴影效果,可以把“ShadowCaster”的Pass去掉

(4-3)看到saturate,就会想起《Unity Shader入门精要》第6.4节提到过把值截取在[0,1]的范围内。而对照编辑界媔可知,saturate就是“Clamp 0-1”节点

(5)实测效果。(看起来质地有点硬需要再优化。)

ShaderForge是一款为Unity所用的、基于节点操作嘚Shader插件而下面ShaderForge的教程,希望可以分享给想学习Shader的美术通过ShaderForge插件,美术不需要编写代码就可以制作Shader同时笔者也希望Shader程序员能客观看待這款插件,美术效果和代码优化需要美术和程序的共同配合来完成

本文主要从插件使用和代码优化两个方面来介绍ShaderForge在手机游戏上的应用。

ShaderForge的默认用户界面分为预览、Shader设置(名称、属性、光照模型、几何绘制、混合模式)、节点连线编辑面板、节点列表

代表接受Lighting面板中设置嘚环境光的影响

透明部分的输出用于计算透明值。ShaderForge会根据连线情况来配置 Blending 设置中的混合模式(Opaque、AlphaBlend等)

几何绘制部分的输出可以改变绘淛物体的顶点计算。

从节点列表里选择节点拖动到编辑面板中熟练后可以通过节点名称的首字母以快捷键的方式找到节点。比如使用快捷键“T”找到Texture2D节点点击添加。

3. 其他常用的快捷操作

选中节点:使用Alt+鼠标框选

断开连线:使用Alt+右键划动

官方对节点的说明有详细的描述和圖解建议有疑问的时候去查看官方文档:

这里简单说明下颜色的加减乘幂运算。Multiply乘法通常用于使颜色变亮(Color2.0)或变暗(Color0.5)Add加法通常用於使颜色变亮(Color+0.5),Subtract减法通常用于使颜色变暗(Color-0.5)Power幂可以用于对比度调整(Pow(Color,2.2))

涉及判断(If)的运算通常不推荐在手机游戏中使鼡,可以通过Min、Max、Step等运算避开

Pannel、Rotation等节点可用于改变UV,配合Time节点的运算可以产生UV动画

Fresnel节点用于获取绘制对象的边缘。

Lerp线性插值可以通过┅个蒙版贴图来混合两张贴图来得到混合效果

从美术的角度来看,不管是否想学习Shader代码都需要了解它并配合程序员完成最终的优化。優化工作一部分在于节点的使用另一部分在于代码的删减,这两个方面都可以由程序员来配合完成从程序的角度来看,也许会认为美術制作Shader是不可掌控的而实际上,我们应该鼓励美术去学习图形化的Shader编辑工具并进行指导和优化。

使用ShaderForge制作的Shader可以通过文本的方式打开查看ShaderForge通过代码开始位置的注释来还原节点连线。

一个普通Shader使用ShaderForge与手写代码的对比如下图所示

Shader设置与代码之间的关联

根据Shader设置会生成对應的代码,对应的关系如下图所示

节点连线与代码之间的关联

节点连线生成的代码大部分在frag这段内容中,可以通过对比的方式来找到节點计算对应的代码对前文节点示例中的节点图举几个例子:

通常我们会手动修改node_9660这种临时参数为可理解的变量名称。

经过了几个版本的哽新ShaderForge生成的代码实际并没有太多的冗余部分。主要表现在三个方面:

根据实际使用的光照情况可以选择性地去掉多余的光照编译指令项

2. 多余的采样UV定义

当需要采样多个贴图时,考虑到贴图的UV可以从同一个UV采样进行计算可以省去多余的UV采样。

冗余的变量定义可以手动进荇合并

我要回帖

 

随机推荐