@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.
Files changed (231) hide show
  1. package/cell/cell.fragment.d.ts +19 -0
  2. package/cell/cell.fragment.js +100 -0
  3. package/cell/cell.fragment.js.map +1 -0
  4. package/cell/cell.vertex.d.ts +21 -0
  5. package/cell/cell.vertex.js +96 -0
  6. package/cell/cell.vertex.js.map +1 -0
  7. package/cell/cellMaterial.d.ts +37 -0
  8. package/cell/cellMaterial.js +312 -0
  9. package/cell/cellMaterial.js.map +1 -0
  10. package/cell/index.d.ts +1 -0
  11. package/cell/index.js +2 -0
  12. package/cell/index.js.map +1 -0
  13. package/custom/customMaterial.d.ts +280 -0
  14. package/custom/customMaterial.js +355 -0
  15. package/custom/customMaterial.js.map +1 -0
  16. package/custom/index.d.ts +2 -0
  17. package/custom/index.js +3 -0
  18. package/custom/index.js.map +1 -0
  19. package/custom/pbrCustomMaterial.d.ts +299 -0
  20. package/custom/pbrCustomMaterial.js +397 -0
  21. package/custom/pbrCustomMaterial.js.map +1 -0
  22. package/fire/fire.fragment.d.ts +13 -0
  23. package/fire/fire.fragment.js +65 -0
  24. package/fire/fire.fragment.js.map +1 -0
  25. package/fire/fire.vertex.d.ts +18 -0
  26. package/fire/fire.vertex.js +80 -0
  27. package/fire/fire.vertex.js.map +1 -0
  28. package/fire/fireMaterial.d.ts +38 -0
  29. package/fire/fireMaterial.js +342 -0
  30. package/fire/fireMaterial.js.map +1 -0
  31. package/fire/index.d.ts +1 -0
  32. package/fire/index.js +2 -0
  33. package/fire/index.js.map +1 -0
  34. package/fur/fur.fragment.d.ts +19 -0
  35. package/fur/fur.fragment.js +94 -0
  36. package/fur/fur.fragment.js.map +1 -0
  37. package/fur/fur.vertex.d.ts +21 -0
  38. package/fur/fur.vertex.js +126 -0
  39. package/fur/fur.vertex.js.map +1 -0
  40. package/fur/furMaterial.d.ts +57 -0
  41. package/fur/furMaterial.js +505 -0
  42. package/fur/furMaterial.js.map +1 -0
  43. package/fur/index.d.ts +1 -0
  44. package/fur/index.js +2 -0
  45. package/fur/index.js.map +1 -0
  46. package/gradient/gradient.fragment.d.ts +19 -0
  47. package/gradient/gradient.fragment.js +80 -0
  48. package/gradient/gradient.fragment.js.map +1 -0
  49. package/gradient/gradient.vertex.d.ts +21 -0
  50. package/gradient/gradient.vertex.js +87 -0
  51. package/gradient/gradient.vertex.js.map +1 -0
  52. package/gradient/gradientMaterial.d.ts +37 -0
  53. package/gradient/gradientMaterial.js +283 -0
  54. package/gradient/gradientMaterial.js.map +1 -0
  55. package/gradient/index.d.ts +1 -0
  56. package/gradient/index.js +2 -0
  57. package/gradient/index.js.map +1 -0
  58. package/grid/grid.fragment.d.ts +12 -0
  59. package/grid/grid.fragment.js +79 -0
  60. package/grid/grid.fragment.js.map +1 -0
  61. package/grid/grid.vertex.d.ts +15 -0
  62. package/grid/grid.vertex.js +60 -0
  63. package/grid/grid.vertex.js.map +1 -0
  64. package/grid/gridMaterial.d.ts +85 -0
  65. package/grid/gridMaterial.js +308 -0
  66. package/grid/gridMaterial.js.map +1 -0
  67. package/grid/index.d.ts +1 -0
  68. package/grid/index.js +2 -0
  69. package/grid/index.js.map +1 -0
  70. package/index.d.ts +15 -0
  71. package/index.js +17 -0
  72. package/index.js.map +1 -0
  73. package/lava/index.d.ts +1 -0
  74. package/lava/index.js +2 -0
  75. package/lava/index.js.map +1 -0
  76. package/lava/lava.fragment.d.ts +19 -0
  77. package/lava/lava.fragment.js +89 -0
  78. package/lava/lava.fragment.js.map +1 -0
  79. package/lava/lava.vertex.d.ts +21 -0
  80. package/lava/lava.vertex.js +113 -0
  81. package/lava/lava.vertex.js.map +1 -0
  82. package/lava/lavaMaterial.d.ts +45 -0
  83. package/lava/lavaMaterial.js +402 -0
  84. package/lava/lavaMaterial.js.map +1 -0
  85. package/legacy/legacy-cell.d.ts +1 -0
  86. package/legacy/legacy-cell.js +14 -0
  87. package/legacy/legacy-cell.js.map +1 -0
  88. package/legacy/legacy-custom.d.ts +1 -0
  89. package/legacy/legacy-custom.js +14 -0
  90. package/legacy/legacy-custom.js.map +1 -0
  91. package/legacy/legacy-fire.d.ts +1 -0
  92. package/legacy/legacy-fire.js +14 -0
  93. package/legacy/legacy-fire.js.map +1 -0
  94. package/legacy/legacy-fur.d.ts +1 -0
  95. package/legacy/legacy-fur.js +14 -0
  96. package/legacy/legacy-fur.js.map +1 -0
  97. package/legacy/legacy-gradient.d.ts +1 -0
  98. package/legacy/legacy-gradient.js +14 -0
  99. package/legacy/legacy-gradient.js.map +1 -0
  100. package/legacy/legacy-grid.d.ts +1 -0
  101. package/legacy/legacy-grid.js +14 -0
  102. package/legacy/legacy-grid.js.map +1 -0
  103. package/legacy/legacy-lava.d.ts +1 -0
  104. package/legacy/legacy-lava.js +14 -0
  105. package/legacy/legacy-lava.js.map +1 -0
  106. package/legacy/legacy-mix.d.ts +1 -0
  107. package/legacy/legacy-mix.js +14 -0
  108. package/legacy/legacy-mix.js.map +1 -0
  109. package/legacy/legacy-normal.d.ts +1 -0
  110. package/legacy/legacy-normal.js +14 -0
  111. package/legacy/legacy-normal.js.map +1 -0
  112. package/legacy/legacy-shadowOnly.d.ts +1 -0
  113. package/legacy/legacy-shadowOnly.js +14 -0
  114. package/legacy/legacy-shadowOnly.js.map +1 -0
  115. package/legacy/legacy-simple.d.ts +1 -0
  116. package/legacy/legacy-simple.js +14 -0
  117. package/legacy/legacy-simple.js.map +1 -0
  118. package/legacy/legacy-sky.d.ts +1 -0
  119. package/legacy/legacy-sky.js +14 -0
  120. package/legacy/legacy-sky.js.map +1 -0
  121. package/legacy/legacy-terrain.d.ts +1 -0
  122. package/legacy/legacy-terrain.js +14 -0
  123. package/legacy/legacy-terrain.js.map +1 -0
  124. package/legacy/legacy-triPlanar.d.ts +1 -0
  125. package/legacy/legacy-triPlanar.js +14 -0
  126. package/legacy/legacy-triPlanar.js.map +1 -0
  127. package/legacy/legacy-water.d.ts +1 -0
  128. package/legacy/legacy-water.js +14 -0
  129. package/legacy/legacy-water.js.map +1 -0
  130. package/legacy/legacy.d.ts +1 -0
  131. package/legacy/legacy.js +17 -0
  132. package/legacy/legacy.js.map +1 -0
  133. package/license.md +71 -0
  134. package/mix/index.d.ts +1 -0
  135. package/mix/index.js +2 -0
  136. package/mix/index.js.map +1 -0
  137. package/mix/mix.fragment.d.ts +19 -0
  138. package/mix/mix.fragment.js +106 -0
  139. package/mix/mix.fragment.js.map +1 -0
  140. package/mix/mix.vertex.d.ts +21 -0
  141. package/mix/mix.vertex.js +96 -0
  142. package/mix/mix.vertex.js.map +1 -0
  143. package/mix/mixMaterial.d.ts +65 -0
  144. package/mix/mixMaterial.js +508 -0
  145. package/mix/mixMaterial.js.map +1 -0
  146. package/normal/index.d.ts +1 -0
  147. package/normal/index.js +2 -0
  148. package/normal/index.js.map +1 -0
  149. package/normal/normal.fragment.d.ts +19 -0
  150. package/normal/normal.fragment.js +85 -0
  151. package/normal/normal.fragment.js.map +1 -0
  152. package/normal/normal.vertex.d.ts +20 -0
  153. package/normal/normal.vertex.js +88 -0
  154. package/normal/normal.vertex.js.map +1 -0
  155. package/normal/normalMaterial.d.ts +36 -0
  156. package/normal/normalMaterial.js +345 -0
  157. package/normal/normalMaterial.js.map +1 -0
  158. package/package.json +47 -0
  159. package/readme.md +30 -0
  160. package/shadowOnly/index.d.ts +1 -0
  161. package/shadowOnly/index.js +2 -0
  162. package/shadowOnly/index.js.map +1 -0
  163. package/shadowOnly/shadowOnly.fragment.d.ts +20 -0
  164. package/shadowOnly/shadowOnly.fragment.js +60 -0
  165. package/shadowOnly/shadowOnly.fragment.js.map +1 -0
  166. package/shadowOnly/shadowOnly.vertex.d.ts +22 -0
  167. package/shadowOnly/shadowOnly.vertex.js +69 -0
  168. package/shadowOnly/shadowOnly.vertex.js.map +1 -0
  169. package/shadowOnly/shadowOnlyMaterial.d.ts +30 -0
  170. package/shadowOnly/shadowOnlyMaterial.js +243 -0
  171. package/shadowOnly/shadowOnlyMaterial.js.map +1 -0
  172. package/simple/index.d.ts +1 -0
  173. package/simple/index.js +2 -0
  174. package/simple/index.js.map +1 -0
  175. package/simple/simple.fragment.d.ts +19 -0
  176. package/simple/simple.fragment.js +81 -0
  177. package/simple/simple.fragment.js.map +1 -0
  178. package/simple/simple.vertex.d.ts +21 -0
  179. package/simple/simple.vertex.js +96 -0
  180. package/simple/simple.vertex.js.map +1 -0
  181. package/simple/simpleMaterial.d.ts +35 -0
  182. package/simple/simpleMaterial.js +303 -0
  183. package/simple/simpleMaterial.js.map +1 -0
  184. package/sky/index.d.ts +1 -0
  185. package/sky/index.js +2 -0
  186. package/sky/index.js.map +1 -0
  187. package/sky/sky.fragment.d.ts +13 -0
  188. package/sky/sky.fragment.js +81 -0
  189. package/sky/sky.fragment.js.map +1 -0
  190. package/sky/sky.vertex.d.ts +11 -0
  191. package/sky/sky.vertex.js +47 -0
  192. package/sky/sky.vertex.js.map +1 -0
  193. package/sky/skyMaterial.d.ts +151 -0
  194. package/sky/skyMaterial.js +367 -0
  195. package/sky/skyMaterial.js.map +1 -0
  196. package/terrain/index.d.ts +1 -0
  197. package/terrain/index.js +2 -0
  198. package/terrain/index.js.map +1 -0
  199. package/terrain/terrain.fragment.d.ts +19 -0
  200. package/terrain/terrain.fragment.js +110 -0
  201. package/terrain/terrain.fragment.js.map +1 -0
  202. package/terrain/terrain.vertex.d.ts +21 -0
  203. package/terrain/terrain.vertex.js +96 -0
  204. package/terrain/terrain.vertex.js.map +1 -0
  205. package/terrain/terrainMaterial.d.ts +50 -0
  206. package/terrain/terrainMaterial.js +445 -0
  207. package/terrain/terrainMaterial.js.map +1 -0
  208. package/triPlanar/index.d.ts +1 -0
  209. package/triPlanar/index.js +2 -0
  210. package/triPlanar/index.js.map +1 -0
  211. package/triPlanar/triPlanarMaterial.d.ts +49 -0
  212. package/triPlanar/triPlanarMaterial.js +421 -0
  213. package/triPlanar/triPlanarMaterial.js.map +1 -0
  214. package/triPlanar/triplanar.fragment.d.ts +19 -0
  215. package/triPlanar/triplanar.fragment.js +126 -0
  216. package/triPlanar/triplanar.fragment.js.map +1 -0
  217. package/triPlanar/triplanar.vertex.d.ts +22 -0
  218. package/triPlanar/triplanar.vertex.js +101 -0
  219. package/triPlanar/triplanar.vertex.js.map +1 -0
  220. package/water/index.d.ts +1 -0
  221. package/water/index.js +2 -0
  222. package/water/index.js.map +1 -0
  223. package/water/water.fragment.d.ts +19 -0
  224. package/water/water.fragment.js +160 -0
  225. package/water/water.fragment.js.map +1 -0
  226. package/water/water.vertex.d.ts +21 -0
  227. package/water/water.vertex.js +125 -0
  228. package/water/water.vertex.js.map +1 -0
  229. package/water/waterMaterial.d.ts +141 -0
  230. package/water/waterMaterial.js +729 -0
  231. 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"]}
@@ -0,0 +1 @@
1
+ export * from "./gridMaterial.js";
package/grid/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from "./gridMaterial.js";
2
+ //# sourceMappingURL=index.js.map
@@ -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";