因为我要的实际上是个vec2的数组,但是uniform里面定义了vec4之后貌似就不让用vec2数组了,所以我用了vec4数组。
properties里面理论上用[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],但我试过还会多一个报错是这个type error: Error EFX3302: illegal property declaration for ‘center’: wrong array length,用[0,0,0,0]反而没错的。
谁说的定义了vec4之后貌似就不让用vec2数组了?
你是咋定义的?
你应该是定义顺序不对违反了 UBO 内存布局策略吧?
uniform vec2 center[6]: array UBO members need to be 16-bytes-aligned to avoid implicit padding
是的,但我找不到合适的顺序……不过用vec4还是vec2应该不影响都能实现吧
uniform ARGS {
vec4 overlayColor; // 遮罩颜色 RGBA
vec2 center[6]; // 高亮中心(单位:像素)
vec2 rectSize[6]; // 高亮区域尺寸(单位:像素)
vec2 ui_resolution; // 屏幕分辨率(单位:像素)
float blur; // 羽化宽度(单位:像素)
};
你那链接里的是 Cocos 2.X 的语法,你一楼写的语法明显是 3.X 的,互不兼容的
嗯,2和3这点不兼容我就不知道了嘛…所以发帖注明是3.X的版本来问了
我用3.8.7试了,为啥没报错? 虽然没效果,实现有问题而已。
我用的3.8.5= =我也升级下试试吧
你参数怎么设置的? 是编辑器里就报错?还是预览报错?还是真机?
发现没报错的原因了,你没开USE_TEXTURE

开了,也没问题……
你要不把你项目打包成zip,帖子这里上传,我们再试试?
草了,我也突然好了……我是关掉USE_TEXTURE之后再打开也没了,估计是有什么缓存了吧……

透明度初始为1.0
后面合并使用min
不然原本应该是有6个重叠部分才是?
太感谢了!!!原来是个数学问题还以为啥呢……
建议center和rectSize直接用一个vec4
1赞



