@onerjs/materials 8.41.2 → 8.41.3

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.
@@ -0,0 +1,12 @@
1
+ import "@onerjs/core/Shaders/ShadersInclude/clipPlaneFragmentDeclaration.js";
2
+ import "@onerjs/core/Shaders/ShadersInclude/logDepthDeclaration.js";
3
+ import "@onerjs/core/Shaders/ShadersInclude/fogFragmentDeclaration.js";
4
+ import "@onerjs/core/Shaders/ShadersInclude/clipPlaneFragment.js";
5
+ import "@onerjs/core/Shaders/ShadersInclude/fogFragment.js";
6
+ import "@onerjs/core/Shaders/ShadersInclude/logDepthFragment.js";
7
+ import "@onerjs/core/Shaders/ShadersInclude/imageProcessingCompatibility.js";
8
+ /** @internal */
9
+ export declare const axesGridPixelShader: {
10
+ name: string;
11
+ shader: string;
12
+ };
@@ -0,0 +1,78 @@
1
+ // Do not edit.
2
+ import { ShaderStore } from "@onerjs/core/Engines/shaderStore.js";
3
+ import "@onerjs/core/Shaders/ShadersInclude/clipPlaneFragmentDeclaration.js";
4
+ import "@onerjs/core/Shaders/ShadersInclude/logDepthDeclaration.js";
5
+ import "@onerjs/core/Shaders/ShadersInclude/fogFragmentDeclaration.js";
6
+ import "@onerjs/core/Shaders/ShadersInclude/clipPlaneFragment.js";
7
+ import "@onerjs/core/Shaders/ShadersInclude/fogFragment.js";
8
+ import "@onerjs/core/Shaders/ShadersInclude/logDepthFragment.js";
9
+ import "@onerjs/core/Shaders/ShadersInclude/imageProcessingCompatibility.js";
10
+ const name = "axesGridPixelShader";
11
+ const shader = `#extension GL_OES_standard_derivatives : enable
12
+ #define SQRT2 1.41421356
13
+ #define PI 3.14159
14
+ precision highp float;uniform float visibility;uniform vec4 mainColor;uniform vec4 lineColor;uniform vec4 gridControl;uniform vec3 gridOffset;varying vec3 vPosition;varying vec3 vNormal;uniform vec4 hAxisColor;uniform vec4 vAxisColor;
15
+ #ifdef LOGARITHMICDEPTH
16
+ #extension GL_EXT_frag_depth : enable
17
+ #endif
18
+ #include<clipPlaneFragmentDeclaration>
19
+ #include<logDepthDeclaration>
20
+ #include<fogFragmentDeclaration>
21
+ #ifdef OPACITY
22
+ varying vec2 vOpacityUV;uniform sampler2D opacitySampler;uniform vec2 vOpacityInfos;
23
+ #endif
24
+ bool isOnXAxis(vec3 gridPos) {const float EPSILON=0.01;return abs(gridPos.y)<EPSILON && abs(gridPos.z)<EPSILON;}
25
+ bool isOnYAxis(vec3 gridPos) {const float EPSILON=0.01;return abs(gridPos.x)<EPSILON && abs(gridPos.z)<EPSILON;}
26
+ bool isOnZAxis(vec3 gridPos) {const float EPSILON=0.01;return abs(gridPos.x)<EPSILON && abs(gridPos.y)<EPSILON;}
27
+ float getDynamicVisibility(float position) {float majorGridFrequency=gridControl.y;if (floor(position+0.5)==floor(position/majorGridFrequency+0.5)*majorGridFrequency)
28
+ { return 0.6; }
29
+ return gridControl.z;}
30
+ float getAnisotropicAttenuation(float differentialLength) {const float maxNumberOfLines=10.0;return clamp(1.0/(differentialLength+1.0)-1.0/maxNumberOfLines,0.0,1.0);}
31
+ float isPointOnLine(float position,float differentialLength) {float fractionPartOfPosition=position-floor(position+0.5);fractionPartOfPosition/=differentialLength;
32
+ #ifdef ANTIALIAS
33
+ fractionPartOfPosition=clamp(fractionPartOfPosition,-1.,1.);float result=0.5+0.5*cos(fractionPartOfPosition*PI);return result;
34
+ #else
35
+ return abs(fractionPartOfPosition)<SQRT2/4. ? 1. : 0.;
36
+ #endif
37
+ }
38
+ float contributionOnAxis(float position) {float differentialLength=length(vec2(dFdx(position),dFdy(position)));differentialLength*=SQRT2;float result=isPointOnLine(position,differentialLength);float dynamicVisibility=getDynamicVisibility(position);result*=dynamicVisibility;float anisotropicAttenuation=getAnisotropicAttenuation(differentialLength);result*=anisotropicAttenuation;return result;}
39
+ float normalImpactOnAxis(float x) {float normalImpact=clamp(1.0-3.0*abs(x*x*x),0.0,1.0);return normalImpact;}
40
+ #define CUSTOM_FRAGMENT_DEFINITIONS
41
+ void main(void) {
42
+ #define CUSTOM_FRAGMENT_MAIN_BEGIN
43
+ #include<clipPlaneFragment>
44
+ float 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);
45
+ #ifdef MAX_LINE
46
+ float grid=clamp(max(max(x,y),z),0.,1.);
47
+ #else
48
+ float grid=clamp(x+y+z,0.,1.);
49
+ #endif
50
+ vec4 axisColor=lineColor;vec4 color=mix(mainColor,axisColor,grid);if (isOnXAxis(gridPos)||isOnZAxis(gridPos)){color.a=0.0;}
51
+ #ifdef FOG
52
+ #include<fogFragment>
53
+ #endif
54
+ float opacity=1.0;
55
+ #ifdef TRANSPARENT
56
+ opacity=clamp(grid,0.08,gridControl.w*grid);
57
+ #endif
58
+ #ifdef OPACITY
59
+ opacity*=texture2D(opacitySampler,vOpacityUV).a;
60
+ #endif
61
+ gl_FragColor=vec4(color.rgb,opacity*visibility*color.a);
62
+ #ifdef TRANSPARENT
63
+ #ifdef PREMULTIPLYALPHA
64
+ gl_FragColor.rgb*=opacity;
65
+ #endif
66
+ #else
67
+ #endif
68
+ #include<logDepthFragment>
69
+ #include<imageProcessingCompatibility>
70
+ #define CUSTOM_FRAGMENT_MAIN_END
71
+ }`;
72
+ // Sideeffect
73
+ if (!ShaderStore.ShadersStore[name]) {
74
+ ShaderStore.ShadersStore[name] = shader;
75
+ }
76
+ /** @internal */
77
+ export const axesGridPixelShader = { name, shader };
78
+ //# sourceMappingURL=axesGrid.fragment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"axesGrid.fragment.js","sourceRoot":"","sources":["../../../../dev/materials/src/axesGrid/axesGrid.fragment.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,4CAAiC;AACvD,6EAAkE;AAClE,oEAAyD;AACzD,uEAA4D;AAC5D,kEAAuD;AACvD,4DAAiD;AACjD,iEAAsD;AACtD,6EAAkE;AAElE,MAAM,IAAI,GAAG,qBAAqB,CAAC;AACnC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4Db,CAAC;AACH,aAAa;AACb,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;IAClC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AAC5C,CAAC;AACD,gBAAgB;AAChB,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"core/Engines/shaderStore\";\nimport \"core/Shaders/ShadersInclude/clipPlaneFragmentDeclaration\";\nimport \"core/Shaders/ShadersInclude/logDepthDeclaration\";\nimport \"core/Shaders/ShadersInclude/fogFragmentDeclaration\";\nimport \"core/Shaders/ShadersInclude/clipPlaneFragment\";\nimport \"core/Shaders/ShadersInclude/fogFragment\";\nimport \"core/Shaders/ShadersInclude/logDepthFragment\";\nimport \"core/Shaders/ShadersInclude/imageProcessingCompatibility\";\n\nconst name = \"axesGridPixelShader\";\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 vec4 mainColor;uniform vec4 lineColor;uniform vec4 gridControl;uniform vec3 gridOffset;varying vec3 vPosition;varying vec3 vNormal;uniform vec4 hAxisColor;uniform vec4 vAxisColor;\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\nbool isOnXAxis(vec3 gridPos) {const float EPSILON=0.01;return abs(gridPos.y)<EPSILON && abs(gridPos.z)<EPSILON;}\nbool isOnYAxis(vec3 gridPos) {const float EPSILON=0.01;return abs(gridPos.x)<EPSILON && abs(gridPos.z)<EPSILON;}\nbool isOnZAxis(vec3 gridPos) {const float EPSILON=0.01;return abs(gridPos.x)<EPSILON && abs(gridPos.y)<EPSILON;}\nfloat getDynamicVisibility(float position) {float majorGridFrequency=gridControl.y;if (floor(position+0.5)==floor(position/majorGridFrequency+0.5)*majorGridFrequency)\n{ return 0.6; }\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);fractionPartOfPosition/=differentialLength;\n#ifdef ANTIALIAS\nfractionPartOfPosition=clamp(fractionPartOfPosition,-1.,1.);float result=0.5+0.5*cos(fractionPartOfPosition*PI);return 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;float 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\nvec4 axisColor=lineColor;vec4 color=mix(mainColor,axisColor,grid);if (isOnXAxis(gridPos)||isOnZAxis(gridPos)){color.a=0.0;}\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*color.a);\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// Sideeffect\nif (!ShaderStore.ShadersStore[name]) {\n ShaderStore.ShadersStore[name] = shader;\n}\n/** @internal */\nexport const axesGridPixelShader = { name, shader };\n"]}
@@ -0,0 +1,15 @@
1
+ import "@onerjs/core/Shaders/ShadersInclude/instancesDeclaration.js";
2
+ import "@onerjs/core/Shaders/ShadersInclude/sceneVertexDeclaration.js";
3
+ import "@onerjs/core/Shaders/ShadersInclude/sceneUboDeclaration.js";
4
+ import "@onerjs/core/Shaders/ShadersInclude/logDepthDeclaration.js";
5
+ import "@onerjs/core/Shaders/ShadersInclude/fogVertexDeclaration.js";
6
+ import "@onerjs/core/Shaders/ShadersInclude/clipPlaneVertexDeclaration.js";
7
+ import "@onerjs/core/Shaders/ShadersInclude/instancesVertex.js";
8
+ import "@onerjs/core/Shaders/ShadersInclude/fogVertex.js";
9
+ import "@onerjs/core/Shaders/ShadersInclude/clipPlaneVertex.js";
10
+ import "@onerjs/core/Shaders/ShadersInclude/logDepthVertex.js";
11
+ /** @internal */
12
+ export declare const axesGridVertexShader: {
13
+ name: string;
14
+ shader: string;
15
+ };
@@ -0,0 +1,60 @@
1
+ // Do not edit.
2
+ import { ShaderStore } from "@onerjs/core/Engines/shaderStore.js";
3
+ import "@onerjs/core/Shaders/ShadersInclude/instancesDeclaration.js";
4
+ import "@onerjs/core/Shaders/ShadersInclude/sceneVertexDeclaration.js";
5
+ import "@onerjs/core/Shaders/ShadersInclude/sceneUboDeclaration.js";
6
+ import "@onerjs/core/Shaders/ShadersInclude/logDepthDeclaration.js";
7
+ import "@onerjs/core/Shaders/ShadersInclude/fogVertexDeclaration.js";
8
+ import "@onerjs/core/Shaders/ShadersInclude/clipPlaneVertexDeclaration.js";
9
+ import "@onerjs/core/Shaders/ShadersInclude/instancesVertex.js";
10
+ import "@onerjs/core/Shaders/ShadersInclude/fogVertex.js";
11
+ import "@onerjs/core/Shaders/ShadersInclude/clipPlaneVertex.js";
12
+ import "@onerjs/core/Shaders/ShadersInclude/logDepthVertex.js";
13
+ const name = "axesGridVertexShader";
14
+ const shader = `precision highp float;attribute vec3 position;attribute vec3 normal;
15
+ #ifdef UV1
16
+ attribute vec2 uv;
17
+ #endif
18
+ #ifdef UV2
19
+ attribute vec2 uv2;
20
+ #endif
21
+ #include<instancesDeclaration>
22
+ #include<__decl__sceneVertex>
23
+ varying vec3 vPosition;varying vec3 vNormal;
24
+ #include<logDepthDeclaration>
25
+ #include<fogVertexDeclaration>
26
+ #ifdef OPACITY
27
+ varying vec2 vOpacityUV;uniform mat4 opacityMatrix;uniform vec2 vOpacityInfos;
28
+ #endif
29
+ #include<clipPlaneVertexDeclaration>
30
+ #define CUSTOM_VERTEX_DEFINITIONS
31
+ void main(void) {
32
+ #define CUSTOM_VERTEX_MAIN_BEGIN
33
+ #include<instancesVertex>
34
+ vec4 worldPos=finalWorld*vec4(position,1.0);
35
+ #include<fogVertex>
36
+ vec4 cameraSpacePosition=view*worldPos;gl_Position=projection*cameraSpacePosition;
37
+ #ifdef OPACITY
38
+ #ifndef UV1
39
+ vec2 uv=vec2(0.,0.);
40
+ #endif
41
+ #ifndef UV2
42
+ vec2 uv2=vec2(0.,0.);
43
+ #endif
44
+ if (vOpacityInfos.x==0.)
45
+ {vOpacityUV=vec2(opacityMatrix*vec4(uv,1.0,0.0));}
46
+ else
47
+ {vOpacityUV=vec2(opacityMatrix*vec4(uv2,1.0,0.0));}
48
+ #endif
49
+ #include<clipPlaneVertex>
50
+ #include<logDepthVertex>
51
+ vPosition=position;vNormal=normal;
52
+ #define CUSTOM_VERTEX_MAIN_END
53
+ }`;
54
+ // Sideeffect
55
+ if (!ShaderStore.ShadersStore[name]) {
56
+ ShaderStore.ShadersStore[name] = shader;
57
+ }
58
+ /** @internal */
59
+ export const axesGridVertexShader = { name, shader };
60
+ //# sourceMappingURL=axesGrid.vertex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"axesGrid.vertex.js","sourceRoot":"","sources":["../../../../dev/materials/src/axesGrid/axesGrid.vertex.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,4CAAiC;AACvD,qEAA0D;AAC1D,uEAA4D;AAC5D,oEAAyD;AACzD,oEAAyD;AACzD,qEAA0D;AAC1D,2EAAgE;AAChE,gEAAqD;AACrD,0DAA+C;AAC/C,gEAAqD;AACrD,+DAAoD;AAEpD,MAAM,IAAI,GAAG,sBAAsB,CAAC;AACpC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuCb,CAAC;AACH,aAAa;AACb,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;IAClC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AAC5C,CAAC;AACD,gBAAgB;AAChB,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"core/Engines/shaderStore\";\nimport \"core/Shaders/ShadersInclude/instancesDeclaration\";\nimport \"core/Shaders/ShadersInclude/sceneVertexDeclaration\";\nimport \"core/Shaders/ShadersInclude/sceneUboDeclaration\";\nimport \"core/Shaders/ShadersInclude/logDepthDeclaration\";\nimport \"core/Shaders/ShadersInclude/fogVertexDeclaration\";\nimport \"core/Shaders/ShadersInclude/clipPlaneVertexDeclaration\";\nimport \"core/Shaders/ShadersInclude/instancesVertex\";\nimport \"core/Shaders/ShadersInclude/fogVertex\";\nimport \"core/Shaders/ShadersInclude/clipPlaneVertex\";\nimport \"core/Shaders/ShadersInclude/logDepthVertex\";\n\nconst name = \"axesGridVertexShader\";\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}\n/** @internal */\nexport const axesGridVertexShader = { name, shader };\n"]}
@@ -0,0 +1,38 @@
1
+ import type { Matrix } from "@onerjs/core/Maths/math.vector.js";
2
+ import { Vector3 } from "@onerjs/core/Maths/math.vector.js";
3
+ import { Color4 } from "@onerjs/core/Maths/math.color.js";
4
+ import type { BaseTexture } from "@onerjs/core/Materials/Textures/baseTexture.js";
5
+ import { PushMaterial } from "@onerjs/core/Materials/pushMaterial.js";
6
+ import type { AbstractMesh } from "@onerjs/core/Meshes/abstractMesh.js";
7
+ import type { SubMesh } from "@onerjs/core/Meshes/subMesh.js";
8
+ import type { Mesh } from "@onerjs/core/Meshes/mesh.js";
9
+ import type { Scene } from "@onerjs/core/scene.js";
10
+ import "./axesGrid.fragment.js";
11
+ import "./axesGrid.vertex.js";
12
+ export declare class AxesGridMaterial extends PushMaterial {
13
+ mainColor: Color4;
14
+ lineColor: Color4;
15
+ hAxisColor: Color4;
16
+ vAxisColor: Color4;
17
+ gridRatio: number;
18
+ gridOffset: Vector3;
19
+ majorUnitFrequency: number;
20
+ minorUnitVisibility: number;
21
+ opacity: number;
22
+ antialias: boolean;
23
+ preMultiplyAlpha: boolean;
24
+ useMaxLine: boolean;
25
+ private _opacityTexture;
26
+ opacityTexture: BaseTexture;
27
+ private _gridControl;
28
+ constructor(name: string, scene?: Scene);
29
+ needAlphaBlending(): boolean;
30
+ needAlphaBlendingForMesh(mesh: AbstractMesh): boolean;
31
+ isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean;
32
+ bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void;
33
+ dispose(forceDisposeEffect?: boolean): void;
34
+ clone(name: string): AxesGridMaterial;
35
+ serialize(): any;
36
+ getClassName(): string;
37
+ static Parse(source: any, scene: Scene, rootUrl: string): AxesGridMaterial;
38
+ }
@@ -0,0 +1,222 @@
1
+ /* eslint-disable @typescript-eslint/naming-convention */
2
+ import { SerializationHelper } from "@onerjs/core/Misc/decorators.serialization.js";
3
+ import { Vector4, Vector3 } from "@onerjs/core/Maths/math.vector.js";
4
+ import { Color3, Color4 } from "@onerjs/core/Maths/math.color.js";
5
+ import { MaterialDefines } from "@onerjs/core/Materials/materialDefines.js";
6
+ import { PushMaterial } from "@onerjs/core/Materials/pushMaterial.js";
7
+ import { MaterialFlags } from "@onerjs/core/Materials/materialFlags.js";
8
+ import { VertexBuffer } from "@onerjs/core/Buffers/buffer.js";
9
+ import { RegisterClass } from "@onerjs/core/Misc/typeStore.js";
10
+ import "./axesGrid.fragment.js";
11
+ import "./axesGrid.vertex.js";
12
+ import { BindFogParameters, BindLogDepth, PrepareAttributesForInstances, PrepareDefinesForAttributes, PrepareDefinesForFrameBoundValues, PrepareDefinesForMisc, } from "@onerjs/core/Materials/materialHelper.functions.js";
13
+ import { AddClipPlaneUniforms, BindClipPlane } from "@onerjs/core/Materials/clipPlaneMaterialHelper.js";
14
+ class GridMaterialDefines extends MaterialDefines {
15
+ constructor() {
16
+ super();
17
+ this.CLIPPLANE = false;
18
+ this.CLIPPLANE2 = false;
19
+ this.CLIPPLANE3 = false;
20
+ this.CLIPPLANE4 = false;
21
+ this.CLIPPLANE5 = false;
22
+ this.CLIPPLANE6 = false;
23
+ this.OPACITY = false;
24
+ this.ANTIALIAS = false;
25
+ this.TRANSPARENT = false;
26
+ this.FOG = false;
27
+ this.PREMULTIPLYALPHA = false;
28
+ this.MAX_LINE = false;
29
+ this.UV1 = false;
30
+ this.UV2 = false;
31
+ this.INSTANCES = false;
32
+ this.THIN_INSTANCES = false;
33
+ this.IMAGEPROCESSINGPOSTPROCESS = false;
34
+ this.SKIPFINALCOLORCLAMP = false;
35
+ this.LOGARITHMICDEPTH = false;
36
+ this.rebuild();
37
+ }
38
+ }
39
+ export class AxesGridMaterial extends PushMaterial {
40
+ constructor(name, scene) {
41
+ super(name, scene);
42
+ this.mainColor = Color4.FromColor3(Color3.Black(), 1);
43
+ this.lineColor = Color4.FromColor3(Color3.Teal(), 1);
44
+ this.hAxisColor = Color4.FromHexString("#f5222d");
45
+ this.vAxisColor = Color4.FromHexString("#1677ff");
46
+ this.gridRatio = 1.0;
47
+ this.gridOffset = Vector3.Zero();
48
+ this.majorUnitFrequency = 10;
49
+ this.minorUnitVisibility = 0.33;
50
+ this.opacity = 1.0;
51
+ this.antialias = true;
52
+ this.preMultiplyAlpha = false;
53
+ this.useMaxLine = false;
54
+ this._gridControl = new Vector4(this.gridRatio, this.majorUnitFrequency, this.minorUnitVisibility, this.opacity);
55
+ }
56
+ needAlphaBlending() {
57
+ return this.opacity < 1.0 || (this._opacityTexture && this._opacityTexture.isReady());
58
+ }
59
+ needAlphaBlendingForMesh(mesh) {
60
+ return mesh.visibility < 1.0 || this.needAlphaBlending();
61
+ }
62
+ isReadyForSubMesh(mesh, subMesh, useInstances) {
63
+ const drawWrapper = subMesh._drawWrapper;
64
+ if (this.isFrozen) {
65
+ if (drawWrapper.effect && drawWrapper._wasPreviouslyReady && drawWrapper._wasPreviouslyUsingInstances === useInstances) {
66
+ return true;
67
+ }
68
+ }
69
+ if (!subMesh.materialDefines) {
70
+ subMesh.materialDefines = new GridMaterialDefines();
71
+ }
72
+ const defines = subMesh.materialDefines;
73
+ const scene = this.getScene();
74
+ if (this._isReadyForSubMesh(subMesh)) {
75
+ return true;
76
+ }
77
+ if (defines.TRANSPARENT !== this.opacity < 1.0) {
78
+ defines.TRANSPARENT = !defines.TRANSPARENT;
79
+ defines.markAsUnprocessed();
80
+ }
81
+ if (defines.PREMULTIPLYALPHA != this.preMultiplyAlpha) {
82
+ defines.PREMULTIPLYALPHA = !defines.PREMULTIPLYALPHA;
83
+ defines.markAsUnprocessed();
84
+ }
85
+ if (defines.MAX_LINE !== this.useMaxLine) {
86
+ defines.MAX_LINE = !defines.MAX_LINE;
87
+ defines.markAsUnprocessed();
88
+ }
89
+ if (defines.ANTIALIAS !== this.antialias) {
90
+ defines.ANTIALIAS = !defines.ANTIALIAS;
91
+ defines.markAsUnprocessed();
92
+ }
93
+ // Textures
94
+ if (defines._areTexturesDirty) {
95
+ defines._needUVs = false;
96
+ if (scene.texturesEnabled) {
97
+ if (this._opacityTexture && MaterialFlags.OpacityTextureEnabled) {
98
+ if (!this._opacityTexture.isReady()) {
99
+ return false;
100
+ }
101
+ else {
102
+ defines._needUVs = true;
103
+ defines.OPACITY = true;
104
+ }
105
+ }
106
+ }
107
+ }
108
+ PrepareDefinesForMisc(mesh, scene, this._useLogarithmicDepth, false, this.fogEnabled, false, defines, undefined, undefined, undefined, this._isVertexOutputInvariant);
109
+ PrepareDefinesForFrameBoundValues(scene, scene.getEngine(), this, defines, !!useInstances);
110
+ if (defines.isDirty) {
111
+ defines.markAsProcessed();
112
+ scene.resetCachedMaterial();
113
+ PrepareDefinesForAttributes(mesh, defines, false, false);
114
+ const attribs = [VertexBuffer.PositionKind, VertexBuffer.NormalKind];
115
+ if (defines.UV1) {
116
+ attribs.push(VertexBuffer.UVKind);
117
+ }
118
+ if (defines.UV2) {
119
+ attribs.push(VertexBuffer.UV2Kind);
120
+ }
121
+ defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;
122
+ PrepareAttributesForInstances(attribs, defines);
123
+ const uniforms = [
124
+ "projection",
125
+ "mainColor",
126
+ "lineColor",
127
+ "gridControl",
128
+ "gridOffset",
129
+ "vFogInfos",
130
+ "vFogColor",
131
+ "world",
132
+ "view",
133
+ "opacityMatrix",
134
+ "vOpacityInfos",
135
+ "visibility",
136
+ "logarithmicDepthConstant",
137
+ "hAxisColor",
138
+ "vAxisColor",
139
+ ];
140
+ // Defines
141
+ const join = defines.toString();
142
+ AddClipPlaneUniforms(uniforms);
143
+ subMesh.setEffect(scene.getEngine().createEffect("axesGird", {
144
+ attributes: attribs,
145
+ uniformsNames: uniforms,
146
+ uniformBuffersNames: ["Scene"],
147
+ samplers: ["opacitySampler"],
148
+ defines: join,
149
+ fallbacks: null,
150
+ onCompiled: this.onCompiled,
151
+ onError: this.onError,
152
+ }, scene.getEngine()), defines, this._materialContext);
153
+ }
154
+ if (!subMesh.effect || !subMesh.effect.isReady()) {
155
+ return false;
156
+ }
157
+ defines._renderId = scene.getRenderId();
158
+ drawWrapper._wasPreviouslyReady = true;
159
+ drawWrapper._wasPreviouslyUsingInstances = !!useInstances;
160
+ return true;
161
+ }
162
+ bindForSubMesh(world, mesh, subMesh) {
163
+ const scene = this.getScene();
164
+ const defines = subMesh.materialDefines;
165
+ if (!defines) {
166
+ return;
167
+ }
168
+ const effect = subMesh.effect;
169
+ if (!effect) {
170
+ return;
171
+ }
172
+ this._activeEffect = effect;
173
+ this._activeEffect.setFloat("visibility", mesh.visibility);
174
+ if (!defines.INSTANCES || defines.THIN_INSTANCE) {
175
+ this.bindOnlyWorldMatrix(world);
176
+ }
177
+ this.bindView(effect);
178
+ this.bindViewProjection(effect);
179
+ if (this._mustRebind(scene, effect, subMesh)) {
180
+ this._activeEffect.setDirectColor4("mainColor", this.mainColor);
181
+ this._activeEffect.setDirectColor4("lineColor", this.lineColor);
182
+ this._activeEffect.setDirectColor4("hAxisColor", this.hAxisColor);
183
+ this._activeEffect.setDirectColor4("vAxisColor", this.vAxisColor);
184
+ this._activeEffect.setVector3("gridOffset", this.gridOffset);
185
+ this._gridControl.x = this.gridRatio;
186
+ this._gridControl.y = Math.round(this.majorUnitFrequency);
187
+ this._gridControl.z = this.minorUnitVisibility;
188
+ this._gridControl.w = this.opacity;
189
+ this._activeEffect.setVector4("gridControl", this._gridControl);
190
+ if (this._opacityTexture && MaterialFlags.OpacityTextureEnabled) {
191
+ this._activeEffect.setTexture("opacitySampler", this._opacityTexture);
192
+ this._activeEffect.setFloat2("vOpacityInfos", this._opacityTexture.coordinatesIndex, this._opacityTexture.level);
193
+ this._activeEffect.setMatrix("opacityMatrix", this._opacityTexture.getTextureMatrix());
194
+ }
195
+ BindClipPlane(effect, this, scene);
196
+ if (this._useLogarithmicDepth) {
197
+ BindLogDepth(defines, effect, scene);
198
+ }
199
+ }
200
+ BindFogParameters(scene, mesh, this._activeEffect);
201
+ this._afterBind(mesh, this._activeEffect, subMesh);
202
+ }
203
+ dispose(forceDisposeEffect) {
204
+ super.dispose(forceDisposeEffect);
205
+ }
206
+ clone(name) {
207
+ return SerializationHelper.Clone(() => new AxesGridMaterial(name, this.getScene()), this);
208
+ }
209
+ serialize() {
210
+ const serializationObject = super.serialize();
211
+ serializationObject.customType = "BABYLON.AxesGridMaterial";
212
+ return serializationObject;
213
+ }
214
+ getClassName() {
215
+ return "AxesGridMaterial";
216
+ }
217
+ static Parse(source, scene, rootUrl) {
218
+ return SerializationHelper.Parse(() => new AxesGridMaterial(source.name, scene), source, scene, rootUrl);
219
+ }
220
+ }
221
+ RegisterClass("BABYLON.AxesGridMaterial", AxesGridMaterial);
222
+ //# sourceMappingURL=axesGridMaterial.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"axesGridMaterial.js","sourceRoot":"","sources":["../../../../dev/materials/src/axesGrid/axesGridMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { SerializationHelper } from \"core/Misc/decorators.serialization\";\r\nimport type { Matrix } from \"core/Maths/math.vector\";\r\nimport { Vector4, Vector3 } from \"core/Maths/math.vector\";\r\nimport { Color3, Color4 } 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\n\r\nimport \"./axesGrid.fragment\";\r\nimport \"./axesGrid.vertex\";\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\nexport class AxesGridMaterial extends PushMaterial {\r\n public mainColor = Color4.FromColor3(Color3.Black(), 1);\r\n\r\n public lineColor = Color4.FromColor3(Color3.Teal(), 1);\r\n\r\n public hAxisColor = Color4.FromHexString(\"#f5222d\");\r\n\r\n public vAxisColor = Color4.FromHexString(\"#1677ff\");\r\n\r\n public gridRatio = 1.0;\r\n\r\n public gridOffset = Vector3.Zero();\r\n\r\n public majorUnitFrequency = 10;\r\n\r\n public minorUnitVisibility = 0.33;\r\n\r\n public opacity = 1.0;\r\n\r\n public antialias = true;\r\n\r\n public preMultiplyAlpha = false;\r\n\r\n public useMaxLine = false;\r\n\r\n private _opacityTexture: BaseTexture;\r\n\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 constructor(name: string, scene?: Scene) {\r\n super(name, scene);\r\n }\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 PrepareDefinesForFrameBoundValues(scene, scene.getEngine(), this, defines, !!useInstances);\r\n\r\n if (defines.isDirty) {\r\n defines.markAsProcessed();\r\n scene.resetCachedMaterial();\r\n\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 \"hAxisColor\",\r\n \"vAxisColor\",\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 \"axesGird\",\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 },\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 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 if (this._mustRebind(scene, effect, subMesh)) {\r\n this._activeEffect.setDirectColor4(\"mainColor\", this.mainColor);\r\n this._activeEffect.setDirectColor4(\"lineColor\", this.lineColor);\r\n this._activeEffect.setDirectColor4(\"hAxisColor\", this.hAxisColor);\r\n this._activeEffect.setDirectColor4(\"vAxisColor\", this.vAxisColor);\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 BindClipPlane(effect, this, scene);\r\n if (this._useLogarithmicDepth) {\r\n BindLogDepth(defines, effect, scene);\r\n }\r\n }\r\n BindFogParameters(scene, mesh, this._activeEffect);\r\n\r\n this._afterBind(mesh, this._activeEffect, subMesh);\r\n }\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): AxesGridMaterial {\r\n return SerializationHelper.Clone(() => new AxesGridMaterial(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.AxesGridMaterial\";\r\n return serializationObject;\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"AxesGridMaterial\";\r\n }\r\n\r\n public static override Parse(source: any, scene: Scene, rootUrl: string): AxesGridMaterial {\r\n return SerializationHelper.Parse(() => new AxesGridMaterial(source.name, scene), source, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.AxesGridMaterial\", AxesGridMaterial);\r\n"]}
@@ -0,0 +1 @@
1
+ export * from "./axesGridMaterial.js";
@@ -0,0 +1,2 @@
1
+ export * from "./axesGridMaterial.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../dev/materials/src/axesGrid/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC","sourcesContent":["export * from \"./axesGridMaterial\";\n"]}
package/index.d.ts CHANGED
@@ -13,3 +13,4 @@ export * from "./sky/index.js";
13
13
  export * from "./terrain/index.js";
