@babylonjs/materials 5.0.0-rc.7 → 5.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cell/cell.fragment.d.ts +17 -17
- package/cell/cell.fragment.js +20 -20
- package/cell/cell.vertex.d.ts +18 -18
- package/cell/cell.vertex.js +21 -21
- package/cell/cellMaterial.d.ts +37 -37
- package/cell/cellMaterial.js +304 -304
- package/cell/cellMaterial.js.map +1 -1
- package/cell/index.d.ts +1 -1
- package/cell/index.js +1 -1
- package/custom/customMaterial.d.ts +69 -69
- package/custom/customMaterial.js +216 -216
- package/custom/customMaterial.js.map +1 -1
- package/custom/index.d.ts +2 -2
- package/custom/index.js +2 -2
- package/custom/pbrCustomMaterial.d.ts +71 -71
- package/custom/pbrCustomMaterial.js +241 -241
- package/custom/pbrCustomMaterial.js.map +1 -1
- package/fire/fire.fragment.d.ts +11 -11
- package/fire/fire.fragment.js +14 -14
- package/fire/fire.vertex.d.ts +15 -15
- package/fire/fire.vertex.js +18 -18
- package/fire/fireMaterial.d.ts +38 -38
- package/fire/fireMaterial.js +342 -342
- package/fire/fireMaterial.js.map +1 -1
- package/fire/index.d.ts +1 -1
- package/fire/index.js +1 -1
- package/fur/fur.fragment.d.ts +17 -17
- package/fur/fur.fragment.js +20 -20
- package/fur/fur.vertex.d.ts +18 -18
- package/fur/fur.vertex.js +21 -21
- package/fur/furMaterial.d.ts +57 -56
- package/fur/furMaterial.js +500 -500
- package/fur/furMaterial.js.map +1 -1
- package/fur/index.d.ts +1 -1
- package/fur/index.js +1 -1
- package/gradient/gradient.fragment.d.ts +17 -17
- package/gradient/gradient.fragment.js +20 -20
- package/gradient/gradient.vertex.d.ts +18 -18
- package/gradient/gradient.vertex.js +21 -21
- package/gradient/gradientMaterial.d.ts +37 -37
- package/gradient/gradientMaterial.js +275 -275
- package/gradient/gradientMaterial.js.map +1 -1
- package/gradient/index.d.ts +1 -1
- package/gradient/index.js +1 -1
- package/grid/grid.fragment.d.ts +8 -8
- package/grid/grid.fragment.js +11 -11
- package/grid/grid.vertex.d.ts +9 -9
- package/grid/grid.vertex.js +12 -12
- package/grid/gridMaterial.d.ts +78 -77
- package/grid/gridMaterial.js +276 -276
- package/grid/gridMaterial.js.map +1 -1
- package/grid/index.d.ts +1 -1
- package/grid/index.js +1 -1
- package/index.d.ts +15 -15
- package/index.js +16 -15
- package/index.js.map +1 -1
- package/lava/index.d.ts +1 -1
- package/lava/index.js +1 -1
- package/lava/lava.fragment.d.ts +17 -17
- package/lava/lava.fragment.js +20 -20
- package/lava/lava.vertex.d.ts +18 -18
- package/lava/lava.vertex.js +21 -21
- package/lava/lavaMaterial.d.ts +45 -45
- package/lava/lavaMaterial.js +394 -394
- package/lava/lavaMaterial.js.map +1 -1
- package/legacy/legacy-cell.d.ts +1 -1
- package/legacy/legacy-cell.js +13 -12
- package/legacy/legacy-cell.js.map +1 -1
- package/legacy/legacy-custom.d.ts +1 -1
- package/legacy/legacy-custom.js +13 -12
- package/legacy/legacy-custom.js.map +1 -1
- package/legacy/legacy-fire.d.ts +1 -1
- package/legacy/legacy-fire.js +13 -12
- package/legacy/legacy-fire.js.map +1 -1
- package/legacy/legacy-fur.d.ts +1 -1
- package/legacy/legacy-fur.js +13 -12
- package/legacy/legacy-fur.js.map +1 -1
- package/legacy/legacy-gradient.d.ts +1 -1
- package/legacy/legacy-gradient.js +13 -12
- package/legacy/legacy-gradient.js.map +1 -1
- package/legacy/legacy-grid.d.ts +1 -1
- package/legacy/legacy-grid.js +13 -12
- package/legacy/legacy-grid.js.map +1 -1
- package/legacy/legacy-lava.d.ts +1 -1
- package/legacy/legacy-lava.js +13 -12
- package/legacy/legacy-lava.js.map +1 -1
- package/legacy/legacy-mix.d.ts +1 -1
- package/legacy/legacy-mix.js +13 -12
- package/legacy/legacy-mix.js.map +1 -1
- package/legacy/legacy-normal.d.ts +1 -1
- package/legacy/legacy-normal.js +13 -12
- package/legacy/legacy-normal.js.map +1 -1
- package/legacy/legacy-shadowOnly.d.ts +1 -1
- package/legacy/legacy-shadowOnly.js +13 -12
- package/legacy/legacy-shadowOnly.js.map +1 -1
- package/legacy/legacy-simple.d.ts +1 -1
- package/legacy/legacy-simple.js +13 -12
- package/legacy/legacy-simple.js.map +1 -1
- package/legacy/legacy-sky.d.ts +1 -1
- package/legacy/legacy-sky.js +13 -12
- package/legacy/legacy-sky.js.map +1 -1
- package/legacy/legacy-terrain.d.ts +1 -1
- package/legacy/legacy-terrain.js +13 -12
- package/legacy/legacy-terrain.js.map +1 -1
- package/legacy/legacy-triPlanar.d.ts +1 -1
- package/legacy/legacy-triPlanar.js +13 -12
- package/legacy/legacy-triPlanar.js.map +1 -1
- package/legacy/legacy-water.d.ts +1 -1
- package/legacy/legacy-water.js +13 -12
- package/legacy/legacy-water.js.map +1 -1
- package/legacy/legacy.d.ts +1 -1
- package/legacy/legacy.js +16 -15
- package/legacy/legacy.js.map +1 -1
- package/license.md +71 -0
- package/mix/index.d.ts +1 -1
- package/mix/index.js +1 -1
- package/mix/mix.fragment.d.ts +17 -17
- package/mix/mix.fragment.js +20 -20
- package/mix/mix.vertex.d.ts +18 -18
- package/mix/mix.vertex.js +21 -21
- package/mix/mixMaterial.d.ts +65 -65
- package/mix/mixMaterial.js +510 -510
- package/mix/mixMaterial.js.map +1 -1
- package/normal/index.d.ts +1 -1
- package/normal/index.js +1 -1
- package/normal/normal.fragment.d.ts +17 -17
- package/normal/normal.fragment.js +20 -20
- package/normal/normal.vertex.d.ts +18 -18
- package/normal/normal.vertex.js +21 -21
- package/normal/normalMaterial.d.ts +36 -36
- package/normal/normalMaterial.js +336 -336
- package/normal/normalMaterial.js.map +1 -1
- package/package.json +24 -5
- package/shadowOnly/index.d.ts +1 -1
- package/shadowOnly/index.js +1 -1
- package/shadowOnly/shadowOnly.fragment.d.ts +16 -16
- package/shadowOnly/shadowOnly.fragment.js +19 -19
- package/shadowOnly/shadowOnly.vertex.d.ts +18 -18
- package/shadowOnly/shadowOnly.vertex.js +21 -21
- package/shadowOnly/shadowOnlyMaterial.d.ts +30 -30
- package/shadowOnly/shadowOnlyMaterial.js +254 -254
- package/shadowOnly/shadowOnlyMaterial.js.map +1 -1
- package/simple/index.d.ts +1 -1
- package/simple/index.js +1 -1
- package/simple/simple.fragment.d.ts +17 -17
- package/simple/simple.fragment.js +20 -20
- package/simple/simple.vertex.d.ts +18 -18
- package/simple/simple.vertex.js +21 -21
- package/simple/simpleMaterial.d.ts +35 -35
- package/simple/simpleMaterial.js +295 -295
- package/simple/simpleMaterial.js.map +1 -1
- package/sky/index.d.ts +1 -1
- package/sky/index.js +1 -1
- package/sky/sky.fragment.d.ts +10 -10
- package/sky/sky.fragment.js +13 -13
- package/sky/sky.vertex.d.ts +9 -9
- package/sky/sky.vertex.js +12 -12
- package/sky/skyMaterial.d.ts +147 -146
- package/sky/skyMaterial.js +359 -359
- package/sky/skyMaterial.js.map +1 -1
- package/terrain/index.d.ts +1 -1
- package/terrain/index.js +1 -1
- package/terrain/terrain.fragment.d.ts +17 -17
- package/terrain/terrain.fragment.js +20 -20
- package/terrain/terrain.vertex.d.ts +18 -18
- package/terrain/terrain.vertex.js +21 -21
- package/terrain/terrainMaterial.d.ts +50 -50
- package/terrain/terrainMaterial.js +426 -426
- package/terrain/terrainMaterial.js.map +1 -1
- package/triPlanar/index.d.ts +1 -1
- package/triPlanar/index.js +1 -1
- package/triPlanar/triPlanarMaterial.d.ts +49 -49
- package/triPlanar/triPlanarMaterial.js +403 -403
- package/triPlanar/triPlanarMaterial.js.map +1 -1
- package/triPlanar/triplanar.fragment.d.ts +17 -17
- package/triPlanar/triplanar.fragment.js +20 -20
- package/triPlanar/triplanar.vertex.d.ts +18 -18
- package/triPlanar/triplanar.vertex.js +21 -21
- package/water/index.d.ts +1 -1
- package/water/index.js +1 -1
- package/water/water.fragment.d.ts +19 -19
- package/water/water.fragment.js +22 -22
- package/water/water.vertex.d.ts +20 -20
- package/water/water.vertex.js +23 -23
- package/water/waterMaterial.d.ts +135 -135
- package/water/waterMaterial.js +736 -736
- package/water/waterMaterial.js.map +1 -1
package/grid/gridMaterial.js
CHANGED
@@ -1,277 +1,277 @@
|
|
1
|
-
import { __decorate, __extends } from "tslib";
|
2
|
-
/* eslint-disable @typescript-eslint/naming-convention */
|
3
|
-
import { serializeAsTexture, serialize, expandToProperty, serializeAsColor3, SerializationHelper, serializeAsVector3 } from "@babylonjs/core/Misc/decorators.js";
|
4
|
-
import { Vector4, Vector3 } from "@babylonjs/core/Maths/math.vector.js";
|
5
|
-
import { Color3 } from "@babylonjs/core/Maths/math.color.js";
|
6
|
-
import { MaterialDefines } from "@babylonjs/core/Materials/materialDefines.js";
|
7
|
-
import { MaterialHelper } from "@babylonjs/core/Materials/materialHelper.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
|
-
var GridMaterialDefines = /** @class */ (function (_super) {
|
15
|
-
__extends(GridMaterialDefines, _super);
|
16
|
-
function GridMaterialDefines() {
|
17
|
-
var _this = _super.call(this) || this;
|
18
|
-
_this.OPACITY = false;
|
19
|
-
_this.TRANSPARENT = false;
|
20
|
-
_this.FOG = false;
|
21
|
-
_this.PREMULTIPLYALPHA = false;
|
22
|
-
_this.MAX_LINE = false;
|
23
|
-
_this.UV1 = false;
|
24
|
-
_this.UV2 = false;
|
25
|
-
_this.INSTANCES = false;
|
26
|
-
_this.THIN_INSTANCES = false;
|
27
|
-
_this.IMAGEPROCESSINGPOSTPROCESS = false;
|
28
|
-
_this.SKIPFINALCOLORCLAMP = false;
|
29
|
-
_this.rebuild();
|
30
|
-
return _this;
|
31
|
-
}
|
32
|
-
return GridMaterialDefines;
|
33
|
-
}(MaterialDefines));
|
34
|
-
/**
|
35
|
-
* The grid materials allows you to wrap any shape with a grid.
|
36
|
-
* Colors are customizable.
|
37
|
-
*/
|
38
|
-
var GridMaterial = /** @class */ (function (_super) {
|
39
|
-
__extends(GridMaterial, _super);
|
40
|
-
/**
|
41
|
-
* constructor
|
42
|
-
* @param name The name given to the material in order to identify it afterwards.
|
43
|
-
* @param scene The scene the material is used in.
|
44
|
-
*/
|
45
|
-
function GridMaterial(name, scene) {
|
46
|
-
var _this = _super.call(this, name, scene) || this;
|
47
|
-
/**
|
48
|
-
* Main color of the grid (e.g. between lines)
|
49
|
-
*/
|
50
|
-
_this.mainColor = Color3.Black();
|
51
|
-
/**
|
52
|
-
* Color of the grid lines.
|
53
|
-
*/
|
54
|
-
_this.lineColor = Color3.Teal();
|
55
|
-
/**
|
56
|
-
* The scale of the grid compared to unit.
|
57
|
-
*/
|
58
|
-
_this.gridRatio = 1.0;
|
59
|
-
/**
|
60
|
-
* Allows setting an offset for the grid lines.
|
61
|
-
*/
|
62
|
-
_this.gridOffset = Vector3.Zero();
|
63
|
-
/**
|
64
|
-
* The frequency of thicker lines.
|
65
|
-
*/
|
66
|
-
_this.majorUnitFrequency = 10;
|
67
|
-
/**
|
68
|
-
* The visibility of minor units in the grid.
|
69
|
-
*/
|
70
|
-
_this.minorUnitVisibility = 0.33;
|
71
|
-
/**
|
72
|
-
* The grid opacity outside of the lines.
|
73
|
-
*/
|
74
|
-
_this.opacity = 1.0;
|
75
|
-
/**
|
76
|
-
* Determine RBG output is premultiplied by alpha value.
|
77
|
-
*/
|
78
|
-
_this.preMultiplyAlpha = false;
|
79
|
-
/**
|
80
|
-
* Determines if the max line value will be used instead of the sum wherever grid lines intersect.
|
81
|
-
*/
|
82
|
-
_this.useMaxLine = false;
|
83
|
-
_this._gridControl = new Vector4(_this.gridRatio, _this.majorUnitFrequency, _this.minorUnitVisibility, _this.opacity);
|
84
|
-
return _this;
|
85
|
-
}
|
86
|
-
/**
|
87
|
-
* Returns whether or not the grid requires alpha blending.
|
88
|
-
*/
|
89
|
-
GridMaterial.prototype.needAlphaBlending = function () {
|
90
|
-
return this.opacity < 1.0 || (this._opacityTexture && this._opacityTexture.isReady());
|
91
|
-
};
|
92
|
-
GridMaterial.prototype.needAlphaBlendingForMesh = function (mesh) {
|
93
|
-
return mesh.visibility < 1.0 || this.needAlphaBlending();
|
94
|
-
};
|
95
|
-
GridMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
|
96
|
-
if (this.isFrozen) {
|
97
|
-
if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
|
98
|
-
return true;
|
99
|
-
}
|
100
|
-
}
|
101
|
-
if (!subMesh.materialDefines) {
|
102
|
-
subMesh.materialDefines = new GridMaterialDefines();
|
103
|
-
}
|
104
|
-
var defines = subMesh.materialDefines;
|
105
|
-
var scene = this.getScene();
|
106
|
-
if (this._isReadyForSubMesh(subMesh)) {
|
107
|
-
return true;
|
108
|
-
}
|
109
|
-
if (defines.TRANSPARENT !== this.opacity < 1.0) {
|
110
|
-
defines.TRANSPARENT = !defines.TRANSPARENT;
|
111
|
-
defines.markAsUnprocessed();
|
112
|
-
}
|
113
|
-
if (defines.PREMULTIPLYALPHA != this.preMultiplyAlpha) {
|
114
|
-
defines.PREMULTIPLYALPHA = !defines.PREMULTIPLYALPHA;
|
115
|
-
defines.markAsUnprocessed();
|
116
|
-
}
|
117
|
-
if (defines.MAX_LINE !== this.useMaxLine) {
|
118
|
-
defines.MAX_LINE = !defines.MAX_LINE;
|
119
|
-
defines.markAsUnprocessed();
|
120
|
-
}
|
121
|
-
// Textures
|
122
|
-
if (defines._areTexturesDirty) {
|
123
|
-
defines._needUVs = false;
|
124
|
-
if (scene.texturesEnabled) {
|
125
|
-
if (this._opacityTexture && MaterialFlags.OpacityTextureEnabled) {
|
126
|
-
if (!this._opacityTexture.isReady()) {
|
127
|
-
return false;
|
128
|
-
}
|
129
|
-
else {
|
130
|
-
defines._needUVs = true;
|
131
|
-
defines.OPACITY = true;
|
132
|
-
}
|
133
|
-
}
|
134
|
-
}
|
135
|
-
}
|
136
|
-
MaterialHelper.PrepareDefinesForMisc(mesh, scene, false, false, this.fogEnabled, false, defines);
|
137
|
-
// Values that need to be evaluated on every frame
|
138
|
-
MaterialHelper.PrepareDefinesForFrameBoundValues(scene, scene.getEngine(), defines, !!useInstances);
|
139
|
-
// Get correct effect
|
140
|
-
if (defines.isDirty) {
|
141
|
-
defines.markAsProcessed();
|
142
|
-
scene.resetCachedMaterial();
|
143
|
-
// Attributes
|
144
|
-
MaterialHelper.PrepareDefinesForAttributes(mesh, defines, false, false);
|
145
|
-
var attribs = [VertexBuffer.PositionKind, VertexBuffer.NormalKind];
|
146
|
-
if (defines.UV1) {
|
147
|
-
attribs.push(VertexBuffer.UVKind);
|
148
|
-
}
|
149
|
-
if (defines.UV2) {
|
150
|
-
attribs.push(VertexBuffer.UV2Kind);
|
151
|
-
}
|
152
|
-
defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;
|
153
|
-
MaterialHelper.PrepareAttributesForInstances(attribs, defines);
|
154
|
-
// Defines
|
155
|
-
var join = defines.toString();
|
156
|
-
subMesh.setEffect(scene
|
157
|
-
.getEngine()
|
158
|
-
.createEffect("grid", attribs, [
|
159
|
-
"projection",
|
160
|
-
"mainColor",
|
161
|
-
"lineColor",
|
162
|
-
"gridControl",
|
163
|
-
"gridOffset",
|
164
|
-
"vFogInfos",
|
165
|
-
"vFogColor",
|
166
|
-
"world",
|
167
|
-
"view",
|
168
|
-
"opacityMatrix",
|
169
|
-
"vOpacityInfos",
|
170
|
-
"visibility",
|
171
|
-
], ["opacitySampler"], join, undefined, this.onCompiled, this.onError), defines, this._materialContext);
|
172
|
-
}
|
173
|
-
if (!subMesh.effect || !subMesh.effect.isReady()) {
|
174
|
-
return false;
|
175
|
-
}
|
176
|
-
defines._renderId = scene.getRenderId();
|
177
|
-
subMesh.effect._wasPreviouslyReady = true;
|
178
|
-
return true;
|
179
|
-
};
|
180
|
-
GridMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {
|
181
|
-
var scene = this.getScene();
|
182
|
-
var defines = subMesh.materialDefines;
|
183
|
-
if (!defines) {
|
184
|
-
return;
|
185
|
-
}
|
186
|
-
var effect = subMesh.effect;
|
187
|
-
if (!effect) {
|
188
|
-
return;
|
189
|
-
}
|
190
|
-
this._activeEffect = effect;
|
191
|
-
this._activeEffect.setFloat("visibility", mesh.visibility);
|
192
|
-
// Matrices
|
193
|
-
if (!defines.INSTANCES || defines.THIN_INSTANCE) {
|
194
|
-
this.bindOnlyWorldMatrix(world);
|
195
|
-
}
|
196
|
-
this._activeEffect.setMatrix("view", scene.getViewMatrix());
|
197
|
-
this._activeEffect.setMatrix("projection", scene.getProjectionMatrix());
|
198
|
-
// Uniforms
|
199
|
-
if (this._mustRebind(scene, effect)) {
|
200
|
-
this._activeEffect.setColor3("mainColor", this.mainColor);
|
201
|
-
this._activeEffect.setColor3("lineColor", this.lineColor);
|
202
|
-
this._activeEffect.setVector3("gridOffset", this.gridOffset);
|
203
|
-
this._gridControl.x = this.gridRatio;
|
204
|
-
this._gridControl.y = Math.round(this.majorUnitFrequency);
|
205
|
-
this._gridControl.z = this.minorUnitVisibility;
|
206
|
-
this._gridControl.w = this.opacity;
|
207
|
-
this._activeEffect.setVector4("gridControl", this._gridControl);
|
208
|
-
if (this._opacityTexture && MaterialFlags.OpacityTextureEnabled) {
|
209
|
-
this._activeEffect.setTexture("opacitySampler", this._opacityTexture);
|
210
|
-
this._activeEffect.setFloat2("vOpacityInfos", this._opacityTexture.coordinatesIndex, this._opacityTexture.level);
|
211
|
-
this._activeEffect.setMatrix("opacityMatrix", this._opacityTexture.getTextureMatrix());
|
212
|
-
}
|
213
|
-
}
|
214
|
-
// Fog
|
215
|
-
MaterialHelper.BindFogParameters(scene, mesh, this._activeEffect);
|
216
|
-
this._afterBind(mesh, this._activeEffect);
|
217
|
-
};
|
218
|
-
/**
|
219
|
-
* Dispose the material and its associated resources.
|
220
|
-
* @param forceDisposeEffect will also dispose the used effect when true
|
221
|
-
*/
|
222
|
-
GridMaterial.prototype.dispose = function (forceDisposeEffect) {
|
223
|
-
_super.prototype.dispose.call(this, forceDisposeEffect);
|
224
|
-
};
|
225
|
-
GridMaterial.prototype.clone = function (name) {
|
226
|
-
var _this = this;
|
227
|
-
return SerializationHelper.Clone(function () { return new GridMaterial(name, _this.getScene()); }, this);
|
228
|
-
};
|
229
|
-
GridMaterial.prototype.serialize = function () {
|
230
|
-
var serializationObject = SerializationHelper.Serialize(this);
|
231
|
-
serializationObject.customType = "BABYLON.GridMaterial";
|
232
|
-
return serializationObject;
|
233
|
-
};
|
234
|
-
GridMaterial.prototype.getClassName = function () {
|
235
|
-
return "GridMaterial";
|
236
|
-
};
|
237
|
-
GridMaterial.Parse = function (source, scene, rootUrl) {
|
238
|
-
return SerializationHelper.Parse(function () { return new GridMaterial(source.name, scene); }, source, scene, rootUrl);
|
239
|
-
};
|
240
|
-
__decorate([
|
241
|
-
serializeAsColor3()
|
242
|
-
], GridMaterial.prototype, "mainColor", void 0);
|
243
|
-
__decorate([
|
244
|
-
serializeAsColor3()
|
245
|
-
], GridMaterial.prototype, "lineColor", void 0);
|
246
|
-
__decorate([
|
247
|
-
serialize()
|
248
|
-
], GridMaterial.prototype, "gridRatio", void 0);
|
249
|
-
__decorate([
|
250
|
-
serializeAsVector3()
|
251
|
-
], GridMaterial.prototype, "gridOffset", void 0);
|
252
|
-
__decorate([
|
253
|
-
serialize()
|
254
|
-
], GridMaterial.prototype, "majorUnitFrequency", void 0);
|
255
|
-
__decorate([
|
256
|
-
serialize()
|
257
|
-
], GridMaterial.prototype, "minorUnitVisibility", void 0);
|
258
|
-
__decorate([
|
259
|
-
serialize()
|
260
|
-
], GridMaterial.prototype, "opacity", void 0);
|
261
|
-
__decorate([
|
262
|
-
serialize()
|
263
|
-
], GridMaterial.prototype, "preMultiplyAlpha", void 0);
|
264
|
-
__decorate([
|
265
|
-
serialize()
|
266
|
-
], GridMaterial.prototype, "useMaxLine", void 0);
|
267
|
-
__decorate([
|
268
|
-
serializeAsTexture("opacityTexture")
|
269
|
-
], GridMaterial.prototype, "_opacityTexture", void 0);
|
270
|
-
__decorate([
|
271
|
-
expandToProperty("_markAllSubMeshesAsTexturesDirty")
|
272
|
-
], GridMaterial.prototype, "opacityTexture", void 0);
|
273
|
-
return GridMaterial;
|
274
|
-
}(PushMaterial));
|
275
|
-
export { GridMaterial };
|
276
|
-
RegisterClass("BABYLON.GridMaterial", GridMaterial);
|
1
|
+
import { __decorate, __extends } from "tslib";
|
2
|
+
/* eslint-disable @typescript-eslint/naming-convention */
|
3
|
+
import { serializeAsTexture, serialize, expandToProperty, serializeAsColor3, SerializationHelper, serializeAsVector3 } from "@babylonjs/core/Misc/decorators.js";
|
4
|
+
import { Vector4, Vector3 } from "@babylonjs/core/Maths/math.vector.js";
|
5
|
+
import { Color3 } from "@babylonjs/core/Maths/math.color.js";
|
6
|
+
import { MaterialDefines } from "@babylonjs/core/Materials/materialDefines.js";
|
7
|
+
import { MaterialHelper } from "@babylonjs/core/Materials/materialHelper.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
|
+
var GridMaterialDefines = /** @class */ (function (_super) {
|
15
|
+
__extends(GridMaterialDefines, _super);
|
16
|
+
function GridMaterialDefines() {
|
17
|
+
var _this = _super.call(this) || this;
|
18
|
+
_this.OPACITY = false;
|
19
|
+
_this.TRANSPARENT = false;
|
20
|
+
_this.FOG = false;
|
21
|
+
_this.PREMULTIPLYALPHA = false;
|
22
|
+
_this.MAX_LINE = false;
|
23
|
+
_this.UV1 = false;
|
24
|
+
_this.UV2 = false;
|
25
|
+
_this.INSTANCES = false;
|
26
|
+
_this.THIN_INSTANCES = false;
|
27
|
+
_this.IMAGEPROCESSINGPOSTPROCESS = false;
|
28
|
+
_this.SKIPFINALCOLORCLAMP = false;
|
29
|
+
_this.rebuild();
|
30
|
+
return _this;
|
31
|
+
}
|
32
|
+
return GridMaterialDefines;
|
33
|
+
}(MaterialDefines));
|
34
|
+
/**
|
35
|
+
* The grid materials allows you to wrap any shape with a grid.
|
36
|
+
* Colors are customizable.
|
37
|
+
*/
|
38
|
+
var GridMaterial = /** @class */ (function (_super) {
|
39
|
+
__extends(GridMaterial, _super);
|
40
|
+
/**
|
41
|
+
* constructor
|
42
|
+
* @param name The name given to the material in order to identify it afterwards.
|
43
|
+
* @param scene The scene the material is used in.
|
44
|
+
*/
|
45
|
+
function GridMaterial(name, scene) {
|
46
|
+
var _this = _super.call(this, name, scene) || this;
|
47
|
+
/**
|
48
|
+
* Main color of the grid (e.g. between lines)
|
49
|
+
*/
|
50
|
+
_this.mainColor = Color3.Black();
|
51
|
+
/**
|
52
|
+
* Color of the grid lines.
|
53
|
+
*/
|
54
|
+
_this.lineColor = Color3.Teal();
|
55
|
+
/**
|
56
|
+
* The scale of the grid compared to unit.
|
57
|
+
*/
|
58
|
+
_this.gridRatio = 1.0;
|
59
|
+
/**
|
60
|
+
* Allows setting an offset for the grid lines.
|
61
|
+
*/
|
62
|
+
_this.gridOffset = Vector3.Zero();
|
63
|
+
/**
|
64
|
+
* The frequency of thicker lines.
|
65
|
+
*/
|
66
|
+
_this.majorUnitFrequency = 10;
|
67
|
+
/**
|
68
|
+
* The visibility of minor units in the grid.
|
69
|
+
*/
|
70
|
+
_this.minorUnitVisibility = 0.33;
|
71
|
+
/**
|
72
|
+
* The grid opacity outside of the lines.
|
73
|
+
*/
|
74
|
+
_this.opacity = 1.0;
|
75
|
+
/**
|
76
|
+
* Determine RBG output is premultiplied by alpha value.
|
77
|
+
*/
|
78
|
+
_this.preMultiplyAlpha = false;
|
79
|
+
/**
|
80
|
+
* Determines if the max line value will be used instead of the sum wherever grid lines intersect.
|
81
|
+
*/
|
82
|
+
_this.useMaxLine = false;
|
83
|
+
_this._gridControl = new Vector4(_this.gridRatio, _this.majorUnitFrequency, _this.minorUnitVisibility, _this.opacity);
|
84
|
+
return _this;
|
85
|
+
}
|
86
|
+
/**
|
87
|
+
* Returns whether or not the grid requires alpha blending.
|
88
|
+
*/
|
89
|
+
GridMaterial.prototype.needAlphaBlending = function () {
|
90
|
+
return this.opacity < 1.0 || (this._opacityTexture && this._opacityTexture.isReady());
|
91
|
+
};
|
92
|
+
GridMaterial.prototype.needAlphaBlendingForMesh = function (mesh) {
|
93
|
+
return mesh.visibility < 1.0 || this.needAlphaBlending();
|
94
|
+
};
|
95
|
+
GridMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
|
96
|
+
if (this.isFrozen) {
|
97
|
+
if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
|
98
|
+
return true;
|
99
|
+
}
|
100
|
+
}
|
101
|
+
if (!subMesh.materialDefines) {
|
102
|
+
subMesh.materialDefines = new GridMaterialDefines();
|
103
|
+
}
|
104
|
+
var defines = subMesh.materialDefines;
|
105
|
+
var scene = this.getScene();
|
106
|
+
if (this._isReadyForSubMesh(subMesh)) {
|
107
|
+
return true;
|
108
|
+
}
|
109
|
+
if (defines.TRANSPARENT !== this.opacity < 1.0) {
|
110
|
+
defines.TRANSPARENT = !defines.TRANSPARENT;
|
111
|
+
defines.markAsUnprocessed();
|
112
|
+
}
|
113
|
+
if (defines.PREMULTIPLYALPHA != this.preMultiplyAlpha) {
|
114
|
+
defines.PREMULTIPLYALPHA = !defines.PREMULTIPLYALPHA;
|
115
|
+
defines.markAsUnprocessed();
|
116
|
+
}
|
117
|
+
if (defines.MAX_LINE !== this.useMaxLine) {
|
118
|
+
defines.MAX_LINE = !defines.MAX_LINE;
|
119
|
+
defines.markAsUnprocessed();
|
120
|
+
}
|
121
|
+
// Textures
|
122
|
+
if (defines._areTexturesDirty) {
|
123
|
+
defines._needUVs = false;
|
124
|
+
if (scene.texturesEnabled) {
|
125
|
+
if (this._opacityTexture && MaterialFlags.OpacityTextureEnabled) {
|
126
|
+
if (!this._opacityTexture.isReady()) {
|
127
|
+
return false;
|
128
|
+
}
|
129
|
+
else {
|
130
|
+
defines._needUVs = true;
|
131
|
+
defines.OPACITY = true;
|
132
|
+
}
|
133
|
+
}
|
134
|
+
}
|
135
|
+
}
|
136
|
+
MaterialHelper.PrepareDefinesForMisc(mesh, scene, false, false, this.fogEnabled, false, defines);
|
137
|
+
// Values that need to be evaluated on every frame
|
138
|
+
MaterialHelper.PrepareDefinesForFrameBoundValues(scene, scene.getEngine(), defines, !!useInstances);
|
139
|
+
// Get correct effect
|
140
|
+
if (defines.isDirty) {
|
141
|
+
defines.markAsProcessed();
|
142
|
+
scene.resetCachedMaterial();
|
143
|
+
// Attributes
|
144
|
+
MaterialHelper.PrepareDefinesForAttributes(mesh, defines, false, false);
|
145
|
+
var attribs = [VertexBuffer.PositionKind, VertexBuffer.NormalKind];
|
146
|
+
if (defines.UV1) {
|
147
|
+
attribs.push(VertexBuffer.UVKind);
|
148
|
+
}
|
149
|
+
if (defines.UV2) {
|
150
|
+
attribs.push(VertexBuffer.UV2Kind);
|
151
|
+
}
|
152
|
+
defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;
|
153
|
+
MaterialHelper.PrepareAttributesForInstances(attribs, defines);
|
154
|
+
// Defines
|
155
|
+
var join = defines.toString();
|
156
|
+
subMesh.setEffect(scene
|
157
|
+
.getEngine()
|
158
|
+
.createEffect("grid", attribs, [
|
159
|
+
"projection",
|
160
|
+
"mainColor",
|
161
|
+
"lineColor",
|
162
|
+
"gridControl",
|
163
|
+
"gridOffset",
|
164
|
+
"vFogInfos",
|
165
|
+
"vFogColor",
|
166
|
+
"world",
|
167
|
+
"view",
|
168
|
+
"opacityMatrix",
|
169
|
+
"vOpacityInfos",
|
170
|
+
"visibility",
|
171
|
+
], ["opacitySampler"], join, undefined, this.onCompiled, this.onError), defines, this._materialContext);
|
172
|
+
}
|
173
|
+
if (!subMesh.effect || !subMesh.effect.isReady()) {
|
174
|
+
return false;
|
175
|
+
}
|
176
|
+
defines._renderId = scene.getRenderId();
|
177
|
+
subMesh.effect._wasPreviouslyReady = true;
|
178
|
+
return true;
|
179
|
+
};
|
180
|
+
GridMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {
|
181
|
+
var scene = this.getScene();
|
182
|
+
var defines = subMesh.materialDefines;
|
183
|
+
if (!defines) {
|
184
|
+
return;
|
185
|
+
}
|
186
|
+
var effect = subMesh.effect;
|
187
|
+
if (!effect) {
|
188
|
+
return;
|
189
|
+
}
|
190
|
+
this._activeEffect = effect;
|
191
|
+
this._activeEffect.setFloat("visibility", mesh.visibility);
|
192
|
+
// Matrices
|
193
|
+
if (!defines.INSTANCES || defines.THIN_INSTANCE) {
|
194
|
+
this.bindOnlyWorldMatrix(world);
|
195
|
+
}
|
196
|
+
this._activeEffect.setMatrix("view", scene.getViewMatrix());
|
197
|
+
this._activeEffect.setMatrix("projection", scene.getProjectionMatrix());
|
198
|
+
// Uniforms
|
199
|
+
if (this._mustRebind(scene, effect)) {
|
200
|
+
this._activeEffect.setColor3("mainColor", this.mainColor);
|
201
|
+
this._activeEffect.setColor3("lineColor", this.lineColor);
|
202
|
+
this._activeEffect.setVector3("gridOffset", this.gridOffset);
|
203
|
+
this._gridControl.x = this.gridRatio;
|
204
|
+
this._gridControl.y = Math.round(this.majorUnitFrequency);
|
205
|
+
this._gridControl.z = this.minorUnitVisibility;
|
206
|
+
this._gridControl.w = this.opacity;
|
207
|
+
this._activeEffect.setVector4("gridControl", this._gridControl);
|
208
|
+
if (this._opacityTexture && MaterialFlags.OpacityTextureEnabled) {
|
209
|
+
this._activeEffect.setTexture("opacitySampler", this._opacityTexture);
|
210
|
+
this._activeEffect.setFloat2("vOpacityInfos", this._opacityTexture.coordinatesIndex, this._opacityTexture.level);
|
211
|
+
this._activeEffect.setMatrix("opacityMatrix", this._opacityTexture.getTextureMatrix());
|
212
|
+
}
|
213
|
+
}
|
214
|
+
// Fog
|
215
|
+
MaterialHelper.BindFogParameters(scene, mesh, this._activeEffect);
|
216
|
+
this._afterBind(mesh, this._activeEffect);
|
217
|
+
};
|
218
|
+
/**
|
219
|
+
* Dispose the material and its associated resources.
|
220
|
+
* @param forceDisposeEffect will also dispose the used effect when true
|
221
|
+
*/
|
222
|
+
GridMaterial.prototype.dispose = function (forceDisposeEffect) {
|
223
|
+
_super.prototype.dispose.call(this, forceDisposeEffect);
|
224
|
+
};
|
225
|
+
GridMaterial.prototype.clone = function (name) {
|
226
|
+
var _this = this;
|
227
|
+
return SerializationHelper.Clone(function () { return new GridMaterial(name, _this.getScene()); }, this);
|
228
|
+
};
|
229
|
+
GridMaterial.prototype.serialize = function () {
|
230
|
+
var serializationObject = SerializationHelper.Serialize(this);
|
231
|
+
serializationObject.customType = "BABYLON.GridMaterial";
|
232
|
+
return serializationObject;
|
233
|
+
};
|
234
|
+
GridMaterial.prototype.getClassName = function () {
|
235
|
+
return "GridMaterial";
|
236
|
+
};
|
237
|
+
GridMaterial.Parse = function (source, scene, rootUrl) {
|
238
|
+
return SerializationHelper.Parse(function () { return new GridMaterial(source.name, scene); }, source, scene, rootUrl);
|
239
|
+
};
|
240
|
+
__decorate([
|
241
|
+
serializeAsColor3()
|
242
|
+
], GridMaterial.prototype, "mainColor", void 0);
|
243
|
+
__decorate([
|
244
|
+
serializeAsColor3()
|
245
|
+
], GridMaterial.prototype, "lineColor", void 0);
|
246
|
+
__decorate([
|
247
|
+
serialize()
|
248
|
+
], GridMaterial.prototype, "gridRatio", void 0);
|
249
|
+
__decorate([
|
250
|
+
serializeAsVector3()
|
251
|
+
], GridMaterial.prototype, "gridOffset", void 0);
|
252
|
+
__decorate([
|
253
|
+
serialize()
|
254
|
+
], GridMaterial.prototype, "majorUnitFrequency", void 0);
|
255
|
+
__decorate([
|
256
|
+
serialize()
|
257
|
+
], GridMaterial.prototype, "minorUnitVisibility", void 0);
|
258
|
+
__decorate([
|
259
|
+
serialize()
|
260
|
+
], GridMaterial.prototype, "opacity", void 0);
|
261
|
+
__decorate([
|
262
|
+
serialize()
|
263
|
+
], GridMaterial.prototype, "preMultiplyAlpha", void 0);
|
264
|
+
__decorate([
|
265
|
+
serialize()
|
266
|
+
], GridMaterial.prototype, "useMaxLine", void 0);
|
267
|
+
__decorate([
|
268
|
+
serializeAsTexture("opacityTexture")
|
269
|
+
], GridMaterial.prototype, "_opacityTexture", void 0);
|
270
|
+
__decorate([
|
271
|
+
expandToProperty("_markAllSubMeshesAsTexturesDirty")
|
272
|
+
], GridMaterial.prototype, "opacityTexture", void 0);
|
273
|
+
return GridMaterial;
|
274
|
+
}(PushMaterial));
|
275
|
+
export { GridMaterial };
|
276
|
+
RegisterClass("BABYLON.GridMaterial", GridMaterial);
|
277
277
|
//# 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 { Matrix, Vector4, Vector3 } from \"core/Maths/math.vector\";\r\nimport { Color3 } from \"core/Maths/math.color\";\r\nimport { 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 { AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport { SubMesh } from \"core/Meshes/subMesh\";\r\nimport { Mesh } from \"core/Meshes/mesh\";\r\nimport { 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) {\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\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 = SerializationHelper.Serialize(this);\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;IAAkC,uCAAe;IAa7C;QAAA,YACI,iBAAO,SAEV;QAfM,aAAO,GAAG,KAAK,CAAC;QAChB,iBAAW,GAAG,KAAK,CAAC;QACpB,SAAG,GAAG,KAAK,CAAC;QACZ,sBAAgB,GAAG,KAAK,CAAC;QACzB,cAAQ,GAAG,KAAK,CAAC;QACjB,SAAG,GAAG,KAAK,CAAC;QACZ,SAAG,GAAG,KAAK,CAAC;QACZ,eAAS,GAAG,KAAK,CAAC;QAClB,oBAAc,GAAG,KAAK,CAAC;QACvB,gCAA0B,GAAG,KAAK,CAAC;QACnC,yBAAmB,GAAG,KAAK,CAAC;QAI/B,KAAI,CAAC,OAAO,EAAE,CAAC;;IACnB,CAAC;IACL,0BAAC;AAAD,CAAC,AAjBD,CAAkC,eAAe,GAiBhD;AAED;;;GAGG;AACH;IAAkC,gCAAY;IA8D1C;;;;OAIG;IACH,sBAAY,IAAY,EAAE,KAAa;QAAvC,YACI,kBAAM,IAAI,EAAE,KAAK,CAAC,SACrB;QApED;;WAEG;QAEI,eAAS,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAElC;;WAEG;QAEI,eAAS,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAEjC;;WAEG;QAEI,eAAS,GAAG,GAAG,CAAC;QAEvB;;WAEG;QAEI,gBAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAEnC;;WAEG;QAEI,wBAAkB,GAAG,EAAE,CAAC;QAE/B;;WAEG;QAEI,yBAAmB,GAAG,IAAI,CAAC;QAElC;;WAEG;QAEI,aAAO,GAAG,GAAG,CAAC;QAErB;;WAEG;QAEI,sBAAgB,GAAG,KAAK,CAAC;QAEhC;;WAEG;QAEI,gBAAU,GAAG,KAAK,CAAC;QAOlB,kBAAY,GAAY,IAAI,OAAO,CAAC,KAAI,CAAC,SAAS,EAAE,KAAI,CAAC,kBAAkB,EAAE,KAAI,CAAC,mBAAmB,EAAE,KAAI,CAAC,OAAO,CAAC,CAAC;;IAS7H,CAAC;IAED;;OAEG;IACI,wCAAiB,GAAxB;QACI,OAAO,IAAI,CAAC,OAAO,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1F,CAAC;IAEM,+CAAwB,GAA/B,UAAgC,IAAkB;QAC9C,OAAO,IAAI,CAAC,UAAU,GAAG,GAAG,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC7D,CAAC;IAEM,wCAAiB,GAAxB,UAAyB,IAAkB,EAAE,OAAgB,EAAE,YAAsB;QACjF,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE;gBACtD,OAAO,IAAI,CAAC;aACf;SACJ;QAED,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;YAC1B,OAAO,CAAC,eAAe,GAAG,IAAI,mBAAmB,EAAE,CAAC;SACvD;QAED,IAAM,OAAO,GAAwB,OAAO,CAAC,eAAe,CAAC;QAC7D,IAAM,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,IAAM,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,IAAM,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;QAE1C,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,qCAAc,GAArB,UAAsB,KAAa,EAAE,IAAU,EAAE,OAAgB;QAC7D,IAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAE9B,IAAM,OAAO,GAAwB,OAAO,CAAC,eAAe,CAAC;QAC7D,IAAI,CAAC,OAAO,EAAE;YACV,OAAO;SACV;QAED,IAAM,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,8BAAO,GAAd,UAAe,kBAA4B;QACvC,iBAAM,OAAO,YAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;IAEM,4BAAK,GAAZ,UAAa,IAAY;QAAzB,iBAEC;QADG,OAAO,mBAAmB,CAAC,KAAK,CAAC,cAAM,OAAA,IAAI,YAAY,CAAC,IAAI,EAAE,KAAI,CAAC,QAAQ,EAAE,CAAC,EAAvC,CAAuC,EAAE,IAAI,CAAC,CAAC;IAC1F,CAAC;IAEM,gCAAS,GAAhB;QACI,IAAM,mBAAmB,GAAG,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAChE,mBAAmB,CAAC,UAAU,GAAG,sBAAsB,CAAC;QACxD,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAEM,mCAAY,GAAnB;QACI,OAAO,cAAc,CAAC;IAC1B,CAAC;IAEa,kBAAK,GAAnB,UAAoB,MAAW,EAAE,KAAY,EAAE,OAAe;QAC1D,OAAO,mBAAmB,CAAC,KAAK,CAAC,cAAM,OAAA,IAAI,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,EAApC,CAAoC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACzG,CAAC;IAzQD;QADC,iBAAiB,EAAE;mDACc;IAMlC;QADC,iBAAiB,EAAE;mDACa;IAMjC;QADC,SAAS,EAAE;mDACW;IAMvB;QADC,kBAAkB,EAAE;oDACc;IAMnC;QADC,SAAS,EAAE;4DACmB;IAM/B;QADC,SAAS,EAAE;6DACsB;IAMlC;QADC,SAAS,EAAE;iDACS;IAMrB;QADC,SAAS,EAAE;0DACoB;IAMhC;QADC,SAAS,EAAE;oDACc;IAG1B;QADC,kBAAkB,CAAC,gBAAgB,CAAC;yDACA;IAErC;QADC,gBAAgB,CAAC,kCAAkC,CAAC;wDAClB;IAqNvC,mBAAC;CAAA,AA/QD,CAAkC,YAAY,GA+Q7C;SA/QY,YAAY;AAiRzB,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) {\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\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 = SerializationHelper.Serialize(this);\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/grid/index.d.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export * from "./gridMaterial";
|
1
|
+
export * from "./gridMaterial";
|