@onerjs/materials 8.23.1
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.
- package/cell/cell.fragment.d.ts +19 -0
- package/cell/cell.fragment.js +100 -0
- package/cell/cell.fragment.js.map +1 -0
- package/cell/cell.vertex.d.ts +21 -0
- package/cell/cell.vertex.js +96 -0
- package/cell/cell.vertex.js.map +1 -0
- package/cell/cellMaterial.d.ts +37 -0
- package/cell/cellMaterial.js +312 -0
- package/cell/cellMaterial.js.map +1 -0
- package/cell/index.d.ts +1 -0
- package/cell/index.js +2 -0
- package/cell/index.js.map +1 -0
- package/custom/customMaterial.d.ts +280 -0
- package/custom/customMaterial.js +355 -0
- package/custom/customMaterial.js.map +1 -0
- package/custom/index.d.ts +2 -0
- package/custom/index.js +3 -0
- package/custom/index.js.map +1 -0
- package/custom/pbrCustomMaterial.d.ts +299 -0
- package/custom/pbrCustomMaterial.js +397 -0
- package/custom/pbrCustomMaterial.js.map +1 -0
- package/fire/fire.fragment.d.ts +13 -0
- package/fire/fire.fragment.js +65 -0
- package/fire/fire.fragment.js.map +1 -0
- package/fire/fire.vertex.d.ts +18 -0
- package/fire/fire.vertex.js +80 -0
- package/fire/fire.vertex.js.map +1 -0
- package/fire/fireMaterial.d.ts +38 -0
- package/fire/fireMaterial.js +342 -0
- package/fire/fireMaterial.js.map +1 -0
- package/fire/index.d.ts +1 -0
- package/fire/index.js +2 -0
- package/fire/index.js.map +1 -0
- package/fur/fur.fragment.d.ts +19 -0
- package/fur/fur.fragment.js +94 -0
- package/fur/fur.fragment.js.map +1 -0
- package/fur/fur.vertex.d.ts +21 -0
- package/fur/fur.vertex.js +126 -0
- package/fur/fur.vertex.js.map +1 -0
- package/fur/furMaterial.d.ts +57 -0
- package/fur/furMaterial.js +505 -0
- package/fur/furMaterial.js.map +1 -0
- package/fur/index.d.ts +1 -0
- package/fur/index.js +2 -0
- package/fur/index.js.map +1 -0
- package/gradient/gradient.fragment.d.ts +19 -0
- package/gradient/gradient.fragment.js +80 -0
- package/gradient/gradient.fragment.js.map +1 -0
- package/gradient/gradient.vertex.d.ts +21 -0
- package/gradient/gradient.vertex.js +87 -0
- package/gradient/gradient.vertex.js.map +1 -0
- package/gradient/gradientMaterial.d.ts +37 -0
- package/gradient/gradientMaterial.js +283 -0
- package/gradient/gradientMaterial.js.map +1 -0
- package/gradient/index.d.ts +1 -0
- package/gradient/index.js +2 -0
- package/gradient/index.js.map +1 -0
- package/grid/grid.fragment.d.ts +12 -0
- package/grid/grid.fragment.js +79 -0
- package/grid/grid.fragment.js.map +1 -0
- package/grid/grid.vertex.d.ts +15 -0
- package/grid/grid.vertex.js +60 -0
- package/grid/grid.vertex.js.map +1 -0
- package/grid/gridMaterial.d.ts +85 -0
- package/grid/gridMaterial.js +308 -0
- package/grid/gridMaterial.js.map +1 -0
- package/grid/index.d.ts +1 -0
- package/grid/index.js +2 -0
- package/grid/index.js.map +1 -0
- package/index.d.ts +15 -0
- package/index.js +17 -0
- package/index.js.map +1 -0
- package/lava/index.d.ts +1 -0
- package/lava/index.js +2 -0
- package/lava/index.js.map +1 -0
- package/lava/lava.fragment.d.ts +19 -0
- package/lava/lava.fragment.js +89 -0
- package/lava/lava.fragment.js.map +1 -0
- package/lava/lava.vertex.d.ts +21 -0
- package/lava/lava.vertex.js +113 -0
- package/lava/lava.vertex.js.map +1 -0
- package/lava/lavaMaterial.d.ts +45 -0
- package/lava/lavaMaterial.js +402 -0
- package/lava/lavaMaterial.js.map +1 -0
- package/legacy/legacy-cell.d.ts +1 -0
- package/legacy/legacy-cell.js +14 -0
- package/legacy/legacy-cell.js.map +1 -0
- package/legacy/legacy-custom.d.ts +1 -0
- package/legacy/legacy-custom.js +14 -0
- package/legacy/legacy-custom.js.map +1 -0
- package/legacy/legacy-fire.d.ts +1 -0
- package/legacy/legacy-fire.js +14 -0
- package/legacy/legacy-fire.js.map +1 -0
- package/legacy/legacy-fur.d.ts +1 -0
- package/legacy/legacy-fur.js +14 -0
- package/legacy/legacy-fur.js.map +1 -0
- package/legacy/legacy-gradient.d.ts +1 -0
- package/legacy/legacy-gradient.js +14 -0
- package/legacy/legacy-gradient.js.map +1 -0
- package/legacy/legacy-grid.d.ts +1 -0
- package/legacy/legacy-grid.js +14 -0
- package/legacy/legacy-grid.js.map +1 -0
- package/legacy/legacy-lava.d.ts +1 -0
- package/legacy/legacy-lava.js +14 -0
- package/legacy/legacy-lava.js.map +1 -0
- package/legacy/legacy-mix.d.ts +1 -0
- package/legacy/legacy-mix.js +14 -0
- package/legacy/legacy-mix.js.map +1 -0
- package/legacy/legacy-normal.d.ts +1 -0
- package/legacy/legacy-normal.js +14 -0
- package/legacy/legacy-normal.js.map +1 -0
- package/legacy/legacy-shadowOnly.d.ts +1 -0
- package/legacy/legacy-shadowOnly.js +14 -0
- package/legacy/legacy-shadowOnly.js.map +1 -0
- package/legacy/legacy-simple.d.ts +1 -0
- package/legacy/legacy-simple.js +14 -0
- package/legacy/legacy-simple.js.map +1 -0
- package/legacy/legacy-sky.d.ts +1 -0
- package/legacy/legacy-sky.js +14 -0
- package/legacy/legacy-sky.js.map +1 -0
- package/legacy/legacy-terrain.d.ts +1 -0
- package/legacy/legacy-terrain.js +14 -0
- package/legacy/legacy-terrain.js.map +1 -0
- package/legacy/legacy-triPlanar.d.ts +1 -0
- package/legacy/legacy-triPlanar.js +14 -0
- package/legacy/legacy-triPlanar.js.map +1 -0
- package/legacy/legacy-water.d.ts +1 -0
- package/legacy/legacy-water.js +14 -0
- package/legacy/legacy-water.js.map +1 -0
- package/legacy/legacy.d.ts +1 -0
- package/legacy/legacy.js +17 -0
- package/legacy/legacy.js.map +1 -0
- package/license.md +71 -0
- package/mix/index.d.ts +1 -0
- package/mix/index.js +2 -0
- package/mix/index.js.map +1 -0
- package/mix/mix.fragment.d.ts +19 -0
- package/mix/mix.fragment.js +106 -0
- package/mix/mix.fragment.js.map +1 -0
- package/mix/mix.vertex.d.ts +21 -0
- package/mix/mix.vertex.js +96 -0
- package/mix/mix.vertex.js.map +1 -0
- package/mix/mixMaterial.d.ts +65 -0
- package/mix/mixMaterial.js +508 -0
- package/mix/mixMaterial.js.map +1 -0
- package/normal/index.d.ts +1 -0
- package/normal/index.js +2 -0
- package/normal/index.js.map +1 -0
- package/normal/normal.fragment.d.ts +19 -0
- package/normal/normal.fragment.js +85 -0
- package/normal/normal.fragment.js.map +1 -0
- package/normal/normal.vertex.d.ts +20 -0
- package/normal/normal.vertex.js +88 -0
- package/normal/normal.vertex.js.map +1 -0
- package/normal/normalMaterial.d.ts +36 -0
- package/normal/normalMaterial.js +345 -0
- package/normal/normalMaterial.js.map +1 -0
- package/package.json +47 -0
- package/readme.md +30 -0
- package/shadowOnly/index.d.ts +1 -0
- package/shadowOnly/index.js +2 -0
- package/shadowOnly/index.js.map +1 -0
- package/shadowOnly/shadowOnly.fragment.d.ts +20 -0
- package/shadowOnly/shadowOnly.fragment.js +60 -0
- package/shadowOnly/shadowOnly.fragment.js.map +1 -0
- package/shadowOnly/shadowOnly.vertex.d.ts +22 -0
- package/shadowOnly/shadowOnly.vertex.js +69 -0
- package/shadowOnly/shadowOnly.vertex.js.map +1 -0
- package/shadowOnly/shadowOnlyMaterial.d.ts +30 -0
- package/shadowOnly/shadowOnlyMaterial.js +243 -0
- package/shadowOnly/shadowOnlyMaterial.js.map +1 -0
- package/simple/index.d.ts +1 -0
- package/simple/index.js +2 -0
- package/simple/index.js.map +1 -0
- package/simple/simple.fragment.d.ts +19 -0
- package/simple/simple.fragment.js +81 -0
- package/simple/simple.fragment.js.map +1 -0
- package/simple/simple.vertex.d.ts +21 -0
- package/simple/simple.vertex.js +96 -0
- package/simple/simple.vertex.js.map +1 -0
- package/simple/simpleMaterial.d.ts +35 -0
- package/simple/simpleMaterial.js +303 -0
- package/simple/simpleMaterial.js.map +1 -0
- package/sky/index.d.ts +1 -0
- package/sky/index.js +2 -0
- package/sky/index.js.map +1 -0
- package/sky/sky.fragment.d.ts +13 -0
- package/sky/sky.fragment.js +81 -0
- package/sky/sky.fragment.js.map +1 -0
- package/sky/sky.vertex.d.ts +11 -0
- package/sky/sky.vertex.js +47 -0
- package/sky/sky.vertex.js.map +1 -0
- package/sky/skyMaterial.d.ts +151 -0
- package/sky/skyMaterial.js +367 -0
- package/sky/skyMaterial.js.map +1 -0
- package/terrain/index.d.ts +1 -0
- package/terrain/index.js +2 -0
- package/terrain/index.js.map +1 -0
- package/terrain/terrain.fragment.d.ts +19 -0
- package/terrain/terrain.fragment.js +110 -0
- package/terrain/terrain.fragment.js.map +1 -0
- package/terrain/terrain.vertex.d.ts +21 -0
- package/terrain/terrain.vertex.js +96 -0
- package/terrain/terrain.vertex.js.map +1 -0
- package/terrain/terrainMaterial.d.ts +50 -0
- package/terrain/terrainMaterial.js +445 -0
- package/terrain/terrainMaterial.js.map +1 -0
- package/triPlanar/index.d.ts +1 -0
- package/triPlanar/index.js +2 -0
- package/triPlanar/index.js.map +1 -0
- package/triPlanar/triPlanarMaterial.d.ts +49 -0
- package/triPlanar/triPlanarMaterial.js +421 -0
- package/triPlanar/triPlanarMaterial.js.map +1 -0
- package/triPlanar/triplanar.fragment.d.ts +19 -0
- package/triPlanar/triplanar.fragment.js +126 -0
- package/triPlanar/triplanar.fragment.js.map +1 -0
- package/triPlanar/triplanar.vertex.d.ts +22 -0
- package/triPlanar/triplanar.vertex.js +101 -0
- package/triPlanar/triplanar.vertex.js.map +1 -0
- package/water/index.d.ts +1 -0
- package/water/index.js +2 -0
- package/water/index.js.map +1 -0
- package/water/water.fragment.d.ts +19 -0
- package/water/water.fragment.js +160 -0
- package/water/water.fragment.js.map +1 -0
- package/water/water.vertex.d.ts +21 -0
- package/water/water.vertex.js +125 -0
- package/water/water.vertex.js.map +1 -0
- package/water/waterMaterial.d.ts +141 -0
- package/water/waterMaterial.js +729 -0
- package/water/waterMaterial.js.map +1 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
// Do not edit.
|
|
2
|
+
import { ShaderStore } from "@babylonjs/core/Engines/shaderStore.js";
|
|
3
|
+
import "@babylonjs/core/Shaders/ShadersInclude/clipPlaneFragmentDeclaration.js";
|
|
4
|
+
import "@babylonjs/core/Shaders/ShadersInclude/logDepthDeclaration.js";
|
|
5
|
+
import "@babylonjs/core/Shaders/ShadersInclude/fogFragmentDeclaration.js";
|
|
6
|
+
import "@babylonjs/core/Shaders/ShadersInclude/clipPlaneFragment.js";
|
|
7
|
+
import "@babylonjs/core/Shaders/ShadersInclude/fogFragment.js";
|
|
8
|
+
import "@babylonjs/core/Shaders/ShadersInclude/logDepthFragment.js";
|
|
9
|
+
import "@babylonjs/core/Shaders/ShadersInclude/imageProcessingCompatibility.js";
|
|
10
|
+
const name = "gridPixelShader";
|
|
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 vec3 mainColor;uniform vec3 lineColor;uniform vec4 gridControl;uniform vec3 gridOffset;varying vec3 vPosition;varying vec3 vNormal;
|
|
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
|
+
float getDynamicVisibility(float position) {float majorGridFrequency=gridControl.y;if (floor(position+0.5)==floor(position/majorGridFrequency+0.5)*majorGridFrequency)
|
|
25
|
+
{return 1.0;}
|
|
26
|
+
return gridControl.z;}
|
|
27
|
+
float getAnisotropicAttenuation(float differentialLength) {const float maxNumberOfLines=10.0;return clamp(1.0/(differentialLength+1.0)-1.0/maxNumberOfLines,0.0,1.0);}
|
|
28
|
+
float isPointOnLine(float position,float differentialLength) {float fractionPartOfPosition=position-floor(position+0.5);
|
|
29
|
+
fractionPartOfPosition/=differentialLength;
|
|
30
|
+
#ifdef ANTIALIAS
|
|
31
|
+
fractionPartOfPosition=clamp(fractionPartOfPosition,-1.,1.);float result=0.5+0.5*cos(fractionPartOfPosition*PI);
|
|
32
|
+
return result;
|
|
33
|
+
#else
|
|
34
|
+
return abs(fractionPartOfPosition)<SQRT2/4. ? 1. : 0.;
|
|
35
|
+
#endif
|
|
36
|
+
}
|
|
37
|
+
float contributionOnAxis(float position) {float differentialLength=length(vec2(dFdx(position),dFdy(position)));differentialLength*=SQRT2;
|
|
38
|
+
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
|
+
vec3 color=mix(mainColor,lineColor,grid);
|
|
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);
|
|
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
|
+
`;
|
|
73
|
+
// Sideeffect
|
|
74
|
+
if (!ShaderStore.ShadersStore[name]) {
|
|
75
|
+
ShaderStore.ShadersStore[name] = shader;
|
|
76
|
+
}
|
|
77
|
+
/** @internal */
|
|
78
|
+
export const gridPixelShader = { name, shader };
|
|
79
|
+
//# sourceMappingURL=grid.fragment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grid.fragment.js","sourceRoot":"","sources":["../../../../dev/materials/src/grid/grid.fragment.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,+CAAiC;AACvD,gFAAkE;AAClE,uEAAyD;AACzD,0EAA4D;AAC5D,qEAAuD;AACvD,+DAAiD;AACjD,oEAAsD;AACtD,gFAAkE;AAElE,MAAM,IAAI,GAAG,iBAAiB,CAAC;AAC/B,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6Dd,CAAC;AACF,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,eAAe,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 = \"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}\n/** @internal */\nexport const gridPixelShader = { name, shader };\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import "@babylonjs/core/Shaders/ShadersInclude/instancesDeclaration.js";
|
|
2
|
+
import "@babylonjs/core/Shaders/ShadersInclude/sceneVertexDeclaration.js";
|
|
3
|
+
import "@babylonjs/core/Shaders/ShadersInclude/sceneUboDeclaration.js";
|
|
4
|
+
import "@babylonjs/core/Shaders/ShadersInclude/logDepthDeclaration.js";
|
|
5
|
+
import "@babylonjs/core/Shaders/ShadersInclude/fogVertexDeclaration.js";
|
|
6
|
+
import "@babylonjs/core/Shaders/ShadersInclude/clipPlaneVertexDeclaration.js";
|
|
7
|
+
import "@babylonjs/core/Shaders/ShadersInclude/instancesVertex.js";
|
|
8
|
+
import "@babylonjs/core/Shaders/ShadersInclude/fogVertex.js";
|
|
9
|
+
import "@babylonjs/core/Shaders/ShadersInclude/clipPlaneVertex.js";
|
|
10
|
+
import "@babylonjs/core/Shaders/ShadersInclude/logDepthVertex.js";
|
|
11
|
+
/** @internal */
|
|
12
|
+
export declare const gridVertexShader: {
|
|
13
|
+
name: string;
|
|
14
|
+
shader: string;
|
|
15
|
+
};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// Do not edit.
|
|
2
|
+
import { ShaderStore } from "@babylonjs/core/Engines/shaderStore.js";
|
|
3
|
+
import "@babylonjs/core/Shaders/ShadersInclude/instancesDeclaration.js";
|
|
4
|
+
import "@babylonjs/core/Shaders/ShadersInclude/sceneVertexDeclaration.js";
|
|
5
|
+
import "@babylonjs/core/Shaders/ShadersInclude/sceneUboDeclaration.js";
|
|
6
|
+
import "@babylonjs/core/Shaders/ShadersInclude/logDepthDeclaration.js";
|
|
7
|
+
import "@babylonjs/core/Shaders/ShadersInclude/fogVertexDeclaration.js";
|
|
8
|
+
import "@babylonjs/core/Shaders/ShadersInclude/clipPlaneVertexDeclaration.js";
|
|
9
|
+
import "@babylonjs/core/Shaders/ShadersInclude/instancesVertex.js";
|
|
10
|
+
import "@babylonjs/core/Shaders/ShadersInclude/fogVertex.js";
|
|
11
|
+
import "@babylonjs/core/Shaders/ShadersInclude/clipPlaneVertex.js";
|
|
12
|
+
import "@babylonjs/core/Shaders/ShadersInclude/logDepthVertex.js";
|
|
13
|
+
const name = "gridVertexShader";
|
|
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 gridVertexShader = { name, shader };
|
|
60
|
+
//# sourceMappingURL=grid.vertex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grid.vertex.js","sourceRoot":"","sources":["../../../../dev/materials/src/grid/grid.vertex.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,+CAAiC;AACvD,wEAA0D;AAC1D,0EAA4D;AAC5D,uEAAyD;AACzD,uEAAyD;AACzD,wEAA0D;AAC1D,8EAAgE;AAChE,mEAAqD;AACrD,6DAA+C;AAC/C,mEAAqD;AACrD,kEAAoD;AAEpD,MAAM,IAAI,GAAG,kBAAkB,CAAC;AAChC,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,gBAAgB,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 = \"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}\n/** @internal */\nexport const gridVertexShader = { name, shader };\n"]}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import type { Matrix } from "@babylonjs/core/Maths/math.vector.js";
|
|
2
|
+
import { Vector3 } from "@babylonjs/core/Maths/math.vector.js";
|
|
3
|
+
import { Color3 } from "@babylonjs/core/Maths/math.color.js";
|
|
4
|
+
import type { BaseTexture } from "@babylonjs/core/Materials/Textures/baseTexture.js";
|
|
5
|
+
import { PushMaterial } from "@babylonjs/core/Materials/pushMaterial.js";
|
|
6
|
+
import type { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh.js";
|
|
7
|
+
import type { SubMesh } from "@babylonjs/core/Meshes/subMesh.js";
|
|
8
|
+
import type { Mesh } from "@babylonjs/core/Meshes/mesh.js";
|
|
9
|
+
import type { Scene } from "@babylonjs/core/scene.js";
|
|
10
|
+
import "./grid.fragment.js";
|
|
11
|
+
import "./grid.vertex.js";
|
|
12
|
+
/**
|
|
13
|
+
* The grid materials allows you to wrap any shape with a grid.
|
|
14
|
+
* Colors are customizable.
|
|
15
|
+
*/
|
|
16
|
+
export declare class GridMaterial extends PushMaterial {
|
|
17
|
+
/**
|
|
18
|
+
* Main color of the grid (e.g. between lines)
|
|
19
|
+
*/
|
|
20
|
+
mainColor: Color3;
|
|
21
|
+
/**
|
|
22
|
+
* Color of the grid lines.
|
|
23
|
+
*/
|
|
24
|
+
lineColor: Color3;
|
|
25
|
+
/**
|
|
26
|
+
* The scale of the grid compared to unit.
|
|
27
|
+
*/
|
|
28
|
+
gridRatio: number;
|
|
29
|
+
/**
|
|
30
|
+
* Allows setting an offset for the grid lines.
|
|
31
|
+
*/
|
|
32
|
+
gridOffset: Vector3;
|
|
33
|
+
/**
|
|
34
|
+
* The frequency of thicker lines.
|
|
35
|
+
*/
|
|
36
|
+
majorUnitFrequency: number;
|
|
37
|
+
/**
|
|
38
|
+
* The visibility of minor units in the grid.
|
|
39
|
+
*/
|
|
40
|
+
minorUnitVisibility: number;
|
|
41
|
+
/**
|
|
42
|
+
* The grid opacity outside of the lines.
|
|
43
|
+
*/
|
|
44
|
+
opacity: number;
|
|
45
|
+
/**
|
|
46
|
+
* Whether to antialias the grid
|
|
47
|
+
*/
|
|
48
|
+
antialias: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Determine RBG output is premultiplied by alpha value.
|
|
51
|
+
*/
|
|
52
|
+
preMultiplyAlpha: boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Determines if the max line value will be used instead of the sum wherever grid lines intersect.
|
|
55
|
+
*/
|
|
56
|
+
useMaxLine: boolean;
|
|
57
|
+
private _opacityTexture;
|
|
58
|
+
/**
|
|
59
|
+
* Texture to define opacity of the grid
|
|
60
|
+
*/
|
|
61
|
+
opacityTexture: BaseTexture;
|
|
62
|
+
private _gridControl;
|
|
63
|
+
/**
|
|
64
|
+
* constructor
|
|
65
|
+
* @param name The name given to the material in order to identify it afterwards.
|
|
66
|
+
* @param scene The scene the material is used in.
|
|
67
|
+
*/
|
|
68
|
+
constructor(name: string, scene?: Scene);
|
|
69
|
+
/**
|
|
70
|
+
* @returns whether or not the grid requires alpha blending.
|
|
71
|
+
*/
|
|
72
|
+
needAlphaBlending(): boolean;
|
|
73
|
+
needAlphaBlendingForMesh(mesh: AbstractMesh): boolean;
|
|
74
|
+
isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean;
|
|
75
|
+
bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void;
|
|
76
|
+
/**
|
|
77
|
+
* Dispose the material and its associated resources.
|
|
78
|
+
* @param forceDisposeEffect will also dispose the used effect when true
|
|
79
|
+
*/
|
|
80
|
+
dispose(forceDisposeEffect?: boolean): void;
|
|
81
|
+
clone(name: string): GridMaterial;
|
|
82
|
+
serialize(): any;
|
|
83
|
+
getClassName(): string;
|
|
84
|
+
static Parse(source: any, scene: Scene, rootUrl: string): GridMaterial;
|
|
85
|
+
}
|
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
import { __decorate } from "@babylonjs/core/tslib.es6.js";
|
|
2
|
+
/* eslint-disable @typescript-eslint/naming-convention */
|
|
3
|
+
import { serializeAsTexture, serialize, expandToProperty, serializeAsColor3, serializeAsVector3 } from "@babylonjs/core/Misc/decorators.js";
|
|
4
|
+
import { SerializationHelper } from "@babylonjs/core/Misc/decorators.serialization.js";
|
|
5
|
+
import { Vector4, Vector3 } from "@babylonjs/core/Maths/math.vector.js";
|
|
6
|
+
import { Color3 } from "@babylonjs/core/Maths/math.color.js";
|
|
7
|
+
import { MaterialDefines } from "@babylonjs/core/Materials/materialDefines.js";
|
|
8
|
+
import { PushMaterial } from "@babylonjs/core/Materials/pushMaterial.js";
|
|
9
|
+
import { MaterialFlags } from "@babylonjs/core/Materials/materialFlags.js";
|
|
10
|
+
import { VertexBuffer } from "@babylonjs/core/Buffers/buffer.js";
|
|
11
|
+
import { RegisterClass } from "@babylonjs/core/Misc/typeStore.js";
|
|
12
|
+
import "./grid.fragment.js";
|
|
13
|
+
import "./grid.vertex.js";
|
|
14
|
+
import { BindFogParameters, BindLogDepth, PrepareAttributesForInstances, PrepareDefinesForAttributes, PrepareDefinesForFrameBoundValues, PrepareDefinesForMisc, } from "@babylonjs/core/Materials/materialHelper.functions.js";
|
|
15
|
+
import { AddClipPlaneUniforms, BindClipPlane } from "@babylonjs/core/Materials/clipPlaneMaterialHelper.js";
|
|
16
|
+
class GridMaterialDefines extends MaterialDefines {
|
|
17
|
+
constructor() {
|
|
18
|
+
super();
|
|
19
|
+
this.CLIPPLANE = false;
|
|
20
|
+
this.CLIPPLANE2 = false;
|
|
21
|
+
this.CLIPPLANE3 = false;
|
|
22
|
+
this.CLIPPLANE4 = false;
|
|
23
|
+
this.CLIPPLANE5 = false;
|
|
24
|
+
this.CLIPPLANE6 = false;
|
|
25
|
+
this.OPACITY = false;
|
|
26
|
+
this.ANTIALIAS = false;
|
|
27
|
+
this.TRANSPARENT = false;
|
|
28
|
+
this.FOG = false;
|
|
29
|
+
this.PREMULTIPLYALPHA = false;
|
|
30
|
+
this.MAX_LINE = false;
|
|
31
|
+
this.UV1 = false;
|
|
32
|
+
this.UV2 = false;
|
|
33
|
+
this.INSTANCES = false;
|
|
34
|
+
this.THIN_INSTANCES = false;
|
|
35
|
+
this.IMAGEPROCESSINGPOSTPROCESS = false;
|
|
36
|
+
this.SKIPFINALCOLORCLAMP = false;
|
|
37
|
+
this.LOGARITHMICDEPTH = false;
|
|
38
|
+
this.rebuild();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The grid materials allows you to wrap any shape with a grid.
|
|
43
|
+
* Colors are customizable.
|
|
44
|
+
*/
|
|
45
|
+
export class GridMaterial extends PushMaterial {
|
|
46
|
+
/**
|
|
47
|
+
* constructor
|
|
48
|
+
* @param name The name given to the material in order to identify it afterwards.
|
|
49
|
+
* @param scene The scene the material is used in.
|
|
50
|
+
*/
|
|
51
|
+
constructor(name, scene) {
|
|
52
|
+
super(name, scene);
|
|
53
|
+
/**
|
|
54
|
+
* Main color of the grid (e.g. between lines)
|
|
55
|
+
*/
|
|
56
|
+
this.mainColor = Color3.Black();
|
|
57
|
+
/**
|
|
58
|
+
* Color of the grid lines.
|
|
59
|
+
*/
|
|
60
|
+
this.lineColor = Color3.Teal();
|
|
61
|
+
/**
|
|
62
|
+
* The scale of the grid compared to unit.
|
|
63
|
+
*/
|
|
64
|
+
this.gridRatio = 1.0;
|
|
65
|
+
/**
|
|
66
|
+
* Allows setting an offset for the grid lines.
|
|
67
|
+
*/
|
|
68
|
+
this.gridOffset = Vector3.Zero();
|
|
69
|
+
/**
|
|
70
|
+
* The frequency of thicker lines.
|
|
71
|
+
*/
|
|
72
|
+
this.majorUnitFrequency = 10;
|
|
73
|
+
/**
|
|
74
|
+
* The visibility of minor units in the grid.
|
|
75
|
+
*/
|
|
76
|
+
this.minorUnitVisibility = 0.33;
|
|
77
|
+
/**
|
|
78
|
+
* The grid opacity outside of the lines.
|
|
79
|
+
*/
|
|
80
|
+
this.opacity = 1.0;
|
|
81
|
+
/**
|
|
82
|
+
* Whether to antialias the grid
|
|
83
|
+
*/
|
|
84
|
+
this.antialias = true;
|
|
85
|
+
/**
|
|
86
|
+
* Determine RBG output is premultiplied by alpha value.
|
|
87
|
+
*/
|
|
88
|
+
this.preMultiplyAlpha = false;
|
|
89
|
+
/**
|
|
90
|
+
* Determines if the max line value will be used instead of the sum wherever grid lines intersect.
|
|
91
|
+
*/
|
|
92
|
+
this.useMaxLine = false;
|
|
93
|
+
this._gridControl = new Vector4(this.gridRatio, this.majorUnitFrequency, this.minorUnitVisibility, this.opacity);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* @returns whether or not the grid requires alpha blending.
|
|
97
|
+
*/
|
|
98
|
+
needAlphaBlending() {
|
|
99
|
+
return this.opacity < 1.0 || (this._opacityTexture && this._opacityTexture.isReady());
|
|
100
|
+
}
|
|
101
|
+
needAlphaBlendingForMesh(mesh) {
|
|
102
|
+
return mesh.visibility < 1.0 || this.needAlphaBlending();
|
|
103
|
+
}
|
|
104
|
+
isReadyForSubMesh(mesh, subMesh, useInstances) {
|
|
105
|
+
const drawWrapper = subMesh._drawWrapper;
|
|
106
|
+
if (this.isFrozen) {
|
|
107
|
+
if (drawWrapper.effect && drawWrapper._wasPreviouslyReady && drawWrapper._wasPreviouslyUsingInstances === useInstances) {
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (!subMesh.materialDefines) {
|
|
112
|
+
subMesh.materialDefines = new GridMaterialDefines();
|
|
113
|
+
}
|
|
114
|
+
const defines = subMesh.materialDefines;
|
|
115
|
+
const scene = this.getScene();
|
|
116
|
+
if (this._isReadyForSubMesh(subMesh)) {
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
if (defines.TRANSPARENT !== this.opacity < 1.0) {
|
|
120
|
+
defines.TRANSPARENT = !defines.TRANSPARENT;
|
|
121
|
+
defines.markAsUnprocessed();
|
|
122
|
+
}
|
|
123
|
+
if (defines.PREMULTIPLYALPHA != this.preMultiplyAlpha) {
|
|
124
|
+
defines.PREMULTIPLYALPHA = !defines.PREMULTIPLYALPHA;
|
|
125
|
+
defines.markAsUnprocessed();
|
|
126
|
+
}
|
|
127
|
+
if (defines.MAX_LINE !== this.useMaxLine) {
|
|
128
|
+
defines.MAX_LINE = !defines.MAX_LINE;
|
|
129
|
+
defines.markAsUnprocessed();
|
|
130
|
+
}
|
|
131
|
+
if (defines.ANTIALIAS !== this.antialias) {
|
|
132
|
+
defines.ANTIALIAS = !defines.ANTIALIAS;
|
|
133
|
+
defines.markAsUnprocessed();
|
|
134
|
+
}
|
|
135
|
+
// Textures
|
|
136
|
+
if (defines._areTexturesDirty) {
|
|
137
|
+
defines._needUVs = false;
|
|
138
|
+
if (scene.texturesEnabled) {
|
|
139
|
+
if (this._opacityTexture && MaterialFlags.OpacityTextureEnabled) {
|
|
140
|
+
if (!this._opacityTexture.isReady()) {
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
defines._needUVs = true;
|
|
145
|
+
defines.OPACITY = true;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
PrepareDefinesForMisc(mesh, scene, this._useLogarithmicDepth, false, this.fogEnabled, false, defines);
|
|
151
|
+
// Values that need to be evaluated on every frame
|
|
152
|
+
PrepareDefinesForFrameBoundValues(scene, scene.getEngine(), this, defines, !!useInstances);
|
|
153
|
+
// Get correct effect
|
|
154
|
+
if (defines.isDirty) {
|
|
155
|
+
defines.markAsProcessed();
|
|
156
|
+
scene.resetCachedMaterial();
|
|
157
|
+
// Attributes
|
|
158
|
+
PrepareDefinesForAttributes(mesh, defines, false, false);
|
|
159
|
+
const attribs = [VertexBuffer.PositionKind, VertexBuffer.NormalKind];
|
|
160
|
+
if (defines.UV1) {
|
|
161
|
+
attribs.push(VertexBuffer.UVKind);
|
|
162
|
+
}
|
|
163
|
+
if (defines.UV2) {
|
|
164
|
+
attribs.push(VertexBuffer.UV2Kind);
|
|
165
|
+
}
|
|
166
|
+
defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;
|
|
167
|
+
PrepareAttributesForInstances(attribs, defines);
|
|
168
|
+
const uniforms = [
|
|
169
|
+
"projection",
|
|
170
|
+
"mainColor",
|
|
171
|
+
"lineColor",
|
|
172
|
+
"gridControl",
|
|
173
|
+
"gridOffset",
|
|
174
|
+
"vFogInfos",
|
|
175
|
+
"vFogColor",
|
|
176
|
+
"world",
|
|
177
|
+
"view",
|
|
178
|
+
"opacityMatrix",
|
|
179
|
+
"vOpacityInfos",
|
|
180
|
+
"visibility",
|
|
181
|
+
"logarithmicDepthConstant",
|
|
182
|
+
];
|
|
183
|
+
// Defines
|
|
184
|
+
const join = defines.toString();
|
|
185
|
+
AddClipPlaneUniforms(uniforms);
|
|
186
|
+
subMesh.setEffect(scene.getEngine().createEffect("grid", {
|
|
187
|
+
attributes: attribs,
|
|
188
|
+
uniformsNames: uniforms,
|
|
189
|
+
uniformBuffersNames: ["Scene"],
|
|
190
|
+
samplers: ["opacitySampler"],
|
|
191
|
+
defines: join,
|
|
192
|
+
fallbacks: null,
|
|
193
|
+
onCompiled: this.onCompiled,
|
|
194
|
+
onError: this.onError,
|
|
195
|
+
}, scene.getEngine()), defines, this._materialContext);
|
|
196
|
+
}
|
|
197
|
+
if (!subMesh.effect || !subMesh.effect.isReady()) {
|
|
198
|
+
return false;
|
|
199
|
+
}
|
|
200
|
+
defines._renderId = scene.getRenderId();
|
|
201
|
+
drawWrapper._wasPreviouslyReady = true;
|
|
202
|
+
drawWrapper._wasPreviouslyUsingInstances = !!useInstances;
|
|
203
|
+
return true;
|
|
204
|
+
}
|
|
205
|
+
bindForSubMesh(world, mesh, subMesh) {
|
|
206
|
+
const scene = this.getScene();
|
|
207
|
+
const defines = subMesh.materialDefines;
|
|
208
|
+
if (!defines) {
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
const effect = subMesh.effect;
|
|
212
|
+
if (!effect) {
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
this._activeEffect = effect;
|
|
216
|
+
this._activeEffect.setFloat("visibility", mesh.visibility);
|
|
217
|
+
// Matrices
|
|
218
|
+
if (!defines.INSTANCES || defines.THIN_INSTANCE) {
|
|
219
|
+
this.bindOnlyWorldMatrix(world);
|
|
220
|
+
}
|
|
221
|
+
this.bindView(effect);
|
|
222
|
+
this.bindViewProjection(effect);
|
|
223
|
+
// Uniforms
|
|
224
|
+
if (this._mustRebind(scene, effect, subMesh)) {
|
|
225
|
+
this._activeEffect.setColor3("mainColor", this.mainColor);
|
|
226
|
+
this._activeEffect.setColor3("lineColor", this.lineColor);
|
|
227
|
+
this._activeEffect.setVector3("gridOffset", this.gridOffset);
|
|
228
|
+
this._gridControl.x = this.gridRatio;
|
|
229
|
+
this._gridControl.y = Math.round(this.majorUnitFrequency);
|
|
230
|
+
this._gridControl.z = this.minorUnitVisibility;
|
|
231
|
+
this._gridControl.w = this.opacity;
|
|
232
|
+
this._activeEffect.setVector4("gridControl", this._gridControl);
|
|
233
|
+
if (this._opacityTexture && MaterialFlags.OpacityTextureEnabled) {
|
|
234
|
+
this._activeEffect.setTexture("opacitySampler", this._opacityTexture);
|
|
235
|
+
this._activeEffect.setFloat2("vOpacityInfos", this._opacityTexture.coordinatesIndex, this._opacityTexture.level);
|
|
236
|
+
this._activeEffect.setMatrix("opacityMatrix", this._opacityTexture.getTextureMatrix());
|
|
237
|
+
}
|
|
238
|
+
// Clip plane
|
|
239
|
+
BindClipPlane(effect, this, scene);
|
|
240
|
+
// Log. depth
|
|
241
|
+
if (this._useLogarithmicDepth) {
|
|
242
|
+
BindLogDepth(defines, effect, scene);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
// Fog
|
|
246
|
+
BindFogParameters(scene, mesh, this._activeEffect);
|
|
247
|
+
this._afterBind(mesh, this._activeEffect, subMesh);
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Dispose the material and its associated resources.
|
|
251
|
+
* @param forceDisposeEffect will also dispose the used effect when true
|
|
252
|
+
*/
|
|
253
|
+
dispose(forceDisposeEffect) {
|
|
254
|
+
super.dispose(forceDisposeEffect);
|
|
255
|
+
}
|
|
256
|
+
clone(name) {
|
|
257
|
+
return SerializationHelper.Clone(() => new GridMaterial(name, this.getScene()), this);
|
|
258
|
+
}
|
|
259
|
+
serialize() {
|
|
260
|
+
const serializationObject = super.serialize();
|
|
261
|
+
serializationObject.customType = "BABYLON.GridMaterial";
|
|
262
|
+
return serializationObject;
|
|
263
|
+
}
|
|
264
|
+
getClassName() {
|
|
265
|
+
return "GridMaterial";
|
|
266
|
+
}
|
|
267
|
+
static Parse(source, scene, rootUrl) {
|
|
268
|
+
return SerializationHelper.Parse(() => new GridMaterial(source.name, scene), source, scene, rootUrl);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
__decorate([
|
|
272
|
+
serializeAsColor3()
|
|
273
|
+
], GridMaterial.prototype, "mainColor", void 0);
|
|
274
|
+
__decorate([
|
|
275
|
+
serializeAsColor3()
|
|
276
|
+
], GridMaterial.prototype, "lineColor", void 0);
|
|
277
|
+
__decorate([
|
|
278
|
+
serialize()
|
|
279
|
+
], GridMaterial.prototype, "gridRatio", void 0);
|
|
280
|
+
__decorate([
|
|
281
|
+
serializeAsVector3()
|
|
282
|
+
], GridMaterial.prototype, "gridOffset", void 0);
|
|
283
|
+
__decorate([
|
|
284
|
+
serialize()
|
|
285
|
+
], GridMaterial.prototype, "majorUnitFrequency", void 0);
|
|
286
|
+
__decorate([
|
|
287
|
+
serialize()
|
|
288
|
+
], GridMaterial.prototype, "minorUnitVisibility", void 0);
|
|
289
|
+
__decorate([
|
|
290
|
+
serialize()
|
|
291
|
+
], GridMaterial.prototype, "opacity", void 0);
|
|
292
|
+
__decorate([
|
|
293
|
+
serialize()
|
|
294
|
+
], GridMaterial.prototype, "antialias", void 0);
|
|
295
|
+
__decorate([
|
|
296
|
+
serialize()
|
|
297
|
+
], GridMaterial.prototype, "preMultiplyAlpha", void 0);
|
|
298
|
+
__decorate([
|
|
299
|
+
serialize()
|
|
300
|
+
], GridMaterial.prototype, "useMaxLine", void 0);
|
|
301
|
+
__decorate([
|
|
302
|
+
serializeAsTexture("opacityTexture")
|
|
303
|
+
], GridMaterial.prototype, "_opacityTexture", void 0);
|
|
304
|
+
__decorate([
|
|
305
|
+
expandToProperty("_markAllSubMeshesAsTexturesDirty")
|
|
306
|
+
], GridMaterial.prototype, "opacityTexture", void 0);
|
|
307
|
+
RegisterClass("BABYLON.GridMaterial", GridMaterial);
|
|
308
|
+
//# sourceMappingURL=gridMaterial.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gridMaterial.js","sourceRoot":"","sources":["../../../../dev/materials/src/grid/gridMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["/* 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 } from \"core/Maths/math.vector\";\r\nimport { 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\n\r\nimport \"./grid.fragment\";\r\nimport \"./grid.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\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 */\r\n constructor(name: string, scene?: Scene) {\r\n super(name, scene);\r\n }\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);\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 },\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"]}
|
package/grid/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./gridMaterial.js";
|
package/grid/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../dev/materials/src/grid/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC","sourcesContent":["export * from \"./gridMaterial\";\r\n"]}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export * from "./cell/index.js";
|
|
2
|
+
export * from "./custom/index.js";
|
|
3
|
+
export * from "./fire/index.js";
|
|
4
|
+
export * from "./fur/index.js";
|
|
5
|
+
export * from "./gradient/index.js";
|
|
6
|
+
export * from "./grid/index.js";
|
|
7
|
+
export * from "./lava/index.js";
|
|
8
|
+
export * from "./mix/index.js";
|
|
9
|
+
export * from "./normal/index.js";
|
|
10
|
+
export * from "./shadowOnly/index.js";
|
|
11
|
+
export * from "./simple/index.js";
|
|
12
|
+
export * from "./sky/index.js";
|
|
13
|
+
export * from "./terrain/index.js";
|
|
14
|
+
export * from "./triPlanar/index.js";
|
|
15
|
+
export * from "./water/index.js";
|