#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); }