@onerjs/gui 8.23.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/FrameGraph/guiTask.d.ts +34 -0
- package/2D/FrameGraph/guiTask.js +62 -0
- package/2D/FrameGraph/guiTask.js.map +1 -0
- package/2D/FrameGraph/renderGraphGUIBlock.d.ts +43 -0
- package/2D/FrameGraph/renderGraphGUIBlock.js +66 -0
- package/2D/FrameGraph/renderGraphGUIBlock.js.map +1 -0
- package/2D/adtInstrumentation.d.ts +52 -0
- package/2D/adtInstrumentation.js +107 -0
- package/2D/adtInstrumentation.js.map +1 -0
- package/2D/advancedDynamicTexture.d.ts +548 -0
- package/2D/advancedDynamicTexture.js +1522 -0
- package/2D/advancedDynamicTexture.js.map +1 -0
- package/2D/controls/button.d.ts +109 -0
- package/2D/controls/button.js +246 -0
- package/2D/controls/button.js.map +1 -0
- package/2D/controls/checkbox.d.ts +53 -0
- package/2D/controls/checkbox.js +164 -0
- package/2D/controls/checkbox.js.map +1 -0
- package/2D/controls/colorpicker.d.ts +101 -0
- package/2D/controls/colorpicker.js +1396 -0
- package/2D/controls/colorpicker.js.map +1 -0
- package/2D/controls/container.d.ts +179 -0
- package/2D/controls/container.js +616 -0
- package/2D/controls/container.js.map +1 -0
- package/2D/controls/control.d.ts +943 -0
- package/2D/controls/control.js +2460 -0
- package/2D/controls/control.js.map +1 -0
- package/2D/controls/displayGrid.d.ts +53 -0
- package/2D/controls/displayGrid.js +202 -0
- package/2D/controls/displayGrid.js.map +1 -0
- package/2D/controls/ellipse.d.ts +25 -0
- package/2D/controls/ellipse.js +93 -0
- package/2D/controls/ellipse.js.map +1 -0
- package/2D/controls/focusableButton.d.ts +17 -0
- package/2D/controls/focusableButton.js +25 -0
- package/2D/controls/focusableButton.js.map +1 -0
- package/2D/controls/focusableControl.d.ts +43 -0
- package/2D/controls/focusableControl.js +2 -0
- package/2D/controls/focusableControl.js.map +1 -0
- package/2D/controls/gradient/BaseGradient.d.ts +69 -0
- package/2D/controls/gradient/BaseGradient.js +84 -0
- package/2D/controls/gradient/BaseGradient.js.map +1 -0
- package/2D/controls/gradient/LinearGradient.d.ts +45 -0
- package/2D/controls/gradient/LinearGradient.js +73 -0
- package/2D/controls/gradient/LinearGradient.js.map +1 -0
- package/2D/controls/gradient/RadialGradient.d.ts +53 -0
- package/2D/controls/gradient/RadialGradient.js +89 -0
- package/2D/controls/gradient/RadialGradient.js.map +1 -0
- package/2D/controls/grid.d.ts +151 -0
- package/2D/controls/grid.js +528 -0
- package/2D/controls/grid.js.map +1 -0
- package/2D/controls/image.d.ts +228 -0
- package/2D/controls/image.js +915 -0
- package/2D/controls/image.js.map +1 -0
- package/2D/controls/index.d.ts +34 -0
- package/2D/controls/index.js +35 -0
- package/2D/controls/index.js.map +1 -0
- package/2D/controls/inputPassword.d.ts +9 -0
- package/2D/controls/inputPassword.js +22 -0
- package/2D/controls/inputPassword.js.map +1 -0
- package/2D/controls/inputText.d.ts +197 -0
- package/2D/controls/inputText.js +1035 -0
- package/2D/controls/inputText.js.map +1 -0
- package/2D/controls/inputTextArea.d.ts +142 -0
- package/2D/controls/inputTextArea.js +1025 -0
- package/2D/controls/inputTextArea.js.map +1 -0
- package/2D/controls/line.d.ts +73 -0
- package/2D/controls/line.js +227 -0
- package/2D/controls/line.js.map +1 -0
- package/2D/controls/multiLine.d.ts +75 -0
- package/2D/controls/multiLine.js +237 -0
- package/2D/controls/multiLine.js.map +1 -0
- package/2D/controls/radioButton.d.ts +49 -0
- package/2D/controls/radioButton.js +185 -0
- package/2D/controls/radioButton.js.map +1 -0
- package/2D/controls/rectangle.d.ts +43 -0
- package/2D/controls/rectangle.js +204 -0
- package/2D/controls/rectangle.js.map +1 -0
- package/2D/controls/scrollViewers/scrollViewer.d.ts +178 -0
- package/2D/controls/scrollViewers/scrollViewer.js +587 -0
- package/2D/controls/scrollViewers/scrollViewer.js.map +1 -0
- package/2D/controls/scrollViewers/scrollViewerWindow.d.ts +51 -0
- package/2D/controls/scrollViewers/scrollViewerWindow.js +254 -0
- package/2D/controls/scrollViewers/scrollViewerWindow.js.map +1 -0
- package/2D/controls/selector.d.ts +237 -0
- package/2D/controls/selector.js +579 -0
- package/2D/controls/selector.js.map +1 -0
- package/2D/controls/sliders/baseSlider.d.ts +80 -0
- package/2D/controls/sliders/baseSlider.js +299 -0
- package/2D/controls/sliders/baseSlider.js.map +1 -0
- package/2D/controls/sliders/imageBasedSlider.d.ts +47 -0
- package/2D/controls/sliders/imageBasedSlider.js +168 -0
- package/2D/controls/sliders/imageBasedSlider.js.map +1 -0
- package/2D/controls/sliders/imageScrollBar.d.ts +67 -0
- package/2D/controls/sliders/imageScrollBar.js +248 -0
- package/2D/controls/sliders/imageScrollBar.js.map +1 -0
- package/2D/controls/sliders/scrollBar.d.ts +50 -0
- package/2D/controls/sliders/scrollBar.js +175 -0
- package/2D/controls/sliders/scrollBar.js.map +1 -0
- package/2D/controls/sliders/slider.d.ts +46 -0
- package/2D/controls/sliders/slider.js +281 -0
- package/2D/controls/sliders/slider.js.map +1 -0
- package/2D/controls/stackPanel.d.ts +64 -0
- package/2D/controls/stackPanel.js +244 -0
- package/2D/controls/stackPanel.js.map +1 -0
- package/2D/controls/statics.d.ts +6 -0
- package/2D/controls/statics.js +50 -0
- package/2D/controls/statics.js.map +1 -0
- package/2D/controls/textBlock.d.ts +219 -0
- package/2D/controls/textBlock.js +670 -0
- package/2D/controls/textBlock.js.map +1 -0
- package/2D/controls/textWrapper.d.ts +13 -0
- package/2D/controls/textWrapper.js +88 -0
- package/2D/controls/textWrapper.js.map +1 -0
- package/2D/controls/toggleButton.d.ts +93 -0
- package/2D/controls/toggleButton.js +229 -0
- package/2D/controls/toggleButton.js.map +1 -0
- package/2D/controls/virtualKeyboard.d.ts +102 -0
- package/2D/controls/virtualKeyboard.js +275 -0
- package/2D/controls/virtualKeyboard.js.map +1 -0
- package/2D/index.d.ts +11 -0
- package/2D/index.js +13 -0
- package/2D/index.js.map +1 -0
- package/2D/math2D.d.ts +136 -0
- package/2D/math2D.js +235 -0
- package/2D/math2D.js.map +1 -0
- package/2D/measure.d.ts +77 -0
- package/2D/measure.js +138 -0
- package/2D/measure.js.map +1 -0
- package/2D/multiLinePoint.d.ts +47 -0
- package/2D/multiLinePoint.js +110 -0
- package/2D/multiLinePoint.js.map +1 -0
- package/2D/style.d.ts +46 -0
- package/2D/style.js +80 -0
- package/2D/style.js.map +1 -0
- package/2D/valueAndUnit.d.ts +89 -0
- package/2D/valueAndUnit.js +194 -0
- package/2D/valueAndUnit.js.map +1 -0
- package/2D/xmlLoader.d.ts +60 -0
- package/2D/xmlLoader.js +348 -0
- package/2D/xmlLoader.js.map +1 -0
- package/3D/behaviors/defaultBehavior.d.ts +73 -0
- package/3D/behaviors/defaultBehavior.js +103 -0
- package/3D/behaviors/defaultBehavior.js.map +1 -0
- package/3D/controls/MRTK3/touchHolographicButton.d.ts +220 -0
- package/3D/controls/MRTK3/touchHolographicButton.js +868 -0
- package/3D/controls/MRTK3/touchHolographicButton.js.map +1 -0
- package/3D/controls/abstractButton3D.d.ts +15 -0
- package/3D/controls/abstractButton3D.js +22 -0
- package/3D/controls/abstractButton3D.js.map +1 -0
- package/3D/controls/button3D.d.ts +51 -0
- package/3D/controls/button3D.js +98 -0
- package/3D/controls/button3D.js.map +1 -0
- package/3D/controls/container3D.d.ts +72 -0
- package/3D/controls/container3D.js +126 -0
- package/3D/controls/container3D.js.map +1 -0
- package/3D/controls/contentDisplay3D.d.ts +42 -0
- package/3D/controls/contentDisplay3D.js +81 -0
- package/3D/controls/contentDisplay3D.js.map +1 -0
- package/3D/controls/control3D.d.ts +183 -0
- package/3D/controls/control3D.js +401 -0
- package/3D/controls/control3D.js.map +1 -0
- package/3D/controls/cylinderPanel.d.ts +17 -0
- package/3D/controls/cylinderPanel.js +57 -0
- package/3D/controls/cylinderPanel.js.map +1 -0
- package/3D/controls/handMenu.d.ts +28 -0
- package/3D/controls/handMenu.js +39 -0
- package/3D/controls/handMenu.js.map +1 -0
- package/3D/controls/holographicBackplate.d.ts +49 -0
- package/3D/controls/holographicBackplate.js +104 -0
- package/3D/controls/holographicBackplate.js.map +1 -0
- package/3D/controls/holographicButton.d.ts +84 -0
- package/3D/controls/holographicButton.js +300 -0
- package/3D/controls/holographicButton.js.map +1 -0
- package/3D/controls/holographicSlate.d.ts +134 -0
- package/3D/controls/holographicSlate.js +413 -0
- package/3D/controls/holographicSlate.js.map +1 -0
- package/3D/controls/index.d.ts +22 -0
- package/3D/controls/index.js +24 -0
- package/3D/controls/index.js.map +1 -0
- package/3D/controls/meshButton3D.d.ts +21 -0
- package/3D/controls/meshButton3D.js +58 -0
- package/3D/controls/meshButton3D.js.map +1 -0
- package/3D/controls/nearMenu.d.ts +44 -0
- package/3D/controls/nearMenu.js +103 -0
- package/3D/controls/nearMenu.js.map +1 -0
- package/3D/controls/planePanel.d.ts +9 -0
- package/3D/controls/planePanel.js +30 -0
- package/3D/controls/planePanel.js.map +1 -0
- package/3D/controls/scatterPanel.d.ts +18 -0
- package/3D/controls/scatterPanel.js +98 -0
- package/3D/controls/scatterPanel.js.map +1 -0
- package/3D/controls/slider3D.d.ts +95 -0
- package/3D/controls/slider3D.js +256 -0
- package/3D/controls/slider3D.js.map +1 -0
- package/3D/controls/spherePanel.d.ts +17 -0
- package/3D/controls/spherePanel.js +58 -0
- package/3D/controls/spherePanel.js.map +1 -0
- package/3D/controls/stackPanel3D.d.ts +22 -0
- package/3D/controls/stackPanel3D.js +95 -0
- package/3D/controls/stackPanel3D.js.map +1 -0
- package/3D/controls/touchButton3D.d.ts +77 -0
- package/3D/controls/touchButton3D.js +205 -0
- package/3D/controls/touchButton3D.js.map +1 -0
- package/3D/controls/touchHolographicButton.d.ts +110 -0
- package/3D/controls/touchHolographicButton.js +400 -0
- package/3D/controls/touchHolographicButton.js.map +1 -0
- package/3D/controls/touchHolographicMenu.d.ts +61 -0
- package/3D/controls/touchHolographicMenu.js +139 -0
- package/3D/controls/touchHolographicMenu.js.map +1 -0
- package/3D/controls/touchMeshButton3D.d.ts +21 -0
- package/3D/controls/touchMeshButton3D.js +58 -0
- package/3D/controls/touchMeshButton3D.js.map +1 -0
- package/3D/controls/volumeBasedPanel.d.ts +53 -0
- package/3D/controls/volumeBasedPanel.js +158 -0
- package/3D/controls/volumeBasedPanel.js.map +1 -0
- package/3D/gizmos/gizmoHandle.d.ts +108 -0
- package/3D/gizmos/gizmoHandle.js +175 -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 +57 -0
- package/3D/gizmos/slateGizmo.js +353 -0
- package/3D/gizmos/slateGizmo.js.map +1 -0
- package/3D/gui3DManager.d.ts +94 -0
- package/3D/gui3DManager.js +233 -0
- package/3D/gui3DManager.js.map +1 -0
- package/3D/index.d.ts +5 -0
- package/3D/index.js +7 -0
- package/3D/index.js.map +1 -0
- package/3D/materials/fluent/fluentMaterial.d.ts +91 -0
- package/3D/materials/fluent/fluentMaterial.js +286 -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/fluent/shaders/fluent.fragment.d.ts +5 -0
- package/3D/materials/fluent/shaders/fluent.fragment.js +41 -0
- package/3D/materials/fluent/shaders/fluent.fragment.js.map +1 -0
- package/3D/materials/fluent/shaders/fluent.vertex.d.ts +5 -0
- package/3D/materials/fluent/shaders/fluent.vertex.js +40 -0
- package/3D/materials/fluent/shaders/fluent.vertex.js.map +1 -0
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.d.ts +155 -0
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.js +466 -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 +60 -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 +127 -0
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js.map +1 -0
- package/3D/materials/fluentButton/fluentButtonMaterial.d.ts +190 -0
- package/3D/materials/fluentButton/fluentButtonMaterial.js +536 -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 +57 -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 +162 -0
- package/3D/materials/fluentButton/shaders/fluentButton.vertex.js.map +1 -0
- package/3D/materials/fluentMaterial.d.ts +4 -0
- package/3D/materials/fluentMaterial.js +5 -0
- package/3D/materials/fluentMaterial.js.map +1 -0
- package/3D/materials/handle/handleMaterial.d.ts +68 -0
- package/3D/materials/handle/handleMaterial.js +114 -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 +11 -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 +11 -0
- package/3D/materials/handle/shaders/handle.vertex.js.map +1 -0
- package/3D/materials/index.d.ts +5 -0
- package/3D/materials/index.js +7 -0
- package/3D/materials/index.js.map +1 -0
- 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/mrdlBackglowMaterial.d.ts +87 -0
- package/3D/materials/mrdl/mrdlBackglowMaterial.js +302 -0
- package/3D/materials/mrdl/mrdlBackglowMaterial.js.map +1 -0
- package/3D/materials/mrdl/mrdlBackplateMaterial.d.ts +148 -0
- package/3D/materials/mrdl/mrdlBackplateMaterial.js +433 -0
- package/3D/materials/mrdl/mrdlBackplateMaterial.js.map +1 -0
- package/3D/materials/mrdl/mrdlFrontplateMaterial.d.ts +186 -0
- package/3D/materials/mrdl/mrdlFrontplateMaterial.js +532 -0
- package/3D/materials/mrdl/mrdlFrontplateMaterial.js.map +1 -0
- package/3D/materials/mrdl/mrdlInnerquadMaterial.d.ts +56 -0
- package/3D/materials/mrdl/mrdlInnerquadMaterial.js +230 -0
- package/3D/materials/mrdl/mrdlInnerquadMaterial.js.map +1 -0
- package/3D/materials/mrdl/mrdlSliderBarMaterial.d.ts +337 -0
- package/3D/materials/mrdl/mrdlSliderBarMaterial.js +855 -0
- package/3D/materials/mrdl/mrdlSliderBarMaterial.js.map +1 -0
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.d.ts +337 -0
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.js +855 -0
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlBackglow.fragment.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlBackglow.fragment.js +25 -0
- package/3D/materials/mrdl/shaders/mrdlBackglow.fragment.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlBackglow.vertex.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlBackglow.vertex.js +12 -0
- package/3D/materials/mrdl/shaders/mrdlBackglow.vertex.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js +88 -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 +96 -0
- package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlFrontplate.fragment.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlFrontplate.fragment.js +48 -0
- package/3D/materials/mrdl/shaders/mrdlFrontplate.fragment.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlFrontplate.vertex.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlFrontplate.vertex.js +158 -0
- package/3D/materials/mrdl/shaders/mrdlFrontplate.vertex.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlInnerquad.fragment.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlInnerquad.fragment.js +27 -0
- package/3D/materials/mrdl/shaders/mrdlInnerquad.fragment.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlInnerquad.vertex.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlInnerquad.vertex.js +13 -0
- package/3D/materials/mrdl/shaders/mrdlInnerquad.vertex.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js +236 -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 +137 -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 +236 -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 +137 -0
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js.map +1 -0
- package/3D/vector3WithInfo.d.ts +16 -0
- package/3D/vector3WithInfo.js +18 -0
- package/3D/vector3WithInfo.js.map +1 -0
- package/index.d.ts +2 -0
- package/index.js +4 -0
- package/index.js.map +1 -0
- package/legacy/legacy.d.ts +1 -0
- package/legacy/legacy.js +17 -0
- package/legacy/legacy.js.map +1 -0
- package/license.md +71 -0
- package/package.json +47 -0
- package/readme.md +31 -0
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
import { __decorate } from "@babylonjs/core/tslib.es6.js";
|
|
2
|
+
import { serializeAsColor4, serializeAsVector3, serializeAsTexture, serialize, expandToProperty, serializeAsColor3 } from "@babylonjs/core/Misc/decorators.js";
|
|
3
|
+
import { SerializationHelper } from "@babylonjs/core/Misc/decorators.serialization.js";
|
|
4
|
+
import { Vector3, TmpVectors } from "@babylonjs/core/Maths/math.vector.js";
|
|
5
|
+
import { MaterialDefines } from "@babylonjs/core/Materials/materialDefines.js";
|
|
6
|
+
import { PushMaterial } from "@babylonjs/core/Materials/pushMaterial.js";
|
|
7
|
+
import { VertexBuffer } from "@babylonjs/core/Buffers/buffer.js";
|
|
8
|
+
import { RegisterClass } from "@babylonjs/core/Misc/typeStore.js";
|
|
9
|
+
import { Color3, Color4 } from "@babylonjs/core/Maths/math.color.js";
|
|
10
|
+
import "./shaders/fluent.vertex.js";
|
|
11
|
+
import "./shaders/fluent.fragment.js";
|
|
12
|
+
import { PrepareUniformsAndSamplersList } from "@babylonjs/core/Materials/materialHelper.functions.js";
|
|
13
|
+
/** @internal */
|
|
14
|
+
export class FluentMaterialDefines extends MaterialDefines {
|
|
15
|
+
constructor() {
|
|
16
|
+
super();
|
|
17
|
+
this.INNERGLOW = false;
|
|
18
|
+
this.BORDER = false;
|
|
19
|
+
this.HOVERLIGHT = false;
|
|
20
|
+
this.TEXTURE = false;
|
|
21
|
+
this.rebuild();
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Class used to render controls with fluent design
|
|
26
|
+
*/
|
|
27
|
+
export class FluentMaterial extends PushMaterial {
|
|
28
|
+
/**
|
|
29
|
+
* Creates a new Fluent material
|
|
30
|
+
* @param name defines the name of the material
|
|
31
|
+
* @param scene defines the hosting scene
|
|
32
|
+
*/
|
|
33
|
+
constructor(name, scene) {
|
|
34
|
+
super(name, scene);
|
|
35
|
+
/**
|
|
36
|
+
* Gets or sets inner glow intensity. A value of 0 means no glow (default is 0.5)
|
|
37
|
+
*/
|
|
38
|
+
this.innerGlowColorIntensity = 0.5;
|
|
39
|
+
/**
|
|
40
|
+
* Gets or sets the inner glow color (white by default)
|
|
41
|
+
*/
|
|
42
|
+
this.innerGlowColor = new Color3(1.0, 1.0, 1.0);
|
|
43
|
+
/**
|
|
44
|
+
* Gets or sets the albedo color (Default is Color3(0.3, 0.35, 0.4))
|
|
45
|
+
*/
|
|
46
|
+
this.albedoColor = new Color3(0.3, 0.35, 0.4);
|
|
47
|
+
/**
|
|
48
|
+
* Gets or sets a boolean indicating if borders must be rendered (default is false)
|
|
49
|
+
*/
|
|
50
|
+
this.renderBorders = false;
|
|
51
|
+
/**
|
|
52
|
+
* Gets or sets border width (default is 0.5)
|
|
53
|
+
*/
|
|
54
|
+
this.borderWidth = 0.5;
|
|
55
|
+
/**
|
|
56
|
+
* Gets or sets a value indicating the smoothing value applied to border edges (0.02 by default)
|
|
57
|
+
*/
|
|
58
|
+
this.edgeSmoothingValue = 0.02;
|
|
59
|
+
/**
|
|
60
|
+
* Gets or sets the minimum value that can be applied to border width (default is 0.1)
|
|
61
|
+
*/
|
|
62
|
+
this.borderMinValue = 0.1;
|
|
63
|
+
/**
|
|
64
|
+
* Gets or sets a boolean indicating if hover light must be rendered (default is false)
|
|
65
|
+
*/
|
|
66
|
+
this.renderHoverLight = false;
|
|
67
|
+
/**
|
|
68
|
+
* Gets or sets the radius used to render the hover light (default is 0.01)
|
|
69
|
+
*/
|
|
70
|
+
this.hoverRadius = 0.01;
|
|
71
|
+
/**
|
|
72
|
+
* Gets or sets the color used to render the hover light (default is Color4(0.3, 0.3, 0.3, 1.0))
|
|
73
|
+
*/
|
|
74
|
+
this.hoverColor = new Color4(0.3, 0.3, 0.3, 1.0);
|
|
75
|
+
/**
|
|
76
|
+
* Gets or sets the hover light position in world space (default is Vector3.Zero())
|
|
77
|
+
*/
|
|
78
|
+
this.hoverPosition = Vector3.Zero();
|
|
79
|
+
}
|
|
80
|
+
needAlphaBlending() {
|
|
81
|
+
return this.alpha !== 1.0;
|
|
82
|
+
}
|
|
83
|
+
needAlphaTesting() {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
getAlphaTestTexture() {
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
isReadyForSubMesh(mesh, subMesh) {
|
|
90
|
+
const drawWrapper = subMesh._drawWrapper;
|
|
91
|
+
if (this.isFrozen) {
|
|
92
|
+
if (drawWrapper.effect && drawWrapper._wasPreviouslyReady) {
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (!subMesh.materialDefines) {
|
|
97
|
+
subMesh.materialDefines = new FluentMaterialDefines();
|
|
98
|
+
}
|
|
99
|
+
const scene = this.getScene();
|
|
100
|
+
const defines = subMesh.materialDefines;
|
|
101
|
+
if (!this.checkReadyOnEveryCall && subMesh.effect) {
|
|
102
|
+
if (defines._renderId === scene.getRenderId()) {
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
if (defines._areTexturesDirty) {
|
|
107
|
+
defines.INNERGLOW = this.innerGlowColorIntensity > 0;
|
|
108
|
+
defines.BORDER = this.renderBorders;
|
|
109
|
+
defines.HOVERLIGHT = this.renderHoverLight;
|
|
110
|
+
if (this._albedoTexture) {
|
|
111
|
+
if (!this._albedoTexture.isReadyOrNotBlocking()) {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
defines.TEXTURE = true;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
defines.TEXTURE = false;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
const engine = scene.getEngine();
|
|
123
|
+
// Get correct effect
|
|
124
|
+
if (defines.isDirty) {
|
|
125
|
+
defines.markAsProcessed();
|
|
126
|
+
scene.resetCachedMaterial();
|
|
127
|
+
//Attributes
|
|
128
|
+
const attribs = [VertexBuffer.PositionKind];
|
|
129
|
+
attribs.push(VertexBuffer.NormalKind);
|
|
130
|
+
attribs.push(VertexBuffer.UVKind);
|
|
131
|
+
const shaderName = "fluent";
|
|
132
|
+
const uniforms = [
|
|
133
|
+
"world",
|
|
134
|
+
"viewProjection",
|
|
135
|
+
"innerGlowColor",
|
|
136
|
+
"albedoColor",
|
|
137
|
+
"borderWidth",
|
|
138
|
+
"edgeSmoothingValue",
|
|
139
|
+
"scaleFactor",
|
|
140
|
+
"borderMinValue",
|
|
141
|
+
"hoverColor",
|
|
142
|
+
"hoverPosition",
|
|
143
|
+
"hoverRadius",
|
|
144
|
+
"textureMatrix",
|
|
145
|
+
];
|
|
146
|
+
const samplers = ["albedoSampler"];
|
|
147
|
+
const uniformBuffers = [];
|
|
148
|
+
PrepareUniformsAndSamplersList({
|
|
149
|
+
uniformsNames: uniforms,
|
|
150
|
+
uniformBuffersNames: uniformBuffers,
|
|
151
|
+
samplers: samplers,
|
|
152
|
+
defines: defines,
|
|
153
|
+
maxSimultaneousLights: 4,
|
|
154
|
+
});
|
|
155
|
+
const join = defines.toString();
|
|
156
|
+
subMesh.setEffect(scene.getEngine().createEffect(shaderName, {
|
|
157
|
+
attributes: attribs,
|
|
158
|
+
uniformsNames: uniforms,
|
|
159
|
+
uniformBuffersNames: uniformBuffers,
|
|
160
|
+
samplers: samplers,
|
|
161
|
+
defines: join,
|
|
162
|
+
fallbacks: null,
|
|
163
|
+
onCompiled: this.onCompiled,
|
|
164
|
+
onError: this.onError,
|
|
165
|
+
indexParameters: { maxSimultaneousLights: 4 },
|
|
166
|
+
}, engine), defines, this._materialContext);
|
|
167
|
+
}
|
|
168
|
+
if (!subMesh.effect || !subMesh.effect.isReady()) {
|
|
169
|
+
return false;
|
|
170
|
+
}
|
|
171
|
+
defines._renderId = scene.getRenderId();
|
|
172
|
+
drawWrapper._wasPreviouslyReady = true;
|
|
173
|
+
return true;
|
|
174
|
+
}
|
|
175
|
+
bindForSubMesh(world, mesh, subMesh) {
|
|
176
|
+
const scene = this.getScene();
|
|
177
|
+
const defines = subMesh.materialDefines;
|
|
178
|
+
if (!defines) {
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
const effect = subMesh.effect;
|
|
182
|
+
if (!effect) {
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
this._activeEffect = effect;
|
|
186
|
+
// Matrices
|
|
187
|
+
this.bindOnlyWorldMatrix(world);
|
|
188
|
+
this._activeEffect.setMatrix("viewProjection", scene.getTransformMatrix());
|
|
189
|
+
if (this._mustRebind(scene, effect, subMesh)) {
|
|
190
|
+
this._activeEffect.setColor4("albedoColor", this.albedoColor, this.alpha);
|
|
191
|
+
if (defines.INNERGLOW) {
|
|
192
|
+
this._activeEffect.setColor4("innerGlowColor", this.innerGlowColor, this.innerGlowColorIntensity);
|
|
193
|
+
}
|
|
194
|
+
if (defines.BORDER) {
|
|
195
|
+
this._activeEffect.setFloat("borderWidth", this.borderWidth);
|
|
196
|
+
this._activeEffect.setFloat("edgeSmoothingValue", this.edgeSmoothingValue);
|
|
197
|
+
this._activeEffect.setFloat("borderMinValue", this.borderMinValue);
|
|
198
|
+
mesh.getBoundingInfo().boundingBox.extendSize.multiplyToRef(mesh.scaling, TmpVectors.Vector3[0]);
|
|
199
|
+
this._activeEffect.setVector3("scaleFactor", TmpVectors.Vector3[0]);
|
|
200
|
+
}
|
|
201
|
+
if (defines.HOVERLIGHT) {
|
|
202
|
+
this._activeEffect.setDirectColor4("hoverColor", this.hoverColor);
|
|
203
|
+
this._activeEffect.setFloat("hoverRadius", this.hoverRadius);
|
|
204
|
+
this._activeEffect.setVector3("hoverPosition", this.hoverPosition);
|
|
205
|
+
}
|
|
206
|
+
if (defines.TEXTURE && this._albedoTexture) {
|
|
207
|
+
this._activeEffect.setTexture("albedoSampler", this._albedoTexture);
|
|
208
|
+
const matrix = this._albedoTexture.getTextureMatrix();
|
|
209
|
+
this._activeEffect.setMatrix("textureMatrix", matrix);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
this._afterBind(mesh, this._activeEffect, subMesh);
|
|
213
|
+
}
|
|
214
|
+
getActiveTextures() {
|
|
215
|
+
const activeTextures = super.getActiveTextures();
|
|
216
|
+
return activeTextures;
|
|
217
|
+
}
|
|
218
|
+
hasTexture(texture) {
|
|
219
|
+
if (super.hasTexture(texture)) {
|
|
220
|
+
return true;
|
|
221
|
+
}
|
|
222
|
+
return false;
|
|
223
|
+
}
|
|
224
|
+
dispose(forceDisposeEffect) {
|
|
225
|
+
super.dispose(forceDisposeEffect);
|
|
226
|
+
}
|
|
227
|
+
clone(name) {
|
|
228
|
+
return SerializationHelper.Clone(() => new FluentMaterial(name, this.getScene()), this);
|
|
229
|
+
}
|
|
230
|
+
serialize() {
|
|
231
|
+
const serializationObject = super.serialize();
|
|
232
|
+
serializationObject.customType = "BABYLON.GUI.FluentMaterial";
|
|
233
|
+
return serializationObject;
|
|
234
|
+
}
|
|
235
|
+
getClassName() {
|
|
236
|
+
return "FluentMaterial";
|
|
237
|
+
}
|
|
238
|
+
// Statics
|
|
239
|
+
static Parse(source, scene, rootUrl) {
|
|
240
|
+
return SerializationHelper.Parse(() => new FluentMaterial(source.name, scene), source, scene, rootUrl);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
__decorate([
|
|
244
|
+
serialize(),
|
|
245
|
+
expandToProperty("_markAllSubMeshesAsTexturesDirty")
|
|
246
|
+
], FluentMaterial.prototype, "innerGlowColorIntensity", void 0);
|
|
247
|
+
__decorate([
|
|
248
|
+
serializeAsColor3()
|
|
249
|
+
], FluentMaterial.prototype, "innerGlowColor", void 0);
|
|
250
|
+
__decorate([
|
|
251
|
+
serializeAsColor3()
|
|
252
|
+
], FluentMaterial.prototype, "albedoColor", void 0);
|
|
253
|
+
__decorate([
|
|
254
|
+
serialize(),
|
|
255
|
+
expandToProperty("_markAllSubMeshesAsTexturesDirty")
|
|
256
|
+
], FluentMaterial.prototype, "renderBorders", void 0);
|
|
257
|
+
__decorate([
|
|
258
|
+
serialize()
|
|
259
|
+
], FluentMaterial.prototype, "borderWidth", void 0);
|
|
260
|
+
__decorate([
|
|
261
|
+
serialize()
|
|
262
|
+
], FluentMaterial.prototype, "edgeSmoothingValue", void 0);
|
|
263
|
+
__decorate([
|
|
264
|
+
serialize()
|
|
265
|
+
], FluentMaterial.prototype, "borderMinValue", void 0);
|
|
266
|
+
__decorate([
|
|
267
|
+
serialize(),
|
|
268
|
+
expandToProperty("_markAllSubMeshesAsTexturesDirty")
|
|
269
|
+
], FluentMaterial.prototype, "renderHoverLight", void 0);
|
|
270
|
+
__decorate([
|
|
271
|
+
serialize()
|
|
272
|
+
], FluentMaterial.prototype, "hoverRadius", void 0);
|
|
273
|
+
__decorate([
|
|
274
|
+
serializeAsColor4()
|
|
275
|
+
], FluentMaterial.prototype, "hoverColor", void 0);
|
|
276
|
+
__decorate([
|
|
277
|
+
serializeAsVector3()
|
|
278
|
+
], FluentMaterial.prototype, "hoverPosition", void 0);
|
|
279
|
+
__decorate([
|
|
280
|
+
serializeAsTexture("albedoTexture")
|
|
281
|
+
], FluentMaterial.prototype, "_albedoTexture", void 0);
|
|
282
|
+
__decorate([
|
|
283
|
+
expandToProperty("_markAllSubMeshesAsTexturesAndMiscDirty")
|
|
284
|
+
], FluentMaterial.prototype, "albedoTexture", void 0);
|
|
285
|
+
RegisterClass("BABYLON.GUI.FluentMaterial", FluentMaterial);
|
|
286
|
+
//# sourceMappingURL=fluentMaterial.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fluentMaterial.js","sourceRoot":"","sources":["../../../../../../dev/gui/src/3D/materials/fluent/fluentMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport type { Nullable } from \"core/types\";\r\nimport { serializeAsColor4, serializeAsVector3, serializeAsTexture, serialize, expandToProperty, serializeAsColor3 } from \"core/Misc/decorators\";\r\nimport { SerializationHelper } from \"core/Misc/decorators.serialization\";\r\nimport type { Matrix } from \"core/Maths/math.vector\";\r\nimport { Vector3, TmpVectors } from \"core/Maths/math.vector\";\r\nimport type { BaseTexture } from \"core/Materials/Textures/baseTexture\";\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 { Color3, Color4 } from \"core/Maths/math.color\";\r\n\r\nimport \"./shaders/fluent.vertex\";\r\nimport \"./shaders/fluent.fragment\";\r\nimport { PrepareUniformsAndSamplersList } from \"core/Materials/materialHelper.functions\";\r\n\r\n/** @internal */\r\nexport class FluentMaterialDefines extends MaterialDefines {\r\n public INNERGLOW = false;\r\n public BORDER = false;\r\n public HOVERLIGHT = false;\r\n public TEXTURE = false;\r\n\r\n constructor() {\r\n super();\r\n this.rebuild();\r\n }\r\n}\r\n\r\n/**\r\n * Class used to render controls with fluent design\r\n */\r\nexport class FluentMaterial extends PushMaterial {\r\n /**\r\n * Gets or sets inner glow intensity. A value of 0 means no glow (default is 0.5)\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public innerGlowColorIntensity = 0.5;\r\n\r\n /**\r\n * Gets or sets the inner glow color (white by default)\r\n */\r\n @serializeAsColor3()\r\n public innerGlowColor = new Color3(1.0, 1.0, 1.0);\r\n\r\n /**\r\n * Gets or sets the albedo color (Default is Color3(0.3, 0.35, 0.4))\r\n */\r\n @serializeAsColor3()\r\n public albedoColor = new Color3(0.3, 0.35, 0.4);\r\n\r\n /**\r\n * Gets or sets a boolean indicating if borders must be rendered (default is false)\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public renderBorders = false;\r\n\r\n /**\r\n * Gets or sets border width (default is 0.5)\r\n */\r\n @serialize()\r\n public borderWidth = 0.5;\r\n\r\n /**\r\n * Gets or sets a value indicating the smoothing value applied to border edges (0.02 by default)\r\n */\r\n @serialize()\r\n public edgeSmoothingValue = 0.02;\r\n\r\n /**\r\n * Gets or sets the minimum value that can be applied to border width (default is 0.1)\r\n */\r\n @serialize()\r\n public borderMinValue = 0.1;\r\n\r\n /**\r\n * Gets or sets a boolean indicating if hover light must be rendered (default is false)\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public renderHoverLight = false;\r\n\r\n /**\r\n * Gets or sets the radius used to render the hover light (default is 0.01)\r\n */\r\n @serialize()\r\n public hoverRadius = 0.01;\r\n\r\n /**\r\n * Gets or sets the color used to render the hover light (default is Color4(0.3, 0.3, 0.3, 1.0))\r\n */\r\n @serializeAsColor4()\r\n public hoverColor = new Color4(0.3, 0.3, 0.3, 1.0);\r\n\r\n /**\r\n * Gets or sets the hover light position in world space (default is Vector3.Zero())\r\n */\r\n @serializeAsVector3()\r\n public hoverPosition = Vector3.Zero();\r\n\r\n @serializeAsTexture(\"albedoTexture\")\r\n private _albedoTexture: Nullable<BaseTexture>;\r\n\r\n /** Gets or sets the texture to use for albedo color */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesAndMiscDirty\")\r\n public albedoTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Creates a new Fluent material\r\n * @param name defines the name of the material\r\n * @param scene defines the hosting scene\r\n */\r\n constructor(name: string, scene?: Scene) {\r\n super(name, scene);\r\n }\r\n\r\n public override needAlphaBlending(): boolean {\r\n return this.alpha !== 1.0;\r\n }\r\n\r\n public override needAlphaTesting(): boolean {\r\n return false;\r\n }\r\n\r\n public override getAlphaTestTexture(): Nullable<BaseTexture> {\r\n return null;\r\n }\r\n\r\n public override 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 FluentMaterialDefines();\r\n }\r\n\r\n const scene = this.getScene();\r\n const defines = <FluentMaterialDefines>subMesh.materialDefines;\r\n if (!this.checkReadyOnEveryCall && subMesh.effect) {\r\n if (defines._renderId === scene.getRenderId()) {\r\n return true;\r\n }\r\n }\r\n\r\n if (defines._areTexturesDirty) {\r\n defines.INNERGLOW = this.innerGlowColorIntensity > 0;\r\n defines.BORDER = this.renderBorders;\r\n defines.HOVERLIGHT = this.renderHoverLight;\r\n\r\n if (this._albedoTexture) {\r\n if (!this._albedoTexture.isReadyOrNotBlocking()) {\r\n return false;\r\n } else {\r\n defines.TEXTURE = true;\r\n }\r\n } else {\r\n defines.TEXTURE = false;\r\n }\r\n }\r\n\r\n const engine = scene.getEngine();\r\n // Get correct effect\r\n if (defines.isDirty) {\r\n defines.markAsProcessed();\r\n scene.resetCachedMaterial();\r\n\r\n //Attributes\r\n const attribs = [VertexBuffer.PositionKind];\r\n attribs.push(VertexBuffer.NormalKind);\r\n attribs.push(VertexBuffer.UVKind);\r\n\r\n const shaderName = \"fluent\";\r\n\r\n const uniforms = [\r\n \"world\",\r\n \"viewProjection\",\r\n \"innerGlowColor\",\r\n \"albedoColor\",\r\n \"borderWidth\",\r\n \"edgeSmoothingValue\",\r\n \"scaleFactor\",\r\n \"borderMinValue\",\r\n \"hoverColor\",\r\n \"hoverPosition\",\r\n \"hoverRadius\",\r\n \"textureMatrix\",\r\n ];\r\n\r\n const samplers = [\"albedoSampler\"];\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 const join = defines.toString();\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: null,\r\n onCompiled: this.onCompiled,\r\n onError: this.onError,\r\n indexParameters: { maxSimultaneousLights: 4 },\r\n },\r\n engine\r\n ),\r\n defines,\r\n this._materialContext\r\n );\r\n }\r\n\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 override bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void {\r\n const scene = this.getScene();\r\n\r\n const defines = <FluentMaterialDefines>subMesh.materialDefines;\r\n if (!defines) {\r\n return;\r\n }\r\n\r\n const effect = subMesh.effect;\r\n if (!effect) {\r\n return;\r\n }\r\n this._activeEffect = effect;\r\n\r\n // Matrices\r\n this.bindOnlyWorldMatrix(world);\r\n this._activeEffect.setMatrix(\"viewProjection\", scene.getTransformMatrix());\r\n\r\n if (this._mustRebind(scene, effect, subMesh)) {\r\n this._activeEffect.setColor4(\"albedoColor\", this.albedoColor, this.alpha);\r\n\r\n if (defines.INNERGLOW) {\r\n this._activeEffect.setColor4(\"innerGlowColor\", this.innerGlowColor, this.innerGlowColorIntensity);\r\n }\r\n\r\n if (defines.BORDER) {\r\n this._activeEffect.setFloat(\"borderWidth\", this.borderWidth);\r\n this._activeEffect.setFloat(\"edgeSmoothingValue\", this.edgeSmoothingValue);\r\n this._activeEffect.setFloat(\"borderMinValue\", this.borderMinValue);\r\n\r\n mesh.getBoundingInfo().boundingBox.extendSize.multiplyToRef(mesh.scaling, TmpVectors.Vector3[0]);\r\n this._activeEffect.setVector3(\"scaleFactor\", TmpVectors.Vector3[0]);\r\n }\r\n\r\n if (defines.HOVERLIGHT) {\r\n this._activeEffect.setDirectColor4(\"hoverColor\", this.hoverColor);\r\n this._activeEffect.setFloat(\"hoverRadius\", this.hoverRadius);\r\n this._activeEffect.setVector3(\"hoverPosition\", this.hoverPosition);\r\n }\r\n\r\n if (defines.TEXTURE && this._albedoTexture) {\r\n this._activeEffect.setTexture(\"albedoSampler\", this._albedoTexture);\r\n const matrix = this._albedoTexture.getTextureMatrix();\r\n this._activeEffect.setMatrix(\"textureMatrix\", matrix);\r\n }\r\n }\r\n\r\n this._afterBind(mesh, this._activeEffect, subMesh);\r\n }\r\n\r\n public override getActiveTextures(): BaseTexture[] {\r\n const activeTextures = super.getActiveTextures();\r\n\r\n return activeTextures;\r\n }\r\n\r\n public override hasTexture(texture: BaseTexture): boolean {\r\n if (super.hasTexture(texture)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public override dispose(forceDisposeEffect?: boolean): void {\r\n super.dispose(forceDisposeEffect);\r\n }\r\n\r\n public override clone(name: string): FluentMaterial {\r\n return SerializationHelper.Clone(() => new FluentMaterial(name, this.getScene()), this);\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.customType = \"BABYLON.GUI.FluentMaterial\";\r\n return serializationObject;\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"FluentMaterial\";\r\n }\r\n\r\n // Statics\r\n public static override Parse(source: any, scene: Scene, rootUrl: string): FluentMaterial {\r\n return SerializationHelper.Parse(() => new FluentMaterial(source.name, scene), source, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.GUI.FluentMaterial\", FluentMaterial);\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./fluentMaterial.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../dev/gui/src/3D/materials/fluent/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC","sourcesContent":["export * from \"./fluentMaterial\";\r\n"]}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// Do not edit.
|
|
2
|
+
import { ShaderStore } from "@babylonjs/core/Engines/shaderStore.js";
|
|
3
|
+
const name = "fluentPixelShader";
|
|
4
|
+
const shader = `precision highp float;varying vec2 vUV;uniform vec4 albedoColor;
|
|
5
|
+
#ifdef INNERGLOW
|
|
6
|
+
uniform vec4 innerGlowColor;
|
|
7
|
+
#endif
|
|
8
|
+
#ifdef BORDER
|
|
9
|
+
varying vec2 scaleInfo;uniform float edgeSmoothingValue;uniform float borderMinValue;
|
|
10
|
+
#endif
|
|
11
|
+
#ifdef HOVERLIGHT
|
|
12
|
+
varying vec3 worldPosition;uniform vec3 hoverPosition;uniform vec4 hoverColor;uniform float hoverRadius;
|
|
13
|
+
#endif
|
|
14
|
+
#ifdef TEXTURE
|
|
15
|
+
uniform sampler2D albedoSampler;uniform mat4 textureMatrix;vec2 finalUV;
|
|
16
|
+
#endif
|
|
17
|
+
void main(void) {vec3 albedo=albedoColor.rgb;float alpha=albedoColor.a;
|
|
18
|
+
#ifdef TEXTURE
|
|
19
|
+
finalUV=vec2(textureMatrix*vec4(vUV,1.0,0.0));albedo=texture2D(albedoSampler,finalUV).rgb;
|
|
20
|
+
#endif
|
|
21
|
+
#ifdef HOVERLIGHT
|
|
22
|
+
float pointToHover=(1.0-clamp(length(hoverPosition-worldPosition)/hoverRadius,0.,1.))*hoverColor.a;albedo=clamp(albedo+hoverColor.rgb*pointToHover,0.,1.);
|
|
23
|
+
#else
|
|
24
|
+
float pointToHover=1.0;
|
|
25
|
+
#endif
|
|
26
|
+
#ifdef BORDER
|
|
27
|
+
float borderPower=10.0;float inverseBorderPower=1.0/borderPower;vec3 borderColor=albedo*borderPower;vec2 distanceToEdge;distanceToEdge.x=abs(vUV.x-0.5)*2.0;distanceToEdge.y=abs(vUV.y-0.5)*2.0;float borderValue=max(smoothstep(scaleInfo.x-edgeSmoothingValue,scaleInfo.x+edgeSmoothingValue,distanceToEdge.x),
|
|
28
|
+
smoothstep(scaleInfo.y-edgeSmoothingValue,scaleInfo.y+edgeSmoothingValue,distanceToEdge.y));borderColor=borderColor*borderValue*max(borderMinValue*inverseBorderPower,pointToHover);
|
|
29
|
+
albedo+=borderColor;alpha=max(alpha,borderValue);
|
|
30
|
+
#endif
|
|
31
|
+
#ifdef INNERGLOW
|
|
32
|
+
vec2 uvGlow=(vUV-vec2(0.5,0.5))*(innerGlowColor.a*2.0);uvGlow=uvGlow*uvGlow;uvGlow=uvGlow*uvGlow;albedo+=mix(vec3(0.0,0.0,0.0),innerGlowColor.rgb,uvGlow.x+uvGlow.y);
|
|
33
|
+
#endif
|
|
34
|
+
gl_FragColor=vec4(albedo,alpha);}`;
|
|
35
|
+
// Sideeffect
|
|
36
|
+
if (!ShaderStore.ShadersStore[name]) {
|
|
37
|
+
ShaderStore.ShadersStore[name] = shader;
|
|
38
|
+
}
|
|
39
|
+
/** @internal */
|
|
40
|
+
export const fluentPixelShader = { name, shader };
|
|
41
|
+
//# sourceMappingURL=fluent.fragment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fluent.fragment.js","sourceRoot":"","sources":["../../../../../../../dev/gui/src/3D/materials/fluent/shaders/fluent.fragment.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,+CAAiC;AAEvD,MAAM,IAAI,GAAG,mBAAmB,CAAC;AACjC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCA8BmB,CAAC;AACnC,aAAa;AACb,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;IAClC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AAC5C,CAAC;AACD,gBAAgB;AAChB,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"core/Engines/shaderStore\";\n\nconst name = \"fluentPixelShader\";\nconst shader = `precision highp float;varying vec2 vUV;uniform vec4 albedoColor;\n#ifdef INNERGLOW\nuniform vec4 innerGlowColor;\n#endif\n#ifdef BORDER\nvarying vec2 scaleInfo;uniform float edgeSmoothingValue;uniform float borderMinValue;\n#endif\n#ifdef HOVERLIGHT\nvarying vec3 worldPosition;uniform vec3 hoverPosition;uniform vec4 hoverColor;uniform float hoverRadius;\n#endif\n#ifdef TEXTURE\nuniform sampler2D albedoSampler;uniform mat4 textureMatrix;vec2 finalUV;\n#endif\nvoid main(void) {vec3 albedo=albedoColor.rgb;float alpha=albedoColor.a;\n#ifdef TEXTURE\nfinalUV=vec2(textureMatrix*vec4(vUV,1.0,0.0));albedo=texture2D(albedoSampler,finalUV).rgb;\n#endif\n#ifdef HOVERLIGHT\nfloat pointToHover=(1.0-clamp(length(hoverPosition-worldPosition)/hoverRadius,0.,1.))*hoverColor.a;albedo=clamp(albedo+hoverColor.rgb*pointToHover,0.,1.);\n#else\nfloat pointToHover=1.0;\n#endif\n#ifdef BORDER \nfloat borderPower=10.0;float inverseBorderPower=1.0/borderPower;vec3 borderColor=albedo*borderPower;vec2 distanceToEdge;distanceToEdge.x=abs(vUV.x-0.5)*2.0;distanceToEdge.y=abs(vUV.y-0.5)*2.0;float borderValue=max(smoothstep(scaleInfo.x-edgeSmoothingValue,scaleInfo.x+edgeSmoothingValue,distanceToEdge.x),\nsmoothstep(scaleInfo.y-edgeSmoothingValue,scaleInfo.y+edgeSmoothingValue,distanceToEdge.y));borderColor=borderColor*borderValue*max(borderMinValue*inverseBorderPower,pointToHover); \nalbedo+=borderColor;alpha=max(alpha,borderValue);\n#endif\n#ifdef INNERGLOW\nvec2 uvGlow=(vUV-vec2(0.5,0.5))*(innerGlowColor.a*2.0);uvGlow=uvGlow*uvGlow;uvGlow=uvGlow*uvGlow;albedo+=mix(vec3(0.0,0.0,0.0),innerGlowColor.rgb,uvGlow.x+uvGlow.y); \n#endif\ngl_FragColor=vec4(albedo,alpha);}`;\n// Sideeffect\nif (!ShaderStore.ShadersStore[name]) {\n ShaderStore.ShadersStore[name] = shader;\n}\n/** @internal */\nexport const fluentPixelShader = { name, shader };\n"]}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// Do not edit.
|
|
2
|
+
import { ShaderStore } from "@babylonjs/core/Engines/shaderStore.js";
|
|
3
|
+
const name = "fluentVertexShader";
|
|
4
|
+
const shader = `precision highp float;attribute vec3 position;attribute vec3 normal;attribute vec2 uv;uniform mat4 world;uniform mat4 viewProjection;varying vec2 vUV;
|
|
5
|
+
#ifdef BORDER
|
|
6
|
+
varying vec2 scaleInfo;uniform float borderWidth;uniform vec3 scaleFactor;
|
|
7
|
+
#endif
|
|
8
|
+
#ifdef HOVERLIGHT
|
|
9
|
+
varying vec3 worldPosition;
|
|
10
|
+
#endif
|
|
11
|
+
void main(void) {vUV=uv;
|
|
12
|
+
#ifdef BORDER
|
|
13
|
+
vec3 scale=scaleFactor;float minScale=min(min(scale.x,scale.y),scale.z);float maxScale=max(max(scale.x,scale.y),scale.z);float minOverMiddleScale=minScale/(scale.x+scale.y+scale.z-minScale-maxScale);float areaYZ=scale.y*scale.z;float areaXZ=scale.x*scale.z;float areaXY=scale.x*scale.y;float scaledBorderWidth=borderWidth;
|
|
14
|
+
if (abs(normal.x)==1.0)
|
|
15
|
+
{scale.x=scale.y;scale.y=scale.z;if (areaYZ>areaXZ && areaYZ>areaXY)
|
|
16
|
+
{scaledBorderWidth*=minOverMiddleScale;}}
|
|
17
|
+
else if (abs(normal.y)==1.0)
|
|
18
|
+
{scale.x=scale.z;if (areaXZ>areaXY && areaXZ>areaYZ)
|
|
19
|
+
{scaledBorderWidth*=minOverMiddleScale;}}
|
|
20
|
+
else
|
|
21
|
+
{if (areaXY>areaYZ && areaXY>areaXZ)
|
|
22
|
+
{scaledBorderWidth*=minOverMiddleScale;}}
|
|
23
|
+
float scaleRatio=min(scale.x,scale.y)/max(scale.x,scale.y);if (scale.x>scale.y)
|
|
24
|
+
{scaleInfo.x=1.0-(scaledBorderWidth*scaleRatio);scaleInfo.y=1.0-scaledBorderWidth;}
|
|
25
|
+
else
|
|
26
|
+
{scaleInfo.x=1.0-scaledBorderWidth;scaleInfo.y=1.0-(scaledBorderWidth*scaleRatio);}
|
|
27
|
+
#endif
|
|
28
|
+
vec4 worldPos=world*vec4(position,1.0);
|
|
29
|
+
#ifdef HOVERLIGHT
|
|
30
|
+
worldPosition=worldPos.xyz;
|
|
31
|
+
#endif
|
|
32
|
+
gl_Position=viewProjection*worldPos;}
|
|
33
|
+
`;
|
|
34
|
+
// Sideeffect
|
|
35
|
+
if (!ShaderStore.ShadersStore[name]) {
|
|
36
|
+
ShaderStore.ShadersStore[name] = shader;
|
|
37
|
+
}
|
|
38
|
+
/** @internal */
|
|
39
|
+
export const fluentVertexShader = { name, shader };
|
|
40
|
+
//# sourceMappingURL=fluent.vertex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fluent.vertex.js","sourceRoot":"","sources":["../../../../../../../dev/gui/src/3D/materials/fluent/shaders/fluent.vertex.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,+CAAiC;AAEvD,MAAM,IAAI,GAAG,oBAAoB,CAAC;AAClC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6Bd,CAAC;AACF,aAAa;AACb,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;IAClC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AAC5C,CAAC;AACD,gBAAgB;AAChB,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"core/Engines/shaderStore\";\n\nconst name = \"fluentVertexShader\";\nconst shader = `precision highp float;attribute vec3 position;attribute vec3 normal;attribute vec2 uv;uniform mat4 world;uniform mat4 viewProjection;varying vec2 vUV;\n#ifdef BORDER\nvarying vec2 scaleInfo;uniform float borderWidth;uniform vec3 scaleFactor;\n#endif\n#ifdef HOVERLIGHT\nvarying vec3 worldPosition;\n#endif\nvoid main(void) {vUV=uv;\n#ifdef BORDER\nvec3 scale=scaleFactor;float minScale=min(min(scale.x,scale.y),scale.z);float maxScale=max(max(scale.x,scale.y),scale.z);float minOverMiddleScale=minScale/(scale.x+scale.y+scale.z-minScale-maxScale);float areaYZ=scale.y*scale.z;float areaXZ=scale.x*scale.z;float areaXY=scale.x*scale.y;float scaledBorderWidth=borderWidth; \nif (abs(normal.x)==1.0) \n{scale.x=scale.y;scale.y=scale.z;if (areaYZ>areaXZ && areaYZ>areaXY)\n{scaledBorderWidth*=minOverMiddleScale;}}\nelse if (abs(normal.y)==1.0) \n{scale.x=scale.z;if (areaXZ>areaXY && areaXZ>areaYZ)\n{scaledBorderWidth*=minOverMiddleScale;}}\nelse \n{if (areaXY>areaYZ && areaXY>areaXZ)\n{scaledBorderWidth*=minOverMiddleScale;}}\nfloat scaleRatio=min(scale.x,scale.y)/max(scale.x,scale.y);if (scale.x>scale.y)\n{scaleInfo.x=1.0-(scaledBorderWidth*scaleRatio);scaleInfo.y=1.0-scaledBorderWidth;}\nelse\n{scaleInfo.x=1.0-scaledBorderWidth;scaleInfo.y=1.0-(scaledBorderWidth*scaleRatio);} \n#endif \nvec4 worldPos=world*vec4(position,1.0);\n#ifdef HOVERLIGHT\nworldPosition=worldPos.xyz;\n#endif\ngl_Position=viewProjection*worldPos;}\n`;\n// Sideeffect\nif (!ShaderStore.ShadersStore[name]) {\n ShaderStore.ShadersStore[name] = shader;\n}\n/** @internal */\nexport const fluentVertexShader = { name, shader };\n"]}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import type { Nullable } from "@babylonjs/core/types.js";
|
|
2
|
+
import type { Matrix } from "@babylonjs/core/Maths/math.vector.js";
|
|
3
|
+
import { Vector3, Vector4 } from "@babylonjs/core/Maths/math.vector.js";
|
|
4
|
+
import type { IAnimatable } from "@babylonjs/core/Animations/animatable.interface.js";
|
|
5
|
+
import type { BaseTexture } from "@babylonjs/core/Materials/Textures/baseTexture.js";
|
|
6
|
+
import { PushMaterial } from "@babylonjs/core/Materials/pushMaterial.js";
|
|
7
|
+
import type { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh.js";
|
|
8
|
+
import type { SubMesh } from "@babylonjs/core/Meshes/subMesh.js";
|
|
9
|
+
import type { Mesh } from "@babylonjs/core/Meshes/mesh.js";
|
|
10
|
+
import type { Scene } from "@babylonjs/core/scene.js";
|
|
11
|
+
import { Color4 } from "@babylonjs/core/Maths/math.color.js";
|
|
12
|
+
import "./shaders/fluentBackplate.fragment.js";
|
|
13
|
+
import "./shaders/fluentBackplate.vertex.js";
|
|
14
|
+
/**
|
|
15
|
+
* Class used to render square buttons with fluent design
|
|
16
|
+
*/
|
|
17
|
+
export declare class FluentBackplateMaterial extends PushMaterial {
|
|
18
|
+
/**
|
|
19
|
+
* URL pointing to the texture used to define the coloring for the fluent blob effect.
|
|
20
|
+
*/
|
|
21
|
+
static BLOB_TEXTURE_URL: string;
|
|
22
|
+
/**
|
|
23
|
+
* URL pointing to the texture used to define iridescent map.
|
|
24
|
+
*/
|
|
25
|
+
static IM_TEXTURE_URL: string;
|
|
26
|
+
private _blobTexture;
|
|
27
|
+
private _iridescentMap;
|
|
28
|
+
/**
|
|
29
|
+
* Gets or sets the corner radius on the backplate. Best to keep this value between 0.01 and 0.5. Default is 0.03.
|
|
30
|
+
*/
|
|
31
|
+
radius: number;
|
|
32
|
+
/**
|
|
33
|
+
* Gets or sets the line width of the backplate.
|
|
34
|
+
*/
|
|
35
|
+
lineWidth: number;
|
|
36
|
+
/**
|
|
37
|
+
* Gets or sets whether to use absolute sizes when calculating effects on the backplate.
|
|
38
|
+
* Since desktop and VR/AR have different relative sizes, it's usually best to keep this false.
|
|
39
|
+
*/
|
|
40
|
+
absoluteSizes: boolean;
|
|
41
|
+
/** @internal */
|
|
42
|
+
_filterWidth: number;
|
|
43
|
+
/**
|
|
44
|
+
* Gets or sets the base color of the backplate.
|
|
45
|
+
*/
|
|
46
|
+
baseColor: Color4;
|
|
47
|
+
/**
|
|
48
|
+
* Gets or sets the line color of the backplate.
|
|
49
|
+
*/
|
|
50
|
+
lineColor: Color4;
|
|
51
|
+
/**
|
|
52
|
+
* Gets or sets the intensity of the fluent hover glow effect.
|
|
53
|
+
*/
|
|
54
|
+
blobIntensity: number;
|
|
55
|
+
/**
|
|
56
|
+
* Gets or sets the far size of the fluent hover glow effect.
|
|
57
|
+
*/
|
|
58
|
+
blobFarSize: number;
|
|
59
|
+
/**
|
|
60
|
+
* Gets or sets the distance considered "near" to the backplate, which controls the size of the fluent hover glow effect (see blobNearSize).
|
|
61
|
+
*/
|
|
62
|
+
blobNearDistance: number;
|
|
63
|
+
/**
|
|
64
|
+
* Gets or sets the distance considered "far" from the backplate, which controls the size of the fluent hover glow effect (see blobFarSize).
|
|
65
|
+
*/
|
|
66
|
+
blobFarDistance: number;
|
|
67
|
+
/**
|
|
68
|
+
* Gets or sets the length of the fluent hover glow effect fade.
|
|
69
|
+
*/
|
|
70
|
+
blobFadeLength: number;
|
|
71
|
+
/**
|
|
72
|
+
* Gets or sets the size of the fluent hover glow effect when the left pointer is considered "near" to the backplate (see blobNearDistance).
|
|
73
|
+
*/
|
|
74
|
+
blobNearSize: number;
|
|
75
|
+
/**
|
|
76
|
+
* Gets or sets the progress of the fluent hover glow effect selection animation corresponding to the left pointer (0.0 - 1.0).
|
|
77
|
+
*/
|
|
78
|
+
blobPulse: number;
|
|
79
|
+
/**
|
|
80
|
+
* Gets or sets the opacity of the fluent hover glow effect corresponding to the left pointer (0.0 - 1.0). Default is 0.
|
|
81
|
+
*/
|
|
82
|
+
blobFade: number;
|
|
83
|
+
/**
|
|
84
|
+
* Gets or sets the size of the fluent hover glow effect when the right pointer is considered "near" to the backplate (see blobNearDistance).
|
|
85
|
+
*/
|
|
86
|
+
blobNearSize2: number;
|
|
87
|
+
/**
|
|
88
|
+
* Gets or sets the progress of the fluent hover glow effect selection animation corresponding to the right pointer (0.0 - 1.0).
|
|
89
|
+
*/
|
|
90
|
+
blobPulse2: number;
|
|
91
|
+
/**
|
|
92
|
+
* Gets or sets the opacity of the fluent hover glow effect corresponding to the right pointer (0.0 - 1.0). Default is 0.
|
|
93
|
+
*/
|
|
94
|
+
blobFade2: number;
|
|
95
|
+
/** @internal */
|
|
96
|
+
_rate: number;
|
|
97
|
+
/**
|
|
98
|
+
* Gets or sets the color of the highlights on the backplate line.
|
|
99
|
+
*/
|
|
100
|
+
highlightColor: Color4;
|
|
101
|
+
/**
|
|
102
|
+
* Gets or sets the width of the highlights on the backplate line.
|
|
103
|
+
*/
|
|
104
|
+
highlightWidth: number;
|
|
105
|
+
/** @internal */
|
|
106
|
+
_highlightTransform: Vector4;
|
|
107
|
+
/** @internal */
|
|
108
|
+
_highlight: number;
|
|
109
|
+
/**
|
|
110
|
+
* Gets or sets the intensity of the iridescence effect.
|
|
111
|
+
*/
|
|
112
|
+
iridescenceIntensity: number;
|
|
113
|
+
/**
|
|
114
|
+
* Gets or sets the intensity of the iridescence effect on the backplate edges.
|
|
115
|
+
*/
|
|
116
|
+
iridescenceEdgeIntensity: number;
|
|
117
|
+
/** @internal */
|
|
118
|
+
_angle: number;
|
|
119
|
+
/**
|
|
120
|
+
* Gets or sets the opacity of the backplate (0.0 - 1.0).
|
|
121
|
+
*/
|
|
122
|
+
fadeOut: number;
|
|
123
|
+
/** @internal */
|
|
124
|
+
_reflected: boolean;
|
|
125
|
+
/** @internal */
|
|
126
|
+
_frequency: number;
|
|
127
|
+
/** @internal */
|
|
128
|
+
_verticalOffset: number;
|
|
129
|
+
/**
|
|
130
|
+
* Gets or sets the world-space position of the tip of the left index finger.
|
|
131
|
+
*/
|
|
132
|
+
globalLeftIndexTipPosition: Vector3;
|
|
133
|
+
private _globalLeftIndexTipPosition4;
|
|
134
|
+
/**
|
|
135
|
+
* Gets or sets the world-space position of the tip of the right index finger.
|
|
136
|
+
*/
|
|
137
|
+
globalRightIndexTipPosition: Vector3;
|
|
138
|
+
private _globalRightIndexTipPosition4;
|
|
139
|
+
constructor(name: string, scene?: Scene);
|
|
140
|
+
needAlphaBlending(): boolean;
|
|
141
|
+
needAlphaTesting(): boolean;
|
|
142
|
+
getAlphaTestTexture(): Nullable<BaseTexture>;
|
|
143
|
+
isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh): boolean;
|
|
144
|
+
bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void;
|
|
145
|
+
/**
|
|
146
|
+
* Get the list of animatables in the material.
|
|
147
|
+
* @returns the list of animatables object used in the material
|
|
148
|
+
*/
|
|
149
|
+
getAnimatables(): IAnimatable[];
|
|
150
|
+
dispose(forceDisposeEffect?: boolean): void;
|
|
151
|
+
clone(name: string): FluentBackplateMaterial;
|
|
152
|
+
serialize(): any;
|
|
153
|
+
getClassName(): string;
|
|
154
|
+
static Parse(source: any, scene: Scene, rootUrl: string): FluentBackplateMaterial;
|
|
155
|
+
}
|