element3ds.com
原创TA-Shader [Unity] ASE编写的节点shader如何用代码优化?如何使用Sublime Text编辑器写Unity Shader?
发布于
2021-9-1
44381
10
原创TA/Shader
Shader信息:
Shader类型: 其他 
工程信息: 仅展示 
使用的版本管线: -

您需要 登录 才可以下载或查看,没有账号?注册

x
http://www.sublimetext.com/


ASE(Amplify Shader Editor) 连连看是美术同学习惯使用的Shader神器,但是可能生成的代码有一点点冗余
虽然不影响效率,但是为了让项目更工整,且可以入的了程序大大的眼,并被项目接受
需要亿点简单的操作,美术同学,美术TA就能把代码做干净点!
这个默认管线的话,不需要会写代码!也不需要懂程序,很简单只要符合3个条件就能掌握
  • 碳基生命的平均智慧水平并能上网。(URP嘛,呢可能得硅基!)
  • 会 Ctrl+C
  • 会 Ctrl+V

首先需要一个代码编辑器 可以是VC2017+  或者unity自己的
安装太多编辑器很麻烦,很费劲

经常有人推荐 Sublime Text  编辑各类文本和代码,也开始使用
但是默认情况下他不方便写 shader,也不会高亮
这里记录一下方法,方便后面使用

官网下载,别被其他网站的夹带给装了流氓插件!!

安装后  shader和cginc文件设置为sublime为默认打开方式
image.png


https://github.com/cjsjy123/Unity-Shader
然后去这里下载 ZIP包
image.png


下载的包放这里

打开下面的文件

右键自己的unity 找到自己对应的cginc (CGIncludes)目录
获取 自己安装的unity路劲中的CGIncludes目录
这里虽然写的是Unity V5  但是任何版本unity到2021+都可以,关键字变化不大,放心使用

直接复制 地址似乎是不行了
//////// 和\\\\\\\\ 是有区别的这里注意了!!
     保存 重启!!!

关联shader默认打开,重新打开shader,嗯发现关键字已经变色了!各种结构清晰了
参考
https://blog.csdn.net/yuxikuo_1/article/details/83353610


开始优化代码
默认管线下!
先用ASE简单连一个贴图调色

---看对应的代码--
        路径名部分       
Shader "Dev/T1ShaderLive2D"
就是路径名,大家可以在这里修改,也就是修改在材质球上如何选择shader
一般我推荐的习惯是
项目代码或者商标名/功能/特点  
如E3D/ActorPBR/2T_dissolve
意思就是E3D系列的  PB光照模型的角色 shader
2T_dissolve  使用了2张Texture的可溶解shader


                 参数暴露 Properties    部分  


这部分等于 在ASE的参数上选择暴露
排序等于左侧面板底部


        删除ASE设置 和 节点信息        
最后一段  /*ASEBEGIN    ASEEND*/  内的全部信息
一看就不像是代码的东西!这个东西删除掉,保存对于ASE就不可逆了
ASE将无法再继续打开编辑,一般是最后步骤,不要轻易的删除!
当然你有备份,也可以用这种方法来发布传送自己的shader,可以防止小白盗用你的成果
但是高手是防不住的!因为算法还在!如何用算法还原 ASE 节点,是我们以后要讨论的复杂的系统问题

优化后默认管线只有43行,还是 非常干净的!


然后我们再来看URP的代码优化问题,URP有点不太一样,非常不一样。
只是这里调整了一下管线,保存

好家伙-有点懵-和节点的内容99%都没有关系,我就乘了一个颜色,上来就干到了858行的复杂度
并且一堆陌生感的结构和引用,在默认管线下!从来没见过这些,这URP是真的有性能提升么?
冷静之后开始删减
找到所有Tess的关键字的 函数比如
CalcDistanceTessFactor
CalcTriEdgeTessFactors
CalcEdgeTessFactor
FixedTess
EdgeLengthBasedTess
EdgeLengthBasedTessCull
struct TessellationFactors


把不认识的,看似非必要的函数删干净之后依然有600多行
就会是以下报错
所以建议是  URP的 ASE代码优化!非资深战斗coder 不要轻易魔改操作!
也请相关了解情况的大佬赐教!


