@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