【分享】自定义渲染合批之自定义顶点格式(附 Demo 和引擎源码解读)

那么插值出来的效果是如何跟我们用照片查看png的效果是一样的,这个有点疑惑

照片查看器显示的是图片(纹理)的颜色啊,跟顶点属性没关系。
默认的cc.Sprite shader如下。

mark!!!

hula. good work!

战略MARK啊

不知作者还能不能看到.
根据教程修改了一下, 为了灰度显示. 原来的灰度显示图片是无法合批的.
最后是成功了. 但是在浏览器运行时打开cocos的fps信息. 会显示drawcall在抖动.
比如原ui需要灰度和正常的混合显示. drawcall 100. 使用了你的办法修改后应该是整个合批 ui界面还剩20.
此时运行时的状态是一秒钟drawcall就先20后100 差不多1秒内一次 反复抖动.
这问题应该怎么解决?
creator版本2.4.6

先mark一下 这个这么重要的功能不知道官方什么时候能提供呢

你好,Creator3.7 的自定义顶点格式,应该怎么操作呢

MarkMarkMark

牛逼,V587!

大佬我在使用 3.x , 3.x 中如何自定义顶点呢

我看原生的实现方式本身就已经可以合批了

mark!!

mark!!

遇到个手机端web的渲染时间问题,切换到后台再回来 ,游戏内的逻辑时间与渲染时间不一致了,我尝试用时间补偿机制也不行,在电脑端就能正常补偿时间[苦涩]

把cc_time替换为你自己的变量,每帧更新,和业务逻辑保持时间同步

我也用的自定义渲染,传的顶点着色器属性数据批量做shader效果,里面的一个效果是要用cc_time.x 所以要再顶点传入一个开始时间来做,电脑端传入时间和切换暂停恢复能补偿中间缺失的时间,手机web端就无法补时间,只有切后台暂停恢复时有这个问题,我使用逻辑时间和渲染时间做的差值,这个情况怎么能把时间正常补时呢?

如果每帧传时间就会打断合批,我shader里在顶点传不同的数据就会渲染不同的效果

可以确认下cc_time具体是怎么算的
https://github.com/search?q=repo%3Acocos%2Fcocos-engine%20cc_time&type=code

如果多端效果不一致,可以不用cc_time,自己在材质里加一个uniform变量作为准确的时间。

那在顶点传入固定时间的话shader运行时按照时间累计去变化这个效果要怎么实现呢?哪个变量是固定累加的呢