image.png
参与人数 3 元素币 +39 活跃度 +12
想要成大触,天天上元素

使用道具 举报 登录

回复 <
qq_马卡龙_WRh  发表于 2021-9-1 16:04:25  
2#
默认管线下他用的表面着色器,是对顶点片元的进一步封装.其实展开一样也是很多很多层的.各种宏定义处理不同状况.URP已经抛弃了表面着色器,其实更利于学习

评分

参与人数 1元素币 +1
元素界王神... + 1 明白了!就是URP更直接不套娃,所以都暴露了出来。

查看全部评分

回复 收起回复
使用道具
qq_马卡龙_WRh  发表于 2021-9-1 16:53:58  
3#
示例里面,用Unlit连了一个乘法.多的很多代码都是#ifdef和#endif包裹的,其实就是处理各种乱七八糟情况的.比如关键字ALPHATEST_ON,TESSELLATION_ON,还有处理GPUInstance相关功能的宏,处理阴影的宏等等,其他的还有VR相关的等等,一大堆乱七八糟的.刚开始确实看得累,需要先剔除出我们当前所在的情况是哪一个.
回复 收起回复
使用道具
qq_马卡龙_WRh  发表于 2021-9-1 16:55:32  
4#
记得ShaderForge生成的代码就是顶点片元的,会很长.ASE用表面着色器,所以生成代码非常简洁.
回复 收起回复
使用道具
qq_马卡龙_WRh  发表于 2021-9-1 16:59:29  
5#
但是这么多关键字,会导致生成的变体非常非常多.打手机包,bulitin管线用了Standard,经常Standard的shader变体内存占用能有几百兆. 所以我是不用Standard,自己管理这些关键字.尽量不把无用的变体收集起来打倒手机包里. URP还没做过项目,不知道Lit的变体有多少,听说可以直接用,是有专门的变体优化了吗?

评分

参与人数 1元素币 +1
元素界王神... + 1 URP Unlit ,ASE把左侧选项全部关闭,只有2个变体!

查看全部评分

回复 收起回复
使用道具
水木神川  发表于 2021-9-2 00:16:47  
6#
谢谢分享
回复 收起回复
使用道具
随浪逐波  发表于 2021-9-2 17:42:20  
7#
感谢分享
回复 收起回复
使用道具
挥别  发表于 2021-9-3 10:18:09  
8#
回复 收起回复
使用道具
大黑猫  发表于 2021-9-7 17:44:38  
9#
1111
回复 收起回复
使用道具
神佛之上  发表于 2022-11-22 23:44:56  
10#
给力!元素有你更精彩
回复 收起回复
使用道具

快来发表你宝贵的意见吧!

元素界王神 实名

通过了实名认证的内容创造者

十倍界王拳

主题
11054
精华
93
超神
12
扩散
17
微金
3030
智慧
991
余额
1391
在线时间
21209 小时

【绝】红龙战甲 学徒法袍 短剑 长剑 死亡刃 天子剑 元素铜币 元素圣币 短杖 水晶杖 秘法杖 女皇之泪 长枪 龙枪 战神 魔神战甲 元素之铠 黄金圣衣 射日 相对时空 【绝】大天使权杖 【绝】蚩尤斧 【绝】轩辕剑 圣盾-【瓦雷利亚】 夺魂之镰 魔镜 裁决 神速靴 火元素 暴风之眼 元素之钻 秘法之钻 波塞冬之叉 大菠萝 繁星晶石 【昊天碎片】 绿色药水 微库VIP 扩散者 钢铁矿镐 秘银矿镐 黄金矿镐 彗星钛晶矿 阿尔法晶矿 泰坦高能矿 吃鸡头盔 吉普车 满天星 木吉他 电吉他 自然之怒 血月弯刀 玫瑰金项链 烈-红龙战甲 【绝】真-红龙战甲 无色原始矿 绿母翠晶矿 飞雷靴 斯巴达头盔 【绝】赤影战盔 【绝】烈龙战甲 【绝】魔焰斧 超限之枪 超限之书 超限之刃 超限之斧 天蓝靴 光虹靴 金光靴 紫霞之秋 碧晶之眸 元素年卡

快速回复 返回顶部 返回列表