原创作品

Shader GUI 笔记

Cz_wang 发表于   2021-12-23 14:35:20
3764
8
28

前言

因为这次笔记涉及项目资源所以核心部分就不做过多展示,只讲GUI编写的技术。

起因:这次要为项目写,URP环境下特效整合Shader,因为整合Shader涉及功能多,在不同功能选择时需要UI有明显反馈所以需要写GUI

感谢:

坏熊猫//Zed

https://www.magesbox.com/article/detail/id/1321.html

阿修


虽然在论坛上获取到了两位提供的GUI整合Shader模板,仔细研究一番,发现与自己的需求还是有些区别,毕竟站在巨人的肩膀上还是要做出一些突破,照抄就没意思了,咋地也得有点突破。

熊猫模板

熊猫大佬的模板,GUI比较好看,我挺喜欢的,代码吧,这个能连出来也是牛逼。这里仍然有一些问题,就是他这里相对功能开关是IF开关使用类似Lerp算法,这种无论开关是否都会计算分支,性能上欠考虑,进项目得下功夫优化,做作品完全没有没问题


阿修模板

其实阿修大佬写的已经挺好了,就是吧,GUI框列表用的内置的,没额外写,功能全面,性能问题考虑也很周到,代码看起来非常专业。

参考总结

熊猫:内置渲染管线,界面好看,性能上存在一定问题,多选项使用按钮看起来不直观(他说Enum想用中文),熊猫大佬很美术

阿修:内置渲染管线,界面差点意思,性能使用宏开关不会并行计算,功能全面代码清晰,阿修大佬很技术

我的需求:URP轻量级渲染关系/通用渲染管线,界面采用熊猫的,计算采用阿修的宏开关

Shader制作

前言说了,项目Shader就不展示计算过程了,都是子模块拼接也不太复杂,这里说一下公开出来的参数


进入正题GUI环节

对应的就是这个下拉列表,就是写UI

写一些下拉列表判断,宏开关,自定义曲线的bool,

创建与材质参数中相对应的变量

将创建GUI显示变量与Shader变量链接起来

在OnGUI中 传值 以及各个列表创建

以扰动举例 主要参数已注释




混合模式判断与函数定义



补充

  1. 宏开多了,涉及变体数量问题,简单的计算还是要使用lerp去再优化回来,毕竟宏达到一定数量后,每多一个都会让变体数量几何倍数增长

  2. 因为各种功能贴图位比较多,float2 uv 会让 texcoord变多 ,需要使用float4 uv  然后  uv.xy  uv.zw 这样就可以一个texcoord控制两个贴图UV

  3. 因为溶解的开关我设置的是,不开启,溶解ADD,溶解ALPHA,属于选项类三选一,不存在两个同时开启情况,所以可以把两个溶解宏写在一行了,变体数量从128变为96(大致这个数波动不大)。

  4.因为自定义数据中的TEXCOORD是从UV1的TEXCOORD0.xy开始累积的,所以好多时候在连接自定义数据数据时,总是从TEXCOORD0.zw开始,原定的xy变为zw开始,zw变成xy,这很不舒服,只需要在中间加入UV2,这样custom就与代码里一一对应。同时,如果不使用前面的自定义曲线直接用后面的自定义曲线(例:主纹理,遮罩,扰动,溶解),如果直接用溶解的话custom1不开,那标注的所有曲线顺序都会错乱,可以拿脚本去控制,custom链接可是这意味着一个粒子发射器一个脚本,所以我们在材质里给出提示,要是用自定义数据,就按照UV2,Custom1,Custom2都启动。详细请看粒子发射器顶点数据流。

5. 最后顶点颜色在输出前最后乘,这样可以作为总颜色控制,避免在最开始乘完之后,后面有加效果或者其他计算导致顶点颜色无法作用总颜色控制。



其他的也有一些简单算法,就比较基础无非就是开行开纵,让我想起来上大学学网页开发课时候注意事项:开横开竖  空格间隔 字体字号 颜色编码


挖了熊猫的坑就得填上,不然直不起来腰。

阿修大佬貌似很忙,我问的问题可能比较简单,修佬也耐心的解答了一下


以上算是这次GUI的总结,URP,宏,GUI,Shader这次包含的东西也是很多,也很有趣,特此笔记


标签:
确定
评论(8)
小小小蘑菇
大佬 求联系方式 想进行商务合作啊
回复
640天前
蛋叫兽
nb
回复
859天前
修身
牛逼
回复
863天前
Duse
求分享shader链接
回复
863天前
门徒芋头
所以呢?别人都分享出来给大家用,你的呢?
回复
863天前
门徒芋头
回复
刺猬
呵呵~
回复
860天前
AimerLily
牛逼!TQL!堪称壮举! 既能满足性能,又能满足效果,梅开二度 有个不情之请,能分享下材质么?嘻嘻 好人一生平安!
回复
863天前
坏熊猫
牛逼 tql
回复
863天前
贤锅
666
回复
863天前
没有更多啦~
  • 咨询
    客服
  • 扫码加入QQ群 或搜索QQ群号: 797421367
  • 扫码关注公众号 或微信搜索: cokey游戏特效