var BABYLON;!function(r){var o=function(o){function n(n,e,t,l,i){o.call(this,n,e,"cloudProceduralTexture",t,l,i),this._skyColor=new r.Color4(.15,.68,1,1),this._cloudColor=new r.Color4(1,1,1,1),this.updateShaderUniforms()}return __extends(n,o),n.prototype.updateShaderUniforms=function(){this.setColor4("skyColor",this._skyColor),this.setColor4("cloudColor",this._cloudColor)},Object.defineProperty(n.prototype,"skyColor",{get:function(){return this._skyColor},set:function(r){this._skyColor=r,this.updateShaderUniforms()},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"cloudColor",{get:function(){return this._cloudColor},set:function(r){this._cloudColor=r,this.updateShaderUniforms()},enumerable:!0,configurable:!0}),n}(r.ProceduralTexture);r.CloudProceduralTexture=o}(BABYLON||(BABYLON={})),BABYLON.Effect.ShadersStore.cloudProceduralTexturePixelShader="precision highp float;\r\n\r\nvarying vec2 vUV;\r\n\r\nuniform vec4 skyColor;\r\nuniform vec4 cloudColor;\r\n\r\nfloat rand(vec2 n) {\r\n return fract(cos(dot(n, vec2(12.9898, 4.1414))) * 43758.5453);\r\n}\r\n\r\nfloat noise(vec2 n) {\r\n const vec2 d = vec2(0.0, 1.0);\r\n vec2 b = floor(n), f = smoothstep(vec2(0.0), vec2(1.0), fract(n));\r\n return mix(mix(rand(b), rand(b + d.yx), f.x), mix(rand(b + d.xy), rand(b + d.yy), f.x), f.y);\r\n}\r\n\r\nfloat fbm(vec2 n) {\r\n float total = 0.0, amplitude = 1.0;\r\n for (int i = 0; i < 4; i++) {\r\n total += noise(n) * amplitude;\r\n n += n;\r\n amplitude *= 0.5;\r\n }\r\n return total;\r\n}\r\n\r\nvoid main() {\r\n\r\n vec2 p = vUV * 12.0;\r\n vec4 c = mix(skyColor, cloudColor, fbm(p));\r\n gl_FragColor = c;\r\n\r\n}\r\n\r\n";