版本cocos3.8.8,需要做一个红蓝层分离,为了让不同层级的节点有单独的分离视距,就每个节点都挂了这个效果,但是除了背景效果比较好,其他图层都会有红蓝的纯色描边与背景完全不融合,如果调透明度他又会颜色变的很暗这个问题应该怎么解决?难道只能获取所有节点图层依次渲染到一个节点上再融合吗?
这是我的着色器代码
CCProgram sprite-fs %{
precision highp float;
#include <builtin/internal/embedded-alpha>
#include <builtin/internal/alpha-test>
in vec4 color;
in vec2 uv0;
#pragma builtin(local)
layout(set = 2, binding = 12)uniform sampler2D cc_spriteTexture;
uniform MyBuffer {
float u_offset;
float u_leftIntensity;
float u_rightIntensity;
};
vec4 frag() {
vec4 o = vec4(1, 1, 1, 1);
// o *= CCSampleWithAlphaSeparated(cc_spriteTexture, uv0);
vec4 leftCol = CCSampleWithAlphaSeparated(cc_spriteTexture, uv0 + vec2(u_offset * 0.001, 0));
vec4 rightCol = CCSampleWithAlphaSeparated(cc_spriteTexture, uv0 - vec2(u_offset * 0.001, 0));
leftCol.gb = vec2(0.0, 0.0);
rightCol.r = 0.0;
vec4 col;
col.rgb = leftCol.rgb * u_leftIntensity + rightCol.rgb * u_leftIntensity;
col.a = leftCol.a* rightCol.a;
o *= col;
ALPHA_TEST(o);
return o;
}
}%
