@babylonjs/gui 5.0.0-alpha.9 → 5.0.0-beta.11
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/adtInstrumentation.js +1 -1
- package/2D/advancedDynamicTexture.d.ts +179 -127
- package/2D/advancedDynamicTexture.js +368 -183
- package/2D/advancedDynamicTexture.js.map +1 -1
- package/2D/controls/button.d.ts +8 -0
- package/2D/controls/button.js +33 -10
- package/2D/controls/button.js.map +1 -1
- package/2D/controls/checkbox.d.ts +2 -1
- package/2D/controls/checkbox.js +10 -8
- package/2D/controls/checkbox.js.map +1 -1
- package/2D/controls/colorpicker.d.ts +4 -3
- package/2D/controls/colorpicker.js +40 -23
- package/2D/controls/colorpicker.js.map +1 -1
- package/2D/controls/container.d.ts +16 -5
- package/2D/controls/container.js +99 -15
- package/2D/controls/container.js.map +1 -1
- package/2D/controls/control.d.ts +115 -47
- package/2D/controls/control.js +318 -139
- package/2D/controls/control.js.map +1 -1
- package/2D/controls/displayGrid.d.ts +2 -1
- package/2D/controls/displayGrid.js +6 -6
- package/2D/controls/displayGrid.js.map +1 -1
- package/2D/controls/ellipse.d.ts +5 -3
- package/2D/controls/ellipse.js +9 -5
- package/2D/controls/ellipse.js.map +1 -1
- package/2D/controls/focusableButton.d.ts +1 -0
- package/2D/controls/focusableButton.js +9 -6
- package/2D/controls/focusableButton.js.map +1 -1
- package/2D/controls/grid.d.ts +13 -2
- package/2D/controls/grid.js +117 -33
- package/2D/controls/grid.js.map +1 -1
- package/2D/controls/image.d.ts +5 -4
- package/2D/controls/image.js +52 -31
- package/2D/controls/image.js.map +1 -1
- package/2D/controls/index.js +29 -29
- package/2D/controls/inputPassword.js +4 -4
- package/2D/controls/inputPassword.js.map +1 -1
- package/2D/controls/inputText.d.ts +4 -1
- package/2D/controls/inputText.js +42 -15
- package/2D/controls/inputText.js.map +1 -1
- package/2D/controls/line.d.ts +3 -2
- package/2D/controls/line.js +8 -8
- package/2D/controls/line.js.map +1 -1
- package/2D/controls/multiLine.d.ts +4 -3
- package/2D/controls/multiLine.js +6 -6
- package/2D/controls/multiLine.js.map +1 -1
- package/2D/controls/radioButton.d.ts +2 -1
- package/2D/controls/radioButton.js +10 -7
- package/2D/controls/radioButton.js.map +1 -1
- package/2D/controls/rectangle.d.ts +8 -3
- package/2D/controls/rectangle.js +21 -5
- package/2D/controls/rectangle.js.map +1 -1
- package/2D/controls/scrollViewers/scrollViewer.d.ts +3 -2
- package/2D/controls/scrollViewers/scrollViewer.js +9 -9
- package/2D/controls/scrollViewers/scrollViewer.js.map +1 -1
- package/2D/controls/scrollViewers/scrollViewerWindow.d.ts +4 -3
- package/2D/controls/scrollViewers/scrollViewerWindow.js +4 -4
- package/2D/controls/scrollViewers/scrollViewerWindow.js.map +1 -1
- package/2D/controls/selector.js +8 -8
- package/2D/controls/selector.js.map +1 -1
- package/2D/controls/sliders/baseSlider.d.ts +1 -1
- package/2D/controls/sliders/baseSlider.js +12 -10
- package/2D/controls/sliders/baseSlider.js.map +1 -1
- package/2D/controls/sliders/imageBasedSlider.d.ts +10 -1
- package/2D/controls/sliders/imageBasedSlider.js +29 -5
- package/2D/controls/sliders/imageBasedSlider.js.map +1 -1
- package/2D/controls/sliders/imageScrollBar.d.ts +2 -1
- package/2D/controls/sliders/imageScrollBar.js +3 -3
- package/2D/controls/sliders/imageScrollBar.js.map +1 -1
- package/2D/controls/sliders/scrollBar.d.ts +2 -1
- package/2D/controls/sliders/scrollBar.js +3 -3
- package/2D/controls/sliders/scrollBar.js.map +1 -1
- package/2D/controls/sliders/slider.d.ts +2 -1
- package/2D/controls/sliders/slider.js +4 -4
- package/2D/controls/sliders/slider.js.map +1 -1
- package/2D/controls/stackPanel.d.ts +10 -3
- package/2D/controls/stackPanel.js +37 -15
- package/2D/controls/stackPanel.js.map +1 -1
- package/2D/controls/statics.js +3 -3
- package/2D/controls/statics.js.map +1 -1
- package/2D/controls/textBlock.d.ts +17 -9
- package/2D/controls/textBlock.js +91 -40
- package/2D/controls/textBlock.js.map +1 -1
- package/2D/controls/textWrapper.js +2 -2
- package/2D/controls/textWrapper.js.map +1 -1
- package/2D/controls/toggleButton.d.ts +1 -13
- package/2D/controls/toggleButton.js +29 -38
- package/2D/controls/toggleButton.js.map +1 -1
- package/2D/controls/virtualKeyboard.js +5 -5
- package/2D/controls/virtualKeyboard.js.map +1 -1
- package/2D/index.d.ts +1 -1
- package/2D/index.js +9 -9
- package/2D/index.js.map +1 -1
- package/2D/math2D.d.ts +5 -0
- package/2D/math2D.js +14 -2
- package/2D/math2D.js.map +1 -1
- package/2D/measure.js +1 -1
- package/2D/measure.js.map +1 -1
- package/2D/multiLinePoint.js +3 -3
- package/2D/style.js +2 -2
- package/2D/valueAndUnit.d.ts +21 -6
- package/2D/valueAndUnit.js +57 -13
- package/2D/valueAndUnit.js.map +1 -1
- package/2D/xmlLoader.d.ts +17 -3
- package/2D/xmlLoader.js +54 -15
- package/2D/xmlLoader.js.map +1 -1
- package/3D/behaviors/defaultBehavior.d.ts +73 -0
- package/3D/behaviors/defaultBehavior.js +122 -0
- package/3D/behaviors/defaultBehavior.js.map +1 -0
- package/3D/controls/abstractButton3D.d.ts +2 -2
- package/3D/controls/abstractButton3D.js +3 -3
- package/3D/controls/abstractButton3D.js.map +1 -1
- package/3D/controls/button3D.d.ts +0 -24
- package/3D/controls/button3D.js +15 -84
- package/3D/controls/button3D.js.map +1 -1
- package/3D/controls/container3D.js +2 -2
- package/3D/controls/contentDisplay3D.d.ts +30 -0
- package/3D/controls/contentDisplay3D.js +79 -0
- package/3D/controls/contentDisplay3D.js.map +1 -0
- package/3D/controls/control3D.d.ts +10 -7
- package/3D/controls/control3D.js +27 -19
- package/3D/controls/control3D.js.map +1 -1
- package/3D/controls/cylinderPanel.js +5 -5
- package/3D/controls/handMenu.d.ts +28 -0
- package/3D/controls/handMenu.js +48 -0
- package/3D/controls/handMenu.js.map +1 -0
- package/3D/controls/holographicBackplate.d.ts +48 -0
- package/3D/controls/holographicBackplate.js +121 -0
- package/3D/controls/holographicBackplate.js.map +1 -0
- package/3D/controls/holographicButton.d.ts +1 -1
- package/3D/controls/holographicButton.js +35 -31
- package/3D/controls/holographicButton.js.map +1 -1
- package/3D/controls/holographicSlate.d.ts +120 -0
- package/3D/controls/holographicSlate.js +372 -0
- package/3D/controls/holographicSlate.js.map +1 -0
- package/3D/controls/index.d.ts +6 -0
- package/3D/controls/index.js +21 -15
- package/3D/controls/index.js.map +1 -1
- package/3D/controls/meshButton3D.js +2 -2
- package/3D/controls/meshButton3D.js.map +1 -1
- package/3D/controls/nearMenu.d.ts +44 -0
- package/3D/controls/nearMenu.js +113 -0
- package/3D/controls/nearMenu.js.map +1 -0
- package/3D/controls/planePanel.js +3 -3
- package/3D/controls/scatterPanel.js +4 -4
- package/3D/controls/slider3D.d.ts +80 -0
- package/3D/controls/slider3D.js +268 -0
- package/3D/controls/slider3D.js.map +1 -0
- package/3D/controls/spherePanel.js +5 -5
- package/3D/controls/stackPanel3D.js +3 -3
- package/3D/controls/touchButton3D.d.ts +30 -21
- package/3D/controls/touchButton3D.js +127 -228
- package/3D/controls/touchButton3D.js.map +1 -1
- package/3D/controls/touchHolographicButton.d.ts +23 -2
- package/3D/controls/touchHolographicButton.js +162 -67
- package/3D/controls/touchHolographicButton.js.map +1 -1
- package/3D/controls/touchHolographicMenu.d.ts +61 -0
- package/3D/controls/touchHolographicMenu.js +149 -0
- package/3D/controls/touchHolographicMenu.js.map +1 -0
- package/3D/controls/touchMeshButton3D.d.ts +3 -6
- package/3D/controls/touchMeshButton3D.js +6 -14
- package/3D/controls/touchMeshButton3D.js.map +1 -1
- package/3D/controls/volumeBasedPanel.d.ts +1 -1
- package/3D/controls/volumeBasedPanel.js +5 -5
- package/3D/controls/volumeBasedPanel.js.map +1 -1
- package/3D/gizmos/gizmoHandle.d.ts +108 -0
- package/3D/gizmos/gizmoHandle.js +210 -0
- package/3D/gizmos/gizmoHandle.js.map +1 -0
- package/3D/gizmos/index.d.ts +2 -0
- package/3D/gizmos/index.js +3 -0
- package/3D/gizmos/index.js.map +1 -0
- package/3D/gizmos/slateGizmo.d.ts +59 -0
- package/3D/gizmos/slateGizmo.js +364 -0
- package/3D/gizmos/slateGizmo.js.map +1 -0
- package/3D/gui3DManager.d.ts +15 -2
- package/3D/gui3DManager.js +62 -41
- package/3D/gui3DManager.js.map +1 -1
- package/3D/index.d.ts +3 -2
- package/3D/index.js +5 -4
- package/3D/index.js.map +1 -1
- package/3D/materials/fluent/fluentMaterial.d.ts +90 -0
- package/3D/materials/fluent/fluentMaterial.js +282 -0
- package/3D/materials/fluent/fluentMaterial.js.map +1 -0
- package/3D/materials/fluent/index.d.ts +1 -0
- package/3D/materials/fluent/index.js +2 -0
- package/3D/materials/fluent/index.js.map +1 -0
- package/3D/materials/{shaders → fluent/shaders}/fluent.fragment.d.ts +0 -0
- package/3D/materials/fluent/shaders/fluent.fragment.js +7 -0
- package/3D/materials/fluent/shaders/fluent.fragment.js.map +1 -0
- package/3D/materials/{shaders → fluent/shaders}/fluent.vertex.d.ts +0 -0
- package/3D/materials/{shaders → fluent/shaders}/fluent.vertex.js +2 -2
- package/3D/materials/fluent/shaders/fluent.vertex.js.map +1 -0
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.d.ts +154 -0
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.js +435 -0
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.js.map +1 -0
- package/3D/materials/fluentBackplate/index.d.ts +1 -0
- package/3D/materials/fluentBackplate/index.js +2 -0
- package/3D/materials/fluentBackplate/index.js.map +1 -0
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.d.ts +5 -0
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js +7 -0
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js.map +1 -0
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.d.ts +5 -0
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js +7 -0
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js.map +1 -0
- package/3D/materials/fluentButton/fluentButtonMaterial.d.ts +189 -0
- package/3D/materials/fluentButton/fluentButtonMaterial.js +538 -0
- package/3D/materials/fluentButton/fluentButtonMaterial.js.map +1 -0
- package/3D/materials/fluentButton/index.d.ts +1 -0
- package/3D/materials/fluentButton/index.js +2 -0
- package/3D/materials/fluentButton/index.js.map +1 -0
- package/3D/materials/fluentButton/shaders/fluentButton.fragment.d.ts +5 -0
- package/3D/materials/fluentButton/shaders/fluentButton.fragment.js +7 -0
- package/3D/materials/fluentButton/shaders/fluentButton.fragment.js.map +1 -0
- package/3D/materials/fluentButton/shaders/fluentButton.vertex.d.ts +5 -0
- package/3D/materials/fluentButton/shaders/fluentButton.vertex.js +7 -0
- package/3D/materials/fluentButton/shaders/fluentButton.vertex.js.map +1 -0
- package/3D/materials/fluentMaterial.d.ts +2 -88
- package/3D/materials/fluentMaterial.js +2 -277
- package/3D/materials/fluentMaterial.js.map +1 -1
- package/3D/materials/handle/handleMaterial.d.ts +68 -0
- package/3D/materials/handle/handleMaterial.js +127 -0
- package/3D/materials/handle/handleMaterial.js.map +1 -0
- package/3D/materials/handle/index.d.ts +1 -0
- package/3D/materials/handle/index.js +2 -0
- package/3D/materials/handle/index.js.map +1 -0
- package/3D/materials/handle/shaders/handle.fragment.d.ts +5 -0
- package/3D/materials/handle/shaders/handle.fragment.js +7 -0
- package/3D/materials/handle/shaders/handle.fragment.js.map +1 -0
- package/3D/materials/handle/shaders/handle.vertex.d.ts +5 -0
- package/3D/materials/handle/shaders/handle.vertex.js +7 -0
- package/3D/materials/handle/shaders/handle.vertex.js.map +1 -0
- package/3D/materials/index.d.ts +5 -1
- package/3D/materials/index.js +5 -1
- package/3D/materials/index.js.map +1 -1
- package/3D/materials/mrdl/index.d.ts +3 -0
- package/3D/materials/mrdl/index.js +4 -0
- package/3D/materials/mrdl/index.js.map +1 -0
- package/3D/materials/mrdl/mrdlBackplateMaterial.d.ts +147 -0
- package/3D/materials/mrdl/mrdlBackplateMaterial.js +410 -0
- package/3D/materials/mrdl/mrdlBackplateMaterial.js.map +1 -0
- package/3D/materials/mrdl/mrdlSliderBarMaterial.d.ts +333 -0
- package/3D/materials/mrdl/mrdlSliderBarMaterial.js +787 -0
- package/3D/materials/mrdl/mrdlSliderBarMaterial.js.map +1 -0
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.d.ts +333 -0
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.js +787 -0
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js +7 -0
- package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js +7 -0
- package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js +7 -0
- package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js +7 -0
- package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js +7 -0
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js +7 -0
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js.map +1 -0
- package/3D/vector3WithInfo.js +1 -1
- package/index.d.ts +2 -2
- package/index.js +2 -2
- package/index.js.map +1 -1
- package/legacy/legacy.js +2 -2
- package/package.json +114 -9
- package/3D/materials/shaders/fluent.fragment.js +0 -7
- package/3D/materials/shaders/fluent.fragment.js.map +0 -1
- package/3D/materials/shaders/fluent.vertex.js.map +0 -1
|
@@ -0,0 +1,435 @@
|
|
|
1
|
+
import { __decorate, __extends } from "tslib";
|
|
2
|
+
import { SerializationHelper, serialize, serializeAsVector3 } from "@babylonjs/core/Misc/decorators.js";
|
|
3
|
+
import { Vector3, Vector4 } from "@babylonjs/core/Maths/math.vector.js";
|
|
4
|
+
import { Texture } from "@babylonjs/core/Materials/Textures/texture.js";
|
|
5
|
+
import { MaterialDefines } from "@babylonjs/core/Materials/materialDefines.js";
|
|
6
|
+
import { MaterialHelper } from "@babylonjs/core/Materials/materialHelper.js";
|
|
7
|
+
import { PushMaterial } from "@babylonjs/core/Materials/pushMaterial.js";
|
|
8
|
+
import { VertexBuffer } from "@babylonjs/core/Buffers/buffer.js";
|
|
9
|
+
import { RegisterClass } from "@babylonjs/core/Misc/typeStore.js";
|
|
10
|
+
import { Color4 } from "@babylonjs/core/Maths/math.color.js";
|
|
11
|
+
import { EffectFallbacks } from "@babylonjs/core/Materials/effectFallbacks.js";
|
|
12
|
+
import { Constants } from "@babylonjs/core/Engines/constants.js";
|
|
13
|
+
import "./shaders/fluentBackplate.fragment.js";
|
|
14
|
+
import "./shaders/fluentBackplate.vertex.js";
|
|
15
|
+
/** @hidden */
|
|
16
|
+
var FluentBackplateMaterialDefines = /** @class */ (function (_super) {
|
|
17
|
+
__extends(FluentBackplateMaterialDefines, _super);
|
|
18
|
+
function FluentBackplateMaterialDefines() {
|
|
19
|
+
var _this = _super.call(this) || this;
|
|
20
|
+
_this.BLOB_ENABLE = true;
|
|
21
|
+
_this.BLOB_ENABLE_2 = true;
|
|
22
|
+
_this.SMOOTH_EDGES = true;
|
|
23
|
+
_this.IRIDESCENT_MAP_ENABLE = true;
|
|
24
|
+
_this._needNormals = true;
|
|
25
|
+
_this.rebuild();
|
|
26
|
+
return _this;
|
|
27
|
+
}
|
|
28
|
+
return FluentBackplateMaterialDefines;
|
|
29
|
+
}(MaterialDefines));
|
|
30
|
+
/**
|
|
31
|
+
* Class used to render square buttons with fluent desgin
|
|
32
|
+
*/
|
|
33
|
+
var FluentBackplateMaterial = /** @class */ (function (_super) {
|
|
34
|
+
__extends(FluentBackplateMaterial, _super);
|
|
35
|
+
function FluentBackplateMaterial(name, scene) {
|
|
36
|
+
var _this = _super.call(this, name, scene) || this;
|
|
37
|
+
/**
|
|
38
|
+
* Gets or sets the corner radius on the backplate. Best to keep this value between 0.01 and 0.5. Default is 0.03.
|
|
39
|
+
*/
|
|
40
|
+
_this.radius = 0.03;
|
|
41
|
+
/**
|
|
42
|
+
* Gets or sets the line width of the backplate.
|
|
43
|
+
*/
|
|
44
|
+
_this.lineWidth = 0.01;
|
|
45
|
+
/**
|
|
46
|
+
* Gets or sets whether to use absolute sizes when calculating effects on the backplate.
|
|
47
|
+
* Since desktop and VR/AR have different relative sizes, it's usually best to keep this false.
|
|
48
|
+
*/
|
|
49
|
+
_this.absoluteSizes = false;
|
|
50
|
+
/** @hidden */
|
|
51
|
+
_this._filterWidth = 1;
|
|
52
|
+
/**
|
|
53
|
+
* Gets or sets the base color of the backplate.
|
|
54
|
+
*/
|
|
55
|
+
_this.baseColor = new Color4(0.0392157, 0.0666667, 0.207843, 1);
|
|
56
|
+
/**
|
|
57
|
+
* Gets or sets the line color of the backplate.
|
|
58
|
+
*/
|
|
59
|
+
_this.lineColor = new Color4(0.14902, 0.133333, 0.384314, 1);
|
|
60
|
+
/**
|
|
61
|
+
* Gets or sets the intensity of the fluent hover glow effect.
|
|
62
|
+
*/
|
|
63
|
+
_this.blobIntensity = 0.98;
|
|
64
|
+
/**
|
|
65
|
+
* Gets or sets the far size of the fluent hover glow effect.
|
|
66
|
+
*/
|
|
67
|
+
_this.blobFarSize = 0.04;
|
|
68
|
+
/**
|
|
69
|
+
* Gets or sets the distance considered "near" to the backplate, which controls the size of the fluent hover glow effect (see blobNearSize).
|
|
70
|
+
*/
|
|
71
|
+
_this.blobNearDistance = 0;
|
|
72
|
+
/**
|
|
73
|
+
* Gets or sets the distance considered "far" from the backplate, which controls the size of the fluent hover glow effect (see blobFarSize).
|
|
74
|
+
*/
|
|
75
|
+
_this.blobFarDistance = 0.08;
|
|
76
|
+
/**
|
|
77
|
+
* Gets or sets the length of the fluent hover glow effect fade.
|
|
78
|
+
*/
|
|
79
|
+
_this.blobFadeLength = 0.08;
|
|
80
|
+
/**
|
|
81
|
+
* Gets or sets the size of the fluent hover glow effect when the left pointer is considered "near" to the backplate (see blobNearDistance).
|
|
82
|
+
*/
|
|
83
|
+
_this.blobNearSize = 0.22;
|
|
84
|
+
/**
|
|
85
|
+
* Gets or sets the progress of the fluent hover glow effect selection animation corresponding to the left pointer (0.0 - 1.0).
|
|
86
|
+
*/
|
|
87
|
+
_this.blobPulse = 0;
|
|
88
|
+
/**
|
|
89
|
+
* Gets or sets the opacity of the fluent hover glow effect corresponding to the left pointer (0.0 - 1.0). Default is 0.
|
|
90
|
+
*/
|
|
91
|
+
_this.blobFade = 0;
|
|
92
|
+
/**
|
|
93
|
+
* Gets or sets the size of the fluent hover glow effect when the right pointer is considered "near" to the backplate (see blobNearDistance).
|
|
94
|
+
*/
|
|
95
|
+
_this.blobNearSize2 = 0.22;
|
|
96
|
+
/**
|
|
97
|
+
* Gets or sets the progress of the fluent hover glow effect selection animation corresponding to the right pointer (0.0 - 1.0).
|
|
98
|
+
*/
|
|
99
|
+
_this.blobPulse2 = 0;
|
|
100
|
+
/**
|
|
101
|
+
* Gets or sets the opacity of the fluent hover glow effect corresponding to the right pointer (0.0 - 1.0). Default is 0.
|
|
102
|
+
*/
|
|
103
|
+
_this.blobFade2 = 0;
|
|
104
|
+
/** @hidden */
|
|
105
|
+
_this._rate = 0.135;
|
|
106
|
+
/**
|
|
107
|
+
* Gets or sets the color of the highlights on the backplate line.
|
|
108
|
+
*/
|
|
109
|
+
_this.highlightColor = new Color4(0.98, 0.98, 0.98, 1);
|
|
110
|
+
/**
|
|
111
|
+
* Gets or sets the width of the highlights on the backplate line.
|
|
112
|
+
*/
|
|
113
|
+
_this.highlightWidth = 0.25;
|
|
114
|
+
/** @hidden */
|
|
115
|
+
_this._highlightTransform = new Vector4(1, 1, 0, 0);
|
|
116
|
+
/** @hidden */
|
|
117
|
+
_this._highlight = 1;
|
|
118
|
+
/**
|
|
119
|
+
* Gets or sets the intensity of the iridescence effect.
|
|
120
|
+
*/
|
|
121
|
+
_this.iridescenceIntensity = 0;
|
|
122
|
+
/**
|
|
123
|
+
* Gets or sets the intensity of the iridescence effect on the backplate edges.
|
|
124
|
+
*/
|
|
125
|
+
_this.iridescenceEdgeIntensity = 1;
|
|
126
|
+
/** @hidden */
|
|
127
|
+
_this._angle = -45;
|
|
128
|
+
/**
|
|
129
|
+
* Gets or sets the opacity of the backplate (0.0 - 1.0).
|
|
130
|
+
*/
|
|
131
|
+
_this.fadeOut = 1;
|
|
132
|
+
/** @hidden */
|
|
133
|
+
_this._reflected = true;
|
|
134
|
+
/** @hidden */
|
|
135
|
+
_this._frequency = 1;
|
|
136
|
+
/** @hidden */
|
|
137
|
+
_this._verticalOffset = 0;
|
|
138
|
+
/**
|
|
139
|
+
* Gets or sets the world-space position of the tip of the left index finger.
|
|
140
|
+
*/
|
|
141
|
+
_this.globalLeftIndexTipPosition = Vector3.Zero();
|
|
142
|
+
_this._globalLeftIndexTipPosition4 = Vector4.Zero();
|
|
143
|
+
/**
|
|
144
|
+
* Gets or sets the world-space position of the tip of the right index finger.
|
|
145
|
+
*/
|
|
146
|
+
_this.globalRightIndexTipPosition = Vector3.Zero();
|
|
147
|
+
_this._globalRightIndexTipPosition4 = Vector4.Zero();
|
|
148
|
+
_this.alphaMode = Constants.ALPHA_DISABLE;
|
|
149
|
+
_this.backFaceCulling = false;
|
|
150
|
+
_this._blobTexture = new Texture(FluentBackplateMaterial.BLOB_TEXTURE_URL, _this.getScene(), true, false, Texture.NEAREST_SAMPLINGMODE);
|
|
151
|
+
_this._iridescentMap = new Texture(FluentBackplateMaterial.IM_TEXTURE_URL, _this.getScene(), true, false, Texture.NEAREST_SAMPLINGMODE);
|
|
152
|
+
return _this;
|
|
153
|
+
}
|
|
154
|
+
FluentBackplateMaterial.prototype.needAlphaBlending = function () {
|
|
155
|
+
return false;
|
|
156
|
+
};
|
|
157
|
+
FluentBackplateMaterial.prototype.needAlphaTesting = function () {
|
|
158
|
+
return false;
|
|
159
|
+
};
|
|
160
|
+
FluentBackplateMaterial.prototype.getAlphaTestTexture = function () {
|
|
161
|
+
return null;
|
|
162
|
+
};
|
|
163
|
+
FluentBackplateMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
|
|
164
|
+
if (this.isFrozen) {
|
|
165
|
+
if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
|
|
166
|
+
return true;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
if (!subMesh.materialDefines) {
|
|
170
|
+
subMesh.materialDefines = new FluentBackplateMaterialDefines();
|
|
171
|
+
}
|
|
172
|
+
var defines = subMesh.materialDefines;
|
|
173
|
+
var scene = this.getScene();
|
|
174
|
+
if (this._isReadyForSubMesh(subMesh)) {
|
|
175
|
+
return true;
|
|
176
|
+
}
|
|
177
|
+
var engine = scene.getEngine();
|
|
178
|
+
// Attribs
|
|
179
|
+
MaterialHelper.PrepareDefinesForAttributes(mesh, defines, false, false);
|
|
180
|
+
// Get correct effect
|
|
181
|
+
if (defines.isDirty) {
|
|
182
|
+
defines.markAsProcessed();
|
|
183
|
+
scene.resetCachedMaterial();
|
|
184
|
+
// Fallbacks
|
|
185
|
+
var fallbacks = new EffectFallbacks();
|
|
186
|
+
if (defines.FOG) {
|
|
187
|
+
fallbacks.addFallback(1, "FOG");
|
|
188
|
+
}
|
|
189
|
+
MaterialHelper.HandleFallbacksForShadows(defines, fallbacks);
|
|
190
|
+
defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;
|
|
191
|
+
//Attributes
|
|
192
|
+
var attribs = [VertexBuffer.PositionKind];
|
|
193
|
+
if (defines.NORMAL) {
|
|
194
|
+
attribs.push(VertexBuffer.NormalKind);
|
|
195
|
+
}
|
|
196
|
+
if (defines.UV1) {
|
|
197
|
+
attribs.push(VertexBuffer.UVKind);
|
|
198
|
+
}
|
|
199
|
+
if (defines.UV2) {
|
|
200
|
+
attribs.push(VertexBuffer.UV2Kind);
|
|
201
|
+
}
|
|
202
|
+
if (defines.VERTEXCOLOR) {
|
|
203
|
+
attribs.push(VertexBuffer.ColorKind);
|
|
204
|
+
}
|
|
205
|
+
if (defines.TANGENT) {
|
|
206
|
+
attribs.push(VertexBuffer.TangentKind);
|
|
207
|
+
}
|
|
208
|
+
MaterialHelper.PrepareAttributesForInstances(attribs, defines);
|
|
209
|
+
// Legacy browser patch
|
|
210
|
+
var shaderName = "fluentBackplate";
|
|
211
|
+
var join = defines.toString();
|
|
212
|
+
var uniforms = [
|
|
213
|
+
"world", "viewProjection", "cameraPosition",
|
|
214
|
+
"_Radius_", "_Line_Width_", "_Absolute_Sizes_", "_Filter_Width_", "_Base_Color_", "_Line_Color_",
|
|
215
|
+
"_Radius_Top_Left_", "_Radius_Top_Right_", "_Radius_Bottom_Left_", "_Radius_Bottom_Right_",
|
|
216
|
+
"_Blob_Position_", "_Blob_Intensity_", "_Blob_Near_Size_", "_Blob_Far_Size_", "_Blob_Near_Distance_",
|
|
217
|
+
"_Blob_Far_Distance_", "_Blob_Fade_Length_", "_Blob_Pulse_", "_Blob_Fade_", "_Blob_Texture_",
|
|
218
|
+
"_Blob_Position_2_", "_Blob_Near_Size_2_", "_Blob_Pulse_2_", "_Blob_Fade_2_", "_Rate_", "_Highlight_Color_",
|
|
219
|
+
"_Highlight_Width_", "_Highlight_Transform_", "_Highlight_", "_Iridescence_Intensity_", "_Iridescence_Edge_Intensity_",
|
|
220
|
+
"_Angle_", "_Fade_Out_", "_Reflected_", "_Frequency_", "_Vertical_Offset_", "_Iridescent_Map_",
|
|
221
|
+
"_Use_Global_Left_Index_", "_Use_Global_Right_Index_", "Global_Left_Index_Tip_Position", "Global_Right_Index_Tip_Position"
|
|
222
|
+
];
|
|
223
|
+
var samplers = ["_Blob_Texture_", "_Iridescent_Map_"];
|
|
224
|
+
var uniformBuffers = new Array();
|
|
225
|
+
MaterialHelper.PrepareUniformsAndSamplersList({
|
|
226
|
+
uniformsNames: uniforms,
|
|
227
|
+
uniformBuffersNames: uniformBuffers,
|
|
228
|
+
samplers: samplers,
|
|
229
|
+
defines: defines,
|
|
230
|
+
maxSimultaneousLights: 4
|
|
231
|
+
});
|
|
232
|
+
subMesh.setEffect(scene.getEngine().createEffect(shaderName, {
|
|
233
|
+
attributes: attribs,
|
|
234
|
+
uniformsNames: uniforms,
|
|
235
|
+
uniformBuffersNames: uniformBuffers,
|
|
236
|
+
samplers: samplers,
|
|
237
|
+
defines: join,
|
|
238
|
+
fallbacks: fallbacks,
|
|
239
|
+
onCompiled: this.onCompiled,
|
|
240
|
+
onError: this.onError,
|
|
241
|
+
indexParameters: { maxSimultaneousLights: 4 }
|
|
242
|
+
}, engine), defines, this._materialContext);
|
|
243
|
+
}
|
|
244
|
+
if (!subMesh.effect || !subMesh.effect.isReady()) {
|
|
245
|
+
return false;
|
|
246
|
+
}
|
|
247
|
+
defines._renderId = scene.getRenderId();
|
|
248
|
+
subMesh.effect._wasPreviouslyReady = true;
|
|
249
|
+
return true;
|
|
250
|
+
};
|
|
251
|
+
FluentBackplateMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {
|
|
252
|
+
var _a, _b;
|
|
253
|
+
var defines = subMesh.materialDefines;
|
|
254
|
+
if (!defines) {
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
var effect = subMesh.effect;
|
|
258
|
+
if (!effect) {
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
this._activeEffect = effect;
|
|
262
|
+
// Matrices
|
|
263
|
+
this.bindOnlyWorldMatrix(world);
|
|
264
|
+
this._activeEffect.setMatrix("viewProjection", this.getScene().getTransformMatrix());
|
|
265
|
+
this._activeEffect.setVector3("cameraPosition", (_b = (_a = this.getScene().activeCamera) === null || _a === void 0 ? void 0 : _a.position) !== null && _b !== void 0 ? _b : Vector3.ZeroReadOnly);
|
|
266
|
+
// "Round Rect"
|
|
267
|
+
this._activeEffect.setFloat("_Radius_", this.radius);
|
|
268
|
+
this._activeEffect.setFloat("_Line_Width_", this.lineWidth);
|
|
269
|
+
this._activeEffect.setFloat("_Absolute_Sizes_", this.absoluteSizes ? 1.0 : 0.0);
|
|
270
|
+
this._activeEffect.setFloat("_Filter_Width_", this._filterWidth);
|
|
271
|
+
this._activeEffect.setDirectColor4("_Base_Color_", this.baseColor);
|
|
272
|
+
this._activeEffect.setDirectColor4("_Line_Color_", this.lineColor);
|
|
273
|
+
// "Radii Multipliers"
|
|
274
|
+
this._activeEffect.setFloat("_Radius_Top_Left_", 1);
|
|
275
|
+
this._activeEffect.setFloat("_Radius_Top_Right_", 1.0);
|
|
276
|
+
this._activeEffect.setFloat("_Radius_Bottom_Left_", 1.0);
|
|
277
|
+
this._activeEffect.setFloat("_Radius_Bottom_Right_", 1.0);
|
|
278
|
+
// "Blob"
|
|
279
|
+
//define BLOB_ENABLE true;
|
|
280
|
+
this._activeEffect.setFloat("_Blob_Intensity_", this.blobIntensity);
|
|
281
|
+
this._activeEffect.setFloat("_Blob_Near_Size_", this.blobNearSize);
|
|
282
|
+
this._activeEffect.setFloat("_Blob_Far_Size_", this.blobFarSize);
|
|
283
|
+
this._activeEffect.setFloat("_Blob_Near_Distance_", this.blobNearDistance);
|
|
284
|
+
this._activeEffect.setFloat("_Blob_Far_Distance_", this.blobFarDistance);
|
|
285
|
+
this._activeEffect.setFloat("_Blob_Fade_Length_", this.blobFadeLength);
|
|
286
|
+
this._activeEffect.setFloat("_Blob_Pulse_", this.blobPulse);
|
|
287
|
+
this._activeEffect.setFloat("_Blob_Fade_", this.blobFade);
|
|
288
|
+
// "Blob Texture"
|
|
289
|
+
this._activeEffect.setTexture("_Blob_Texture_", this._blobTexture);
|
|
290
|
+
// "Blob 2"
|
|
291
|
+
//define BLOB_ENABLE_2 true;
|
|
292
|
+
this._activeEffect.setFloat("_Blob_Near_Size_2_", this.blobNearSize2);
|
|
293
|
+
this._activeEffect.setFloat("_Blob_Pulse_2_", this.blobPulse2);
|
|
294
|
+
this._activeEffect.setFloat("_Blob_Fade_2_", this.blobFade2);
|
|
295
|
+
// "Line Highlight"
|
|
296
|
+
this._activeEffect.setFloat("_Rate_", this._rate);
|
|
297
|
+
this._activeEffect.setDirectColor4("_Highlight_Color_", this.highlightColor);
|
|
298
|
+
this._activeEffect.setFloat("_Highlight_Width_", this.highlightWidth);
|
|
299
|
+
this._activeEffect.setVector4("_Highlight_Transform_", this._highlightTransform);
|
|
300
|
+
this._activeEffect.setFloat("_Highlight_", this._highlight);
|
|
301
|
+
// "Iridescence"
|
|
302
|
+
this._activeEffect.setFloat("_Iridescence_Intensity_", this.iridescenceIntensity);
|
|
303
|
+
this._activeEffect.setFloat("_Iridescence_Edge_Intensity_", this.iridescenceEdgeIntensity);
|
|
304
|
+
this._activeEffect.setFloat("_Angle_", this._angle);
|
|
305
|
+
// "Fade"
|
|
306
|
+
this._activeEffect.setFloat("_Fade_Out_", this.fadeOut);
|
|
307
|
+
// "Antialiasing"
|
|
308
|
+
//define SMOOTH_EDGES true;
|
|
309
|
+
// "ChooseAngle"
|
|
310
|
+
this._activeEffect.setFloat("_Reflected_", this._reflected ? 1.0 : 0.0);
|
|
311
|
+
// "Multiply"
|
|
312
|
+
this._activeEffect.setFloat("_Frequency_", this._frequency);
|
|
313
|
+
this._activeEffect.setFloat("_Vertical_Offset_", this._verticalOffset);
|
|
314
|
+
// "Color Texture"
|
|
315
|
+
//define IRIDESCENT_MAP_ENABLE true;
|
|
316
|
+
this._activeEffect.setTexture("_Iridescent_Map_", this._iridescentMap);
|
|
317
|
+
// "Global"
|
|
318
|
+
this._activeEffect.setFloat("_Use_Global_Left_Index_", 1.0);
|
|
319
|
+
this._activeEffect.setFloat("_Use_Global_Right_Index_", 1.0);
|
|
320
|
+
this._globalLeftIndexTipPosition4.set(this.globalLeftIndexTipPosition.x, this.globalLeftIndexTipPosition.y, this.globalLeftIndexTipPosition.z, 1.0);
|
|
321
|
+
this._activeEffect.setVector4("Global_Left_Index_Tip_Position", this._globalLeftIndexTipPosition4);
|
|
322
|
+
this._globalRightIndexTipPosition4.set(this.globalRightIndexTipPosition.x, this.globalRightIndexTipPosition.y, this.globalRightIndexTipPosition.z, 1.0);
|
|
323
|
+
this._activeEffect.setVector4("Global_Right_Index_Tip_Position", this._globalRightIndexTipPosition4);
|
|
324
|
+
this._afterBind(mesh, this._activeEffect);
|
|
325
|
+
};
|
|
326
|
+
/**
|
|
327
|
+
* Get the list of animatables in the material.
|
|
328
|
+
* @returns the list of animatables object used in the material
|
|
329
|
+
*/
|
|
330
|
+
FluentBackplateMaterial.prototype.getAnimatables = function () {
|
|
331
|
+
return [];
|
|
332
|
+
};
|
|
333
|
+
FluentBackplateMaterial.prototype.dispose = function (forceDisposeEffect) {
|
|
334
|
+
_super.prototype.dispose.call(this, forceDisposeEffect);
|
|
335
|
+
this._blobTexture.dispose();
|
|
336
|
+
this._iridescentMap.dispose();
|
|
337
|
+
};
|
|
338
|
+
FluentBackplateMaterial.prototype.clone = function (name) {
|
|
339
|
+
var _this = this;
|
|
340
|
+
return SerializationHelper.Clone(function () { return new FluentBackplateMaterial(name, _this.getScene()); }, this);
|
|
341
|
+
};
|
|
342
|
+
FluentBackplateMaterial.prototype.serialize = function () {
|
|
343
|
+
var serializationObject = _super.prototype.serialize.call(this);
|
|
344
|
+
serializationObject.customType = "BABYLON.FluentBackplateMaterial";
|
|
345
|
+
return serializationObject;
|
|
346
|
+
};
|
|
347
|
+
FluentBackplateMaterial.prototype.getClassName = function () {
|
|
348
|
+
return "FluentBackplateMaterial";
|
|
349
|
+
};
|
|
350
|
+
// Statics
|
|
351
|
+
FluentBackplateMaterial.Parse = function (source, scene, rootUrl) {
|
|
352
|
+
return SerializationHelper.Parse(function () { return new FluentBackplateMaterial(source.name, scene); }, source, scene, rootUrl);
|
|
353
|
+
};
|
|
354
|
+
/**
|
|
355
|
+
* URL pointing to the texture used to define the coloring for the fluent blob effect.
|
|
356
|
+
*/
|
|
357
|
+
FluentBackplateMaterial.BLOB_TEXTURE_URL = "https://assets.babylonjs.com/meshes/MRTK/mrtk-fluent-backplate-blob.png";
|
|
358
|
+
/**
|
|
359
|
+
* URL pointing to the texture used to define iridescent map.
|
|
360
|
+
*/
|
|
361
|
+
FluentBackplateMaterial.IM_TEXTURE_URL = "https://assets.babylonjs.com/meshes/MRTK/mrtk-fluent-backplate-iridescence.png";
|
|
362
|
+
__decorate([
|
|
363
|
+
serialize()
|
|
364
|
+
], FluentBackplateMaterial.prototype, "radius", void 0);
|
|
365
|
+
__decorate([
|
|
366
|
+
serialize()
|
|
367
|
+
], FluentBackplateMaterial.prototype, "lineWidth", void 0);
|
|
368
|
+
__decorate([
|
|
369
|
+
serialize()
|
|
370
|
+
], FluentBackplateMaterial.prototype, "absoluteSizes", void 0);
|
|
371
|
+
__decorate([
|
|
372
|
+
serialize()
|
|
373
|
+
], FluentBackplateMaterial.prototype, "baseColor", void 0);
|
|
374
|
+
__decorate([
|
|
375
|
+
serialize()
|
|
376
|
+
], FluentBackplateMaterial.prototype, "lineColor", void 0);
|
|
377
|
+
__decorate([
|
|
378
|
+
serialize()
|
|
379
|
+
], FluentBackplateMaterial.prototype, "blobIntensity", void 0);
|
|
380
|
+
__decorate([
|
|
381
|
+
serialize()
|
|
382
|
+
], FluentBackplateMaterial.prototype, "blobFarSize", void 0);
|
|
383
|
+
__decorate([
|
|
384
|
+
serialize()
|
|
385
|
+
], FluentBackplateMaterial.prototype, "blobNearDistance", void 0);
|
|
386
|
+
__decorate([
|
|
387
|
+
serialize()
|
|
388
|
+
], FluentBackplateMaterial.prototype, "blobFarDistance", void 0);
|
|
389
|
+
__decorate([
|
|
390
|
+
serialize()
|
|
391
|
+
], FluentBackplateMaterial.prototype, "blobFadeLength", void 0);
|
|
392
|
+
__decorate([
|
|
393
|
+
serialize()
|
|
394
|
+
], FluentBackplateMaterial.prototype, "blobNearSize", void 0);
|
|
395
|
+
__decorate([
|
|
396
|
+
serialize()
|
|
397
|
+
], FluentBackplateMaterial.prototype, "blobPulse", void 0);
|
|
398
|
+
__decorate([
|
|
399
|
+
serialize()
|
|
400
|
+
], FluentBackplateMaterial.prototype, "blobFade", void 0);
|
|
401
|
+
__decorate([
|
|
402
|
+
serialize()
|
|
403
|
+
], FluentBackplateMaterial.prototype, "blobNearSize2", void 0);
|
|
404
|
+
__decorate([
|
|
405
|
+
serialize()
|
|
406
|
+
], FluentBackplateMaterial.prototype, "blobPulse2", void 0);
|
|
407
|
+
__decorate([
|
|
408
|
+
serialize()
|
|
409
|
+
], FluentBackplateMaterial.prototype, "blobFade2", void 0);
|
|
410
|
+
__decorate([
|
|
411
|
+
serialize()
|
|
412
|
+
], FluentBackplateMaterial.prototype, "highlightColor", void 0);
|
|
413
|
+
__decorate([
|
|
414
|
+
serialize()
|
|
415
|
+
], FluentBackplateMaterial.prototype, "highlightWidth", void 0);
|
|
416
|
+
__decorate([
|
|
417
|
+
serialize()
|
|
418
|
+
], FluentBackplateMaterial.prototype, "iridescenceIntensity", void 0);
|
|
419
|
+
__decorate([
|
|
420
|
+
serialize()
|
|
421
|
+
], FluentBackplateMaterial.prototype, "iridescenceEdgeIntensity", void 0);
|
|
422
|
+
__decorate([
|
|
423
|
+
serialize()
|
|
424
|
+
], FluentBackplateMaterial.prototype, "fadeOut", void 0);
|
|
425
|
+
__decorate([
|
|
426
|
+
serializeAsVector3()
|
|
427
|
+
], FluentBackplateMaterial.prototype, "globalLeftIndexTipPosition", void 0);
|
|
428
|
+
__decorate([
|
|
429
|
+
serializeAsVector3()
|
|
430
|
+
], FluentBackplateMaterial.prototype, "globalRightIndexTipPosition", void 0);
|
|
431
|
+
return FluentBackplateMaterial;
|
|
432
|
+
}(PushMaterial));
|
|
433
|
+
export { FluentBackplateMaterial };
|
|
434
|
+
RegisterClass("BABYLON.GUI.FluentBackplateMaterial", FluentBackplateMaterial);
|
|
435
|
+
//# sourceMappingURL=fluentBackplateMaterial.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fluentBackplateMaterial.js","sourceRoot":"","sources":["../../../../../sourceES6/gui/src/3D/materials/fluentBackplate/fluentBackplateMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"@babylonjs/core/types\";\r\nimport { SerializationHelper, serialize, serializeAsVector3 } from \"@babylonjs/core/Misc/decorators\";\r\nimport { Matrix, Vector3, Vector4 } from \"@babylonjs/core/Maths/math.vector\";\r\nimport { IAnimatable } from \"@babylonjs/core/Animations/animatable.interface\";\r\nimport { BaseTexture } from \"@babylonjs/core/Materials/Textures/baseTexture\";\r\nimport { Texture } from \"@babylonjs/core/Materials/Textures/texture\";\r\nimport { MaterialDefines } from \"@babylonjs/core/Materials/materialDefines\";\r\nimport { MaterialHelper } from \"@babylonjs/core/Materials/materialHelper\";\r\nimport { IEffectCreationOptions } from \"@babylonjs/core/Materials/effect\";\r\nimport { PushMaterial } from \"@babylonjs/core/Materials/pushMaterial\";\r\nimport { VertexBuffer } from \"@babylonjs/core/Buffers/buffer\";\r\nimport { AbstractMesh } from \"@babylonjs/core/Meshes/abstractMesh\";\r\nimport { SubMesh } from \"@babylonjs/core/Meshes/subMesh\";\r\nimport { Mesh } from \"@babylonjs/core/Meshes/mesh\";\r\nimport { Scene } from \"@babylonjs/core/scene\";\r\nimport { RegisterClass } from \"@babylonjs/core/Misc/typeStore\";\r\nimport { Color4 } from \"@babylonjs/core/Maths/math.color\";\r\nimport { EffectFallbacks } from \"@babylonjs/core/Materials/effectFallbacks\";\r\nimport { Constants } from \"@babylonjs/core/Engines/constants\";\r\n\r\nimport \"./shaders/fluentBackplate.fragment\";\r\nimport \"./shaders/fluentBackplate.vertex\";\r\n\r\n/** @hidden */\r\nclass FluentBackplateMaterialDefines extends MaterialDefines {\r\n public BLOB_ENABLE = true;\r\n public BLOB_ENABLE_2 = true;\r\n public SMOOTH_EDGES = true;\r\n public IRIDESCENT_MAP_ENABLE = 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 square buttons with fluent desgin\r\n */\r\nexport class FluentBackplateMaterial extends PushMaterial {\r\n /**\r\n * URL pointing to the texture used to define the coloring for the fluent blob effect.\r\n */\r\n public static BLOB_TEXTURE_URL = \"https://assets.babylonjs.com/meshes/MRTK/mrtk-fluent-backplate-blob.png\";\r\n\r\n /**\r\n * URL pointing to the texture used to define iridescent map.\r\n */\r\n public static IM_TEXTURE_URL = \"https://assets.babylonjs.com/meshes/MRTK/mrtk-fluent-backplate-iridescence.png\";\r\n\r\n private _blobTexture: Texture;\r\n private _iridescentMap: Texture;\r\n\r\n /**\r\n * Gets or sets the corner radius on the backplate. Best to keep this value between 0.01 and 0.5. Default is 0.03.\r\n */\r\n @serialize()\r\n public radius = 0.03;\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.01;\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 /** @hidden */\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.0392157, 0.0666667, 0.207843, 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.14902, 0.133333, 0.384314, 1);\r\n\r\n /**\r\n * Gets or sets the intensity of the fluent hover glow effect.\r\n */\r\n @serialize()\r\n public blobIntensity = 0.98;\r\n\r\n /**\r\n * Gets or sets the far size of the fluent hover glow effect.\r\n */\r\n @serialize()\r\n public blobFarSize = 0.04;\r\n\r\n /**\r\n * Gets or sets the distance considered \"near\" to the backplate, which controls the size of the fluent hover glow effect (see blobNearSize).\r\n */\r\n @serialize()\r\n public blobNearDistance = 0;\r\n\r\n /**\r\n * Gets or sets the distance considered \"far\" from the backplate, which controls the size of the fluent hover glow effect (see blobFarSize).\r\n */\r\n @serialize()\r\n public blobFarDistance = 0.08;\r\n\r\n /**\r\n * Gets or sets the length of the fluent hover glow effect fade.\r\n */\r\n @serialize()\r\n public blobFadeLength = 0.08;\r\n\r\n /**\r\n * Gets or sets the size of the fluent hover glow effect when the left pointer is considered \"near\" to the backplate (see blobNearDistance).\r\n */\r\n @serialize()\r\n public blobNearSize = 0.22;\r\n\r\n /**\r\n * Gets or sets the progress of the fluent hover glow effect selection animation corresponding to the left pointer (0.0 - 1.0).\r\n */\r\n @serialize()\r\n public blobPulse = 0;\r\n\r\n /**\r\n * Gets or sets the opacity of the fluent hover glow effect corresponding to the left pointer (0.0 - 1.0). Default is 0.\r\n */\r\n @serialize()\r\n public blobFade = 0;\r\n\r\n /**\r\n * Gets or sets the size of the fluent hover glow effect when the right pointer is considered \"near\" to the backplate (see blobNearDistance).\r\n */\r\n @serialize()\r\n public blobNearSize2 = 0.22;\r\n\r\n /**\r\n * Gets or sets the progress of the fluent hover glow effect selection animation corresponding to the right pointer (0.0 - 1.0).\r\n */\r\n @serialize()\r\n public blobPulse2 = 0;\r\n\r\n /**\r\n * Gets or sets the opacity of the fluent hover glow effect corresponding to the right pointer (0.0 - 1.0). Default is 0.\r\n */\r\n @serialize()\r\n public blobFade2 = 0;\r\n\r\n /** @hidden */\r\n public _rate = 0.135;\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.98, 0.98, 0.98, 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.25;\r\n\r\n /** @hidden */\r\n public _highlightTransform = new Vector4(1, 1, 0, 0);\r\n\r\n /** @hidden */\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;\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 /** @hidden */\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 /** @hidden */\r\n public _reflected = true;\r\n\r\n /** @hidden */\r\n public _frequency = 1;\r\n\r\n /** @hidden */\r\n public _verticalOffset = 0;\r\n\r\n /**\r\n * Gets or sets the world-space position of the tip of the left index finger.\r\n */\r\n @serializeAsVector3()\r\n public globalLeftIndexTipPosition = Vector3.Zero();\r\n private _globalLeftIndexTipPosition4 = Vector4.Zero();\r\n\r\n /**\r\n * Gets or sets the world-space position of the tip of the right index finger.\r\n */\r\n @serializeAsVector3()\r\n public globalRightIndexTipPosition = Vector3.Zero();\r\n private _globalRightIndexTipPosition4 = Vector4.Zero();\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._blobTexture = new Texture(FluentBackplateMaterial.BLOB_TEXTURE_URL, this.getScene(), true, false, Texture.NEAREST_SAMPLINGMODE);\r\n this._iridescentMap = new Texture(FluentBackplateMaterial.IM_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 public isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean {\r\n if (this.isFrozen) {\r\n if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {\r\n return true;\r\n }\r\n }\r\n\r\n if (!subMesh.materialDefines) {\r\n subMesh.materialDefines = new FluentBackplateMaterialDefines();\r\n }\r\n\r\n const defines = <FluentBackplateMaterialDefines>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 = \"fluentBackplate\";\r\n const join = defines.toString();\r\n\r\n const uniforms = [\r\n \"world\", \"viewProjection\", \"cameraPosition\"\r\n , \"_Radius_\", \"_Line_Width_\", \"_Absolute_Sizes_\", \"_Filter_Width_\", \"_Base_Color_\", \"_Line_Color_\"\r\n , \"_Radius_Top_Left_\", \"_Radius_Top_Right_\", \"_Radius_Bottom_Left_\", \"_Radius_Bottom_Right_\"\r\n , \"_Blob_Position_\", \"_Blob_Intensity_\", \"_Blob_Near_Size_\", \"_Blob_Far_Size_\", \"_Blob_Near_Distance_\"\r\n , \"_Blob_Far_Distance_\", \"_Blob_Fade_Length_\", \"_Blob_Pulse_\", \"_Blob_Fade_\", \"_Blob_Texture_\"\r\n , \"_Blob_Position_2_\", \"_Blob_Near_Size_2_\", \"_Blob_Pulse_2_\", \"_Blob_Fade_2_\", \"_Rate_\", \"_Highlight_Color_\"\r\n , \"_Highlight_Width_\", \"_Highlight_Transform_\", \"_Highlight_\", \"_Iridescence_Intensity_\", \"_Iridescence_Edge_Intensity_\"\r\n , \"_Angle_\", \"_Fade_Out_\", \"_Reflected_\", \"_Frequency_\", \"_Vertical_Offset_\", \"_Iridescent_Map_\"\r\n , \"_Use_Global_Left_Index_\", \"_Use_Global_Right_Index_\", \"Global_Left_Index_Tip_Position\", \"Global_Right_Index_Tip_Position\"\r\n ];\r\n const samplers: string[] = [\"_Blob_Texture_\", \"_Iridescent_Map_\"];\r\n const uniformBuffers = new Array<string>();\r\n\r\n MaterialHelper.PrepareUniformsAndSamplersList(<IEffectCreationOptions>{\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: defines,\r\n maxSimultaneousLights: 4\r\n });\r\n\r\n subMesh.setEffect(scene.getEngine().createEffect(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 }, engine), defines, this._materialContext);\r\n }\r\n if (!subMesh.effect || !subMesh.effect.isReady()) {\r\n return false;\r\n }\r\n\r\n defines._renderId = scene.getRenderId();\r\n subMesh.effect._wasPreviouslyReady = true;\r\n\r\n return true;\r\n }\r\n\r\n public bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void {\r\n const defines = <FluentBackplateMaterialDefines>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 ?? Vector3.ZeroReadOnly);\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_\", 1);\r\n this._activeEffect.setFloat(\"_Radius_Top_Right_\", 1.0);\r\n this._activeEffect.setFloat(\"_Radius_Bottom_Left_\", 1.0);\r\n this._activeEffect.setFloat(\"_Radius_Bottom_Right_\", 1.0);\r\n\r\n // \"Blob\"\r\n //define BLOB_ENABLE true;\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_Pulse_\", this.blobPulse);\r\n this._activeEffect.setFloat(\"_Blob_Fade_\", this.blobFade);\r\n\r\n // \"Blob Texture\"\r\n this._activeEffect.setTexture(\"_Blob_Texture_\", this._blobTexture);\r\n\r\n // \"Blob 2\"\r\n //define BLOB_ENABLE_2 true;\r\n this._activeEffect.setFloat(\"_Blob_Near_Size_2_\", this.blobNearSize2);\r\n this._activeEffect.setFloat(\"_Blob_Pulse_2_\", this.blobPulse2);\r\n this._activeEffect.setFloat(\"_Blob_Fade_2_\", this.blobFade2);\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 this._activeEffect.setFloat(\"_Iridescence_Intensity_\", this.iridescenceIntensity);\r\n this._activeEffect.setFloat(\"_Iridescence_Edge_Intensity_\", this.iridescenceEdgeIntensity);\r\n this._activeEffect.setFloat(\"_Angle_\", this._angle);\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 // \"ChooseAngle\"\r\n this._activeEffect.setFloat(\"_Reflected_\", this._reflected ? 1.0 : 0.0);\r\n\r\n // \"Multiply\"\r\n this._activeEffect.setFloat(\"_Frequency_\", this._frequency);\r\n this._activeEffect.setFloat(\"_Vertical_Offset_\", this._verticalOffset);\r\n\r\n // \"Color Texture\"\r\n //define IRIDESCENT_MAP_ENABLE true;\r\n this._activeEffect.setTexture(\"_Iridescent_Map_\", this._iridescentMap);\r\n\r\n // \"Global\"\r\n this._activeEffect.setFloat(\"_Use_Global_Left_Index_\", 1.0);\r\n this._activeEffect.setFloat(\"_Use_Global_Right_Index_\", 1.0);\r\n\r\n this._globalLeftIndexTipPosition4.set(\r\n this.globalLeftIndexTipPosition.x,\r\n this.globalLeftIndexTipPosition.y,\r\n this.globalLeftIndexTipPosition.z,\r\n 1.0);\r\n this._activeEffect.setVector4(\"Global_Left_Index_Tip_Position\", this._globalLeftIndexTipPosition4);\r\n\r\n this._globalRightIndexTipPosition4.set(\r\n this.globalRightIndexTipPosition.x,\r\n this.globalRightIndexTipPosition.y,\r\n this.globalRightIndexTipPosition.z,\r\n 1.0);\r\n this._activeEffect.setVector4(\"Global_Right_Index_Tip_Position\", this._globalRightIndexTipPosition4);\r\n\r\n this._afterBind(mesh, this._activeEffect);\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 this._blobTexture.dispose();\r\n this._iridescentMap.dispose();\r\n }\r\n\r\n public clone(name: string): FluentBackplateMaterial {\r\n return SerializationHelper.Clone(() => new FluentBackplateMaterial(name, this.getScene()), this);\r\n }\r\n\r\n public serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.customType = \"BABYLON.FluentBackplateMaterial\";\r\n return serializationObject;\r\n }\r\n\r\n public getClassName(): string {\r\n return \"FluentBackplateMaterial\";\r\n }\r\n\r\n // Statics\r\n public static Parse(source: any, scene: Scene, rootUrl: string): FluentBackplateMaterial {\r\n return SerializationHelper.Parse(() => new FluentBackplateMaterial(source.name, scene), source, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.GUI.FluentBackplateMaterial\", FluentBackplateMaterial);\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./fluentBackplateMaterial";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../sourceES6/gui/src/3D/materials/fluentBackplate/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC","sourcesContent":["export * from \"./fluentBackplateMaterial\";"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ShaderStore } from "@babylonjs/core/Engines/shaderStore.js";
|
|
2
|
+
var name = 'fluentBackplatePixelShader';
|
|
3
|
+
var shader = "uniform vec3 cameraPosition;\nvarying vec3 vPosition;\nvarying vec3 vNormal;\nvarying vec2 vUV;\nvarying vec3 vTangent;\nvarying vec3 vBinormal;\nvarying vec4 vColor;\nvarying vec4 vExtra1;\nvarying vec4 vExtra2;\nvarying vec4 vExtra3;\nuniform float _Radius_;\nuniform float _Line_Width_;\nuniform bool _Absolute_Sizes_;\nuniform float _Filter_Width_;\nuniform vec4 _Base_Color_;\nuniform vec4 _Line_Color_;\nuniform float _Radius_Top_Left_;\nuniform float _Radius_Top_Right_;\nuniform float _Radius_Bottom_Left_;\nuniform float _Radius_Bottom_Right_;\n\nuniform vec3 _Blob_Position_;\nuniform float _Blob_Intensity_;\nuniform float _Blob_Near_Size_;\nuniform float _Blob_Far_Size_;\nuniform float _Blob_Near_Distance_;\nuniform float _Blob_Far_Distance_;\nuniform float _Blob_Fade_Length_;\nuniform float _Blob_Pulse_;\nuniform float _Blob_Fade_;\nuniform sampler2D _Blob_Texture_;\n\nuniform vec3 _Blob_Position_2_;\nuniform float _Blob_Near_Size_2_;\nuniform float _Blob_Pulse_2_;\nuniform float _Blob_Fade_2_;\nuniform float _Rate_;\nuniform vec4 _Highlight_Color_;\nuniform float _Highlight_Width_;\nuniform vec4 _Highlight_Transform_;\nuniform float _Highlight_;\nuniform float _Iridescence_Intensity_;\nuniform float _Iridescence_Edge_Intensity_;\nuniform float _Angle_;\nuniform float _Fade_Out_;\n\nuniform bool _Reflected_;\nuniform float _Frequency_;\nuniform float _Vertical_Offset_;\n\nuniform sampler2D _Iridescent_Map_;\nuniform bool _Use_Global_Left_Index_;\nuniform bool _Use_Global_Right_Index_;\nuniform vec4 Global_Left_Index_Tip_Position;\nuniform vec4 Global_Right_Index_Tip_Position;\n\nvoid Round_Rect_Fragment_B31(\nfloat Radius,\nfloat Line_Width,\nvec4 Line_Color,\nfloat Filter_Width,\nvec2 UV,\nfloat Line_Visibility,\nvec4 Rect_Parms,\nvec4 Fill_Color,\nout vec4 Color)\n{\nfloat d=length(max(abs(UV)-Rect_Parms.xy,0.0));\nfloat dx=max(fwidth(d)*Filter_Width,0.00001);\n\nfloat g=min(Rect_Parms.z,Rect_Parms.w);\nfloat dgrad=max(fwidth(g)*Filter_Width,0.00001);\nfloat Inside_Rect=clamp(g/dgrad,0.0,1.0);\n\n\nfloat inner=clamp((d+dx*0.5-max(Radius-Line_Width,d-dx*0.5))/dx,0.0,1.0);\nColor=clamp(mix(Fill_Color,Line_Color,inner),0.0,1.0)*Inside_Rect;\n\n\n\n}\n\n\nvoid Blob_Fragment_B71(\nsampler2D Blob_Texture,\nvec4 Blob_Info1,\nvec4 Blob_Info2,\nout vec4 Blob_Color)\n{\nfloat k1=dot(Blob_Info1.xy,Blob_Info1.xy);\nfloat k2=dot(Blob_Info2.xy,Blob_Info2.xy);\nvec3 closer=k1<k2 ? vec3(k1,Blob_Info1.z,Blob_Info1.w) : vec3(k2,Blob_Info2.z,Blob_Info2.w);\nBlob_Color=closer.z*texture(Blob_Texture,vec2(vec2(sqrt(closer.x),closer.y).x,1.0-vec2(sqrt(closer.x),closer.y).y))*clamp(1.0-closer.x,0.0,1.0);\n}\n\n\nvoid Line_Fragment_B48(\nvec4 Base_Color,\nvec4 Highlight_Color,\nfloat Highlight_Width,\nvec3 Line_Vertex,\nfloat Highlight,\nout vec4 Line_Color)\n{\nfloat k2=1.0-clamp(abs(Line_Vertex.y/Highlight_Width),0.0,1.0);\nLine_Color=mix(Base_Color,Highlight_Color,Highlight*k2);\n}\n\n\nvoid Scale_RGB_B54(\nvec4 Color,\nfloat Scalar,\nout vec4 Result)\n{\nResult=vec4(Scalar,Scalar,Scalar,1)*Color;\n}\n\n\nvoid Conditional_Float_B38(\nbool Which,\nfloat If_True,\nfloat If_False,\nout float Result)\n{\nResult=Which ? If_True : If_False;\n}\n\nvoid main()\n{\n\nfloat R_Q72;\nfloat G_Q72;\nfloat B_Q72;\nfloat A_Q72;\nR_Q72=vColor.r; G_Q72=vColor.g; B_Q72=vColor.b; A_Q72=vColor.a;\nvec4 Blob_Color_Q71;\n#if BLOB_ENABLE\n\nfloat k1=dot(vExtra2.xy,vExtra2.xy);\nfloat k2=dot(vExtra3.xy,vExtra3.xy);\nvec3 closer=k1<k2 ? vec3(k1,vExtra2.z,vExtra2.w) : vec3(k2,vExtra3.z,vExtra3.w);\nBlob_Color_Q71=closer.z*texture(_Blob_Texture_,vec2(vec2(sqrt(closer.x),closer.y).x,1.0-vec2(sqrt(closer.x),closer.y).y))*clamp(1.0-closer.x,0.0,1.0);\n#else\nBlob_Color_Q71=vec4(0,0,0,0);\n#endif\nvec4 Line_Color_Q48;\nLine_Fragment_B48(_Line_Color_,_Highlight_Color_,_Highlight_Width_,vTangent,_Highlight_,Line_Color_Q48);\n\nfloat X_Q67;\nfloat Y_Q67;\nX_Q67=vUV.x;\nY_Q67=vUV.y;\n\nvec3 Incident_Q66=normalize(vPosition-cameraPosition);\n\nvec3 Reflected_Q60=reflect(Incident_Q66,vBinormal);\n\nfloat Product_Q63=Y_Q67*_Vertical_Offset_;\n\nfloat Dot_Q68=dot(Incident_Q66,Reflected_Q60);\n\nfloat Dot_Q57=dot(vNormal,Incident_Q66);\nfloat Result_Q38;\nConditional_Float_B38(_Reflected_,Dot_Q68,Dot_Q57,Result_Q38);\n\nfloat Product_Q64=Result_Q38*_Frequency_;\n\nfloat Sum_Q69=Product_Q64+1.0;\n\nfloat Product_Q70=Sum_Q69*0.5;\n\nfloat Sum_Q62=Product_Q63+Product_Q70;\n\nfloat FractF_Q59=fract(Sum_Q62);\n\nvec2 Vec2_Q65=vec2(FractF_Q59,0.5);\n\nvec4 Color_Q58;\n#if IRIDESCENT_MAP_ENABLE\nColor_Q58=texture(_Iridescent_Map_,Vec2_Q65);\n#else\nColor_Q58=vec4(0,0,0,0);\n#endif\nvec4 Result_Q54;\nScale_RGB_B54(Color_Q58,_Iridescence_Edge_Intensity_,Result_Q54);\nvec4 Result_Q55;\nScale_RGB_B54(Color_Q58,_Iridescence_Intensity_,Result_Q55);\n\nvec4 Base_And_Iridescent_Q53;\nBase_And_Iridescent_Q53=Line_Color_Q48+vec4(Result_Q54.rgb,0.0);\n\nvec4 Base_And_Iridescent_Q56;\nBase_And_Iridescent_Q56=_Base_Color_+vec4(Result_Q55.rgb,0.0);\n\nvec4 Result_Q52=Base_And_Iridescent_Q53; Result_Q52.a=1.0;\n\nvec4 Result_Q35=Blob_Color_Q71+(1.0-Blob_Color_Q71.a)*Base_And_Iridescent_Q56;\nvec4 Color_Q31;\nRound_Rect_Fragment_B31(R_Q72,G_Q72,Result_Q52,_Filter_Width_,vUV,1.0,vExtra1,Result_Q35,Color_Q31);\n\nvec4 Result_Q47=_Fade_Out_*Color_Q31;\nvec4 Out_Color=Result_Q47;\nfloat Clip_Threshold=0.001;\nbool To_sRGB=false;\ngl_FragColor=Out_Color;\n}";
|
|
4
|
+
ShaderStore.ShadersStore[name] = shader;
|
|
5
|
+
/** @hidden */
|
|
6
|
+
export var fluentBackplatePixelShader = { name: name, shader: shader };
|
|
7
|
+
//# sourceMappingURL=fluentBackplate.fragment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fluentBackplate.fragment.js","sourceRoot":"","sources":["../../../../../../sourceES6/gui/src/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAElE,IAAI,IAAI,GAAG,4BAA4B,CAAC;AACxC,IAAI,MAAM,GAAG,iwKA6MX,CAAC;AAEH,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACxC,cAAc;AACd,MAAM,CAAC,IAAI,0BAA0B,GAAG,EAAE,IAAI,MAAA,EAAE,MAAM,QAAA,EAAE,CAAC","sourcesContent":["import { ShaderStore } from \"@babylonjs/core/Engines/shaderStore\";\n\nlet name = 'fluentBackplatePixelShader';\nlet shader = `uniform vec3 cameraPosition;\nvarying vec3 vPosition;\nvarying vec3 vNormal;\nvarying vec2 vUV;\nvarying vec3 vTangent;\nvarying vec3 vBinormal;\nvarying vec4 vColor;\nvarying vec4 vExtra1;\nvarying vec4 vExtra2;\nvarying vec4 vExtra3;\nuniform float _Radius_;\nuniform float _Line_Width_;\nuniform bool _Absolute_Sizes_;\nuniform float _Filter_Width_;\nuniform vec4 _Base_Color_;\nuniform vec4 _Line_Color_;\nuniform float _Radius_Top_Left_;\nuniform float _Radius_Top_Right_;\nuniform float _Radius_Bottom_Left_;\nuniform float _Radius_Bottom_Right_;\n\nuniform vec3 _Blob_Position_;\nuniform float _Blob_Intensity_;\nuniform float _Blob_Near_Size_;\nuniform float _Blob_Far_Size_;\nuniform float _Blob_Near_Distance_;\nuniform float _Blob_Far_Distance_;\nuniform float _Blob_Fade_Length_;\nuniform float _Blob_Pulse_;\nuniform float _Blob_Fade_;\nuniform sampler2D _Blob_Texture_;\n\nuniform vec3 _Blob_Position_2_;\nuniform float _Blob_Near_Size_2_;\nuniform float _Blob_Pulse_2_;\nuniform float _Blob_Fade_2_;\nuniform float _Rate_;\nuniform vec4 _Highlight_Color_;\nuniform float _Highlight_Width_;\nuniform vec4 _Highlight_Transform_;\nuniform float _Highlight_;\nuniform float _Iridescence_Intensity_;\nuniform float _Iridescence_Edge_Intensity_;\nuniform float _Angle_;\nuniform float _Fade_Out_;\n\nuniform bool _Reflected_;\nuniform float _Frequency_;\nuniform float _Vertical_Offset_;\n\nuniform sampler2D _Iridescent_Map_;\nuniform bool _Use_Global_Left_Index_;\nuniform bool _Use_Global_Right_Index_;\nuniform vec4 Global_Left_Index_Tip_Position;\nuniform vec4 Global_Right_Index_Tip_Position;\n\nvoid Round_Rect_Fragment_B31(\nfloat Radius,\nfloat Line_Width,\nvec4 Line_Color,\nfloat Filter_Width,\nvec2 UV,\nfloat Line_Visibility,\nvec4 Rect_Parms,\nvec4 Fill_Color,\nout vec4 Color)\n{\nfloat d=length(max(abs(UV)-Rect_Parms.xy,0.0));\nfloat dx=max(fwidth(d)*Filter_Width,0.00001);\n\nfloat g=min(Rect_Parms.z,Rect_Parms.w);\nfloat dgrad=max(fwidth(g)*Filter_Width,0.00001);\nfloat Inside_Rect=clamp(g/dgrad,0.0,1.0);\n\n\nfloat inner=clamp((d+dx*0.5-max(Radius-Line_Width,d-dx*0.5))/dx,0.0,1.0);\nColor=clamp(mix(Fill_Color,Line_Color,inner),0.0,1.0)*Inside_Rect;\n\n\n\n}\n\n\nvoid Blob_Fragment_B71(\nsampler2D Blob_Texture,\nvec4 Blob_Info1,\nvec4 Blob_Info2,\nout vec4 Blob_Color)\n{\nfloat k1=dot(Blob_Info1.xy,Blob_Info1.xy);\nfloat k2=dot(Blob_Info2.xy,Blob_Info2.xy);\nvec3 closer=k1<k2 ? vec3(k1,Blob_Info1.z,Blob_Info1.w) : vec3(k2,Blob_Info2.z,Blob_Info2.w);\nBlob_Color=closer.z*texture(Blob_Texture,vec2(vec2(sqrt(closer.x),closer.y).x,1.0-vec2(sqrt(closer.x),closer.y).y))*clamp(1.0-closer.x,0.0,1.0);\n}\n\n\nvoid Line_Fragment_B48(\nvec4 Base_Color,\nvec4 Highlight_Color,\nfloat Highlight_Width,\nvec3 Line_Vertex,\nfloat Highlight,\nout vec4 Line_Color)\n{\nfloat k2=1.0-clamp(abs(Line_Vertex.y/Highlight_Width),0.0,1.0);\nLine_Color=mix(Base_Color,Highlight_Color,Highlight*k2);\n}\n\n\nvoid Scale_RGB_B54(\nvec4 Color,\nfloat Scalar,\nout vec4 Result)\n{\nResult=vec4(Scalar,Scalar,Scalar,1)*Color;\n}\n\n\nvoid Conditional_Float_B38(\nbool Which,\nfloat If_True,\nfloat If_False,\nout float Result)\n{\nResult=Which ? If_True : If_False;\n}\n\nvoid main()\n{\n\nfloat R_Q72;\nfloat G_Q72;\nfloat B_Q72;\nfloat A_Q72;\nR_Q72=vColor.r; G_Q72=vColor.g; B_Q72=vColor.b; A_Q72=vColor.a;\nvec4 Blob_Color_Q71;\n#if BLOB_ENABLE\n\nfloat k1=dot(vExtra2.xy,vExtra2.xy);\nfloat k2=dot(vExtra3.xy,vExtra3.xy);\nvec3 closer=k1<k2 ? vec3(k1,vExtra2.z,vExtra2.w) : vec3(k2,vExtra3.z,vExtra3.w);\nBlob_Color_Q71=closer.z*texture(_Blob_Texture_,vec2(vec2(sqrt(closer.x),closer.y).x,1.0-vec2(sqrt(closer.x),closer.y).y))*clamp(1.0-closer.x,0.0,1.0);\n#else\nBlob_Color_Q71=vec4(0,0,0,0);\n#endif\nvec4 Line_Color_Q48;\nLine_Fragment_B48(_Line_Color_,_Highlight_Color_,_Highlight_Width_,vTangent,_Highlight_,Line_Color_Q48);\n\nfloat X_Q67;\nfloat Y_Q67;\nX_Q67=vUV.x;\nY_Q67=vUV.y;\n\nvec3 Incident_Q66=normalize(vPosition-cameraPosition);\n\nvec3 Reflected_Q60=reflect(Incident_Q66,vBinormal);\n\nfloat Product_Q63=Y_Q67*_Vertical_Offset_;\n\nfloat Dot_Q68=dot(Incident_Q66,Reflected_Q60);\n\nfloat Dot_Q57=dot(vNormal,Incident_Q66);\nfloat Result_Q38;\nConditional_Float_B38(_Reflected_,Dot_Q68,Dot_Q57,Result_Q38);\n\nfloat Product_Q64=Result_Q38*_Frequency_;\n\nfloat Sum_Q69=Product_Q64+1.0;\n\nfloat Product_Q70=Sum_Q69*0.5;\n\nfloat Sum_Q62=Product_Q63+Product_Q70;\n\nfloat FractF_Q59=fract(Sum_Q62);\n\nvec2 Vec2_Q65=vec2(FractF_Q59,0.5);\n\nvec4 Color_Q58;\n#if IRIDESCENT_MAP_ENABLE\nColor_Q58=texture(_Iridescent_Map_,Vec2_Q65);\n#else\nColor_Q58=vec4(0,0,0,0);\n#endif\nvec4 Result_Q54;\nScale_RGB_B54(Color_Q58,_Iridescence_Edge_Intensity_,Result_Q54);\nvec4 Result_Q55;\nScale_RGB_B54(Color_Q58,_Iridescence_Intensity_,Result_Q55);\n\nvec4 Base_And_Iridescent_Q53;\nBase_And_Iridescent_Q53=Line_Color_Q48+vec4(Result_Q54.rgb,0.0);\n\nvec4 Base_And_Iridescent_Q56;\nBase_And_Iridescent_Q56=_Base_Color_+vec4(Result_Q55.rgb,0.0);\n\nvec4 Result_Q52=Base_And_Iridescent_Q53; Result_Q52.a=1.0;\n\nvec4 Result_Q35=Blob_Color_Q71+(1.0-Blob_Color_Q71.a)*Base_And_Iridescent_Q56;\nvec4 Color_Q31;\nRound_Rect_Fragment_B31(R_Q72,G_Q72,Result_Q52,_Filter_Width_,vUV,1.0,vExtra1,Result_Q35,Color_Q31);\n\nvec4 Result_Q47=_Fade_Out_*Color_Q31;\nvec4 Out_Color=Result_Q47;\nfloat Clip_Threshold=0.001;\nbool To_sRGB=false;\ngl_FragColor=Out_Color;\n}`;\n\nShaderStore.ShadersStore[name] = shader;\n/** @hidden */\nexport var fluentBackplatePixelShader = { name, shader };\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ShaderStore } from "@babylonjs/core/Engines/shaderStore.js";
|
|
2
|
+
var name = 'fluentBackplateVertexShader';
|
|
3
|
+
var shader = "uniform mat4 world;\nuniform mat4 viewProjection;\nuniform vec3 cameraPosition;\nattribute vec3 position;\nattribute vec3 normal;\n#ifdef TANGENT\nattribute vec3 tangent;\n#else\nconst vec3 tangent=vec3(0.);\n#endif\nuniform float _Radius_;\nuniform float _Line_Width_;\nuniform bool _Absolute_Sizes_;\nuniform float _Filter_Width_;\nuniform vec4 _Base_Color_;\nuniform vec4 _Line_Color_;\nuniform float _Radius_Top_Left_;\nuniform float _Radius_Top_Right_;\nuniform float _Radius_Bottom_Left_;\nuniform float _Radius_Bottom_Right_;\n\nuniform vec3 _Blob_Position_;\nuniform float _Blob_Intensity_;\nuniform float _Blob_Near_Size_;\nuniform float _Blob_Far_Size_;\nuniform float _Blob_Near_Distance_;\nuniform float _Blob_Far_Distance_;\nuniform float _Blob_Fade_Length_;\nuniform float _Blob_Pulse_;\nuniform float _Blob_Fade_;\nuniform sampler2D _Blob_Texture_;\n\nuniform vec3 _Blob_Position_2_;\nuniform float _Blob_Near_Size_2_;\nuniform float _Blob_Pulse_2_;\nuniform float _Blob_Fade_2_;\nuniform float _Rate_;\nuniform vec4 _Highlight_Color_;\nuniform float _Highlight_Width_;\nuniform vec4 _Highlight_Transform_;\nuniform float _Highlight_;\nuniform float _Iridescence_Intensity_;\nuniform float _Iridescence_Edge_Intensity_;\nuniform float _Angle_;\nuniform float _Fade_Out_;\n\nuniform bool _Reflected_;\nuniform float _Frequency_;\nuniform float _Vertical_Offset_;\n\nuniform sampler2D _Iridescent_Map_;\nuniform bool _Use_Global_Left_Index_;\nuniform bool _Use_Global_Right_Index_;\nuniform vec4 Global_Left_Index_Tip_Position;\nuniform vec4 Global_Right_Index_Tip_Position;\nvarying vec3 vPosition;\nvarying vec3 vNormal;\nvarying vec2 vUV;\nvarying vec3 vTangent;\nvarying vec3 vBinormal;\nvarying vec4 vColor;\nvarying vec4 vExtra1;\nvarying vec4 vExtra2;\nvarying vec4 vExtra3;\n\nvoid Object_To_World_Pos_B115(\nvec3 Pos_Object,\nout vec3 Pos_World)\n{\nPos_World=(world*vec4(Pos_Object,1.0)).xyz;\n}\n\n\nvoid PickDir_B140(\nfloat Degrees,\nvec3 DirX,\nvec3 DirY,\nout vec3 Dir)\n{\n\nfloat a=Degrees*3.14159/180.0;\nDir=cos(a)*DirX+sin(a)*DirY;\n}\n\n\nvoid Round_Rect_Vertex_B139(\nvec2 UV,\nfloat Radius,\nfloat Margin,\nfloat Anisotropy,\nfloat Gradient1,\nfloat Gradient2,\nout vec2 Rect_UV,\nout vec4 Rect_Parms,\nout vec2 Scale_XY,\nout vec2 Line_UV)\n{\nScale_XY=vec2(Anisotropy,1.0);\nLine_UV=(UV-vec2(0.5,0.5));\nRect_UV=Line_UV*Scale_XY;\nRect_Parms.xy=Scale_XY*0.5-vec2(Radius,Radius)-vec2(Margin,Margin);\nRect_Parms.z=Gradient1;\nRect_Parms.w=Gradient2;\n}\n\n\nvoid Line_Vertex_B135(\nvec2 Scale_XY,\nvec2 UV,\nfloat Time,\nfloat Rate,\nvec4 Highlight_Transform,\nout vec3 Line_Vertex)\n{\nfloat angle2=(Rate*Time)*2.0*3.1416;\nfloat sinAngle2=sin(angle2);\nfloat cosAngle2=cos(angle2);\nvec2 xformUV=UV*Highlight_Transform.xy+Highlight_Transform.zw;\nLine_Vertex.x=0.0;\nLine_Vertex.y=cosAngle2*xformUV.x-sinAngle2*xformUV.y;\nLine_Vertex.z=0.0;\n}\n\n\nvoid Blob_Vertex_B180(\nvec3 Position,\nvec3 Normal,\nvec3 Tangent,\nvec3 Bitangent,\nvec3 Blob_Position,\nfloat Intensity,\nfloat Blob_Near_Size,\nfloat Blob_Far_Size,\nfloat Blob_Near_Distance,\nfloat Blob_Far_Distance,\nfloat Blob_Fade_Length,\nfloat Blob_Pulse,\nfloat Blob_Fade,\nout vec4 Blob_Info)\n{\nvec3 blob=Blob_Position;\nvec3 delta=blob-Position;\nfloat dist=dot(Normal,delta);\nfloat lerpValue=clamp((abs(dist)-Blob_Near_Distance)/(Blob_Far_Distance-Blob_Near_Distance),0.0,1.0);\nfloat fadeValue=1.0-clamp((abs(dist)-Blob_Far_Distance)/Blob_Fade_Length,0.0,1.0);\nfloat size=Blob_Near_Size+(Blob_Far_Size-Blob_Near_Size)*lerpValue;\nvec2 blobXY=vec2(dot(delta,Tangent),dot(delta,Bitangent))/(0.0001+size);\nfloat Fade=fadeValue*Intensity*Blob_Fade;\nfloat Distance=(lerpValue*0.5+0.5)*(1.0-Blob_Pulse);\nBlob_Info=vec4(blobXY.x,blobXY.y,Distance,Fade);\n}\n\n\nvoid Move_Verts_B129(\nfloat Anisotropy,\nvec3 P,\nfloat Radius,\nout vec3 New_P,\nout vec2 New_UV,\nout float Radial_Gradient,\nout vec3 Radial_Dir)\n{\nvec2 UV=P.xy*2.0+0.5;\nvec2 center=clamp(UV,0.0,1.0);\nvec2 delta=UV-center;\nvec2 r2=2.0*vec2(Radius/Anisotropy,Radius);\nNew_UV=center+r2*(UV-2.0*center+0.5);\nNew_P=vec3(New_UV-0.5,P.z);\nRadial_Gradient=1.0-length(delta)*2.0;\nRadial_Dir=vec3(delta*r2,0.0);\n}\n\n\nvoid Object_To_World_Dir_B132(\nvec3 Dir_Object,\nout vec3 Binormal_World,\nout vec3 Binormal_World_N,\nout float Binormal_Length)\n{\nBinormal_World=(world*vec4(Dir_Object,0.0)).xyz;\nBinormal_Length=length(Binormal_World);\nBinormal_World_N=Binormal_World/Binormal_Length;\n}\n\n\nvoid RelativeOrAbsoluteDetail_B147(\nfloat Nominal_Radius,\nfloat Nominal_LineWidth,\nbool Absolute_Measurements,\nfloat Height,\nout float Radius,\nout float Line_Width)\n{\nfloat scale=Absolute_Measurements ? 1.0/Height : 1.0;\nRadius=Nominal_Radius*scale;\nLine_Width=Nominal_LineWidth*scale;\n}\n\n\nvoid Edge_AA_Vertex_B130(\nvec3 Position_World,\nvec3 Position_Object,\nvec3 Normal_Object,\nvec3 Eye,\nfloat Radial_Gradient,\nvec3 Radial_Dir,\nvec3 Tangent,\nout float Gradient1,\nout float Gradient2)\n{\n\nvec3 I=(Eye-Position_World);\nvec3 T=(world* vec4(Tangent,0.0)).xyz;\nfloat g=(dot(T,I)<0.0) ? 0.0 : 1.0;\nif (Normal_Object.z==0.0) {\n\nGradient1=Position_Object.z>0.0 ? g : 1.0;\nGradient2=Position_Object.z>0.0 ? 1.0 : g;\n} else {\n\n\n\n\nGradient1=g+(1.0-g)*(Radial_Gradient);\nGradient2=1.0;\n}\n}\n\n\nvoid Pick_Radius_B144(\nfloat Radius,\nfloat Radius_Top_Left,\nfloat Radius_Top_Right,\nfloat Radius_Bottom_Left,\nfloat Radius_Bottom_Right,\nvec3 Position,\nout float Result)\n{\nbool whichY=Position.y>0.0;\nResult=Position.x<0.0 ? (whichY ? Radius_Top_Left : Radius_Bottom_Left) : (whichY ? Radius_Top_Right : Radius_Bottom_Right);\nResult*=Radius;\n}\n\nvoid main()\n{\n\nvec3 Nrm_World_Q128;\nNrm_World_Q128=normalize((world*vec4(normal,0.0)).xyz);\n\nvec3 Tangent_World_Q131;\nvec3 Tangent_World_N_Q131;\nfloat Tangent_Length_Q131;\nTangent_World_Q131=(world*vec4(vec3(1,0,0),0.0)).xyz;\nTangent_Length_Q131=length(Tangent_World_Q131);\nTangent_World_N_Q131=Tangent_World_Q131/Tangent_Length_Q131;\nvec3 Binormal_World_Q132;\nvec3 Binormal_World_N_Q132;\nfloat Binormal_Length_Q132;\nObject_To_World_Dir_B132(vec3(0,1,0),Binormal_World_Q132,Binormal_World_N_Q132,Binormal_Length_Q132);\n\nfloat Anisotropy_Q133=Tangent_Length_Q131/Binormal_Length_Q132;\n\nvec3 Result_Q177;\nResult_Q177=mix(_Blob_Position_,Global_Left_Index_Tip_Position.xyz,float(_Use_Global_Left_Index_));\n\nvec3 Result_Q178;\nResult_Q178=mix(_Blob_Position_2_,Global_Right_Index_Tip_Position.xyz,float(_Use_Global_Right_Index_));\nfloat Result_Q144;\nPick_Radius_B144(_Radius_,_Radius_Top_Left_,_Radius_Top_Right_,_Radius_Bottom_Left_,_Radius_Bottom_Right_,position,Result_Q144);\nvec3 Dir_Q140;\nPickDir_B140(_Angle_,Tangent_World_N_Q131,Binormal_World_N_Q132,Dir_Q140);\nfloat Radius_Q147;\nfloat Line_Width_Q147;\nRelativeOrAbsoluteDetail_B147(Result_Q144,_Line_Width_,_Absolute_Sizes_,Binormal_Length_Q132,Radius_Q147,Line_Width_Q147);\n\nvec4 Out_Color_Q145=vec4(Radius_Q147,Line_Width_Q147,0,1);\nvec3 New_P_Q129;\nvec2 New_UV_Q129;\nfloat Radial_Gradient_Q129;\nvec3 Radial_Dir_Q129;\nMove_Verts_B129(Anisotropy_Q133,position,Radius_Q147,New_P_Q129,New_UV_Q129,Radial_Gradient_Q129,Radial_Dir_Q129);\nvec3 Pos_World_Q115;\nObject_To_World_Pos_B115(New_P_Q129,Pos_World_Q115);\nvec4 Blob_Info_Q180;\n#if BLOB_ENABLE\nBlob_Vertex_B180(Pos_World_Q115,Nrm_World_Q128,Tangent_World_N_Q131,Binormal_World_N_Q132,Result_Q177,_Blob_Intensity_,_Blob_Near_Size_,_Blob_Far_Size_,_Blob_Near_Distance_,_Blob_Far_Distance_,_Blob_Fade_Length_,_Blob_Pulse_,_Blob_Fade_,Blob_Info_Q180);\n#else\nBlob_Info_Q180=vec4(0,0,0,0);\n#endif\nvec4 Blob_Info_Q181;\n#if BLOB_ENABLE_2\nBlob_Vertex_B180(Pos_World_Q115,Nrm_World_Q128,Tangent_World_N_Q131,Binormal_World_N_Q132,Result_Q178,_Blob_Intensity_,_Blob_Near_Size_2_,_Blob_Far_Size_,_Blob_Near_Distance_,_Blob_Far_Distance_,_Blob_Fade_Length_,_Blob_Pulse_2_,_Blob_Fade_2_,Blob_Info_Q181);\n#else\nBlob_Info_Q181=vec4(0,0,0,0);\n#endif\nfloat Gradient1_Q130;\nfloat Gradient2_Q130;\n#if SMOOTH_EDGES\nEdge_AA_Vertex_B130(Pos_World_Q115,position,normal,cameraPosition,Radial_Gradient_Q129,Radial_Dir_Q129,tangent,Gradient1_Q130,Gradient2_Q130);\n#else\nGradient1_Q130=1.0;\nGradient2_Q130=1.0;\n#endif\nvec2 Rect_UV_Q139;\nvec4 Rect_Parms_Q139;\nvec2 Scale_XY_Q139;\nvec2 Line_UV_Q139;\nRound_Rect_Vertex_B139(New_UV_Q129,Radius_Q147,0.0,Anisotropy_Q133,Gradient1_Q130,Gradient2_Q130,Rect_UV_Q139,Rect_Parms_Q139,Scale_XY_Q139,Line_UV_Q139);\nvec3 Line_Vertex_Q135;\nLine_Vertex_B135(Scale_XY_Q139,Line_UV_Q139,0.0,_Rate_,_Highlight_Transform_,Line_Vertex_Q135);\nvec3 Position=Pos_World_Q115;\nvec3 Normal=Dir_Q140;\nvec2 UV=Rect_UV_Q139;\nvec3 Tangent=Line_Vertex_Q135;\nvec3 Binormal=Nrm_World_Q128;\nvec4 Color=Out_Color_Q145;\nvec4 Extra1=Rect_Parms_Q139;\nvec4 Extra2=Blob_Info_Q180;\nvec4 Extra3=Blob_Info_Q181;\ngl_Position=viewProjection*vec4(Position,1);\nvPosition=Position;\nvNormal=Normal;\nvUV=UV;\nvTangent=Tangent;\nvBinormal=Binormal;\nvColor=Color;\nvExtra1=Extra1;\nvExtra2=Extra2;\nvExtra3=Extra3;\n}";
|
|
4
|
+
ShaderStore.ShadersStore[name] = shader;
|
|
5
|
+
/** @hidden */
|
|
6
|
+
export var fluentBackplateVertexShader = { name: name, shader: shader };
|
|
7
|
+
//# sourceMappingURL=fluentBackplate.vertex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fluentBackplate.vertex.js","sourceRoot":"","sources":["../../../../../../sourceES6/gui/src/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAElE,IAAI,IAAI,GAAG,6BAA6B,CAAC;AACzC,IAAI,MAAM,GAAG,s0RAyUX,CAAC;AAEH,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACxC,cAAc;AACd,MAAM,CAAC,IAAI,2BAA2B,GAAG,EAAE,IAAI,MAAA,EAAE,MAAM,QAAA,EAAE,CAAC","sourcesContent":["import { ShaderStore } from \"@babylonjs/core/Engines/shaderStore\";\n\nlet name = 'fluentBackplateVertexShader';\nlet shader = `uniform mat4 world;\nuniform mat4 viewProjection;\nuniform vec3 cameraPosition;\nattribute vec3 position;\nattribute vec3 normal;\n#ifdef TANGENT\nattribute vec3 tangent;\n#else\nconst vec3 tangent=vec3(0.);\n#endif\nuniform float _Radius_;\nuniform float _Line_Width_;\nuniform bool _Absolute_Sizes_;\nuniform float _Filter_Width_;\nuniform vec4 _Base_Color_;\nuniform vec4 _Line_Color_;\nuniform float _Radius_Top_Left_;\nuniform float _Radius_Top_Right_;\nuniform float _Radius_Bottom_Left_;\nuniform float _Radius_Bottom_Right_;\n\nuniform vec3 _Blob_Position_;\nuniform float _Blob_Intensity_;\nuniform float _Blob_Near_Size_;\nuniform float _Blob_Far_Size_;\nuniform float _Blob_Near_Distance_;\nuniform float _Blob_Far_Distance_;\nuniform float _Blob_Fade_Length_;\nuniform float _Blob_Pulse_;\nuniform float _Blob_Fade_;\nuniform sampler2D _Blob_Texture_;\n\nuniform vec3 _Blob_Position_2_;\nuniform float _Blob_Near_Size_2_;\nuniform float _Blob_Pulse_2_;\nuniform float _Blob_Fade_2_;\nuniform float _Rate_;\nuniform vec4 _Highlight_Color_;\nuniform float _Highlight_Width_;\nuniform vec4 _Highlight_Transform_;\nuniform float _Highlight_;\nuniform float _Iridescence_Intensity_;\nuniform float _Iridescence_Edge_Intensity_;\nuniform float _Angle_;\nuniform float _Fade_Out_;\n\nuniform bool _Reflected_;\nuniform float _Frequency_;\nuniform float _Vertical_Offset_;\n\nuniform sampler2D _Iridescent_Map_;\nuniform bool _Use_Global_Left_Index_;\nuniform bool _Use_Global_Right_Index_;\nuniform vec4 Global_Left_Index_Tip_Position;\nuniform vec4 Global_Right_Index_Tip_Position;\nvarying vec3 vPosition;\nvarying vec3 vNormal;\nvarying vec2 vUV;\nvarying vec3 vTangent;\nvarying vec3 vBinormal;\nvarying vec4 vColor;\nvarying vec4 vExtra1;\nvarying vec4 vExtra2;\nvarying vec4 vExtra3;\n\nvoid Object_To_World_Pos_B115(\nvec3 Pos_Object,\nout vec3 Pos_World)\n{\nPos_World=(world*vec4(Pos_Object,1.0)).xyz;\n}\n\n\nvoid PickDir_B140(\nfloat Degrees,\nvec3 DirX,\nvec3 DirY,\nout vec3 Dir)\n{\n\nfloat a=Degrees*3.14159/180.0;\nDir=cos(a)*DirX+sin(a)*DirY;\n}\n\n\nvoid Round_Rect_Vertex_B139(\nvec2 UV,\nfloat Radius,\nfloat Margin,\nfloat Anisotropy,\nfloat Gradient1,\nfloat Gradient2,\nout vec2 Rect_UV,\nout vec4 Rect_Parms,\nout vec2 Scale_XY,\nout vec2 Line_UV)\n{\nScale_XY=vec2(Anisotropy,1.0);\nLine_UV=(UV-vec2(0.5,0.5));\nRect_UV=Line_UV*Scale_XY;\nRect_Parms.xy=Scale_XY*0.5-vec2(Radius,Radius)-vec2(Margin,Margin);\nRect_Parms.z=Gradient1;\nRect_Parms.w=Gradient2;\n}\n\n\nvoid Line_Vertex_B135(\nvec2 Scale_XY,\nvec2 UV,\nfloat Time,\nfloat Rate,\nvec4 Highlight_Transform,\nout vec3 Line_Vertex)\n{\nfloat angle2=(Rate*Time)*2.0*3.1416;\nfloat sinAngle2=sin(angle2);\nfloat cosAngle2=cos(angle2);\nvec2 xformUV=UV*Highlight_Transform.xy+Highlight_Transform.zw;\nLine_Vertex.x=0.0;\nLine_Vertex.y=cosAngle2*xformUV.x-sinAngle2*xformUV.y;\nLine_Vertex.z=0.0;\n}\n\n\nvoid Blob_Vertex_B180(\nvec3 Position,\nvec3 Normal,\nvec3 Tangent,\nvec3 Bitangent,\nvec3 Blob_Position,\nfloat Intensity,\nfloat Blob_Near_Size,\nfloat Blob_Far_Size,\nfloat Blob_Near_Distance,\nfloat Blob_Far_Distance,\nfloat Blob_Fade_Length,\nfloat Blob_Pulse,\nfloat Blob_Fade,\nout vec4 Blob_Info)\n{\nvec3 blob=Blob_Position;\nvec3 delta=blob-Position;\nfloat dist=dot(Normal,delta);\nfloat lerpValue=clamp((abs(dist)-Blob_Near_Distance)/(Blob_Far_Distance-Blob_Near_Distance),0.0,1.0);\nfloat fadeValue=1.0-clamp((abs(dist)-Blob_Far_Distance)/Blob_Fade_Length,0.0,1.0);\nfloat size=Blob_Near_Size+(Blob_Far_Size-Blob_Near_Size)*lerpValue;\nvec2 blobXY=vec2(dot(delta,Tangent),dot(delta,Bitangent))/(0.0001+size);\nfloat Fade=fadeValue*Intensity*Blob_Fade;\nfloat Distance=(lerpValue*0.5+0.5)*(1.0-Blob_Pulse);\nBlob_Info=vec4(blobXY.x,blobXY.y,Distance,Fade);\n}\n\n\nvoid Move_Verts_B129(\nfloat Anisotropy,\nvec3 P,\nfloat Radius,\nout vec3 New_P,\nout vec2 New_UV,\nout float Radial_Gradient,\nout vec3 Radial_Dir)\n{\nvec2 UV=P.xy*2.0+0.5;\nvec2 center=clamp(UV,0.0,1.0);\nvec2 delta=UV-center;\nvec2 r2=2.0*vec2(Radius/Anisotropy,Radius);\nNew_UV=center+r2*(UV-2.0*center+0.5);\nNew_P=vec3(New_UV-0.5,P.z);\nRadial_Gradient=1.0-length(delta)*2.0;\nRadial_Dir=vec3(delta*r2,0.0);\n}\n\n\nvoid Object_To_World_Dir_B132(\nvec3 Dir_Object,\nout vec3 Binormal_World,\nout vec3 Binormal_World_N,\nout float Binormal_Length)\n{\nBinormal_World=(world*vec4(Dir_Object,0.0)).xyz;\nBinormal_Length=length(Binormal_World);\nBinormal_World_N=Binormal_World/Binormal_Length;\n}\n\n\nvoid RelativeOrAbsoluteDetail_B147(\nfloat Nominal_Radius,\nfloat Nominal_LineWidth,\nbool Absolute_Measurements,\nfloat Height,\nout float Radius,\nout float Line_Width)\n{\nfloat scale=Absolute_Measurements ? 1.0/Height : 1.0;\nRadius=Nominal_Radius*scale;\nLine_Width=Nominal_LineWidth*scale;\n}\n\n\nvoid Edge_AA_Vertex_B130(\nvec3 Position_World,\nvec3 Position_Object,\nvec3 Normal_Object,\nvec3 Eye,\nfloat Radial_Gradient,\nvec3 Radial_Dir,\nvec3 Tangent,\nout float Gradient1,\nout float Gradient2)\n{\n\nvec3 I=(Eye-Position_World);\nvec3 T=(world* vec4(Tangent,0.0)).xyz;\nfloat g=(dot(T,I)<0.0) ? 0.0 : 1.0;\nif (Normal_Object.z==0.0) {\n\nGradient1=Position_Object.z>0.0 ? g : 1.0;\nGradient2=Position_Object.z>0.0 ? 1.0 : g;\n} else {\n\n\n\n\nGradient1=g+(1.0-g)*(Radial_Gradient);\nGradient2=1.0;\n}\n}\n\n\nvoid Pick_Radius_B144(\nfloat Radius,\nfloat Radius_Top_Left,\nfloat Radius_Top_Right,\nfloat Radius_Bottom_Left,\nfloat Radius_Bottom_Right,\nvec3 Position,\nout float Result)\n{\nbool whichY=Position.y>0.0;\nResult=Position.x<0.0 ? (whichY ? Radius_Top_Left : Radius_Bottom_Left) : (whichY ? Radius_Top_Right : Radius_Bottom_Right);\nResult*=Radius;\n}\n\nvoid main()\n{\n\nvec3 Nrm_World_Q128;\nNrm_World_Q128=normalize((world*vec4(normal,0.0)).xyz);\n\nvec3 Tangent_World_Q131;\nvec3 Tangent_World_N_Q131;\nfloat Tangent_Length_Q131;\nTangent_World_Q131=(world*vec4(vec3(1,0,0),0.0)).xyz;\nTangent_Length_Q131=length(Tangent_World_Q131);\nTangent_World_N_Q131=Tangent_World_Q131/Tangent_Length_Q131;\nvec3 Binormal_World_Q132;\nvec3 Binormal_World_N_Q132;\nfloat Binormal_Length_Q132;\nObject_To_World_Dir_B132(vec3(0,1,0),Binormal_World_Q132,Binormal_World_N_Q132,Binormal_Length_Q132);\n\nfloat Anisotropy_Q133=Tangent_Length_Q131/Binormal_Length_Q132;\n\nvec3 Result_Q177;\nResult_Q177=mix(_Blob_Position_,Global_Left_Index_Tip_Position.xyz,float(_Use_Global_Left_Index_));\n\nvec3 Result_Q178;\nResult_Q178=mix(_Blob_Position_2_,Global_Right_Index_Tip_Position.xyz,float(_Use_Global_Right_Index_));\nfloat Result_Q144;\nPick_Radius_B144(_Radius_,_Radius_Top_Left_,_Radius_Top_Right_,_Radius_Bottom_Left_,_Radius_Bottom_Right_,position,Result_Q144);\nvec3 Dir_Q140;\nPickDir_B140(_Angle_,Tangent_World_N_Q131,Binormal_World_N_Q132,Dir_Q140);\nfloat Radius_Q147;\nfloat Line_Width_Q147;\nRelativeOrAbsoluteDetail_B147(Result_Q144,_Line_Width_,_Absolute_Sizes_,Binormal_Length_Q132,Radius_Q147,Line_Width_Q147);\n\nvec4 Out_Color_Q145=vec4(Radius_Q147,Line_Width_Q147,0,1);\nvec3 New_P_Q129;\nvec2 New_UV_Q129;\nfloat Radial_Gradient_Q129;\nvec3 Radial_Dir_Q129;\nMove_Verts_B129(Anisotropy_Q133,position,Radius_Q147,New_P_Q129,New_UV_Q129,Radial_Gradient_Q129,Radial_Dir_Q129);\nvec3 Pos_World_Q115;\nObject_To_World_Pos_B115(New_P_Q129,Pos_World_Q115);\nvec4 Blob_Info_Q180;\n#if BLOB_ENABLE\nBlob_Vertex_B180(Pos_World_Q115,Nrm_World_Q128,Tangent_World_N_Q131,Binormal_World_N_Q132,Result_Q177,_Blob_Intensity_,_Blob_Near_Size_,_Blob_Far_Size_,_Blob_Near_Distance_,_Blob_Far_Distance_,_Blob_Fade_Length_,_Blob_Pulse_,_Blob_Fade_,Blob_Info_Q180);\n#else\nBlob_Info_Q180=vec4(0,0,0,0);\n#endif\nvec4 Blob_Info_Q181;\n#if BLOB_ENABLE_2\nBlob_Vertex_B180(Pos_World_Q115,Nrm_World_Q128,Tangent_World_N_Q131,Binormal_World_N_Q132,Result_Q178,_Blob_Intensity_,_Blob_Near_Size_2_,_Blob_Far_Size_,_Blob_Near_Distance_,_Blob_Far_Distance_,_Blob_Fade_Length_,_Blob_Pulse_2_,_Blob_Fade_2_,Blob_Info_Q181);\n#else\nBlob_Info_Q181=vec4(0,0,0,0);\n#endif\nfloat Gradient1_Q130;\nfloat Gradient2_Q130;\n#if SMOOTH_EDGES\nEdge_AA_Vertex_B130(Pos_World_Q115,position,normal,cameraPosition,Radial_Gradient_Q129,Radial_Dir_Q129,tangent,Gradient1_Q130,Gradient2_Q130);\n#else\nGradient1_Q130=1.0;\nGradient2_Q130=1.0;\n#endif\nvec2 Rect_UV_Q139;\nvec4 Rect_Parms_Q139;\nvec2 Scale_XY_Q139;\nvec2 Line_UV_Q139;\nRound_Rect_Vertex_B139(New_UV_Q129,Radius_Q147,0.0,Anisotropy_Q133,Gradient1_Q130,Gradient2_Q130,Rect_UV_Q139,Rect_Parms_Q139,Scale_XY_Q139,Line_UV_Q139);\nvec3 Line_Vertex_Q135;\nLine_Vertex_B135(Scale_XY_Q139,Line_UV_Q139,0.0,_Rate_,_Highlight_Transform_,Line_Vertex_Q135);\nvec3 Position=Pos_World_Q115;\nvec3 Normal=Dir_Q140;\nvec2 UV=Rect_UV_Q139;\nvec3 Tangent=Line_Vertex_Q135;\nvec3 Binormal=Nrm_World_Q128;\nvec4 Color=Out_Color_Q145;\nvec4 Extra1=Rect_Parms_Q139;\nvec4 Extra2=Blob_Info_Q180;\nvec4 Extra3=Blob_Info_Q181;\ngl_Position=viewProjection*vec4(Position,1);\nvPosition=Position;\nvNormal=Normal;\nvUV=UV;\nvTangent=Tangent;\nvBinormal=Binormal;\nvColor=Color;\nvExtra1=Extra1;\nvExtra2=Extra2;\nvExtra3=Extra3;\n}`;\n\nShaderStore.ShadersStore[name] = shader;\n/** @hidden */\nexport var fluentBackplateVertexShader = { name, shader };\n"]}
|