@babylonjs/materials 5.0.0-rc.6 → 5.0.0
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
@@ -1,276 +1,276 @@
|
|
1
|
-
import { __decorate, __extends } from "tslib";
|
2
|
-
import { serialize, expandToProperty, serializeAsColor3, SerializationHelper } from "@babylonjs/core/Misc/decorators.js";
|
3
|
-
import { Color3 } from "@babylonjs/core/Maths/math.color.js";
|
4
|
-
import { MaterialDefines } from "@babylonjs/core/Materials/materialDefines.js";
|
5
|
-
import { MaterialHelper } from "@babylonjs/core/Materials/materialHelper.js";
|
6
|
-
import { PushMaterial } from "@babylonjs/core/Materials/pushMaterial.js";
|
7
|
-
import { VertexBuffer } from "@babylonjs/core/Buffers/buffer.js";
|
8
|
-
import { Scene } from "@babylonjs/core/scene.js";
|
9
|
-
import { RegisterClass } from "@babylonjs/core/Misc/typeStore.js";
|
10
|
-
import "./gradient.fragment.js";
|
11
|
-
import "./gradient.vertex.js";
|
12
|
-
import { EffectFallbacks } from "@babylonjs/core/Materials/effectFallbacks.js";
|
13
|
-
var GradientMaterialDefines = /** @class */ (function (_super) {
|
14
|
-
__extends(GradientMaterialDefines, _super);
|
15
|
-
function GradientMaterialDefines() {
|
16
|
-
var _this = _super.call(this) || this;
|
17
|
-
_this.EMISSIVE = false;
|
18
|
-
_this.CLIPPLANE = false;
|
19
|
-
_this.CLIPPLANE2 = false;
|
20
|
-
_this.CLIPPLANE3 = false;
|
21
|
-
_this.CLIPPLANE4 = false;
|
22
|
-
_this.CLIPPLANE5 = false;
|
23
|
-
_this.CLIPPLANE6 = false;
|
24
|
-
_this.ALPHATEST = false;
|
25
|
-
_this.DEPTHPREPASS = false;
|
26
|
-
_this.POINTSIZE = false;
|
27
|
-
_this.FOG = false;
|
28
|
-
_this.NORMAL = false;
|
29
|
-
_this.UV1 = false;
|
30
|
-
_this.UV2 = false;
|
31
|
-
_this.VERTEXCOLOR = false;
|
32
|
-
_this.VERTEXALPHA = false;
|
33
|
-
_this.NUM_BONE_INFLUENCERS = 0;
|
34
|
-
_this.BonesPerMesh = 0;
|
35
|
-
_this.INSTANCES = false;
|
36
|
-
_this.INSTANCESCOLOR = false;
|
37
|
-
_this.IMAGEPROCESSINGPOSTPROCESS = false;
|
38
|
-
_this.SKIPFINALCOLORCLAMP = false;
|
39
|
-
_this.rebuild();
|
40
|
-
return _this;
|
41
|
-
}
|
42
|
-
return GradientMaterialDefines;
|
43
|
-
}(MaterialDefines));
|
44
|
-
var GradientMaterial = /** @class */ (function (_super) {
|
45
|
-
__extends(GradientMaterial, _super);
|
46
|
-
function GradientMaterial(name, scene) {
|
47
|
-
var _this = _super.call(this, name, scene) || this;
|
48
|
-
_this._maxSimultaneousLights = 4;
|
49
|
-
// The gradient top color, red by default
|
50
|
-
_this.topColor = new Color3(1, 0, 0);
|
51
|
-
_this.topColorAlpha = 1.0;
|
52
|
-
// The gradient top color, blue by default
|
53
|
-
_this.bottomColor = new Color3(0, 0, 1);
|
54
|
-
_this.bottomColorAlpha = 1.0;
|
55
|
-
// Gradient offset
|
56
|
-
_this.offset = 0;
|
57
|
-
_this.scale = 1.0;
|
58
|
-
_this.smoothness = 1.0;
|
59
|
-
_this._disableLighting = false;
|
60
|
-
return _this;
|
61
|
-
}
|
62
|
-
GradientMaterial.prototype.needAlphaBlending = function () {
|
63
|
-
return this.alpha < 1.0 || this.topColorAlpha < 1.0 || this.bottomColorAlpha < 1.0;
|
64
|
-
};
|
65
|
-
GradientMaterial.prototype.needAlphaTesting = function () {
|
66
|
-
return true;
|
67
|
-
};
|
68
|
-
GradientMaterial.prototype.getAlphaTestTexture = function () {
|
69
|
-
return null;
|
70
|
-
};
|
71
|
-
// Methods
|
72
|
-
GradientMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
|
73
|
-
if (this.isFrozen) {
|
74
|
-
if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
|
75
|
-
return true;
|
76
|
-
}
|
77
|
-
}
|
78
|
-
if (!subMesh.materialDefines) {
|
79
|
-
subMesh.materialDefines = new GradientMaterialDefines();
|
80
|
-
}
|
81
|
-
var defines = subMesh.materialDefines;
|
82
|
-
var scene = this.getScene();
|
83
|
-
if (this._isReadyForSubMesh(subMesh)) {
|
84
|
-
return true;
|
85
|
-
}
|
86
|
-
var engine = scene.getEngine();
|
87
|
-
MaterialHelper.PrepareDefinesForFrameBoundValues(scene, engine, defines, useInstances ? true : false);
|
88
|
-
MaterialHelper.PrepareDefinesForMisc(mesh, scene, false, this.pointsCloud, this.fogEnabled, this._shouldTurnAlphaTestOn(mesh), defines);
|
89
|
-
defines._needNormals = MaterialHelper.PrepareDefinesForLights(scene, mesh, defines, false, this._maxSimultaneousLights, this._disableLighting);
|
90
|
-
defines.EMISSIVE = this._disableLighting;
|
91
|
-
// Attribs
|
92
|
-
MaterialHelper.PrepareDefinesForAttributes(mesh, defines, false, true);
|
93
|
-
// Get correct effect
|
94
|
-
if (defines.isDirty) {
|
95
|
-
defines.markAsProcessed();
|
96
|
-
scene.resetCachedMaterial();
|
97
|
-
// Fallbacks
|
98
|
-
var fallbacks = new EffectFallbacks();
|
99
|
-
if (defines.FOG) {
|
100
|
-
fallbacks.addFallback(1, "FOG");
|
101
|
-
}
|
102
|
-
MaterialHelper.HandleFallbacksForShadows(defines, fallbacks);
|
103
|
-
if (defines.NUM_BONE_INFLUENCERS > 0) {
|
104
|
-
fallbacks.addCPUSkinningFallback(0, mesh);
|
105
|
-
}
|
106
|
-
defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;
|
107
|
-
//Attributes
|
108
|
-
var attribs = [VertexBuffer.PositionKind];
|
109
|
-
if (defines.NORMAL) {
|
110
|
-
attribs.push(VertexBuffer.NormalKind);
|
111
|
-
}
|
112
|
-
if (defines.UV1) {
|
113
|
-
attribs.push(VertexBuffer.UVKind);
|
114
|
-
}
|
115
|
-
if (defines.UV2) {
|
116
|
-
attribs.push(VertexBuffer.UV2Kind);
|
117
|
-
}
|
118
|
-
if (defines.VERTEXCOLOR) {
|
119
|
-
attribs.push(VertexBuffer.ColorKind);
|
120
|
-
}
|
121
|
-
MaterialHelper.PrepareAttributesForBones(attribs, mesh, defines, fallbacks);
|
122
|
-
MaterialHelper.PrepareAttributesForInstances(attribs, defines);
|
123
|
-
// Legacy browser patch
|
124
|
-
var shaderName = "gradient";
|
125
|
-
var join = defines.toString();
|
126
|
-
var uniforms = [
|
127
|
-
"world",
|
128
|
-
"view",
|
129
|
-
"viewProjection",
|
130
|
-
"vEyePosition",
|
131
|
-
"vLightsType",
|
132
|
-
"vFogInfos",
|
133
|
-
"vFogColor",
|
134
|
-
"pointSize",
|
135
|
-
"mBones",
|
136
|
-
"vClipPlane",
|
137
|
-
"vClipPlane2",
|
138
|
-
"vClipPlane3",
|
139
|
-
"vClipPlane4",
|
140
|
-
"vClipPlane5",
|
141
|
-
"vClipPlane6",
|
142
|
-
"topColor",
|
143
|
-
"bottomColor",
|
144
|
-
"offset",
|
145
|
-
"smoothness",
|
146
|
-
"scale",
|
147
|
-
];
|
148
|
-
var samplers = [];
|
149
|
-
var uniformBuffers = new Array();
|
150
|
-
MaterialHelper.PrepareUniformsAndSamplersList({
|
151
|
-
uniformsNames: uniforms,
|
152
|
-
uniformBuffersNames: uniformBuffers,
|
153
|
-
samplers: samplers,
|
154
|
-
defines: defines,
|
155
|
-
maxSimultaneousLights: 4,
|
156
|
-
});
|
157
|
-
subMesh.setEffect(scene.getEngine().createEffect(shaderName, {
|
158
|
-
attributes: attribs,
|
159
|
-
uniformsNames: uniforms,
|
160
|
-
uniformBuffersNames: uniformBuffers,
|
161
|
-
samplers: samplers,
|
162
|
-
defines: join,
|
163
|
-
fallbacks: fallbacks,
|
164
|
-
onCompiled: this.onCompiled,
|
165
|
-
onError: this.onError,
|
166
|
-
indexParameters: { maxSimultaneousLights: 4 },
|
167
|
-
}, engine), defines, this._materialContext);
|
168
|
-
}
|
169
|
-
if (!subMesh.effect || !subMesh.effect.isReady()) {
|
170
|
-
return false;
|
171
|
-
}
|
172
|
-
defines._renderId = scene.getRenderId();
|
173
|
-
subMesh.effect._wasPreviouslyReady = true;
|
174
|
-
return true;
|
175
|
-
};
|
176
|
-
GradientMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {
|
177
|
-
var scene = this.getScene();
|
178
|
-
var defines = subMesh.materialDefines;
|
179
|
-
if (!defines) {
|
180
|
-
return;
|
181
|
-
}
|
182
|
-
var effect = subMesh.effect;
|
183
|
-
if (!effect) {
|
184
|
-
return;
|
185
|
-
}
|
186
|
-
this._activeEffect = effect;
|
187
|
-
// Matrices
|
188
|
-
this.bindOnlyWorldMatrix(world);
|
189
|
-
this._activeEffect.setMatrix("viewProjection", scene.getTransformMatrix());
|
190
|
-
// Bones
|
191
|
-
MaterialHelper.BindBonesParameters(mesh, effect);
|
192
|
-
if (this._mustRebind(scene, effect)) {
|
193
|
-
// Clip plane
|
194
|
-
MaterialHelper.BindClipPlane(effect, scene);
|
195
|
-
// Point size
|
196
|
-
if (this.pointsCloud) {
|
197
|
-
this._activeEffect.setFloat("pointSize", this.pointSize);
|
198
|
-
}
|
199
|
-
scene.bindEyePosition(effect);
|
200
|
-
}
|
201
|
-
if (scene.lightsEnabled && !this.disableLighting) {
|
202
|
-
MaterialHelper.BindLights(scene, mesh, this._activeEffect, defines, this.maxSimultaneousLights);
|
203
|
-
}
|
204
|
-
// View
|
205
|
-
if (scene.fogEnabled && mesh.applyFog && scene.fogMode !== Scene.FOGMODE_NONE) {
|
206
|
-
this._activeEffect.setMatrix("view", scene.getViewMatrix());
|
207
|
-
}
|
208
|
-
// Fog
|
209
|
-
MaterialHelper.BindFogParameters(scene, mesh, this._activeEffect);
|
210
|
-
this._activeEffect.setColor4("topColor", this.topColor, this.topColorAlpha);
|
211
|
-
this._activeEffect.setColor4("bottomColor", this.bottomColor, this.bottomColorAlpha);
|
212
|
-
this._activeEffect.setFloat("offset", this.offset);
|
213
|
-
this._activeEffect.setFloat("scale", this.scale);
|
214
|
-
this._activeEffect.setFloat("smoothness", this.smoothness);
|
215
|
-
this._afterBind(mesh, this._activeEffect);
|
216
|
-
};
|
217
|
-
GradientMaterial.prototype.getAnimatables = function () {
|
218
|
-
return [];
|
219
|
-
};
|
220
|
-
GradientMaterial.prototype.dispose = function (forceDisposeEffect) {
|
221
|
-
_super.prototype.dispose.call(this, forceDisposeEffect);
|
222
|
-
};
|
223
|
-
GradientMaterial.prototype.clone = function (name) {
|
224
|
-
var _this = this;
|
225
|
-
return SerializationHelper.Clone(function () { return new GradientMaterial(name, _this.getScene()); }, this);
|
226
|
-
};
|
227
|
-
GradientMaterial.prototype.serialize = function () {
|
228
|
-
var serializationObject = _super.prototype.serialize.call(this);
|
229
|
-
serializationObject.customType = "BABYLON.GradientMaterial";
|
230
|
-
return serializationObject;
|
231
|
-
};
|
232
|
-
GradientMaterial.prototype.getClassName = function () {
|
233
|
-
return "GradientMaterial";
|
234
|
-
};
|
235
|
-
// Statics
|
236
|
-
GradientMaterial.Parse = function (source, scene, rootUrl) {
|
237
|
-
return SerializationHelper.Parse(function () { return new GradientMaterial(source.name, scene); }, source, scene, rootUrl);
|
238
|
-
};
|
239
|
-
__decorate([
|
240
|
-
serialize("maxSimultaneousLights")
|
241
|
-
], GradientMaterial.prototype, "_maxSimultaneousLights", void 0);
|
242
|
-
__decorate([
|
243
|
-
expandToProperty("_markAllSubMeshesAsLightsDirty")
|
244
|
-
], GradientMaterial.prototype, "maxSimultaneousLights", void 0);
|
245
|
-
__decorate([
|
246
|
-
serializeAsColor3()
|
247
|
-
], GradientMaterial.prototype, "topColor", void 0);
|
248
|
-
__decorate([
|
249
|
-
serialize()
|
250
|
-
], GradientMaterial.prototype, "topColorAlpha", void 0);
|
251
|
-
__decorate([
|
252
|
-
serializeAsColor3()
|
253
|
-
], GradientMaterial.prototype, "bottomColor", void 0);
|
254
|
-
__decorate([
|
255
|
-
serialize()
|
256
|
-
], GradientMaterial.prototype, "bottomColorAlpha", void 0);
|
257
|
-
__decorate([
|
258
|
-
serialize()
|
259
|
-
], GradientMaterial.prototype, "offset", void 0);
|
260
|
-
__decorate([
|
261
|
-
serialize()
|
262
|
-
], GradientMaterial.prototype, "scale", void 0);
|
263
|
-
__decorate([
|
264
|
-
serialize()
|
265
|
-
], GradientMaterial.prototype, "smoothness", void 0);
|
266
|
-
__decorate([
|
267
|
-
serialize("disableLighting")
|
268
|
-
], GradientMaterial.prototype, "_disableLighting", void 0);
|
269
|
-
__decorate([
|
270
|
-
expandToProperty("_markAllSubMeshesAsLightsDirty")
|
271
|
-
], GradientMaterial.prototype, "disableLighting", void 0);
|
272
|
-
return GradientMaterial;
|
273
|
-
}(PushMaterial));
|
274
|
-
export { GradientMaterial };
|
275
|
-
RegisterClass("BABYLON.GradientMaterial", GradientMaterial);
|
1
|
+
import { __decorate, __extends } from "tslib";
|
2
|
+
import { serialize, expandToProperty, serializeAsColor3, SerializationHelper } from "@babylonjs/core/Misc/decorators.js";
|
3
|
+
import { Color3 } from "@babylonjs/core/Maths/math.color.js";
|
4
|
+
import { MaterialDefines } from "@babylonjs/core/Materials/materialDefines.js";
|
5
|
+
import { MaterialHelper } from "@babylonjs/core/Materials/materialHelper.js";
|
6
|
+
import { PushMaterial } from "@babylonjs/core/Materials/pushMaterial.js";
|
7
|
+
import { VertexBuffer } from "@babylonjs/core/Buffers/buffer.js";
|
8
|
+
import { Scene } from "@babylonjs/core/scene.js";
|
9
|
+
import { RegisterClass } from "@babylonjs/core/Misc/typeStore.js";
|
10
|
+
import "./gradient.fragment.js";
|
11
|
+
import "./gradient.vertex.js";
|
12
|
+
import { EffectFallbacks } from "@babylonjs/core/Materials/effectFallbacks.js";
|
13
|
+
var GradientMaterialDefines = /** @class */ (function (_super) {
|
14
|
+
__extends(GradientMaterialDefines, _super);
|
15
|
+
function GradientMaterialDefines() {
|
16
|
+
var _this = _super.call(this) || this;
|
17
|
+
_this.EMISSIVE = false;
|
18
|
+
_this.CLIPPLANE = false;
|
19
|
+
_this.CLIPPLANE2 = false;
|
20
|
+
_this.CLIPPLANE3 = false;
|
21
|
+
_this.CLIPPLANE4 = false;
|
22
|
+
_this.CLIPPLANE5 = false;
|
23
|
+
_this.CLIPPLANE6 = false;
|
24
|
+
_this.ALPHATEST = false;
|
25
|
+
_this.DEPTHPREPASS = false;
|
26
|
+
_this.POINTSIZE = false;
|
27
|
+
_this.FOG = false;
|
28
|
+
_this.NORMAL = false;
|
29
|
+
_this.UV1 = false;
|
30
|
+
_this.UV2 = false;
|
31
|
+
_this.VERTEXCOLOR = false;
|
32
|
+
_this.VERTEXALPHA = false;
|
33
|
+
_this.NUM_BONE_INFLUENCERS = 0;
|
34
|
+
_this.BonesPerMesh = 0;
|
35
|
+
_this.INSTANCES = false;
|
36
|
+
_this.INSTANCESCOLOR = false;
|
37
|
+
_this.IMAGEPROCESSINGPOSTPROCESS = false;
|
38
|
+
_this.SKIPFINALCOLORCLAMP = false;
|
39
|
+
_this.rebuild();
|
40
|
+
return _this;
|
41
|
+
}
|
42
|
+
return GradientMaterialDefines;
|
43
|
+
}(MaterialDefines));
|
44
|
+
var GradientMaterial = /** @class */ (function (_super) {
|
45
|
+
__extends(GradientMaterial, _super);
|
46
|
+
function GradientMaterial(name, scene) {
|
47
|
+
var _this = _super.call(this, name, scene) || this;
|
48
|
+
_this._maxSimultaneousLights = 4;
|
49
|
+
// The gradient top color, red by default
|
50
|
+
_this.topColor = new Color3(1, 0, 0);
|
51
|
+
_this.topColorAlpha = 1.0;
|
52
|
+
// The gradient top color, blue by default
|
53
|
+
_this.bottomColor = new Color3(0, 0, 1);
|
54
|
+
_this.bottomColorAlpha = 1.0;
|
55
|
+
// Gradient offset
|
56
|
+
_this.offset = 0;
|
57
|
+
_this.scale = 1.0;
|
58
|
+
_this.smoothness = 1.0;
|
59
|
+
_this._disableLighting = false;
|
60
|
+
return _this;
|
61
|
+
}
|
62
|
+
GradientMaterial.prototype.needAlphaBlending = function () {
|
63
|
+
return this.alpha < 1.0 || this.topColorAlpha < 1.0 || this.bottomColorAlpha < 1.0;
|
64
|
+
};
|
65
|
+
GradientMaterial.prototype.needAlphaTesting = function () {
|
66
|
+
return true;
|
67
|
+
};
|
68
|
+
GradientMaterial.prototype.getAlphaTestTexture = function () {
|
69
|
+
return null;
|
70
|
+
};
|
71
|
+
// Methods
|
72
|
+
GradientMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
|
73
|
+
if (this.isFrozen) {
|
74
|
+
if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
|
75
|
+
return true;
|
76
|
+
}
|
77
|
+
}
|
78
|
+
if (!subMesh.materialDefines) {
|
79
|
+
subMesh.materialDefines = new GradientMaterialDefines();
|
80
|
+
}
|
81
|
+
var defines = subMesh.materialDefines;
|
82
|
+
var scene = this.getScene();
|
83
|
+
if (this._isReadyForSubMesh(subMesh)) {
|
84
|
+
return true;
|
85
|
+
}
|
86
|
+
var engine = scene.getEngine();
|
87
|
+
MaterialHelper.PrepareDefinesForFrameBoundValues(scene, engine, defines, useInstances ? true : false);
|
88
|
+
MaterialHelper.PrepareDefinesForMisc(mesh, scene, false, this.pointsCloud, this.fogEnabled, this._shouldTurnAlphaTestOn(mesh), defines);
|
89
|
+
defines._needNormals = MaterialHelper.PrepareDefinesForLights(scene, mesh, defines, false, this._maxSimultaneousLights, this._disableLighting);
|
90
|
+
defines.EMISSIVE = this._disableLighting;
|
91
|
+
// Attribs
|
92
|
+
MaterialHelper.PrepareDefinesForAttributes(mesh, defines, false, true);
|
93
|
+
// Get correct effect
|
94
|
+
if (defines.isDirty) {
|
95
|
+
defines.markAsProcessed();
|
96
|
+
scene.resetCachedMaterial();
|
97
|
+
// Fallbacks
|
98
|
+
var fallbacks = new EffectFallbacks();
|
99
|
+
if (defines.FOG) {
|
100
|
+
fallbacks.addFallback(1, "FOG");
|
101
|
+
}
|
102
|
+
MaterialHelper.HandleFallbacksForShadows(defines, fallbacks);
|
103
|
+
if (defines.NUM_BONE_INFLUENCERS > 0) {
|
104
|
+
fallbacks.addCPUSkinningFallback(0, mesh);
|
105
|
+
}
|
106
|
+
defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;
|
107
|
+
//Attributes
|
108
|
+
var attribs = [VertexBuffer.PositionKind];
|
109
|
+
if (defines.NORMAL) {
|
110
|
+
attribs.push(VertexBuffer.NormalKind);
|
111
|
+
}
|
112
|
+
if (defines.UV1) {
|
113
|
+
attribs.push(VertexBuffer.UVKind);
|
114
|
+
}
|
115
|
+
if (defines.UV2) {
|
116
|
+
attribs.push(VertexBuffer.UV2Kind);
|
117
|
+
}
|
118
|
+
if (defines.VERTEXCOLOR) {
|
119
|
+
attribs.push(VertexBuffer.ColorKind);
|
120
|
+
}
|
121
|
+
MaterialHelper.PrepareAttributesForBones(attribs, mesh, defines, fallbacks);
|
122
|
+
MaterialHelper.PrepareAttributesForInstances(attribs, defines);
|
123
|
+
// Legacy browser patch
|
124
|
+
var shaderName = "gradient";
|
125
|
+
var join = defines.toString();
|
126
|
+
var uniforms = [
|
127
|
+
"world",
|
128
|
+
"view",
|
129
|
+
"viewProjection",
|
130
|
+
"vEyePosition",
|
131
|
+
"vLightsType",
|
132
|
+
"vFogInfos",
|
133
|
+
"vFogColor",
|
134
|
+
"pointSize",
|
135
|
+
"mBones",
|
136
|
+
"vClipPlane",
|
137
|
+
"vClipPlane2",
|
138
|
+
"vClipPlane3",
|
139
|
+
"vClipPlane4",
|
140
|
+
"vClipPlane5",
|
141
|
+
"vClipPlane6",
|
142
|
+
"topColor",
|
143
|
+
"bottomColor",
|
144
|
+
"offset",
|
145
|
+
"smoothness",
|
146
|
+
"scale",
|
147
|
+
];
|
148
|
+
var samplers = [];
|
149
|
+
var uniformBuffers = new Array();
|
150
|
+
MaterialHelper.PrepareUniformsAndSamplersList({
|
151
|
+
uniformsNames: uniforms,
|
152
|
+
uniformBuffersNames: uniformBuffers,
|
153
|
+
samplers: samplers,
|
154
|
+
defines: defines,
|
155
|
+
maxSimultaneousLights: 4,
|
156
|
+
});
|
157
|
+
subMesh.setEffect(scene.getEngine().createEffect(shaderName, {
|
158
|
+
attributes: attribs,
|
159
|
+
uniformsNames: uniforms,
|
160
|
+
uniformBuffersNames: uniformBuffers,
|
161
|
+
samplers: samplers,
|
162
|
+
defines: join,
|
163
|
+
fallbacks: fallbacks,
|
164
|
+
onCompiled: this.onCompiled,
|
165
|
+
onError: this.onError,
|
166
|
+
indexParameters: { maxSimultaneousLights: 4 },
|
167
|
+
}, engine), defines, this._materialContext);
|
168
|
+
}
|
169
|
+
if (!subMesh.effect || !subMesh.effect.isReady()) {
|
170
|
+
return false;
|
171
|
+
}
|
172
|
+
defines._renderId = scene.getRenderId();
|
173
|
+
subMesh.effect._wasPreviouslyReady = true;
|
174
|
+
return true;
|
175
|
+
};
|
176
|
+
GradientMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {
|
177
|
+
var scene = this.getScene();
|
178
|
+
var defines = subMesh.materialDefines;
|
179
|
+
if (!defines) {
|
180
|
+
return;
|
181
|
+
}
|
182
|
+
var effect = subMesh.effect;
|
183
|
+
if (!effect) {
|
184
|
+
return;
|
185
|
+
}
|
186
|
+
this._activeEffect = effect;
|
187
|
+
// Matrices
|
188
|
+
this.bindOnlyWorldMatrix(world);
|
189
|
+
this._activeEffect.setMatrix("viewProjection", scene.getTransformMatrix());
|
190
|
+
// Bones
|
191
|
+
MaterialHelper.BindBonesParameters(mesh, effect);
|
192
|
+
if (this._mustRebind(scene, effect)) {
|
193
|
+
// Clip plane
|
194
|
+
MaterialHelper.BindClipPlane(effect, scene);
|
195
|
+
// Point size
|
196
|
+
if (this.pointsCloud) {
|
197
|
+
this._activeEffect.setFloat("pointSize", this.pointSize);
|
198
|
+
}
|
199
|
+
scene.bindEyePosition(effect);
|
200
|
+
}
|
201
|
+
if (scene.lightsEnabled && !this.disableLighting) {
|
202
|
+
MaterialHelper.BindLights(scene, mesh, this._activeEffect, defines, this.maxSimultaneousLights);
|
203
|
+
}
|
204
|
+
// View
|
205
|
+
if (scene.fogEnabled && mesh.applyFog && scene.fogMode !== Scene.FOGMODE_NONE) {
|
206
|
+
this._activeEffect.setMatrix("view", scene.getViewMatrix());
|
207
|
+
}
|
208
|
+
// Fog
|
209
|
+
MaterialHelper.BindFogParameters(scene, mesh, this._activeEffect);
|
210
|
+
this._activeEffect.setColor4("topColor", this.topColor, this.topColorAlpha);
|
211
|
+
this._activeEffect.setColor4("bottomColor", this.bottomColor, this.bottomColorAlpha);
|
212
|
+
this._activeEffect.setFloat("offset", this.offset);
|
213
|
+
this._activeEffect.setFloat("scale", this.scale);
|
214
|
+
this._activeEffect.setFloat("smoothness", this.smoothness);
|
215
|
+
this._afterBind(mesh, this._activeEffect);
|
216
|
+
};
|
217
|
+
GradientMaterial.prototype.getAnimatables = function () {
|
218
|
+
return [];
|
219
|
+
};
|
220
|
+
GradientMaterial.prototype.dispose = function (forceDisposeEffect) {
|
221
|
+
_super.prototype.dispose.call(this, forceDisposeEffect);
|
222
|
+
};
|
223
|
+
GradientMaterial.prototype.clone = function (name) {
|
224
|
+
var _this = this;
|
225
|
+
return SerializationHelper.Clone(function () { return new GradientMaterial(name, _this.getScene()); }, this);
|
226
|
+
};
|
227
|
+
GradientMaterial.prototype.serialize = function () {
|
228
|
+
var serializationObject = _super.prototype.serialize.call(this);
|
229
|
+
serializationObject.customType = "BABYLON.GradientMaterial";
|
230
|
+
return serializationObject;
|
231
|
+
};
|
232
|
+
GradientMaterial.prototype.getClassName = function () {
|
233
|
+
return "GradientMaterial";
|
234
|
+
};
|
235
|
+
// Statics
|
236
|
+
GradientMaterial.Parse = function (source, scene, rootUrl) {
|
237
|
+
return SerializationHelper.Parse(function () { return new GradientMaterial(source.name, scene); }, source, scene, rootUrl);
|
238
|
+
};
|
239
|
+
__decorate([
|
240
|
+
serialize("maxSimultaneousLights")
|
241
|
+
], GradientMaterial.prototype, "_maxSimultaneousLights", void 0);
|
242
|
+
__decorate([
|
243
|
+
expandToProperty("_markAllSubMeshesAsLightsDirty")
|
244
|
+
], GradientMaterial.prototype, "maxSimultaneousLights", void 0);
|
245
|
+
__decorate([
|
246
|
+
serializeAsColor3()
|
247
|
+
], GradientMaterial.prototype, "topColor", void 0);
|
248
|
+
__decorate([
|
249
|
+
serialize()
|
250
|
+
], GradientMaterial.prototype, "topColorAlpha", void 0);
|
251
|
+
__decorate([
|
252
|
+
serializeAsColor3()
|
253
|
+
], GradientMaterial.prototype, "bottomColor", void 0);
|
254
|
+
__decorate([
|
255
|
+
serialize()
|
256
|
+
], GradientMaterial.prototype, "bottomColorAlpha", void 0);
|
257
|
+
__decorate([
|
258
|
+
serialize()
|
259
|
+
], GradientMaterial.prototype, "offset", void 0);
|
260
|
+
__decorate([
|
261
|
+
serialize()
|
262
|
+
], GradientMaterial.prototype, "scale", void 0);
|
263
|
+
__decorate([
|
264
|
+
serialize()
|
265
|
+
], GradientMaterial.prototype, "smoothness", void 0);
|
266
|
+
__decorate([
|
267
|
+
serialize("disableLighting")
|
268
|
+
], GradientMaterial.prototype, "_disableLighting", void 0);
|
269
|
+
__decorate([
|
270
|
+
expandToProperty("_markAllSubMeshesAsLightsDirty")
|
271
|
+
], GradientMaterial.prototype, "disableLighting", void 0);
|
272
|
+
return GradientMaterial;
|
273
|
+
}(PushMaterial));
|
274
|
+
export { GradientMaterial };
|
275
|
+
RegisterClass("BABYLON.GradientMaterial", GradientMaterial);
|
276
276
|
//# sourceMappingURL=gradientMaterial.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"gradientMaterial.js","sourceRoot":"","sources":["../../../../../lts/materials/generated/gradient/gradientMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { Nullable } from \"core/types\";\r\nimport { serialize, expandToProperty, serializeAsColor3, SerializationHelper } from \"core/Misc/decorators\";\r\nimport { Matrix } from \"core/Maths/math.vector\";\r\nimport { Color3 } from \"core/Maths/math.color\";\r\nimport { IAnimatable } from \"core/Animations/animatable.interface\";\r\nimport { BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\nimport { MaterialDefines } from \"core/Materials/materialDefines\";\r\nimport { MaterialHelper } from \"core/Materials/materialHelper\";\r\nimport { IEffectCreationOptions } from \"core/Materials/effect\";\r\nimport { PushMaterial } from \"core/Materials/pushMaterial\";\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 \"./gradient.fragment\";\r\nimport \"./gradient.vertex\";\r\nimport { EffectFallbacks } from \"core/Materials/effectFallbacks\";\r\n\r\nclass GradientMaterialDefines extends MaterialDefines {\r\n public EMISSIVE = false;\r\n public CLIPPLANE = false;\r\n public CLIPPLANE2 = false;\r\n public CLIPPLANE3 = false;\r\n public CLIPPLANE4 = false;\r\n public CLIPPLANE5 = false;\r\n public CLIPPLANE6 = false;\r\n public ALPHATEST = false;\r\n public DEPTHPREPASS = false;\r\n public POINTSIZE = false;\r\n public FOG = false;\r\n public NORMAL = false;\r\n public UV1 = false;\r\n public UV2 = false;\r\n public VERTEXCOLOR = false;\r\n public VERTEXALPHA = false;\r\n public NUM_BONE_INFLUENCERS = 0;\r\n public BonesPerMesh = 0;\r\n public INSTANCES = false;\r\n public INSTANCESCOLOR = 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\nexport class GradientMaterial extends PushMaterial {\r\n @serialize(\"maxSimultaneousLights\")\r\n private _maxSimultaneousLights = 4;\r\n @expandToProperty(\"_markAllSubMeshesAsLightsDirty\")\r\n public maxSimultaneousLights: number;\r\n\r\n // The gradient top color, red by default\r\n @serializeAsColor3()\r\n public topColor = new Color3(1, 0, 0);\r\n\r\n @serialize()\r\n public topColorAlpha = 1.0;\r\n\r\n // The gradient top color, blue by default\r\n @serializeAsColor3()\r\n public bottomColor = new Color3(0, 0, 1);\r\n\r\n @serialize()\r\n public bottomColorAlpha = 1.0;\r\n\r\n // Gradient offset\r\n @serialize()\r\n public offset = 0;\r\n\r\n @serialize()\r\n public scale = 1.0;\r\n\r\n @serialize()\r\n public smoothness = 1.0;\r\n\r\n @serialize(\"disableLighting\")\r\n private _disableLighting = false;\r\n @expandToProperty(\"_markAllSubMeshesAsLightsDirty\")\r\n public disableLighting: boolean;\r\n\r\n constructor(name: string, scene?: Scene) {\r\n super(name, scene);\r\n }\r\n\r\n public needAlphaBlending(): boolean {\r\n return this.alpha < 1.0 || this.topColorAlpha < 1.0 || this.bottomColorAlpha < 1.0;\r\n }\r\n\r\n public needAlphaTesting(): boolean {\r\n return true;\r\n }\r\n\r\n public getAlphaTestTexture(): Nullable<BaseTexture> {\r\n return null;\r\n }\r\n\r\n // Methods\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 GradientMaterialDefines();\r\n }\r\n\r\n const defines = <GradientMaterialDefines>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 const engine = scene.getEngine();\r\n\r\n MaterialHelper.PrepareDefinesForFrameBoundValues(scene, engine, defines, useInstances ? true : false);\r\n\r\n MaterialHelper.PrepareDefinesForMisc(mesh, scene, false, this.pointsCloud, this.fogEnabled, this._shouldTurnAlphaTestOn(mesh), defines);\r\n\r\n defines._needNormals = MaterialHelper.PrepareDefinesForLights(scene, mesh, defines, false, this._maxSimultaneousLights, this._disableLighting);\r\n\r\n defines.EMISSIVE = this._disableLighting;\r\n\r\n // Attribs\r\n MaterialHelper.PrepareDefinesForAttributes(mesh, defines, false, true);\r\n\r\n // Get correct effect\r\n if (defines.isDirty) {\r\n defines.markAsProcessed();\r\n\r\n scene.resetCachedMaterial();\r\n\r\n // Fallbacks\r\n const fallbacks = new EffectFallbacks();\r\n if (defines.FOG) {\r\n fallbacks.addFallback(1, \"FOG\");\r\n }\r\n\r\n MaterialHelper.HandleFallbacksForShadows(defines, fallbacks);\r\n\r\n if (defines.NUM_BONE_INFLUENCERS > 0) {\r\n fallbacks.addCPUSkinningFallback(0, mesh);\r\n }\r\n\r\n defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;\r\n\r\n //Attributes\r\n const attribs = [VertexBuffer.PositionKind];\r\n\r\n if (defines.NORMAL) {\r\n attribs.push(VertexBuffer.NormalKind);\r\n }\r\n\r\n if (defines.UV1) {\r\n attribs.push(VertexBuffer.UVKind);\r\n }\r\n\r\n if (defines.UV2) {\r\n attribs.push(VertexBuffer.UV2Kind);\r\n }\r\n\r\n if (defines.VERTEXCOLOR) {\r\n attribs.push(VertexBuffer.ColorKind);\r\n }\r\n\r\n MaterialHelper.PrepareAttributesForBones(attribs, mesh, defines, fallbacks);\r\n MaterialHelper.PrepareAttributesForInstances(attribs, defines);\r\n\r\n // Legacy browser patch\r\n const shaderName = \"gradient\";\r\n const join = defines.toString();\r\n\r\n const uniforms = [\r\n \"world\",\r\n \"view\",\r\n \"viewProjection\",\r\n \"vEyePosition\",\r\n \"vLightsType\",\r\n \"vFogInfos\",\r\n \"vFogColor\",\r\n \"pointSize\",\r\n \"mBones\",\r\n \"vClipPlane\",\r\n \"vClipPlane2\",\r\n \"vClipPlane3\",\r\n \"vClipPlane4\",\r\n \"vClipPlane5\",\r\n \"vClipPlane6\",\r\n \"topColor\",\r\n \"bottomColor\",\r\n \"offset\",\r\n \"smoothness\",\r\n \"scale\",\r\n ];\r\n const samplers: string[] = [];\r\n const uniformBuffers = new Array<string>();\r\n\r\n MaterialHelper.PrepareUniformsAndSamplersList(<IEffectCreationOptions>{\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: defines,\r\n maxSimultaneousLights: 4,\r\n });\r\n\r\n subMesh.setEffect(\r\n scene.getEngine().createEffect(\r\n shaderName,\r\n <IEffectCreationOptions>{\r\n attributes: attribs,\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: join,\r\n fallbacks: fallbacks,\r\n onCompiled: this.onCompiled,\r\n onError: this.onError,\r\n indexParameters: { maxSimultaneousLights: 4 },\r\n },\r\n engine\r\n ),\r\n defines,\r\n this._materialContext\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 = <GradientMaterialDefines>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\r\n this._activeEffect = effect;\r\n\r\n // Matrices\r\n this.bindOnlyWorldMatrix(world);\r\n this._activeEffect.setMatrix(\"viewProjection\", scene.getTransformMatrix());\r\n\r\n // Bones\r\n MaterialHelper.BindBonesParameters(mesh, effect);\r\n\r\n if (this._mustRebind(scene, effect)) {\r\n // Clip plane\r\n MaterialHelper.BindClipPlane(effect, scene);\r\n\r\n // Point size\r\n if (this.pointsCloud) {\r\n this._activeEffect.setFloat(\"pointSize\", this.pointSize);\r\n }\r\n\r\n scene.bindEyePosition(effect);\r\n }\r\n\r\n if (scene.lightsEnabled && !this.disableLighting) {\r\n MaterialHelper.BindLights(scene, mesh, this._activeEffect, defines, this.maxSimultaneousLights);\r\n }\r\n\r\n // View\r\n if (scene.fogEnabled && mesh.applyFog && scene.fogMode !== Scene.FOGMODE_NONE) {\r\n this._activeEffect.setMatrix(\"view\", scene.getViewMatrix());\r\n }\r\n\r\n // Fog\r\n MaterialHelper.BindFogParameters(scene, mesh, this._activeEffect);\r\n\r\n this._activeEffect.setColor4(\"topColor\", this.topColor, this.topColorAlpha);\r\n this._activeEffect.setColor4(\"bottomColor\", this.bottomColor, this.bottomColorAlpha);\r\n this._activeEffect.setFloat(\"offset\", this.offset);\r\n this._activeEffect.setFloat(\"scale\", this.scale);\r\n this._activeEffect.setFloat(\"smoothness\", this.smoothness);\r\n\r\n this._afterBind(mesh, this._activeEffect);\r\n }\r\n\r\n public getAnimatables(): IAnimatable[] {\r\n return [];\r\n }\r\n\r\n public dispose(forceDisposeEffect?: boolean): void {\r\n super.dispose(forceDisposeEffect);\r\n }\r\n\r\n public clone(name: string): GradientMaterial {\r\n return SerializationHelper.Clone(() => new GradientMaterial(name, this.getScene()), this);\r\n }\r\n\r\n public serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.customType = \"BABYLON.GradientMaterial\";\r\n return serializationObject;\r\n }\r\n\r\n public getClassName(): string {\r\n return \"GradientMaterial\";\r\n }\r\n\r\n // Statics\r\n public static Parse(source: any, scene: Scene, rootUrl: string): GradientMaterial {\r\n return SerializationHelper.Parse(() => new GradientMaterial(source.name, scene), source, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.GradientMaterial\", GradientMaterial);\r\n"]}
|
1
|
+
{"version":3,"file":"gradientMaterial.js","sourceRoot":"","sources":["../../../../../lts/materials/generated/gradient/gradientMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport type { Nullable } from \"core/types\";\r\nimport { serialize, expandToProperty, serializeAsColor3, SerializationHelper } from \"core/Misc/decorators\";\r\nimport type { Matrix } from \"core/Maths/math.vector\";\r\nimport { Color3 } from \"core/Maths/math.color\";\r\nimport type { IAnimatable } from \"core/Animations/animatable.interface\";\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 type { IEffectCreationOptions } from \"core/Materials/effect\";\r\nimport { PushMaterial } from \"core/Materials/pushMaterial\";\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 { Scene } from \"core/scene\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\n\r\nimport \"./gradient.fragment\";\r\nimport \"./gradient.vertex\";\r\nimport { EffectFallbacks } from \"core/Materials/effectFallbacks\";\r\n\r\nclass GradientMaterialDefines extends MaterialDefines {\r\n public EMISSIVE = false;\r\n public CLIPPLANE = false;\r\n public CLIPPLANE2 = false;\r\n public CLIPPLANE3 = false;\r\n public CLIPPLANE4 = false;\r\n public CLIPPLANE5 = false;\r\n public CLIPPLANE6 = false;\r\n public ALPHATEST = false;\r\n public DEPTHPREPASS = false;\r\n public POINTSIZE = false;\r\n public FOG = false;\r\n public NORMAL = false;\r\n public UV1 = false;\r\n public UV2 = false;\r\n public VERTEXCOLOR = false;\r\n public VERTEXALPHA = false;\r\n public NUM_BONE_INFLUENCERS = 0;\r\n public BonesPerMesh = 0;\r\n public INSTANCES = false;\r\n public INSTANCESCOLOR = 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\nexport class GradientMaterial extends PushMaterial {\r\n @serialize(\"maxSimultaneousLights\")\r\n private _maxSimultaneousLights = 4;\r\n @expandToProperty(\"_markAllSubMeshesAsLightsDirty\")\r\n public maxSimultaneousLights: number;\r\n\r\n // The gradient top color, red by default\r\n @serializeAsColor3()\r\n public topColor = new Color3(1, 0, 0);\r\n\r\n @serialize()\r\n public topColorAlpha = 1.0;\r\n\r\n // The gradient top color, blue by default\r\n @serializeAsColor3()\r\n public bottomColor = new Color3(0, 0, 1);\r\n\r\n @serialize()\r\n public bottomColorAlpha = 1.0;\r\n\r\n // Gradient offset\r\n @serialize()\r\n public offset = 0;\r\n\r\n @serialize()\r\n public scale = 1.0;\r\n\r\n @serialize()\r\n public smoothness = 1.0;\r\n\r\n @serialize(\"disableLighting\")\r\n private _disableLighting = false;\r\n @expandToProperty(\"_markAllSubMeshesAsLightsDirty\")\r\n public disableLighting: boolean;\r\n\r\n constructor(name: string, scene?: Scene) {\r\n super(name, scene);\r\n }\r\n\r\n public needAlphaBlending(): boolean {\r\n return this.alpha < 1.0 || this.topColorAlpha < 1.0 || this.bottomColorAlpha < 1.0;\r\n }\r\n\r\n public needAlphaTesting(): boolean {\r\n return true;\r\n }\r\n\r\n public getAlphaTestTexture(): Nullable<BaseTexture> {\r\n return null;\r\n }\r\n\r\n // Methods\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 GradientMaterialDefines();\r\n }\r\n\r\n const defines = <GradientMaterialDefines>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 const engine = scene.getEngine();\r\n\r\n MaterialHelper.PrepareDefinesForFrameBoundValues(scene, engine, defines, useInstances ? true : false);\r\n\r\n MaterialHelper.PrepareDefinesForMisc(mesh, scene, false, this.pointsCloud, this.fogEnabled, this._shouldTurnAlphaTestOn(mesh), defines);\r\n\r\n defines._needNormals = MaterialHelper.PrepareDefinesForLights(scene, mesh, defines, false, this._maxSimultaneousLights, this._disableLighting);\r\n\r\n defines.EMISSIVE = this._disableLighting;\r\n\r\n // Attribs\r\n MaterialHelper.PrepareDefinesForAttributes(mesh, defines, false, true);\r\n\r\n // Get correct effect\r\n if (defines.isDirty) {\r\n defines.markAsProcessed();\r\n\r\n scene.resetCachedMaterial();\r\n\r\n // Fallbacks\r\n const fallbacks = new EffectFallbacks();\r\n if (defines.FOG) {\r\n fallbacks.addFallback(1, \"FOG\");\r\n }\r\n\r\n MaterialHelper.HandleFallbacksForShadows(defines, fallbacks);\r\n\r\n if (defines.NUM_BONE_INFLUENCERS > 0) {\r\n fallbacks.addCPUSkinningFallback(0, mesh);\r\n }\r\n\r\n defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;\r\n\r\n //Attributes\r\n const attribs = [VertexBuffer.PositionKind];\r\n\r\n if (defines.NORMAL) {\r\n attribs.push(VertexBuffer.NormalKind);\r\n }\r\n\r\n if (defines.UV1) {\r\n attribs.push(VertexBuffer.UVKind);\r\n }\r\n\r\n if (defines.UV2) {\r\n attribs.push(VertexBuffer.UV2Kind);\r\n }\r\n\r\n if (defines.VERTEXCOLOR) {\r\n attribs.push(VertexBuffer.ColorKind);\r\n }\r\n\r\n MaterialHelper.PrepareAttributesForBones(attribs, mesh, defines, fallbacks);\r\n MaterialHelper.PrepareAttributesForInstances(attribs, defines);\r\n\r\n // Legacy browser patch\r\n const shaderName = \"gradient\";\r\n const join = defines.toString();\r\n\r\n const uniforms = [\r\n \"world\",\r\n \"view\",\r\n \"viewProjection\",\r\n \"vEyePosition\",\r\n \"vLightsType\",\r\n \"vFogInfos\",\r\n \"vFogColor\",\r\n \"pointSize\",\r\n \"mBones\",\r\n \"vClipPlane\",\r\n \"vClipPlane2\",\r\n \"vClipPlane3\",\r\n \"vClipPlane4\",\r\n \"vClipPlane5\",\r\n \"vClipPlane6\",\r\n \"topColor\",\r\n \"bottomColor\",\r\n \"offset\",\r\n \"smoothness\",\r\n \"scale\",\r\n ];\r\n const samplers: string[] = [];\r\n const uniformBuffers = new Array<string>();\r\n\r\n MaterialHelper.PrepareUniformsAndSamplersList(<IEffectCreationOptions>{\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: defines,\r\n maxSimultaneousLights: 4,\r\n });\r\n\r\n subMesh.setEffect(\r\n scene.getEngine().createEffect(\r\n shaderName,\r\n <IEffectCreationOptions>{\r\n attributes: attribs,\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: join,\r\n fallbacks: fallbacks,\r\n onCompiled: this.onCompiled,\r\n onError: this.onError,\r\n indexParameters: { maxSimultaneousLights: 4 },\r\n },\r\n engine\r\n ),\r\n defines,\r\n this._materialContext\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 = <GradientMaterialDefines>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\r\n this._activeEffect = effect;\r\n\r\n // Matrices\r\n this.bindOnlyWorldMatrix(world);\r\n this._activeEffect.setMatrix(\"viewProjection\", scene.getTransformMatrix());\r\n\r\n // Bones\r\n MaterialHelper.BindBonesParameters(mesh, effect);\r\n\r\n if (this._mustRebind(scene, effect)) {\r\n // Clip plane\r\n MaterialHelper.BindClipPlane(effect, scene);\r\n\r\n // Point size\r\n if (this.pointsCloud) {\r\n this._activeEffect.setFloat(\"pointSize\", this.pointSize);\r\n }\r\n\r\n scene.bindEyePosition(effect);\r\n }\r\n\r\n if (scene.lightsEnabled && !this.disableLighting) {\r\n MaterialHelper.BindLights(scene, mesh, this._activeEffect, defines, this.maxSimultaneousLights);\r\n }\r\n\r\n // View\r\n if (scene.fogEnabled && mesh.applyFog && scene.fogMode !== Scene.FOGMODE_NONE) {\r\n this._activeEffect.setMatrix(\"view\", scene.getViewMatrix());\r\n }\r\n\r\n // Fog\r\n MaterialHelper.BindFogParameters(scene, mesh, this._activeEffect);\r\n\r\n this._activeEffect.setColor4(\"topColor\", this.topColor, this.topColorAlpha);\r\n this._activeEffect.setColor4(\"bottomColor\", this.bottomColor, this.bottomColorAlpha);\r\n this._activeEffect.setFloat(\"offset\", this.offset);\r\n this._activeEffect.setFloat(\"scale\", this.scale);\r\n this._activeEffect.setFloat(\"smoothness\", this.smoothness);\r\n\r\n this._afterBind(mesh, this._activeEffect);\r\n }\r\n\r\n public getAnimatables(): IAnimatable[] {\r\n return [];\r\n }\r\n\r\n public dispose(forceDisposeEffect?: boolean): void {\r\n super.dispose(forceDisposeEffect);\r\n }\r\n\r\n public clone(name: string): GradientMaterial {\r\n return SerializationHelper.Clone(() => new GradientMaterial(name, this.getScene()), this);\r\n }\r\n\r\n public serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.customType = \"BABYLON.GradientMaterial\";\r\n return serializationObject;\r\n }\r\n\r\n public getClassName(): string {\r\n return \"GradientMaterial\";\r\n }\r\n\r\n // Statics\r\n public static Parse(source: any, scene: Scene, rootUrl: string): GradientMaterial {\r\n return SerializationHelper.Parse(() => new GradientMaterial(source.name, scene), source, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.GradientMaterial\", GradientMaterial);\r\n"]}
|