render: expose all params in mie sky shader

main
Dominik Madarász 2023-09-11 13:27:24 +02:00
parent 2e643e69c3
commit aa66b03929
5 changed files with 61 additions and 13 deletions

View File

@ -104,7 +104,7 @@
canvas.height = window.innerHeight; canvas.height = window.innerHeight;
window.addEventListener('resize', () => { window.addEventListener('resize', () => {
if (canvas.canResize) { if (canvas.canResize && !window.isFullscreen) {
canvas.width = window.innerWidth; canvas.width = window.innerWidth;
canvas.height = window.innerHeight; canvas.height = window.innerHeight;
} }
@ -143,7 +143,19 @@
} else if (elem.msRequestFullscreen) { /* IE11 */ } else if (elem.msRequestFullscreen) { /* IE11 */
elem.msRequestFullscreen(); elem.msRequestFullscreen();
} }
// window.isFullscreen = 1; /* assume we have entered fullscreen mode. */
} }
function exitFullscreen() {
if (!document.webkitIsFullScreen && !document.mozFullScreen && !document.msFullscreenElement)
window.isFullscreen = 0;
}
// document.addEventListener('fullscreenchange', exitFullscreen, false);
// document.addEventListener('mozfullscreenchange', exitFullscreen, false);
// document.addEventListener('MSFullscreenChange', exitFullscreen, false);
// document.addEventListener('webkitfullscreenchange', exitFullscreen, false);
</script> </script>
<script src="index.worker.coi.min.js"></script> <script src="index.worker.coi.min.js"></script>

View File

@ -1,4 +1,13 @@
uniform vec3 uSunPos;// = vec3( 0, 0.1, -1 ); // = [0, Math.cos(theta) * 0.3 + 0.2, -1]; uniform vec3 uSunPos;
uniform vec3 uRayOrigin;
uniform float uSunIntensity;
uniform float uPlanetRadius;
uniform float uAtmosphereRadius;
uniform vec3 uRayleighScattering;
uniform float uMieScattering;
uniform float uRayleighScaleHeight;
uniform float uMieScaleHeight;
uniform float uMiePreferredDirection;
in vec3 v_direction; in vec3 v_direction;
@ -11,16 +20,16 @@ vec3 atmosphere(vec3 r, vec3 r0, vec3 pSun, float iSun, float rPlanet, float rAt
void main() { void main() {
vec3 color = atmosphere( vec3 color = atmosphere(
normalize(v_direction), // normalized ray direction normalize(v_direction), // normalized ray direction
vec3(0,6372e3,0), // ray origin uRayOrigin, // ray origin
uSunPos, // position of the sun uSunPos, // position of the sun
22.0, // intensity of the sun uSunIntensity, // intensity of the sun
6371e3, // radius of the planet in meters uPlanetRadius, // radius of the planet in meters
6471e3, // radius of the atmosphere in meters uAtmosphereRadius, // radius of the atmosphere in meters
vec3(5.5e-6, 13.0e-6, 22.4e-6), // Rayleigh scattering coefficient uRayleighScattering, // Rayleigh scattering coefficient
21e-6, // Mie scattering coefficient uMieScattering, // Mie scattering coefficient
8e3, // Rayleigh scale height uRayleighScaleHeight, // Rayleigh scale height
1.2e3, // Mie scale height uMieScaleHeight, // Mie scale height
0.758 // Mie preferred scattering direction uMiePreferredDirection // Mie preferred scattering direction
); );
// Apply exposure. // Apply exposure.

View File

@ -341713,6 +341713,15 @@ skybox_t skybox(const char *asset, int flags) {
// set up mie defaults // set up mie defaults
shader_bind(sky.program); shader_bind(sky.program);
shader_vec3("uSunPos", vec3( 0, 0.1, -1 )); shader_vec3("uSunPos", vec3( 0, 0.1, -1 ));
shader_vec3("uRayOrigin", vec3(0.0, 6372000.0, 0.0));
shader_float("uSunIntensity", 22.0);
shader_float("uPlanetRadius", 6371000.0);
shader_float("uAtmosphereRadius", 6471000.0);
shader_vec3("uRayleighScattering", vec3(5.5e-6, 13.0e-6, 22.4e-6));
shader_float("uMieScattering", 21e-6);
shader_float("uRayleighScaleHeight", 8000.0);
shader_float("uMieScaleHeight", 1200.0);
shader_float("uMiePreferredDirection", 0.758);
} }
return sky; return sky;

View File

@ -2399,6 +2399,15 @@ skybox_t skybox(const char *asset, int flags) {
// set up mie defaults // set up mie defaults
shader_bind(sky.program); shader_bind(sky.program);
shader_vec3("uSunPos", vec3( 0, 0.1, -1 )); shader_vec3("uSunPos", vec3( 0, 0.1, -1 ));
shader_vec3("uRayOrigin", vec3(0.0, 6372000.0, 0.0));
shader_float("uSunIntensity", 22.0);
shader_float("uPlanetRadius", 6371000.0);
shader_float("uAtmosphereRadius", 6471000.0);
shader_vec3("uRayleighScattering", vec3(5.5e-6, 13.0e-6, 22.4e-6));
shader_float("uMieScattering", 21e-6);
shader_float("uRayleighScaleHeight", 8000.0);
shader_float("uMieScaleHeight", 1200.0);
shader_float("uMiePreferredDirection", 0.758);
} }
return sky; return sky;

View File

@ -12623,6 +12623,15 @@ skybox_t skybox(const char *asset, int flags) {
// set up mie defaults // set up mie defaults
shader_bind(sky.program); shader_bind(sky.program);
shader_vec3("uSunPos", vec3( 0, 0.1, -1 )); shader_vec3("uSunPos", vec3( 0, 0.1, -1 ));
shader_vec3("uRayOrigin", vec3(0.0, 6372000.0, 0.0));
shader_float("uSunIntensity", 22.0);
shader_float("uPlanetRadius", 6371000.0);
shader_float("uAtmosphereRadius", 6471000.0);
shader_vec3("uRayleighScattering", vec3(5.5e-6, 13.0e-6, 22.4e-6));
shader_float("uMieScattering", 21e-6);
shader_float("uRayleighScaleHeight", 8000.0);
shader_float("uMieScaleHeight", 1200.0);
shader_float("uMiePreferredDirection", 0.758);
} }
return sky; return sky;