3d棋牌游戏
之前版本可以通过shader传值修改uv,可以合批
升级到最新版本3.8.2就不可以合批了。
研究了assembler,似乎2d很好用。
3d uv偏移合批还是一头雾水,求高人赐予方法!!
先跪下了,Orz!
3d棋牌游戏
之前版本可以通过shader传值修改uv,可以合批
升级到最新版本3.8.2就不可以合批了。
研究了assembler,似乎2d很好用。
3d uv偏移合批还是一头雾水,求高人赐予方法!!
先跪下了,Orz!
3d可以用实例化属性。
一般通过顶点数据传值来处理不同对象的一些渲染差异。因为2d渲染对象一般是一个矩形,只有4个顶点,所以消耗不大。
3d模型顶点数量极大,并且需要计算3d空间的转换,所以用顶点数据的方式不合适。
1使用实例化属性,需要开启gpu instancing。shader里面有个宏,如果是自定义的shader需要再自己加一下。然后材质上要勾选上gpu instancing。
2实例化属性这个方法要求合批渲染的对象必须同一个模型,并且都使用同一个材质
3为每个meshRender设置自己的实例化属性即可,然后在shader里使用即可。
https://docs.cocos.com/creator/manual/zh/shader/instanced-attributes.html
具体怎么用看官方文档,自己建个工程试试。
解决,收工!!
看来还是可以写shader的,但是要用setInstancedAttribute传递参数。
感谢指点明路!!
通过这种方式有没有遇到模型上的贴图有间隙
请问有遇到setInstancedAttribute不生效的问题么,我这边也是要偏移uv合批 但是shader里的值就是收不到 表现就永远都是0 尝试过延迟设置依旧无效。直接在effect内部修改数值能看到效果,证明effect也没毛病。
没遇到,可以发个demo出来看看

找到问题了 ,是我自己粗心了 官方文档里是在 顶点着色器 声明了一个 in的 a_xxx参数 然后声明了一个out的xxx 我看文档 以为那个in a_xxx是fs里的东西就没写 没注意到参数都不同