14
14
  export * from "./triPlanar/index.js";
15
15
  export * from "./water/index.js";
16
+ export * from "./axesGrid/index.js";
package/index.js CHANGED
@@ -14,4 +14,5 @@ export * from "./sky/index.js";
14
14
  export * from "./terrain/index.js";
15
15
  export * from "./triPlanar/index.js";
16
16
  export * from "./water/index.js";
17
+ export * from "./axesGrid/index.js";
17
18
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../dev/materials/src/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nexport * from \"./cell/index\";\r\nexport * from \"./custom/index\";\r\nexport * from \"./fire/index\";\r\nexport * from \"./fur/index\";\r\nexport * from \"./gradient/index\";\r\nexport * from \"./grid/index\";\r\nexport * from \"./lava/index\";\r\nexport * from \"./mix/index\";\r\nexport * from \"./normal/index\";\r\nexport * from \"./shadowOnly/index\";\r\nexport * from \"./simple/index\";\r\nexport * from \"./sky/index\";\r\nexport * from \"./terrain/index\";\r\nexport * from \"./triPlanar/index\";\r\nexport * from \"./water/index\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../dev/materials/src/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nexport * from \"./cell/index\";\r\nexport * from \"./custom/index\";\r\nexport * from \"./fire/index\";\r\nexport * from \"./fur/index\";\r\nexport * from \"./gradient/index\";\r\nexport * from \"./grid/index\";\r\nexport * from \"./lava/index\";\r\nexport * from \"./mix/index\";\r\nexport * from \"./normal/index\";\r\nexport * from \"./shadowOnly/index\";\r\nexport * from \"./simple/index\";\r\nexport * from \"./sky/index\";\r\nexport * from \"./terrain/index\";\r\nexport * from \"./triPlanar/index\";\r\nexport * from \"./water/index\";\r\nexport * from \"./axesGrid/index\";\r\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onerjs/materials",
3
- "version": "8.41.2",
3
+ "version": "8.41.3",
4
4
  "main": "index.js",
5
5
  "module": "index.js",
6
6
  "types": "index.d.ts",
@@ -18,6 +18,7 @@
18
18
  "postcompile": "build-tools -c add-js-to-es6"
19
19
  },
20
20
  "devDependencies": {
21
+ "@onerjs/core": "^8.41.3",
21
22
  "@dev/build-tools": "^1.0.0",
22
23
  "@lts/materials": "^1.0.0"
23
24
  },