atmosphere.glsl
716 字节
@export ecgl.atmosphere.vertex
attribute vec3 position: POSITION;
attribute vec3 normal : NORMAL;
uniform mat4 worldViewProjection : WORLDVIEWPROJECTION;
uniform mat4 normalMatrix : WORLDINVERSETRANSPOSE;
varying vec3 v_Normal;
void main() {
v_Normal = normalize((normalMatrix * vec4(normal, 0.0)).xyz);
gl_Position = worldViewProjection * vec4(position, 1.0);
}
@end
@export ecgl.atmosphere.fragment
uniform mat4 viewTranspose: VIEWTRANSPOSE;
uniform float glowPower;
uniform vec3 glowColor;
varying vec3 v_Normal;
void main() {
float intensity = pow(1.0 - dot(v_Normal, (viewTranspose * vec4(0.0, 0.0, 1.0, 0.0)).xyz), glowPower);
gl_FragColor = vec4(glowColor, intensity * intensity);
}
@end