Creator | 2.3版本材质/shader升级注意事项(附:色相/饱和度/亮度源码)

更多笔记和源码请访问公众号

关于材质系统/shader我就不再啰嗦了,论坛里很多大佬讲的很详细

CocosCreator升级到了2.3,材质系统也终于转正,去掉了《实验版》的title

shader是参考的大佬的项目:

https://github.com/wantnon2/EffectNodes-for-cocos2dx/tree/v3

转眼四五年过去了···

大佬应该是去做unity了吧,GitHub上的项目也没有再维护了

我做了六七年游戏,一直在用cocos,也算是老菜鸟了···

好了,废话不多说了,这里主要说一下2.3版本材质系统的注意事项

关于Effect的官方文档:

https://docs.cocos.com/creator3d/manual/zh/material-system/effect-syntax.html

没有色彩的世界是枯燥的,先让VSCode认识下Effect吧

在VSCode中搜索安装 Cocos Effect 插件:

2.3中对shader的语法要求更为严格,不过编辑器给出的错误提示也很清晰,大部分可以根据错误信息来更改

比如:

UBO后边必须要加分号:

HSL.effect - fs - 38: error EFX2209: missing semicolon after UBO ‘ARGS’ declaration

sampler2D必须在UBO外部声明

HSL.effect - fs - 36: error EFX2208: sampler uniforms must be declared outside blocks.

UBO内部不应出现 vec3 成员

HSL.effect - fs: error EFX2204: uniform vec3 a_position: please use 1, 2 or 4-component vectors to avoid implicit padding

UBO内部不允许任何会引入 padding 的成员声明顺序

HSL.effect - fs: error EFX2205: UBO ‘ARGS’ introduces implicit padding: 12 bytes before ‘a_position’, consider re-ordering the members

如果遇到其他无法调合的错误,也可以留言,一起交流

毕竟是脱离了实验版的材质嘛,还增加了很多功能:

更多精彩,自己发现吧~

最后给大家推荐一个教程:

https://learnopengl-cn.github.io/

ps:源码需在公众号回复:HSL

11赞

mark

感谢大佬

插眼。

:+1::+1:

插眼 TP

请问这个怎么用,是拖到管理器中作为组件给精灵加载就行吗?

放到管理器后,在精灵组件的材质部分拖拽该材质
设置参数你可以在代码中更改

感谢~大概会用了

mark~

我用了之后,在界面拖动,是有高亮效果的,但是代码设置的话没有效果,是什么原因?

参数是否在合理范围内? 界面拖动和代码设置,效果应该是一样的

解决了。。挂的HSL,永远会被冲掉,不知道为什么,所以我把HSL挂在第二个位置,然后刷新的时候先取2,然后setMaterial(0,material),再进行刷新就可以了~

最神奇是这个bug居然完成了我的需求,点上去高亮,移开正常。。。

我想指导水波效果怎么做的

circle.effect - vs - 28: error EFX2201: non-sampler uniforms must be declared in blocks.

大佬,请问这个是什么报错?

Creator 规定在 shader 中所有非 sampler 的 uniform 都应以 block 形式声明
uniform CorrectUBOOrder {
float f1_1;
float f1_2;
vec2 v2;
};

感谢感谢!