Renders sky colors with Rayleigh and Mie scattering.
GLSL
635
11 commits
updated May 20, 2020
Renders sky colors with Rayleigh and Mie scattering.
npm install glsl-atmosphere
var quad = Geometry(gl)
.attr('aPosition', [
-1, -1, -1,
1, -1, -1,
1, 1, -1,
-1, -1, -1,
1, 1, -1,
-1, 1, -1
]);
program.bind();
quad.bind(program);
program.uniforms.uSunPos = [0, 0.1, -1];
quad.draw();
attribute vec3 aPosition;
varying vec3 vPosition;
void main() {
gl_Position = vec4(aPosition, 1.0);
vPosition = aPosition;
}
varying vec3 vPosition;
uniform vec3 uSunPos;
#pragma glslify: atmosphere = require(glsl-atmosphere)
void main() {
vec3 color = atmosphere(
normalize(vPosition), // normalized ray direction
vec3(0,6372e3,0), // ray origin
uSunPos, // position of the sun
22.0, // intensity of the sun
6371e3, // radius of the planet in meters
6471e3, // radius of the atmosphere in meters
vec3(5.5e-6, 13.0e-6, 22.4e-6), // Rayleigh scattering coefficient
21e-6, // Mie scattering coefficient
8e3, // Rayleigh scale height
1.2e3, // Mie scale height
0.758 // Mie preferred scattering direction
);
// Apply exposure.
color = 1.0 - exp(-1.0 * color);
gl_FragColor = vec4(color, 1);
}
#pragma glslify: atmosphere = require(glsl-atmosphere)
vec3 atmosphere(vec3 r, vec3 r0, vec3 pSun, float iSun, float rPlanet, float rAtmos, vec3 kRlh, float kMie, float shRlh, float shMie, float g)Returns a vec3 representing the color of the sky along a view direction.
Takes:
vec3 r normalized ray direction, typically a ray cast from the observers eye through a pixelvec3 r0 ray origin in meters, typically the position of the viewer's eyevec3 pSun the position of the sunfloat iSun intensity of the sunfloat rPlanet radius of the planet in metersfloat rAtoms radius of the atmosphere in metersvec3 kRlh Rayleigh scattering coefficientvec3 kMie Mie scattering coefficientfloat shRlh Rayleigh scale height in metersfloat shMie Mie scale height in metersfloat g Mie preferred scattering directionFor an Earth-like atmosphere, see the settings in the example above.
Overall
Maintained
Code review
Latest release
Releases this year
7,376 followers · starred Jan 2016
1,678 followers · starred Jan 2016
1,325 followers · starred Apr 2021
1,552 followers · starred Jan 2016
Renders sky colors with Rayleigh and Mie scattering.
GLSL
635
11 commits
updated May 20, 2020
Renders sky colors with Rayleigh and Mie scattering.
npm install glsl-atmosphere
var quad = Geometry(gl)
.attr('aPosition', [
-1, -1, -1,
1, -1, -1,
1, 1, -1,
-1, -1, -1,
1, 1, -1,
-1, 1, -1
]);
program.bind();
quad.bind(program);
program.uniforms.uSunPos = [0, 0.1, -1];
quad.draw();
attribute vec3 aPosition;
varying vec3 vPosition;
void main() {
gl_Position = vec4(aPosition, 1.0);
vPosition = aPosition;
}
varying vec3 vPosition;
uniform vec3 uSunPos;
#pragma glslify: atmosphere = require(glsl-atmosphere)
void main() {
vec3 color = atmosphere(
normalize(vPosition), // normalized ray direction
vec3(0,6372e3,0), // ray origin
uSunPos, // position of the sun
22.0, // intensity of the sun
6371e3, // radius of the planet in meters
6471e3, // radius of the atmosphere in meters
vec3(5.5e-6, 13.0e-6, 22.4e-6), // Rayleigh scattering coefficient
21e-6, // Mie scattering coefficient
8e3, // Rayleigh scale height
1.2e3, // Mie scale height
0.758 // Mie preferred scattering direction
);
// Apply exposure.
color = 1.0 - exp(-1.0 * color);
gl_FragColor = vec4(color, 1);
}
#pragma glslify: atmosphere = require(glsl-atmosphere)
vec3 atmosphere(vec3 r, vec3 r0, vec3 pSun, float iSun, float rPlanet, float rAtmos, vec3 kRlh, float kMie, float shRlh, float shMie, float g)Returns a vec3 representing the color of the sky along a view direction.
Takes:
vec3 r normalized ray direction, typically a ray cast from the observers eye through a pixelvec3 r0 ray origin in meters, typically the position of the viewer's eyevec3 pSun the position of the sunfloat iSun intensity of the sunfloat rPlanet radius of the planet in metersfloat rAtoms radius of the atmosphere in metersvec3 kRlh Rayleigh scattering coefficientvec3 kMie Mie scattering coefficientfloat shRlh Rayleigh scale height in metersfloat shMie Mie scale height in metersfloat g Mie preferred scattering directionFor an Earth-like atmosphere, see the settings in the example above.
Overall
Maintained
Code review
Latest release
Releases this year
7,376 followers · starred Jan 2016
1,678 followers · starred Jan 2016
1,325 followers · starred Apr 2021
1,552 followers · starred Jan 2016