150 lines
2.3 KiB
Plaintext
150 lines
2.3 KiB
Plaintext
CCEffect %{
|
|
techniques:
|
|
- passes:
|
|
- vert: vs
|
|
frag: fs
|
|
blendState:
|
|
targets:
|
|
- blend: true
|
|
rasterizerState:
|
|
cullMode: none
|
|
properties:
|
|
texture: { value: white }
|
|
alphaThreshold: { value: 0.5 }
|
|
# 自定义参数
|
|
dh1: {
|
|
value: 0.0,
|
|
editor: {
|
|
tooltip: "染色1",
|
|
range: [0.0, 255255255.0]
|
|
}
|
|
}
|
|
dh2: {
|
|
value: 0.0,
|
|
editor: {
|
|
tooltip: "染色2",
|
|
range: [0.0, 255255255.0]
|
|
}
|
|
}
|
|
alp1: {
|
|
value: 0.0,
|
|
editor: {
|
|
tooltip: "透明度1",
|
|
range: [0.0, 1.0]
|
|
}
|
|
}
|
|
alp2: {
|
|
value: 0.0,
|
|
editor: {
|
|
tooltip: "透明度2",
|
|
range: [0.0, 1.0]
|
|
}
|
|
}
|
|
}%
|
|
|
|
|
|
CCProgram vs %{
|
|
precision highp float;
|
|
|
|
#include <cc-global>
|
|
#include <cc-local>
|
|
|
|
in vec3 a_position;
|
|
in vec4 a_color;
|
|
out vec4 v_color;
|
|
|
|
#if USE_TEXTURE
|
|
in vec2 a_uv0;
|
|
out vec2 v_uv0;
|
|
#endif
|
|
|
|
void main () {
|
|
vec4 pos = vec4(a_position, 1);
|
|
|
|
#if CC_USE_MODEL
|
|
pos = cc_matViewProj * cc_matWorld * pos;
|
|
#else
|
|
pos = cc_matViewProj * pos;
|
|
#endif
|
|
|
|
#if USE_TEXTURE
|
|
v_uv0 = a_uv0;
|
|
#endif
|
|
|
|
v_color = a_color;
|
|
|
|
gl_Position = pos;
|
|
}
|
|
}%
|
|
|
|
|
|
CCProgram fs %{
|
|
precision highp float;
|
|
|
|
#include <alpha-test>
|
|
#include <texture>
|
|
|
|
in vec4 v_color;
|
|
|
|
#if USE_TEXTURE
|
|
in vec2 v_uv0;
|
|
uniform sampler2D texture;
|
|
#endif
|
|
|
|
uniform DH {
|
|
//染色1
|
|
float dh1;
|
|
|
|
//染色2
|
|
float dh2;
|
|
|
|
//透明度
|
|
float alp1;
|
|
|
|
//透明度
|
|
float alp2;
|
|
};
|
|
|
|
void main () {
|
|
vec4 o = vec4(1, 1, 1, 1);
|
|
|
|
#if USE_TEXTURE
|
|
CCTexture(texture, v_uv0, o);
|
|
#endif
|
|
|
|
o *= v_color;
|
|
|
|
ALPHA_TEST(o);
|
|
if(o.r>=0.5){
|
|
o.a=0.0;
|
|
}
|
|
|
|
|
|
if(o.g >= 0.5){
|
|
o.r = dh1 / 1000000.0 / 255.0;
|
|
o.g = mod(dh1, 1000000.0) / 1000.0 / 255.0;
|
|
o.b = mod(dh1, 1000.0) / 255.0;
|
|
o.a = alp1;
|
|
if (dh1 == 0.0) {
|
|
o.a = 0.0;
|
|
}
|
|
|
|
}
|
|
else if(o.b >= 0.5){
|
|
o.r = dh2 / 1000000.0 / 255.0;
|
|
o.g = mod(dh2, 1000000.0) / 1000.0 / 255.0;
|
|
o.b = mod(dh2, 1000.0) / 255.0;
|
|
o.a = alp2;
|
|
if (dh2 == 0.0) {
|
|
o.a = 0.0;
|
|
}
|
|
}
|
|
else {
|
|
o.a = 0.0;
|
|
}
|
|
|
|
|
|
gl_FragColor = o;
|
|
}
|
|
}%
|