@babylonjs/gui 6.44.0 → 6.45.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/2D/controls/inputText.d.ts +15 -2
- package/2D/controls/inputText.js +40 -2
- package/2D/controls/inputText.js.map +1 -1
- package/2D/controls/inputTextArea.d.ts +0 -19
- package/2D/controls/inputTextArea.js +0 -41
- package/2D/controls/inputTextArea.js.map +1 -1
- package/3D/materials/fluent/fluentMaterial.js +2 -2
- package/3D/materials/fluent/fluentMaterial.js.map +1 -1
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.js +5 -5
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.js.map +1 -1
- package/3D/materials/fluentButton/fluentButtonMaterial.js +5 -5
- package/3D/materials/fluentButton/fluentButtonMaterial.js.map +1 -1
- package/3D/materials/mrdl/mrdlBackglowMaterial.js +5 -5
- package/3D/materials/mrdl/mrdlBackglowMaterial.js.map +1 -1
- package/3D/materials/mrdl/mrdlBackplateMaterial.js +5 -5
- package/3D/materials/mrdl/mrdlBackplateMaterial.js.map +1 -1
- package/3D/materials/mrdl/mrdlFrontplateMaterial.js +5 -5
- package/3D/materials/mrdl/mrdlFrontplateMaterial.js.map +1 -1
- package/3D/materials/mrdl/mrdlInnerquadMaterial.js +5 -5
- package/3D/materials/mrdl/mrdlInnerquadMaterial.js.map +1 -1
- package/3D/materials/mrdl/mrdlSliderBarMaterial.js +5 -5
- package/3D/materials/mrdl/mrdlSliderBarMaterial.js.map +1 -1
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.js +5 -5
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.js.map +1 -1
- package/package.json +2 -2
|
@@ -3,7 +3,6 @@ import { SerializationHelper, serialize } from "@babylonjs/core/Misc/decorators.
|
|
|
3
3
|
import { Vector4 } from "@babylonjs/core/Maths/math.vector.js";
|
|
4
4
|
import { Texture } from "@babylonjs/core/Materials/Textures/texture.js";
|
|
5
5
|
import { MaterialDefines } from "@babylonjs/core/Materials/materialDefines.js";
|
|
6
|
-
import { MaterialHelper } from "@babylonjs/core/Materials/materialHelper.js";
|
|
7
6
|
import { PushMaterial } from "@babylonjs/core/Materials/pushMaterial.js";
|
|
8
7
|
import { VertexBuffer } from "@babylonjs/core/Buffers/buffer.js";
|
|
9
8
|
import { RegisterClass } from "@babylonjs/core/Misc/typeStore.js";
|
|
@@ -12,6 +11,7 @@ import { EffectFallbacks } from "@babylonjs/core/Materials/effectFallbacks.js";
|
|
|
12
11
|
import { Constants } from "@babylonjs/core/Engines/constants.js";
|
|
13
12
|
import "./shaders/mrdlBackplate.fragment.js";
|
|
14
13
|
import "./shaders/mrdlBackplate.vertex.js";
|
|
14
|
+
import { HandleFallbacksForShadows, PrepareAttributesForInstances, PrepareDefinesForAttributes, PrepareUniformsAndSamplersList } from "@babylonjs/core/Materials/materialHelper.functions.js";
|
|
15
15
|
/** @internal */
|
|
16
16
|
class MRDLBackplateMaterialDefines extends MaterialDefines {
|
|
17
17
|
constructor() {
|
|
@@ -171,7 +171,7 @@ export class MRDLBackplateMaterial extends PushMaterial {
|
|
|
171
171
|
}
|
|
172
172
|
const engine = scene.getEngine();
|
|
173
173
|
// Attribs
|
|
174
|
-
|
|
174
|
+
PrepareDefinesForAttributes(mesh, defines, false, false);
|
|
175
175
|
// Get correct effect
|
|
176
176
|
if (defines.isDirty) {
|
|
177
177
|
defines.markAsProcessed();
|
|
@@ -181,7 +181,7 @@ export class MRDLBackplateMaterial extends PushMaterial {
|
|
|
181
181
|
if (defines.FOG) {
|
|
182
182
|
fallbacks.addFallback(1, "FOG");
|
|
183
183
|
}
|
|
184
|
-
|
|
184
|
+
HandleFallbacksForShadows(defines, fallbacks);
|
|
185
185
|
defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;
|
|
186
186
|
//Attributes
|
|
187
187
|
const attribs = [VertexBuffer.PositionKind];
|
|
@@ -200,7 +200,7 @@ export class MRDLBackplateMaterial extends PushMaterial {
|
|
|
200
200
|
if (defines.TANGENT) {
|
|
201
201
|
attribs.push(VertexBuffer.TangentKind);
|
|
202
202
|
}
|
|
203
|
-
|
|
203
|
+
PrepareAttributesForInstances(attribs, defines);
|
|
204
204
|
// Legacy browser patch
|
|
205
205
|
const shaderName = "mrdlBackplate";
|
|
206
206
|
const join = defines.toString();
|
|
@@ -243,7 +243,7 @@ export class MRDLBackplateMaterial extends PushMaterial {
|
|
|
243
243
|
];
|
|
244
244
|
const samplers = ["_Iridescent_Map_"];
|
|
245
245
|
const uniformBuffers = [];
|
|
246
|
-
|
|
246
|
+
PrepareUniformsAndSamplersList({
|
|
247
247
|
uniformsNames: uniforms,
|
|
248
248
|
uniformBuffersNames: uniformBuffers,
|
|
249
249
|
samplers: samplers,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mrdlBackplateMaterial.js","sourceRoot":"","sources":["../../../../../../dev/gui/src/3D/materials/mrdl/mrdlBackplateMaterial.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,2CAA6B;AAEtE,OAAO,EAAE,OAAO,EAAE,6CAA+B;AAGjD,OAAO,EAAE,OAAO,EAAE,sDAAwC;AAC1D,OAAO,EAAE,eAAe,EAAE,qDAAuC;AACjE,OAAO,EAAE,cAAc,EAAE,oDAAsC;AAE/D,OAAO,EAAE,YAAY,EAAE,kDAAoC;AAC3D,OAAO,EAAE,YAAY,EAAE,0CAA4B;AAKnD,OAAO,EAAE,aAAa,EAAE,0CAA4B;AACpD,OAAO,EAAE,MAAM,EAAE,4CAA8B;AAC/C,OAAO,EAAE,eAAe,EAAE,qDAAuC;AACjE,OAAO,EAAE,SAAS,EAAE,6CAA+B;AAEnD,OAAO,kCAAkC,CAAC;AAC1C,OAAO,gCAAgC,CAAC;AAExC,gBAAgB;AAChB,MAAM,4BAA6B,SAAQ,eAAe;IAOtD;QACI,KAAK,EAAE,CAAC;QAPZ;;UAEE;QACK,uBAAkB,GAAG,IAAI,CAAC;QAC1B,iBAAY,GAAG,IAAI,CAAC;QAIvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,YAAY;IA0KnD,YAAY,IAAY,EAAE,KAAa;QACnC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QApKvB;;WAEG;QAEI,WAAM,GAAG,GAAG,CAAC;QAEpB;;WAEG;QAEI,cAAS,GAAG,KAAK,CAAC;QAEzB;;;WAGG;QAEI,kBAAa,GAAG,KAAK,CAAC;QAE7B,gBAAgB;QACT,iBAAY,GAAG,CAAC,CAAC;QAExB;;WAEG;QAEI,cAAS,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAE1C;;WAEG;QAEI,cAAS,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAErD;;WAEG;QAEI,kBAAa,GAAG,GAAG,CAAC;QAE3B;;WAEG;QAEI,mBAAc,GAAG,GAAG,CAAC;QAE5B;;WAEG;QAEI,qBAAgB,GAAG,GAAG,CAAC;QAE9B;;WAEG;QAEI,sBAAiB,GAAG,GAAG,CAAC;QAE/B,gBAAgB;QACT,UAAK,GAAG,CAAC,CAAC;QAEjB;;WAEG;QAEI,mBAAc,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAEpE;;WAEG;QAEI,mBAAc,GAAG,CAAC,CAAC;QAE1B,gBAAgB;QACT,wBAAmB,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAErD,gBAAgB;QACT,eAAU,GAAG,CAAC,CAAC;QAEtB;;WAEG;QAEI,yBAAoB,GAAG,IAAI,CAAC;QAEnC;;WAEG;QAEI,6BAAwB,GAAG,CAAC,CAAC;QAEpC;;WAEG;QAEI,oBAAe,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAEhD,gBAAgB;QACT,WAAM,GAAG,CAAC,EAAE,CAAC;QAEpB;;WAEG;QAEI,YAAO,GAAG,CAAC,CAAC;QAEnB,gBAAgB;QACT,eAAU,GAAG,IAAI,CAAC;QAEzB,gBAAgB;QACT,eAAU,GAAG,CAAC,CAAC;QAEtB,gBAAgB;QACT,oBAAe,GAAG,CAAC,CAAC;QAE3B;;WAEG;QAEI,kBAAa,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QAEhE;;WAEG;QAEI,yBAAoB,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAE5E;;WAEG;QAEI,0BAAqB,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAE7D;;WAEG;QAEI,4BAAuB,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAE7E;;WAEG;QAEI,6BAAwB,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAE9E;;WAEG;QAEI,cAAS,GAAG,GAAG,CAAC;QAEvB;;WAEG;QAEI,cAAS,GAAG,CAAC,CAAC;QAErB;;WAEG;QAEI,0BAAqB,GAAG,GAAG,CAAC;QAI/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,aAAa,CAAC;QACzC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAE7B,IAAI,CAAC,qBAAqB,GAAG,IAAI,OAAO,CAAC,qBAAqB,CAAC,0BAA0B,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC3J,CAAC;IAEM,iBAAiB;QACpB,OAAO,KAAK,CAAC;IACjB,CAAC;IAEM,gBAAgB;QACnB,OAAO,KAAK,CAAC;IACjB,CAAC;IAEM,mBAAmB;QACtB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,UAAU;IACH,iBAAiB,CAAC,IAAkB,EAAE,OAAgB;QACzD,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;QAEzC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,mBAAmB,EAAE;gBACvD,OAAO,IAAI,CAAC;aACf;SACJ;QAED,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;YAC1B,OAAO,CAAC,eAAe,GAAG,IAAI,4BAA4B,EAAE,CAAC;SAChE;QAED,MAAM,OAAO,GAAiC,OAAO,CAAC,eAAe,CAAC;QACtE,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAE9B,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE;YAClC,OAAO,IAAI,CAAC;SACf;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAEjC,UAAU;QACV,cAAc,CAAC,2BAA2B,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAExE,qBAAqB;QACrB,IAAI,OAAO,CAAC,OAAO,EAAE;YACjB,OAAO,CAAC,eAAe,EAAE,CAAC;YAE1B,KAAK,CAAC,mBAAmB,EAAE,CAAC;YAE5B,YAAY;YACZ,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;YACxC,IAAI,OAAO,CAAC,GAAG,EAAE;gBACb,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;aACnC;YAED,cAAc,CAAC,yBAAyB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAE7D,OAAO,CAAC,0BAA0B,GAAG,KAAK,CAAC,4BAA4B,CAAC,kBAAkB,CAAC;YAE3F,YAAY;YACZ,MAAM,OAAO,GAAG,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YAE5C,IAAI,OAAO,CAAC,MAAM,EAAE;gBAChB,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;aACzC;YAED,IAAI,OAAO,CAAC,GAAG,EAAE;gBACb,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;aACrC;YAED,IAAI,OAAO,CAAC,GAAG,EAAE;gBACb,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;aACtC;YAED,IAAI,OAAO,CAAC,WAAW,EAAE;gBACrB,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;aACxC;YAED,IAAI,OAAO,CAAC,OAAO,EAAE;gBACjB,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;aAC1C;YAED,cAAc,CAAC,6BAA6B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAE/D,uBAAuB;YACvB,MAAM,UAAU,GAAG,eAAe,CAAC;YACnC,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YAEhC,MAAM,QAAQ,GAAG;gBACb,OAAO;gBACP,gBAAgB;gBAChB,gBAAgB;gBAChB,UAAU;gBACV,cAAc;gBACd,kBAAkB;gBAClB,gBAAgB;gBAChB,cAAc;gBACd,cAAc;gBACd,mBAAmB;gBACnB,oBAAoB;gBACpB,sBAAsB;gBACtB,uBAAuB;gBACvB,QAAQ;gBACR,mBAAmB;gBACnB,mBAAmB;gBACnB,uBAAuB;gBACvB,aAAa;gBACb,yBAAyB;gBACzB,8BAA8B;gBAC9B,oBAAoB;gBACpB,kBAAkB;gBAClB,SAAS;gBACT,aAAa;gBACb,aAAa;gBACb,mBAAmB;gBACnB,kBAAkB;gBAClB,YAAY;gBACZ,aAAa;gBACb,eAAe;gBACf,gBAAgB;gBAChB,cAAc;gBACd,cAAc;gBACd,uBAAuB;gBACvB,YAAY;aACf,CAAC;YACF,MAAM,QAAQ,GAAa,CAAC,kBAAkB,CAAC,CAAC;YAChD,MAAM,cAAc,GAAa,EAAE,CAAC;YAEpC,cAAc,CAAC,8BAA8B,CAAyB;gBAClE,aAAa,EAAE,QAAQ;gBACvB,mBAAmB,EAAE,cAAc;gBACnC,QAAQ,EAAE,QAAQ;gBAClB,OAAO,EAAE,OAAO;gBAChB,qBAAqB,EAAE,CAAC;aAC3B,CAAC,CAAC;YAEH,OAAO,CAAC,SAAS,CACb,KAAK,CAAC,SAAS,EAAE,CAAC,YAAY,CAC1B,UAAU,EACc;gBACpB,UAAU,EAAE,OAAO;gBACnB,aAAa,EAAE,QAAQ;gBACvB,mBAAmB,EAAE,cAAc;gBACnC,QAAQ,EAAE,QAAQ;gBAClB,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,SAAS;gBACpB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,eAAe,EAAE,EAAE,qBAAqB,EAAE,CAAC,EAAE;aAChD,EACD,MAAM,CACT,EACD,OAAO,CACV,CAAC;SACL;QACD,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,WAAW,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAEvC,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,cAAc,CAAC,KAAa,EAAE,IAAU,EAAE,OAAgB;QAC7D,MAAM,OAAO,GAAiC,OAAO,CAAC,eAAe,CAAC;QACtE,IAAI,CAAC,OAAO,EAAE;YACV,OAAO;SACV;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,EAAE;YACT,OAAO;SACV;QAED,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAE5B,WAAW;QACX,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,kBAAkB,EAAE,CAAC,CAAC;QACrF,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,YAAa,CAAC,QAAQ,CAAC,CAAC;QAExF,eAAe;QACf,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5D,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,kBAAkB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAChF,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACjE,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACnE,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAEnE,sBAAsB;QACtB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,mBAAmB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACrE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,oBAAoB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACvE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,sBAAsB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC3E,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,uBAAuB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAE7E,mBAAmB;QACnB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,mBAAmB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7E,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,mBAAmB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACtE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,uBAAuB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACjF,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAE5D,gBAAgB;QAChB,iCAAiC;QACjC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,yBAAyB,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAClF,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,8BAA8B,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC3F,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,oBAAoB,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAC/E,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,kBAAkB,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC9E,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACxE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5D,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,mBAAmB,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAEvE,aAAa;QACb,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,kBAAkB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3E,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC5E,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC9E,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,eAAe,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAClF,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,gBAAgB,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACpF,yBAAyB;QACzB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5D,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5D,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,uBAAuB,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAEjF,SAAS;QACT,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAExD,iBAAiB;QACjB,2BAA2B;QAE3B,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IAED;;;OAGG;IACI,cAAc;QACjB,OAAO,EAAE,CAAC;IACd,CAAC;IAEM,OAAO,CAAC,kBAA4B;QACvC,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;IAEM,KAAK,CAAC,IAAY;QACrB,OAAO,mBAAmB,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IACnG,CAAC;IAEM,SAAS;QACZ,MAAM,mBAAmB,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAC9C,mBAAmB,CAAC,UAAU,GAAG,+BAA+B,CAAC;QACjE,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAEM,YAAY;QACf,OAAO,uBAAuB,CAAC;IACnC,CAAC;IAED,UAAU;IACH,MAAM,CAAC,KAAK,CAAC,MAAW,EAAE,KAAY,EAAE,OAAe;QAC1D,OAAO,mBAAmB,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,qBAAqB,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAClH,CAAC;;AApbD;;GAEG;AACW,gDAA0B,GAAG,mFAAmF,AAAtF,CAAuF;AAOxH;IADN,SAAS,EAAE;qDACQ;AAMb;IADN,SAAS,EAAE;wDACa;AAOlB;IADN,SAAS,EAAE;4DACiB;AAStB;IADN,SAAS,EAAE;wDAC8B;AAMnC;IADN,SAAS,EAAE;wDACyC;AAM9C;IADN,SAAS,EAAE;4DACe;AAMpB;IADN,SAAS,EAAE;6DACgB;AAMrB;IADN,SAAS,EAAE;+DACkB;AAMvB;IADN,SAAS,EAAE;gEACmB;AASxB;IADN,SAAS,EAAE;6DACwD;AAM7D;IADN,SAAS,EAAE;6DACc;AAYnB;IADN,SAAS,EAAE;mEACuB;AAM5B;IADN,SAAS,EAAE;uEACwB;AAM7B;IADN,SAAS,EAAE;8DACoC;AASzC;IADN,SAAS,EAAE;sDACO;AAeZ;IADN,SAAS,EAAE;4DACoD;AAMzD;IADN,SAAS,EAAE;mEACgE;AAMrE;IADN,SAAS,EAAE;oEACiD;AAMtD;IADN,SAAS,EAAE;sEACiE;AAMtE;IADN,SAAS,EAAE;uEACkE;AAMvE;IADN,SAAS,EAAE;wDACW;AAMhB;IADN,SAAS,EAAE;wDACS;AAMd;IADN,SAAS,EAAE;oEACuB;AAgRvC,aAAa,CAAC,mCAAmC,EAAE,qBAAqB,CAAC,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport type { Nullable } from \"core/types\";\r\nimport { SerializationHelper, serialize } from \"core/Misc/decorators\";\r\nimport type { Matrix } from \"core/Maths/math.vector\";\r\nimport { Vector4 } from \"core/Maths/math.vector\";\r\nimport type { IAnimatable } from \"core/Animations/animatable.interface\";\r\nimport type { BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\nimport { Texture } from \"core/Materials/Textures/texture\";\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 type { Scene } from \"core/scene\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { Color4 } from \"core/Maths/math.color\";\r\nimport { EffectFallbacks } from \"core/Materials/effectFallbacks\";\r\nimport { Constants } from \"core/Engines/constants\";\r\n\r\nimport \"./shaders/mrdlBackplate.fragment\";\r\nimport \"./shaders/mrdlBackplate.vertex\";\r\n\r\n/** @internal */\r\nclass MRDLBackplateMaterialDefines extends MaterialDefines {\r\n /*\r\n \"IRIDESCENCE_ENABLE\", \"SMOOTH_EDGES\"\r\n */\r\n public IRIDESCENCE_ENABLE = true;\r\n public SMOOTH_EDGES = true;\r\n\r\n constructor() {\r\n super();\r\n this._needNormals = true;\r\n this.rebuild();\r\n }\r\n}\r\n\r\n/**\r\n * Class used to render backplate material with MRDL\r\n */\r\nexport class MRDLBackplateMaterial extends PushMaterial {\r\n /**\r\n * URL pointing to the texture used to define the coloring for the Iridescent Map effect.\r\n */\r\n public static IRIDESCENT_MAP_TEXTURE_URL = \"https://assets.babylonjs.com/meshes/MRTK/MRDL/mrtk-mrdl-backplate-iridescence.png\";\r\n private _iridescentMapTexture: Texture;\r\n\r\n /**\r\n * Gets or sets the corner radius on the backplate. If this value is changed, update the lineWidth to match.\r\n */\r\n @serialize()\r\n public radius = 0.3;\r\n\r\n /**\r\n * Gets or sets the line width of the backplate.\r\n */\r\n @serialize()\r\n public lineWidth = 0.003;\r\n\r\n /**\r\n * Gets or sets whether to use absolute sizes when calculating effects on the backplate.\r\n * Since desktop and VR/AR have different relative sizes, it's usually best to keep this false.\r\n */\r\n @serialize()\r\n public absoluteSizes = false;\r\n\r\n /** @internal */\r\n public _filterWidth = 1;\r\n\r\n /**\r\n * Gets or sets the base color of the backplate.\r\n */\r\n @serialize()\r\n public baseColor = new Color4(0, 0, 0, 1);\r\n\r\n /**\r\n * Gets or sets the line color of the backplate.\r\n */\r\n @serialize()\r\n public lineColor = new Color4(0.2, 0.262745, 0.4, 1);\r\n\r\n /**\r\n * Gets or sets the top left Radii Multiplier.\r\n */\r\n @serialize()\r\n public radiusTopLeft = 1.0;\r\n\r\n /**\r\n * Gets or sets the top left Radii Multiplier.\r\n */\r\n @serialize()\r\n public radiusTopRight = 1.0;\r\n\r\n /**\r\n * Gets or sets the top left Radii Multiplier.\r\n */\r\n @serialize()\r\n public radiusBottomLeft = 1.0;\r\n\r\n /**\r\n * Gets or sets the top left Radii Multiplier.\r\n */\r\n @serialize()\r\n public radiusBottomRight = 1.0;\r\n\r\n /** @internal */\r\n public _rate = 0;\r\n\r\n /**\r\n * Gets or sets the color of the highlights on the backplate line.\r\n */\r\n @serialize()\r\n public highlightColor = new Color4(0.239216, 0.435294, 0.827451, 1);\r\n\r\n /**\r\n * Gets or sets the width of the highlights on the backplate line.\r\n */\r\n @serialize()\r\n public highlightWidth = 0;\r\n\r\n /** @internal */\r\n public _highlightTransform = new Vector4(1, 1, 0, 0);\r\n\r\n /** @internal */\r\n public _highlight = 1;\r\n\r\n /**\r\n * Gets or sets the intensity of the iridescence effect.\r\n */\r\n @serialize()\r\n public iridescenceIntensity = 0.45;\r\n\r\n /**\r\n * Gets or sets the intensity of the iridescence effect on the backplate edges.\r\n */\r\n @serialize()\r\n public iridescenceEdgeIntensity = 1;\r\n\r\n /**\r\n * Gets or sets the Tint of the iridescence effect on the backplate.\r\n */\r\n @serialize()\r\n public iridescenceTint = new Color4(1, 1, 1, 1);\r\n\r\n /** @internal */\r\n public _angle = -45;\r\n\r\n /**\r\n * Gets or sets the opacity of the backplate (0.0 - 1.0).\r\n */\r\n @serialize()\r\n public fadeOut = 1;\r\n\r\n /** @internal */\r\n public _reflected = true;\r\n\r\n /** @internal */\r\n public _frequency = 1;\r\n\r\n /** @internal */\r\n public _verticalOffset = 0;\r\n\r\n /**\r\n * Gets or sets the gradient color effect on the backplate.\r\n */\r\n @serialize()\r\n public gradientColor = new Color4(0.74902, 0.74902, 0.74902, 1);\r\n\r\n /**\r\n * Gets or sets the top left gradient color effect on the backplate.\r\n */\r\n @serialize()\r\n public topLeftGradientColor = new Color4(0.00784314, 0.294118, 0.580392, 1);\r\n\r\n /**\r\n * Gets or sets the top right gradient color effect on the backplate.\r\n */\r\n @serialize()\r\n public topRightGradientColor = new Color4(0.305882, 0, 1, 1);\r\n\r\n /**\r\n * Gets or sets the bottom left gradient color effect on the backplate.\r\n */\r\n @serialize()\r\n public bottomLeftGradientColor = new Color4(0.133333, 0.258824, 0.992157, 1);\r\n\r\n /**\r\n * Gets or sets the bottom right gradient color effect on the backplate.\r\n */\r\n @serialize()\r\n public bottomRightGradientColor = new Color4(0.176471, 0.176471, 0.619608, 1);\r\n\r\n /**\r\n * Gets or sets the edge width of the backplate.\r\n */\r\n @serialize()\r\n public edgeWidth = 0.5;\r\n\r\n /**\r\n * Gets or sets the edge width of the backplate.\r\n */\r\n @serialize()\r\n public edgePower = 1;\r\n\r\n /**\r\n * Gets or sets the edge width of the backplate.\r\n */\r\n @serialize()\r\n public edgeLineGradientBlend = 0.5;\r\n\r\n constructor(name: string, scene?: Scene) {\r\n super(name, scene);\r\n this.alphaMode = Constants.ALPHA_DISABLE;\r\n this.backFaceCulling = false;\r\n\r\n this._iridescentMapTexture = new Texture(MRDLBackplateMaterial.IRIDESCENT_MAP_TEXTURE_URL, this.getScene(), true, false, Texture.NEAREST_SAMPLINGMODE);\r\n }\r\n\r\n public needAlphaBlending(): boolean {\r\n return false;\r\n }\r\n\r\n public needAlphaTesting(): boolean {\r\n return false;\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): boolean {\r\n const drawWrapper = subMesh._drawWrapper;\r\n\r\n if (this.isFrozen) {\r\n if (drawWrapper.effect && drawWrapper._wasPreviouslyReady) {\r\n return true;\r\n }\r\n }\r\n\r\n if (!subMesh.materialDefines) {\r\n subMesh.materialDefines = new MRDLBackplateMaterialDefines();\r\n }\r\n\r\n const defines = <MRDLBackplateMaterialDefines>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 // Attribs\r\n MaterialHelper.PrepareDefinesForAttributes(mesh, defines, false, false);\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 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 if (defines.TANGENT) {\r\n attribs.push(VertexBuffer.TangentKind);\r\n }\r\n\r\n MaterialHelper.PrepareAttributesForInstances(attribs, defines);\r\n\r\n // Legacy browser patch\r\n const shaderName = \"mrdlBackplate\";\r\n const join = defines.toString();\r\n\r\n const uniforms = [\r\n \"world\",\r\n \"viewProjection\",\r\n \"cameraPosition\",\r\n \"_Radius_\",\r\n \"_Line_Width_\",\r\n \"_Absolute_Sizes_\",\r\n \"_Filter_Width_\",\r\n \"_Base_Color_\",\r\n \"_Line_Color_\",\r\n \"_Radius_Top_Left_\",\r\n \"_Radius_Top_Right_\",\r\n \"_Radius_Bottom_Left_\",\r\n \"_Radius_Bottom_Right_\",\r\n \"_Rate_\",\r\n \"_Highlight_Color_\",\r\n \"_Highlight_Width_\",\r\n \"_Highlight_Transform_\",\r\n \"_Highlight_\",\r\n \"_Iridescence_Intensity_\",\r\n \"_Iridescence_Edge_Intensity_\",\r\n \"_Iridescence_Tint_\",\r\n \"_Iridescent_Map_\",\r\n \"_Angle_\",\r\n \"_Reflected_\",\r\n \"_Frequency_\",\r\n \"_Vertical_Offset_\",\r\n \"_Gradient_Color_\",\r\n \"_Top_Left_\",\r\n \"_Top_Right_\",\r\n \"_Bottom_Left_\",\r\n \"_Bottom_Right_\",\r\n \"_Edge_Width_\",\r\n \"_Edge_Power_\",\r\n \"_Line_Gradient_Blend_\",\r\n \"_Fade_Out_\",\r\n ];\r\n const samplers: string[] = [\"_Iridescent_Map_\"];\r\n const uniformBuffers: 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 );\r\n }\r\n if (!subMesh.effect || !subMesh.effect.isReady()) {\r\n return false;\r\n }\r\n\r\n defines._renderId = scene.getRenderId();\r\n drawWrapper._wasPreviouslyReady = true;\r\n\r\n return true;\r\n }\r\n\r\n public bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void {\r\n const defines = <MRDLBackplateMaterialDefines>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\", this.getScene().getTransformMatrix());\r\n this._activeEffect.setVector3(\"cameraPosition\", this.getScene().activeCamera!.position);\r\n\r\n // \"Round Rect\"\r\n this._activeEffect.setFloat(\"_Radius_\", this.radius);\r\n this._activeEffect.setFloat(\"_Line_Width_\", this.lineWidth);\r\n this._activeEffect.setFloat(\"_Absolute_Sizes_\", this.absoluteSizes ? 1.0 : 0.0);\r\n this._activeEffect.setFloat(\"_Filter_Width_\", this._filterWidth);\r\n this._activeEffect.setDirectColor4(\"_Base_Color_\", this.baseColor);\r\n this._activeEffect.setDirectColor4(\"_Line_Color_\", this.lineColor);\r\n\r\n // \"Radii Multipliers\"\r\n this._activeEffect.setFloat(\"_Radius_Top_Left_\", this.radiusTopLeft);\r\n this._activeEffect.setFloat(\"_Radius_Top_Right_\", this.radiusTopRight);\r\n this._activeEffect.setFloat(\"_Radius_Bottom_Left_\", this.radiusBottomLeft);\r\n this._activeEffect.setFloat(\"_Radius_Bottom_Right_\", this.radiusBottomRight);\r\n\r\n // \"Line Highlight\"\r\n this._activeEffect.setFloat(\"_Rate_\", this._rate);\r\n this._activeEffect.setDirectColor4(\"_Highlight_Color_\", this.highlightColor);\r\n this._activeEffect.setFloat(\"_Highlight_Width_\", this.highlightWidth);\r\n this._activeEffect.setVector4(\"_Highlight_Transform_\", this._highlightTransform);\r\n this._activeEffect.setFloat(\"_Highlight_\", this._highlight);\r\n\r\n // \"Iridescence\"\r\n //define IRIDESCENCE_ENABLE true;\r\n this._activeEffect.setFloat(\"_Iridescence_Intensity_\", this.iridescenceIntensity);\r\n this._activeEffect.setFloat(\"_Iridescence_Edge_Intensity_\", this.iridescenceEdgeIntensity);\r\n this._activeEffect.setDirectColor4(\"_Iridescence_Tint_\", this.iridescenceTint);\r\n this._activeEffect.setTexture(\"_Iridescent_Map_\", this._iridescentMapTexture);\r\n this._activeEffect.setFloat(\"_Angle_\", this._angle);\r\n this._activeEffect.setFloat(\"_Reflected_\", this._reflected ? 1.0 : 0.0);\r\n this._activeEffect.setFloat(\"_Frequency_\", this._frequency);\r\n this._activeEffect.setFloat(\"_Vertical_Offset_\", this._verticalOffset);\r\n\r\n // \"Gradient\"\r\n this._activeEffect.setDirectColor4(\"_Gradient_Color_\", this.gradientColor);\r\n this._activeEffect.setDirectColor4(\"_Top_Left_\", this.topLeftGradientColor);\r\n this._activeEffect.setDirectColor4(\"_Top_Right_\", this.topRightGradientColor);\r\n this._activeEffect.setDirectColor4(\"_Bottom_Left_\", this.bottomLeftGradientColor);\r\n this._activeEffect.setDirectColor4(\"_Bottom_Right_\", this.bottomRightGradientColor);\r\n //define EDGE_ONLY false;\r\n this._activeEffect.setFloat(\"_Edge_Width_\", this.edgeWidth);\r\n this._activeEffect.setFloat(\"_Edge_Power_\", this.edgePower);\r\n this._activeEffect.setFloat(\"_Line_Gradient_Blend_\", this.edgeLineGradientBlend);\r\n\r\n // \"Fade\"\r\n this._activeEffect.setFloat(\"_Fade_Out_\", this.fadeOut);\r\n\r\n // \"Antialiasing\"\r\n //define SMOOTH_EDGES true;\r\n\r\n this._afterBind(mesh, this._activeEffect, subMesh);\r\n }\r\n\r\n /**\r\n * Get the list of animatables in the material.\r\n * @returns the list of animatables object used in the material\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): MRDLBackplateMaterial {\r\n return SerializationHelper.Clone(() => new MRDLBackplateMaterial(name, this.getScene()), this);\r\n }\r\n\r\n public serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.customType = \"BABYLON.MRDLBackplateMaterial\";\r\n return serializationObject;\r\n }\r\n\r\n public getClassName(): string {\r\n return \"MRDLBackplateMaterial\";\r\n }\r\n\r\n // Statics\r\n public static Parse(source: any, scene: Scene, rootUrl: string): MRDLBackplateMaterial {\r\n return SerializationHelper.Parse(() => new MRDLBackplateMaterial(source.name, scene), source, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.GUI.MRDLBackplateMaterial\", MRDLBackplateMaterial);\r\n"]}
|
|
1
|
+
{"version":3,"file":"mrdlBackplateMaterial.js","sourceRoot":"","sources":["../../../../../../dev/gui/src/3D/materials/mrdl/mrdlBackplateMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport type { Nullable } from \"core/types\";\r\nimport { SerializationHelper, serialize } from \"core/Misc/decorators\";\r\nimport type { Matrix } from \"core/Maths/math.vector\";\r\nimport { Vector4 } from \"core/Maths/math.vector\";\r\nimport type { IAnimatable } from \"core/Animations/animatable.interface\";\r\nimport type { BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\nimport { Texture } from \"core/Materials/Textures/texture\";\r\nimport { MaterialDefines } from \"core/Materials/materialDefines\";\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 type { Scene } from \"core/scene\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { Color4 } from \"core/Maths/math.color\";\r\nimport { EffectFallbacks } from \"core/Materials/effectFallbacks\";\r\nimport { Constants } from \"core/Engines/constants\";\r\n\r\nimport \"./shaders/mrdlBackplate.fragment\";\r\nimport \"./shaders/mrdlBackplate.vertex\";\r\nimport { HandleFallbacksForShadows, PrepareAttributesForInstances, PrepareDefinesForAttributes, PrepareUniformsAndSamplersList } from \"core/Materials/materialHelper.functions\";\r\n\r\n/** @internal */\r\nclass MRDLBackplateMaterialDefines extends MaterialDefines {\r\n /*\r\n \"IRIDESCENCE_ENABLE\", \"SMOOTH_EDGES\"\r\n */\r\n public IRIDESCENCE_ENABLE = true;\r\n public SMOOTH_EDGES = true;\r\n\r\n constructor() {\r\n super();\r\n this._needNormals = true;\r\n this.rebuild();\r\n }\r\n}\r\n\r\n/**\r\n * Class used to render backplate material with MRDL\r\n */\r\nexport class MRDLBackplateMaterial extends PushMaterial {\r\n /**\r\n * URL pointing to the texture used to define the coloring for the Iridescent Map effect.\r\n */\r\n public static IRIDESCENT_MAP_TEXTURE_URL = \"https://assets.babylonjs.com/meshes/MRTK/MRDL/mrtk-mrdl-backplate-iridescence.png\";\r\n private _iridescentMapTexture: Texture;\r\n\r\n /**\r\n * Gets or sets the corner radius on the backplate. If this value is changed, update the lineWidth to match.\r\n */\r\n @serialize()\r\n public radius = 0.3;\r\n\r\n /**\r\n * Gets or sets the line width of the backplate.\r\n */\r\n @serialize()\r\n public lineWidth = 0.003;\r\n\r\n /**\r\n * Gets or sets whether to use absolute sizes when calculating effects on the backplate.\r\n * Since desktop and VR/AR have different relative sizes, it's usually best to keep this false.\r\n */\r\n @serialize()\r\n public absoluteSizes = false;\r\n\r\n /** @internal */\r\n public _filterWidth = 1;\r\n\r\n /**\r\n * Gets or sets the base color of the backplate.\r\n */\r\n @serialize()\r\n public baseColor = new Color4(0, 0, 0, 1);\r\n\r\n /**\r\n * Gets or sets the line color of the backplate.\r\n */\r\n @serialize()\r\n public lineColor = new Color4(0.2, 0.262745, 0.4, 1);\r\n\r\n /**\r\n * Gets or sets the top left Radii Multiplier.\r\n */\r\n @serialize()\r\n public radiusTopLeft = 1.0;\r\n\r\n /**\r\n * Gets or sets the top left Radii Multiplier.\r\n */\r\n @serialize()\r\n public radiusTopRight = 1.0;\r\n\r\n /**\r\n * Gets or sets the top left Radii Multiplier.\r\n */\r\n @serialize()\r\n public radiusBottomLeft = 1.0;\r\n\r\n /**\r\n * Gets or sets the top left Radii Multiplier.\r\n */\r\n @serialize()\r\n public radiusBottomRight = 1.0;\r\n\r\n /** @internal */\r\n public _rate = 0;\r\n\r\n /**\r\n * Gets or sets the color of the highlights on the backplate line.\r\n */\r\n @serialize()\r\n public highlightColor = new Color4(0.239216, 0.435294, 0.827451, 1);\r\n\r\n /**\r\n * Gets or sets the width of the highlights on the backplate line.\r\n */\r\n @serialize()\r\n public highlightWidth = 0;\r\n\r\n /** @internal */\r\n public _highlightTransform = new Vector4(1, 1, 0, 0);\r\n\r\n /** @internal */\r\n public _highlight = 1;\r\n\r\n /**\r\n * Gets or sets the intensity of the iridescence effect.\r\n */\r\n @serialize()\r\n public iridescenceIntensity = 0.45;\r\n\r\n /**\r\n * Gets or sets the intensity of the iridescence effect on the backplate edges.\r\n */\r\n @serialize()\r\n public iridescenceEdgeIntensity = 1;\r\n\r\n /**\r\n * Gets or sets the Tint of the iridescence effect on the backplate.\r\n */\r\n @serialize()\r\n public iridescenceTint = new Color4(1, 1, 1, 1);\r\n\r\n /** @internal */\r\n public _angle = -45;\r\n\r\n /**\r\n * Gets or sets the opacity of the backplate (0.0 - 1.0).\r\n */\r\n @serialize()\r\n public fadeOut = 1;\r\n\r\n /** @internal */\r\n public _reflected = true;\r\n\r\n /** @internal */\r\n public _frequency = 1;\r\n\r\n /** @internal */\r\n public _verticalOffset = 0;\r\n\r\n /**\r\n * Gets or sets the gradient color effect on the backplate.\r\n */\r\n @serialize()\r\n public gradientColor = new Color4(0.74902, 0.74902, 0.74902, 1);\r\n\r\n /**\r\n * Gets or sets the top left gradient color effect on the backplate.\r\n */\r\n @serialize()\r\n public topLeftGradientColor = new Color4(0.00784314, 0.294118, 0.580392, 1);\r\n\r\n /**\r\n * Gets or sets the top right gradient color effect on the backplate.\r\n */\r\n @serialize()\r\n public topRightGradientColor = new Color4(0.305882, 0, 1, 1);\r\n\r\n /**\r\n * Gets or sets the bottom left gradient color effect on the backplate.\r\n */\r\n @serialize()\r\n public bottomLeftGradientColor = new Color4(0.133333, 0.258824, 0.992157, 1);\r\n\r\n /**\r\n * Gets or sets the bottom right gradient color effect on the backplate.\r\n */\r\n @serialize()\r\n public bottomRightGradientColor = new Color4(0.176471, 0.176471, 0.619608, 1);\r\n\r\n /**\r\n * Gets or sets the edge width of the backplate.\r\n */\r\n @serialize()\r\n public edgeWidth = 0.5;\r\n\r\n /**\r\n * Gets or sets the edge width of the backplate.\r\n */\r\n @serialize()\r\n public edgePower = 1;\r\n\r\n /**\r\n * Gets or sets the edge width of the backplate.\r\n */\r\n @serialize()\r\n public edgeLineGradientBlend = 0.5;\r\n\r\n constructor(name: string, scene?: Scene) {\r\n super(name, scene);\r\n this.alphaMode = Constants.ALPHA_DISABLE;\r\n this.backFaceCulling = false;\r\n\r\n this._iridescentMapTexture = new Texture(MRDLBackplateMaterial.IRIDESCENT_MAP_TEXTURE_URL, this.getScene(), true, false, Texture.NEAREST_SAMPLINGMODE);\r\n }\r\n\r\n public needAlphaBlending(): boolean {\r\n return false;\r\n }\r\n\r\n public needAlphaTesting(): boolean {\r\n return false;\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): boolean {\r\n const drawWrapper = subMesh._drawWrapper;\r\n\r\n if (this.isFrozen) {\r\n if (drawWrapper.effect && drawWrapper._wasPreviouslyReady) {\r\n return true;\r\n }\r\n }\r\n\r\n if (!subMesh.materialDefines) {\r\n subMesh.materialDefines = new MRDLBackplateMaterialDefines();\r\n }\r\n\r\n const defines = <MRDLBackplateMaterialDefines>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 // Attribs\r\n PrepareDefinesForAttributes(mesh, defines, false, false);\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 HandleFallbacksForShadows(defines, fallbacks);\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 if (defines.TANGENT) {\r\n attribs.push(VertexBuffer.TangentKind);\r\n }\r\n\r\n PrepareAttributesForInstances(attribs, defines);\r\n\r\n // Legacy browser patch\r\n const shaderName = \"mrdlBackplate\";\r\n const join = defines.toString();\r\n\r\n const uniforms = [\r\n \"world\",\r\n \"viewProjection\",\r\n \"cameraPosition\",\r\n \"_Radius_\",\r\n \"_Line_Width_\",\r\n \"_Absolute_Sizes_\",\r\n \"_Filter_Width_\",\r\n \"_Base_Color_\",\r\n \"_Line_Color_\",\r\n \"_Radius_Top_Left_\",\r\n \"_Radius_Top_Right_\",\r\n \"_Radius_Bottom_Left_\",\r\n \"_Radius_Bottom_Right_\",\r\n \"_Rate_\",\r\n \"_Highlight_Color_\",\r\n \"_Highlight_Width_\",\r\n \"_Highlight_Transform_\",\r\n \"_Highlight_\",\r\n \"_Iridescence_Intensity_\",\r\n \"_Iridescence_Edge_Intensity_\",\r\n \"_Iridescence_Tint_\",\r\n \"_Iridescent_Map_\",\r\n \"_Angle_\",\r\n \"_Reflected_\",\r\n \"_Frequency_\",\r\n \"_Vertical_Offset_\",\r\n \"_Gradient_Color_\",\r\n \"_Top_Left_\",\r\n \"_Top_Right_\",\r\n \"_Bottom_Left_\",\r\n \"_Bottom_Right_\",\r\n \"_Edge_Width_\",\r\n \"_Edge_Power_\",\r\n \"_Line_Gradient_Blend_\",\r\n \"_Fade_Out_\",\r\n ];\r\n const samplers: string[] = [\"_Iridescent_Map_\"];\r\n const uniformBuffers: string[] = [];\r\n\r\n 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 );\r\n }\r\n if (!subMesh.effect || !subMesh.effect.isReady()) {\r\n return false;\r\n }\r\n\r\n defines._renderId = scene.getRenderId();\r\n drawWrapper._wasPreviouslyReady = true;\r\n\r\n return true;\r\n }\r\n\r\n public bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void {\r\n const defines = <MRDLBackplateMaterialDefines>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\", this.getScene().getTransformMatrix());\r\n this._activeEffect.setVector3(\"cameraPosition\", this.getScene().activeCamera!.position);\r\n\r\n // \"Round Rect\"\r\n this._activeEffect.setFloat(\"_Radius_\", this.radius);\r\n this._activeEffect.setFloat(\"_Line_Width_\", this.lineWidth);\r\n this._activeEffect.setFloat(\"_Absolute_Sizes_\", this.absoluteSizes ? 1.0 : 0.0);\r\n this._activeEffect.setFloat(\"_Filter_Width_\", this._filterWidth);\r\n this._activeEffect.setDirectColor4(\"_Base_Color_\", this.baseColor);\r\n this._activeEffect.setDirectColor4(\"_Line_Color_\", this.lineColor);\r\n\r\n // \"Radii Multipliers\"\r\n this._activeEffect.setFloat(\"_Radius_Top_Left_\", this.radiusTopLeft);\r\n this._activeEffect.setFloat(\"_Radius_Top_Right_\", this.radiusTopRight);\r\n this._activeEffect.setFloat(\"_Radius_Bottom_Left_\", this.radiusBottomLeft);\r\n this._activeEffect.setFloat(\"_Radius_Bottom_Right_\", this.radiusBottomRight);\r\n\r\n // \"Line Highlight\"\r\n this._activeEffect.setFloat(\"_Rate_\", this._rate);\r\n this._activeEffect.setDirectColor4(\"_Highlight_Color_\", this.highlightColor);\r\n this._activeEffect.setFloat(\"_Highlight_Width_\", this.highlightWidth);\r\n this._activeEffect.setVector4(\"_Highlight_Transform_\", this._highlightTransform);\r\n this._activeEffect.setFloat(\"_Highlight_\", this._highlight);\r\n\r\n // \"Iridescence\"\r\n //define IRIDESCENCE_ENABLE true;\r\n this._activeEffect.setFloat(\"_Iridescence_Intensity_\", this.iridescenceIntensity);\r\n this._activeEffect.setFloat(\"_Iridescence_Edge_Intensity_\", this.iridescenceEdgeIntensity);\r\n this._activeEffect.setDirectColor4(\"_Iridescence_Tint_\", this.iridescenceTint);\r\n this._activeEffect.setTexture(\"_Iridescent_Map_\", this._iridescentMapTexture);\r\n this._activeEffect.setFloat(\"_Angle_\", this._angle);\r\n this._activeEffect.setFloat(\"_Reflected_\", this._reflected ? 1.0 : 0.0);\r\n this._activeEffect.setFloat(\"_Frequency_\", this._frequency);\r\n this._activeEffect.setFloat(\"_Vertical_Offset_\", this._verticalOffset);\r\n\r\n // \"Gradient\"\r\n this._activeEffect.setDirectColor4(\"_Gradient_Color_\", this.gradientColor);\r\n this._activeEffect.setDirectColor4(\"_Top_Left_\", this.topLeftGradientColor);\r\n this._activeEffect.setDirectColor4(\"_Top_Right_\", this.topRightGradientColor);\r\n this._activeEffect.setDirectColor4(\"_Bottom_Left_\", this.bottomLeftGradientColor);\r\n this._activeEffect.setDirectColor4(\"_Bottom_Right_\", this.bottomRightGradientColor);\r\n //define EDGE_ONLY false;\r\n this._activeEffect.setFloat(\"_Edge_Width_\", this.edgeWidth);\r\n this._activeEffect.setFloat(\"_Edge_Power_\", this.edgePower);\r\n this._activeEffect.setFloat(\"_Line_Gradient_Blend_\", this.edgeLineGradientBlend);\r\n\r\n // \"Fade\"\r\n this._activeEffect.setFloat(\"_Fade_Out_\", this.fadeOut);\r\n\r\n // \"Antialiasing\"\r\n //define SMOOTH_EDGES true;\r\n\r\n this._afterBind(mesh, this._activeEffect, subMesh);\r\n }\r\n\r\n /**\r\n * Get the list of animatables in the material.\r\n * @returns the list of animatables object used in the material\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): MRDLBackplateMaterial {\r\n return SerializationHelper.Clone(() => new MRDLBackplateMaterial(name, this.getScene()), this);\r\n }\r\n\r\n public serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.customType = \"BABYLON.MRDLBackplateMaterial\";\r\n return serializationObject;\r\n }\r\n\r\n public getClassName(): string {\r\n return \"MRDLBackplateMaterial\";\r\n }\r\n\r\n // Statics\r\n public static Parse(source: any, scene: Scene, rootUrl: string): MRDLBackplateMaterial {\r\n return SerializationHelper.Parse(() => new MRDLBackplateMaterial(source.name, scene), source, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.GUI.MRDLBackplateMaterial\", MRDLBackplateMaterial);\r\n"]}
|
|
@@ -3,7 +3,6 @@ import { Color4 } from "@babylonjs/core/Maths/math.color.js";
|
|
|
3
3
|
import { Constants } from "@babylonjs/core/Engines/constants.js";
|
|
4
4
|
import { EffectFallbacks } from "@babylonjs/core/Materials/effectFallbacks.js";
|
|
5
5
|
import { MaterialDefines } from "@babylonjs/core/Materials/materialDefines.js";
|
|
6
|
-
import { MaterialHelper } from "@babylonjs/core/Materials/materialHelper.js";
|
|
7
6
|
import { PushMaterial } from "@babylonjs/core/Materials/pushMaterial.js";
|
|
8
7
|
import { RegisterClass } from "@babylonjs/core/Misc/typeStore.js";
|
|
9
8
|
import { SerializationHelper, serialize } from "@babylonjs/core/Misc/decorators.js";
|
|
@@ -12,6 +11,7 @@ import { VertexBuffer } from "@babylonjs/core/Buffers/buffer.js";
|
|
|
12
11
|
import { Texture } from "@babylonjs/core/Materials/Textures/texture.js";
|
|
13
12
|
import "./shaders/mrdlFrontplate.fragment.js";
|
|
14
13
|
import "./shaders/mrdlFrontplate.vertex.js";
|
|
14
|
+
import { HandleFallbacksForShadows, PrepareAttributesForInstances, PrepareDefinesForAttributes, PrepareUniformsAndSamplersList } from "@babylonjs/core/Materials/materialHelper.functions.js";
|
|
15
15
|
/** @hidden */
|
|
16
16
|
class MRDLFrontplateMaterialDefines extends MaterialDefines {
|
|
17
17
|
constructor() {
|
|
@@ -210,7 +210,7 @@ export class MRDLFrontplateMaterial extends PushMaterial {
|
|
|
210
210
|
}
|
|
211
211
|
const engine = scene.getEngine();
|
|
212
212
|
// Attribs
|
|
213
|
-
|
|
213
|
+
PrepareDefinesForAttributes(mesh, defines, false, false);
|
|
214
214
|
// Get correct effect
|
|
215
215
|
if (defines.isDirty) {
|
|
216
216
|
defines.markAsProcessed();
|
|
@@ -220,7 +220,7 @@ export class MRDLFrontplateMaterial extends PushMaterial {
|
|
|
220
220
|
if (defines.FOG) {
|
|
221
221
|
fallbacks.addFallback(1, "FOG");
|
|
222
222
|
}
|
|
223
|
-
|
|
223
|
+
HandleFallbacksForShadows(defines, fallbacks);
|
|
224
224
|
defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;
|
|
225
225
|
//Attributes
|
|
226
226
|
const attribs = [VertexBuffer.PositionKind];
|
|
@@ -239,7 +239,7 @@ export class MRDLFrontplateMaterial extends PushMaterial {
|
|
|
239
239
|
if (defines.TANGENT) {
|
|
240
240
|
attribs.push(VertexBuffer.TangentKind);
|
|
241
241
|
}
|
|
242
|
-
|
|
242
|
+
PrepareAttributesForInstances(attribs, defines);
|
|
243
243
|
// Legacy browser patch
|
|
244
244
|
const shaderName = "mrdlFrontplate";
|
|
245
245
|
const join = defines.toString();
|
|
@@ -296,7 +296,7 @@ export class MRDLFrontplateMaterial extends PushMaterial {
|
|
|
296
296
|
];
|
|
297
297
|
const samplers = [];
|
|
298
298
|
const uniformBuffers = [];
|
|
299
|
-
|
|
299
|
+
PrepareUniformsAndSamplersList({
|
|
300
300
|
uniformsNames: uniforms,
|
|
301
301
|
uniformBuffersNames: uniformBuffers,
|
|
302
302
|
samplers: samplers,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mrdlFrontplateMaterial.js","sourceRoot":"","sources":["../../../../../../dev/gui/src/3D/materials/mrdl/mrdlFrontplateMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport type { AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport type { BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\nimport type { IAnimatable } from \"core/Animations/animatable.interface\";\r\nimport type { IEffectCreationOptions } from \"core/Materials/effect\";\r\nimport type { Matrix } from \"core/Maths/math.vector\";\r\nimport type { Mesh } from \"core/Meshes/mesh\";\r\nimport type { Nullable } from \"core/types\";\r\nimport type { Scene } from \"core/scene\";\r\nimport type { SubMesh } from \"core/Meshes/subMesh\";\r\n\r\nimport { Color4 } from \"core/Maths/math.color\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { EffectFallbacks } from \"core/Materials/effectFallbacks\";\r\nimport { MaterialDefines } from \"core/Materials/materialDefines\";\r\nimport { MaterialHelper } from \"core/Materials/materialHelper\";\r\nimport { PushMaterial } from \"core/Materials/pushMaterial\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { SerializationHelper, serialize } from \"core/Misc/decorators\";\r\nimport { Vector3 } from \"core/Maths/math.vector\";\r\nimport { VertexBuffer } from \"core/Buffers/buffer\";\r\nimport { Texture } from \"core/Materials/Textures/texture\";\r\n\r\nimport \"./shaders/mrdlFrontplate.fragment\";\r\nimport \"./shaders/mrdlFrontplate.vertex\";\r\n\r\n/** @hidden */\r\nclass MRDLFrontplateMaterialDefines extends MaterialDefines {\r\n /**\r\n * Sets default value for \"SMOOTH_EDGES\"\r\n */\r\n public SMOOTH_EDGES = true;\r\n\r\n constructor() {\r\n super();\r\n this._needNormals = true;\r\n this._needUVs = true;\r\n this.rebuild();\r\n }\r\n}\r\n\r\nexport class MRDLFrontplateMaterial extends PushMaterial {\r\n /**\r\n * Gets or sets the corner radius on the frontplate. If this value is changed, update the lineWidth to match.\r\n */\r\n @serialize()\r\n public radius = 0.12;\r\n\r\n /**\r\n * Gets or sets the line width of the frontplate.\r\n */\r\n @serialize()\r\n public lineWidth = 0.01;\r\n\r\n /**\r\n * Gets or sets whether the scale is relative to the frontplate height.\r\n */\r\n @serialize()\r\n public relativeToHeight = false;\r\n\r\n /** @hidden */\r\n public _filterWidth = 1.0;\r\n\r\n /**\r\n * Gets or sets the edge color of the frontplate.\r\n */\r\n @serialize()\r\n public edgeColor: Color4 = new Color4(0.53, 0.53, 0.53, 1);\r\n\r\n /**\r\n * Gets or sets whether to enable blob effects on the frontplate.\r\n */\r\n @serialize()\r\n public blobEnable = true;\r\n\r\n /**\r\n * Gets or sets the blob position on the frontplate.\r\n */\r\n @serialize()\r\n public blobPosition: Vector3 = new Vector3(100, 100, 100);\r\n\r\n /**\r\n * Gets or sets the blob intensity of the frontplate.\r\n */\r\n @serialize()\r\n public blobIntensity = 0.5;\r\n\r\n /**\r\n * Gets or sets the blob near size of the frontplate.\r\n */\r\n @serialize()\r\n public blobNearSize = 0.032;\r\n\r\n /**\r\n * Gets or sets the blob far size of the frontplate.\r\n */\r\n @serialize()\r\n public blobFarSize = 0.048;\r\n\r\n /**\r\n * Gets or sets the blob near distance of the frontplate.\r\n */\r\n @serialize()\r\n public blobNearDistance = 0.008;\r\n\r\n /**\r\n * Gets or sets the blob far distance of the frontplate.\r\n */\r\n @serialize()\r\n public blobFarDistance = 0.064;\r\n\r\n /**\r\n * Gets or sets the blob fade length of the frontplate.\r\n */\r\n @serialize()\r\n public blobFadeLength = 0.04;\r\n\r\n /**\r\n * Gets or sets the blob inner fade of the frontplate.\r\n */\r\n @serialize()\r\n public blobInnerFade = 0.01;\r\n\r\n /**\r\n * Gets or sets the blob pulse of the frontplate.\r\n */\r\n @serialize()\r\n public blobPulse = 0.0;\r\n\r\n /**\r\n * Gets or sets the blob fade effect on the frontplate.\r\n */\r\n @serialize()\r\n public blobFade = 1.0;\r\n\r\n /**\r\n * Gets or sets the maximum size of the blob pulse on the frontplate.\r\n */\r\n @serialize()\r\n public blobPulseMaxSize = 0.05;\r\n\r\n /**\r\n * Gets or sets whether to enable extra blob effects of the frontplate.\r\n */\r\n @serialize()\r\n public blobEnable2 = true;\r\n\r\n /**\r\n * Gets or sets blob2 position of the frontplate.\r\n */\r\n @serialize()\r\n public blobPosition2: Vector3 = new Vector3(10, 10.1, -0.6);\r\n\r\n /**\r\n * Gets or sets the blob2 near size of the frontplate.\r\n */\r\n @serialize()\r\n public blobNearSize2 = 0.008;\r\n\r\n /**\r\n * Gets or sets the blob2 inner fade of the frontplate.\r\n */\r\n @serialize()\r\n public blobInnerFade2 = 0.1;\r\n\r\n /**\r\n * Gets or sets the blob2 pulse of the frontplate.\r\n */\r\n @serialize()\r\n public blobPulse2 = 0.0;\r\n\r\n /**\r\n * Gets or sets the blob2 fade effect on the frontplate.\r\n */\r\n @serialize()\r\n public blobFade2 = 1.0;\r\n\r\n /**\r\n * Gets or sets the gaze intensity of the frontplate.\r\n */\r\n @serialize()\r\n public gazeIntensity = 0.8;\r\n\r\n /**\r\n * Gets or sets the gaze focus of the frontplate.\r\n */\r\n @serialize()\r\n public gazeFocus = 0.0;\r\n\r\n /**\r\n * Gets or sets the selection fuzz of the frontplate.\r\n */\r\n @serialize()\r\n public selectionFuzz = 0.5;\r\n\r\n /**\r\n * Gets or sets the fade intensity of the frontplate.\r\n */\r\n @serialize()\r\n public selected = 1.0;\r\n\r\n /**\r\n * Gets or sets the selection fade intensity of the frontplate.\r\n */\r\n @serialize()\r\n public selectionFade = 0.2;\r\n\r\n /**\r\n * Gets or sets the selection fade size of the frontplate.\r\n */\r\n @serialize()\r\n public selectionFadeSize = 0.0;\r\n\r\n /**\r\n * Gets or sets the selected distance of the frontplate.\r\n */\r\n @serialize()\r\n public selectedDistance = 0.08;\r\n\r\n /**\r\n * Gets or sets the selected fade length of the frontplate.\r\n */\r\n @serialize()\r\n public selectedFadeLength = 0.08;\r\n\r\n /**\r\n * Gets or sets the proximity maximum intensity of the frontplate.\r\n */\r\n @serialize()\r\n public proximityMaxIntensity = 0.45;\r\n\r\n /**\r\n * Gets or sets the proximity far distance of the frontplate.\r\n */\r\n @serialize()\r\n public proximityFarDistance = 0.16;\r\n\r\n /**\r\n * Gets or sets the proximity near radius of the frontplate.\r\n */\r\n @serialize()\r\n public proximityNearRadius = 0.016;\r\n\r\n /**\r\n * Gets or sets the proximity anisotropy of the frontplate.\r\n */\r\n @serialize()\r\n public proximityAnisotropy = 1.0;\r\n\r\n /**\r\n * Gets or sets whether to use global left index on the frontplate.\r\n */\r\n @serialize()\r\n public useGlobalLeftIndex = true;\r\n\r\n /**\r\n * Gets or sets whether to use global right index of the frontplate.\r\n */\r\n @serialize()\r\n public useGlobalRightIndex = true;\r\n\r\n /**\r\n * URL pointing to the texture used to define the coloring for the BLOB.\r\n */\r\n public static BLOB_TEXTURE_URL = \"\";\r\n\r\n /**\r\n * Gets or sets the opacity of the frontplate (0.0 - 1.0).\r\n */\r\n public fadeOut = 1.0;\r\n\r\n private _blobTexture: Texture;\r\n\r\n constructor(name: string, scene: Scene) {\r\n super(name, scene);\r\n this.alphaMode = Constants.ALPHA_ADD;\r\n this.disableDepthWrite = true;\r\n this.backFaceCulling = false;\r\n this._blobTexture = new Texture(MRDLFrontplateMaterial.BLOB_TEXTURE_URL, scene, true, false, Texture.NEAREST_SAMPLINGMODE);\r\n }\r\n\r\n public needAlphaBlending(): boolean {\r\n return true;\r\n }\r\n\r\n public needAlphaTesting(): boolean {\r\n return false;\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): boolean {\r\n const drawWrapper = subMesh._drawWrapper;\r\n\r\n if (this.isFrozen) {\r\n if (drawWrapper.effect && drawWrapper._wasPreviouslyReady) {\r\n return true;\r\n }\r\n }\r\n\r\n if (!subMesh.materialDefines) {\r\n subMesh.materialDefines = new MRDLFrontplateMaterialDefines();\r\n }\r\n\r\n const defines = <MRDLFrontplateMaterialDefines>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 // Attribs\r\n MaterialHelper.PrepareDefinesForAttributes(mesh, defines, false, false);\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 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 if (defines.TANGENT) {\r\n attribs.push(VertexBuffer.TangentKind);\r\n }\r\n\r\n MaterialHelper.PrepareAttributesForInstances(attribs, defines);\r\n\r\n // Legacy browser patch\r\n const shaderName = \"mrdlFrontplate\";\r\n const join = defines.toString();\r\n\r\n const uniforms = [\r\n \"world\",\r\n \"worldView\",\r\n \"worldViewProjection\",\r\n \"view\",\r\n \"projection\",\r\n \"viewProjection\",\r\n \"cameraPosition\",\r\n \"_Radius_\",\r\n \"_Line_Width_\",\r\n \"_Relative_To_Height_\",\r\n \"_Filter_Width_\",\r\n \"_Edge_Color_\",\r\n \"_Fade_Out_\",\r\n \"_Smooth_Edges_\",\r\n \"_Blob_Enable_\",\r\n \"_Blob_Position_\",\r\n \"_Blob_Intensity_\",\r\n \"_Blob_Near_Size_\",\r\n \"_Blob_Far_Size_\",\r\n \"_Blob_Near_Distance_\",\r\n \"_Blob_Far_Distance_\",\r\n \"_Blob_Fade_Length_\",\r\n \"_Blob_Inner_Fade_\",\r\n \"_Blob_Pulse_\",\r\n \"_Blob_Fade_\",\r\n \"_Blob_Pulse_Max_Size_\",\r\n \"_Blob_Enable_2_\",\r\n \"_Blob_Position_2_\",\r\n \"_Blob_Near_Size_2_\",\r\n \"_Blob_Inner_Fade_2_\",\r\n \"_Blob_Pulse_2_\",\r\n \"_Blob_Fade_2_\",\r\n \"_Gaze_Intensity_\",\r\n \"_Gaze_Focus_\",\r\n \"_Blob_Texture_\",\r\n \"_Selection_Fuzz_\",\r\n \"_Selected_\",\r\n \"_Selection_Fade_\",\r\n \"_Selection_Fade_Size_\",\r\n \"_Selected_Distance_\",\r\n \"_Selected_Fade_Length_\",\r\n \"_Proximity_Max_Intensity_\",\r\n \"_Proximity_Far_Distance_\",\r\n \"_Proximity_Near_Radius_\",\r\n \"_Proximity_Anisotropy_\",\r\n \"Global_Left_Index_Tip_Position\",\r\n \"Global_Right_Index_Tip_Position\",\r\n \"_Use_Global_Left_Index_\",\r\n \"_Use_Global_Right_Index_\",\r\n ];\r\n const samplers: string[] = [];\r\n const uniformBuffers: 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 );\r\n }\r\n if (!subMesh.effect || !subMesh.effect.isReady()) {\r\n return false;\r\n }\r\n\r\n defines._renderId = scene.getRenderId();\r\n drawWrapper._wasPreviouslyReady = true;\r\n\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 = <MRDLFrontplateMaterialDefines>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 this._activeEffect.setVector3(\"cameraPosition\", scene.activeCamera!.position);\r\n\r\n // \"Round Rect\"\r\n this._activeEffect.setFloat(\"_Radius_\", this.radius);\r\n this._activeEffect.setFloat(\"_Line_Width_\", this.lineWidth);\r\n this._activeEffect.setFloat(\"_Relative_To_Height_\", this.relativeToHeight ? 1.0 : 0.0);\r\n this._activeEffect.setFloat(\"_Filter_Width_\", this._filterWidth);\r\n this._activeEffect.setDirectColor4(\"_Edge_Color_\", this.edgeColor);\r\n\r\n // \"Fade\"\r\n this._activeEffect.setFloat(\"_Fade_Out_\", this.fadeOut);\r\n\r\n // \"Blob\"\r\n this._activeEffect.setFloat(\"_Blob_Enable_\", this.blobEnable ? 1.0 : 0.0);\r\n this._activeEffect.setVector3(\"_Blob_Position_\", this.blobPosition);\r\n this._activeEffect.setFloat(\"_Blob_Intensity_\", this.blobIntensity);\r\n this._activeEffect.setFloat(\"_Blob_Near_Size_\", this.blobNearSize);\r\n this._activeEffect.setFloat(\"_Blob_Far_Size_\", this.blobFarSize);\r\n this._activeEffect.setFloat(\"_Blob_Near_Distance_\", this.blobNearDistance);\r\n this._activeEffect.setFloat(\"_Blob_Far_Distance_\", this.blobFarDistance);\r\n this._activeEffect.setFloat(\"_Blob_Fade_Length_\", this.blobFadeLength);\r\n this._activeEffect.setFloat(\"_Blob_Inner_Fade_\", this.blobInnerFade);\r\n this._activeEffect.setFloat(\"_Blob_Pulse_\", this.blobPulse);\r\n this._activeEffect.setFloat(\"_Blob_Fade_\", this.blobFade);\r\n this._activeEffect.setFloat(\"_Blob_Pulse_Max_Size_\", this.blobPulseMaxSize);\r\n\r\n // \"Blob 2\"\r\n this._activeEffect.setFloat(\"_Blob_Enable_2_\", this.blobEnable2 ? 1.0 : 0.0);\r\n this._activeEffect.setVector3(\"_Blob_Position_2_\", this.blobPosition2);\r\n this._activeEffect.setFloat(\"_Blob_Near_Size_2_\", this.blobNearSize2);\r\n this._activeEffect.setFloat(\"_Blob_Inner_Fade_2_\", this.blobInnerFade2);\r\n this._activeEffect.setFloat(\"_Blob_Pulse_2_\", this.blobPulse2);\r\n this._activeEffect.setFloat(\"_Blob_Fade_2_\", this.blobFade2);\r\n\r\n // \"Gaze\"\r\n this._activeEffect.setFloat(\"_Gaze_Intensity_\", this.gazeIntensity);\r\n this._activeEffect.setFloat(\"_Gaze_Focus_\", this.gazeFocus);\r\n\r\n // \"Blob Texture\"\r\n this._activeEffect.setTexture(\"_Blob_Texture_\", this._blobTexture);\r\n\r\n // \"Selection\"\r\n this._activeEffect.setFloat(\"_Selection_Fuzz_\", this.selectionFuzz);\r\n this._activeEffect.setFloat(\"_Selected_\", this.selected);\r\n this._activeEffect.setFloat(\"_Selection_Fade_\", this.selectionFade);\r\n this._activeEffect.setFloat(\"_Selection_Fade_Size_\", this.selectionFadeSize);\r\n this._activeEffect.setFloat(\"_Selected_Distance_\", this.selectedDistance);\r\n this._activeEffect.setFloat(\"_Selected_Fade_Length_\", this.selectedFadeLength);\r\n\r\n // \"Proximity\"\r\n this._activeEffect.setFloat(\"_Proximity_Max_Intensity_\", this.proximityMaxIntensity);\r\n this._activeEffect.setFloat(\"_Proximity_Far_Distance_\", this.proximityFarDistance);\r\n this._activeEffect.setFloat(\"_Proximity_Near_Radius_\", this.proximityNearRadius);\r\n this._activeEffect.setFloat(\"_Proximity_Anisotropy_\", this.proximityAnisotropy);\r\n\r\n // \"Global\"\r\n this._activeEffect.setFloat(\"_Use_Global_Left_Index_\", this.useGlobalLeftIndex ? 1.0 : 0.0);\r\n this._activeEffect.setFloat(\"_Use_Global_Right_Index_\", this.useGlobalRightIndex ? 1.0 : 0.0);\r\n\r\n // \"Antialiasing\"\r\n //define SMOOTH_EDGES true;\r\n\r\n this._afterBind(mesh, this._activeEffect, subMesh);\r\n }\r\n\r\n /**\r\n * Get the list of animatables in the material.\r\n * @returns the list of animatables object used in the material\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): MRDLFrontplateMaterial {\r\n return SerializationHelper.Clone(() => new MRDLFrontplateMaterial(name, this.getScene()), this);\r\n }\r\n\r\n public serialize(): unknown {\r\n const serializationObject = SerializationHelper.Serialize(this);\r\n serializationObject.customType = \"BABYLON.MRDLFrontplateMaterial\";\r\n return serializationObject;\r\n }\r\n\r\n public getClassName(): string {\r\n return \"MRDLFrontplateMaterial\";\r\n }\r\n\r\n // Statics\r\n public static Parse(source: any, scene: Scene, rootUrl: string): MRDLFrontplateMaterial {\r\n return SerializationHelper.Parse(() => new MRDLFrontplateMaterial(source.name, scene), source, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.GUI.MRDLFrontplateMaterial\", MRDLFrontplateMaterial);\r\n"]}
|
|
1
|
+
{"version":3,"file":"mrdlFrontplateMaterial.js","sourceRoot":"","sources":["../../../../../../dev/gui/src/3D/materials/mrdl/mrdlFrontplateMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport type { AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport type { BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\nimport type { IAnimatable } from \"core/Animations/animatable.interface\";\r\nimport type { IEffectCreationOptions } from \"core/Materials/effect\";\r\nimport type { Matrix } from \"core/Maths/math.vector\";\r\nimport type { Mesh } from \"core/Meshes/mesh\";\r\nimport type { Nullable } from \"core/types\";\r\nimport type { Scene } from \"core/scene\";\r\nimport type { SubMesh } from \"core/Meshes/subMesh\";\r\n\r\nimport { Color4 } from \"core/Maths/math.color\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { EffectFallbacks } from \"core/Materials/effectFallbacks\";\r\nimport { MaterialDefines } from \"core/Materials/materialDefines\";\r\nimport { PushMaterial } from \"core/Materials/pushMaterial\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { SerializationHelper, serialize } from \"core/Misc/decorators\";\r\nimport { Vector3 } from \"core/Maths/math.vector\";\r\nimport { VertexBuffer } from \"core/Buffers/buffer\";\r\nimport { Texture } from \"core/Materials/Textures/texture\";\r\n\r\nimport \"./shaders/mrdlFrontplate.fragment\";\r\nimport \"./shaders/mrdlFrontplate.vertex\";\r\nimport { HandleFallbacksForShadows, PrepareAttributesForInstances, PrepareDefinesForAttributes, PrepareUniformsAndSamplersList } from \"core/Materials/materialHelper.functions\";\r\n\r\n/** @hidden */\r\nclass MRDLFrontplateMaterialDefines extends MaterialDefines {\r\n /**\r\n * Sets default value for \"SMOOTH_EDGES\"\r\n */\r\n public SMOOTH_EDGES = true;\r\n\r\n constructor() {\r\n super();\r\n this._needNormals = true;\r\n this._needUVs = true;\r\n this.rebuild();\r\n }\r\n}\r\n\r\nexport class MRDLFrontplateMaterial extends PushMaterial {\r\n /**\r\n * Gets or sets the corner radius on the frontplate. If this value is changed, update the lineWidth to match.\r\n */\r\n @serialize()\r\n public radius = 0.12;\r\n\r\n /**\r\n * Gets or sets the line width of the frontplate.\r\n */\r\n @serialize()\r\n public lineWidth = 0.01;\r\n\r\n /**\r\n * Gets or sets whether the scale is relative to the frontplate height.\r\n */\r\n @serialize()\r\n public relativeToHeight = false;\r\n\r\n /** @hidden */\r\n public _filterWidth = 1.0;\r\n\r\n /**\r\n * Gets or sets the edge color of the frontplate.\r\n */\r\n @serialize()\r\n public edgeColor: Color4 = new Color4(0.53, 0.53, 0.53, 1);\r\n\r\n /**\r\n * Gets or sets whether to enable blob effects on the frontplate.\r\n */\r\n @serialize()\r\n public blobEnable = true;\r\n\r\n /**\r\n * Gets or sets the blob position on the frontplate.\r\n */\r\n @serialize()\r\n public blobPosition: Vector3 = new Vector3(100, 100, 100);\r\n\r\n /**\r\n * Gets or sets the blob intensity of the frontplate.\r\n */\r\n @serialize()\r\n public blobIntensity = 0.5;\r\n\r\n /**\r\n * Gets or sets the blob near size of the frontplate.\r\n */\r\n @serialize()\r\n public blobNearSize = 0.032;\r\n\r\n /**\r\n * Gets or sets the blob far size of the frontplate.\r\n */\r\n @serialize()\r\n public blobFarSize = 0.048;\r\n\r\n /**\r\n * Gets or sets the blob near distance of the frontplate.\r\n */\r\n @serialize()\r\n public blobNearDistance = 0.008;\r\n\r\n /**\r\n * Gets or sets the blob far distance of the frontplate.\r\n */\r\n @serialize()\r\n public blobFarDistance = 0.064;\r\n\r\n /**\r\n * Gets or sets the blob fade length of the frontplate.\r\n */\r\n @serialize()\r\n public blobFadeLength = 0.04;\r\n\r\n /**\r\n * Gets or sets the blob inner fade of the frontplate.\r\n */\r\n @serialize()\r\n public blobInnerFade = 0.01;\r\n\r\n /**\r\n * Gets or sets the blob pulse of the frontplate.\r\n */\r\n @serialize()\r\n public blobPulse = 0.0;\r\n\r\n /**\r\n * Gets or sets the blob fade effect on the frontplate.\r\n */\r\n @serialize()\r\n public blobFade = 1.0;\r\n\r\n /**\r\n * Gets or sets the maximum size of the blob pulse on the frontplate.\r\n */\r\n @serialize()\r\n public blobPulseMaxSize = 0.05;\r\n\r\n /**\r\n * Gets or sets whether to enable extra blob effects of the frontplate.\r\n */\r\n @serialize()\r\n public blobEnable2 = true;\r\n\r\n /**\r\n * Gets or sets blob2 position of the frontplate.\r\n */\r\n @serialize()\r\n public blobPosition2: Vector3 = new Vector3(10, 10.1, -0.6);\r\n\r\n /**\r\n * Gets or sets the blob2 near size of the frontplate.\r\n */\r\n @serialize()\r\n public blobNearSize2 = 0.008;\r\n\r\n /**\r\n * Gets or sets the blob2 inner fade of the frontplate.\r\n */\r\n @serialize()\r\n public blobInnerFade2 = 0.1;\r\n\r\n /**\r\n * Gets or sets the blob2 pulse of the frontplate.\r\n */\r\n @serialize()\r\n public blobPulse2 = 0.0;\r\n\r\n /**\r\n * Gets or sets the blob2 fade effect on the frontplate.\r\n */\r\n @serialize()\r\n public blobFade2 = 1.0;\r\n\r\n /**\r\n * Gets or sets the gaze intensity of the frontplate.\r\n */\r\n @serialize()\r\n public gazeIntensity = 0.8;\r\n\r\n /**\r\n * Gets or sets the gaze focus of the frontplate.\r\n */\r\n @serialize()\r\n public gazeFocus = 0.0;\r\n\r\n /**\r\n * Gets or sets the selection fuzz of the frontplate.\r\n */\r\n @serialize()\r\n public selectionFuzz = 0.5;\r\n\r\n /**\r\n * Gets or sets the fade intensity of the frontplate.\r\n */\r\n @serialize()\r\n public selected = 1.0;\r\n\r\n /**\r\n * Gets or sets the selection fade intensity of the frontplate.\r\n */\r\n @serialize()\r\n public selectionFade = 0.2;\r\n\r\n /**\r\n * Gets or sets the selection fade size of the frontplate.\r\n */\r\n @serialize()\r\n public selectionFadeSize = 0.0;\r\n\r\n /**\r\n * Gets or sets the selected distance of the frontplate.\r\n */\r\n @serialize()\r\n public selectedDistance = 0.08;\r\n\r\n /**\r\n * Gets or sets the selected fade length of the frontplate.\r\n */\r\n @serialize()\r\n public selectedFadeLength = 0.08;\r\n\r\n /**\r\n * Gets or sets the proximity maximum intensity of the frontplate.\r\n */\r\n @serialize()\r\n public proximityMaxIntensity = 0.45;\r\n\r\n /**\r\n * Gets or sets the proximity far distance of the frontplate.\r\n */\r\n @serialize()\r\n public proximityFarDistance = 0.16;\r\n\r\n /**\r\n * Gets or sets the proximity near radius of the frontplate.\r\n */\r\n @serialize()\r\n public proximityNearRadius = 0.016;\r\n\r\n /**\r\n * Gets or sets the proximity anisotropy of the frontplate.\r\n */\r\n @serialize()\r\n public proximityAnisotropy = 1.0;\r\n\r\n /**\r\n * Gets or sets whether to use global left index on the frontplate.\r\n */\r\n @serialize()\r\n public useGlobalLeftIndex = true;\r\n\r\n /**\r\n * Gets or sets whether to use global right index of the frontplate.\r\n */\r\n @serialize()\r\n public useGlobalRightIndex = true;\r\n\r\n /**\r\n * URL pointing to the texture used to define the coloring for the BLOB.\r\n */\r\n public static BLOB_TEXTURE_URL = \"\";\r\n\r\n /**\r\n * Gets or sets the opacity of the frontplate (0.0 - 1.0).\r\n */\r\n public fadeOut = 1.0;\r\n\r\n private _blobTexture: Texture;\r\n\r\n constructor(name: string, scene: Scene) {\r\n super(name, scene);\r\n this.alphaMode = Constants.ALPHA_ADD;\r\n this.disableDepthWrite = true;\r\n this.backFaceCulling = false;\r\n this._blobTexture = new Texture(MRDLFrontplateMaterial.BLOB_TEXTURE_URL, scene, true, false, Texture.NEAREST_SAMPLINGMODE);\r\n }\r\n\r\n public needAlphaBlending(): boolean {\r\n return true;\r\n }\r\n\r\n public needAlphaTesting(): boolean {\r\n return false;\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): boolean {\r\n const drawWrapper = subMesh._drawWrapper;\r\n\r\n if (this.isFrozen) {\r\n if (drawWrapper.effect && drawWrapper._wasPreviouslyReady) {\r\n return true;\r\n }\r\n }\r\n\r\n if (!subMesh.materialDefines) {\r\n subMesh.materialDefines = new MRDLFrontplateMaterialDefines();\r\n }\r\n\r\n const defines = <MRDLFrontplateMaterialDefines>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 // Attribs\r\n PrepareDefinesForAttributes(mesh, defines, false, false);\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 HandleFallbacksForShadows(defines, fallbacks);\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 if (defines.TANGENT) {\r\n attribs.push(VertexBuffer.TangentKind);\r\n }\r\n\r\n PrepareAttributesForInstances(attribs, defines);\r\n\r\n // Legacy browser patch\r\n const shaderName = \"mrdlFrontplate\";\r\n const join = defines.toString();\r\n\r\n const uniforms = [\r\n \"world\",\r\n \"worldView\",\r\n \"worldViewProjection\",\r\n \"view\",\r\n \"projection\",\r\n \"viewProjection\",\r\n \"cameraPosition\",\r\n \"_Radius_\",\r\n \"_Line_Width_\",\r\n \"_Relative_To_Height_\",\r\n \"_Filter_Width_\",\r\n \"_Edge_Color_\",\r\n \"_Fade_Out_\",\r\n \"_Smooth_Edges_\",\r\n \"_Blob_Enable_\",\r\n \"_Blob_Position_\",\r\n \"_Blob_Intensity_\",\r\n \"_Blob_Near_Size_\",\r\n \"_Blob_Far_Size_\",\r\n \"_Blob_Near_Distance_\",\r\n \"_Blob_Far_Distance_\",\r\n \"_Blob_Fade_Length_\",\r\n \"_Blob_Inner_Fade_\",\r\n \"_Blob_Pulse_\",\r\n \"_Blob_Fade_\",\r\n \"_Blob_Pulse_Max_Size_\",\r\n \"_Blob_Enable_2_\",\r\n \"_Blob_Position_2_\",\r\n \"_Blob_Near_Size_2_\",\r\n \"_Blob_Inner_Fade_2_\",\r\n \"_Blob_Pulse_2_\",\r\n \"_Blob_Fade_2_\",\r\n \"_Gaze_Intensity_\",\r\n \"_Gaze_Focus_\",\r\n \"_Blob_Texture_\",\r\n \"_Selection_Fuzz_\",\r\n \"_Selected_\",\r\n \"_Selection_Fade_\",\r\n \"_Selection_Fade_Size_\",\r\n \"_Selected_Distance_\",\r\n \"_Selected_Fade_Length_\",\r\n \"_Proximity_Max_Intensity_\",\r\n \"_Proximity_Far_Distance_\",\r\n \"_Proximity_Near_Radius_\",\r\n \"_Proximity_Anisotropy_\",\r\n \"Global_Left_Index_Tip_Position\",\r\n \"Global_Right_Index_Tip_Position\",\r\n \"_Use_Global_Left_Index_\",\r\n \"_Use_Global_Right_Index_\",\r\n ];\r\n const samplers: string[] = [];\r\n const uniformBuffers: string[] = [];\r\n\r\n 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 );\r\n }\r\n if (!subMesh.effect || !subMesh.effect.isReady()) {\r\n return false;\r\n }\r\n\r\n defines._renderId = scene.getRenderId();\r\n drawWrapper._wasPreviouslyReady = true;\r\n\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 = <MRDLFrontplateMaterialDefines>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 this._activeEffect.setVector3(\"cameraPosition\", scene.activeCamera!.position);\r\n\r\n // \"Round Rect\"\r\n this._activeEffect.setFloat(\"_Radius_\", this.radius);\r\n this._activeEffect.setFloat(\"_Line_Width_\", this.lineWidth);\r\n this._activeEffect.setFloat(\"_Relative_To_Height_\", this.relativeToHeight ? 1.0 : 0.0);\r\n this._activeEffect.setFloat(\"_Filter_Width_\", this._filterWidth);\r\n this._activeEffect.setDirectColor4(\"_Edge_Color_\", this.edgeColor);\r\n\r\n // \"Fade\"\r\n this._activeEffect.setFloat(\"_Fade_Out_\", this.fadeOut);\r\n\r\n // \"Blob\"\r\n this._activeEffect.setFloat(\"_Blob_Enable_\", this.blobEnable ? 1.0 : 0.0);\r\n this._activeEffect.setVector3(\"_Blob_Position_\", this.blobPosition);\r\n this._activeEffect.setFloat(\"_Blob_Intensity_\", this.blobIntensity);\r\n this._activeEffect.setFloat(\"_Blob_Near_Size_\", this.blobNearSize);\r\n this._activeEffect.setFloat(\"_Blob_Far_Size_\", this.blobFarSize);\r\n this._activeEffect.setFloat(\"_Blob_Near_Distance_\", this.blobNearDistance);\r\n this._activeEffect.setFloat(\"_Blob_Far_Distance_\", this.blobFarDistance);\r\n this._activeEffect.setFloat(\"_Blob_Fade_Length_\", this.blobFadeLength);\r\n this._activeEffect.setFloat(\"_Blob_Inner_Fade_\", this.blobInnerFade);\r\n this._activeEffect.setFloat(\"_Blob_Pulse_\", this.blobPulse);\r\n this._activeEffect.setFloat(\"_Blob_Fade_\", this.blobFade);\r\n this._activeEffect.setFloat(\"_Blob_Pulse_Max_Size_\", this.blobPulseMaxSize);\r\n\r\n // \"Blob 2\"\r\n this._activeEffect.setFloat(\"_Blob_Enable_2_\", this.blobEnable2 ? 1.0 : 0.0);\r\n this._activeEffect.setVector3(\"_Blob_Position_2_\", this.blobPosition2);\r\n this._activeEffect.setFloat(\"_Blob_Near_Size_2_\", this.blobNearSize2);\r\n this._activeEffect.setFloat(\"_Blob_Inner_Fade_2_\", this.blobInnerFade2);\r\n this._activeEffect.setFloat(\"_Blob_Pulse_2_\", this.blobPulse2);\r\n this._activeEffect.setFloat(\"_Blob_Fade_2_\", this.blobFade2);\r\n\r\n // \"Gaze\"\r\n this._activeEffect.setFloat(\"_Gaze_Intensity_\", this.gazeIntensity);\r\n this._activeEffect.setFloat(\"_Gaze_Focus_\", this.gazeFocus);\r\n\r\n // \"Blob Texture\"\r\n this._activeEffect.setTexture(\"_Blob_Texture_\", this._blobTexture);\r\n\r\n // \"Selection\"\r\n this._activeEffect.setFloat(\"_Selection_Fuzz_\", this.selectionFuzz);\r\n this._activeEffect.setFloat(\"_Selected_\", this.selected);\r\n this._activeEffect.setFloat(\"_Selection_Fade_\", this.selectionFade);\r\n this._activeEffect.setFloat(\"_Selection_Fade_Size_\", this.selectionFadeSize);\r\n this._activeEffect.setFloat(\"_Selected_Distance_\", this.selectedDistance);\r\n this._activeEffect.setFloat(\"_Selected_Fade_Length_\", this.selectedFadeLength);\r\n\r\n // \"Proximity\"\r\n this._activeEffect.setFloat(\"_Proximity_Max_Intensity_\", this.proximityMaxIntensity);\r\n this._activeEffect.setFloat(\"_Proximity_Far_Distance_\", this.proximityFarDistance);\r\n this._activeEffect.setFloat(\"_Proximity_Near_Radius_\", this.proximityNearRadius);\r\n this._activeEffect.setFloat(\"_Proximity_Anisotropy_\", this.proximityAnisotropy);\r\n\r\n // \"Global\"\r\n this._activeEffect.setFloat(\"_Use_Global_Left_Index_\", this.useGlobalLeftIndex ? 1.0 : 0.0);\r\n this._activeEffect.setFloat(\"_Use_Global_Right_Index_\", this.useGlobalRightIndex ? 1.0 : 0.0);\r\n\r\n // \"Antialiasing\"\r\n //define SMOOTH_EDGES true;\r\n\r\n this._afterBind(mesh, this._activeEffect, subMesh);\r\n }\r\n\r\n /**\r\n * Get the list of animatables in the material.\r\n * @returns the list of animatables object used in the material\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): MRDLFrontplateMaterial {\r\n return SerializationHelper.Clone(() => new MRDLFrontplateMaterial(name, this.getScene()), this);\r\n }\r\n\r\n public serialize(): unknown {\r\n const serializationObject = SerializationHelper.Serialize(this);\r\n serializationObject.customType = \"BABYLON.MRDLFrontplateMaterial\";\r\n return serializationObject;\r\n }\r\n\r\n public getClassName(): string {\r\n return \"MRDLFrontplateMaterial\";\r\n }\r\n\r\n // Statics\r\n public static Parse(source: any, scene: Scene, rootUrl: string): MRDLFrontplateMaterial {\r\n return SerializationHelper.Parse(() => new MRDLFrontplateMaterial(source.name, scene), source, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.GUI.MRDLFrontplateMaterial\", MRDLFrontplateMaterial);\r\n"]}
|
|
@@ -3,13 +3,13 @@ import { Color4 } from "@babylonjs/core/Maths/math.color.js";
|
|
|
3
3
|
import { Constants } from "@babylonjs/core/Engines/constants.js";
|
|
4
4
|
import { EffectFallbacks } from "@babylonjs/core/Materials/effectFallbacks.js";
|
|
5
5
|
import { MaterialDefines } from "@babylonjs/core/Materials/materialDefines.js";
|
|
6
|
-
import { MaterialHelper } from "@babylonjs/core/Materials/materialHelper.js";
|
|
7
6
|
import { PushMaterial } from "@babylonjs/core/Materials/pushMaterial.js";
|
|
8
7
|
import { RegisterClass } from "@babylonjs/core/Misc/typeStore.js";
|
|
9
8
|
import { SerializationHelper, serialize } from "@babylonjs/core/Misc/decorators.js";
|
|
10
9
|
import { VertexBuffer } from "@babylonjs/core/Buffers/buffer.js";
|
|
11
10
|
import "./shaders/mrdlInnerquad.fragment.js";
|
|
12
11
|
import "./shaders/mrdlInnerquad.vertex.js";
|
|
12
|
+
import { HandleFallbacksForShadows, PrepareAttributesForInstances, PrepareDefinesForAttributes, PrepareUniformsAndSamplersList } from "@babylonjs/core/Materials/materialHelper.functions.js";
|
|
13
13
|
class MRDLInnerquadMaterialDefines extends MaterialDefines {
|
|
14
14
|
constructor() {
|
|
15
15
|
super();
|
|
@@ -77,7 +77,7 @@ export class MRDLInnerquadMaterial extends PushMaterial {
|
|
|
77
77
|
}
|
|
78
78
|
const engine = scene.getEngine();
|
|
79
79
|
// Attribs
|
|
80
|
-
|
|
80
|
+
PrepareDefinesForAttributes(mesh, defines, true, false);
|
|
81
81
|
// Get correct effect
|
|
82
82
|
if (defines.isDirty) {
|
|
83
83
|
defines.markAsProcessed();
|
|
@@ -87,7 +87,7 @@ export class MRDLInnerquadMaterial extends PushMaterial {
|
|
|
87
87
|
if (defines.FOG) {
|
|
88
88
|
fallbacks.addFallback(1, "FOG");
|
|
89
89
|
}
|
|
90
|
-
|
|
90
|
+
HandleFallbacksForShadows(defines, fallbacks);
|
|
91
91
|
defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;
|
|
92
92
|
//Attributes
|
|
93
93
|
const attribs = [VertexBuffer.PositionKind];
|
|
@@ -106,7 +106,7 @@ export class MRDLInnerquadMaterial extends PushMaterial {
|
|
|
106
106
|
if (defines.TANGENT) {
|
|
107
107
|
attribs.push(VertexBuffer.TangentKind);
|
|
108
108
|
}
|
|
109
|
-
|
|
109
|
+
PrepareAttributesForInstances(attribs, defines);
|
|
110
110
|
// Legacy browser patch
|
|
111
111
|
const shaderName = "mrdlInnerquad";
|
|
112
112
|
const join = defines.toString();
|
|
@@ -128,7 +128,7 @@ export class MRDLInnerquadMaterial extends PushMaterial {
|
|
|
128
128
|
];
|
|
129
129
|
const samplers = [];
|
|
130
130
|
const uniformBuffers = [];
|
|
131
|
-
|
|
131
|
+
PrepareUniformsAndSamplersList({
|
|
132
132
|
uniformsNames: uniforms,
|
|
133
133
|
uniformBuffersNames: uniformBuffers,
|
|
134
134
|
samplers: samplers,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mrdlInnerquadMaterial.js","sourceRoot":"","sources":["../../../../../../dev/gui/src/3D/materials/mrdl/mrdlInnerquadMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport type { BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\nimport type { IAnimatable } from \"core/Animations/animatable.interface\";\r\nimport type { IEffectCreationOptions } from \"core/Materials/effect\";\r\nimport type { Matrix } from \"core/Maths/math.vector\";\r\nimport type { Mesh } from \"core/Meshes/mesh\";\r\nimport type { Nullable } from \"core/types\";\r\nimport type { Scene } from \"core/scene\";\r\nimport type { SubMesh } from \"core/Meshes/subMesh\";\r\n\r\nimport { Color4 } from \"core/Maths/math.color\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { EffectFallbacks } from \"core/Materials/effectFallbacks\";\r\nimport { MaterialDefines } from \"core/Materials/materialDefines\";\r\nimport { MaterialHelper } from \"core/Materials/materialHelper\";\r\nimport { PushMaterial } from \"core/Materials/pushMaterial\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { SerializationHelper, serialize } from \"core/Misc/decorators\";\r\nimport { VertexBuffer } from \"core/Buffers/buffer\";\r\n\r\nimport \"./shaders/mrdlInnerquad.fragment\";\r\nimport \"./shaders/mrdlInnerquad.vertex\";\r\n\r\nclass MRDLInnerquadMaterialDefines extends MaterialDefines {\r\n constructor() {\r\n super();\r\n this._needNormals = true;\r\n this._needUVs = true;\r\n this.rebuild();\r\n }\r\n}\r\n\r\nexport class MRDLInnerquadMaterial extends PushMaterial {\r\n /**\r\n * Gets or sets the color of the innerquad.\r\n */\r\n @serialize()\r\n public color: Color4 = new Color4(1, 1, 1, 0.05);\r\n /**\r\n * Gets or sets the corner radius on the innerquad. If this value is changed, update the lineWidth to match.\r\n */\r\n @serialize()\r\n public radius = 0.12;\r\n\r\n /**\r\n * Gets or sets whether the radius of the innerquad should be fixed.\r\n */\r\n @serialize()\r\n public fixedRadius = true;\r\n\r\n /** @hidden */\r\n public _filterWidth = 1.0;\r\n\r\n /**\r\n * Gets or sets the glow fraction of the innerquad.\r\n */\r\n @serialize()\r\n public glowFraction = 0.0;\r\n\r\n /**\r\n * Gets or sets the maximum glow intensity of the innerquad.\r\n */\r\n @serialize()\r\n public glowMax = 0.5;\r\n\r\n /**\r\n * Gets or sets the glow falloff effect of the innerquad.\r\n */\r\n @serialize()\r\n public glowFalloff = 2.0;\r\n\r\n constructor(name: string, scene: Scene) {\r\n super(name, scene);\r\n this.alphaMode = Constants.ALPHA_COMBINE;\r\n this.backFaceCulling = false;\r\n }\r\n\r\n public needAlphaBlending(): boolean {\r\n return true;\r\n }\r\n\r\n public needAlphaTesting(): boolean {\r\n return false;\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): boolean {\r\n const drawWrapper = subMesh._drawWrapper;\r\n\r\n if (this.isFrozen) {\r\n if (drawWrapper.effect && drawWrapper._wasPreviouslyReady) {\r\n return true;\r\n }\r\n }\r\n\r\n if (!subMesh.materialDefines) {\r\n subMesh.materialDefines = new MRDLInnerquadMaterialDefines();\r\n }\r\n\r\n const defines = <MRDLInnerquadMaterialDefines>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 // Attribs\r\n MaterialHelper.PrepareDefinesForAttributes(mesh, defines, true, false);\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 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 if (defines.TANGENT) {\r\n attribs.push(VertexBuffer.TangentKind);\r\n }\r\n\r\n MaterialHelper.PrepareAttributesForInstances(attribs, defines);\r\n\r\n // Legacy browser patch\r\n const shaderName = \"mrdlInnerquad\";\r\n const join = defines.toString();\r\n\r\n const uniforms = [\r\n \"world\",\r\n \"worldView\",\r\n \"worldViewProjection\",\r\n \"view\",\r\n \"projection\",\r\n \"viewProjection\",\r\n \"cameraPosition\",\r\n \"_Color_\",\r\n \"_Radius_\",\r\n \"_Fixed_Radius_\",\r\n \"_Filter_Width_\",\r\n \"_Glow_Fraction_\",\r\n \"_Glow_Max_\",\r\n \"_Glow_Falloff_\",\r\n ];\r\n const samplers: string[] = [];\r\n const uniformBuffers: 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 );\r\n }\r\n if (!subMesh.effect || !subMesh.effect.isReady()) {\r\n return false;\r\n }\r\n\r\n defines._renderId = scene.getRenderId();\r\n drawWrapper._wasPreviouslyReady = true;\r\n\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 = <MRDLInnerquadMaterialDefines>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 this._activeEffect.setVector3(\"cameraPosition\", scene.activeCamera!.position);\r\n\r\n // \"Color\"\r\n this._activeEffect.setDirectColor4(\"_Color_\", this.color);\r\n\r\n // \"Shape\"\r\n this._activeEffect.setFloat(\"_Radius_\", this.radius);\r\n this._activeEffect.setFloat(\"_Fixed_Radius_\", this.fixedRadius ? 1.0 : 0.0);\r\n this._activeEffect.setFloat(\"_Filter_Width_\", this._filterWidth);\r\n\r\n // \"Glow\"\r\n this._activeEffect.setFloat(\"_Glow_Fraction_\", this.glowFraction);\r\n this._activeEffect.setFloat(\"_Glow_Max_\", this.glowMax);\r\n this._activeEffect.setFloat(\"_Glow_Falloff_\", this.glowFalloff);\r\n\r\n this._afterBind(mesh, this._activeEffect, subMesh);\r\n }\r\n\r\n /**\r\n * Get the list of animatables in the material.\r\n * @returns the list of animatables object used in the material\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): MRDLInnerquadMaterial {\r\n return SerializationHelper.Clone(() => new MRDLInnerquadMaterial(name, this.getScene()), this);\r\n }\r\n\r\n public serialize(): unknown {\r\n const serializationObject = SerializationHelper.Serialize(this);\r\n serializationObject.customType = \"BABYLON.MRDLInnerquadMaterial\";\r\n return serializationObject;\r\n }\r\n\r\n public getClassName(): string {\r\n return \"MRDLInnerquadMaterial\";\r\n }\r\n\r\n // Statics\r\n public static Parse(source: any, scene: Scene, rootUrl: string): MRDLInnerquadMaterial {\r\n return SerializationHelper.Parse(() => new MRDLInnerquadMaterial(source.name, scene), source, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.GUI.MRDLInnerquadMaterial\", MRDLInnerquadMaterial);\r\n"]}
|
|
1
|
+
{"version":3,"file":"mrdlInnerquadMaterial.js","sourceRoot":"","sources":["../../../../../../dev/gui/src/3D/materials/mrdl/mrdlInnerquadMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport type { BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\nimport type { IAnimatable } from \"core/Animations/animatable.interface\";\r\nimport type { IEffectCreationOptions } from \"core/Materials/effect\";\r\nimport type { Matrix } from \"core/Maths/math.vector\";\r\nimport type { Mesh } from \"core/Meshes/mesh\";\r\nimport type { Nullable } from \"core/types\";\r\nimport type { Scene } from \"core/scene\";\r\nimport type { SubMesh } from \"core/Meshes/subMesh\";\r\n\r\nimport { Color4 } from \"core/Maths/math.color\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { EffectFallbacks } from \"core/Materials/effectFallbacks\";\r\nimport { MaterialDefines } from \"core/Materials/materialDefines\";\r\nimport { PushMaterial } from \"core/Materials/pushMaterial\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { SerializationHelper, serialize } from \"core/Misc/decorators\";\r\nimport { VertexBuffer } from \"core/Buffers/buffer\";\r\n\r\nimport \"./shaders/mrdlInnerquad.fragment\";\r\nimport \"./shaders/mrdlInnerquad.vertex\";\r\nimport { HandleFallbacksForShadows, PrepareAttributesForInstances, PrepareDefinesForAttributes, PrepareUniformsAndSamplersList } from \"core/Materials/materialHelper.functions\";\r\n\r\nclass MRDLInnerquadMaterialDefines extends MaterialDefines {\r\n constructor() {\r\n super();\r\n this._needNormals = true;\r\n this._needUVs = true;\r\n this.rebuild();\r\n }\r\n}\r\n\r\nexport class MRDLInnerquadMaterial extends PushMaterial {\r\n /**\r\n * Gets or sets the color of the innerquad.\r\n */\r\n @serialize()\r\n public color: Color4 = new Color4(1, 1, 1, 0.05);\r\n /**\r\n * Gets or sets the corner radius on the innerquad. If this value is changed, update the lineWidth to match.\r\n */\r\n @serialize()\r\n public radius = 0.12;\r\n\r\n /**\r\n * Gets or sets whether the radius of the innerquad should be fixed.\r\n */\r\n @serialize()\r\n public fixedRadius = true;\r\n\r\n /** @hidden */\r\n public _filterWidth = 1.0;\r\n\r\n /**\r\n * Gets or sets the glow fraction of the innerquad.\r\n */\r\n @serialize()\r\n public glowFraction = 0.0;\r\n\r\n /**\r\n * Gets or sets the maximum glow intensity of the innerquad.\r\n */\r\n @serialize()\r\n public glowMax = 0.5;\r\n\r\n /**\r\n * Gets or sets the glow falloff effect of the innerquad.\r\n */\r\n @serialize()\r\n public glowFalloff = 2.0;\r\n\r\n constructor(name: string, scene: Scene) {\r\n super(name, scene);\r\n this.alphaMode = Constants.ALPHA_COMBINE;\r\n this.backFaceCulling = false;\r\n }\r\n\r\n public needAlphaBlending(): boolean {\r\n return true;\r\n }\r\n\r\n public needAlphaTesting(): boolean {\r\n return false;\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): boolean {\r\n const drawWrapper = subMesh._drawWrapper;\r\n\r\n if (this.isFrozen) {\r\n if (drawWrapper.effect && drawWrapper._wasPreviouslyReady) {\r\n return true;\r\n }\r\n }\r\n\r\n if (!subMesh.materialDefines) {\r\n subMesh.materialDefines = new MRDLInnerquadMaterialDefines();\r\n }\r\n\r\n const defines = <MRDLInnerquadMaterialDefines>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 // Attribs\r\n PrepareDefinesForAttributes(mesh, defines, true, false);\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 HandleFallbacksForShadows(defines, fallbacks);\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 if (defines.TANGENT) {\r\n attribs.push(VertexBuffer.TangentKind);\r\n }\r\n\r\n PrepareAttributesForInstances(attribs, defines);\r\n\r\n // Legacy browser patch\r\n const shaderName = \"mrdlInnerquad\";\r\n const join = defines.toString();\r\n\r\n const uniforms = [\r\n \"world\",\r\n \"worldView\",\r\n \"worldViewProjection\",\r\n \"view\",\r\n \"projection\",\r\n \"viewProjection\",\r\n \"cameraPosition\",\r\n \"_Color_\",\r\n \"_Radius_\",\r\n \"_Fixed_Radius_\",\r\n \"_Filter_Width_\",\r\n \"_Glow_Fraction_\",\r\n \"_Glow_Max_\",\r\n \"_Glow_Falloff_\",\r\n ];\r\n const samplers: string[] = [];\r\n const uniformBuffers: string[] = [];\r\n\r\n 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 );\r\n }\r\n if (!subMesh.effect || !subMesh.effect.isReady()) {\r\n return false;\r\n }\r\n\r\n defines._renderId = scene.getRenderId();\r\n drawWrapper._wasPreviouslyReady = true;\r\n\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 = <MRDLInnerquadMaterialDefines>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 this._activeEffect.setVector3(\"cameraPosition\", scene.activeCamera!.position);\r\n\r\n // \"Color\"\r\n this._activeEffect.setDirectColor4(\"_Color_\", this.color);\r\n\r\n // \"Shape\"\r\n this._activeEffect.setFloat(\"_Radius_\", this.radius);\r\n this._activeEffect.setFloat(\"_Fixed_Radius_\", this.fixedRadius ? 1.0 : 0.0);\r\n this._activeEffect.setFloat(\"_Filter_Width_\", this._filterWidth);\r\n\r\n // \"Glow\"\r\n this._activeEffect.setFloat(\"_Glow_Fraction_\", this.glowFraction);\r\n this._activeEffect.setFloat(\"_Glow_Max_\", this.glowMax);\r\n this._activeEffect.setFloat(\"_Glow_Falloff_\", this.glowFalloff);\r\n\r\n this._afterBind(mesh, this._activeEffect, subMesh);\r\n }\r\n\r\n /**\r\n * Get the list of animatables in the material.\r\n * @returns the list of animatables object used in the material\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): MRDLInnerquadMaterial {\r\n return SerializationHelper.Clone(() => new MRDLInnerquadMaterial(name, this.getScene()), this);\r\n }\r\n\r\n public serialize(): unknown {\r\n const serializationObject = SerializationHelper.Serialize(this);\r\n serializationObject.customType = \"BABYLON.MRDLInnerquadMaterial\";\r\n return serializationObject;\r\n }\r\n\r\n public getClassName(): string {\r\n return \"MRDLInnerquadMaterial\";\r\n }\r\n\r\n // Statics\r\n public static Parse(source: any, scene: Scene, rootUrl: string): MRDLInnerquadMaterial {\r\n return SerializationHelper.Parse(() => new MRDLInnerquadMaterial(source.name, scene), source, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.GUI.MRDLInnerquadMaterial\", MRDLInnerquadMaterial);\r\n"]}
|
|
@@ -3,7 +3,6 @@ import { SerializationHelper, serialize } from "@babylonjs/core/Misc/decorators.
|
|
|
3
3
|
import { Vector2, Vector3, Vector4 } from "@babylonjs/core/Maths/math.vector.js";
|
|
4
4
|
import { Texture } from "@babylonjs/core/Materials/Textures/texture.js";
|
|
5
5
|
import { MaterialDefines } from "@babylonjs/core/Materials/materialDefines.js";
|
|
6
|
-
import { MaterialHelper } from "@babylonjs/core/Materials/materialHelper.js";
|
|
7
6
|
import { PushMaterial } from "@babylonjs/core/Materials/pushMaterial.js";
|
|
8
7
|
import { VertexBuffer } from "@babylonjs/core/Buffers/buffer.js";
|
|
9
8
|
import { RegisterClass } from "@babylonjs/core/Misc/typeStore.js";
|
|
@@ -12,6 +11,7 @@ import { EffectFallbacks } from "@babylonjs/core/Materials/effectFallbacks.js";
|
|
|
12
11
|
import { Constants } from "@babylonjs/core/Engines/constants.js";
|
|
13
12
|
import "./shaders/mrdlSliderBar.fragment.js";
|
|
14
13
|
import "./shaders/mrdlSliderBar.vertex.js";
|
|
14
|
+
import { HandleFallbacksForShadows, PrepareAttributesForInstances, PrepareDefinesForAttributes, PrepareUniformsAndSamplersList } from "@babylonjs/core/Materials/materialHelper.functions.js";
|
|
15
15
|
/** @internal */
|
|
16
16
|
class MRDLSliderBarMaterialDefines extends MaterialDefines {
|
|
17
17
|
constructor() {
|
|
@@ -361,7 +361,7 @@ export class MRDLSliderBarMaterial extends PushMaterial {
|
|
|
361
361
|
}
|
|
362
362
|
const engine = scene.getEngine();
|
|
363
363
|
// Attribs
|
|
364
|
-
|
|
364
|
+
PrepareDefinesForAttributes(mesh, defines, false, false);
|
|
365
365
|
// Get correct effect
|
|
366
366
|
if (defines.isDirty) {
|
|
367
367
|
defines.markAsProcessed();
|
|
@@ -371,7 +371,7 @@ export class MRDLSliderBarMaterial extends PushMaterial {
|
|
|
371
371
|
if (defines.FOG) {
|
|
372
372
|
fallbacks.addFallback(1, "FOG");
|
|
373
373
|
}
|
|
374
|
-
|
|
374
|
+
HandleFallbacksForShadows(defines, fallbacks);
|
|
375
375
|
defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;
|
|
376
376
|
//Attributes
|
|
377
377
|
const attribs = [VertexBuffer.PositionKind];
|
|
@@ -390,7 +390,7 @@ export class MRDLSliderBarMaterial extends PushMaterial {
|
|
|
390
390
|
if (defines.TANGENT) {
|
|
391
391
|
attribs.push(VertexBuffer.TangentKind);
|
|
392
392
|
}
|
|
393
|
-
|
|
393
|
+
PrepareAttributesForInstances(attribs, defines);
|
|
394
394
|
// Legacy browser patch
|
|
395
395
|
const shaderName = "mrdlSliderBar";
|
|
396
396
|
const join = defines.toString();
|
|
@@ -479,7 +479,7 @@ export class MRDLSliderBarMaterial extends PushMaterial {
|
|
|
479
479
|
];
|
|
480
480
|
const samplers = ["_Rim_Texture_", "_Iridescence_Texture_"];
|
|
481
481
|
const uniformBuffers = [];
|
|
482
|
-
|
|
482
|
+
PrepareUniformsAndSamplersList({
|
|
483
483
|
uniformsNames: uniforms,
|
|
484
484
|
uniformBuffersNames: uniformBuffers,
|
|
485
485
|
samplers: samplers,
|