常用的写实游戏的shader的连法和优化
本帖最后由 jiangqiong 于 2019-1-29 23:20 编辑应大伙的交流欲望 新设置了个群977644160。咱可以群里讨论
憋了好久,今天终于有时间来和大伙聊聊shaderforge在游戏中的运用和优化的问题。废话不多说直接上图。
哎,看着有些头晕。先说说有什么作用。
这套材质用有 一次流动、循环流动、置换、mask、depth 、disslove、模型虚边等等功能,基本上瞒足了我们常见的效果。看到这很多会觉得你shader 肯定很耗程序大佬肯定不会给用的.回头我一一给大伙解答。先看看这些上面的功能怎么用。
1、这个shader上面用了hdr颜色。这个呢用新PostProcessing-2不开只要颜色值超过1,都是起作用的。
2、Desaturate 去色 数值0-1(使用一些带颜色的贴图,可以做出很多不一样的效果)3、conster (主纹理贴图的对比度,)
4、Displacement 置换贴图 (我去了rg通道两张图,这个我学习的是ue4的用法,扰动效果比只用一张图稍微好些。
Displacement_x_intensity,x扰动强度
Displacement_y_intensity,y扰动强度 Dis_x_time, x 扰动速度 Dis_y_time, y 扰动速度我把x、y 的强度和扰动速度分开了。这个是为了调试不同的效果,大伙自己尝试下便知道它的好处。)5、For or ones
勾上是MainTex一次性流程,勾去掉是循环留在。需要通过customvertex steams添加custom1,注zw分别对应x轴y轴。
6、mask_x_speedmask,x轴流动速度,mask_y_speedmask,y轴流动速度。(这么做的目的是为了可以在实际制作的时候丰富动态)
7、r or alpha
勾上选择的是r通道作为alpha作为main tex通道, 去掉勾选用maintex的alpha做为通道。
8、Depth 模型和场景融合的深度
9、Alpha_Intensity alpha的强度
10、Brightness 主纹理题图的强度(9和10 强度都会影响发光亮度,强烈建议大家用这个两个控制材质的亮度。hdr颜色上面的强度建议不要使用保持默认,方便后面boolm不开的时候调整效果)
11、Disslove 溶解启用第二套uv。注:勾上是勾开启溶解。选用的题图是扰动的贴图的r通道。需要通过customvertex steams添加custom2、uv2,注z为溶解强度(一般给曲线),
w为溶解的初始值大小一般给常数。通常使用的数值0.05—0.5之前。12、shader_blend_refration_diplament 带折射的材质 blend模式 。(使用的时候如果在模型上,正反面会互相穿插,程序已经在想办法解决。这个shader使用的时候要特别注意材质比较复杂,带有refraction会比较消耗新能,经少用尽量少用。)这个用shader forge 本身的折射做的 refration,我们在项目里面前面的问题都已经得到解决。程序用我的shader 按照ue4的折射方式重新写了一个shader。这样我们就再也不用羡慕ue4里面 流动的东西上面有折射的效果了。13、particles or mesh 这个为了在不是粒子系统上面做的。打上勾,不在粒子系统上面uv也是正常的。14、Mesh_depth勾上Mesh_depth_Intensity起作用。 这个是模型虚边,做这个的原因是在unity里面模型很容易出现折边,用这个可以决绝这个问题。还有一些特殊效果上面也需要用到这个。不方便放视频,有些在项目里面使用了。但是截图可以放几张图
下面开始正题了。主要说说怎么让程序大佬放过我们,达到新能上的标准问题。我们特效材质并不复杂,我总结了一些大概有几方面1、贴图总数和采样次数 。 这个问过很多程序的大佬大部分都有公认,特效材质最贴图数量不要超过三张。这个没有办法,所以做特效材质尽量还是忍忍吧。所以我在做贴图的时候很多贴图都合并起来了 例如置换的两张图合并成一张图、再例如 溶解图也用的是置换贴图的r通道。通过类似的合并贴图的方法,把一些能合并的题图合并成一张来介绍贴图的总量。采样次数的问题,用shaderforge的这种工具去连。一定不要各个通道随便到处连。一张图采样个10次8次 估计程序大佬也不会给我们使用了。 连的时候尽量做模板化,一个功能一个功能的加。2、计算量的问题。shaderforge里面默认的节点精度用的是float。其实我们正常是用不到这样的精度的。打开设置面便勾选,在shaderforge里面就可以看到精度的问题了。。有三种 float halffixed 。half是float的一半计算量。fixed是half的一半。那怎么选着呢time panner这些流动的东西一般用float color tex valueslider这些都用fixed。这个大伙可以问问身边的Ta,他们对怎么使用那种精度会比我了解的清楚些。3、变体数量。shaderforge连的特效shader基本上可以优化到变体数量为1. 特效一般是不受光照的。所以一般选择 单光源。勾掉之后你会发现你的变体数量会少很多。特效材质尽量不要出现很多个pass通道。 回退也不要有吧会多出来变体,看情况而定在程序大佬允许的情况下可以有回退。好了到这里你应该能看到你的变体数量是8个。继续优化//#pragma multi_compile_fwdbase是unity内置的用于前向渲染的关键字快捷方式,它包含了前向渲染光照计算需要的大多数关键字,因此会被shader带来很多的变体。//#pragma multi_compile_fog 这个是受unity的雾影响,一般做手游是不会用后期里面的雾的太耗。所以放心去掉吧!至此特效优化完成。你会发现只有一个pass 计算量也不大 贴图总数也控制了变体数量只有1。小伙伴们可能在前面没有看到折射的连法这里一起贴出来
下期在和大家探讨一些,其他的shader的连法。有问题的同学可以加我qq聊356813979.
感谢大佬分享>_< LOOK下 评论区一堆印度电工(每一个好的特效师都是一个合格的印度电工) 曹容 发表于 2021-1-12 17:07
大佬,文件损坏,浪费10个卷
这个问平台了,上传了很久了。 大佬,文件损坏,浪费10个卷 大佬 !!感谢分享经验 谢谢楼主分享 感谢大佬的分享~ 干货