65 lines
1.5 KiB
GLSL
65 lines
1.5 KiB
GLSL
#version 300 es
|
|
precision highp float;
|
|
uniform vec4 u_color;
|
|
uniform sampler2D u_texture;
|
|
uniform int vr_type;
|
|
in float _type;
|
|
in float _flag;
|
|
in vec3 _pos;
|
|
in vec2 _tex;
|
|
in vec4 _clr;
|
|
out vec4 color;
|
|
void main()
|
|
{
|
|
if (_type == 1.0)
|
|
{
|
|
vec4 c = texture(u_texture, _tex);
|
|
float a = c.a > 0.8 ? 1.0 : 0.0;
|
|
color = vec4(c.rgb, a);
|
|
}
|
|
else if (_type >= 2.0 && _type < 70.0)
|
|
{
|
|
float k = 1.0; // 渐进衰减
|
|
if (_flag > 110.0)
|
|
k = 0.8;
|
|
else if (_flag > 10.0)
|
|
k = 1.0 - (_flag-10.0)/500.0;
|
|
vec4 c = texture(u_texture, _tex*_type);
|
|
float a = c.a > 0.8 ? 1.0 : 0.0;
|
|
color = vec4(c.rgb*k, a);
|
|
}
|
|
else if (_type >= 70.0 && _type < 74.0)
|
|
{
|
|
float alpha = _flag / 100.0;
|
|
float h = _clr.a / 170.0;
|
|
float hs = 8.0 * h;
|
|
float hi = floor(hs);
|
|
float f = (hs) - floor(hs);
|
|
float q = 1.0 - f;
|
|
if (hi <= 0.0)
|
|
if(vr_type == 1)
|
|
color = vec4(0.0, 0.9, 1.0, alpha);
|
|
else
|
|
color = vec4(0.15,0.99,1.0, alpha);
|
|
else if (hi <= 1.0)
|
|
if(vr_type == 1)
|
|
color = vec4(0.0, f, 0.9, alpha);
|
|
else
|
|
color = vec4(0.20,0.73,0.92, alpha);
|
|
else if (hi <= 2.0)
|
|
if(vr_type == 1)
|
|
color = vec4(0.35, 1.0, 0.8, alpha);
|
|
else
|
|
color = vec4(0.15,0.99,1.0, alpha);
|
|
else
|
|
if(vr_type == 1)
|
|
color = vec4(0.15, 0.73, 1.0, alpha);
|
|
else
|
|
color = vec4(0.15,0.99,1.0, alpha);
|
|
}
|
|
else if (u_color.r+u_color.g+u_color.b > 0.01)
|
|
color = u_color;
|
|
else
|
|
color = texture(u_texture, _tex);
|
|
}
|