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