请教一个creator中使用shader的问题

[图片]
我的root节点(大钻石)下有很多小的sprite(小钻石),我需要写一个让root节点整体水波纹的抖动shader。不能逐个设置子节点的shader,那样实现出来的效果是不对的。
是不是我要每帧把总节点渲染到一张rendertexture中,然后设置这个sprite的shader?

我看了
https://github.com/fylz1125/ShaderDemoshttps://github.com/colin3dmax/CocosCreator/tree/master/2DLight 的代码
前者使用1.8,和我一样,但是他只能对指定的节点的cc.sprite操作
root.getComponent(cc.Sprite)._sgNode.setShaderProgram(program);
后者直接root._sgNode.setShaderProgram(program); 这样调用,他是1.6的代码,我的运行后没效果。

请问是否有好的方法实现我需要的功能,

提供一个思路:
1、把当前节点和子节点渲染到一张纹理上
2、把得到纹理创建一个精灵
3、对精灵设置shader
ps:如果当前节点和子节点不会每帧变化就不需要每帧把它们渲染到一张纹理上

我现在能想到的也是这样,每帧把总节点渲染到一张rendertexture中,然后设置这个sprite的shader。
但是我觉得这样可能会停浪费效率的,所以问问有没有更好的处理方案。

如果你的当前节点和子节点不会产生位移和其它动画,就不需要没帧渲染到一个纹理上,一次就够了。
如果有节点上有动画,那就适当的进行取舍。是选择水波纹的shader特效,还是要节点上的动画。

root节点整个这样做确实耗性能,可以考虑对背景等基本不产生变化的节点进行shader特效

应该只能这样了,我试试效率看看

找到了,要升级到2.0以后,camera里面有这个功能。rendertexture,我用1.8的版本,直接创建rendertexture,然后渲染上去的很卡很卡,估计里面有从显卡回读的功能。用2.0的camera就不卡了