1 |
- var __extends=this&&this.__extends||(function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,o){e.__proto__=o}||function(e,o){for(var r in o)o.hasOwnProperty(r)&&(e[r]=o[r])};return function(o,r){function t(){this.constructor=o}e(o,r),o.prototype=null===r?Object.create(r):(t.prototype=r.prototype,new t)}})(),__decorate=this&&this.__decorate||function(e,o,r,t){var n,i=arguments.length,l=i<3?o:null===t?t=Object.getOwnPropertyDescriptor(o,r):t;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)l=Reflect.decorate(e,o,r,t);else for(var c=e.length-1;c>=0;c--)(n=e[c])&&(l=(i<3?n(l):i>3?n(o,r,l):n(o,r))||l);return i>3&&l&&Object.defineProperty(o,r,l),l},BABYLON;!(function(e){var o=(function(o){function r(r,t,n,i,l){var c=o.call(this,r,t,"cloudProceduralTexture",n,i,l)||this;return c._skyColor=new e.Color4(.15,.68,1,1),c._cloudColor=new e.Color4(1,1,1,1),c.updateShaderUniforms(),c}return __extends(r,o),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(e){this._skyColor=e,this.updateShaderUniforms()},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"cloudColor",{get:function(){return this._cloudColor},set:function(e){this._cloudColor=e,this.updateShaderUniforms()},enumerable:!0,configurable:!0}),r.prototype.serialize=function(){var r=e.SerializationHelper.Serialize(this,o.prototype.serialize.call(this));return r.customType="BABYLON.CloudProceduralTexture",r},r.Parse=function(o,t,n){return e.SerializationHelper.Parse((function(){return new r(o.name,o._size,t,void 0,o._generateMipMaps)}),o,t,n)},__decorate([e.serializeAsColor4()],r.prototype,"skyColor",null),__decorate([e.serializeAsColor4()],r.prototype,"cloudColor",null),r})(e.ProceduralTexture);e.CloudProceduralTexture=o})(BABYLON||(BABYLON={})),BABYLON.Effect.ShadersStore.cloudProceduralTexturePixelShader="precision highp float;\nvarying vec2 vUV;\nuniform vec4 skyColor;\nuniform vec4 cloudColor;\nfloat rand(vec2 n) {\nreturn fract(cos(dot(n,vec2(12.9898,4.1414)))*43758.5453);\n}\nfloat noise(vec2 n) {\nconst vec2 d=vec2(0.0,1.0);\nvec2 b=floor(n),f=smoothstep(vec2(0.0),vec2(1.0),fract(n));\nreturn mix(mix(rand(b),rand(b+d.yx),f.x),mix(rand(b+d.xy),rand(b+d.yy),f.x),f.y);\n}\nfloat fbm(vec2 n) {\nfloat total=0.0,amplitude=1.0;\nfor (int i=0; i<4; i++) {\ntotal+=noise(n)*amplitude;\nn+=n;\namplitude*=0.5;\n}\nreturn total;\n}\nvoid main() {\nvec2 p=vUV*12.0;\nvec4 c=mix(skyColor,cloudColor,fbm(p));\ngl_FragColor=c;\n}\n";
|