babylonjs-materials 9.10.0 → 9.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- !function(e,i){"object"==typeof exports&&"undefined"!=typeof module?i(exports,require("babylonjs")):"function"==typeof define&&define.amd?define(["exports","babylonjs"],i):i((e="undefined"!=typeof globalThis?globalThis:e||self).BABYLON=e.BABYLON||{},e.BABYLON)}(this,function(e,i){"use strict";var t=function(e,i){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,i){e.__proto__=i}||function(e,i){for(var t in i)Object.prototype.hasOwnProperty.call(i,t)&&(e[t]=i[t])},t(e,i)};function n(e,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}function r(e,i,t,n){var r,o=arguments.length,a=o<3?i:null===n?n=Object.getOwnPropertyDescriptor(i,t):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,i,t,n);else for(var l=e.length-1;l>=0;l--)(r=e[l])&&(a=(o<3?r(a):o>3?r(i,t,a):r(i,t))||a);return o>3&&a&&Object.defineProperty(i,t,a),a}Object.create,Object.create,"function"==typeof SuppressedError&&SuppressedError;var o=function(e){function i(){var i=e.call(this)||this;return i.CLIPPLANE=!1,i.CLIPPLANE2=!1,i.CLIPPLANE3=!1,i.CLIPPLANE4=!1,i.CLIPPLANE5=!1,i.CLIPPLANE6=!1,i.OPACITY=!1,i.ANTIALIAS=!1,i.TRANSPARENT=!1,i.FOG=!1,i.PREMULTIPLYALPHA=!1,i.MAX_LINE=!1,i.UV1=!1,i.UV2=!1,i.INSTANCES=!1,i.THIN_INSTANCES=!1,i.IMAGEPROCESSINGPOSTPROCESS=!1,i.SKIPFINALCOLORCLAMP=!1,i.LOGARITHMICDEPTH=!1,i.rebuild(),i}return n(i,e),i}(i.MaterialDefines),a=function(e){function t(t,n,r){void 0===r&&(r=!1);var o=e.call(this,t,n,void 0,r)||this;return o.mainColor=i.Color3.Black(),o.lineColor=i.Color3.Teal(),o.gridRatio=1,o.gridOffset=i.Vector3.Zero(),o.majorUnitFrequency=10,o.minorUnitVisibility=.33,o.opacity=1,o.antialias=!0,o.preMultiplyAlpha=!1,o.useMaxLine=!1,o._gridControl=new i.Vector4(o.gridRatio,o.majorUnitFrequency,o.minorUnitVisibility,o.opacity),o._shadersLoaded=!1,o}return n(t,e),t.prototype.needAlphaBlending=function(){return this.opacity<1||this._opacityTexture&&this._opacityTexture.isReady()},t.prototype.needAlphaBlendingForMesh=function(e){return e.visibility<1||this.needAlphaBlending()},t.prototype.isReadyForSubMesh=function(e,t,n){var r=this,a=t._drawWrapper;if(this.isFrozen&&a.effect&&a._wasPreviouslyReady&&a._wasPreviouslyUsingInstances===n)return!0;t.materialDefines||(t.materialDefines=new o);var l=t.materialDefines,s=this.getScene();if(this._isReadyForSubMesh(t))return!0;if(l.TRANSPARENT!==this.opacity<1&&(l.TRANSPARENT=!l.TRANSPARENT,l.markAsUnprocessed()),l.PREMULTIPLYALPHA!=this.preMultiplyAlpha&&(l.PREMULTIPLYALPHA=!l.PREMULTIPLYALPHA,l.markAsUnprocessed()),l.MAX_LINE!==this.useMaxLine&&(l.MAX_LINE=!l.MAX_LINE,l.markAsUnprocessed()),l.ANTIALIAS!==this.antialias&&(l.ANTIALIAS=!l.ANTIALIAS,l.markAsUnprocessed()),l._areTexturesDirty&&(l._needUVs=!1,s.texturesEnabled&&this._opacityTexture&&i.MaterialFlags.OpacityTextureEnabled)){if(!this._opacityTexture.isReady())return!1;l._needUVs=!0,l.OPACITY=!0}if(i.PrepareDefinesForMisc(e,s,this._useLogarithmicDepth,!1,this.fogEnabled,!1,l,void 0,void 0,void 0,this._isVertexOutputInvariant),i.PrepareDefinesForFrameBoundValues(s,s.getEngine(),this,l,!!n),l.isDirty){l.markAsProcessed(),s.resetCachedMaterial(),i.PrepareDefinesForAttributes(e,l,!1,!1);var f=[i.VertexBuffer.PositionKind,i.VertexBuffer.NormalKind];l.UV1&&f.push(i.VertexBuffer.UVKind),l.UV2&&f.push(i.VertexBuffer.UV2Kind),l.IMAGEPROCESSINGPOSTPROCESS=s.imageProcessingConfiguration.applyByPostProcess,i.PrepareAttributesForInstances(f,l);var c=["projection","mainColor","lineColor","gridControl","gridOffset","vFogInfos","vFogColor","world","view","opacityMatrix","vOpacityInfos","visibility","logarithmicDepthConstant"],d=l.toString();i.AddClipPlaneUniforms(c),t.setEffect(s.getEngine().createEffect("grid",{attributes:f,uniformsNames:c,uniformBuffersNames:["Scene"],samplers:["opacitySampler"],defines:d,fallbacks:null,onCompiled:this.onCompiled,onError:this.onError,shaderLanguage:this._shaderLanguage,extraInitializationsAsync:this._shadersLoaded?void 0:function(){return e=r,i=void 0,n=function(){return function(e,i){var t,n,r,o={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return a.next=l(0),a.throw=l(1),a.return=l(2),"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function l(l){return function(s){return function(l){if(t)throw new TypeError("Generator is already executing.");for(;a&&(a=0,l[0]&&(o=0)),o;)try{if(t=1,n&&(r=2&l[0]?n.return:l[0]?n.throw||((r=n.return)&&r.call(n),0):n.next)&&!(r=r.call(n,l[1])).done)return r;switch(n=0,r&&(l=[2&l[0],r.value]),l[0]){case 0:case 1:r=l;break;case 4:return o.label++,{value:l[1],done:!1};case 5:o.label++,n=l[1],l=[0];continue;case 7:l=o.ops.pop(),o.trys.pop();continue;default:if(!((r=(r=o.trys).length>0&&r[r.length-1])||6!==l[0]&&2!==l[0])){o=0;continue}if(3===l[0]&&(!r||l[1]>r[0]&&l[1]<r[3])){o.label=l[1];break}if(6===l[0]&&o.label<r[1]){o.label=r[1],r=l;break}if(r&&o.label<r[2]){o.label=r[2],o.ops.push(l);break}r[2]&&o.ops.pop(),o.trys.pop();continue}l=i.call(e,o)}catch(e){l=[6,e],n=0}finally{t=r=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}([l,s])}}}(this,function(e){switch(e.label){case 0:return 1!==this.shaderLanguage?[3,2]:[4,Promise.all([Promise.resolve().then(function(){return m}),Promise.resolve().then(function(){return x})])];case 1:return e.sent(),[3,4];case 2:return[4,Promise.all([Promise.resolve().then(function(){return T}),Promise.resolve().then(function(){return D})])];case 3:e.sent(),e.label=4;case 4:return this._shadersLoaded=!0,[2]}})},new((t=void 0)||(t=Promise))(function(r,o){function a(e){try{s(n.next(e))}catch(e){o(e)}}function l(e){try{s(n.throw(e))}catch(e){o(e)}}function s(e){var i;e.done?r(e.value):(i=e.value,i instanceof t?i:new t(function(e){e(i)})).then(a,l)}s((n=n.apply(e,i||[])).next())});var e,i,t,n}},s.getEngine()),l,this._materialContext)}return!(!t.effect||!t.effect.isReady()||(l._renderId=s.getRenderId(),a._wasPreviouslyReady=!0,a._wasPreviouslyUsingInstances=!!n,0))},t.prototype.bindForSubMesh=function(e,t,n){var r=this.getScene(),o=n.materialDefines;if(o){var a=n.effect;a&&(this._activeEffect=a,this._activeEffect.setFloat("visibility",t.visibility),o.INSTANCES&&!o.THIN_INSTANCE||this.bindOnlyWorldMatrix(e),this.bindView(a),this.bindViewProjection(a),this._mustRebind(r,a,n)&&(this._activeEffect.setColor3("mainColor",this.mainColor),this._activeEffect.setColor3("lineColor",this.lineColor),this._activeEffect.setVector3("gridOffset",this.gridOffset),this._gridControl.x=this.gridRatio,this._gridControl.y=Math.round(this.majorUnitFrequency),this._gridControl.z=this.minorUnitVisibility,this._gridControl.w=this.opacity,this._activeEffect.setVector4("gridControl",this._gridControl),this._opacityTexture&&i.MaterialFlags.OpacityTextureEnabled&&(this._activeEffect.setTexture("opacitySampler",this._opacityTexture),this._activeEffect.setFloat2("vOpacityInfos",this._opacityTexture.coordinatesIndex,this._opacityTexture.level),this._activeEffect.setMatrix("opacityMatrix",this._opacityTexture.getTextureMatrix())),i.BindClipPlane(a,this,r),this._useLogarithmicDepth&&i.BindLogDepth(o,a,r)),i.BindFogParameters(r,t,this._activeEffect),this._afterBind(t,this._activeEffect,n))}},t.prototype.dispose=function(i){e.prototype.dispose.call(this,i)},t.prototype.clone=function(e){var n=this;return i.SerializationHelper.Clone(function(){return new t(e,n.getScene())},this)},t.prototype.serialize=function(){var i=e.prototype.serialize.call(this);return i.customType="BABYLON.GridMaterial",i},t.prototype.getClassName=function(){return"GridMaterial"},t.Parse=function(e,n,r){return i.SerializationHelper.Parse(function(){return new t(e.name,n)},e,n,r)},r([i.serializeAsColor3()],t.prototype,"mainColor",void 0),r([i.serializeAsColor3()],t.prototype,"lineColor",void 0),r([i.serialize()],t.prototype,"gridRatio",void 0),r([i.serializeAsVector3()],t.prototype,"gridOffset",void 0),r([i.serialize()],t.prototype,"majorUnitFrequency",void 0),r([i.serialize()],t.prototype,"minorUnitVisibility",void 0),r([i.serialize()],t.prototype,"opacity",void 0),r([i.serialize()],t.prototype,"antialias",void 0),r([i.serialize()],t.prototype,"preMultiplyAlpha",void 0),r([i.serialize()],t.prototype,"useMaxLine",void 0),r([i.serializeAsTexture("opacityTexture")],t.prototype,"_opacityTexture",void 0),r([i.expandToProperty("_markAllSubMeshesAsTexturesDirty")],t.prototype,"opacityTexture",void 0),t}(i.PushMaterial);i.RegisterClass("BABYLON.GridMaterial",a);var l={__proto__:null,GridMaterial:a},s="undefined"!=typeof global?global:"undefined"!=typeof window?window:void 0;if(void 0!==s)for(var f in l)s.BABYLON[f]=l[f];var c="gridVertexShader",d="attribute position: vec3f;attribute normal: vec3f;\n#ifdef UV1\nattribute uv: vec2f;\n#endif\n#ifdef UV2\nattribute uv2: vec2f;\n#endif\n#include<instancesDeclaration>\n#include<sceneUboDeclaration>\nvarying vPosition: vec3f;varying vNormal: vec3f;\n#include<logDepthDeclaration>\n#include<fogVertexDeclaration>\n#ifdef OPACITY\nvarying vOpacityUV: vec2f;uniform opacityMatrix: mat4x4f;uniform vOpacityInfos: vec2f;\n#endif\n#include<clipPlaneVertexDeclaration>\n#define CUSTOM_VERTEX_DEFINITIONS\n@vertex\nfn main(input : VertexInputs)->FragmentInputs {\n#define CUSTOM_VERTEX_MAIN_BEGIN\n#include<instancesVertex>\nvar worldPos: vec4f=finalWorld* vec4f(vertexInputs.position,1.0);\n#include<fogVertex>\nvar cameraSpacePosition: vec4f=scene.view*worldPos;vertexOutputs.position=scene.projection*cameraSpacePosition;\n#ifdef OPACITY\n#ifndef UV1\nvar uv: vec2f= vec2f(0.,0.);\n#else\nvar uv: vec2f=vertexInputs.uv;\n#endif\n#ifndef UV2\nvar uv2: vec2f= vec2f(0.,0.);\n#else\nvar uv2: vec2f=vertexInputs.uv2;\n#endif\nif (uniforms.vOpacityInfos.x==0.)\n{vertexOutputs.vOpacityUV=(uniforms.opacityMatrix* vec4f(uv,1.0,0.0)).xy;}\nelse\n{vertexOutputs.vOpacityUV=(uniforms.opacityMatrix* vec4f(uv2,1.0,0.0)).xy;}\n#endif\n#include<clipPlaneVertex>\n#include<logDepthVertex>\nvertexOutputs.vPosition=vertexInputs.position;vertexOutputs.vNormal=vertexInputs.normal;\n#define CUSTOM_VERTEX_MAIN_END\n}\n";i.ShaderStore.ShadersStoreWGSL[c]||(i.ShaderStore.ShadersStoreWGSL[c]=d);for(var u=0,p=[i.instancesDeclarationWGSL,i.sceneUboDeclarationWGSL,i.logDepthDeclarationWGSL,i.fogVertexDeclarationWGSL,i.clipPlaneVertexDeclarationWGSL,i.instancesVertexWGSL,i.fogVertexWGSL,i.clipPlaneVertexWGSL,i.logDepthVertexWGSL];u<p.length;u++){var v=p[u];i.ShaderStore.IncludesShadersStoreWGSL[v.name]||(i.ShaderStore.IncludesShadersStoreWGSL[v.name]=v.shader)}var m={__proto__:null,gridVertexShaderWGSL:{name:c,shader:d}},g="gridPixelShader",y="#define SQRT2 1.41421356\n#define PI 3.14159\nuniform visibility: f32;uniform mainColor: vec3f;uniform lineColor: vec3f;uniform gridControl: vec4f;uniform gridOffset: vec3f;varying vPosition: vec3f;varying vNormal: vec3f;\n#include<clipPlaneFragmentDeclaration>\n#include<logDepthDeclaration>\n#include<fogFragmentDeclaration>\n#ifdef OPACITY\nvarying vOpacityUV: vec2f;var opacitySamplerSampler: sampler;var opacitySampler: texture_2d<f32>;uniform vOpacityInfos: vec2f;\n#endif\nfn getDynamicVisibility(position: f32)->f32 {var majorGridFrequency: f32=uniforms.gridControl.y;if (floor(position+0.5)==floor(position/majorGridFrequency+0.5)*majorGridFrequency)\n{return 1.0;}\nreturn uniforms.gridControl.z;}\nfn getAnisotropicAttenuation(differentialLength: f32)->f32 {let maxNumberOfLines: f32=10.0;return clamp(1.0/(differentialLength+1.0)-1.0/maxNumberOfLines,0.0,1.0);}\nfn isPointOnLine(position: f32,differentialLength: f32)->f32 {var fractionPartOfPosition: f32=position-floor(position+0.5);fractionPartOfPosition=fractionPartOfPosition/differentialLength;\n#ifdef ANTIALIAS\nfractionPartOfPosition=clamp(fractionPartOfPosition,-1.,1.);var result: f32=0.5+0.5*cos(fractionPartOfPosition*PI);return result;\n#else\nif (abs(fractionPartOfPosition)<SQRT2/4.) {return 1.;}\nreturn 0.;\n#endif\n}\nfn contributionOnAxis(position: f32)->f32 {var differentialLength: f32=length( vec2f(dpdx(position),dpdy(position)));differentialLength=differentialLength*SQRT2;var result: f32=isPointOnLine(position,differentialLength);var dynamicVisibility: f32=getDynamicVisibility(position);result=result*dynamicVisibility;var anisotropicAttenuation: f32=getAnisotropicAttenuation(differentialLength);result=result*anisotropicAttenuation;return result;}\nfn normalImpactOnAxis(x: f32)->f32 {var normalImpact: f32=clamp(1.0-3.0*abs(x*x*x),0.0,1.0);return normalImpact;}\n#define CUSTOM_FRAGMENT_DEFINITIONS\n@fragment\nfn main(input: FragmentInputs)->FragmentOutputs {\n#define CUSTOM_FRAGMENT_MAIN_BEGIN\n#include<clipPlaneFragment>\nvar gridRatio: f32=uniforms.gridControl.x;var gridPos: vec3f=(fragmentInputs.vPosition+uniforms.gridOffset.xyz)/gridRatio;var x: f32=contributionOnAxis(gridPos.x);var y: f32=contributionOnAxis(gridPos.y);var z: f32=contributionOnAxis(gridPos.z);var normal: vec3f=normalize(fragmentInputs.vNormal);x=x*normalImpactOnAxis(normal.x);y=y*normalImpactOnAxis(normal.y);z=z*normalImpactOnAxis(normal.z);\n#ifdef MAX_LINE\nvar grid: f32=clamp(max(max(x,y),z),0.,1.);\n#else\nvar grid: f32=clamp(x+y+z,0.,1.);\n#endif\nvar color: vec4f=vec4f(mix(uniforms.mainColor,uniforms.lineColor,vec3f(grid)),1.0);\n#ifdef FOG\n#include<fogFragment>\n#endif\nvar opacity: f32=1.0;\n#ifdef TRANSPARENT\nopacity=clamp(grid,0.08,uniforms.gridControl.w*grid);\n#endif\n#ifdef OPACITY\nopacity=opacity*textureSample(opacitySampler,opacitySamplerSampler,fragmentInputs.vOpacityUV).a;\n#endif\nfragmentOutputs.color= vec4f(color.rgb,opacity*uniforms.visibility);\n#ifdef TRANSPARENT\n#ifdef PREMULTIPLYALPHA\nfragmentOutputs.color=vec4f(fragmentOutputs.color.rgb*opacity,fragmentOutputs.color.a);\n#endif\n#else\n#endif\n#include<logDepthFragment>\n#include<imageProcessingCompatibility>\n#define CUSTOM_FRAGMENT_MAIN_END\n}\n";i.ShaderStore.ShadersStoreWGSL[g]||(i.ShaderStore.ShadersStoreWGSL[g]=y);for(var h=0,S=[i.clipPlaneFragmentDeclarationWGSL,i.logDepthDeclarationWGSL,i.fogFragmentDeclarationWGSL,i.clipPlaneFragmentWGSL,i.fogFragmentWGSL,i.logDepthFragmentWGSL,i.imageProcessingCompatibilityWGSL];h<S.length;h++){var P=S[h];i.ShaderStore.IncludesShadersStoreWGSL[P.name]||(i.ShaderStore.IncludesShadersStoreWGSL[P.name]=P.shader)}var x={__proto__:null,gridPixelShaderWGSL:{name:g,shader:y}},A="gridVertexShader",O="precision highp float;attribute vec3 position;attribute vec3 normal;\n#ifdef UV1\nattribute vec2 uv;\n#endif\n#ifdef UV2\nattribute vec2 uv2;\n#endif\n#include<instancesDeclaration>\n#include<__decl__sceneVertex>\nvarying vec3 vPosition;varying vec3 vNormal;\n#include<logDepthDeclaration>\n#include<fogVertexDeclaration>\n#ifdef OPACITY\nvarying vec2 vOpacityUV;uniform mat4 opacityMatrix;uniform vec2 vOpacityInfos;\n#endif\n#include<clipPlaneVertexDeclaration>\n#define CUSTOM_VERTEX_DEFINITIONS\nvoid main(void) {\n#define CUSTOM_VERTEX_MAIN_BEGIN\n#include<instancesVertex>\nvec4 worldPos=finalWorld*vec4(position,1.0);\n#include<fogVertex>\nvec4 cameraSpacePosition=view*worldPos;gl_Position=projection*cameraSpacePosition;\n#ifdef OPACITY\n#ifndef UV1\nvec2 uv=vec2(0.,0.);\n#endif\n#ifndef UV2\nvec2 uv2=vec2(0.,0.);\n#endif\nif (vOpacityInfos.x==0.)\n{vOpacityUV=vec2(opacityMatrix*vec4(uv,1.0,0.0));}\nelse\n{vOpacityUV=vec2(opacityMatrix*vec4(uv2,1.0,0.0));}\n#endif \n#include<clipPlaneVertex>\n#include<logDepthVertex>\nvPosition=position;vNormal=normal;\n#define CUSTOM_VERTEX_MAIN_END\n}";i.ShaderStore.ShadersStore[A]||(i.ShaderStore.ShadersStore[A]=O);for(var I=0,_=[i.instancesDeclaration,i.sceneVertexDeclaration,i.sceneUboDeclaration,i.logDepthDeclaration,i.fogVertexDeclaration,i.clipPlaneVertexDeclaration,i.instancesVertex,i.fogVertex,i.clipPlaneVertex,i.logDepthVertex];I<_.length;I++){var L=_[I];i.ShaderStore.IncludesShadersStore[L.name]||(i.ShaderStore.IncludesShadersStore[L.name]=L.shader)}var T={__proto__:null,gridVertexShader:{name:A,shader:O}},b="gridPixelShader",C="#extension GL_OES_standard_derivatives : enable\n#define SQRT2 1.41421356\n#define PI 3.14159\nprecision highp float;uniform float visibility;uniform vec3 mainColor;uniform vec3 lineColor;uniform vec4 gridControl;uniform vec3 gridOffset;varying vec3 vPosition;varying vec3 vNormal;\n#ifdef LOGARITHMICDEPTH\n#extension GL_EXT_frag_depth : enable\n#endif\n#include<clipPlaneFragmentDeclaration>\n#include<logDepthDeclaration>\n#include<fogFragmentDeclaration>\n#ifdef OPACITY\nvarying vec2 vOpacityUV;uniform sampler2D opacitySampler;uniform vec2 vOpacityInfos;\n#endif\nfloat getDynamicVisibility(float position) {float majorGridFrequency=gridControl.y;if (floor(position+0.5)==floor(position/majorGridFrequency+0.5)*majorGridFrequency)\n{return 1.0;}\nreturn gridControl.z;}\nfloat getAnisotropicAttenuation(float differentialLength) {const float maxNumberOfLines=10.0;return clamp(1.0/(differentialLength+1.0)-1.0/maxNumberOfLines,0.0,1.0);}\nfloat isPointOnLine(float position,float differentialLength) {float fractionPartOfPosition=position-floor(position+0.5); \nfractionPartOfPosition/=differentialLength; \n#ifdef ANTIALIAS\nfractionPartOfPosition=clamp(fractionPartOfPosition,-1.,1.);float result=0.5+0.5*cos(fractionPartOfPosition*PI); \nreturn result;\n#else\nreturn abs(fractionPartOfPosition)<SQRT2/4. ? 1. : 0.;\n#endif\n}\nfloat contributionOnAxis(float position) {float differentialLength=length(vec2(dFdx(position),dFdy(position)));differentialLength*=SQRT2; \nfloat result=isPointOnLine(position,differentialLength);float dynamicVisibility=getDynamicVisibility(position);result*=dynamicVisibility;float anisotropicAttenuation=getAnisotropicAttenuation(differentialLength);result*=anisotropicAttenuation;return result;}\nfloat normalImpactOnAxis(float x) {float normalImpact=clamp(1.0-3.0*abs(x*x*x),0.0,1.0);return normalImpact;}\n#define CUSTOM_FRAGMENT_DEFINITIONS\nvoid main(void) {\n#define CUSTOM_FRAGMENT_MAIN_BEGIN\n#include<clipPlaneFragment>\nfloat gridRatio=gridControl.x;vec3 gridPos=(vPosition+gridOffset.xyz)/gridRatio;float x=contributionOnAxis(gridPos.x);float y=contributionOnAxis(gridPos.y);float z=contributionOnAxis(gridPos.z);vec3 normal=normalize(vNormal);x*=normalImpactOnAxis(normal.x);y*=normalImpactOnAxis(normal.y);z*=normalImpactOnAxis(normal.z);\n#ifdef MAX_LINE\nfloat grid=clamp(max(max(x,y),z),0.,1.);\n#else\nfloat grid=clamp(x+y+z,0.,1.);\n#endif\nvec3 color=mix(mainColor,lineColor,grid);\n#ifdef FOG\n#include<fogFragment>\n#endif\nfloat opacity=1.0;\n#ifdef TRANSPARENT\nopacity=clamp(grid,0.08,gridControl.w*grid);\n#endif\n#ifdef OPACITY\nopacity*=texture2D(opacitySampler,vOpacityUV).a;\n#endif\ngl_FragColor=vec4(color.rgb,opacity*visibility);\n#ifdef TRANSPARENT\n#ifdef PREMULTIPLYALPHA\ngl_FragColor.rgb*=opacity;\n#endif\n#else\n#endif\n#include<logDepthFragment>\n#include<imageProcessingCompatibility>\n#define CUSTOM_FRAGMENT_MAIN_END\n}\n";i.ShaderStore.ShadersStore[b]||(i.ShaderStore.ShadersStore[b]=C);for(var N=0,E=[i.clipPlaneFragmentDeclaration,i.logDepthDeclaration,i.fogFragmentDeclaration,i.clipPlaneFragment,i.fogFragment,i.logDepthFragment,i.imageProcessingCompatibility];N<E.length;N++){var V=E[N];i.ShaderStore.IncludesShadersStore[V.name]||(i.ShaderStore.IncludesShadersStore[V.name]=V.shader)}var D={__proto__:null,gridPixelShader:{name:b,shader:C}};e.GridMaterial=a});
1
+ !function(e,i){"object"==typeof exports&&"undefined"!=typeof module?i(exports,require("babylonjs")):"function"==typeof define&&define.amd?define(["exports","babylonjs"],i):i((e="undefined"!=typeof globalThis?globalThis:e||self).BABYLON=e.BABYLON||{},e.BABYLON)}(this,function(e,i){"use strict";var n=function(e,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,i){e.__proto__=i}||function(e,i){for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])},n(e,i)};function t(e,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function t(){this.constructor=e}n(e,i),e.prototype=null===i?Object.create(i):(t.prototype=i.prototype,new t)}function r(e,i,n,t){var r,o=arguments.length,a=o<3?i:null===t?t=Object.getOwnPropertyDescriptor(i,n):t;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,i,n,t);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(i,n,a):r(i,n))||a);return o>3&&a&&Object.defineProperty(i,n,a),a}Object.create,Object.create,"function"==typeof SuppressedError&&SuppressedError;var o=function(e){function i(){var i=e.call(this)||this;return i.CLIPPLANE=!1,i.CLIPPLANE2=!1,i.CLIPPLANE3=!1,i.CLIPPLANE4=!1,i.CLIPPLANE5=!1,i.CLIPPLANE6=!1,i.OPACITY=!1,i.ANTIALIAS=!1,i.LINES_ONLY=!1,i.FOG=!1,i.PREMULTIPLYALPHA=!1,i.MAX_LINE=!1,i.UV1=!1,i.UV2=!1,i.INSTANCES=!1,i.THIN_INSTANCES=!1,i.IMAGEPROCESSINGPOSTPROCESS=!1,i.SKIPFINALCOLORCLAMP=!1,i.LOGARITHMICDEPTH=!1,i.MULTI_SCALE=!1,i.HORIZON_FADE=!1,i.BELOW_LINE_COLOR=!1,i.ORIGIN_MARKER=!1,i.rebuild(),i}return t(i,e),i}(i.MaterialDefines),a=function(e){function n(n,t,r){void 0===r&&(r=!1);var o=e.call(this,n,t,void 0,r)||this;return o.mainColor=i.Color3.Black(),o.lineColor=i.Color3.Teal(),o.gridRatio=1,o.gridOffset=i.Vector3.Zero(),o.majorUnitFrequency=10,o.minorUnitVisibility=.33,o.opacity=1,o.antialias=!0,o._belowLineColor=null,o.useMultiScale=!1,o.minGridSpacing=.001,o.gridOctaves=4,o.useHorizonFade=!1,o.useOriginMarker=!1,o._linesOnly=!1,o.gridThicknessModifier=1,o.preMultiplyAlpha=!1,o.useMaxLine=!1,o._gridControl=new i.Vector4(o.gridRatio,o.majorUnitFrequency,o.minorUnitVisibility,o.opacity),o._viewportSize=new i.Vector2,o._shadersLoaded=!1,o}return t(n,e),Object.defineProperty(n.prototype,"belowLineColor",{get:function(){return this._belowLineColor},set:function(e){this._belowLineColor!==e&&(this._belowLineColor=e,this._markAllSubMeshesAsMiscDirty())},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"linesOnly",{get:function(){return this._linesOnly},set:function(e){this._linesOnly!==e&&(this._linesOnly=e,this.needDepthPrePass=e,this._markAllSubMeshesAsMiscDirty())},enumerable:!1,configurable:!0}),n.prototype.needAlphaBlending=function(){return this.linesOnly||this.opacity<1||this._opacityTexture&&this._opacityTexture.isReady()},n.prototype.needAlphaBlendingForMesh=function(e){return e.visibility<1||this.needAlphaBlending()},n.prototype.isReadyForSubMesh=function(e,n,t){var r=this,a=n._drawWrapper;if(this.isFrozen&&a.effect&&a._wasPreviouslyReady&&a._wasPreviouslyUsingInstances===t)return!0;n.materialDefines||(n.materialDefines=new o);var s=n.materialDefines,f=this.getScene();if(this._isReadyForSubMesh(n))return!0;s.LINES_ONLY!==this.linesOnly&&(s.LINES_ONLY=this.linesOnly,s.markAsUnprocessed()),s.PREMULTIPLYALPHA!=this.preMultiplyAlpha&&(s.PREMULTIPLYALPHA=!s.PREMULTIPLYALPHA,s.markAsUnprocessed()),s.MAX_LINE!==this.useMaxLine&&(s.MAX_LINE=!s.MAX_LINE,s.markAsUnprocessed()),s.ANTIALIAS!==this.antialias&&(s.ANTIALIAS=this.antialias,s.markAsUnprocessed()),s.MULTI_SCALE!==this.useMultiScale&&(s.MULTI_SCALE=this.useMultiScale,s.markAsUnprocessed()),s.HORIZON_FADE!==this.useHorizonFade&&(s.HORIZON_FADE=this.useHorizonFade,s.markAsUnprocessed());var l=null!==this._belowLineColor;if(s.BELOW_LINE_COLOR!==l&&(s.BELOW_LINE_COLOR=l,s.markAsUnprocessed()),s.ORIGIN_MARKER!==this.useOriginMarker&&(s.ORIGIN_MARKER=this.useOriginMarker,s.markAsUnprocessed()),s._areTexturesDirty&&(s._needUVs=!1,f.texturesEnabled&&this._opacityTexture&&i.MaterialFlags.OpacityTextureEnabled)){if(!this._opacityTexture.isReady())return!1;s._needUVs=!0,s.OPACITY=!0}if(i.PrepareDefinesForMisc(e,f,this._useLogarithmicDepth,!1,this.fogEnabled,!1,s,void 0,void 0,void 0,this._isVertexOutputInvariant),i.PrepareDefinesForFrameBoundValues(f,f.getEngine(),this,s,!!t),s.isDirty){s.markAsProcessed(),f.resetCachedMaterial(),i.PrepareDefinesForAttributes(e,s,!1,!1);var d=[i.VertexBuffer.PositionKind,i.VertexBuffer.NormalKind];s.UV1&&d.push(i.VertexBuffer.UVKind),s.UV2&&d.push(i.VertexBuffer.UV2Kind),s.IMAGEPROCESSINGPOSTPROCESS=f.imageProcessingConfiguration.applyByPostProcess,i.PrepareAttributesForInstances(d,s);var c=["projection","mainColor","lineColor","gridControl","gridOffset","vFogInfos","vFogColor","world","view","opacityMatrix","vOpacityInfos","visibility","logarithmicDepthConstant","gridThicknessModifier"];s.MULTI_SCALE&&c.push("minGridSpacing","gridOctaves"),(s.HORIZON_FADE||s.BELOW_LINE_COLOR||s.ORIGIN_MARKER)&&c.push("cameraPosition","viewportSize"),s.BELOW_LINE_COLOR&&c.push("belowLineColor");var u=s.toString();i.AddClipPlaneUniforms(c),n.setEffect(f.getEngine().createEffect("grid",{attributes:d,uniformsNames:c,uniformBuffersNames:["Scene"],samplers:["opacitySampler"],defines:u,fallbacks:null,onCompiled:this.onCompiled,onError:this.onError,shaderLanguage:this._shaderLanguage,extraInitializationsAsync:this._shadersLoaded?void 0:function(){return e=r,i=void 0,t=function(){return function(e,i){var n,t,r,o={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return a.next=s(0),a.throw=s(1),a.return=s(2),"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(s){return function(f){return function(s){if(n)throw new TypeError("Generator is already executing.");for(;a&&(a=0,s[0]&&(o=0)),o;)try{if(n=1,t&&(r=2&s[0]?t.return:s[0]?t.throw||((r=t.return)&&r.call(t),0):t.next)&&!(r=r.call(t,s[1])).done)return r;switch(t=0,r&&(s=[2&s[0],r.value]),s[0]){case 0:case 1:r=s;break;case 4:return o.label++,{value:s[1],done:!1};case 5:o.label++,t=s[1],s=[0];continue;case 7:s=o.ops.pop(),o.trys.pop();continue;default:if(!((r=(r=o.trys).length>0&&r[r.length-1])||6!==s[0]&&2!==s[0])){o=0;continue}if(3===s[0]&&(!r||s[1]>r[0]&&s[1]<r[3])){o.label=s[1];break}if(6===s[0]&&o.label<r[1]){o.label=r[1],r=s;break}if(r&&o.label<r[2]){o.label=r[2],o.ops.push(s);break}r[2]&&o.ops.pop(),o.trys.pop();continue}s=i.call(e,o)}catch(e){s=[6,e],t=0}finally{n=r=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,f])}}}(this,function(e){switch(e.label){case 0:return 1!==this.shaderLanguage?[3,2]:[4,Promise.all([Promise.resolve().then(function(){return v}),Promise.resolve().then(function(){return y})])];case 1:return e.sent(),[3,4];case 2:return[4,Promise.all([Promise.resolve().then(function(){return x}),Promise.resolve().then(function(){return b})])];case 3:e.sent(),e.label=4;case 4:return this._shadersLoaded=!0,[2]}})},new((n=void 0)||(n=Promise))(function(r,o){function a(e){try{f(t.next(e))}catch(e){o(e)}}function s(e){try{f(t.throw(e))}catch(e){o(e)}}function f(e){var i;e.done?r(e.value):(i=e.value,i instanceof n?i:new n(function(e){e(i)})).then(a,s)}f((t=t.apply(e,i||[])).next())});var e,i,n,t}},f.getEngine()),s,this._materialContext)}return!(!n.effect||!n.effect.isReady()||(s._renderId=f.getRenderId(),a._wasPreviouslyReady=!0,a._wasPreviouslyUsingInstances=!!t,0))},n.prototype.bindForSubMesh=function(e,n,t){var r=this.getScene(),o=t.materialDefines;if(o){var a=t.effect;if(a){if(this._activeEffect=a,this._activeEffect.setFloat("visibility",n.visibility),o.INSTANCES&&!o.THIN_INSTANCE||this.bindOnlyWorldMatrix(e),this.bindView(a),this.bindViewProjection(a),this._mustRebind(r,a,t)&&(this._activeEffect.setColor3("mainColor",this.mainColor),this._activeEffect.setColor3("lineColor",this.lineColor),this._activeEffect.setVector3("gridOffset",this.gridOffset),this._gridControl.x=this.gridRatio,this._gridControl.y=Math.round(this.majorUnitFrequency),this._gridControl.z=this.minorUnitVisibility,this._gridControl.w=this.opacity,this._activeEffect.setVector4("gridControl",this._gridControl),this._activeEffect.setFloat("gridThicknessModifier",this.gridThicknessModifier),o.BELOW_LINE_COLOR&&this._belowLineColor&&this._activeEffect.setColor3("belowLineColor",this._belowLineColor),o.MULTI_SCALE&&(this._activeEffect.setFloat("minGridSpacing",this.minGridSpacing),this._activeEffect.setFloat("gridOctaves",Math.max(1,Math.min(8,Math.round(this.gridOctaves))))),this._opacityTexture&&i.MaterialFlags.OpacityTextureEnabled&&(this._activeEffect.setTexture("opacitySampler",this._opacityTexture),this._activeEffect.setFloat2("vOpacityInfos",this._opacityTexture.coordinatesIndex,this._opacityTexture.level),this._activeEffect.setMatrix("opacityMatrix",this._opacityTexture.getTextureMatrix())),i.BindClipPlane(a,this,r),this._useLogarithmicDepth&&i.BindLogDepth(o,a,r)),i.BindFogParameters(r,n,this._activeEffect),o.HORIZON_FADE||o.BELOW_LINE_COLOR||o.ORIGIN_MARKER){var s=r.activeCamera;if(s){this._activeEffect.setVector3("cameraPosition",s.globalPosition);var f=r.getEngine();this._viewportSize.x=f.getRenderWidth(),this._viewportSize.y=f.getRenderHeight(),this._activeEffect.setVector2("viewportSize",this._viewportSize)}}this._afterBind(n,this._activeEffect,t)}}},n.prototype.dispose=function(i){e.prototype.dispose.call(this,i)},n.prototype.clone=function(e){var t=this;return i.SerializationHelper.Clone(function(){return new n(e,t.getScene())},this)},n.prototype.serialize=function(){var i=e.prototype.serialize.call(this);return i.customType="BABYLON.GridMaterial",i},n.prototype.getClassName=function(){return"GridMaterial"},n.Parse=function(e,t,r){return i.SerializationHelper.Parse(function(){return new n(e.name,t)},e,t,r)},r([i.serializeAsColor3()],n.prototype,"mainColor",void 0),r([i.serializeAsColor3()],n.prototype,"lineColor",void 0),r([i.serialize()],n.prototype,"gridRatio",void 0),r([i.serializeAsVector3()],n.prototype,"gridOffset",void 0),r([i.serialize()],n.prototype,"majorUnitFrequency",void 0),r([i.serialize()],n.prototype,"minorUnitVisibility",void 0),r([i.serialize()],n.prototype,"opacity",void 0),r([i.serialize()],n.prototype,"antialias",void 0),r([i.serializeAsColor3()],n.prototype,"belowLineColor",null),r([i.serialize()],n.prototype,"useMultiScale",void 0),r([i.serialize()],n.prototype,"minGridSpacing",void 0),r([i.serialize()],n.prototype,"gridOctaves",void 0),r([i.serialize()],n.prototype,"useHorizonFade",void 0),r([i.serialize()],n.prototype,"useOriginMarker",void 0),r([i.serialize()],n.prototype,"linesOnly",null),r([i.serialize()],n.prototype,"gridThicknessModifier",void 0),r([i.serialize()],n.prototype,"preMultiplyAlpha",void 0),r([i.serialize()],n.prototype,"useMaxLine",void 0),r([i.serializeAsTexture("opacityTexture")],n.prototype,"_opacityTexture",void 0),r([i.expandToProperty("_markAllSubMeshesAsTexturesDirty")],n.prototype,"opacityTexture",void 0),n}(i.PushMaterial);i.RegisterClass("BABYLON.GridMaterial",a);var s={__proto__:null,GridMaterial:a},f="undefined"!=typeof global?global:"undefined"!=typeof window?window:void 0;if(void 0!==f)for(var l in s)f.BABYLON[l]=s[l];var d="gridVertexShader",c="attribute position: vec3f;attribute normal: vec3f;\n#ifdef UV1\nattribute uv: vec2f;\n#endif\n#ifdef UV2\nattribute uv2: vec2f;\n#endif\n#include<instancesDeclaration>\n#include<sceneUboDeclaration>\nvarying vPosition: vec3f;varying vNormal: vec3f;\n#if defined(HORIZON_FADE) || defined(BELOW_LINE_COLOR) || defined(ORIGIN_MARKER)\nvarying vWorldPos: vec3f;\n#endif\n#include<logDepthDeclaration>\n#include<fogVertexDeclaration>\n#ifdef OPACITY\nvarying vOpacityUV: vec2f;uniform opacityMatrix: mat4x4f;uniform vOpacityInfos: vec2f;\n#endif\n#include<clipPlaneVertexDeclaration>\n#define CUSTOM_VERTEX_DEFINITIONS\n@vertex\nfn main(input : VertexInputs)->FragmentInputs {\n#define CUSTOM_VERTEX_MAIN_BEGIN\n#include<instancesVertex>\nvar worldPos: vec4f=finalWorld* vec4f(vertexInputs.position,1.0);\n#include<fogVertex>\nvar cameraSpacePosition: vec4f=scene.view*worldPos;vertexOutputs.position=scene.projection*cameraSpacePosition;\n#ifdef OPACITY\n#ifndef UV1\nvar uv: vec2f= vec2f(0.,0.);\n#else\nvar uv: vec2f=vertexInputs.uv;\n#endif\n#ifndef UV2\nvar uv2: vec2f= vec2f(0.,0.);\n#else\nvar uv2: vec2f=vertexInputs.uv2;\n#endif\nif (uniforms.vOpacityInfos.x==0.)\n{vertexOutputs.vOpacityUV=(uniforms.opacityMatrix* vec4f(uv,1.0,0.0)).xy;}\nelse\n{vertexOutputs.vOpacityUV=(uniforms.opacityMatrix* vec4f(uv2,1.0,0.0)).xy;}\n#endif\n#include<clipPlaneVertex>\n#include<logDepthVertex>\nvertexOutputs.vPosition=vertexInputs.position;vertexOutputs.vNormal=vertexInputs.normal;\n#if defined(HORIZON_FADE) || defined(BELOW_LINE_COLOR) || defined(ORIGIN_MARKER)\nvertexOutputs.vWorldPos=worldPos.xyz;\n#endif\n#define CUSTOM_VERTEX_MAIN_END\n}\n";i.ShaderStore.ShadersStoreWGSL[d]||(i.ShaderStore.ShadersStoreWGSL[d]=c);for(var u=0,p=[i.instancesDeclarationWGSL,i.sceneUboDeclarationWGSL,i.logDepthDeclarationWGSL,i.fogVertexDeclarationWGSL,i.clipPlaneVertexDeclarationWGSL,i.instancesVertexWGSL,i.fogVertexWGSL,i.clipPlaneVertexWGSL,i.logDepthVertexWGSL];u<p.length;u++){var g=p[u];i.ShaderStore.IncludesShadersStoreWGSL[g.name]||(i.ShaderStore.IncludesShadersStoreWGSL[g.name]=g.shader)}var v={__proto__:null,gridVertexShaderWGSL:{name:d,shader:c}},m="gridPixelShader",O="#define SQRT2 1.41421356\n#define PI 3.14159\n#define MAX_OCTAVES 8\n#define LINE_WIDTH_SCREEN_FRACTION 0.004\n#define HORIZON_FADE_EXPONENT 400.0\n#define ORIGIN_MARKER_SPAN 10000000.0\n#define ORIGIN_MARKER_WIDTH_SCALE 0.00000015\n#define ORIGIN_MARKER_THRESHOLD 0.0001\n#define TRANSPARENT_MIN_OPACITY 0.08\nuniform visibility: f32;uniform mainColor: vec3f;uniform lineColor: vec3f;uniform gridControl: vec4f;uniform gridOffset: vec3f;uniform gridThicknessModifier: f32;\n#ifdef MULTI_SCALE\nuniform minGridSpacing: f32;uniform gridOctaves: f32;\n#endif\n#if defined(HORIZON_FADE) || defined(BELOW_LINE_COLOR) || defined(ORIGIN_MARKER)\nuniform cameraPosition: vec3f;uniform viewportSize: vec2f;\n#endif\n#ifdef BELOW_LINE_COLOR\nuniform belowLineColor: vec3f;\n#endif\nvarying vPosition: vec3f;varying vNormal: vec3f;\n#if defined(HORIZON_FADE) || defined(BELOW_LINE_COLOR) || defined(ORIGIN_MARKER)\nvarying vWorldPos: vec3f;\n#endif\n#include<clipPlaneFragmentDeclaration>\n#include<logDepthDeclaration>\n#include<fogFragmentDeclaration>\n#ifdef OPACITY\nvarying vOpacityUV: vec2f;var opacitySamplerSampler: sampler;var opacitySampler: texture_2d<f32>;uniform vOpacityInfos: vec2f;\n#endif\nfn getDynamicVisibility(position: f32)->f32 {var majorGridFrequency: f32=uniforms.gridControl.y;if (floor(position+0.5)==floor(position/majorGridFrequency+0.5)*majorGridFrequency)\n{return 1.0;}\nreturn uniforms.gridControl.z;}\nfn getAnisotropicAttenuation(differentialLength: f32)->f32 {let maxNumberOfLines: f32=10.0;return clamp(1.0/(differentialLength+1.0)-1.0/maxNumberOfLines,0.0,1.0);}\nfn isPointOnLine(position: f32,differentialLength: f32)->f32 {var fractionPartOfPosition: f32=position-floor(position+0.5);fractionPartOfPosition=fractionPartOfPosition/differentialLength;\n#ifdef ANTIALIAS\nfractionPartOfPosition=clamp(fractionPartOfPosition,-1.,1.);var result: f32=0.5+0.5*cos(fractionPartOfPosition*PI);return result;\n#else\nif (abs(fractionPartOfPosition)<SQRT2/4.) {return 1.;}\nreturn 0.;\n#endif\n}\nfn contributionOnAxis(position: f32,tcLineWidthCap: f32,thicknessModifier: f32)->f32 {let dPosDx: f32=dpdx(position);let dPosDy: f32=dpdy(position);var differentialLength: f32=length(vec2f(dPosDx,dPosDy))*SQRT2;if (tcLineWidthCap>0.0) {differentialLength=max(differentialLength,tcLineWidthCap);}\nlet lineWidth: f32=differentialLength*thicknessModifier;var result: f32=isPointOnLine(position,lineWidth);result=result*getDynamicVisibility(position);result=result*getAnisotropicAttenuation(differentialLength);return result;}\nfn normalImpactOnAxis(x: f32)->f32 {var normalImpact: f32=clamp(1.0-3.0*abs(x*x*x),0.0,1.0);return normalImpact;}\n#define CUSTOM_FRAGMENT_DEFINITIONS\n@fragment\nfn main(input: FragmentInputs)->FragmentOutputs {\n#define CUSTOM_FRAGMENT_MAIN_BEGIN\n#include<clipPlaneFragment>\nvar normal: vec3f=normalize(fragmentInputs.vNormal);var horizonFade: f32=1.0;var tcLineWidthCap: f32=0.0;\n#if defined(HORIZON_FADE) || defined(ORIGIN_MARKER)\nvar tc: f32=length(fragmentInputs.vWorldPos-uniforms.cameraPosition);\n#ifdef HORIZON_FADE\ntcLineWidthCap=LINE_WIDTH_SCREEN_FRACTION*tc/uniforms.viewportSize.y;let rd: vec3f=normalize(fragmentInputs.vWorldPos-uniforms.cameraPosition);if (abs(rd.y)>0.99) {horizonFade=1.0;} else {let flatRayDir: vec3f=normalize(vec3f(rd.x,0.0,rd.z));horizonFade=-pow(abs(dot(rd,flatRayDir)),HORIZON_FADE_EXPONENT)+1.0;}\n#endif\n#endif\nvar grid: f32=0.0;\n#ifdef MULTI_SCALE\nfor (var i: i32=0; i<MAX_OCTAVES; i++) {if (i>=i32(uniforms.gridOctaves)) { break; }\nlet scale: f32=uniforms.minGridSpacing*pow(10.0,f32(i));let gridPos: vec3f=(fragmentInputs.vPosition+uniforms.gridOffset.xyz)/scale;let gx: f32=contributionOnAxis(gridPos.x,tcLineWidthCap,uniforms.gridThicknessModifier)*normalImpactOnAxis(normal.x);let gy: f32=contributionOnAxis(gridPos.y,tcLineWidthCap,uniforms.gridThicknessModifier)*normalImpactOnAxis(normal.y);let gz: f32=contributionOnAxis(gridPos.z,tcLineWidthCap,uniforms.gridThicknessModifier)*normalImpactOnAxis(normal.z);\n#ifdef MAX_LINE\ngrid=max(grid,clamp(max(max(gx,gy),gz),0.,1.));\n#else\ngrid=max(grid,clamp(gx+gy+gz,0.,1.));\n#endif\n}\n#else\nlet gridRatio: f32=uniforms.gridControl.x;let gridPos: vec3f=(fragmentInputs.vPosition+uniforms.gridOffset.xyz)/gridRatio;let x: f32=contributionOnAxis(gridPos.x,tcLineWidthCap,uniforms.gridThicknessModifier)*normalImpactOnAxis(normal.x);let y: f32=contributionOnAxis(gridPos.y,tcLineWidthCap,uniforms.gridThicknessModifier)*normalImpactOnAxis(normal.y);let z: f32=contributionOnAxis(gridPos.z,tcLineWidthCap,uniforms.gridThicknessModifier)*normalImpactOnAxis(normal.z);\n#ifdef MAX_LINE\ngrid=clamp(max(max(x,y),z),0.,1.);\n#else\ngrid=clamp(x+y+z,0.,1.);\n#endif\n#endif\ngrid=grid*horizonFade;\n#ifdef ORIGIN_MARKER\nlet tcOrigin: f32=ORIGIN_MARKER_WIDTH_SCALE*tc/uniforms.viewportSize.y;let ox: f32=contributionOnAxis(fragmentInputs.vWorldPos.x/ORIGIN_MARKER_SPAN,tcOrigin,uniforms.gridThicknessModifier);let oz: f32=contributionOnAxis(fragmentInputs.vWorldPos.z/ORIGIN_MARKER_SPAN,tcOrigin,uniforms.gridThicknessModifier);let originMask: f32=clamp(ox+oz,0.0,1.0)*horizonFade;if (originMask>ORIGIN_MARKER_THRESHOLD) { grid=originMask; }\n#endif\n#ifdef BELOW_LINE_COLOR\nlet belowSurface: bool=uniforms.cameraPosition.y<fragmentInputs.vWorldPos.y;let effectiveLineColor: vec3f=select(uniforms.lineColor,uniforms.belowLineColor,belowSurface);\n#else\nlet effectiveLineColor: vec3f=uniforms.lineColor;\n#endif\nvar color: vec4f=vec4f(mix(uniforms.mainColor,effectiveLineColor,vec3f(grid)),1.0);\n#ifdef FOG\n#include<fogFragment>\n#endif\nvar opacity: f32=uniforms.gridControl.w;\n#ifdef LINES_ONLY\nif (grid<0.01) { discard; }\nopacity=clamp(grid,TRANSPARENT_MIN_OPACITY,uniforms.gridControl.w*grid);\n#endif\n#ifdef OPACITY\nopacity=opacity*textureSample(opacitySampler,opacitySamplerSampler,fragmentInputs.vOpacityUV).a;\n#endif\nfragmentOutputs.color=vec4f(color.rgb,opacity*uniforms.visibility);\n#ifdef PREMULTIPLYALPHA\nfragmentOutputs.color=vec4f(fragmentOutputs.color.rgb*opacity,fragmentOutputs.color.a);\n#endif\n#include<logDepthFragment>\n#include<imageProcessingCompatibility>\n#define CUSTOM_FRAGMENT_MAIN_END\n}\n";i.ShaderStore.ShadersStoreWGSL[m]||(i.ShaderStore.ShadersStoreWGSL[m]=O);for(var h=0,_=[i.clipPlaneFragmentDeclarationWGSL,i.logDepthDeclarationWGSL,i.fogFragmentDeclarationWGSL,i.clipPlaneFragmentWGSL,i.fogFragmentWGSL,i.logDepthFragmentWGSL,i.imageProcessingCompatibilityWGSL];h<_.length;h++){var I=_[h];i.ShaderStore.IncludesShadersStoreWGSL[I.name]||(i.ShaderStore.IncludesShadersStoreWGSL[I.name]=I.shader)}var y={__proto__:null,gridPixelShaderWGSL:{name:m,shader:O}},L="gridVertexShader",A="precision highp float;attribute vec3 position;attribute vec3 normal;\n#ifdef UV1\nattribute vec2 uv;\n#endif\n#ifdef UV2\nattribute vec2 uv2;\n#endif\n#include<instancesDeclaration>\n#include<__decl__sceneVertex>\nvarying vec3 vPosition;varying vec3 vNormal;\n#if defined(HORIZON_FADE) || defined(BELOW_LINE_COLOR) || defined(ORIGIN_MARKER)\nvarying vec3 vWorldPos;\n#endif\n#include<logDepthDeclaration>\n#include<fogVertexDeclaration>\n#ifdef OPACITY\nvarying vec2 vOpacityUV;uniform mat4 opacityMatrix;uniform vec2 vOpacityInfos;\n#endif\n#include<clipPlaneVertexDeclaration>\n#define CUSTOM_VERTEX_DEFINITIONS\nvoid main(void) {\n#define CUSTOM_VERTEX_MAIN_BEGIN\n#include<instancesVertex>\nvec4 worldPos=finalWorld*vec4(position,1.0);\n#include<fogVertex>\nvec4 cameraSpacePosition=view*worldPos;gl_Position=projection*cameraSpacePosition;\n#ifdef OPACITY\n#ifndef UV1\nvec2 uv=vec2(0.,0.);\n#endif\n#ifndef UV2\nvec2 uv2=vec2(0.,0.);\n#endif\nif (vOpacityInfos.x==0.)\n{vOpacityUV=vec2(opacityMatrix*vec4(uv,1.0,0.0));}\nelse\n{vOpacityUV=vec2(opacityMatrix*vec4(uv2,1.0,0.0));}\n#endif \n#include<clipPlaneVertex>\n#include<logDepthVertex>\nvPosition=position;vNormal=normal;\n#if defined(HORIZON_FADE) || defined(BELOW_LINE_COLOR) || defined(ORIGIN_MARKER)\nvWorldPos=worldPos.xyz;\n#endif\n#define CUSTOM_VERTEX_MAIN_END\n}";i.ShaderStore.ShadersStore[L]||(i.ShaderStore.ShadersStore[L]=A);for(var S=0,E=[i.instancesDeclaration,i.sceneVertexDeclaration,i.sceneUboDeclaration,i.logDepthDeclaration,i.fogVertexDeclaration,i.clipPlaneVertexDeclaration,i.instancesVertex,i.fogVertex,i.clipPlaneVertex,i.logDepthVertex];S<E.length;S++){var P=E[S];i.ShaderStore.IncludesShadersStore[P.name]||(i.ShaderStore.IncludesShadersStore[P.name]=P.shader)}var x={__proto__:null,gridVertexShader:{name:L,shader:A}},R="gridPixelShader",N="#extension GL_OES_standard_derivatives : enable\n#define SQRT2 1.41421356\n#define PI 3.14159\n#define MAX_OCTAVES 8\n#define LINE_WIDTH_SCREEN_FRACTION 0.004\n#define HORIZON_FADE_EXPONENT 400.0\n#define ORIGIN_MARKER_SPAN 10000000.0\n#define ORIGIN_MARKER_WIDTH_SCALE 0.00000015\n#define ORIGIN_MARKER_THRESHOLD 0.0001\n#define TRANSPARENT_MIN_OPACITY 0.08\nprecision highp float;uniform float visibility;uniform vec3 mainColor;uniform vec3 lineColor;uniform vec4 gridControl;uniform vec3 gridOffset;uniform float gridThicknessModifier;\n#ifdef MULTI_SCALE\nuniform float minGridSpacing;uniform float gridOctaves;\n#endif\n#if defined(HORIZON_FADE) || defined(BELOW_LINE_COLOR) || defined(ORIGIN_MARKER)\nuniform vec3 cameraPosition;uniform vec2 viewportSize;\n#endif\n#ifdef BELOW_LINE_COLOR\nuniform vec3 belowLineColor;\n#endif\nvarying vec3 vPosition;varying vec3 vNormal;\n#if defined(HORIZON_FADE) || defined(BELOW_LINE_COLOR) || defined(ORIGIN_MARKER)\nvarying vec3 vWorldPos;\n#endif\n#ifdef LOGARITHMICDEPTH\n#extension GL_EXT_frag_depth : enable\n#endif\n#include<clipPlaneFragmentDeclaration>\n#include<logDepthDeclaration>\n#include<fogFragmentDeclaration>\n#ifdef OPACITY\nvarying vec2 vOpacityUV;uniform sampler2D opacitySampler;uniform vec2 vOpacityInfos;\n#endif\nfloat getDynamicVisibility(float position) {float majorGridFrequency=gridControl.y;if (floor(position+0.5)==floor(position/majorGridFrequency+0.5)*majorGridFrequency)\n{return 1.0;}\nreturn gridControl.z;}\nfloat getAnisotropicAttenuation(float differentialLength) {const float maxNumberOfLines=10.0;return clamp(1.0/(differentialLength+1.0)-1.0/maxNumberOfLines,0.0,1.0);}\nfloat isPointOnLine(float position,float differentialLength) {float fractionPartOfPosition=position-floor(position+0.5); \nfractionPartOfPosition/=differentialLength; \n#ifdef ANTIALIAS\nfractionPartOfPosition=clamp(fractionPartOfPosition,-1.,1.);float result=0.5+0.5*cos(fractionPartOfPosition*PI); \nreturn result;\n#else\nreturn abs(fractionPartOfPosition)<SQRT2/4. ? 1. : 0.;\n#endif\n}\nfloat contributionOnAxis(float position,float tcLineWidthCap,float thicknessModifier) {float dPosDx=dFdx(position);float dPosDy=dFdy(position);float differentialLength=length(vec2(dPosDx,dPosDy))*SQRT2;if (tcLineWidthCap>0.0) {differentialLength=max(differentialLength,tcLineWidthCap);}\nfloat lineWidth=differentialLength*thicknessModifier;float result=isPointOnLine(position,lineWidth);result*=getDynamicVisibility(position);result*=getAnisotropicAttenuation(differentialLength);return result;}\nfloat normalImpactOnAxis(float x) {float normalImpact=clamp(1.0-3.0*abs(x*x*x),0.0,1.0);return normalImpact;}\n#define CUSTOM_FRAGMENT_DEFINITIONS\nvoid main(void) {\n#define CUSTOM_FRAGMENT_MAIN_BEGIN\n#include<clipPlaneFragment>\nvec3 normal=normalize(vNormal);float horizonFade=1.0;float tcLineWidthCap=0.0;\n#if defined(HORIZON_FADE) || defined(ORIGIN_MARKER)\nfloat tc=length(vWorldPos-cameraPosition);\n#endif\n#ifdef HORIZON_FADE\ntcLineWidthCap=LINE_WIDTH_SCREEN_FRACTION*tc/viewportSize.y;vec3 rd=normalize(vWorldPos-cameraPosition);if (abs(rd.y)>0.99) {horizonFade=1.0;} else {vec3 flatRayDir=normalize(vec3(rd.x,0.0,rd.z));horizonFade=-pow(abs(dot(rd,flatRayDir)),HORIZON_FADE_EXPONENT)+1.0;}\n#endif\nfloat grid=0.0;\n#ifdef MULTI_SCALE\nfor (int i=0; i<MAX_OCTAVES; i++) {if (i>=int(gridOctaves)) break;float scale=minGridSpacing*pow(10.0,float(i));vec3 gridPos=(vPosition+gridOffset.xyz)/scale;float gx=contributionOnAxis(gridPos.x,tcLineWidthCap,gridThicknessModifier)*normalImpactOnAxis(normal.x);float gy=contributionOnAxis(gridPos.y,tcLineWidthCap,gridThicknessModifier)*normalImpactOnAxis(normal.y);float gz=contributionOnAxis(gridPos.z,tcLineWidthCap,gridThicknessModifier)*normalImpactOnAxis(normal.z);\n#ifdef MAX_LINE\ngrid=max(grid,clamp(max(max(gx,gy),gz),0.,1.));\n#else\ngrid=max(grid,clamp(gx+gy+gz,0.,1.));\n#endif\n}\n#else\nfloat gridRatio=gridControl.x;vec3 gridPos=(vPosition+gridOffset.xyz)/gridRatio;float x=contributionOnAxis(gridPos.x,tcLineWidthCap,gridThicknessModifier)*normalImpactOnAxis(normal.x);float y=contributionOnAxis(gridPos.y,tcLineWidthCap,gridThicknessModifier)*normalImpactOnAxis(normal.y);float z=contributionOnAxis(gridPos.z,tcLineWidthCap,gridThicknessModifier)*normalImpactOnAxis(normal.z);\n#ifdef MAX_LINE\ngrid=clamp(max(max(x,y),z),0.,1.);\n#else\ngrid=clamp(x+y+z,0.,1.);\n#endif\n#endif\ngrid*=horizonFade;\n#ifdef ORIGIN_MARKER\nfloat tcOrigin=ORIGIN_MARKER_WIDTH_SCALE*tc/viewportSize.y;float ox=contributionOnAxis(vWorldPos.x/ORIGIN_MARKER_SPAN,tcOrigin,gridThicknessModifier);float oz=contributionOnAxis(vWorldPos.z/ORIGIN_MARKER_SPAN,tcOrigin,gridThicknessModifier);float originMask=clamp(ox+oz,0.0,1.0)*horizonFade;if (originMask>ORIGIN_MARKER_THRESHOLD) grid=originMask;\n#endif\n#ifdef BELOW_LINE_COLOR\nbool belowSurface=cameraPosition.y<vWorldPos.y;vec3 effectiveLineColor=belowSurface ? belowLineColor : lineColor;\n#else\nvec3 effectiveLineColor=lineColor;\n#endif\nvec3 color=mix(mainColor,effectiveLineColor,grid);\n#ifdef FOG\n#include<fogFragment>\n#endif\nfloat opacity=gridControl.w;\n#ifdef LINES_ONLY\nif (grid<0.01) discard;opacity=clamp(grid,TRANSPARENT_MIN_OPACITY,gridControl.w*grid);\n#endif\n#ifdef OPACITY\nopacity*=texture2D(opacitySampler,vOpacityUV).a;\n#endif\ngl_FragColor=vec4(color.rgb,opacity*visibility);\n#ifdef PREMULTIPLYALPHA\ngl_FragColor.rgb*=opacity;\n#endif\n#include<logDepthFragment>\n#include<imageProcessingCompatibility>\n#define CUSTOM_FRAGMENT_MAIN_END\n}\n";i.ShaderStore.ShadersStore[R]||(i.ShaderStore.ShadersStore[R]=N);for(var C=0,M=[i.clipPlaneFragmentDeclaration,i.logDepthDeclaration,i.fogFragmentDeclaration,i.clipPlaneFragment,i.fogFragment,i.logDepthFragment,i.imageProcessingCompatibility];C<M.length;C++){var T=M[C];i.ShaderStore.IncludesShadersStore[T.name]||(i.ShaderStore.IncludesShadersStore[T.name]=T.shader)}var b={__proto__:null,gridPixelShader:{name:R,shader:N}};e.GridMaterial=a});
2
2
  //# sourceMappingURL=babylon.gridMaterial.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"babylon.gridMaterial.min.js","sources":["file:///home/vsts/work/1/s/node_modules/tslib/tslib.es6.js","file:///home/vsts/work/1/s/packages/dev/materials/src/grid/gridMaterial.ts","file:///home/vsts/work/1/s/packages/dev/materials/src/legacy/legacy-grid.ts","file:///home/vsts/work/1/s/packages/dev/materials/src/grid/wgsl/grid.vertex.ts","file:///home/vsts/work/1/s/packages/dev/materials/src/grid/wgsl/grid.fragment.ts","file:///home/vsts/work/1/s/packages/dev/materials/src/grid/grid.vertex.ts","file:///home/vsts/work/1/s/packages/dev/materials/src/grid/grid.fragment.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { serializeAsTexture, serialize, expandToProperty, serializeAsColor3, serializeAsVector3 } from \"core/Misc/decorators\";\r\nimport { SerializationHelper } from \"core/Misc/decorators.serialization\";\r\nimport { type Matrix, Vector4, Vector3 } from \"core/Maths/math.vector\";\r\nimport { Color3 } from \"core/Maths/math.color\";\r\nimport { type BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\nimport { MaterialDefines } from \"core/Materials/materialDefines\";\r\nimport { PushMaterial } from \"core/Materials/pushMaterial\";\r\nimport { MaterialFlags } from \"core/Materials/materialFlags\";\r\nimport { VertexBuffer } from \"core/Buffers/buffer\";\r\nimport { type AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport { type SubMesh } from \"core/Meshes/subMesh\";\r\nimport { type Mesh } from \"core/Meshes/mesh\";\r\nimport { type Scene } from \"core/scene\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\n\r\nimport {\r\n BindFogParameters,\r\n BindLogDepth,\r\n PrepareAttributesForInstances,\r\n PrepareDefinesForAttributes,\r\n PrepareDefinesForFrameBoundValues,\r\n PrepareDefinesForMisc,\r\n} from \"core/Materials/materialHelper.functions\";\r\nimport { AddClipPlaneUniforms, BindClipPlane } from \"core/Materials/clipPlaneMaterialHelper\";\r\n\r\nclass GridMaterialDefines extends MaterialDefines {\r\n public CLIPPLANE = false;\r\n public CLIPPLANE2 = false;\r\n public CLIPPLANE3 = false;\r\n public CLIPPLANE4 = false;\r\n public CLIPPLANE5 = false;\r\n public CLIPPLANE6 = false;\r\n public OPACITY = false;\r\n public ANTIALIAS = false;\r\n public TRANSPARENT = false;\r\n public FOG = false;\r\n public PREMULTIPLYALPHA = false;\r\n public MAX_LINE = false;\r\n public UV1 = false;\r\n public UV2 = false;\r\n public INSTANCES = false;\r\n public THIN_INSTANCES = false;\r\n public IMAGEPROCESSINGPOSTPROCESS = false;\r\n public SKIPFINALCOLORCLAMP = false;\r\n public LOGARITHMICDEPTH = false;\r\n\r\n constructor() {\r\n super();\r\n this.rebuild();\r\n }\r\n}\r\n\r\n/**\r\n * The grid materials allows you to wrap any shape with a grid.\r\n * Colors are customizable.\r\n */\r\nexport class GridMaterial extends PushMaterial {\r\n /**\r\n * Main color of the grid (e.g. between lines)\r\n */\r\n @serializeAsColor3()\r\n public mainColor = Color3.Black();\r\n\r\n /**\r\n * Color of the grid lines.\r\n */\r\n @serializeAsColor3()\r\n public lineColor = Color3.Teal();\r\n\r\n /**\r\n * The scale of the grid compared to unit.\r\n */\r\n @serialize()\r\n public gridRatio = 1.0;\r\n\r\n /**\r\n * Allows setting an offset for the grid lines.\r\n */\r\n @serializeAsVector3()\r\n public gridOffset = Vector3.Zero();\r\n\r\n /**\r\n * The frequency of thicker lines.\r\n */\r\n @serialize()\r\n public majorUnitFrequency = 10;\r\n\r\n /**\r\n * The visibility of minor units in the grid.\r\n */\r\n @serialize()\r\n public minorUnitVisibility = 0.33;\r\n\r\n /**\r\n * The grid opacity outside of the lines.\r\n */\r\n @serialize()\r\n public opacity = 1.0;\r\n\r\n /**\r\n * Whether to antialias the grid\r\n */\r\n @serialize()\r\n public antialias = true;\r\n\r\n /**\r\n * Determine RBG output is premultiplied by alpha value.\r\n */\r\n @serialize()\r\n public preMultiplyAlpha = false;\r\n\r\n /**\r\n * Determines if the max line value will be used instead of the sum wherever grid lines intersect.\r\n */\r\n @serialize()\r\n public useMaxLine = false;\r\n\r\n @serializeAsTexture(\"opacityTexture\")\r\n private _opacityTexture: BaseTexture;\r\n /**\r\n * Texture to define opacity of the grid\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public opacityTexture: BaseTexture;\r\n\r\n private _gridControl: Vector4 = new Vector4(this.gridRatio, this.majorUnitFrequency, this.minorUnitVisibility, this.opacity);\r\n\r\n /**\r\n * constructor\r\n * @param name The name given to the material in order to identify it afterwards.\r\n * @param scene The scene the material is used in.\r\n * @param forceGLSL Use the GLSL code generation for the shader (even on WebGPU). Default is false\r\n */\r\n constructor(name: string, scene?: Scene, forceGLSL = false) {\r\n super(name, scene, undefined, forceGLSL);\r\n }\r\n\r\n private _shadersLoaded = false;\r\n\r\n /**\r\n * @returns whether or not the grid requires alpha blending.\r\n */\r\n public override needAlphaBlending(): boolean {\r\n return this.opacity < 1.0 || (this._opacityTexture && this._opacityTexture.isReady());\r\n }\r\n\r\n public override needAlphaBlendingForMesh(mesh: AbstractMesh): boolean {\r\n return mesh.visibility < 1.0 || this.needAlphaBlending();\r\n }\r\n\r\n public override isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean {\r\n const drawWrapper = subMesh._drawWrapper;\r\n\r\n if (this.isFrozen) {\r\n if (drawWrapper.effect && drawWrapper._wasPreviouslyReady && drawWrapper._wasPreviouslyUsingInstances === useInstances) {\r\n return true;\r\n }\r\n }\r\n\r\n if (!subMesh.materialDefines) {\r\n subMesh.materialDefines = new GridMaterialDefines();\r\n }\r\n\r\n const defines = <GridMaterialDefines>subMesh.materialDefines;\r\n const scene = this.getScene();\r\n\r\n if (this._isReadyForSubMesh(subMesh)) {\r\n return true;\r\n }\r\n\r\n if (defines.TRANSPARENT !== this.opacity < 1.0) {\r\n defines.TRANSPARENT = !defines.TRANSPARENT;\r\n defines.markAsUnprocessed();\r\n }\r\n\r\n if (defines.PREMULTIPLYALPHA != this.preMultiplyAlpha) {\r\n defines.PREMULTIPLYALPHA = !defines.PREMULTIPLYALPHA;\r\n defines.markAsUnprocessed();\r\n }\r\n\r\n if (defines.MAX_LINE !== this.useMaxLine) {\r\n defines.MAX_LINE = !defines.MAX_LINE;\r\n defines.markAsUnprocessed();\r\n }\r\n\r\n if (defines.ANTIALIAS !== this.antialias) {\r\n defines.ANTIALIAS = !defines.ANTIALIAS;\r\n defines.markAsUnprocessed();\r\n }\r\n\r\n // Textures\r\n if (defines._areTexturesDirty) {\r\n defines._needUVs = false;\r\n if (scene.texturesEnabled) {\r\n if (this._opacityTexture && MaterialFlags.OpacityTextureEnabled) {\r\n if (!this._opacityTexture.isReady()) {\r\n return false;\r\n } else {\r\n defines._needUVs = true;\r\n defines.OPACITY = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n PrepareDefinesForMisc(mesh, scene, this._useLogarithmicDepth, false, this.fogEnabled, false, defines, undefined, undefined, undefined, this._isVertexOutputInvariant);\r\n\r\n // Values that need to be evaluated on every frame\r\n PrepareDefinesForFrameBoundValues(scene, scene.getEngine(), this, defines, !!useInstances);\r\n\r\n // Get correct effect\r\n if (defines.isDirty) {\r\n defines.markAsProcessed();\r\n scene.resetCachedMaterial();\r\n\r\n // Attributes\r\n PrepareDefinesForAttributes(mesh, defines, false, false);\r\n const attribs = [VertexBuffer.PositionKind, VertexBuffer.NormalKind];\r\n\r\n if (defines.UV1) {\r\n attribs.push(VertexBuffer.UVKind);\r\n }\r\n if (defines.UV2) {\r\n attribs.push(VertexBuffer.UV2Kind);\r\n }\r\n\r\n defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;\r\n\r\n PrepareAttributesForInstances(attribs, defines);\r\n\r\n const uniforms = [\r\n \"projection\",\r\n \"mainColor\",\r\n \"lineColor\",\r\n \"gridControl\",\r\n \"gridOffset\",\r\n \"vFogInfos\",\r\n \"vFogColor\",\r\n \"world\",\r\n \"view\",\r\n \"opacityMatrix\",\r\n \"vOpacityInfos\",\r\n \"visibility\",\r\n \"logarithmicDepthConstant\",\r\n ];\r\n // Defines\r\n const join = defines.toString();\r\n AddClipPlaneUniforms(uniforms);\r\n subMesh.setEffect(\r\n scene.getEngine().createEffect(\r\n \"grid\",\r\n {\r\n attributes: attribs,\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: [\"Scene\"],\r\n samplers: [\"opacitySampler\"],\r\n defines: join,\r\n fallbacks: null,\r\n onCompiled: this.onCompiled,\r\n onError: this.onError,\r\n shaderLanguage: this._shaderLanguage,\r\n extraInitializationsAsync: this._shadersLoaded\r\n ? undefined\r\n : async () => {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n await Promise.all([import(\"./wgsl/grid.vertex\"), import(\"./wgsl/grid.fragment\")]);\r\n } else {\r\n await Promise.all([import(\"./grid.vertex\"), import(\"./grid.fragment\")]);\r\n }\r\n\r\n this._shadersLoaded = true;\r\n },\r\n },\r\n scene.getEngine()\r\n ),\r\n defines,\r\n this._materialContext\r\n );\r\n }\r\n\r\n if (!subMesh.effect || !subMesh.effect.isReady()) {\r\n return false;\r\n }\r\n\r\n defines._renderId = scene.getRenderId();\r\n drawWrapper._wasPreviouslyReady = true;\r\n drawWrapper._wasPreviouslyUsingInstances = !!useInstances;\r\n\r\n return true;\r\n }\r\n\r\n public override bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void {\r\n const scene = this.getScene();\r\n\r\n const defines = <GridMaterialDefines>subMesh.materialDefines;\r\n if (!defines) {\r\n return;\r\n }\r\n\r\n const effect = subMesh.effect;\r\n if (!effect) {\r\n return;\r\n }\r\n this._activeEffect = effect;\r\n\r\n this._activeEffect.setFloat(\"visibility\", mesh.visibility);\r\n\r\n // Matrices\r\n if (!defines.INSTANCES || defines.THIN_INSTANCE) {\r\n this.bindOnlyWorldMatrix(world);\r\n }\r\n this.bindView(effect);\r\n this.bindViewProjection(effect);\r\n\r\n // Uniforms\r\n if (this._mustRebind(scene, effect, subMesh)) {\r\n this._activeEffect.setColor3(\"mainColor\", this.mainColor);\r\n this._activeEffect.setColor3(\"lineColor\", this.lineColor);\r\n\r\n this._activeEffect.setVector3(\"gridOffset\", this.gridOffset);\r\n\r\n this._gridControl.x = this.gridRatio;\r\n this._gridControl.y = Math.round(this.majorUnitFrequency);\r\n this._gridControl.z = this.minorUnitVisibility;\r\n this._gridControl.w = this.opacity;\r\n this._activeEffect.setVector4(\"gridControl\", this._gridControl);\r\n\r\n if (this._opacityTexture && MaterialFlags.OpacityTextureEnabled) {\r\n this._activeEffect.setTexture(\"opacitySampler\", this._opacityTexture);\r\n this._activeEffect.setFloat2(\"vOpacityInfos\", this._opacityTexture.coordinatesIndex, this._opacityTexture.level);\r\n this._activeEffect.setMatrix(\"opacityMatrix\", this._opacityTexture.getTextureMatrix());\r\n }\r\n\r\n // Clip plane\r\n BindClipPlane(effect, this, scene);\r\n // Log. depth\r\n if (this._useLogarithmicDepth) {\r\n BindLogDepth(defines, effect, scene);\r\n }\r\n }\r\n // Fog\r\n BindFogParameters(scene, mesh, this._activeEffect);\r\n\r\n this._afterBind(mesh, this._activeEffect, subMesh);\r\n }\r\n\r\n /**\r\n * Dispose the material and its associated resources.\r\n * @param forceDisposeEffect will also dispose the used effect when true\r\n */\r\n public override dispose(forceDisposeEffect?: boolean): void {\r\n super.dispose(forceDisposeEffect);\r\n }\r\n\r\n public override clone(name: string): GridMaterial {\r\n return SerializationHelper.Clone(() => new GridMaterial(name, this.getScene()), this);\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.customType = \"BABYLON.GridMaterial\";\r\n return serializationObject;\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"GridMaterial\";\r\n }\r\n\r\n public static override Parse(source: any, scene: Scene, rootUrl: string): GridMaterial {\r\n return SerializationHelper.Parse(() => new GridMaterial(source.name, scene), source, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.GridMaterial\", GridMaterial);\r\n","/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nimport * as MatLib from \"materials/grid/index\";\r\n\r\n/**\r\n * This is the entry point for the UMD module.\r\n * The entry point for a future ESM package should be index.ts\r\n */\r\nconst GlobalObject = typeof global !== \"undefined\" ? global : typeof window !== \"undefined\" ? window : undefined;\r\nif (typeof GlobalObject !== \"undefined\") {\r\n for (const key in MatLib) {\r\n (<any>GlobalObject).BABYLON[key] = (<any>MatLib)[key];\r\n }\r\n}\r\n\r\nexport * from \"materials/grid/index\";\r\n","// Do not edit.\nimport { ShaderStore } from \"core/Engines/shaderStore\";\nimport { instancesDeclarationWGSL } from \"core/ShadersWGSL/ShadersInclude/instancesDeclaration\";\nimport { sceneUboDeclarationWGSL } from \"core/ShadersWGSL/ShadersInclude/sceneUboDeclaration\";\nimport { logDepthDeclarationWGSL } from \"core/ShadersWGSL/ShadersInclude/logDepthDeclaration\";\nimport { fogVertexDeclarationWGSL } from \"core/ShadersWGSL/ShadersInclude/fogVertexDeclaration\";\nimport { clipPlaneVertexDeclarationWGSL } from \"core/ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration\";\nimport { instancesVertexWGSL } from \"core/ShadersWGSL/ShadersInclude/instancesVertex\";\nimport { fogVertexWGSL } from \"core/ShadersWGSL/ShadersInclude/fogVertex\";\nimport { clipPlaneVertexWGSL } from \"core/ShadersWGSL/ShadersInclude/clipPlaneVertex\";\nimport { logDepthVertexWGSL } from \"core/ShadersWGSL/ShadersInclude/logDepthVertex\";\n\nconst name = \"gridVertexShader\";\nconst shader = `attribute position: vec3f;attribute normal: vec3f;\n#ifdef UV1\nattribute uv: vec2f;\n#endif\n#ifdef UV2\nattribute uv2: vec2f;\n#endif\n#include<instancesDeclaration>\n#include<sceneUboDeclaration>\nvarying vPosition: vec3f;varying vNormal: vec3f;\n#include<logDepthDeclaration>\n#include<fogVertexDeclaration>\n#ifdef OPACITY\nvarying vOpacityUV: vec2f;uniform opacityMatrix: mat4x4f;uniform vOpacityInfos: vec2f;\n#endif\n#include<clipPlaneVertexDeclaration>\n#define CUSTOM_VERTEX_DEFINITIONS\n@vertex\nfn main(input : VertexInputs)->FragmentInputs {\n#define CUSTOM_VERTEX_MAIN_BEGIN\n#include<instancesVertex>\nvar worldPos: vec4f=finalWorld* vec4f(vertexInputs.position,1.0);\n#include<fogVertex>\nvar cameraSpacePosition: vec4f=scene.view*worldPos;vertexOutputs.position=scene.projection*cameraSpacePosition;\n#ifdef OPACITY\n#ifndef UV1\nvar uv: vec2f= vec2f(0.,0.);\n#else\nvar uv: vec2f=vertexInputs.uv;\n#endif\n#ifndef UV2\nvar uv2: vec2f= vec2f(0.,0.);\n#else\nvar uv2: vec2f=vertexInputs.uv2;\n#endif\nif (uniforms.vOpacityInfos.x==0.)\n{vertexOutputs.vOpacityUV=(uniforms.opacityMatrix* vec4f(uv,1.0,0.0)).xy;}\nelse\n{vertexOutputs.vOpacityUV=(uniforms.opacityMatrix* vec4f(uv2,1.0,0.0)).xy;}\n#endif\n#include<clipPlaneVertex>\n#include<logDepthVertex>\nvertexOutputs.vPosition=vertexInputs.position;vertexOutputs.vNormal=vertexInputs.normal;\n#define CUSTOM_VERTEX_MAIN_END\n}\n`;\n// Sideeffect\nif (!ShaderStore.ShadersStoreWGSL[name]) {\n ShaderStore.ShadersStoreWGSL[name] = shader;\n}\nconst includes = [instancesDeclarationWGSL, sceneUboDeclarationWGSL, logDepthDeclarationWGSL, fogVertexDeclarationWGSL, clipPlaneVertexDeclarationWGSL, instancesVertexWGSL, fogVertexWGSL, clipPlaneVertexWGSL, logDepthVertexWGSL];\nfor (const inc of includes) {\n if (!ShaderStore.IncludesShadersStoreWGSL[inc.name]) {\n ShaderStore.IncludesShadersStoreWGSL[inc.name] = inc.shader;\n }\n}\n\n/** @internal */\nexport const gridVertexShaderWGSL = { name, shader };\n","// Do not edit.\nimport { ShaderStore } from \"core/Engines/shaderStore\";\nimport { clipPlaneFragmentDeclarationWGSL } from \"core/ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration\";\nimport { logDepthDeclarationWGSL } from \"core/ShadersWGSL/ShadersInclude/logDepthDeclaration\";\nimport { fogFragmentDeclarationWGSL } from \"core/ShadersWGSL/ShadersInclude/fogFragmentDeclaration\";\nimport { clipPlaneFragmentWGSL } from \"core/ShadersWGSL/ShadersInclude/clipPlaneFragment\";\nimport { fogFragmentWGSL } from \"core/ShadersWGSL/ShadersInclude/fogFragment\";\nimport { logDepthFragmentWGSL } from \"core/ShadersWGSL/ShadersInclude/logDepthFragment\";\nimport { imageProcessingCompatibilityWGSL } from \"core/ShadersWGSL/ShadersInclude/imageProcessingCompatibility\";\n\nconst name = \"gridPixelShader\";\nconst shader = `#define SQRT2 1.41421356\n#define PI 3.14159\nuniform visibility: f32;uniform mainColor: vec3f;uniform lineColor: vec3f;uniform gridControl: vec4f;uniform gridOffset: vec3f;varying vPosition: vec3f;varying vNormal: vec3f;\n#include<clipPlaneFragmentDeclaration>\n#include<logDepthDeclaration>\n#include<fogFragmentDeclaration>\n#ifdef OPACITY\nvarying vOpacityUV: vec2f;var opacitySamplerSampler: sampler;var opacitySampler: texture_2d<f32>;uniform vOpacityInfos: vec2f;\n#endif\nfn getDynamicVisibility(position: f32)->f32 {var majorGridFrequency: f32=uniforms.gridControl.y;if (floor(position+0.5)==floor(position/majorGridFrequency+0.5)*majorGridFrequency)\n{return 1.0;}\nreturn uniforms.gridControl.z;}\nfn getAnisotropicAttenuation(differentialLength: f32)->f32 {let maxNumberOfLines: f32=10.0;return clamp(1.0/(differentialLength+1.0)-1.0/maxNumberOfLines,0.0,1.0);}\nfn isPointOnLine(position: f32,differentialLength: f32)->f32 {var fractionPartOfPosition: f32=position-floor(position+0.5);fractionPartOfPosition=fractionPartOfPosition/differentialLength;\n#ifdef ANTIALIAS\nfractionPartOfPosition=clamp(fractionPartOfPosition,-1.,1.);var result: f32=0.5+0.5*cos(fractionPartOfPosition*PI);return result;\n#else\nif (abs(fractionPartOfPosition)<SQRT2/4.) {return 1.;}\nreturn 0.;\n#endif\n}\nfn contributionOnAxis(position: f32)->f32 {var differentialLength: f32=length( vec2f(dpdx(position),dpdy(position)));differentialLength=differentialLength*SQRT2;var result: f32=isPointOnLine(position,differentialLength);var dynamicVisibility: f32=getDynamicVisibility(position);result=result*dynamicVisibility;var anisotropicAttenuation: f32=getAnisotropicAttenuation(differentialLength);result=result*anisotropicAttenuation;return result;}\nfn normalImpactOnAxis(x: f32)->f32 {var normalImpact: f32=clamp(1.0-3.0*abs(x*x*x),0.0,1.0);return normalImpact;}\n#define CUSTOM_FRAGMENT_DEFINITIONS\n@fragment\nfn main(input: FragmentInputs)->FragmentOutputs {\n#define CUSTOM_FRAGMENT_MAIN_BEGIN\n#include<clipPlaneFragment>\nvar gridRatio: f32=uniforms.gridControl.x;var gridPos: vec3f=(fragmentInputs.vPosition+uniforms.gridOffset.xyz)/gridRatio;var x: f32=contributionOnAxis(gridPos.x);var y: f32=contributionOnAxis(gridPos.y);var z: f32=contributionOnAxis(gridPos.z);var normal: vec3f=normalize(fragmentInputs.vNormal);x=x*normalImpactOnAxis(normal.x);y=y*normalImpactOnAxis(normal.y);z=z*normalImpactOnAxis(normal.z);\n#ifdef MAX_LINE\nvar grid: f32=clamp(max(max(x,y),z),0.,1.);\n#else\nvar grid: f32=clamp(x+y+z,0.,1.);\n#endif\nvar color: vec4f=vec4f(mix(uniforms.mainColor,uniforms.lineColor,vec3f(grid)),1.0);\n#ifdef FOG\n#include<fogFragment>\n#endif\nvar opacity: f32=1.0;\n#ifdef TRANSPARENT\nopacity=clamp(grid,0.08,uniforms.gridControl.w*grid);\n#endif\n#ifdef OPACITY\nopacity=opacity*textureSample(opacitySampler,opacitySamplerSampler,fragmentInputs.vOpacityUV).a;\n#endif\nfragmentOutputs.color= vec4f(color.rgb,opacity*uniforms.visibility);\n#ifdef TRANSPARENT\n#ifdef PREMULTIPLYALPHA\nfragmentOutputs.color=vec4f(fragmentOutputs.color.rgb*opacity,fragmentOutputs.color.a);\n#endif\n#else\n#endif\n#include<logDepthFragment>\n#include<imageProcessingCompatibility>\n#define CUSTOM_FRAGMENT_MAIN_END\n}\n`;\n// Sideeffect\nif (!ShaderStore.ShadersStoreWGSL[name]) {\n ShaderStore.ShadersStoreWGSL[name] = shader;\n}\nconst includes = [clipPlaneFragmentDeclarationWGSL, logDepthDeclarationWGSL, fogFragmentDeclarationWGSL, clipPlaneFragmentWGSL, fogFragmentWGSL, logDepthFragmentWGSL, imageProcessingCompatibilityWGSL];\nfor (const inc of includes) {\n if (!ShaderStore.IncludesShadersStoreWGSL[inc.name]) {\n ShaderStore.IncludesShadersStoreWGSL[inc.name] = inc.shader;\n }\n}\n\n/** @internal */\nexport const gridPixelShaderWGSL = { name, shader };\n","// Do not edit.\nimport { ShaderStore } from \"core/Engines/shaderStore\";\nimport { instancesDeclaration } from \"core/Shaders/ShadersInclude/instancesDeclaration\";\nimport { sceneVertexDeclaration } from \"core/Shaders/ShadersInclude/sceneVertexDeclaration\";\nimport { sceneUboDeclaration } from \"core/Shaders/ShadersInclude/sceneUboDeclaration\";\nimport { logDepthDeclaration } from \"core/Shaders/ShadersInclude/logDepthDeclaration\";\nimport { fogVertexDeclaration } from \"core/Shaders/ShadersInclude/fogVertexDeclaration\";\nimport { clipPlaneVertexDeclaration } from \"core/Shaders/ShadersInclude/clipPlaneVertexDeclaration\";\nimport { instancesVertex } from \"core/Shaders/ShadersInclude/instancesVertex\";\nimport { fogVertex } from \"core/Shaders/ShadersInclude/fogVertex\";\nimport { clipPlaneVertex } from \"core/Shaders/ShadersInclude/clipPlaneVertex\";\nimport { logDepthVertex } from \"core/Shaders/ShadersInclude/logDepthVertex\";\n\nconst name = \"gridVertexShader\";\nconst shader = `precision highp float;attribute vec3 position;attribute vec3 normal;\n#ifdef UV1\nattribute vec2 uv;\n#endif\n#ifdef UV2\nattribute vec2 uv2;\n#endif\n#include<instancesDeclaration>\n#include<__decl__sceneVertex>\nvarying vec3 vPosition;varying vec3 vNormal;\n#include<logDepthDeclaration>\n#include<fogVertexDeclaration>\n#ifdef OPACITY\nvarying vec2 vOpacityUV;uniform mat4 opacityMatrix;uniform vec2 vOpacityInfos;\n#endif\n#include<clipPlaneVertexDeclaration>\n#define CUSTOM_VERTEX_DEFINITIONS\nvoid main(void) {\n#define CUSTOM_VERTEX_MAIN_BEGIN\n#include<instancesVertex>\nvec4 worldPos=finalWorld*vec4(position,1.0);\n#include<fogVertex>\nvec4 cameraSpacePosition=view*worldPos;gl_Position=projection*cameraSpacePosition;\n#ifdef OPACITY\n#ifndef UV1\nvec2 uv=vec2(0.,0.);\n#endif\n#ifndef UV2\nvec2 uv2=vec2(0.,0.);\n#endif\nif (vOpacityInfos.x==0.)\n{vOpacityUV=vec2(opacityMatrix*vec4(uv,1.0,0.0));}\nelse\n{vOpacityUV=vec2(opacityMatrix*vec4(uv2,1.0,0.0));}\n#endif \n#include<clipPlaneVertex>\n#include<logDepthVertex>\nvPosition=position;vNormal=normal;\n#define CUSTOM_VERTEX_MAIN_END\n}`;\n// Sideeffect\nif (!ShaderStore.ShadersStore[name]) {\n ShaderStore.ShadersStore[name] = shader;\n}\nconst includes = [instancesDeclaration, sceneVertexDeclaration, sceneUboDeclaration, logDepthDeclaration, fogVertexDeclaration, clipPlaneVertexDeclaration, instancesVertex, fogVertex, clipPlaneVertex, logDepthVertex];\nfor (const inc of includes) {\n if (!ShaderStore.IncludesShadersStore[inc.name]) {\n ShaderStore.IncludesShadersStore[inc.name] = inc.shader;\n }\n}\n\n/** @internal */\nexport const gridVertexShader = { name, shader };\n","// Do not edit.\nimport { ShaderStore } from \"core/Engines/shaderStore\";\nimport { clipPlaneFragmentDeclaration } from \"core/Shaders/ShadersInclude/clipPlaneFragmentDeclaration\";\nimport { logDepthDeclaration } from \"core/Shaders/ShadersInclude/logDepthDeclaration\";\nimport { fogFragmentDeclaration } from \"core/Shaders/ShadersInclude/fogFragmentDeclaration\";\nimport { clipPlaneFragment } from \"core/Shaders/ShadersInclude/clipPlaneFragment\";\nimport { fogFragment } from \"core/Shaders/ShadersInclude/fogFragment\";\nimport { logDepthFragment } from \"core/Shaders/ShadersInclude/logDepthFragment\";\nimport { imageProcessingCompatibility } from \"core/Shaders/ShadersInclude/imageProcessingCompatibility\";\n\nconst name = \"gridPixelShader\";\nconst shader = `#extension GL_OES_standard_derivatives : enable\n#define SQRT2 1.41421356\n#define PI 3.14159\nprecision highp float;uniform float visibility;uniform vec3 mainColor;uniform vec3 lineColor;uniform vec4 gridControl;uniform vec3 gridOffset;varying vec3 vPosition;varying vec3 vNormal;\n#ifdef LOGARITHMICDEPTH\n#extension GL_EXT_frag_depth : enable\n#endif\n#include<clipPlaneFragmentDeclaration>\n#include<logDepthDeclaration>\n#include<fogFragmentDeclaration>\n#ifdef OPACITY\nvarying vec2 vOpacityUV;uniform sampler2D opacitySampler;uniform vec2 vOpacityInfos;\n#endif\nfloat getDynamicVisibility(float position) {float majorGridFrequency=gridControl.y;if (floor(position+0.5)==floor(position/majorGridFrequency+0.5)*majorGridFrequency)\n{return 1.0;}\nreturn gridControl.z;}\nfloat getAnisotropicAttenuation(float differentialLength) {const float maxNumberOfLines=10.0;return clamp(1.0/(differentialLength+1.0)-1.0/maxNumberOfLines,0.0,1.0);}\nfloat isPointOnLine(float position,float differentialLength) {float fractionPartOfPosition=position-floor(position+0.5); \nfractionPartOfPosition/=differentialLength; \n#ifdef ANTIALIAS\nfractionPartOfPosition=clamp(fractionPartOfPosition,-1.,1.);float result=0.5+0.5*cos(fractionPartOfPosition*PI); \nreturn result;\n#else\nreturn abs(fractionPartOfPosition)<SQRT2/4. ? 1. : 0.;\n#endif\n}\nfloat contributionOnAxis(float position) {float differentialLength=length(vec2(dFdx(position),dFdy(position)));differentialLength*=SQRT2; \nfloat result=isPointOnLine(position,differentialLength);float dynamicVisibility=getDynamicVisibility(position);result*=dynamicVisibility;float anisotropicAttenuation=getAnisotropicAttenuation(differentialLength);result*=anisotropicAttenuation;return result;}\nfloat normalImpactOnAxis(float x) {float normalImpact=clamp(1.0-3.0*abs(x*x*x),0.0,1.0);return normalImpact;}\n#define CUSTOM_FRAGMENT_DEFINITIONS\nvoid main(void) {\n#define CUSTOM_FRAGMENT_MAIN_BEGIN\n#include<clipPlaneFragment>\nfloat gridRatio=gridControl.x;vec3 gridPos=(vPosition+gridOffset.xyz)/gridRatio;float x=contributionOnAxis(gridPos.x);float y=contributionOnAxis(gridPos.y);float z=contributionOnAxis(gridPos.z);vec3 normal=normalize(vNormal);x*=normalImpactOnAxis(normal.x);y*=normalImpactOnAxis(normal.y);z*=normalImpactOnAxis(normal.z);\n#ifdef MAX_LINE\nfloat grid=clamp(max(max(x,y),z),0.,1.);\n#else\nfloat grid=clamp(x+y+z,0.,1.);\n#endif\nvec3 color=mix(mainColor,lineColor,grid);\n#ifdef FOG\n#include<fogFragment>\n#endif\nfloat opacity=1.0;\n#ifdef TRANSPARENT\nopacity=clamp(grid,0.08,gridControl.w*grid);\n#endif\n#ifdef OPACITY\nopacity*=texture2D(opacitySampler,vOpacityUV).a;\n#endif\ngl_FragColor=vec4(color.rgb,opacity*visibility);\n#ifdef TRANSPARENT\n#ifdef PREMULTIPLYALPHA\ngl_FragColor.rgb*=opacity;\n#endif\n#else\n#endif\n#include<logDepthFragment>\n#include<imageProcessingCompatibility>\n#define CUSTOM_FRAGMENT_MAIN_END\n}\n`;\n// Sideeffect\nif (!ShaderStore.ShadersStore[name]) {\n ShaderStore.ShadersStore[name] = shader;\n}\nconst includes = [clipPlaneFragmentDeclaration, logDepthDeclaration, fogFragmentDeclaration, clipPlaneFragment, fogFragment, logDepthFragment, imageProcessingCompatibility];\nfor (const inc of includes) {\n if (!ShaderStore.IncludesShadersStore[inc.name]) {\n ShaderStore.IncludesShadersStore[inc.name] = inc.shader;\n }\n}\n\n/** @internal */\nexport const gridPixelShader = { name, shader };\n"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","SuppressedError","GridMaterialDefines","_super","_this","CLIPPLANE","CLIPPLANE2","CLIPPLANE3","CLIPPLANE4","CLIPPLANE5","CLIPPLANE6","OPACITY","ANTIALIAS","TRANSPARENT","FOG","PREMULTIPLYALPHA","MAX_LINE","UV1","UV2","INSTANCES","THIN_INSTANCES","IMAGEPROCESSINGPOSTPROCESS","SKIPFINALCOLORCLAMP","LOGARITHMICDEPTH","rebuild","MaterialDefines","GridMaterial","name","scene","forceGLSL","undefined","mainColor","Color3","Black","lineColor","Teal","gridRatio","gridOffset","Vector3","Zero","majorUnitFrequency","minorUnitVisibility","opacity","antialias","preMultiplyAlpha","useMaxLine","_gridControl","Vector4","_shadersLoaded","needAlphaBlending","_opacityTexture","isReady","needAlphaBlendingForMesh","mesh","visibility","isReadyForSubMesh","subMesh","useInstances","drawWrapper","_drawWrapper","isFrozen","effect","_wasPreviouslyReady","_wasPreviouslyUsingInstances","materialDefines","defines","getScene","_isReadyForSubMesh","markAsUnprocessed","_areTexturesDirty","_needUVs","texturesEnabled","MaterialFlags","OpacityTextureEnabled","PrepareDefinesForMisc","_useLogarithmicDepth","fogEnabled","_isVertexOutputInvariant","PrepareDefinesForFrameBoundValues","getEngine","isDirty","markAsProcessed","resetCachedMaterial","PrepareDefinesForAttributes","attribs","VertexBuffer","PositionKind","NormalKind","push","UVKind","UV2Kind","imageProcessingConfiguration","applyByPostProcess","PrepareAttributesForInstances","uniforms","join","toString","AddClipPlaneUniforms","setEffect","createEffect","attributes","uniformsNames","uniformBuffersNames","samplers","fallbacks","onCompiled","onError","shaderLanguage","_shaderLanguage","extraInitializationsAsync","thisArg","_arguments","generator","body","f","y","t","_","label","sent","trys","ops","g","Iterator","next","verb","Symbol","iterator","n","v","op","done","value","pop","e","step","Promise","all","resolve","then","grid_vertex$1","grid_fragment$1","_a","grid_vertex","grid_fragment","P","reject","fulfilled","rejected","result","apply","_materialContext","_renderId","getRenderId","bindForSubMesh","world","_activeEffect","setFloat","THIN_INSTANCE","bindOnlyWorldMatrix","bindView","bindViewProjection","_mustRebind","setColor3","setVector3","x","Math","round","z","w","setVector4","setTexture","setFloat2","coordinatesIndex","level","setMatrix","getTextureMatrix","BindClipPlane","BindLogDepth","BindFogParameters","_afterBind","dispose","forceDisposeEffect","clone","SerializationHelper","Clone","serialize","serializationObject","customType","getClassName","Parse","source","rootUrl","serializeAsColor3","serializeAsVector3","serializeAsTexture","expandToProperty","PushMaterial","RegisterClass","GlobalObject","global","window","MatLib","BABYLON","shader","ShaderStore","ShadersStoreWGSL","_i","includes_1","instancesDeclarationWGSL","sceneUboDeclarationWGSL","logDepthDeclarationWGSL","fogVertexDeclarationWGSL","clipPlaneVertexDeclarationWGSL","instancesVertexWGSL","fogVertexWGSL","clipPlaneVertexWGSL","logDepthVertexWGSL","inc","IncludesShadersStoreWGSL","clipPlaneFragmentDeclarationWGSL","fogFragmentDeclarationWGSL","clipPlaneFragmentWGSL","fogFragmentWGSL","logDepthFragmentWGSL","imageProcessingCompatibilityWGSL","ShadersStore","instancesDeclaration","sceneVertexDeclaration","sceneUboDeclaration","logDepthDeclaration","fogVertexDeclaration","clipPlaneVertexDeclaration","instancesVertex","fogVertex","clipPlaneVertex","logDepthVertex","IncludesShadersStore","clipPlaneFragmentDeclaration","fogFragmentDeclaration","clipPlaneFragment","fogFragment","logDepthFragment","imageProcessingCompatibility"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"babylon.gridMaterial.min.js","sources":["file:///home/vsts/work/1/s/node_modules/tslib/tslib.es6.js","file:///home/vsts/work/1/s/packages/dev/materials/src/grid/gridMaterial.ts","file:///home/vsts/work/1/s/packages/dev/materials/src/legacy/legacy-grid.ts","file:///home/vsts/work/1/s/packages/dev/materials/src/grid/wgsl/grid.vertex.ts","file:///home/vsts/work/1/s/packages/dev/materials/src/grid/wgsl/grid.fragment.ts","file:///home/vsts/work/1/s/packages/dev/materials/src/grid/grid.vertex.ts","file:///home/vsts/work/1/s/packages/dev/materials/src/grid/grid.fragment.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { serializeAsTexture, serialize, expandToProperty, serializeAsColor3, serializeAsVector3 } from \"core/Misc/decorators\";\r\nimport { SerializationHelper } from \"core/Misc/decorators.serialization\";\r\nimport { type Matrix, Vector4, Vector2, Vector3 } from \"core/Maths/math.vector\";\r\nimport { Color3 } from \"core/Maths/math.color\";\r\nimport { type Nullable } from \"core/types\";\r\nimport { type BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\nimport { MaterialDefines } from \"core/Materials/materialDefines\";\r\nimport { PushMaterial } from \"core/Materials/pushMaterial\";\r\nimport { MaterialFlags } from \"core/Materials/materialFlags\";\r\nimport { VertexBuffer } from \"core/Buffers/buffer\";\r\nimport { type AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport { type SubMesh } from \"core/Meshes/subMesh\";\r\nimport { type Mesh } from \"core/Meshes/mesh\";\r\nimport { type Scene } from \"core/scene\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\n\r\nimport {\r\n BindFogParameters,\r\n BindLogDepth,\r\n PrepareAttributesForInstances,\r\n PrepareDefinesForAttributes,\r\n PrepareDefinesForFrameBoundValues,\r\n PrepareDefinesForMisc,\r\n} from \"core/Materials/materialHelper.functions\";\r\nimport { AddClipPlaneUniforms, BindClipPlane } from \"core/Materials/clipPlaneMaterialHelper\";\r\n\r\nclass GridMaterialDefines extends MaterialDefines {\r\n public CLIPPLANE = false;\r\n public CLIPPLANE2 = false;\r\n public CLIPPLANE3 = false;\r\n public CLIPPLANE4 = false;\r\n public CLIPPLANE5 = false;\r\n public CLIPPLANE6 = false;\r\n public OPACITY = false;\r\n public ANTIALIAS = false;\r\n public LINES_ONLY = false;\r\n public FOG = false;\r\n public PREMULTIPLYALPHA = false;\r\n public MAX_LINE = false;\r\n public UV1 = false;\r\n public UV2 = false;\r\n public INSTANCES = false;\r\n public THIN_INSTANCES = false;\r\n public IMAGEPROCESSINGPOSTPROCESS = false;\r\n public SKIPFINALCOLORCLAMP = false;\r\n public LOGARITHMICDEPTH = false;\r\n public MULTI_SCALE = false;\r\n public HORIZON_FADE = false;\r\n public BELOW_LINE_COLOR = false;\r\n public ORIGIN_MARKER = false;\r\n\r\n constructor() {\r\n super();\r\n this.rebuild();\r\n }\r\n}\r\n\r\n/**\r\n * The grid materials allows you to wrap any shape with a grid.\r\n * Colors are customizable.\r\n */\r\nexport class GridMaterial extends PushMaterial {\r\n /**\r\n * Main color of the grid (e.g. between lines)\r\n */\r\n @serializeAsColor3()\r\n public mainColor = Color3.Black();\r\n\r\n /**\r\n * Color of the grid lines.\r\n */\r\n @serializeAsColor3()\r\n public lineColor = Color3.Teal();\r\n\r\n /**\r\n * The scale of the grid compared to unit.\r\n */\r\n @serialize()\r\n public gridRatio = 1.0;\r\n\r\n /**\r\n * Allows setting an offset for the grid lines.\r\n */\r\n @serializeAsVector3()\r\n public gridOffset = Vector3.Zero();\r\n\r\n /**\r\n * The frequency of thicker lines.\r\n */\r\n @serialize()\r\n public majorUnitFrequency = 10;\r\n\r\n /**\r\n * The visibility of minor units in the grid.\r\n */\r\n @serialize()\r\n public minorUnitVisibility = 0.33;\r\n\r\n /**\r\n * Overall mesh opacity. In linesOnly mode this also scales the maximum line alpha.\r\n */\r\n @serialize()\r\n public opacity = 1.0;\r\n\r\n /**\r\n * Whether to antialias the grid\r\n */\r\n @serialize()\r\n public antialias = true;\r\n\r\n /**\r\n * Color of grid lines when the camera is below the surface.\r\n * When set, lineColor acts as the above-surface color.\r\n */\r\n @serializeAsColor3()\r\n public get belowLineColor(): Nullable<Color3> {\r\n return this._belowLineColor;\r\n }\r\n public set belowLineColor(value: Nullable<Color3>) {\r\n if (this._belowLineColor === value) {\r\n return;\r\n }\r\n this._belowLineColor = value;\r\n this._markAllSubMeshesAsMiscDirty();\r\n }\r\n private _belowLineColor: Nullable<Color3> = null;\r\n\r\n /**\r\n * Enable multi-scale logarithmic grid LOD. Number of octaves is controlled by gridOctaves.\r\n */\r\n @serialize()\r\n public useMultiScale: boolean = false;\r\n\r\n /**\r\n * World-unit spacing of the finest octave. Default 0.001.\r\n */\r\n @serialize()\r\n public minGridSpacing: number = 0.001;\r\n\r\n /**\r\n * Number of logarithmic octaves rendered (1–8). Default 4.\r\n */\r\n @serialize()\r\n public gridOctaves: number = 4;\r\n\r\n /**\r\n * Enable camera-distance-aware horizon (grazing-angle) fade.\r\n */\r\n @serialize()\r\n public useHorizonFade: boolean = false;\r\n\r\n /**\r\n * Render an ultra-fine crosshair at the world origin.\r\n */\r\n @serialize()\r\n public useOriginMarker: boolean = false;\r\n\r\n /**\r\n * When true, only grid lines are visible — non-grid pixels are discarded.\r\n * Puts the material in the alpha-blend queue and enables a depth pre-pass so grid lines\r\n * correctly occlude translucent objects (e.g. Gaussian splats). Set mesh.alphaIndex to a\r\n * value lower than other transparent objects so the depth pre-pass fires first.\r\n */\r\n @serialize()\r\n public get linesOnly(): boolean {\r\n return this._linesOnly;\r\n }\r\n public set linesOnly(value: boolean) {\r\n if (this._linesOnly === value) {\r\n return;\r\n }\r\n this._linesOnly = value;\r\n this.needDepthPrePass = value;\r\n this._markAllSubMeshesAsMiscDirty();\r\n }\r\n private _linesOnly = false;\r\n\r\n /**\r\n * Scales grid line width. Values \\> 1 produce thicker lines. Default 1.0.\r\n */\r\n @serialize()\r\n public gridThicknessModifier: number = 1.0;\r\n\r\n /**\r\n * Determine RBG output is premultiplied by alpha value.\r\n */\r\n @serialize()\r\n public preMultiplyAlpha = false;\r\n\r\n /**\r\n * Determines if the max line value will be used instead of the sum wherever grid lines intersect.\r\n */\r\n @serialize()\r\n public useMaxLine = false;\r\n\r\n @serializeAsTexture(\"opacityTexture\")\r\n private _opacityTexture: BaseTexture;\r\n /**\r\n * Texture to define opacity of the grid\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public opacityTexture: BaseTexture;\r\n\r\n private _gridControl: Vector4 = new Vector4(this.gridRatio, this.majorUnitFrequency, this.minorUnitVisibility, this.opacity);\r\n private _viewportSize: Vector2 = new Vector2();\r\n\r\n /**\r\n * constructor\r\n * @param name The name given to the material in order to identify it afterwards.\r\n * @param scene The scene the material is used in.\r\n * @param forceGLSL Use the GLSL code generation for the shader (even on WebGPU). Default is false\r\n */\r\n constructor(name: string, scene?: Scene, forceGLSL = false) {\r\n super(name, scene, undefined, forceGLSL);\r\n }\r\n\r\n private _shadersLoaded = false;\r\n\r\n /**\r\n * @returns whether or not the grid requires alpha blending.\r\n */\r\n public override needAlphaBlending(): boolean {\r\n return this.linesOnly || this.opacity < 1.0 || (this._opacityTexture && this._opacityTexture.isReady());\r\n }\r\n\r\n public override needAlphaBlendingForMesh(mesh: AbstractMesh): boolean {\r\n return mesh.visibility < 1.0 || this.needAlphaBlending();\r\n }\r\n\r\n public override isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean {\r\n const drawWrapper = subMesh._drawWrapper;\r\n\r\n if (this.isFrozen) {\r\n if (drawWrapper.effect && drawWrapper._wasPreviouslyReady && drawWrapper._wasPreviouslyUsingInstances === useInstances) {\r\n return true;\r\n }\r\n }\r\n\r\n if (!subMesh.materialDefines) {\r\n subMesh.materialDefines = new GridMaterialDefines();\r\n }\r\n\r\n const defines = <GridMaterialDefines>subMesh.materialDefines;\r\n const scene = this.getScene();\r\n\r\n if (this._isReadyForSubMesh(subMesh)) {\r\n return true;\r\n }\r\n\r\n if (defines.LINES_ONLY !== this.linesOnly) {\r\n defines.LINES_ONLY = this.linesOnly;\r\n defines.markAsUnprocessed();\r\n }\r\n\r\n if (defines.PREMULTIPLYALPHA != this.preMultiplyAlpha) {\r\n defines.PREMULTIPLYALPHA = !defines.PREMULTIPLYALPHA;\r\n defines.markAsUnprocessed();\r\n }\r\n\r\n if (defines.MAX_LINE !== this.useMaxLine) {\r\n defines.MAX_LINE = !defines.MAX_LINE;\r\n defines.markAsUnprocessed();\r\n }\r\n\r\n if (defines.ANTIALIAS !== this.antialias) {\r\n defines.ANTIALIAS = this.antialias;\r\n defines.markAsUnprocessed();\r\n }\r\n\r\n if (defines.MULTI_SCALE !== this.useMultiScale) {\r\n defines.MULTI_SCALE = this.useMultiScale;\r\n defines.markAsUnprocessed();\r\n }\r\n\r\n if (defines.HORIZON_FADE !== this.useHorizonFade) {\r\n defines.HORIZON_FADE = this.useHorizonFade;\r\n defines.markAsUnprocessed();\r\n }\r\n\r\n const wantsBelowColor = this._belowLineColor !== null;\r\n if (defines.BELOW_LINE_COLOR !== wantsBelowColor) {\r\n defines.BELOW_LINE_COLOR = wantsBelowColor;\r\n defines.markAsUnprocessed();\r\n }\r\n\r\n if (defines.ORIGIN_MARKER !== this.useOriginMarker) {\r\n defines.ORIGIN_MARKER = this.useOriginMarker;\r\n defines.markAsUnprocessed();\r\n }\r\n\r\n // Textures\r\n if (defines._areTexturesDirty) {\r\n defines._needUVs = false;\r\n if (scene.texturesEnabled) {\r\n if (this._opacityTexture && MaterialFlags.OpacityTextureEnabled) {\r\n if (!this._opacityTexture.isReady()) {\r\n return false;\r\n } else {\r\n defines._needUVs = true;\r\n defines.OPACITY = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n PrepareDefinesForMisc(mesh, scene, this._useLogarithmicDepth, false, this.fogEnabled, false, defines, undefined, undefined, undefined, this._isVertexOutputInvariant);\r\n\r\n // Values that need to be evaluated on every frame\r\n PrepareDefinesForFrameBoundValues(scene, scene.getEngine(), this, defines, !!useInstances);\r\n\r\n // Get correct effect\r\n if (defines.isDirty) {\r\n defines.markAsProcessed();\r\n scene.resetCachedMaterial();\r\n\r\n // Attributes\r\n PrepareDefinesForAttributes(mesh, defines, false, false);\r\n const attribs = [VertexBuffer.PositionKind, VertexBuffer.NormalKind];\r\n\r\n if (defines.UV1) {\r\n attribs.push(VertexBuffer.UVKind);\r\n }\r\n if (defines.UV2) {\r\n attribs.push(VertexBuffer.UV2Kind);\r\n }\r\n\r\n defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;\r\n\r\n PrepareAttributesForInstances(attribs, defines);\r\n\r\n const uniforms = [\r\n \"projection\",\r\n \"mainColor\",\r\n \"lineColor\",\r\n \"gridControl\",\r\n \"gridOffset\",\r\n \"vFogInfos\",\r\n \"vFogColor\",\r\n \"world\",\r\n \"view\",\r\n \"opacityMatrix\",\r\n \"vOpacityInfos\",\r\n \"visibility\",\r\n \"logarithmicDepthConstant\",\r\n \"gridThicknessModifier\",\r\n ];\r\n if (defines.MULTI_SCALE) {\r\n uniforms.push(\"minGridSpacing\", \"gridOctaves\");\r\n }\r\n if (defines.HORIZON_FADE || defines.BELOW_LINE_COLOR || defines.ORIGIN_MARKER) {\r\n uniforms.push(\"cameraPosition\", \"viewportSize\");\r\n }\r\n if (defines.BELOW_LINE_COLOR) {\r\n uniforms.push(\"belowLineColor\");\r\n }\r\n // Defines\r\n const join = defines.toString();\r\n AddClipPlaneUniforms(uniforms);\r\n subMesh.setEffect(\r\n scene.getEngine().createEffect(\r\n \"grid\",\r\n {\r\n attributes: attribs,\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: [\"Scene\"],\r\n samplers: [\"opacitySampler\"],\r\n defines: join,\r\n fallbacks: null,\r\n onCompiled: this.onCompiled,\r\n onError: this.onError,\r\n shaderLanguage: this._shaderLanguage,\r\n extraInitializationsAsync: this._shadersLoaded\r\n ? undefined\r\n : async () => {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n await Promise.all([import(\"./wgsl/grid.vertex\"), import(\"./wgsl/grid.fragment\")]);\r\n } else {\r\n await Promise.all([import(\"./grid.vertex\"), import(\"./grid.fragment\")]);\r\n }\r\n\r\n this._shadersLoaded = true;\r\n },\r\n },\r\n scene.getEngine()\r\n ),\r\n defines,\r\n this._materialContext\r\n );\r\n }\r\n\r\n if (!subMesh.effect || !subMesh.effect.isReady()) {\r\n return false;\r\n }\r\n\r\n defines._renderId = scene.getRenderId();\r\n drawWrapper._wasPreviouslyReady = true;\r\n drawWrapper._wasPreviouslyUsingInstances = !!useInstances;\r\n\r\n return true;\r\n }\r\n\r\n public override bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void {\r\n const scene = this.getScene();\r\n\r\n const defines = <GridMaterialDefines>subMesh.materialDefines;\r\n if (!defines) {\r\n return;\r\n }\r\n\r\n const effect = subMesh.effect;\r\n if (!effect) {\r\n return;\r\n }\r\n this._activeEffect = effect;\r\n\r\n this._activeEffect.setFloat(\"visibility\", mesh.visibility);\r\n\r\n // Matrices\r\n if (!defines.INSTANCES || defines.THIN_INSTANCE) {\r\n this.bindOnlyWorldMatrix(world);\r\n }\r\n this.bindView(effect);\r\n this.bindViewProjection(effect);\r\n\r\n // Uniforms\r\n if (this._mustRebind(scene, effect, subMesh)) {\r\n this._activeEffect.setColor3(\"mainColor\", this.mainColor);\r\n this._activeEffect.setColor3(\"lineColor\", this.lineColor);\r\n\r\n this._activeEffect.setVector3(\"gridOffset\", this.gridOffset);\r\n\r\n this._gridControl.x = this.gridRatio;\r\n this._gridControl.y = Math.round(this.majorUnitFrequency);\r\n this._gridControl.z = this.minorUnitVisibility;\r\n this._gridControl.w = this.opacity;\r\n this._activeEffect.setVector4(\"gridControl\", this._gridControl);\r\n this._activeEffect.setFloat(\"gridThicknessModifier\", this.gridThicknessModifier);\r\n\r\n if (defines.BELOW_LINE_COLOR && this._belowLineColor) {\r\n this._activeEffect.setColor3(\"belowLineColor\", this._belowLineColor);\r\n }\r\n\r\n if (defines.MULTI_SCALE) {\r\n this._activeEffect.setFloat(\"minGridSpacing\", this.minGridSpacing);\r\n this._activeEffect.setFloat(\"gridOctaves\", Math.max(1, Math.min(8, Math.round(this.gridOctaves))));\r\n }\r\n\r\n if (this._opacityTexture && MaterialFlags.OpacityTextureEnabled) {\r\n this._activeEffect.setTexture(\"opacitySampler\", this._opacityTexture);\r\n this._activeEffect.setFloat2(\"vOpacityInfos\", this._opacityTexture.coordinatesIndex, this._opacityTexture.level);\r\n this._activeEffect.setMatrix(\"opacityMatrix\", this._opacityTexture.getTextureMatrix());\r\n }\r\n\r\n // Clip plane\r\n BindClipPlane(effect, this, scene);\r\n // Log. depth\r\n if (this._useLogarithmicDepth) {\r\n BindLogDepth(defines, effect, scene);\r\n }\r\n }\r\n // Fog\r\n BindFogParameters(scene, mesh, this._activeEffect);\r\n\r\n // Camera uniforms — must be updated every frame\r\n if (defines.HORIZON_FADE || defines.BELOW_LINE_COLOR || defines.ORIGIN_MARKER) {\r\n const cam = scene.activeCamera;\r\n if (cam) {\r\n this._activeEffect.setVector3(\"cameraPosition\", cam.globalPosition);\r\n const engine = scene.getEngine();\r\n this._viewportSize.x = engine.getRenderWidth();\r\n this._viewportSize.y = engine.getRenderHeight();\r\n this._activeEffect.setVector2(\"viewportSize\", this._viewportSize);\r\n }\r\n }\r\n\r\n this._afterBind(mesh, this._activeEffect, subMesh);\r\n }\r\n\r\n /**\r\n * Dispose the material and its associated resources.\r\n * @param forceDisposeEffect will also dispose the used effect when true\r\n */\r\n public override dispose(forceDisposeEffect?: boolean): void {\r\n super.dispose(forceDisposeEffect);\r\n }\r\n\r\n public override clone(name: string): GridMaterial {\r\n return SerializationHelper.Clone(() => new GridMaterial(name, this.getScene()), this);\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.customType = \"BABYLON.GridMaterial\";\r\n return serializationObject;\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"GridMaterial\";\r\n }\r\n\r\n /**\r\n * Parse a JSON input to create back a grid material.\r\n * @param source the JSON data to parse\r\n * @param scene defines the hosting scene\r\n * @param rootUrl defines the root URL to use to load textures and relative dependencies\r\n * @returns a new grid material\r\n */\r\n public static override Parse(source: any, scene: Scene, rootUrl: string): GridMaterial {\r\n return SerializationHelper.Parse(() => new GridMaterial(source.name, scene), source, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.GridMaterial\", GridMaterial);\r\n","/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nimport * as MatLib from \"materials/grid/index\";\r\n\r\n/**\r\n * This is the entry point for the UMD module.\r\n * The entry point for a future ESM package should be index.ts\r\n */\r\nconst GlobalObject = typeof global !== \"undefined\" ? global : typeof window !== \"undefined\" ? window : undefined;\r\nif (typeof GlobalObject !== \"undefined\") {\r\n for (const key in MatLib) {\r\n (<any>GlobalObject).BABYLON[key] = (<any>MatLib)[key];\r\n }\r\n}\r\n\r\nexport * from \"materials/grid/index\";\r\n","// Do not edit.\nimport { ShaderStore } from \"core/Engines/shaderStore\";\nimport { instancesDeclarationWGSL } from \"core/ShadersWGSL/ShadersInclude/instancesDeclaration\";\nimport { sceneUboDeclarationWGSL } from \"core/ShadersWGSL/ShadersInclude/sceneUboDeclaration\";\nimport { logDepthDeclarationWGSL } from \"core/ShadersWGSL/ShadersInclude/logDepthDeclaration\";\nimport { fogVertexDeclarationWGSL } from \"core/ShadersWGSL/ShadersInclude/fogVertexDeclaration\";\nimport { clipPlaneVertexDeclarationWGSL } from \"core/ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration\";\nimport { instancesVertexWGSL } from \"core/ShadersWGSL/ShadersInclude/instancesVertex\";\nimport { fogVertexWGSL } from \"core/ShadersWGSL/ShadersInclude/fogVertex\";\nimport { clipPlaneVertexWGSL } from \"core/ShadersWGSL/ShadersInclude/clipPlaneVertex\";\nimport { logDepthVertexWGSL } from \"core/ShadersWGSL/ShadersInclude/logDepthVertex\";\n\nconst name = \"gridVertexShader\";\nconst shader = `attribute position: vec3f;attribute normal: vec3f;\n#ifdef UV1\nattribute uv: vec2f;\n#endif\n#ifdef UV2\nattribute uv2: vec2f;\n#endif\n#include<instancesDeclaration>\n#include<sceneUboDeclaration>\nvarying vPosition: vec3f;varying vNormal: vec3f;\n#if defined(HORIZON_FADE) || defined(BELOW_LINE_COLOR) || defined(ORIGIN_MARKER)\nvarying vWorldPos: vec3f;\n#endif\n#include<logDepthDeclaration>\n#include<fogVertexDeclaration>\n#ifdef OPACITY\nvarying vOpacityUV: vec2f;uniform opacityMatrix: mat4x4f;uniform vOpacityInfos: vec2f;\n#endif\n#include<clipPlaneVertexDeclaration>\n#define CUSTOM_VERTEX_DEFINITIONS\n@vertex\nfn main(input : VertexInputs)->FragmentInputs {\n#define CUSTOM_VERTEX_MAIN_BEGIN\n#include<instancesVertex>\nvar worldPos: vec4f=finalWorld* vec4f(vertexInputs.position,1.0);\n#include<fogVertex>\nvar cameraSpacePosition: vec4f=scene.view*worldPos;vertexOutputs.position=scene.projection*cameraSpacePosition;\n#ifdef OPACITY\n#ifndef UV1\nvar uv: vec2f= vec2f(0.,0.);\n#else\nvar uv: vec2f=vertexInputs.uv;\n#endif\n#ifndef UV2\nvar uv2: vec2f= vec2f(0.,0.);\n#else\nvar uv2: vec2f=vertexInputs.uv2;\n#endif\nif (uniforms.vOpacityInfos.x==0.)\n{vertexOutputs.vOpacityUV=(uniforms.opacityMatrix* vec4f(uv,1.0,0.0)).xy;}\nelse\n{vertexOutputs.vOpacityUV=(uniforms.opacityMatrix* vec4f(uv2,1.0,0.0)).xy;}\n#endif\n#include<clipPlaneVertex>\n#include<logDepthVertex>\nvertexOutputs.vPosition=vertexInputs.position;vertexOutputs.vNormal=vertexInputs.normal;\n#if defined(HORIZON_FADE) || defined(BELOW_LINE_COLOR) || defined(ORIGIN_MARKER)\nvertexOutputs.vWorldPos=worldPos.xyz;\n#endif\n#define CUSTOM_VERTEX_MAIN_END\n}\n`;\n// Sideeffect\nif (!ShaderStore.ShadersStoreWGSL[name]) {\n ShaderStore.ShadersStoreWGSL[name] = shader;\n}\nconst includes = [instancesDeclarationWGSL, sceneUboDeclarationWGSL, logDepthDeclarationWGSL, fogVertexDeclarationWGSL, clipPlaneVertexDeclarationWGSL, instancesVertexWGSL, fogVertexWGSL, clipPlaneVertexWGSL, logDepthVertexWGSL];\nfor (const inc of includes) {\n if (!ShaderStore.IncludesShadersStoreWGSL[inc.name]) {\n ShaderStore.IncludesShadersStoreWGSL[inc.name] = inc.shader;\n }\n}\n\n/** @internal */\nexport const gridVertexShaderWGSL = { name, shader };\n","// Do not edit.\nimport { ShaderStore } from \"core/Engines/shaderStore\";\nimport { clipPlaneFragmentDeclarationWGSL } from \"core/ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration\";\nimport { logDepthDeclarationWGSL } from \"core/ShadersWGSL/ShadersInclude/logDepthDeclaration\";\nimport { fogFragmentDeclarationWGSL } from \"core/ShadersWGSL/ShadersInclude/fogFragmentDeclaration\";\nimport { clipPlaneFragmentWGSL } from \"core/ShadersWGSL/ShadersInclude/clipPlaneFragment\";\nimport { fogFragmentWGSL } from \"core/ShadersWGSL/ShadersInclude/fogFragment\";\nimport { logDepthFragmentWGSL } from \"core/ShadersWGSL/ShadersInclude/logDepthFragment\";\nimport { imageProcessingCompatibilityWGSL } from \"core/ShadersWGSL/ShadersInclude/imageProcessingCompatibility\";\n\nconst name = \"gridPixelShader\";\nconst shader = `#define SQRT2 1.41421356\n#define PI 3.14159\n#define MAX_OCTAVES 8\n#define LINE_WIDTH_SCREEN_FRACTION 0.004\n#define HORIZON_FADE_EXPONENT 400.0\n#define ORIGIN_MARKER_SPAN 10000000.0\n#define ORIGIN_MARKER_WIDTH_SCALE 0.00000015\n#define ORIGIN_MARKER_THRESHOLD 0.0001\n#define TRANSPARENT_MIN_OPACITY 0.08\nuniform visibility: f32;uniform mainColor: vec3f;uniform lineColor: vec3f;uniform gridControl: vec4f;uniform gridOffset: vec3f;uniform gridThicknessModifier: f32;\n#ifdef MULTI_SCALE\nuniform minGridSpacing: f32;uniform gridOctaves: f32;\n#endif\n#if defined(HORIZON_FADE) || defined(BELOW_LINE_COLOR) || defined(ORIGIN_MARKER)\nuniform cameraPosition: vec3f;uniform viewportSize: vec2f;\n#endif\n#ifdef BELOW_LINE_COLOR\nuniform belowLineColor: vec3f;\n#endif\nvarying vPosition: vec3f;varying vNormal: vec3f;\n#if defined(HORIZON_FADE) || defined(BELOW_LINE_COLOR) || defined(ORIGIN_MARKER)\nvarying vWorldPos: vec3f;\n#endif\n#include<clipPlaneFragmentDeclaration>\n#include<logDepthDeclaration>\n#include<fogFragmentDeclaration>\n#ifdef OPACITY\nvarying vOpacityUV: vec2f;var opacitySamplerSampler: sampler;var opacitySampler: texture_2d<f32>;uniform vOpacityInfos: vec2f;\n#endif\nfn getDynamicVisibility(position: f32)->f32 {var majorGridFrequency: f32=uniforms.gridControl.y;if (floor(position+0.5)==floor(position/majorGridFrequency+0.5)*majorGridFrequency)\n{return 1.0;}\nreturn uniforms.gridControl.z;}\nfn getAnisotropicAttenuation(differentialLength: f32)->f32 {let maxNumberOfLines: f32=10.0;return clamp(1.0/(differentialLength+1.0)-1.0/maxNumberOfLines,0.0,1.0);}\nfn isPointOnLine(position: f32,differentialLength: f32)->f32 {var fractionPartOfPosition: f32=position-floor(position+0.5);fractionPartOfPosition=fractionPartOfPosition/differentialLength;\n#ifdef ANTIALIAS\nfractionPartOfPosition=clamp(fractionPartOfPosition,-1.,1.);var result: f32=0.5+0.5*cos(fractionPartOfPosition*PI);return result;\n#else\nif (abs(fractionPartOfPosition)<SQRT2/4.) {return 1.;}\nreturn 0.;\n#endif\n}\nfn contributionOnAxis(position: f32,tcLineWidthCap: f32,thicknessModifier: f32)->f32 {let dPosDx: f32=dpdx(position);let dPosDy: f32=dpdy(position);var differentialLength: f32=length(vec2f(dPosDx,dPosDy))*SQRT2;if (tcLineWidthCap>0.0) {differentialLength=max(differentialLength,tcLineWidthCap);}\nlet lineWidth: f32=differentialLength*thicknessModifier;var result: f32=isPointOnLine(position,lineWidth);result=result*getDynamicVisibility(position);result=result*getAnisotropicAttenuation(differentialLength);return result;}\nfn normalImpactOnAxis(x: f32)->f32 {var normalImpact: f32=clamp(1.0-3.0*abs(x*x*x),0.0,1.0);return normalImpact;}\n#define CUSTOM_FRAGMENT_DEFINITIONS\n@fragment\nfn main(input: FragmentInputs)->FragmentOutputs {\n#define CUSTOM_FRAGMENT_MAIN_BEGIN\n#include<clipPlaneFragment>\nvar normal: vec3f=normalize(fragmentInputs.vNormal);var horizonFade: f32=1.0;var tcLineWidthCap: f32=0.0;\n#if defined(HORIZON_FADE) || defined(ORIGIN_MARKER)\nvar tc: f32=length(fragmentInputs.vWorldPos-uniforms.cameraPosition);\n#ifdef HORIZON_FADE\ntcLineWidthCap=LINE_WIDTH_SCREEN_FRACTION*tc/uniforms.viewportSize.y;let rd: vec3f=normalize(fragmentInputs.vWorldPos-uniforms.cameraPosition);if (abs(rd.y)>0.99) {horizonFade=1.0;} else {let flatRayDir: vec3f=normalize(vec3f(rd.x,0.0,rd.z));horizonFade=-pow(abs(dot(rd,flatRayDir)),HORIZON_FADE_EXPONENT)+1.0;}\n#endif\n#endif\nvar grid: f32=0.0;\n#ifdef MULTI_SCALE\nfor (var i: i32=0; i<MAX_OCTAVES; i++) {if (i>=i32(uniforms.gridOctaves)) { break; }\nlet scale: f32=uniforms.minGridSpacing*pow(10.0,f32(i));let gridPos: vec3f=(fragmentInputs.vPosition+uniforms.gridOffset.xyz)/scale;let gx: f32=contributionOnAxis(gridPos.x,tcLineWidthCap,uniforms.gridThicknessModifier)*normalImpactOnAxis(normal.x);let gy: f32=contributionOnAxis(gridPos.y,tcLineWidthCap,uniforms.gridThicknessModifier)*normalImpactOnAxis(normal.y);let gz: f32=contributionOnAxis(gridPos.z,tcLineWidthCap,uniforms.gridThicknessModifier)*normalImpactOnAxis(normal.z);\n#ifdef MAX_LINE\ngrid=max(grid,clamp(max(max(gx,gy),gz),0.,1.));\n#else\ngrid=max(grid,clamp(gx+gy+gz,0.,1.));\n#endif\n}\n#else\nlet gridRatio: f32=uniforms.gridControl.x;let gridPos: vec3f=(fragmentInputs.vPosition+uniforms.gridOffset.xyz)/gridRatio;let x: f32=contributionOnAxis(gridPos.x,tcLineWidthCap,uniforms.gridThicknessModifier)*normalImpactOnAxis(normal.x);let y: f32=contributionOnAxis(gridPos.y,tcLineWidthCap,uniforms.gridThicknessModifier)*normalImpactOnAxis(normal.y);let z: f32=contributionOnAxis(gridPos.z,tcLineWidthCap,uniforms.gridThicknessModifier)*normalImpactOnAxis(normal.z);\n#ifdef MAX_LINE\ngrid=clamp(max(max(x,y),z),0.,1.);\n#else\ngrid=clamp(x+y+z,0.,1.);\n#endif\n#endif\ngrid=grid*horizonFade;\n#ifdef ORIGIN_MARKER\nlet tcOrigin: f32=ORIGIN_MARKER_WIDTH_SCALE*tc/uniforms.viewportSize.y;let ox: f32=contributionOnAxis(fragmentInputs.vWorldPos.x/ORIGIN_MARKER_SPAN,tcOrigin,uniforms.gridThicknessModifier);let oz: f32=contributionOnAxis(fragmentInputs.vWorldPos.z/ORIGIN_MARKER_SPAN,tcOrigin,uniforms.gridThicknessModifier);let originMask: f32=clamp(ox+oz,0.0,1.0)*horizonFade;if (originMask>ORIGIN_MARKER_THRESHOLD) { grid=originMask; }\n#endif\n#ifdef BELOW_LINE_COLOR\nlet belowSurface: bool=uniforms.cameraPosition.y<fragmentInputs.vWorldPos.y;let effectiveLineColor: vec3f=select(uniforms.lineColor,uniforms.belowLineColor,belowSurface);\n#else\nlet effectiveLineColor: vec3f=uniforms.lineColor;\n#endif\nvar color: vec4f=vec4f(mix(uniforms.mainColor,effectiveLineColor,vec3f(grid)),1.0);\n#ifdef FOG\n#include<fogFragment>\n#endif\nvar opacity: f32=uniforms.gridControl.w;\n#ifdef LINES_ONLY\nif (grid<0.01) { discard; }\nopacity=clamp(grid,TRANSPARENT_MIN_OPACITY,uniforms.gridControl.w*grid);\n#endif\n#ifdef OPACITY\nopacity=opacity*textureSample(opacitySampler,opacitySamplerSampler,fragmentInputs.vOpacityUV).a;\n#endif\nfragmentOutputs.color=vec4f(color.rgb,opacity*uniforms.visibility);\n#ifdef PREMULTIPLYALPHA\nfragmentOutputs.color=vec4f(fragmentOutputs.color.rgb*opacity,fragmentOutputs.color.a);\n#endif\n#include<logDepthFragment>\n#include<imageProcessingCompatibility>\n#define CUSTOM_FRAGMENT_MAIN_END\n}\n`;\n// Sideeffect\nif (!ShaderStore.ShadersStoreWGSL[name]) {\n ShaderStore.ShadersStoreWGSL[name] = shader;\n}\nconst includes = [clipPlaneFragmentDeclarationWGSL, logDepthDeclarationWGSL, fogFragmentDeclarationWGSL, clipPlaneFragmentWGSL, fogFragmentWGSL, logDepthFragmentWGSL, imageProcessingCompatibilityWGSL];\nfor (const inc of includes) {\n if (!ShaderStore.IncludesShadersStoreWGSL[inc.name]) {\n ShaderStore.IncludesShadersStoreWGSL[inc.name] = inc.shader;\n }\n}\n\n/** @internal */\nexport const gridPixelShaderWGSL = { name, shader };\n","// Do not edit.\nimport { ShaderStore } from \"core/Engines/shaderStore\";\nimport { instancesDeclaration } from \"core/Shaders/ShadersInclude/instancesDeclaration\";\nimport { sceneVertexDeclaration } from \"core/Shaders/ShadersInclude/sceneVertexDeclaration\";\nimport { sceneUboDeclaration } from \"core/Shaders/ShadersInclude/sceneUboDeclaration\";\nimport { logDepthDeclaration } from \"core/Shaders/ShadersInclude/logDepthDeclaration\";\nimport { fogVertexDeclaration } from \"core/Shaders/ShadersInclude/fogVertexDeclaration\";\nimport { clipPlaneVertexDeclaration } from \"core/Shaders/ShadersInclude/clipPlaneVertexDeclaration\";\nimport { instancesVertex } from \"core/Shaders/ShadersInclude/instancesVertex\";\nimport { fogVertex } from \"core/Shaders/ShadersInclude/fogVertex\";\nimport { clipPlaneVertex } from \"core/Shaders/ShadersInclude/clipPlaneVertex\";\nimport { logDepthVertex } from \"core/Shaders/ShadersInclude/logDepthVertex\";\n\nconst name = \"gridVertexShader\";\nconst shader = `precision highp float;attribute vec3 position;attribute vec3 normal;\n#ifdef UV1\nattribute vec2 uv;\n#endif\n#ifdef UV2\nattribute vec2 uv2;\n#endif\n#include<instancesDeclaration>\n#include<__decl__sceneVertex>\nvarying vec3 vPosition;varying vec3 vNormal;\n#if defined(HORIZON_FADE) || defined(BELOW_LINE_COLOR) || defined(ORIGIN_MARKER)\nvarying vec3 vWorldPos;\n#endif\n#include<logDepthDeclaration>\n#include<fogVertexDeclaration>\n#ifdef OPACITY\nvarying vec2 vOpacityUV;uniform mat4 opacityMatrix;uniform vec2 vOpacityInfos;\n#endif\n#include<clipPlaneVertexDeclaration>\n#define CUSTOM_VERTEX_DEFINITIONS\nvoid main(void) {\n#define CUSTOM_VERTEX_MAIN_BEGIN\n#include<instancesVertex>\nvec4 worldPos=finalWorld*vec4(position,1.0);\n#include<fogVertex>\nvec4 cameraSpacePosition=view*worldPos;gl_Position=projection*cameraSpacePosition;\n#ifdef OPACITY\n#ifndef UV1\nvec2 uv=vec2(0.,0.);\n#endif\n#ifndef UV2\nvec2 uv2=vec2(0.,0.);\n#endif\nif (vOpacityInfos.x==0.)\n{vOpacityUV=vec2(opacityMatrix*vec4(uv,1.0,0.0));}\nelse\n{vOpacityUV=vec2(opacityMatrix*vec4(uv2,1.0,0.0));}\n#endif \n#include<clipPlaneVertex>\n#include<logDepthVertex>\nvPosition=position;vNormal=normal;\n#if defined(HORIZON_FADE) || defined(BELOW_LINE_COLOR) || defined(ORIGIN_MARKER)\nvWorldPos=worldPos.xyz;\n#endif\n#define CUSTOM_VERTEX_MAIN_END\n}`;\n// Sideeffect\nif (!ShaderStore.ShadersStore[name]) {\n ShaderStore.ShadersStore[name] = shader;\n}\nconst includes = [instancesDeclaration, sceneVertexDeclaration, sceneUboDeclaration, logDepthDeclaration, fogVertexDeclaration, clipPlaneVertexDeclaration, instancesVertex, fogVertex, clipPlaneVertex, logDepthVertex];\nfor (const inc of includes) {\n if (!ShaderStore.IncludesShadersStore[inc.name]) {\n ShaderStore.IncludesShadersStore[inc.name] = inc.shader;\n }\n}\n\n/** @internal */\nexport const gridVertexShader = { name, shader };\n","// Do not edit.\nimport { ShaderStore } from \"core/Engines/shaderStore\";\nimport { clipPlaneFragmentDeclaration } from \"core/Shaders/ShadersInclude/clipPlaneFragmentDeclaration\";\nimport { logDepthDeclaration } from \"core/Shaders/ShadersInclude/logDepthDeclaration\";\nimport { fogFragmentDeclaration } from \"core/Shaders/ShadersInclude/fogFragmentDeclaration\";\nimport { clipPlaneFragment } from \"core/Shaders/ShadersInclude/clipPlaneFragment\";\nimport { fogFragment } from \"core/Shaders/ShadersInclude/fogFragment\";\nimport { logDepthFragment } from \"core/Shaders/ShadersInclude/logDepthFragment\";\nimport { imageProcessingCompatibility } from \"core/Shaders/ShadersInclude/imageProcessingCompatibility\";\n\nconst name = \"gridPixelShader\";\nconst shader = `#extension GL_OES_standard_derivatives : enable\n#define SQRT2 1.41421356\n#define PI 3.14159\n#define MAX_OCTAVES 8\n#define LINE_WIDTH_SCREEN_FRACTION 0.004\n#define HORIZON_FADE_EXPONENT 400.0\n#define ORIGIN_MARKER_SPAN 10000000.0\n#define ORIGIN_MARKER_WIDTH_SCALE 0.00000015\n#define ORIGIN_MARKER_THRESHOLD 0.0001\n#define TRANSPARENT_MIN_OPACITY 0.08\nprecision highp float;uniform float visibility;uniform vec3 mainColor;uniform vec3 lineColor;uniform vec4 gridControl;uniform vec3 gridOffset;uniform float gridThicknessModifier;\n#ifdef MULTI_SCALE\nuniform float minGridSpacing;uniform float gridOctaves;\n#endif\n#if defined(HORIZON_FADE) || defined(BELOW_LINE_COLOR) || defined(ORIGIN_MARKER)\nuniform vec3 cameraPosition;uniform vec2 viewportSize;\n#endif\n#ifdef BELOW_LINE_COLOR\nuniform vec3 belowLineColor;\n#endif\nvarying vec3 vPosition;varying vec3 vNormal;\n#if defined(HORIZON_FADE) || defined(BELOW_LINE_COLOR) || defined(ORIGIN_MARKER)\nvarying vec3 vWorldPos;\n#endif\n#ifdef LOGARITHMICDEPTH\n#extension GL_EXT_frag_depth : enable\n#endif\n#include<clipPlaneFragmentDeclaration>\n#include<logDepthDeclaration>\n#include<fogFragmentDeclaration>\n#ifdef OPACITY\nvarying vec2 vOpacityUV;uniform sampler2D opacitySampler;uniform vec2 vOpacityInfos;\n#endif\nfloat getDynamicVisibility(float position) {float majorGridFrequency=gridControl.y;if (floor(position+0.5)==floor(position/majorGridFrequency+0.5)*majorGridFrequency)\n{return 1.0;}\nreturn gridControl.z;}\nfloat getAnisotropicAttenuation(float differentialLength) {const float maxNumberOfLines=10.0;return clamp(1.0/(differentialLength+1.0)-1.0/maxNumberOfLines,0.0,1.0);}\nfloat isPointOnLine(float position,float differentialLength) {float fractionPartOfPosition=position-floor(position+0.5); \nfractionPartOfPosition/=differentialLength; \n#ifdef ANTIALIAS\nfractionPartOfPosition=clamp(fractionPartOfPosition,-1.,1.);float result=0.5+0.5*cos(fractionPartOfPosition*PI); \nreturn result;\n#else\nreturn abs(fractionPartOfPosition)<SQRT2/4. ? 1. : 0.;\n#endif\n}\nfloat contributionOnAxis(float position,float tcLineWidthCap,float thicknessModifier) {float dPosDx=dFdx(position);float dPosDy=dFdy(position);float differentialLength=length(vec2(dPosDx,dPosDy))*SQRT2;if (tcLineWidthCap>0.0) {differentialLength=max(differentialLength,tcLineWidthCap);}\nfloat lineWidth=differentialLength*thicknessModifier;float result=isPointOnLine(position,lineWidth);result*=getDynamicVisibility(position);result*=getAnisotropicAttenuation(differentialLength);return result;}\nfloat normalImpactOnAxis(float x) {float normalImpact=clamp(1.0-3.0*abs(x*x*x),0.0,1.0);return normalImpact;}\n#define CUSTOM_FRAGMENT_DEFINITIONS\nvoid main(void) {\n#define CUSTOM_FRAGMENT_MAIN_BEGIN\n#include<clipPlaneFragment>\nvec3 normal=normalize(vNormal);float horizonFade=1.0;float tcLineWidthCap=0.0;\n#if defined(HORIZON_FADE) || defined(ORIGIN_MARKER)\nfloat tc=length(vWorldPos-cameraPosition);\n#endif\n#ifdef HORIZON_FADE\ntcLineWidthCap=LINE_WIDTH_SCREEN_FRACTION*tc/viewportSize.y;vec3 rd=normalize(vWorldPos-cameraPosition);if (abs(rd.y)>0.99) {horizonFade=1.0;} else {vec3 flatRayDir=normalize(vec3(rd.x,0.0,rd.z));horizonFade=-pow(abs(dot(rd,flatRayDir)),HORIZON_FADE_EXPONENT)+1.0;}\n#endif\nfloat grid=0.0;\n#ifdef MULTI_SCALE\nfor (int i=0; i<MAX_OCTAVES; i++) {if (i>=int(gridOctaves)) break;float scale=minGridSpacing*pow(10.0,float(i));vec3 gridPos=(vPosition+gridOffset.xyz)/scale;float gx=contributionOnAxis(gridPos.x,tcLineWidthCap,gridThicknessModifier)*normalImpactOnAxis(normal.x);float gy=contributionOnAxis(gridPos.y,tcLineWidthCap,gridThicknessModifier)*normalImpactOnAxis(normal.y);float gz=contributionOnAxis(gridPos.z,tcLineWidthCap,gridThicknessModifier)*normalImpactOnAxis(normal.z);\n#ifdef MAX_LINE\ngrid=max(grid,clamp(max(max(gx,gy),gz),0.,1.));\n#else\ngrid=max(grid,clamp(gx+gy+gz,0.,1.));\n#endif\n}\n#else\nfloat gridRatio=gridControl.x;vec3 gridPos=(vPosition+gridOffset.xyz)/gridRatio;float x=contributionOnAxis(gridPos.x,tcLineWidthCap,gridThicknessModifier)*normalImpactOnAxis(normal.x);float y=contributionOnAxis(gridPos.y,tcLineWidthCap,gridThicknessModifier)*normalImpactOnAxis(normal.y);float z=contributionOnAxis(gridPos.z,tcLineWidthCap,gridThicknessModifier)*normalImpactOnAxis(normal.z);\n#ifdef MAX_LINE\ngrid=clamp(max(max(x,y),z),0.,1.);\n#else\ngrid=clamp(x+y+z,0.,1.);\n#endif\n#endif\ngrid*=horizonFade;\n#ifdef ORIGIN_MARKER\nfloat tcOrigin=ORIGIN_MARKER_WIDTH_SCALE*tc/viewportSize.y;float ox=contributionOnAxis(vWorldPos.x/ORIGIN_MARKER_SPAN,tcOrigin,gridThicknessModifier);float oz=contributionOnAxis(vWorldPos.z/ORIGIN_MARKER_SPAN,tcOrigin,gridThicknessModifier);float originMask=clamp(ox+oz,0.0,1.0)*horizonFade;if (originMask>ORIGIN_MARKER_THRESHOLD) grid=originMask;\n#endif\n#ifdef BELOW_LINE_COLOR\nbool belowSurface=cameraPosition.y<vWorldPos.y;vec3 effectiveLineColor=belowSurface ? belowLineColor : lineColor;\n#else\nvec3 effectiveLineColor=lineColor;\n#endif\nvec3 color=mix(mainColor,effectiveLineColor,grid);\n#ifdef FOG\n#include<fogFragment>\n#endif\nfloat opacity=gridControl.w;\n#ifdef LINES_ONLY\nif (grid<0.01) discard;opacity=clamp(grid,TRANSPARENT_MIN_OPACITY,gridControl.w*grid);\n#endif\n#ifdef OPACITY\nopacity*=texture2D(opacitySampler,vOpacityUV).a;\n#endif\ngl_FragColor=vec4(color.rgb,opacity*visibility);\n#ifdef PREMULTIPLYALPHA\ngl_FragColor.rgb*=opacity;\n#endif\n#include<logDepthFragment>\n#include<imageProcessingCompatibility>\n#define CUSTOM_FRAGMENT_MAIN_END\n}\n`;\n// Sideeffect\nif (!ShaderStore.ShadersStore[name]) {\n ShaderStore.ShadersStore[name] = shader;\n}\nconst includes = [clipPlaneFragmentDeclaration, logDepthDeclaration, fogFragmentDeclaration, clipPlaneFragment, fogFragment, logDepthFragment, imageProcessingCompatibility];\nfor (const inc of includes) {\n if (!ShaderStore.IncludesShadersStore[inc.name]) {\n ShaderStore.IncludesShadersStore[inc.name] = inc.shader;\n }\n}\n\n/** @internal */\nexport const gridPixelShader = { name, shader };\n"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","SuppressedError","GridMaterialDefines","_super","_this","CLIPPLANE","CLIPPLANE2","CLIPPLANE3","CLIPPLANE4","CLIPPLANE5","CLIPPLANE6","OPACITY","ANTIALIAS","LINES_ONLY","FOG","PREMULTIPLYALPHA","MAX_LINE","UV1","UV2","INSTANCES","THIN_INSTANCES","IMAGEPROCESSINGPOSTPROCESS","SKIPFINALCOLORCLAMP","LOGARITHMICDEPTH","MULTI_SCALE","HORIZON_FADE","BELOW_LINE_COLOR","ORIGIN_MARKER","rebuild","MaterialDefines","GridMaterial","name","scene","forceGLSL","undefined","mainColor","Color3","Black","lineColor","Teal","gridRatio","gridOffset","Vector3","Zero","majorUnitFrequency","minorUnitVisibility","opacity","antialias","_belowLineColor","useMultiScale","minGridSpacing","gridOctaves","useHorizonFade","useOriginMarker","_linesOnly","gridThicknessModifier","preMultiplyAlpha","useMaxLine","_gridControl","Vector4","_viewportSize","Vector2","_shadersLoaded","get","set","value","_markAllSubMeshesAsMiscDirty","needDepthPrePass","needAlphaBlending","linesOnly","_opacityTexture","isReady","needAlphaBlendingForMesh","mesh","visibility","isReadyForSubMesh","subMesh","useInstances","drawWrapper","_drawWrapper","isFrozen","effect","_wasPreviouslyReady","_wasPreviouslyUsingInstances","materialDefines","defines","getScene","_isReadyForSubMesh","markAsUnprocessed","wantsBelowColor","_areTexturesDirty","_needUVs","texturesEnabled","MaterialFlags","OpacityTextureEnabled","PrepareDefinesForMisc","_useLogarithmicDepth","fogEnabled","_isVertexOutputInvariant","PrepareDefinesForFrameBoundValues","getEngine","isDirty","markAsProcessed","resetCachedMaterial","PrepareDefinesForAttributes","attribs","VertexBuffer","PositionKind","NormalKind","push","UVKind","UV2Kind","imageProcessingConfiguration","applyByPostProcess","PrepareAttributesForInstances","uniforms","join","toString","AddClipPlaneUniforms","setEffect","createEffect","attributes","uniformsNames","uniformBuffersNames","samplers","fallbacks","onCompiled","onError","shaderLanguage","_shaderLanguage","extraInitializationsAsync","thisArg","_arguments","generator","body","f","y","t","_","label","sent","trys","ops","g","Iterator","next","verb","Symbol","iterator","n","v","op","done","pop","e","step","Promise","all","resolve","then","grid_vertex$1","grid_fragment$1","_a","grid_vertex","grid_fragment","P","reject","fulfilled","rejected","result","apply","_materialContext","_renderId","getRenderId","bindForSubMesh","world","_activeEffect","setFloat","THIN_INSTANCE","bindOnlyWorldMatrix","bindView","bindViewProjection","_mustRebind","setColor3","setVector3","x","Math","round","z","w","setVector4","max","min","setTexture","setFloat2","coordinatesIndex","level","setMatrix","getTextureMatrix","BindClipPlane","BindLogDepth","BindFogParameters","cam","activeCamera","globalPosition","engine","getRenderWidth","getRenderHeight","setVector2","_afterBind","dispose","forceDisposeEffect","clone","SerializationHelper","Clone","serialize","serializationObject","customType","getClassName","Parse","source","rootUrl","serializeAsColor3","serializeAsVector3","serializeAsTexture","expandToProperty","PushMaterial","RegisterClass","GlobalObject","global","window","MatLib","BABYLON","shader","ShaderStore","ShadersStoreWGSL","_i","includes_1","instancesDeclarationWGSL","sceneUboDeclarationWGSL","logDepthDeclarationWGSL","fogVertexDeclarationWGSL","clipPlaneVertexDeclarationWGSL","instancesVertexWGSL","fogVertexWGSL","clipPlaneVertexWGSL","logDepthVertexWGSL","inc","IncludesShadersStoreWGSL","clipPlaneFragmentDeclarationWGSL","fogFragmentDeclarationWGSL","clipPlaneFragmentWGSL","fogFragmentWGSL","logDepthFragmentWGSL","imageProcessingCompatibilityWGSL","ShadersStore","instancesDeclaration","sceneVertexDeclaration","sceneUboDeclaration","logDepthDeclaration","fogVertexDeclaration","clipPlaneVertexDeclaration","instancesVertex","fogVertex","clipPlaneVertex","logDepthVertex","IncludesShadersStore","clipPlaneFragmentDeclaration","fogFragmentDeclaration","clipPlaneFragment","fogFragment","logDepthFragment","imageProcessingCompatibility"],"mappings":"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","x_google_ignoreList":[0]}
@@ -896,13 +896,53 @@ declare namespace BABYLON {
896
896
  */
897
897
  minorUnitVisibility: number;
898
898
  /**
899
- * The grid opacity outside of the lines.
899
+ * Overall mesh opacity. In linesOnly mode this also scales the maximum line alpha.
900
900
  */
901
901
  opacity: number;
902
902
  /**
903
903
  * Whether to antialias the grid
904
904
  */
905
905
  antialias: boolean;
906
+ /**
907
+ * Color of grid lines when the camera is below the surface.
908
+ * When set, lineColor acts as the above-surface color.
909
+ */
910
+ get belowLineColor(): Nullable<Color3>;
911
+ set belowLineColor(value: Nullable<Color3>);
912
+ private _belowLineColor;
913
+ /**
914
+ * Enable multi-scale logarithmic grid LOD. Number of octaves is controlled by gridOctaves.
915
+ */
916
+ useMultiScale: boolean;
917
+ /**
918
+ * World-unit spacing of the finest octave. Default 0.001.
919
+ */
920
+ minGridSpacing: number;
921
+ /**
922
+ * Number of logarithmic octaves rendered (1–8). Default 4.
923
+ */
924
+ gridOctaves: number;
925
+ /**
926
+ * Enable camera-distance-aware horizon (grazing-angle) fade.
927
+ */
928
+ useHorizonFade: boolean;
929
+ /**
930
+ * Render an ultra-fine crosshair at the world origin.
931
+ */
932
+ useOriginMarker: boolean;
933
+ /**
934
+ * When true, only grid lines are visible — non-grid pixels are discarded.
935
+ * Puts the material in the alpha-blend queue and enables a depth pre-pass so grid lines
936
+ * correctly occlude translucent objects (e.g. Gaussian splats). Set mesh.alphaIndex to a
937
+ * value lower than other transparent objects so the depth pre-pass fires first.
938
+ */
939
+ get linesOnly(): boolean;
940
+ set linesOnly(value: boolean);
941
+ private _linesOnly;
942
+ /**
943
+ * Scales grid line width. Values \> 1 produce thicker lines. Default 1.0.
944
+ */
945
+ gridThicknessModifier: number;
906
946
  /**
907
947
  * Determine RBG output is premultiplied by alpha value.
908
948
  */
@@ -917,6 +957,7 @@ declare namespace BABYLON {
917
957
  */
918
958
  opacityTexture: BaseTexture;
919
959
  private _gridControl;
960
+ private _viewportSize;
920
961
  /**
921
962
  * constructor
922
963
  * @param name The name given to the material in order to identify it afterwards.
@@ -940,6 +981,13 @@ declare namespace BABYLON {
940
981
  clone(name: string): GridMaterial;
941
982
  serialize(): any;
942
983
  getClassName(): string;
984
+ /**
985
+ * Parse a JSON input to create back a grid material.
986
+ * @param source the JSON data to parse
987
+ * @param scene defines the hosting scene
988
+ * @param rootUrl defines the root URL to use to load textures and relative dependencies
989
+ * @returns a new grid material
990
+ */
943
991
  static Parse(source: any, scene: Scene, rootUrl: string): GridMaterial;
944
992
  }
945
993