Mindustry/core/assets/shaders/planet.vert

26 lines
756 B
GLSL
Raw Normal View History

2020-01-11 08:27:10 +07:00
attribute vec4 a_position;
attribute vec3 a_normal;
attribute vec4 a_color;
2020-02-29 01:18:06 +07:00
uniform mat4 u_proj;
uniform mat4 u_trans;
2020-02-29 01:18:06 +07:00
uniform vec3 u_lightdir;
2020-04-02 23:32:55 +07:00
uniform vec3 u_camdir;
uniform vec3 u_ambientColor;
2020-02-29 01:18:06 +07:00
2020-01-11 08:27:10 +07:00
varying vec4 v_col;
2020-03-30 04:08:25 +07:00
const vec3 diffuse = vec3(0);
2020-04-03 01:56:53 +07:00
const float shinefalloff = 4.0;
const float shinelen = 0.2;
2020-01-11 08:27:10 +07:00
void main(){
vec3 norc = u_ambientColor * (diffuse + vec3(clamp((dot(a_normal, u_lightdir) + 1.0) / 2.0, 0.0, 1.0)));
2020-04-02 23:32:55 +07:00
float shinedot = max((-dot(u_camdir, a_normal) - (1.0 - shinelen)) / shinelen, 0.0);
2020-04-03 01:56:53 +07:00
float shinyness = (1.0 - a_color.a) * pow(shinedot, shinefalloff);
2020-04-02 23:32:55 +07:00
vec4 baseCol = vec4(a_color.rgb, 1.0);
2020-01-11 08:27:10 +07:00
v_col = mix(baseCol * vec4(norc, 1.0), vec4(1.0), shinyness * norc.r);
gl_Position = u_proj * u_trans * a_position;
2020-01-11 08:27:10 +07:00
}