babylon.roadProceduralTexture.min.js 2.3 KB

1
  1. var __extends=this&&this.__extends||(function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,r){e.__proto__=r}||function(e,r){for(var o in r)r.hasOwnProperty(o)&&(e[o]=r[o])};return function(r,o){function t(){this.constructor=r}e(r,o),r.prototype=null===o?Object.create(o):(t.prototype=o.prototype,new t)}})(),__decorate=this&&this.__decorate||function(e,r,o,t){var n,a=arguments.length,i=a<3?r:null===t?t=Object.getOwnPropertyDescriptor(r,o):t;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,r,o,t);else for(var c=e.length-1;c>=0;c--)(n=e[c])&&(i=(a<3?n(i):a>3?n(r,o,i):n(r,o))||i);return a>3&&i&&Object.defineProperty(r,o,i),i},BABYLON;!(function(e){var r=(function(r){function o(o,t,n,a,i){var c=r.call(this,o,t,"roadProceduralTexture",n,a,i)||this;return c._roadColor=new e.Color3(.53,.53,.53),c.updateShaderUniforms(),c}return __extends(o,r),o.prototype.updateShaderUniforms=function(){this.setColor3("roadColor",this._roadColor)},Object.defineProperty(o.prototype,"roadColor",{get:function(){return this._roadColor},set:function(e){this._roadColor=e,this.updateShaderUniforms()},enumerable:!0,configurable:!0}),o.prototype.serialize=function(){var o=e.SerializationHelper.Serialize(this,r.prototype.serialize.call(this));return o.customType="BABYLON.RoadProceduralTexture",o},o.Parse=function(r,t,n){return e.SerializationHelper.Parse((function(){return new o(r.name,r._size,t,void 0,r._generateMipMaps)}),r,t,n)},__decorate([e.serializeAsColor3()],o.prototype,"roadColor",null),o})(e.ProceduralTexture);e.RoadProceduralTexture=r})(BABYLON||(BABYLON={})),BABYLON.Effect.ShadersStore.roadProceduralTexturePixelShader="precision highp float;\nvarying vec2 vUV; \nuniform vec3 roadColor;\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(void) {\nfloat ratioy=mod(gl_FragCoord.y*100.0 ,fbm(vUV*2.0));\nvec3 color=roadColor*ratioy;\ngl_FragColor=vec4(color,1.0);\n}";