有没有一种滤镜shader能只改变颜色,不改变透明度??

我用
vec4 v = texture2D(CC_Texture0, v_texCoord).rgba;
float f = (v.r + v.g + v.b) / 3.0;
gl_FragColor.rgb = vec3(f , f , f );

不行,颜色是改变了,透明度没有了,我用
vec4 v = texture2D(CC_Texture0, v_texCoord).rgba;
float f = (v.r + v.g + v.b) / 3.0;
gl_FragColor.rgb = vec4(f , f , f ,v.a );

也不行,因为一旦滤镜在控制单个对象 透明度了,那所有对象只能分别挂滤镜,因为对象 透明度不同,那样性能开销受不了。

有没有一个写法能只改变对象 颜色,保有原有透明度?

每个Node有一个单独的color变量,用这个来控制透明度吧?

写法是怎样?挂了shader貌似控制透明无效了?

mark

不明白,意思是原本可以整体使用shader吗?shader可以不用针对单个对象吗?