vertex_shader "uniform float health; uniform float armor; varying vec3 color; varying float value; void main() { vec4 eye_center = gl_ModelViewMatrix*vec4(0.0, 0.0, 0.0, 1.0); gl_Position = gl_ProjectionMatrix*vec4(eye_center.xyz+gl_Vertex.xyz, 1.0); float f1 = 1.0-1.0/pow(2.0, armor/2.0); float f2 = 0.5+0.5/(1.0+pow(2.0, armor/2.0-7.5)); color = vec3(f2, f1*f2, f1); value = clamp(health+0.5-mod(1.25-atan(gl_Vertex.y, gl_Vertex.x)/6.28319, 1.0), 0.0, 1.0); }"; fragment_shader "varying vec3 color; varying float value; void main() { gl_FragColor = vec4(color, 0.2+0.6*step(0.5, value)); }";