@babylonjs/materials 5.20.0 → 5.22.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.js +14 -2
- package/cell/cell.fragment.js.map +1 -1
- package/cell/cell.vertex.js +45 -3
- package/cell/cell.vertex.js.map +1 -1
- package/cell/cellMaterial.js +112 -120
- package/cell/cellMaterial.js.map +1 -1
- package/custom/customMaterial.js +69 -81
- package/custom/customMaterial.js.map +1 -1
- package/custom/pbrCustomMaterial.js +80 -89
- package/custom/pbrCustomMaterial.js.map +1 -1
- package/fire/fire.fragment.js +44 -3
- package/fire/fire.fragment.js.map +1 -1
- package/fire/fire.vertex.js +54 -3
- package/fire/fire.vertex.js.map +1 -1
- package/fire/fireMaterial.js +101 -109
- package/fire/fireMaterial.js.map +1 -1
- package/fur/fur.fragment.js +67 -3
- package/fur/fur.fragment.js.map +1 -1
- package/fur/fur.vertex.js +97 -3
- package/fur/fur.vertex.js.map +1 -1
- package/fur/furMaterial.js +181 -193
- package/fur/furMaterial.js.map +1 -1
- package/gradient/gradient.fragment.js +36 -3
- package/gradient/gradient.fragment.js.map +1 -1
- package/gradient/gradient.vertex.js +41 -3
- package/gradient/gradient.vertex.js.map +1 -1
- package/gradient/gradientMaterial.js +113 -121
- package/gradient/gradientMaterial.js.map +1 -1
- package/grid/grid.fragment.js +8 -2
- package/grid/grid.fragment.js.map +1 -1
- package/grid/grid.vertex.js +22 -3
- package/grid/grid.vertex.js.map +1 -1
- package/grid/gridMaterial.js +93 -101
- package/grid/gridMaterial.js.map +1 -1
- package/lava/lava.fragment.js +62 -3
- package/lava/lava.fragment.js.map +1 -1
- package/lava/lava.vertex.js +84 -3
- package/lava/lava.vertex.js.map +1 -1
- package/lava/lavaMaterial.js +175 -183
- package/lava/lavaMaterial.js.map +1 -1
- package/legacy/legacy-cell.js +2 -2
- package/legacy/legacy-cell.js.map +1 -1
- package/legacy/legacy-custom.js +2 -2
- package/legacy/legacy-custom.js.map +1 -1
- package/legacy/legacy-fire.js +2 -2
- package/legacy/legacy-fire.js.map +1 -1
- package/legacy/legacy-fur.js +2 -2
- package/legacy/legacy-fur.js.map +1 -1
- package/legacy/legacy-gradient.js +2 -2
- package/legacy/legacy-gradient.js.map +1 -1
- package/legacy/legacy-grid.js +2 -2
- package/legacy/legacy-grid.js.map +1 -1
- package/legacy/legacy-lava.js +2 -2
- package/legacy/legacy-lava.js.map +1 -1
- package/legacy/legacy-mix.js +2 -2
- package/legacy/legacy-mix.js.map +1 -1
- package/legacy/legacy-normal.js +2 -2
- package/legacy/legacy-normal.js.map +1 -1
- package/legacy/legacy-shadowOnly.js +2 -2
- package/legacy/legacy-shadowOnly.js.map +1 -1
- package/legacy/legacy-simple.js +2 -2
- package/legacy/legacy-simple.js.map +1 -1
- package/legacy/legacy-sky.js +2 -2
- package/legacy/legacy-sky.js.map +1 -1
- package/legacy/legacy-terrain.js +2 -2
- package/legacy/legacy-terrain.js.map +1 -1
- package/legacy/legacy-triPlanar.js +2 -2
- package/legacy/legacy-triPlanar.js.map +1 -1
- package/legacy/legacy-water.js +2 -2
- package/legacy/legacy-water.js.map +1 -1
- package/legacy/legacy.js +2 -2
- package/legacy/legacy.js.map +1 -1
- package/mix/mix.fragment.js +33 -2
- package/mix/mix.fragment.js.map +1 -1
- package/mix/mix.vertex.js +67 -3
- package/mix/mix.vertex.js.map +1 -1
- package/mix/mixMaterial.js +166 -174
- package/mix/mixMaterial.js.map +1 -1
- package/normal/normal.fragment.js +41 -3
- package/normal/normal.fragment.js.map +1 -1
- package/normal/normal.vertex.js +42 -3
- package/normal/normal.vertex.js.map +1 -1
- package/normal/normalMaterial.js +143 -151
- package/normal/normalMaterial.js.map +1 -1
- package/package.json +3 -6
- package/shadowOnly/shadowOnly.fragment.js +21 -3
- package/shadowOnly/shadowOnly.fragment.js.map +1 -1
- package/shadowOnly/shadowOnly.vertex.js +30 -3
- package/shadowOnly/shadowOnly.vertex.js.map +1 -1
- package/shadowOnly/shadowOnlyMaterial.js +73 -89
- package/shadowOnly/shadowOnlyMaterial.js.map +1 -1
- package/simple/simple.fragment.js +36 -3
- package/simple/simple.fragment.js.map +1 -1
- package/simple/simple.vertex.js +45 -3
- package/simple/simple.vertex.js.map +1 -1
- package/simple/simpleMaterial.js +102 -110
- package/simple/simpleMaterial.js.map +1 -1
- package/sky/sky.fragment.js +17 -3
- package/sky/sky.fragment.js.map +1 -1
- package/sky/sky.vertex.js +20 -3
- package/sky/sky.vertex.js.map +1 -1
- package/sky/skyMaterial.js +111 -119
- package/sky/skyMaterial.js.map +1 -1
- package/terrain/terrain.fragment.js +36 -2
- package/terrain/terrain.fragment.js.map +1 -1
- package/terrain/terrain.vertex.js +67 -3
- package/terrain/terrain.vertex.js.map +1 -1
- package/terrain/terrainMaterial.js +148 -156
- package/terrain/terrainMaterial.js.map +1 -1
- package/triPlanar/triPlanarMaterial.js +157 -165
- package/triPlanar/triPlanarMaterial.js.map +1 -1
- package/triPlanar/triplanar.fragment.js +64 -3
- package/triPlanar/triplanar.fragment.js.map +1 -1
- package/triPlanar/triplanar.vertex.js +45 -3
- package/triPlanar/triplanar.vertex.js.map +1 -1
- package/water/water.fragment.js +83 -3
- package/water/water.fragment.js.map +1 -1
- package/water/water.vertex.js +56 -3
- package/water/water.vertex.js.map +1 -1
- package/water/waterMaterial.js +284 -313
- package/water/waterMaterial.js.map +1 -1
package/grid/gridMaterial.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import { __decorate
|
1
|
+
import { __decorate } from "@babylonjs/core/tslib.es6.js";
|
2
2
|
/* eslint-disable @typescript-eslint/naming-convention */
|
3
3
|
import { serializeAsTexture, serialize, expandToProperty, serializeAsColor3, SerializationHelper, serializeAsVector3 } from "@babylonjs/core/Misc/decorators.js";
|
4
4
|
import { Vector4, Vector3 } from "@babylonjs/core/Maths/math.vector.js";
|
@@ -11,88 +11,83 @@ import { VertexBuffer } from "@babylonjs/core/Buffers/buffer.js";
|
|
11
11
|
import { RegisterClass } from "@babylonjs/core/Misc/typeStore.js";
|
12
12
|
import "./grid.fragment.js";
|
13
13
|
import "./grid.vertex.js";
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
_this.rebuild();
|
30
|
-
return _this;
|
14
|
+
class GridMaterialDefines extends MaterialDefines {
|
15
|
+
constructor() {
|
16
|
+
super();
|
17
|
+
this.OPACITY = false;
|
18
|
+
this.TRANSPARENT = false;
|
19
|
+
this.FOG = false;
|
20
|
+
this.PREMULTIPLYALPHA = false;
|
21
|
+
this.MAX_LINE = false;
|
22
|
+
this.UV1 = false;
|
23
|
+
this.UV2 = false;
|
24
|
+
this.INSTANCES = false;
|
25
|
+
this.THIN_INSTANCES = false;
|
26
|
+
this.IMAGEPROCESSINGPOSTPROCESS = false;
|
27
|
+
this.SKIPFINALCOLORCLAMP = false;
|
28
|
+
this.rebuild();
|
31
29
|
}
|
32
|
-
|
33
|
-
}(MaterialDefines));
|
30
|
+
}
|
34
31
|
/**
|
35
32
|
* The grid materials allows you to wrap any shape with a grid.
|
36
33
|
* Colors are customizable.
|
37
34
|
*/
|
38
|
-
|
39
|
-
__extends(GridMaterial, _super);
|
35
|
+
export class GridMaterial extends PushMaterial {
|
40
36
|
/**
|
41
37
|
* constructor
|
42
38
|
* @param name The name given to the material in order to identify it afterwards.
|
43
39
|
* @param scene The scene the material is used in.
|
44
40
|
*/
|
45
|
-
|
46
|
-
|
41
|
+
constructor(name, scene) {
|
42
|
+
super(name, scene);
|
47
43
|
/**
|
48
44
|
* Main color of the grid (e.g. between lines)
|
49
45
|
*/
|
50
|
-
|
46
|
+
this.mainColor = Color3.Black();
|
51
47
|
/**
|
52
48
|
* Color of the grid lines.
|
53
49
|
*/
|
54
|
-
|
50
|
+
this.lineColor = Color3.Teal();
|
55
51
|
/**
|
56
52
|
* The scale of the grid compared to unit.
|
57
53
|
*/
|
58
|
-
|
54
|
+
this.gridRatio = 1.0;
|
59
55
|
/**
|
60
56
|
* Allows setting an offset for the grid lines.
|
61
57
|
*/
|
62
|
-
|
58
|
+
this.gridOffset = Vector3.Zero();
|
63
59
|
/**
|
64
60
|
* The frequency of thicker lines.
|
65
61
|
*/
|
66
|
-
|
62
|
+
this.majorUnitFrequency = 10;
|
67
63
|
/**
|
68
64
|
* The visibility of minor units in the grid.
|
69
65
|
*/
|
70
|
-
|
66
|
+
this.minorUnitVisibility = 0.33;
|
71
67
|
/**
|
72
68
|
* The grid opacity outside of the lines.
|
73
69
|
*/
|
74
|
-
|
70
|
+
this.opacity = 1.0;
|
75
71
|
/**
|
76
72
|
* Determine RBG output is premultiplied by alpha value.
|
77
73
|
*/
|
78
|
-
|
74
|
+
this.preMultiplyAlpha = false;
|
79
75
|
/**
|
80
76
|
* Determines if the max line value will be used instead of the sum wherever grid lines intersect.
|
81
77
|
*/
|
82
|
-
|
83
|
-
|
84
|
-
return _this;
|
78
|
+
this.useMaxLine = false;
|
79
|
+
this._gridControl = new Vector4(this.gridRatio, this.majorUnitFrequency, this.minorUnitVisibility, this.opacity);
|
85
80
|
}
|
86
81
|
/**
|
87
82
|
* Returns whether or not the grid requires alpha blending.
|
88
83
|
*/
|
89
|
-
|
84
|
+
needAlphaBlending() {
|
90
85
|
return this.opacity < 1.0 || (this._opacityTexture && this._opacityTexture.isReady());
|
91
|
-
}
|
92
|
-
|
86
|
+
}
|
87
|
+
needAlphaBlendingForMesh(mesh) {
|
93
88
|
return mesh.visibility < 1.0 || this.needAlphaBlending();
|
94
|
-
}
|
95
|
-
|
89
|
+
}
|
90
|
+
isReadyForSubMesh(mesh, subMesh, useInstances) {
|
96
91
|
if (this.isFrozen) {
|
97
92
|
if (subMesh.effect && subMesh.effect._wasPreviouslyReady && subMesh.effect._wasPreviouslyUsingInstances === useInstances) {
|
98
93
|
return true;
|
@@ -101,8 +96,8 @@ var GridMaterial = /** @class */ (function (_super) {
|
|
101
96
|
if (!subMesh.materialDefines) {
|
102
97
|
subMesh.materialDefines = new GridMaterialDefines();
|
103
98
|
}
|
104
|
-
|
105
|
-
|
99
|
+
const defines = subMesh.materialDefines;
|
100
|
+
const scene = this.getScene();
|
106
101
|
if (this._isReadyForSubMesh(subMesh)) {
|
107
102
|
return true;
|
108
103
|
}
|
@@ -142,7 +137,7 @@ var GridMaterial = /** @class */ (function (_super) {
|
|
142
137
|
scene.resetCachedMaterial();
|
143
138
|
// Attributes
|
144
139
|
MaterialHelper.PrepareDefinesForAttributes(mesh, defines, false, false);
|
145
|
-
|
140
|
+
const attribs = [VertexBuffer.PositionKind, VertexBuffer.NormalKind];
|
146
141
|
if (defines.UV1) {
|
147
142
|
attribs.push(VertexBuffer.UVKind);
|
148
143
|
}
|
@@ -152,7 +147,7 @@ var GridMaterial = /** @class */ (function (_super) {
|
|
152
147
|
defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;
|
153
148
|
MaterialHelper.PrepareAttributesForInstances(attribs, defines);
|
154
149
|
// Defines
|
155
|
-
|
150
|
+
const join = defines.toString();
|
156
151
|
subMesh.setEffect(scene
|
157
152
|
.getEngine()
|
158
153
|
.createEffect("grid", attribs, [
|
@@ -177,14 +172,14 @@ var GridMaterial = /** @class */ (function (_super) {
|
|
177
172
|
subMesh.effect._wasPreviouslyReady = true;
|
178
173
|
subMesh.effect._wasPreviouslyUsingInstances = !!useInstances;
|
179
174
|
return true;
|
180
|
-
}
|
181
|
-
|
182
|
-
|
183
|
-
|
175
|
+
}
|
176
|
+
bindForSubMesh(world, mesh, subMesh) {
|
177
|
+
const scene = this.getScene();
|
178
|
+
const defines = subMesh.materialDefines;
|
184
179
|
if (!defines) {
|
185
180
|
return;
|
186
181
|
}
|
187
|
-
|
182
|
+
const effect = subMesh.effect;
|
188
183
|
if (!effect) {
|
189
184
|
return;
|
190
185
|
}
|
@@ -215,64 +210,61 @@ var GridMaterial = /** @class */ (function (_super) {
|
|
215
210
|
// Fog
|
216
211
|
MaterialHelper.BindFogParameters(scene, mesh, this._activeEffect);
|
217
212
|
this._afterBind(mesh, this._activeEffect);
|
218
|
-
}
|
213
|
+
}
|
219
214
|
/**
|
220
215
|
* Dispose the material and its associated resources.
|
221
216
|
* @param forceDisposeEffect will also dispose the used effect when true
|
222
217
|
*/
|
223
|
-
|
224
|
-
|
225
|
-
}
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
var serializationObject = _super.prototype.serialize.call(this);
|
218
|
+
dispose(forceDisposeEffect) {
|
219
|
+
super.dispose(forceDisposeEffect);
|
220
|
+
}
|
221
|
+
clone(name) {
|
222
|
+
return SerializationHelper.Clone(() => new GridMaterial(name, this.getScene()), this);
|
223
|
+
}
|
224
|
+
serialize() {
|
225
|
+
const serializationObject = super.serialize();
|
232
226
|
serializationObject.customType = "BABYLON.GridMaterial";
|
233
227
|
return serializationObject;
|
234
|
-
}
|
235
|
-
|
228
|
+
}
|
229
|
+
getClassName() {
|
236
230
|
return "GridMaterial";
|
237
|
-
}
|
238
|
-
|
239
|
-
return SerializationHelper.Parse(
|
240
|
-
}
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
}(PushMaterial));
|
276
|
-
export { GridMaterial };
|
231
|
+
}
|
232
|
+
static Parse(source, scene, rootUrl) {
|
233
|
+
return SerializationHelper.Parse(() => new GridMaterial(source.name, scene), source, scene, rootUrl);
|
234
|
+
}
|
235
|
+
}
|
236
|
+
__decorate([
|
237
|
+
serializeAsColor3()
|
238
|
+
], GridMaterial.prototype, "mainColor", void 0);
|
239
|
+
__decorate([
|
240
|
+
serializeAsColor3()
|
241
|
+
], GridMaterial.prototype, "lineColor", void 0);
|
242
|
+
__decorate([
|
243
|
+
serialize()
|
244
|
+
], GridMaterial.prototype, "gridRatio", void 0);
|
245
|
+
__decorate([
|
246
|
+
serializeAsVector3()
|
247
|
+
], GridMaterial.prototype, "gridOffset", void 0);
|
248
|
+
__decorate([
|
249
|
+
serialize()
|
250
|
+
], GridMaterial.prototype, "majorUnitFrequency", void 0);
|
251
|
+
__decorate([
|
252
|
+
serialize()
|
253
|
+
], GridMaterial.prototype, "minorUnitVisibility", void 0);
|
254
|
+
__decorate([
|
255
|
+
serialize()
|
256
|
+
], GridMaterial.prototype, "opacity", void 0);
|
257
|
+
__decorate([
|
258
|
+
serialize()
|
259
|
+
], GridMaterial.prototype, "preMultiplyAlpha", void 0);
|
260
|
+
__decorate([
|
261
|
+
serialize()
|
262
|
+
], GridMaterial.prototype, "useMaxLine", void 0);
|
263
|
+
__decorate([
|
264
|
+
serializeAsTexture("opacityTexture")
|
265
|
+
], GridMaterial.prototype, "_opacityTexture", void 0);
|
266
|
+
__decorate([
|
267
|
+
expandToProperty("_markAllSubMeshesAsTexturesDirty")
|
268
|
+
], GridMaterial.prototype, "opacityTexture", void 0);
|
277
269
|
RegisterClass("BABYLON.GridMaterial", GridMaterial);
|
278
270
|
//# sourceMappingURL=gridMaterial.js.map
|
package/grid/gridMaterial.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"gridMaterial.js","sourceRoot":"","sources":["../../../../../lts/materials/generated/grid/gridMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { serializeAsTexture, serialize, expandToProperty, serializeAsColor3, SerializationHelper, serializeAsVector3 } from \"core/Misc/decorators\";\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 { MaterialHelper } from \"core/Materials/materialHelper\";\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\n\r\nclass GridMaterialDefines extends MaterialDefines {\r\n public OPACITY = 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\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 * 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 @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 needAlphaBlending(): boolean {\r\n return this.opacity < 1.0 || (this._opacityTexture && this._opacityTexture.isReady());\r\n }\r\n\r\n public needAlphaBlendingForMesh(mesh: AbstractMesh): boolean {\r\n return mesh.visibility < 1.0 || this.needAlphaBlending();\r\n }\r\n\r\n public isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean {\r\n if (this.isFrozen) {\r\n if (subMesh.effect && subMesh.effect._wasPreviouslyReady && subMesh.effect._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 // 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 MaterialHelper.PrepareDefinesForMisc(mesh, scene, false, false, this.fogEnabled, false, defines);\r\n\r\n // Values that need to be evaluated on every frame\r\n MaterialHelper.PrepareDefinesForFrameBoundValues(scene, scene.getEngine(), 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 MaterialHelper.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 MaterialHelper.PrepareAttributesForInstances(attribs, defines);\r\n\r\n // Defines\r\n const join = defines.toString();\r\n subMesh.setEffect(\r\n scene\r\n .getEngine()\r\n .createEffect(\r\n \"grid\",\r\n attribs,\r\n [\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 ],\r\n [\"opacitySampler\"],\r\n join,\r\n undefined,\r\n this.onCompiled,\r\n this.onError\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 subMesh.effect._wasPreviouslyReady = true;\r\n subMesh.effect._wasPreviouslyUsingInstances = !!useInstances;\r\n\r\n return true;\r\n }\r\n\r\n public 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._activeEffect.setMatrix(\"view\", scene.getViewMatrix());\r\n this._activeEffect.setMatrix(\"projection\", scene.getProjectionMatrix());\r\n\r\n // Uniforms\r\n if (this._mustRebind(scene, effect)) {\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 // Fog\r\n MaterialHelper.BindFogParameters(scene, mesh, this._activeEffect);\r\n\r\n this._afterBind(mesh, this._activeEffect);\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 dispose(forceDisposeEffect?: boolean): void {\r\n super.dispose(forceDisposeEffect);\r\n }\r\n\r\n public clone(name: string): GridMaterial {\r\n return SerializationHelper.Clone(() => new GridMaterial(name, this.getScene()), this);\r\n }\r\n\r\n public 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 getClassName(): string {\r\n return \"GridMaterial\";\r\n }\r\n\r\n public static 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"]}
|
1
|
+
{"version":3,"file":"gridMaterial.js","sourceRoot":"","sources":["../../../../../lts/materials/generated/grid/gridMaterial.ts"],"names":[],"mappings":";AAAA,yDAAyD;AACzD,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,2CAA6B;AAEnJ,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,6CAA+B;AAC1D,OAAO,EAAE,MAAM,EAAE,4CAA8B;AAE/C,OAAO,EAAE,eAAe,EAAE,qDAAuC;AACjE,OAAO,EAAE,cAAc,EAAE,oDAAsC;AAC/D,OAAO,EAAE,YAAY,EAAE,kDAAoC;AAC3D,OAAO,EAAE,aAAa,EAAE,mDAAqC;AAC7D,OAAO,EAAE,YAAY,EAAE,0CAA4B;AAKnD,OAAO,EAAE,aAAa,EAAE,0CAA4B;AAEpD,OAAO,iBAAiB,CAAC;AACzB,OAAO,eAAe,CAAC;AAEvB,MAAM,mBAAoB,SAAQ,eAAe;IAa7C;QACI,KAAK,EAAE,CAAC;QAbL,YAAO,GAAG,KAAK,CAAC;QAChB,gBAAW,GAAG,KAAK,CAAC;QACpB,QAAG,GAAG,KAAK,CAAC;QACZ,qBAAgB,GAAG,KAAK,CAAC;QACzB,aAAQ,GAAG,KAAK,CAAC;QACjB,QAAG,GAAG,KAAK,CAAC;QACZ,QAAG,GAAG,KAAK,CAAC;QACZ,cAAS,GAAG,KAAK,CAAC;QAClB,mBAAc,GAAG,KAAK,CAAC;QACvB,+BAA0B,GAAG,KAAK,CAAC;QACnC,wBAAmB,GAAG,KAAK,CAAC;QAI/B,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;CACJ;AAED;;;GAGG;AACH,MAAM,OAAO,YAAa,SAAQ,YAAY;IA8D1C;;;;OAIG;IACH,YAAY,IAAY,EAAE,KAAa;QACnC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAnEvB;;WAEG;QAEI,cAAS,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAElC;;WAEG;QAEI,cAAS,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAEjC;;WAEG;QAEI,cAAS,GAAG,GAAG,CAAC;QAEvB;;WAEG;QAEI,eAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAEnC;;WAEG;QAEI,uBAAkB,GAAG,EAAE,CAAC;QAE/B;;WAEG;QAEI,wBAAmB,GAAG,IAAI,CAAC;QAElC;;WAEG;QAEI,YAAO,GAAG,GAAG,CAAC;QAErB;;WAEG;QAEI,qBAAgB,GAAG,KAAK,CAAC;QAEhC;;WAEG;QAEI,eAAU,GAAG,KAAK,CAAC;QAOlB,iBAAY,GAAY,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAS7H,CAAC;IAED;;OAEG;IACI,iBAAiB;QACpB,OAAO,IAAI,CAAC,OAAO,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1F,CAAC;IAEM,wBAAwB,CAAC,IAAkB;QAC9C,OAAO,IAAI,CAAC,UAAU,GAAG,GAAG,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC7D,CAAC;IAEM,iBAAiB,CAAC,IAAkB,EAAE,OAAgB,EAAE,YAAsB;QACjF,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,4BAA4B,KAAK,YAAY,EAAE;gBACtH,OAAO,IAAI,CAAC;aACf;SACJ;QAED,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;YAC1B,OAAO,CAAC,eAAe,GAAG,IAAI,mBAAmB,EAAE,CAAC;SACvD;QAED,MAAM,OAAO,GAAwB,OAAO,CAAC,eAAe,CAAC;QAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAE9B,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE;YAClC,OAAO,IAAI,CAAC;SACf;QAED,IAAI,OAAO,CAAC,WAAW,KAAK,IAAI,CAAC,OAAO,GAAG,GAAG,EAAE;YAC5C,OAAO,CAAC,WAAW,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC;YAC3C,OAAO,CAAC,iBAAiB,EAAE,CAAC;SAC/B;QAED,IAAI,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACnD,OAAO,CAAC,gBAAgB,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC;YACrD,OAAO,CAAC,iBAAiB,EAAE,CAAC;SAC/B;QAED,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,UAAU,EAAE;YACtC,OAAO,CAAC,QAAQ,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;YACrC,OAAO,CAAC,iBAAiB,EAAE,CAAC;SAC/B;QAED,WAAW;QACX,IAAI,OAAO,CAAC,iBAAiB,EAAE;YAC3B,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;YACzB,IAAI,KAAK,CAAC,eAAe,EAAE;gBACvB,IAAI,IAAI,CAAC,eAAe,IAAI,aAAa,CAAC,qBAAqB,EAAE;oBAC7D,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE;wBACjC,OAAO,KAAK,CAAC;qBAChB;yBAAM;wBACH,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;wBACxB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;qBAC1B;iBACJ;aACJ;SACJ;QAED,cAAc,CAAC,qBAAqB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAEjG,kDAAkD;QAClD,cAAc,CAAC,iCAAiC,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC;QAEpG,qBAAqB;QACrB,IAAI,OAAO,CAAC,OAAO,EAAE;YACjB,OAAO,CAAC,eAAe,EAAE,CAAC;YAC1B,KAAK,CAAC,mBAAmB,EAAE,CAAC;YAE5B,aAAa;YACb,cAAc,CAAC,2BAA2B,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YACxE,MAAM,OAAO,GAAG,CAAC,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;YAErE,IAAI,OAAO,CAAC,GAAG,EAAE;gBACb,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;aACrC;YACD,IAAI,OAAO,CAAC,GAAG,EAAE;gBACb,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;aACtC;YAED,OAAO,CAAC,0BAA0B,GAAG,KAAK,CAAC,4BAA4B,CAAC,kBAAkB,CAAC;YAE3F,cAAc,CAAC,6BAA6B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAE/D,UAAU;YACV,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YAChC,OAAO,CAAC,SAAS,CACb,KAAK;iBACA,SAAS,EAAE;iBACX,YAAY,CACT,MAAM,EACN,OAAO,EACP;gBACI,YAAY;gBACZ,WAAW;gBACX,WAAW;gBACX,aAAa;gBACb,YAAY;gBACZ,WAAW;gBACX,WAAW;gBACX,OAAO;gBACP,MAAM;gBACN,eAAe;gBACf,eAAe;gBACf,YAAY;aACf,EACD,CAAC,gBAAgB,CAAC,EAClB,IAAI,EACJ,SAAS,EACT,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,OAAO,CACf,EACL,OAAO,EACP,IAAI,CAAC,gBAAgB,CACxB,CAAC;SACL;QAED,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE;YAC9C,OAAO,KAAK,CAAC;SAChB;QAED,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACxC,OAAO,CAAC,MAAM,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAC1C,OAAO,CAAC,MAAM,CAAC,4BAA4B,GAAG,CAAC,CAAC,YAAY,CAAC;QAE7D,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,cAAc,CAAC,KAAa,EAAE,IAAU,EAAE,OAAgB;QAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAE9B,MAAM,OAAO,GAAwB,OAAO,CAAC,eAAe,CAAC;QAC7D,IAAI,CAAC,OAAO,EAAE;YACV,OAAO;SACV;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,EAAE;YACT,OAAO;SACV;QACD,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAE5B,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAE3D,WAAW;QACX,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,aAAa,EAAE;YAC7C,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;SACnC;QACD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC;QAExE,WAAW;QACX,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE;YACjC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1D,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAE1D,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAE7D,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;YACrC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC1D,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC;YAC/C,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;YACnC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAEhE,IAAI,IAAI,CAAC,eAAe,IAAI,aAAa,CAAC,qBAAqB,EAAE;gBAC7D,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,gBAAgB,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;gBACtE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;gBACjH,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC,CAAC;aAC1F;SACJ;QACD,MAAM;QACN,cAAc,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAElE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACI,OAAO,CAAC,kBAA4B;QACvC,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;IAEM,KAAK,CAAC,IAAY;QACrB,OAAO,mBAAmB,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IAC1F,CAAC;IAEM,SAAS;QACZ,MAAM,mBAAmB,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAC9C,mBAAmB,CAAC,UAAU,GAAG,sBAAsB,CAAC;QACxD,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAEM,YAAY;QACf,OAAO,cAAc,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,MAAW,EAAE,KAAY,EAAE,OAAe;QAC1D,OAAO,mBAAmB,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACzG,CAAC;CACJ;AA3QG;IADC,iBAAiB,EAAE;+CACc;AAMlC;IADC,iBAAiB,EAAE;+CACa;AAMjC;IADC,SAAS,EAAE;+CACW;AAMvB;IADC,kBAAkB,EAAE;gDACc;AAMnC;IADC,SAAS,EAAE;wDACmB;AAM/B;IADC,SAAS,EAAE;yDACsB;AAMlC;IADC,SAAS,EAAE;6CACS;AAMrB;IADC,SAAS,EAAE;sDACoB;AAMhC;IADC,SAAS,EAAE;gDACc;AAG1B;IADC,kBAAkB,CAAC,gBAAgB,CAAC;qDACA;AAErC;IADC,gBAAgB,CAAC,kCAAkC,CAAC;oDAClB;AAwNvC,aAAa,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { serializeAsTexture, serialize, expandToProperty, serializeAsColor3, SerializationHelper, serializeAsVector3 } from \"core/Misc/decorators\";\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 { MaterialHelper } from \"core/Materials/materialHelper\";\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\n\r\nclass GridMaterialDefines extends MaterialDefines {\r\n public OPACITY = 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\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 * 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 @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 needAlphaBlending(): boolean {\r\n return this.opacity < 1.0 || (this._opacityTexture && this._opacityTexture.isReady());\r\n }\r\n\r\n public needAlphaBlendingForMesh(mesh: AbstractMesh): boolean {\r\n return mesh.visibility < 1.0 || this.needAlphaBlending();\r\n }\r\n\r\n public isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean {\r\n if (this.isFrozen) {\r\n if (subMesh.effect && subMesh.effect._wasPreviouslyReady && subMesh.effect._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 // 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 MaterialHelper.PrepareDefinesForMisc(mesh, scene, false, false, this.fogEnabled, false, defines);\r\n\r\n // Values that need to be evaluated on every frame\r\n MaterialHelper.PrepareDefinesForFrameBoundValues(scene, scene.getEngine(), 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 MaterialHelper.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 MaterialHelper.PrepareAttributesForInstances(attribs, defines);\r\n\r\n // Defines\r\n const join = defines.toString();\r\n subMesh.setEffect(\r\n scene\r\n .getEngine()\r\n .createEffect(\r\n \"grid\",\r\n attribs,\r\n [\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 ],\r\n [\"opacitySampler\"],\r\n join,\r\n undefined,\r\n this.onCompiled,\r\n this.onError\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 subMesh.effect._wasPreviouslyReady = true;\r\n subMesh.effect._wasPreviouslyUsingInstances = !!useInstances;\r\n\r\n return true;\r\n }\r\n\r\n public 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._activeEffect.setMatrix(\"view\", scene.getViewMatrix());\r\n this._activeEffect.setMatrix(\"projection\", scene.getProjectionMatrix());\r\n\r\n // Uniforms\r\n if (this._mustRebind(scene, effect)) {\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 // Fog\r\n MaterialHelper.BindFogParameters(scene, mesh, this._activeEffect);\r\n\r\n this._afterBind(mesh, this._activeEffect);\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 dispose(forceDisposeEffect?: boolean): void {\r\n super.dispose(forceDisposeEffect);\r\n }\r\n\r\n public clone(name: string): GridMaterial {\r\n return SerializationHelper.Clone(() => new GridMaterial(name, this.getScene()), this);\r\n }\r\n\r\n public 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 getClassName(): string {\r\n return \"GridMaterial\";\r\n }\r\n\r\n public static 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/lava/lava.fragment.js
CHANGED
@@ -12,10 +12,69 @@ import "@babylonjs/core/Shaders/ShadersInclude/depthPrePass.js";
|
|
12
12
|
import "@babylonjs/core/Shaders/ShadersInclude/lightFragment.js";
|
13
13
|
import "@babylonjs/core/Shaders/ShadersInclude/fogFragment.js";
|
14
14
|
import "@babylonjs/core/Shaders/ShadersInclude/imageProcessingCompatibility.js";
|
15
|
-
|
16
|
-
|
15
|
+
const name = "lavaPixelShader";
|
16
|
+
const shader = `precision highp float;uniform vec4 vEyePosition;uniform vec4 vDiffuseColor;varying vec3 vPositionW;uniform float time;uniform float speed;uniform float movingSpeed;uniform vec3 fogColor;uniform sampler2D noiseTexture;uniform float fogDensity;varying float noise;
|
17
|
+
#ifdef NORMAL
|
18
|
+
varying vec3 vNormalW;
|
19
|
+
#endif
|
20
|
+
#ifdef VERTEXCOLOR
|
21
|
+
varying vec4 vColor;
|
22
|
+
#endif
|
23
|
+
#include<helperFunctions>
|
24
|
+
#include<__decl__lightFragment>[0]
|
25
|
+
#include<__decl__lightFragment>[1]
|
26
|
+
#include<__decl__lightFragment>[2]
|
27
|
+
#include<__decl__lightFragment>[3]
|
28
|
+
#include<lightsFragmentFunctions>
|
29
|
+
#include<shadowsFragmentFunctions>
|
30
|
+
#ifdef DIFFUSE
|
31
|
+
varying vec2 vDiffuseUV;uniform sampler2D diffuseSampler;uniform vec2 vDiffuseInfos;
|
32
|
+
#endif
|
33
|
+
#include<clipPlaneFragmentDeclaration>
|
34
|
+
#include<fogFragmentDeclaration>
|
35
|
+
float random( vec3 scale,float seed ){return fract( sin( dot( gl_FragCoord.xyz+seed,scale ) )*43758.5453+seed ) ;}
|
36
|
+
#define CUSTOM_FRAGMENT_DEFINITIONS
|
37
|
+
void main(void) {
|
38
|
+
#define CUSTOM_FRAGMENT_MAIN_BEGIN
|
39
|
+
#include<clipPlaneFragment>
|
40
|
+
vec3 viewDirectionW=normalize(vEyePosition.xyz-vPositionW);vec4 baseColor=vec4(1.,1.,1.,1.);vec3 diffuseColor=vDiffuseColor.rgb;float alpha=vDiffuseColor.a;
|
41
|
+
#ifdef DIFFUSE
|
42
|
+
vec4 noiseTex=texture2D( noiseTexture,vDiffuseUV );vec2 T1=vDiffuseUV+vec2( 1.5,-1.5 )*time *0.02;vec2 T2=vDiffuseUV+vec2( -0.5,2.0 )*time*0.01*speed;T1.x+=noiseTex.x*2.0;T1.y+=noiseTex.y*2.0;T2.x-=noiseTex.y*0.2+time*0.001*movingSpeed;T2.y+=noiseTex.z*0.2+time*0.002*movingSpeed;float p=texture2D( noiseTexture,T1*3.0 ).a;vec4 lavaColor=texture2D( diffuseSampler,T2*4.0);vec4 temp=lavaColor*( vec4( p,p,p,p )*2. )+( lavaColor*lavaColor-0.1 );baseColor=temp;float depth=gl_FragCoord.z*4.0;const float LOG2=1.442695;float fogFactor=exp2(-fogDensity*fogDensity*depth*depth*LOG2 );fogFactor=1.0-clamp( fogFactor,0.0,1.0 );baseColor=mix( baseColor,vec4( fogColor,baseColor.w ),fogFactor );diffuseColor=baseColor.rgb;
|
43
|
+
#ifdef ALPHATEST
|
44
|
+
if (baseColor.a<0.4)
|
45
|
+
discard;
|
46
|
+
#endif
|
47
|
+
#include<depthPrePass>
|
48
|
+
baseColor.rgb*=vDiffuseInfos.y;
|
49
|
+
#endif
|
50
|
+
#ifdef VERTEXCOLOR
|
51
|
+
baseColor.rgb*=vColor.rgb;
|
52
|
+
#endif
|
53
|
+
#ifdef NORMAL
|
54
|
+
vec3 normalW=normalize(vNormalW);
|
55
|
+
#else
|
56
|
+
vec3 normalW=vec3(1.0,1.0,1.0);
|
57
|
+
#endif
|
58
|
+
#ifdef UNLIT
|
59
|
+
vec3 diffuseBase=vec3(1.,1.,1.);
|
60
|
+
#else
|
61
|
+
vec3 diffuseBase=vec3(0.,0.,0.);lightingInfo info;float shadow=1.;float glossiness=0.;
|
62
|
+
#include<lightFragment>[0]
|
63
|
+
#include<lightFragment>[1]
|
64
|
+
#include<lightFragment>[2]
|
65
|
+
#include<lightFragment>[3]
|
66
|
+
#endif
|
67
|
+
#if defined(VERTEXALPHA) || defined(INSTANCESCOLOR)
|
68
|
+
alpha*=vColor.a;
|
69
|
+
#endif
|
70
|
+
vec3 finalDiffuse=clamp(diffuseBase*diffuseColor,0.0,1.0)*baseColor.rgb;vec4 color=vec4(finalDiffuse,alpha);
|
71
|
+
#include<fogFragment>
|
72
|
+
gl_FragColor=color;
|
73
|
+
#include<imageProcessingCompatibility>
|
74
|
+
#define CUSTOM_FRAGMENT_MAIN_END
|
75
|
+
}`;
|
17
76
|
// Sideeffect
|
18
77
|
ShaderStore.ShadersStore[name] = shader;
|
19
78
|
/** @hidden */
|
20
|
-
export
|
79
|
+
export const lavaPixelShader = { name, shader };
|
21
80
|
//# sourceMappingURL=lava.fragment.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"lava.fragment.js","sourceRoot":"","sources":["../../../../../lts/materials/generated/lava/lava.fragment.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,+CAAiC;AACvD,mEAAqD;AACrD,4EAA8D;AAC9D,uEAAyD;AACzD,2EAA6D;AAC7D,4EAA8D;AAC9D,gFAAkE;AAClE,0EAA4D;AAC5D,qEAAuD;AACvD,gEAAkD;AAClD,iEAAmD;AACnD,+DAAiD;AACjD,gFAAkE;AAElE,
|
1
|
+
{"version":3,"file":"lava.fragment.js","sourceRoot":"","sources":["../../../../../lts/materials/generated/lava/lava.fragment.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,+CAAiC;AACvD,mEAAqD;AACrD,4EAA8D;AAC9D,uEAAyD;AACzD,2EAA6D;AAC7D,4EAA8D;AAC9D,gFAAkE;AAClE,0EAA4D;AAC5D,qEAAuD;AACvD,gEAAkD;AAClD,iEAAmD;AACnD,+DAAiD;AACjD,gFAAkE;AAElE,MAAM,IAAI,GAAG,iBAAiB,CAAC;AAC/B,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2Db,CAAC;AACH,aAAa;AACb,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACxC,cAAc;AACd,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/helperFunctions\";\nimport \"core/Shaders/ShadersInclude/lightFragmentDeclaration\";\nimport \"core/Shaders/ShadersInclude/lightUboDeclaration\";\nimport \"core/Shaders/ShadersInclude/lightsFragmentFunctions\";\nimport \"core/Shaders/ShadersInclude/shadowsFragmentFunctions\";\nimport \"core/Shaders/ShadersInclude/clipPlaneFragmentDeclaration\";\nimport \"core/Shaders/ShadersInclude/fogFragmentDeclaration\";\nimport \"core/Shaders/ShadersInclude/clipPlaneFragment\";\nimport \"core/Shaders/ShadersInclude/depthPrePass\";\nimport \"core/Shaders/ShadersInclude/lightFragment\";\nimport \"core/Shaders/ShadersInclude/fogFragment\";\nimport \"core/Shaders/ShadersInclude/imageProcessingCompatibility\";\n\nconst name = \"lavaPixelShader\";\nconst shader = `precision highp float;uniform vec4 vEyePosition;uniform vec4 vDiffuseColor;varying vec3 vPositionW;uniform float time;uniform float speed;uniform float movingSpeed;uniform vec3 fogColor;uniform sampler2D noiseTexture;uniform float fogDensity;varying float noise;\n#ifdef NORMAL\nvarying vec3 vNormalW;\n#endif\n#ifdef VERTEXCOLOR\nvarying vec4 vColor;\n#endif\n#include<helperFunctions>\n#include<__decl__lightFragment>[0]\n#include<__decl__lightFragment>[1]\n#include<__decl__lightFragment>[2]\n#include<__decl__lightFragment>[3]\n#include<lightsFragmentFunctions>\n#include<shadowsFragmentFunctions>\n#ifdef DIFFUSE\nvarying vec2 vDiffuseUV;uniform sampler2D diffuseSampler;uniform vec2 vDiffuseInfos;\n#endif\n#include<clipPlaneFragmentDeclaration>\n#include<fogFragmentDeclaration>\nfloat random( vec3 scale,float seed ){return fract( sin( dot( gl_FragCoord.xyz+seed,scale ) )*43758.5453+seed ) ;}\n#define CUSTOM_FRAGMENT_DEFINITIONS\nvoid main(void) {\n#define CUSTOM_FRAGMENT_MAIN_BEGIN\n#include<clipPlaneFragment>\nvec3 viewDirectionW=normalize(vEyePosition.xyz-vPositionW);vec4 baseColor=vec4(1.,1.,1.,1.);vec3 diffuseColor=vDiffuseColor.rgb;float alpha=vDiffuseColor.a;\n#ifdef DIFFUSE\nvec4 noiseTex=texture2D( noiseTexture,vDiffuseUV );vec2 T1=vDiffuseUV+vec2( 1.5,-1.5 )*time *0.02;vec2 T2=vDiffuseUV+vec2( -0.5,2.0 )*time*0.01*speed;T1.x+=noiseTex.x*2.0;T1.y+=noiseTex.y*2.0;T2.x-=noiseTex.y*0.2+time*0.001*movingSpeed;T2.y+=noiseTex.z*0.2+time*0.002*movingSpeed;float p=texture2D( noiseTexture,T1*3.0 ).a;vec4 lavaColor=texture2D( diffuseSampler,T2*4.0);vec4 temp=lavaColor*( vec4( p,p,p,p )*2. )+( lavaColor*lavaColor-0.1 );baseColor=temp;float depth=gl_FragCoord.z*4.0;const float LOG2=1.442695;float fogFactor=exp2(-fogDensity*fogDensity*depth*depth*LOG2 );fogFactor=1.0-clamp( fogFactor,0.0,1.0 );baseColor=mix( baseColor,vec4( fogColor,baseColor.w ),fogFactor );diffuseColor=baseColor.rgb;\n#ifdef ALPHATEST\nif (baseColor.a<0.4)\ndiscard;\n#endif\n#include<depthPrePass>\nbaseColor.rgb*=vDiffuseInfos.y;\n#endif\n#ifdef VERTEXCOLOR\nbaseColor.rgb*=vColor.rgb;\n#endif\n#ifdef NORMAL\nvec3 normalW=normalize(vNormalW);\n#else\nvec3 normalW=vec3(1.0,1.0,1.0);\n#endif\n#ifdef UNLIT\nvec3 diffuseBase=vec3(1.,1.,1.);\n#else\nvec3 diffuseBase=vec3(0.,0.,0.);lightingInfo info;float shadow=1.;float glossiness=0.;\n#include<lightFragment>[0]\n#include<lightFragment>[1]\n#include<lightFragment>[2]\n#include<lightFragment>[3]\n#endif\n#if defined(VERTEXALPHA) || defined(INSTANCESCOLOR)\nalpha*=vColor.a;\n#endif\nvec3 finalDiffuse=clamp(diffuseBase*diffuseColor,0.0,1.0)*baseColor.rgb;vec4 color=vec4(finalDiffuse,alpha);\n#include<fogFragment>\ngl_FragColor=color;\n#include<imageProcessingCompatibility>\n#define CUSTOM_FRAGMENT_MAIN_END\n}`;\n// Sideeffect\nShaderStore.ShadersStore[name] = shader;\n/** @hidden */\nexport const lavaPixelShader = { name, shader };\n"]}
|
package/lava/lava.vertex.js
CHANGED
@@ -14,10 +14,91 @@ import "@babylonjs/core/Shaders/ShadersInclude/clipPlaneVertex.js";
|
|
14
14
|
import "@babylonjs/core/Shaders/ShadersInclude/fogVertex.js";
|
15
15
|
import "@babylonjs/core/Shaders/ShadersInclude/shadowsVertex.js";
|
16
16
|
import "@babylonjs/core/Shaders/ShadersInclude/vertexColorMixing.js";
|
17
|
-
|
18
|
-
|
17
|
+
const name = "lavaVertexShader";
|
18
|
+
const shader = `precision highp float;uniform float time;uniform float lowFrequencySpeed;varying float noise;attribute vec3 position;
|
19
|
+
#ifdef NORMAL
|
20
|
+
attribute vec3 normal;
|
21
|
+
#endif
|
22
|
+
#ifdef UV1
|
23
|
+
attribute vec2 uv;
|
24
|
+
#endif
|
25
|
+
#ifdef UV2
|
26
|
+
attribute vec2 uv2;
|
27
|
+
#endif
|
28
|
+
#ifdef VERTEXCOLOR
|
29
|
+
attribute vec4 color;
|
30
|
+
#endif
|
31
|
+
#include<bonesDeclaration>
|
32
|
+
#include<bakedVertexAnimationDeclaration>
|
33
|
+
#include<instancesDeclaration>
|
34
|
+
uniform mat4 view;uniform mat4 viewProjection;
|
35
|
+
#ifdef DIFFUSE
|
36
|
+
varying vec2 vDiffuseUV;uniform mat4 diffuseMatrix;uniform vec2 vDiffuseInfos;
|
37
|
+
#endif
|
38
|
+
#ifdef POINTSIZE
|
39
|
+
uniform float pointSize;
|
40
|
+
#endif
|
41
|
+
varying vec3 vPositionW;
|
42
|
+
#ifdef NORMAL
|
43
|
+
varying vec3 vNormalW;
|
44
|
+
#endif
|
45
|
+
#ifdef VERTEXCOLOR
|
46
|
+
varying vec4 vColor;
|
47
|
+
#endif
|
48
|
+
#include<clipPlaneVertexDeclaration>
|
49
|
+
#include<fogVertexDeclaration>
|
50
|
+
#include<__decl__lightFragment>[0..maxSimultaneousLights]
|
51
|
+
/* NOISE FUNCTIONS */
|
52
|
+
vec3 mod289(vec3 x)
|
53
|
+
{return x-floor(x*(1.0/289.0))*289.0;}
|
54
|
+
vec4 mod289(vec4 x)
|
55
|
+
{return x-floor(x*(1.0/289.0))*289.0;}
|
56
|
+
vec4 permute(vec4 x)
|
57
|
+
{return mod289(((x*34.0)+1.0)*x);}
|
58
|
+
vec4 taylorInvSqrt(vec4 r)
|
59
|
+
{return 1.79284291400159-0.85373472095314*r;}
|
60
|
+
vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}
|
61
|
+
float pnoise(vec3 P,vec3 rep)
|
62
|
+
{vec3 Pi0=mod(floor(P),rep);
|
63
|
+
vec3 Pi1=mod(Pi0+vec3(1.0),rep);
|
64
|
+
Pi0=mod289(Pi0);Pi1=mod289(Pi1);vec3 Pf0=fract(P);
|
65
|
+
vec3 Pf1=Pf0-vec3(1.0);
|
66
|
+
vec4 ix=vec4(Pi0.x,Pi1.x,Pi0.x,Pi1.x);vec4 iy=vec4(Pi0.yy,Pi1.yy);vec4 iz0=Pi0.zzzz;vec4 iz1=Pi1.zzzz;vec4 ixy=permute(permute(ix)+iy);vec4 ixy0=permute(ixy+iz0);vec4 ixy1=permute(ixy+iz1);vec4 gx0=ixy0*(1.0/7.0);vec4 gy0=fract(floor(gx0)*(1.0/7.0))-0.5;gx0=fract(gx0);vec4 gz0=vec4(0.5)-abs(gx0)-abs(gy0);vec4 sz0=step(gz0,vec4(0.0));gx0-=sz0*(step(0.0,gx0)-0.5);gy0-=sz0*(step(0.0,gy0)-0.5);vec4 gx1=ixy1*(1.0/7.0);vec4 gy1=fract(floor(gx1)*(1.0/7.0))-0.5;gx1=fract(gx1);vec4 gz1=vec4(0.5)-abs(gx1)-abs(gy1);vec4 sz1=step(gz1,vec4(0.0));gx1-=sz1*(step(0.0,gx1)-0.5);gy1-=sz1*(step(0.0,gy1)-0.5);vec3 g000=vec3(gx0.x,gy0.x,gz0.x);vec3 g100=vec3(gx0.y,gy0.y,gz0.y);vec3 g010=vec3(gx0.z,gy0.z,gz0.z);vec3 g110=vec3(gx0.w,gy0.w,gz0.w);vec3 g001=vec3(gx1.x,gy1.x,gz1.x);vec3 g101=vec3(gx1.y,gy1.y,gz1.y);vec3 g011=vec3(gx1.z,gy1.z,gz1.z);vec3 g111=vec3(gx1.w,gy1.w,gz1.w);vec4 norm0=taylorInvSqrt(vec4(dot(g000,g000),dot(g010,g010),dot(g100,g100),dot(g110,g110)));g000*=norm0.x;g010*=norm0.y;g100*=norm0.z;g110*=norm0.w;vec4 norm1=taylorInvSqrt(vec4(dot(g001,g001),dot(g011,g011),dot(g101,g101),dot(g111,g111)));g001*=norm1.x;g011*=norm1.y;g101*=norm1.z;g111*=norm1.w;float n000=dot(g000,Pf0);float n100=dot(g100,vec3(Pf1.x,Pf0.yz));float n010=dot(g010,vec3(Pf0.x,Pf1.y,Pf0.z));float n110=dot(g110,vec3(Pf1.xy,Pf0.z));float n001=dot(g001,vec3(Pf0.xy,Pf1.z));float n101=dot(g101,vec3(Pf1.x,Pf0.y,Pf1.z));float n011=dot(g011,vec3(Pf0.x,Pf1.yz));float n111=dot(g111,Pf1);vec3 fade_xyz=fade(Pf0);vec4 n_z=mix(vec4(n000,n100,n010,n110),vec4(n001,n101,n011,n111),fade_xyz.z);vec2 n_yz=mix(n_z.xy,n_z.zw,fade_xyz.y);float n_xyz=mix(n_yz.x,n_yz.y,fade_xyz.x);return 2.2*n_xyz;}
|
67
|
+
/* END FUNCTION */
|
68
|
+
float turbulence( vec3 p ) {float w=100.0;float t=-.5;for (float f=1.0 ; f<=10.0 ; f++ ){float power=pow( 2.0,f );t+=abs( pnoise( vec3( power*p ),vec3( 10.0,10.0,10.0 ) )/power );}
|
69
|
+
return t;}
|
70
|
+
#define CUSTOM_VERTEX_DEFINITIONS
|
71
|
+
void main(void) {
|
72
|
+
#define CUSTOM_VERTEX_MAIN_BEGIN
|
73
|
+
#include<instancesVertex>
|
74
|
+
#include<bonesVertex>
|
75
|
+
#include<bakedVertexAnimation>
|
76
|
+
#ifdef NORMAL
|
77
|
+
noise=10.0* -.10*turbulence( .5*normal+time*1.15 );float b=lowFrequencySpeed*5.0*pnoise( 0.05*position +vec3(time*1.025),vec3( 100.0 ) );float displacement=- 1.5*noise+b;vec3 newPosition=position+normal*displacement;gl_Position=viewProjection*finalWorld*vec4( newPosition,1.0 );vec4 worldPos=finalWorld*vec4(newPosition,1.0);vPositionW=vec3(worldPos);vNormalW=normalize(vec3(finalWorld*vec4(normal,0.0)));
|
78
|
+
#endif
|
79
|
+
#ifndef UV1
|
80
|
+
vec2 uv=vec2(0.,0.);
|
81
|
+
#endif
|
82
|
+
#ifndef UV2
|
83
|
+
vec2 uv2=vec2(0.,0.);
|
84
|
+
#endif
|
85
|
+
#ifdef DIFFUSE
|
86
|
+
if (vDiffuseInfos.x==0.)
|
87
|
+
{vDiffuseUV=vec2(diffuseMatrix*vec4(uv,1.0,0.0));}
|
88
|
+
else
|
89
|
+
{vDiffuseUV=vec2(diffuseMatrix*vec4(uv2,1.0,0.0));}
|
90
|
+
#endif
|
91
|
+
#include<clipPlaneVertex>
|
92
|
+
#include<fogVertex>
|
93
|
+
#include<shadowsVertex>[0..maxSimultaneousLights]
|
94
|
+
#include<vertexColorMixing>
|
95
|
+
#if defined(POINTSIZE) && !defined(WEBGPU)
|
96
|
+
gl_PointSize=pointSize;
|
97
|
+
#endif
|
98
|
+
#define CUSTOM_VERTEX_MAIN_END
|
99
|
+
}`;
|
19
100
|
// Sideeffect
|
20
101
|
ShaderStore.ShadersStore[name] = shader;
|
21
102
|
/** @hidden */
|
22
|
-
export
|
103
|
+
export const lavaVertexShader = { name, shader };
|
23
104
|
//# sourceMappingURL=lava.vertex.js.map
|
package/lava/lava.vertex.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"lava.vertex.js","sourceRoot":"","sources":["../../../../../lts/materials/generated/lava/lava.vertex.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,+CAAiC;AACvD,oEAAsD;AACtD,mFAAqE;AACrE,wEAA0D;AAC1D,8EAAgE;AAChE,wEAA0D;AAC1D,4EAA8D;AAC9D,uEAAyD;AACzD,mEAAqD;AACrD,+DAAiD;AACjD,wEAA0D;AAC1D,mEAAqD;AACrD,6DAA+C;AAC/C,iEAAmD;AACnD,qEAAuD;AAEvD,
|
1
|
+
{"version":3,"file":"lava.vertex.js","sourceRoot":"","sources":["../../../../../lts/materials/generated/lava/lava.vertex.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,+CAAiC;AACvD,oEAAsD;AACtD,mFAAqE;AACrE,wEAA0D;AAC1D,8EAAgE;AAChE,wEAA0D;AAC1D,4EAA8D;AAC9D,uEAAyD;AACzD,mEAAqD;AACrD,+DAAiD;AACjD,wEAA0D;AAC1D,mEAAqD;AACrD,6DAA+C;AAC/C,iEAAmD;AACnD,qEAAuD;AAEvD,MAAM,IAAI,GAAG,kBAAkB,CAAC;AAChC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiFb,CAAC;AACH,aAAa;AACb,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACxC,cAAc;AACd,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/bonesDeclaration\";\nimport \"core/Shaders/ShadersInclude/bakedVertexAnimationDeclaration\";\nimport \"core/Shaders/ShadersInclude/instancesDeclaration\";\nimport \"core/Shaders/ShadersInclude/clipPlaneVertexDeclaration\";\nimport \"core/Shaders/ShadersInclude/fogVertexDeclaration\";\nimport \"core/Shaders/ShadersInclude/lightFragmentDeclaration\";\nimport \"core/Shaders/ShadersInclude/lightUboDeclaration\";\nimport \"core/Shaders/ShadersInclude/instancesVertex\";\nimport \"core/Shaders/ShadersInclude/bonesVertex\";\nimport \"core/Shaders/ShadersInclude/bakedVertexAnimation\";\nimport \"core/Shaders/ShadersInclude/clipPlaneVertex\";\nimport \"core/Shaders/ShadersInclude/fogVertex\";\nimport \"core/Shaders/ShadersInclude/shadowsVertex\";\nimport \"core/Shaders/ShadersInclude/vertexColorMixing\";\n\nconst name = \"lavaVertexShader\";\nconst shader = `precision highp float;uniform float time;uniform float lowFrequencySpeed;varying float noise;attribute vec3 position;\n#ifdef NORMAL\nattribute vec3 normal;\n#endif\n#ifdef UV1\nattribute vec2 uv;\n#endif\n#ifdef UV2\nattribute vec2 uv2;\n#endif\n#ifdef VERTEXCOLOR\nattribute vec4 color;\n#endif\n#include<bonesDeclaration>\n#include<bakedVertexAnimationDeclaration>\n#include<instancesDeclaration>\nuniform mat4 view;uniform mat4 viewProjection;\n#ifdef DIFFUSE\nvarying vec2 vDiffuseUV;uniform mat4 diffuseMatrix;uniform vec2 vDiffuseInfos;\n#endif\n#ifdef POINTSIZE\nuniform float pointSize;\n#endif\nvarying vec3 vPositionW;\n#ifdef NORMAL\nvarying vec3 vNormalW;\n#endif\n#ifdef VERTEXCOLOR\nvarying vec4 vColor;\n#endif\n#include<clipPlaneVertexDeclaration>\n#include<fogVertexDeclaration>\n#include<__decl__lightFragment>[0..maxSimultaneousLights]\n/* NOISE FUNCTIONS */\nvec3 mod289(vec3 x)\n{return x-floor(x*(1.0/289.0))*289.0;}\nvec4 mod289(vec4 x)\n{return x-floor(x*(1.0/289.0))*289.0;}\nvec4 permute(vec4 x)\n{return mod289(((x*34.0)+1.0)*x);}\nvec4 taylorInvSqrt(vec4 r)\n{return 1.79284291400159-0.85373472095314*r;}\nvec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}\nfloat pnoise(vec3 P,vec3 rep)\n{vec3 Pi0=mod(floor(P),rep); \nvec3 Pi1=mod(Pi0+vec3(1.0),rep); \nPi0=mod289(Pi0);Pi1=mod289(Pi1);vec3 Pf0=fract(P); \nvec3 Pf1=Pf0-vec3(1.0); \nvec4 ix=vec4(Pi0.x,Pi1.x,Pi0.x,Pi1.x);vec4 iy=vec4(Pi0.yy,Pi1.yy);vec4 iz0=Pi0.zzzz;vec4 iz1=Pi1.zzzz;vec4 ixy=permute(permute(ix)+iy);vec4 ixy0=permute(ixy+iz0);vec4 ixy1=permute(ixy+iz1);vec4 gx0=ixy0*(1.0/7.0);vec4 gy0=fract(floor(gx0)*(1.0/7.0))-0.5;gx0=fract(gx0);vec4 gz0=vec4(0.5)-abs(gx0)-abs(gy0);vec4 sz0=step(gz0,vec4(0.0));gx0-=sz0*(step(0.0,gx0)-0.5);gy0-=sz0*(step(0.0,gy0)-0.5);vec4 gx1=ixy1*(1.0/7.0);vec4 gy1=fract(floor(gx1)*(1.0/7.0))-0.5;gx1=fract(gx1);vec4 gz1=vec4(0.5)-abs(gx1)-abs(gy1);vec4 sz1=step(gz1,vec4(0.0));gx1-=sz1*(step(0.0,gx1)-0.5);gy1-=sz1*(step(0.0,gy1)-0.5);vec3 g000=vec3(gx0.x,gy0.x,gz0.x);vec3 g100=vec3(gx0.y,gy0.y,gz0.y);vec3 g010=vec3(gx0.z,gy0.z,gz0.z);vec3 g110=vec3(gx0.w,gy0.w,gz0.w);vec3 g001=vec3(gx1.x,gy1.x,gz1.x);vec3 g101=vec3(gx1.y,gy1.y,gz1.y);vec3 g011=vec3(gx1.z,gy1.z,gz1.z);vec3 g111=vec3(gx1.w,gy1.w,gz1.w);vec4 norm0=taylorInvSqrt(vec4(dot(g000,g000),dot(g010,g010),dot(g100,g100),dot(g110,g110)));g000*=norm0.x;g010*=norm0.y;g100*=norm0.z;g110*=norm0.w;vec4 norm1=taylorInvSqrt(vec4(dot(g001,g001),dot(g011,g011),dot(g101,g101),dot(g111,g111)));g001*=norm1.x;g011*=norm1.y;g101*=norm1.z;g111*=norm1.w;float n000=dot(g000,Pf0);float n100=dot(g100,vec3(Pf1.x,Pf0.yz));float n010=dot(g010,vec3(Pf0.x,Pf1.y,Pf0.z));float n110=dot(g110,vec3(Pf1.xy,Pf0.z));float n001=dot(g001,vec3(Pf0.xy,Pf1.z));float n101=dot(g101,vec3(Pf1.x,Pf0.y,Pf1.z));float n011=dot(g011,vec3(Pf0.x,Pf1.yz));float n111=dot(g111,Pf1);vec3 fade_xyz=fade(Pf0);vec4 n_z=mix(vec4(n000,n100,n010,n110),vec4(n001,n101,n011,n111),fade_xyz.z);vec2 n_yz=mix(n_z.xy,n_z.zw,fade_xyz.y);float n_xyz=mix(n_yz.x,n_yz.y,fade_xyz.x);return 2.2*n_xyz;}\n/* END FUNCTION */\nfloat turbulence( vec3 p ) {float w=100.0;float t=-.5;for (float f=1.0 ; f<=10.0 ; f++ ){float power=pow( 2.0,f );t+=abs( pnoise( vec3( power*p ),vec3( 10.0,10.0,10.0 ) )/power );}\nreturn t;}\n#define CUSTOM_VERTEX_DEFINITIONS\nvoid main(void) {\n#define CUSTOM_VERTEX_MAIN_BEGIN\n#include<instancesVertex>\n#include<bonesVertex>\n#include<bakedVertexAnimation>\n#ifdef NORMAL\nnoise=10.0* -.10*turbulence( .5*normal+time*1.15 );float b=lowFrequencySpeed*5.0*pnoise( 0.05*position +vec3(time*1.025),vec3( 100.0 ) );float displacement=- 1.5*noise+b;vec3 newPosition=position+normal*displacement;gl_Position=viewProjection*finalWorld*vec4( newPosition,1.0 );vec4 worldPos=finalWorld*vec4(newPosition,1.0);vPositionW=vec3(worldPos);vNormalW=normalize(vec3(finalWorld*vec4(normal,0.0)));\n#endif\n#ifndef UV1\nvec2 uv=vec2(0.,0.);\n#endif\n#ifndef UV2\nvec2 uv2=vec2(0.,0.);\n#endif\n#ifdef DIFFUSE\nif (vDiffuseInfos.x==0.)\n{vDiffuseUV=vec2(diffuseMatrix*vec4(uv,1.0,0.0));}\nelse\n{vDiffuseUV=vec2(diffuseMatrix*vec4(uv2,1.0,0.0));}\n#endif\n#include<clipPlaneVertex>\n#include<fogVertex>\n#include<shadowsVertex>[0..maxSimultaneousLights]\n#include<vertexColorMixing>\n#if defined(POINTSIZE) && !defined(WEBGPU)\ngl_PointSize=pointSize;\n#endif\n#define CUSTOM_VERTEX_MAIN_END\n}`;\n// Sideeffect\nShaderStore.ShadersStore[name] = shader;\n/** @hidden */\nexport const lavaVertexShader = { name, shader };\n"]}
|