From f848b7508aec093a80fd9a72ed83727ac4a1d1c7 Mon Sep 17 00:00:00 2001 From: mrdoob Date: Wed, 7 Jan 2026 18:06:24 +0900 Subject: [PATCH] Sky/SkyMesh: Added procedural clouds. (#32682) --- examples/jsm/objects/Sky.js | 77 ++++++++++++- examples/jsm/objects/SkyMesh.js | 115 ++++++++++++++++++- examples/screenshots/webgl_shaders_ocean.jpg | Bin 24141 -> 23059 bytes examples/screenshots/webgl_shaders_sky.jpg | Bin 16798 -> 17086 bytes examples/screenshots/webgpu_ocean.jpg | Bin 17260 -> 17464 bytes examples/screenshots/webgpu_sky.jpg | Bin 14680 -> 15010 bytes examples/webgl_shaders_ocean.html | 14 ++- examples/webgl_shaders_sky.html | 22 ++-- examples/webgpu_ocean.html | 12 +- examples/webgpu_sky.html | 13 ++- 10 files changed, 238 insertions(+), 15 deletions(-) diff --git a/examples/jsm/objects/Sky.js b/examples/jsm/objects/Sky.js index b38759a8825081..e5a63284427c05 100644 --- a/examples/jsm/objects/Sky.js +++ b/examples/jsm/objects/Sky.js @@ -72,7 +72,13 @@ Sky.SkyShader = { 'mieCoefficient': { value: 0.005 }, 'mieDirectionalG': { value: 0.8 }, 'sunPosition': { value: new Vector3() }, - 'up': { value: new Vector3( 0, 1, 0 ) } + 'up': { value: new Vector3( 0, 1, 0 ) }, + 'cloudScale': { value: 0.0002 }, + 'cloudSpeed': { value: 0.0001 }, + 'cloudCoverage': { value: 0.4 }, + 'cloudDensity': { value: 0.4 }, + 'cloudElevation': { value: 0.5 }, + 'time': { value: 0.0 } }, vertexShader: /* glsl */` @@ -156,6 +162,39 @@ Sky.SkyShader = { uniform float mieDirectionalG; uniform vec3 up; + uniform float cloudScale; + uniform float cloudSpeed; + uniform float cloudCoverage; + uniform float cloudDensity; + uniform float cloudElevation; + uniform float time; + + // Cloud noise functions + float hash( vec2 p ) { + return fract( sin( dot( p, vec2( 127.1, 311.7 ) ) ) * 43758.5453123 ); + } + + float noise( vec2 p ) { + vec2 i = floor( p ); + vec2 f = fract( p ); + f = f * f * ( 3.0 - 2.0 * f ); + float a = hash( i ); + float b = hash( i + vec2( 1.0, 0.0 ) ); + float c = hash( i + vec2( 0.0, 1.0 ) ); + float d = hash( i + vec2( 1.0, 1.0 ) ); + return mix( mix( a, b, f.x ), mix( c, d, f.x ), f.y ); + } + + float fbm( vec2 p ) { + float value = 0.0; + float amplitude = 0.5; + for ( int i = 0; i < 5; i ++ ) { + value += amplitude * noise( p ); + p *= 2.0; + amplitude *= 0.5; + } + return value; + } // constants for atmospheric scattering const float pi = 3.141592653589793238462643383279502884197169; @@ -222,6 +261,42 @@ Sky.SkyShader = { vec3 texColor = ( Lin + L0 ) * 0.04 + vec3( 0.0, 0.0003, 0.00075 ); + // Clouds + if ( direction.y > 0.0 && cloudCoverage > 0.0 ) { + + // Project to cloud plane (higher elevation = clouds appear lower/closer) + float elevation = mix( 1.0, 0.1, cloudElevation ); + vec2 cloudUV = direction.xz / ( direction.y * elevation ); + cloudUV *= cloudScale; + cloudUV += time * cloudSpeed; + + // Multi-octave noise for fluffy clouds + float cloudNoise = fbm( cloudUV * 1000.0 ); + cloudNoise += 0.5 * fbm( cloudUV * 2000.0 + 3.7 ); + cloudNoise = cloudNoise * 0.5 + 0.5; + + // Apply coverage threshold + float cloudMask = smoothstep( 1.0 - cloudCoverage, 1.0 - cloudCoverage + 0.3, cloudNoise ); + + // Fade clouds near horizon (adjusted by elevation) + float horizonFade = smoothstep( 0.0, 0.1 + 0.2 * cloudElevation, direction.y ); + cloudMask *= horizonFade; + + // Cloud lighting based on sun position + float sunInfluence = dot( direction, vSunDirection ) * 0.5 + 0.5; + float daylight = max( 0.0, vSunDirection.y * 2.0 ); + + // Base cloud color affected by atmosphere + vec3 atmosphereColor = Lin * 0.04; + vec3 cloudColor = mix( vec3( 0.3 ), vec3( 1.0 ), daylight ); + cloudColor = mix( cloudColor, atmosphereColor + vec3( 1.0 ), sunInfluence * 0.5 ); + cloudColor *= vSunE * 0.00002; + + // Blend clouds with sky + texColor = mix( texColor, cloudColor, cloudMask * cloudDensity ); + + } + gl_FragColor = vec4( texColor, 1.0 ); #include diff --git a/examples/jsm/objects/SkyMesh.js b/examples/jsm/objects/SkyMesh.js index 466ec571346083..b61e04ed59d5ae 100644 --- a/examples/jsm/objects/SkyMesh.js +++ b/examples/jsm/objects/SkyMesh.js @@ -6,7 +6,7 @@ import { NodeMaterial } from 'three/webgpu'; -import { Fn, float, vec3, acos, add, mul, clamp, cos, dot, exp, max, mix, modelViewProjection, normalize, positionWorld, pow, smoothstep, sub, varyingProperty, vec4, uniform, cameraPosition } from 'three/tsl'; +import { Fn, float, vec2, vec3, acos, add, mul, clamp, cos, dot, exp, max, mix, modelViewProjection, normalize, positionWorld, pow, smoothstep, sub, varyingProperty, vec4, uniform, cameraPosition, fract, floor, sin, time, Loop, If } from 'three/tsl'; /** * Represents a skydome for scene backgrounds. Based on [A Practical Analytic Model for Daylight](https://www.researchgate.net/publication/220720443_A_Practical_Analytic_Model_for_Daylight) @@ -82,6 +82,41 @@ class SkyMesh extends Mesh { */ this.upUniform = uniform( new Vector3( 0, 1, 0 ) ); + /** + * The cloud scale uniform. + * + * @type {UniformNode} + */ + this.cloudScale = uniform( 0.0002 ); + + /** + * The cloud speed uniform. + * + * @type {UniformNode} + */ + this.cloudSpeed = uniform( 0.0001 ); + + /** + * The cloud coverage uniform. + * + * @type {UniformNode} + */ + this.cloudCoverage = uniform( 0.4 ); + + /** + * The cloud density uniform. + * + * @type {UniformNode} + */ + this.cloudDensity = uniform( 0.4 ); + + /** + * The cloud elevation uniform. + * + * @type {UniformNode} + */ + this.cloudElevation = uniform( 0.5 ); + /** * This flag can be used for type testing. * @@ -230,7 +265,83 @@ class SkyMesh extends Mesh { const sundisk = smoothstep( sunAngularDiameterCos, sunAngularDiameterCos.add( 0.00002 ), cosTheta ); L0.addAssign( vSunE.mul( 19000.0 ).mul( Fex ).mul( sundisk ) ); - const texColor = add( Lin, L0 ).mul( 0.04 ).add( vec3( 0.0, 0.0003, 0.00075 ) ); + const texColor = add( Lin, L0 ).mul( 0.04 ).add( vec3( 0.0, 0.0003, 0.00075 ) ).toVar(); + + // Cloud noise functions + const hash = Fn( ( [ p ] ) => { + + return fract( sin( dot( p, vec2( 127.1, 311.7 ) ) ).mul( 43758.5453123 ) ); + + } ); + + const noise = Fn( ( [ p_immutable ] ) => { + + const p = vec2( p_immutable ).toVar(); + const i = floor( p ); + const f = fract( p ); + const ff = f.mul( f ).mul( sub( 3.0, f.mul( 2.0 ) ) ); + + const a = hash( i ); + const b = hash( add( i, vec2( 1.0, 0.0 ) ) ); + const c = hash( add( i, vec2( 0.0, 1.0 ) ) ); + const d = hash( add( i, vec2( 1.0, 1.0 ) ) ); + + return mix( mix( a, b, ff.x ), mix( c, d, ff.x ), ff.y ); + + } ); + + const fbm = Fn( ( [ p_immutable ] ) => { + + const p = vec2( p_immutable ).toVar(); + const value = float( 0.0 ).toVar(); + const amplitude = float( 0.5 ).toVar(); + + Loop( 5, () => { + + value.addAssign( amplitude.mul( noise( p ) ) ); + p.mulAssign( 2.0 ); + amplitude.mulAssign( 0.5 ); + + } ); + + return value; + + } ); + + // Clouds + If( direction.y.greaterThan( 0.0 ).and( this.cloudCoverage.greaterThan( 0.0 ) ), () => { + + // Project to cloud plane (higher elevation = clouds appear lower/closer) + const elevation = mix( 1.0, 0.1, this.cloudElevation ); + const cloudUV = direction.xz.div( direction.y.mul( elevation ) ).toVar(); + cloudUV.mulAssign( this.cloudScale ); + cloudUV.addAssign( time.mul( this.cloudSpeed ) ); + + // Multi-octave noise for fluffy clouds + const cloudNoise = fbm( cloudUV.mul( 1000.0 ) ).add( fbm( cloudUV.mul( 2000.0 ).add( 3.7 ) ).mul( 0.5 ) ).toVar(); + cloudNoise.assign( cloudNoise.mul( 0.5 ).add( 0.5 ) ); + + // Apply coverage threshold + const cloudMask = smoothstep( sub( 1.0, this.cloudCoverage ), sub( 1.0, this.cloudCoverage ).add( 0.3 ), cloudNoise ).toVar(); + + // Fade clouds near horizon (adjusted by elevation) + const horizonFade = smoothstep( 0.0, add( 0.1, mul( 0.2, this.cloudElevation ) ), direction.y ); + cloudMask.mulAssign( horizonFade ); + + // Cloud lighting based on sun position + const sunInfluence = dot( direction, vSunDirection ).mul( 0.5 ).add( 0.5 ); + const daylight = max( 0.0, vSunDirection.y.mul( 2.0 ) ); + + // Base cloud color affected by atmosphere + const atmosphereColor = Lin.mul( 0.04 ); + const cloudColor = mix( vec3( 0.3 ), vec3( 1.0 ), daylight ).toVar(); + cloudColor.assign( mix( cloudColor, atmosphereColor.add( vec3( 1.0 ) ), sunInfluence.mul( 0.5 ) ) ); + cloudColor.mulAssign( vSunE.mul( 0.00002 ) ); + + // Blend clouds with sky + texColor.assign( mix( texColor, cloudColor, cloudMask.mul( this.cloudDensity ) ) ); + + } ); return vec4( texColor, 1.0 ); diff --git a/examples/screenshots/webgl_shaders_ocean.jpg b/examples/screenshots/webgl_shaders_ocean.jpg index a25240c49948f491c43a16ca37f2ffb93e6dfa51..00d681246b49abc12b73fc10a4c31699c44a822b 100644 GIT binary patch delta 22637 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Ξ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
q_@mvzGUtaUQb&oiUl> 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 diff --git a/examples/screenshots/webgpu_ocean.jpg b/examples/screenshots/webgpu_ocean.jpg index 7dfcae264c3d2b27454946ca4d87f1121a75fb7b..ed9d8fc96862d04090b133c683c796d4682c1361 100644 GIT binary patch delta 16998 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 vaL`}s5|zkja4_Hw~_mdx$yr1)u!Y{ delta 7948 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 diff --git a/examples/webgl_shaders_ocean.html b/examples/webgl_shaders_ocean.html index 3b11646bcb092d..94688032e6852d 100644 --- a/examples/webgl_shaders_ocean.html +++ b/examples/webgl_shaders_ocean.html @@ -36,7 +36,7 @@ let container, stats; let camera, scene, renderer; - let controls, water, sun, mesh, bloomPass; + let controls, water, sun, sky, mesh, bloomPass; init(); @@ -99,7 +99,7 @@ // Skybox - const sky = new Sky(); + sky = new Sky(); sky.scale.setScalar( 10000 ); scene.add( sky ); @@ -109,6 +109,9 @@ skyUniforms[ 'rayleigh' ].value = 2; skyUniforms[ 'mieCoefficient' ].value = 0.005; skyUniforms[ 'mieDirectionalG' ].value = 0.8; + skyUniforms[ 'cloudCoverage' ].value = 0.4; + skyUniforms[ 'cloudDensity' ].value = 0.5; + skyUniforms[ 'cloudElevation' ].value = 0.5; const parameters = { elevation: 2, @@ -191,6 +194,12 @@ folderBloom.add( bloomPass, 'radius', 0, 1, 0.01 ); folderBloom.open(); + const folderClouds = gui.addFolder( 'Clouds' ); + folderClouds.add( skyUniforms.cloudCoverage, 'value', 0, 1, 0.01 ).name( 'coverage' ); + folderClouds.add( skyUniforms.cloudDensity, 'value', 0, 1, 0.01 ).name( 'density' ); + folderClouds.add( skyUniforms.cloudElevation, 'value', 0, 1, 0.01 ).name( 'elevation' ); + folderClouds.open(); + // window.addEventListener( 'resize', onWindowResize ); @@ -222,6 +231,7 @@ mesh.rotation.z = time * 0.51; water.material.uniforms[ 'time' ].value += 1.0 / 60.0; + sky.material.uniforms[ 'time' ].value = time; renderer.render( scene, camera ); diff --git a/examples/webgl_shaders_sky.html b/examples/webgl_shaders_sky.html index 817aa1d1eb0d4f..7d01d8b60de0e1 100644 --- a/examples/webgl_shaders_sky.html +++ b/examples/webgl_shaders_sky.html @@ -33,7 +33,6 @@ let sky, sun; init(); - render(); function initSky() { @@ -53,7 +52,10 @@ mieDirectionalG: 0.7, elevation: 2, azimuth: 180, - exposure: renderer.toneMappingExposure + exposure: renderer.toneMappingExposure, + cloudCoverage: 0.4, + cloudDensity: 0.4, + cloudElevation: 0.5 }; function guiChanged() { @@ -63,6 +65,9 @@ uniforms[ 'rayleigh' ].value = effectController.rayleigh; uniforms[ 'mieCoefficient' ].value = effectController.mieCoefficient; uniforms[ 'mieDirectionalG' ].value = effectController.mieDirectionalG; + uniforms[ 'cloudCoverage' ].value = effectController.cloudCoverage; + uniforms[ 'cloudDensity' ].value = effectController.cloudDensity; + uniforms[ 'cloudElevation' ].value = effectController.cloudElevation; const phi = THREE.MathUtils.degToRad( 90 - effectController.elevation ); const theta = THREE.MathUtils.degToRad( effectController.azimuth ); @@ -72,7 +77,6 @@ uniforms[ 'sunPosition' ].value.copy( sun ); renderer.toneMappingExposure = effectController.exposure; - renderer.render( scene, camera ); } @@ -86,6 +90,11 @@ gui.add( effectController, 'azimuth', - 180, 180, 0.1 ).onChange( guiChanged ); gui.add( effectController, 'exposure', 0, 1, 0.0001 ).onChange( guiChanged ); + const folderClouds = gui.addFolder( 'Clouds' ); + folderClouds.add( effectController, 'cloudCoverage', 0, 1, 0.01 ).name( 'coverage' ).onChange( guiChanged ); + folderClouds.add( effectController, 'cloudDensity', 0, 1, 0.01 ).name( 'density' ).onChange( guiChanged ); + folderClouds.add( effectController, 'cloudElevation', 0, 1, 0.01 ).name( 'elevation' ).onChange( guiChanged ); + guiChanged(); } @@ -103,12 +112,12 @@ renderer = new THREE.WebGLRenderer(); renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); + renderer.setAnimationLoop( animate ); renderer.toneMapping = THREE.ACESFilmicToneMapping; renderer.toneMappingExposure = 0.5; document.body.appendChild( renderer.domElement ); const controls = new OrbitControls( camera, renderer.domElement ); - controls.addEventListener( 'change', render ); //controls.maxPolarAngle = Math.PI / 2; controls.enableZoom = false; controls.enablePan = false; @@ -126,12 +135,11 @@ renderer.setSize( window.innerWidth, window.innerHeight ); - render(); - } - function render() { + function animate() { + sky.material.uniforms[ 'time' ].value = performance.now() * 0.001; renderer.render( scene, camera ); } diff --git a/examples/webgpu_ocean.html b/examples/webgpu_ocean.html index 2df49543c57530..26618061d957d0 100644 --- a/examples/webgpu_ocean.html +++ b/examples/webgpu_ocean.html @@ -47,7 +47,7 @@ let container; let camera, scene, renderer, postProcessing; - let controls, water, sun, mesh, bloomPass; + let controls, water, sun, sky, mesh, bloomPass; init(); @@ -115,7 +115,7 @@ // Skybox - const sky = new SkyMesh(); + sky = new SkyMesh(); sky.scale.setScalar( 10000 ); scene.add( sky ); @@ -123,6 +123,9 @@ sky.rayleigh.value = 2; sky.mieCoefficient.value = 0.005; sky.mieDirectionalG.value = 0.8; + sky.cloudCoverage.value = 0.4; + sky.cloudDensity.value = 0.5; + sky.cloudElevation.value = 0.5; const parameters = { elevation: 2, @@ -195,6 +198,11 @@ folderBloom.add( bloomPass.strength, 'value', 0, 3, 0.01 ).name( 'strength' ); folderBloom.add( bloomPass.radius, 'value', 0, 1, 0.01 ).name( 'radius' ); + const folderClouds = gui.addFolder( 'Clouds' ); + folderClouds.add( sky.cloudCoverage, 'value', 0, 1, 0.01 ).name( 'coverage' ); + folderClouds.add( sky.cloudDensity, 'value', 0, 1, 0.01 ).name( 'density' ); + folderClouds.add( sky.cloudElevation, 'value', 0, 1, 0.01 ).name( 'elevation' ); + // window.addEventListener( 'resize', onWindowResize ); diff --git a/examples/webgpu_sky.html b/examples/webgpu_sky.html index 6610da08086276..78f5e563f62571 100644 --- a/examples/webgpu_sky.html +++ b/examples/webgpu_sky.html @@ -64,7 +64,10 @@ mieDirectionalG: 0.7, elevation: 2, azimuth: 180, - exposure: renderer.toneMappingExposure + exposure: renderer.toneMappingExposure, + cloudCoverage: 0.4, + cloudDensity: 0.4, + cloudElevation: 0.5 }; function guiChanged() { @@ -73,6 +76,9 @@ sky.rayleigh.value = effectController.rayleigh; sky.mieCoefficient.value = effectController.mieCoefficient; sky.mieDirectionalG.value = effectController.mieDirectionalG; + sky.cloudCoverage.value = effectController.cloudCoverage; + sky.cloudDensity.value = effectController.cloudDensity; + sky.cloudElevation.value = effectController.cloudElevation; const phi = THREE.MathUtils.degToRad( 90 - effectController.elevation ); const theta = THREE.MathUtils.degToRad( effectController.azimuth ); @@ -95,6 +101,11 @@ gui.add( effectController, 'azimuth', - 180, 180, 0.1 ).onChange( guiChanged ); gui.add( effectController, 'exposure', 0, 1, 0.0001 ).onChange( guiChanged ); + const folderClouds = gui.addFolder( 'Clouds' ); + folderClouds.add( effectController, 'cloudCoverage', 0, 1, 0.01 ).name( 'coverage' ).onChange( guiChanged ); + folderClouds.add( effectController, 'cloudDensity', 0, 1, 0.01 ).name( 'density' ).onChange( guiChanged ); + folderClouds.add( effectController, 'cloudElevation', 0, 1, 0.01 ).name( 'elevation' ).onChange( guiChanged ); + guiChanged(); }