Unity3D Shader之路 写Shader前必须要知道的事情3 ShaderForge的简单使用

时间:2021-08-22 04:13:17

版本:unity 5.4.1  语言:Unity Shader

Shader Forge版本:1.32

 

总起:

在具体介绍Shader之前准备再写一篇有关于ShaderForge的,虽然我们可能使用代码来直接编写Shader,但拥有ShaderForge这样的可视化编辑工具,简直如虎添翼,方便至极。

 

想要有什么Shader的想法,直接用ShaderForge来编写,得到shader文件之后,有不满意的地方再改动改动,我们的shader就成型了。也可以参考参考它里面的代码,能让自己对Shader的理解更进一层。

 

界面说明:

Shader Forge添加进Unity工程中后,在Unity的Window菜单下就有了Shader Forge的菜单,点击便能打开Shader Forge的编写界面了。

Unity3D Shader之路 写Shader前必须要知道的事情3 ShaderForge的简单使用


在这边建议一下,Unity在使用时最好使用5.x的版本,因为只有在5以上的版本Unity才支持PBR,也就是Physically Based Rendering,基于物理的渲染。3A级大作大多都会使用这种光照模型的渲染方式提供照片级的画面,Unreal的画面大家有目共睹,正是使用的这样的方式。(不过最近玩的黑魂3,貌似并没有使用,只是打了很多的灯光,如果有这方面的文章,希望大家分享给我一下)

 

两个按钮:New Shader、Load Shader。不用说了吧,一个创建Shader、一个读取Shader。大家最好不要用自己写的Shader读取到Shader Forge中,Shader Forge会做很多处理,可能会改变Shader效果。

 

创建界面(4.x版本可能就没有下面的PBR选项了):

Unity3D Shader之路 写Shader前必须要知道的事情3 ShaderForge的简单使用


我们来创建一个Lit(Basic)的Shader,创建之后的效果是这样的:

Unity3D Shader之路 写Shader前必须要知道的事情3 ShaderForge的简单使用


♦ 首先来讲一下Shader Forge标签下,最上面的三个按钮:

 

Return to menu:返回回创建Shader的界面;

 

Setting:对Shader Forge的创建界面进行设置,最好勾选Show node browser panel,显示创建节点的窗口;

 

Compile shader:编译Shader,在改变Shader的一些节点之后,需要点击该按钮进行编译,然后在下面的预览窗口中才会显示效果,当然可以勾选Auto,让它在改变Shader后自动进行编译。

 

♦ 接下来是预览窗口的菜单:

 

sf_sphere:预览窗口中使用的模型,可以在自己的工程中随意选取想要的模型;

 

Skybox:预览窗口模型的背景是否使用天空盒(只有在当前项目场景中有天空盒才能使用)。不行的话,可以使用前面的颜色改变背景的颜色;

 

Rotate:是否自动旋转,勾选的话模型会自动旋转,嗯,没毛病。

 

♦ 最后是属性窗口:

 

Shader Setting:Shader的一个总体设置,Path Shader的名称路径,Fallback失败时的回调啊,LOD值,Draw call batching 是否启用批处理(批处理会导致顶点无法操作,在使用顶点动画时一定要关闭),Inspector preview mode 针对的模式2D还是3D的呢,Target renderers渲染的平台;

 

Properties:用户在使用该Shader时能看到的属性;

 

Lighting:使用的光照模型,不详细说,感觉说这个展开来说可以写一本书了。需要知道的是Forward是前向渲染适用于手机等移动平台,Deferred延时渲染适用于电脑平台,特别是点光源多的情况下,延时渲染能提升处理性能。光照模型中,Blinn-Phong是最经典的半兰伯特高光光照模型,逻辑其实比较简单,到时候我们也会实现,PBL就是PBR的光照模型,目标3A级请往这边看;

 

Geometry:几何,大多数选项我也不大清楚,哈哈。不过想要模型双面显示,请将Face Culling设置为Double Sided;

 

Blend:混合模式,可以设置该物体是透明(Transparent)的,还是实体(Opaque),想要透明效果的话选择Alpha Blended,然后你会发现调整编辑窗口的Color的Alpha值没有效果。嗯,看到Color节点最右边的A了吗,把它连到Main节点下的Opacity就可以了,再试试看吧。

 

操作说明:

    我们来看看我们的编辑窗口。

Unity3D Shader之路 写Shader前必须要知道的事情3 ShaderForge的简单使用


在编辑窗口中创建各式各样的节点,然后连接到Main上面,就能输出自己想要的效果,接下来我来说说主要的一些操作。

 

连接,刚刚说透明效果的时候应该已经试过了吧,点中Color节点上的A,不要松开鼠标左键,将线拖到Main上的Opacity标签上;

 

断开连接,那我这条连接不想要了怎么办?键盘上按住Alt,按住鼠标右键,可以拖出一条虚线,在松开右键时,虚线碰到的连接会被删除;

 

创建节点,直接点击右键会出现创建节点的菜单,或者使用我们一开始说的创建窗口,也可以按下属性的开头字母,比如想要创建一个Color,按下键盘上的C,不要松开,用鼠标左键去选区Color就可以了,如下图:

Unity3D Shader之路 写Shader前必须要知道的事情3 ShaderForge的简单使用


拖动编辑界面,按住鼠标左键即可拖动;

 

选中多数的节点,按住Alt并按住鼠标左键托出的方框即可选中;

 

删除节点,选中节点后,按下delete。

 

好了,上面的基本操作就能满足使用的需求了,顺便值得一提的是,Project标签中的资源(比如图片),可以直接拖动到节点中初始化。

 

总结:

ShaderForge使用方便,便于调试,大家试试就能掌握它的使用方法,但是如果没有Shader的基础知识,想要实现理想的效果还是困难重重,比如实现透明效果一定要在Blend中调整Shader的设置。所以在学习Shader的时候各种理论基础一定要打结实,这样在来看看ShaderForge的各种操作,心中就游刃有余。

 

最后把自己使用的Shader Forge 1.32提供给大家:http://download.csdn.net/detail/u012632851/9829036

 

Unity 2017版都已经有测试版了,引擎越研究越感觉到自己知识的不足,其实有时候也会有疑问,自己学的这些东西到底有没有有用,现在的工作只要会Unity的一些简单操作就可以了,但是记起以前老师说过的一句话:我不知道努力能不能成功,但不努力一定不会成功。以此激励自己,望自己过几年后能成为团队的技术核心!