@babylonjs/gui 7.34.4 → 7.35.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.
Files changed (80) hide show
  1. package/2D/FrameGraph/guiTask.js.map +1 -1
  2. package/2D/FrameGraph/renderGraphGUIBlock.js.map +1 -1
  3. package/2D/adtInstrumentation.js.map +1 -1
  4. package/2D/advancedDynamicTexture.d.ts +1 -1
  5. package/2D/advancedDynamicTexture.js.map +1 -1
  6. package/2D/controls/button.js.map +1 -1
  7. package/2D/controls/checkbox.js.map +1 -1
  8. package/2D/controls/colorpicker.js.map +1 -1
  9. package/2D/controls/container.js.map +1 -1
  10. package/2D/controls/control.js.map +1 -1
  11. package/2D/controls/displayGrid.js.map +1 -1
  12. package/2D/controls/ellipse.js.map +1 -1
  13. package/2D/controls/focusableButton.js.map +1 -1
  14. package/2D/controls/gradient/BaseGradient.js.map +1 -1
  15. package/2D/controls/grid.js.map +1 -1
  16. package/2D/controls/image.js.map +1 -1
  17. package/2D/controls/inputPassword.js.map +1 -1
  18. package/2D/controls/inputText.js.map +1 -1
  19. package/2D/controls/inputTextArea.js.map +1 -1
  20. package/2D/controls/line.js.map +1 -1
  21. package/2D/controls/multiLine.js.map +1 -1
  22. package/2D/controls/radioButton.js.map +1 -1
  23. package/2D/controls/rectangle.js.map +1 -1
  24. package/2D/controls/scrollViewers/scrollViewer.js.map +1 -1
  25. package/2D/controls/scrollViewers/scrollViewerWindow.js.map +1 -1
  26. package/2D/controls/selector.js.map +1 -1
  27. package/2D/controls/sliders/baseSlider.js.map +1 -1
  28. package/2D/controls/sliders/imageBasedSlider.js.map +1 -1
  29. package/2D/controls/sliders/imageScrollBar.js.map +1 -1
  30. package/2D/controls/sliders/scrollBar.js.map +1 -1
  31. package/2D/controls/sliders/slider.js.map +1 -1
  32. package/2D/controls/stackPanel.js.map +1 -1
  33. package/2D/controls/statics.js.map +1 -1
  34. package/2D/controls/textBlock.js.map +1 -1
  35. package/2D/controls/textWrapper.js.map +1 -1
  36. package/2D/controls/toggleButton.js.map +1 -1
  37. package/2D/controls/virtualKeyboard.js.map +1 -1
  38. package/2D/math2D.js.map +1 -1
  39. package/2D/measure.js.map +1 -1
  40. package/2D/multiLinePoint.js.map +1 -1
  41. package/2D/style.js.map +1 -1
  42. package/2D/valueAndUnit.js.map +1 -1
  43. package/2D/xmlLoader.js.map +1 -1
  44. package/3D/behaviors/defaultBehavior.js.map +1 -1
  45. package/3D/controls/MRTK3/touchHolographicButton.js.map +1 -1
  46. package/3D/controls/button3D.js.map +1 -1
  47. package/3D/controls/container3D.js.map +1 -1
  48. package/3D/controls/contentDisplay3D.js.map +1 -1
  49. package/3D/controls/control3D.js.map +1 -1
  50. package/3D/controls/cylinderPanel.js.map +1 -1
  51. package/3D/controls/holographicBackplate.js.map +1 -1
  52. package/3D/controls/holographicButton.js.map +1 -1
  53. package/3D/controls/holographicSlate.js.map +1 -1
  54. package/3D/controls/meshButton3D.js.map +1 -1
  55. package/3D/controls/nearMenu.js.map +1 -1
  56. package/3D/controls/planePanel.js.map +1 -1
  57. package/3D/controls/scatterPanel.js.map +1 -1
  58. package/3D/controls/slider3D.js.map +1 -1
  59. package/3D/controls/spherePanel.js.map +1 -1
  60. package/3D/controls/stackPanel3D.js.map +1 -1
  61. package/3D/controls/touchButton3D.js.map +1 -1
  62. package/3D/controls/touchHolographicButton.js.map +1 -1
  63. package/3D/controls/touchHolographicMenu.js.map +1 -1
  64. package/3D/controls/touchMeshButton3D.js.map +1 -1
  65. package/3D/controls/volumeBasedPanel.js.map +1 -1
  66. package/3D/gizmos/gizmoHandle.js.map +1 -1
  67. package/3D/gizmos/slateGizmo.js.map +1 -1
  68. package/3D/gui3DManager.js.map +1 -1
  69. package/3D/materials/fluent/fluentMaterial.js.map +1 -1
  70. package/3D/materials/fluentBackplate/fluentBackplateMaterial.js.map +1 -1
  71. package/3D/materials/fluentButton/fluentButtonMaterial.js.map +1 -1
  72. package/3D/materials/handle/handleMaterial.js.map +1 -1
  73. package/3D/materials/mrdl/mrdlBackglowMaterial.js.map +1 -1
  74. package/3D/materials/mrdl/mrdlBackplateMaterial.js.map +1 -1
  75. package/3D/materials/mrdl/mrdlFrontplateMaterial.js.map +1 -1
  76. package/3D/materials/mrdl/mrdlInnerquadMaterial.js.map +1 -1
  77. package/3D/materials/mrdl/mrdlSliderBarMaterial.js.map +1 -1
  78. package/3D/materials/mrdl/mrdlSliderThumbMaterial.js.map +1 -1
  79. package/legacy/legacy.js.map +1 -1
  80. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"fluentButtonMaterial.js","sourceRoot":"","sources":["../../../../../../dev/gui/src/3D/materials/fluentButton/fluentButtonMaterial.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, serialize } from \"core/Misc/decorators\";\r\nimport { SerializationHelper } from \"core/Misc/decorators.serialization\";\r\nimport type { Matrix } from \"core/Maths/math.vector\";\r\nimport { Vector3, Vector4 } from \"core/Maths/math.vector\";\r\nimport type { IAnimatable } from \"core/Animations/animatable.interface\";\r\nimport type { BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\nimport { Texture } from \"core/Materials/Textures/texture\";\r\nimport { MaterialDefines } from \"core/Materials/materialDefines\";\r\nimport type { IEffectCreationOptions } from \"core/Materials/effect\";\r\nimport { PushMaterial } from \"core/Materials/pushMaterial\";\r\nimport { VertexBuffer } from \"core/Buffers/buffer\";\r\nimport type { AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport type { SubMesh } from \"core/Meshes/subMesh\";\r\nimport type { Mesh } from \"core/Meshes/mesh\";\r\nimport type { Scene } from \"core/scene\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { Color3, Color4 } from \"core/Maths/math.color\";\r\nimport { EffectFallbacks } from \"core/Materials/effectFallbacks\";\r\nimport { Constants } from \"core/Engines/constants\";\r\n\r\nimport \"./shaders/fluentButton.fragment\";\r\nimport \"./shaders/fluentButton.vertex\";\r\nimport { HandleFallbacksForShadows, PrepareAttributesForInstances, PrepareDefinesForAttributes, PrepareUniformsAndSamplersList } from \"core/Materials/materialHelper.functions\";\r\n\r\n/** @internal */\r\nclass FluentButtonMaterialDefines extends MaterialDefines {\r\n public RELATIVE_WIDTH = true;\r\n public ENABLE_FADE = true;\r\n\r\n constructor() {\r\n super();\r\n this._needNormals = true;\r\n this._needUVs = true;\r\n this.rebuild();\r\n }\r\n}\r\n\r\n/**\r\n * Class used to render square buttons with fluent design\r\n * @since 5.0.0\r\n */\r\nexport class FluentButtonMaterial 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-button-blob.png\";\r\n\r\n /**\r\n * Gets or sets the width of the glowing edge, relative to the scale of the button.\r\n * (Default is 4% of the height).\r\n */\r\n @serialize()\r\n public edgeWidth = 0.04;\r\n\r\n /**\r\n * Gets or sets the color of the glowing edge.\r\n */\r\n @serializeAsColor4()\r\n public edgeColor = new Color4(0.592157, 0.592157, 0.592157, 1.0);\r\n\r\n /**\r\n * Gets or sets the maximum intensity of the proximity light.\r\n */\r\n @serialize()\r\n public proximityMaxIntensity = 0.45;\r\n\r\n /**\r\n * Gets or sets the maximum distance for the proximity light (Default is 16mm).\r\n */\r\n @serialize()\r\n public proximityFarDistance = 0.16;\r\n\r\n /**\r\n * Gets or sets the radius of the proximity light when near to the surface.\r\n */\r\n @serialize()\r\n public proximityNearRadius = 1.5;\r\n\r\n /**\r\n * Gets or sets the anisotropy of the proximity light.\r\n */\r\n @serialize()\r\n public proximityAnisotropy = 1;\r\n\r\n /**\r\n * Gets or sets the amount of fuzzing in the selection focus.\r\n */\r\n @serialize()\r\n public selectionFuzz = 0.5;\r\n\r\n /**\r\n * Gets or sets an override value to display the button as selected.\r\n */\r\n @serialize()\r\n public selected = 0;\r\n\r\n /**\r\n * Gets or sets a value to manually fade the blob size.\r\n */\r\n @serialize()\r\n public selectionFade = 0;\r\n\r\n /**\r\n * Gets or sets a value to manually shrink the blob size as it fades (see selectionFade).\r\n */\r\n @serialize()\r\n public selectionFadeSize = 0.3;\r\n\r\n /**\r\n * Gets or sets the distance from the button the cursor should be for the button\r\n * to appear selected (Default is 8cm).\r\n */\r\n @serialize()\r\n public selectedDistance = 0.08;\r\n\r\n /**\r\n * Gets or sets the fall-off distance for the selection fade (Default is 8cm).\r\n */\r\n @serialize()\r\n public selectedFadeLength = 0.08;\r\n\r\n /**\r\n * Gets or sets the intensity of the luminous blob (Ranges 0-1, default is 0.5).\r\n */\r\n @serialize()\r\n public blobIntensity = 0.5;\r\n\r\n /**\r\n * The size of the blob when the pointer is at the blobFarDistance (Default is 5cm).\r\n */\r\n @serialize()\r\n public blobFarSize = 0.05;\r\n\r\n /**\r\n * The distance at which the pointer is considered near. See [left|right]BlobNearSize. (Default is 0cm).\r\n */\r\n @serialize()\r\n public blobNearDistance = 0;\r\n\r\n /**\r\n * The distance at which the pointer is considered far. See [left|right]BlobFarSize. (Default is 8cm).\r\n */\r\n @serialize()\r\n public blobFarDistance = 0.08;\r\n\r\n /**\r\n * The distance over which the blob intensity fades from full to none (Default is 8cm).\r\n */\r\n @serialize()\r\n public blobFadeLength = 0.08;\r\n\r\n /**\r\n * Gets or sets whether the blob corresponding to the left index finger is enabled.\r\n */\r\n @serialize()\r\n public leftBlobEnable = true;\r\n\r\n /**\r\n * Gets or sets the size of the left blob when the left pointer is considered near. See blobNearDistance. (Default is 2.5cm).\r\n */\r\n @serialize()\r\n public leftBlobNearSize = 0.025;\r\n\r\n /**\r\n * Gets or sets the progress of the pulse animation on the left blob (Ranges 0-1).\r\n */\r\n @serialize()\r\n public leftBlobPulse = 0;\r\n\r\n /**\r\n * Gets or sets the fade factor on the left blob.\r\n */\r\n @serialize()\r\n public leftBlobFade = 1;\r\n\r\n /**\r\n * Gets or sets the inner fade on the left blob;\r\n */\r\n @serialize()\r\n public leftBlobInnerFade = 0.01;\r\n\r\n /**\r\n * Gets or sets whether the blob corresponding to the right index finger is enabled.\r\n */\r\n @serialize()\r\n public rightBlobEnable = true;\r\n\r\n /**\r\n * Gets or sets the size of the right blob when the right pointer is considered near. See blobNearDistance. (Default is 2.5cm).\r\n */\r\n @serialize()\r\n public rightBlobNearSize = 0.025;\r\n\r\n /**\r\n * Gets or sets the progress of the pulse animation on the right blob (Ranges 0-1).\r\n */\r\n @serialize()\r\n public rightBlobPulse = 0;\r\n\r\n /**\r\n * Gets or sets the fade factor on the right blob.\r\n */\r\n @serialize()\r\n public rightBlobFade = 1;\r\n\r\n /**\r\n * Gets or sets the inner fade on the right blob;\r\n */\r\n @serialize()\r\n public rightBlobInnerFade = 0.01;\r\n\r\n /**\r\n * Gets or sets the direction of the active face before the world transform is applied.\r\n * This should almost always be set to -z.\r\n */\r\n @serializeAsVector3()\r\n public activeFaceDir = new Vector3(0, 0, -1);\r\n\r\n /**\r\n * Gets or sets the button's up direction before the world transform is applied.\r\n * This should almost always be set to +y.\r\n */\r\n @serializeAsVector3()\r\n public activeFaceUp = new Vector3(0, 1, 0);\r\n\r\n /**\r\n * Gets or sets whether the edge fade effect is enabled.\r\n */\r\n @serialize()\r\n public enableFade = true;\r\n\r\n /**\r\n * Gets or sets a value corresponding to the width of the edge fade effect (Default 1.5).\r\n */\r\n @serialize()\r\n public fadeWidth = 1.5;\r\n\r\n /**\r\n * Gets or sets whether the active face is smoothly interpolated.\r\n */\r\n @serialize()\r\n public smoothActiveFace = true;\r\n\r\n /**\r\n * Gets or sets whether the frame of the fluent button model is visible.\r\n * This is usually only enabled for debugging purposes.\r\n */\r\n @serialize()\r\n public showFrame = false;\r\n\r\n /**\r\n * Gets or sets whether the blob color texture is used for the proximity\r\n * light effect. This is usually only disabled for debugging purposes.\r\n */\r\n @serialize()\r\n public useBlobTexture = true;\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\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\r\n private _blobTexture: Texture;\r\n\r\n constructor(name: string, scene?: Scene) {\r\n super(name, scene);\r\n this.alphaMode = Constants.ALPHA_ADD;\r\n this.disableDepthWrite = true;\r\n this.backFaceCulling = false;\r\n\r\n this._blobTexture = new Texture(FluentButtonMaterial.BLOB_TEXTURE_URL, this.getScene(), true, false, Texture.NEAREST_SAMPLINGMODE);\r\n }\r\n\r\n public override needAlphaBlending(): boolean {\r\n return true;\r\n }\r\n\r\n public override needAlphaTesting(): boolean {\r\n return true;\r\n }\r\n\r\n public override getAlphaTestTexture(): Nullable<BaseTexture> {\r\n return null;\r\n }\r\n\r\n // Methods\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 FluentButtonMaterialDefines();\r\n }\r\n\r\n const defines = <FluentButtonMaterialDefines>subMesh.materialDefines;\r\n const scene = this.getScene();\r\n\r\n if (this._isReadyForSubMesh(subMesh)) {\r\n return true;\r\n }\r\n\r\n const engine = scene.getEngine();\r\n\r\n // Attribs\r\n PrepareDefinesForAttributes(mesh, defines, true, false);\r\n\r\n // Get correct effect\r\n if (defines.isDirty) {\r\n defines.markAsProcessed();\r\n\r\n scene.resetCachedMaterial();\r\n\r\n // Fallbacks\r\n const fallbacks = new EffectFallbacks();\r\n if (defines.FOG) {\r\n fallbacks.addFallback(1, \"FOG\");\r\n }\r\n\r\n HandleFallbacksForShadows(defines, fallbacks);\r\n\r\n defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;\r\n\r\n //Attributes\r\n const attribs = [VertexBuffer.PositionKind];\r\n\r\n if (defines.NORMAL) {\r\n attribs.push(VertexBuffer.NormalKind);\r\n }\r\n\r\n if (defines.UV1) {\r\n attribs.push(VertexBuffer.UVKind);\r\n }\r\n\r\n if (defines.UV2) {\r\n attribs.push(VertexBuffer.UV2Kind);\r\n }\r\n\r\n if (defines.VERTEXCOLOR) {\r\n attribs.push(VertexBuffer.ColorKind);\r\n }\r\n\r\n if (defines.TANGENT) {\r\n attribs.push(VertexBuffer.TangentKind);\r\n }\r\n\r\n PrepareAttributesForInstances(attribs, defines);\r\n\r\n // Legacy browser patch\r\n const shaderName = \"fluentButton\";\r\n const join = defines.toString();\r\n\r\n const uniforms = [\r\n \"world\",\r\n \"viewProjection\",\r\n \"cameraPosition\",\r\n\r\n \"_Edge_Width_\",\r\n \"_Edge_Color_\",\r\n \"_Relative_Width_\",\r\n \"_Proximity_Max_Intensity_\",\r\n \"_Proximity_Far_Distance_\",\r\n \"_Proximity_Near_Radius_\",\r\n \"_Proximity_Anisotropy_\",\r\n \"_Selection_Fuzz_\",\r\n \"_Selected_\",\r\n \"_Selection_Fade_\",\r\n \"_Selection_Fade_Size_\",\r\n \"_Selected_Distance_\",\r\n \"_Selected_Fade_Length_\",\r\n \"_Blob_Enable_\",\r\n \"_Blob_Position_\",\r\n \"_Blob_Intensity_\",\r\n \"_Blob_Near_Size_\",\r\n \"_Blob_Far_Size_\",\r\n \"_Blob_Near_Distance_\",\r\n \"_Blob_Far_Distance_\",\r\n \"_Blob_Fade_Length_\",\r\n \"_Blob_Inner_Fade_\",\r\n \"_Blob_Pulse_\",\r\n \"_Blob_Fade_\",\r\n \"_Blob_Texture_\",\r\n \"_Blob_Enable_2_\",\r\n \"_Blob_Position_2_\",\r\n \"_Blob_Near_Size_2_\",\r\n \"_Blob_Inner_Fade_2_\",\r\n \"_Blob_Pulse_2_\",\r\n \"_Blob_Fade_2_\",\r\n \"_Active_Face_Dir_\",\r\n \"_Active_Face_Up_\",\r\n \"_Enable_Fade_\",\r\n \"_Fade_Width_\",\r\n \"_Smooth_Active_Face_\",\r\n \"_Show_Frame_\",\r\n \"_Use_Blob_Texture_\",\r\n\r\n \"Use_Global_Left_Index\",\r\n \"Use_Global_Right_Index\",\r\n \"Global_Left_Index_Tip_Position\",\r\n \"Global_Right_Index_Tip_Position\",\r\n \"Global_Left_Thumb_Tip_Position\",\r\n \"Global_Right_Thumb_Tip_Position\",\r\n \"Global_Left_Index_Tip_Proximity\",\r\n \"Global_Right_Index_Tip_Proximity\",\r\n ];\r\n const samplers: string[] = [\"_Blob_Texture_\"];\r\n const uniformBuffers: string[] = [];\r\n\r\n PrepareUniformsAndSamplersList(<IEffectCreationOptions>{\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: defines,\r\n maxSimultaneousLights: 4,\r\n });\r\n\r\n subMesh.setEffect(\r\n scene.getEngine().createEffect(\r\n shaderName,\r\n <IEffectCreationOptions>{\r\n attributes: attribs,\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: join,\r\n fallbacks: fallbacks,\r\n onCompiled: this.onCompiled,\r\n onError: this.onError,\r\n indexParameters: { maxSimultaneousLights: 4 },\r\n },\r\n engine\r\n ),\r\n defines,\r\n this._materialContext\r\n );\r\n }\r\n if (!subMesh.effect || !subMesh.effect.isReady()) {\r\n return false;\r\n }\r\n\r\n defines._renderId = scene.getRenderId();\r\n 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 = <FluentButtonMaterialDefines>subMesh.materialDefines;\r\n if (!defines) {\r\n return;\r\n }\r\n\r\n const effect = subMesh.effect;\r\n if (!effect) {\r\n return;\r\n }\r\n\r\n this._activeEffect = effect;\r\n\r\n // Matrices\r\n this.bindOnlyWorldMatrix(world);\r\n this._activeEffect.setMatrix(\"viewProjection\", scene.getTransformMatrix());\r\n this._activeEffect.setVector3(\"cameraPosition\", scene.activeCamera!.position);\r\n\r\n // \"Blob Texture\"\r\n this._activeEffect.setTexture(\"_Blob_Texture_\", this._blobTexture);\r\n\r\n // \"Wireframe\"\r\n this._activeEffect.setFloat(\"_Edge_Width_\", this.edgeWidth);\r\n this._activeEffect.setColor4(\"_Edge_Color_\", new Color3(this.edgeColor.r, this.edgeColor.g, this.edgeColor.b), this.edgeColor.a);\r\n //define _Relative_Width_ true;\r\n\r\n // \"Proximity\"\r\n this._activeEffect.setFloat(\"_Proximity_Max_Intensity_\", this.proximityMaxIntensity);\r\n this._activeEffect.setFloat(\"_Proximity_Far_Distance_\", this.proximityFarDistance);\r\n this._activeEffect.setFloat(\"_Proximity_Near_Radius_\", this.proximityNearRadius);\r\n this._activeEffect.setFloat(\"_Proximity_Anisotropy_\", this.proximityAnisotropy);\r\n\r\n // \"Selection\"\r\n this._activeEffect.setFloat(\"_Selection_Fuzz_\", this.selectionFuzz);\r\n this._activeEffect.setFloat(\"_Selected_\", this.selected);\r\n this._activeEffect.setFloat(\"_Selection_Fade_\", this.selectionFade);\r\n this._activeEffect.setFloat(\"_Selection_Fade_Size_\", this.selectionFadeSize);\r\n this._activeEffect.setFloat(\"_Selected_Distance_\", this.selectedDistance);\r\n this._activeEffect.setFloat(\"_Selected_Fade_Length_\", this.selectedFadeLength);\r\n\r\n // \"Blob\"\r\n this._activeEffect.setFloat(\"_Blob_Enable_\", this.leftBlobEnable ? 1.0 : 0.0);\r\n this._activeEffect.setFloat(\"_Blob_Intensity_\", this.blobIntensity);\r\n this._activeEffect.setFloat(\"_Blob_Near_Size_\", this.leftBlobNearSize);\r\n this._activeEffect.setFloat(\"_Blob_Far_Size_\", this.blobFarSize);\r\n this._activeEffect.setFloat(\"_Blob_Near_Distance_\", this.blobNearDistance);\r\n this._activeEffect.setFloat(\"_Blob_Far_Distance_\", this.blobFarDistance);\r\n this._activeEffect.setFloat(\"_Blob_Fade_Length_\", this.blobFadeLength);\r\n this._activeEffect.setFloat(\"_Blob_Inner_Fade_\", this.leftBlobInnerFade);\r\n this._activeEffect.setFloat(\"_Blob_Pulse_\", this.leftBlobPulse);\r\n this._activeEffect.setFloat(\"_Blob_Fade_\", this.leftBlobFade);\r\n\r\n // \"Blob 2\"\r\n this._activeEffect.setFloat(\"_Blob_Enable_2_\", this.rightBlobEnable ? 1.0 : 0.0);\r\n this._activeEffect.setFloat(\"_Blob_Near_Size_2_\", this.rightBlobNearSize);\r\n this._activeEffect.setFloat(\"_Blob_Inner_Fade_2_\", this.rightBlobInnerFade);\r\n this._activeEffect.setFloat(\"_Blob_Pulse_2_\", this.rightBlobPulse);\r\n this._activeEffect.setFloat(\"_Blob_Fade_2_\", this.rightBlobFade);\r\n\r\n // \"Active Face\"\r\n this._activeEffect.setVector3(\"_Active_Face_Dir_\", this.activeFaceDir);\r\n this._activeEffect.setVector3(\"_Active_Face_Up_\", this.activeFaceUp);\r\n\r\n // \"Hololens Edge Fade\"\r\n //define _Enable_Fade_ true;\r\n this._activeEffect.setFloat(\"_Fade_Width_\", this.fadeWidth);\r\n this._activeEffect.setFloat(\"_Smooth_Active_Face_\", this.smoothActiveFace ? 1.0 : 0.0);\r\n\r\n // \"Debug\"\r\n this._activeEffect.setFloat(\"_Show_Frame_\", this.showFrame ? 1.0 : 0.0);\r\n this._activeEffect.setFloat(\"_Use_Blob_Texture_\", this.useBlobTexture ? 1.0 : 0.0);\r\n\r\n // Global inputs\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._activeEffect.setVector4(\r\n \"Global_Left_Index_Tip_Position\",\r\n new Vector4(this.globalLeftIndexTipPosition.x, this.globalLeftIndexTipPosition.y, this.globalLeftIndexTipPosition.z, 1.0)\r\n );\r\n this._activeEffect.setVector4(\r\n \"Global_Right_Index_Tip_Position\",\r\n new Vector4(this.globalRightIndexTipPosition.x, this.globalRightIndexTipPosition.y, this.globalRightIndexTipPosition.z, 1.0)\r\n );\r\n\r\n this._afterBind(mesh, this._activeEffect, subMesh);\r\n }\r\n\r\n /**\r\n * Get the list of animatables in the material.\r\n * @returns the list of animatables object used in the material\r\n */\r\n public override getAnimatables(): IAnimatable[] {\r\n return [];\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): FluentButtonMaterial {\r\n return SerializationHelper.Clone(() => new FluentButtonMaterial(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.FluentButtonMaterial\";\r\n return serializationObject;\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"FluentButtonMaterial\";\r\n }\r\n\r\n // Statics\r\n public static override Parse(source: any, scene: Scene, rootUrl: string): FluentButtonMaterial {\r\n return SerializationHelper.Parse(() => new FluentButtonMaterial(source.name, scene), source, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.GUI.FluentButtonMaterial\", FluentButtonMaterial);\r\n"]}
1
+ {"version":3,"file":"fluentButtonMaterial.js","sourceRoot":"","sources":["../../../../../../dev/gui/src/3D/materials/fluentButton/fluentButtonMaterial.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, serialize } from \"core/Misc/decorators\";\r\nimport { SerializationHelper } from \"core/Misc/decorators.serialization\";\r\nimport type { Matrix } from \"core/Maths/math.vector\";\r\nimport { Vector3, Vector4 } from \"core/Maths/math.vector\";\r\nimport type { IAnimatable } from \"core/Animations/animatable.interface\";\r\nimport type { BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\nimport { Texture } from \"core/Materials/Textures/texture\";\r\nimport { MaterialDefines } from \"core/Materials/materialDefines\";\r\nimport type { IEffectCreationOptions } from \"core/Materials/effect\";\r\nimport { PushMaterial } from \"core/Materials/pushMaterial\";\r\nimport { VertexBuffer } from \"core/Buffers/buffer\";\r\nimport type { AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport type { SubMesh } from \"core/Meshes/subMesh\";\r\nimport type { Mesh } from \"core/Meshes/mesh\";\r\nimport type { Scene } from \"core/scene\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { Color3, Color4 } from \"core/Maths/math.color\";\r\nimport { EffectFallbacks } from \"core/Materials/effectFallbacks\";\r\nimport { Constants } from \"core/Engines/constants\";\r\n\r\nimport \"./shaders/fluentButton.fragment\";\r\nimport \"./shaders/fluentButton.vertex\";\r\nimport { HandleFallbacksForShadows, PrepareAttributesForInstances, PrepareDefinesForAttributes, PrepareUniformsAndSamplersList } from \"core/Materials/materialHelper.functions\";\r\n\r\n/** @internal */\r\nclass FluentButtonMaterialDefines extends MaterialDefines {\r\n public RELATIVE_WIDTH = true;\r\n public ENABLE_FADE = true;\r\n\r\n constructor() {\r\n super();\r\n this._needNormals = true;\r\n this._needUVs = true;\r\n this.rebuild();\r\n }\r\n}\r\n\r\n/**\r\n * Class used to render square buttons with fluent design\r\n * @since 5.0.0\r\n */\r\nexport class FluentButtonMaterial 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-button-blob.png\";\r\n\r\n /**\r\n * Gets or sets the width of the glowing edge, relative to the scale of the button.\r\n * (Default is 4% of the height).\r\n */\r\n @serialize()\r\n public edgeWidth = 0.04;\r\n\r\n /**\r\n * Gets or sets the color of the glowing edge.\r\n */\r\n @serializeAsColor4()\r\n public edgeColor = new Color4(0.592157, 0.592157, 0.592157, 1.0);\r\n\r\n /**\r\n * Gets or sets the maximum intensity of the proximity light.\r\n */\r\n @serialize()\r\n public proximityMaxIntensity = 0.45;\r\n\r\n /**\r\n * Gets or sets the maximum distance for the proximity light (Default is 16mm).\r\n */\r\n @serialize()\r\n public proximityFarDistance = 0.16;\r\n\r\n /**\r\n * Gets or sets the radius of the proximity light when near to the surface.\r\n */\r\n @serialize()\r\n public proximityNearRadius = 1.5;\r\n\r\n /**\r\n * Gets or sets the anisotropy of the proximity light.\r\n */\r\n @serialize()\r\n public proximityAnisotropy = 1;\r\n\r\n /**\r\n * Gets or sets the amount of fuzzing in the selection focus.\r\n */\r\n @serialize()\r\n public selectionFuzz = 0.5;\r\n\r\n /**\r\n * Gets or sets an override value to display the button as selected.\r\n */\r\n @serialize()\r\n public selected = 0;\r\n\r\n /**\r\n * Gets or sets a value to manually fade the blob size.\r\n */\r\n @serialize()\r\n public selectionFade = 0;\r\n\r\n /**\r\n * Gets or sets a value to manually shrink the blob size as it fades (see selectionFade).\r\n */\r\n @serialize()\r\n public selectionFadeSize = 0.3;\r\n\r\n /**\r\n * Gets or sets the distance from the button the cursor should be for the button\r\n * to appear selected (Default is 8cm).\r\n */\r\n @serialize()\r\n public selectedDistance = 0.08;\r\n\r\n /**\r\n * Gets or sets the fall-off distance for the selection fade (Default is 8cm).\r\n */\r\n @serialize()\r\n public selectedFadeLength = 0.08;\r\n\r\n /**\r\n * Gets or sets the intensity of the luminous blob (Ranges 0-1, default is 0.5).\r\n */\r\n @serialize()\r\n public blobIntensity = 0.5;\r\n\r\n /**\r\n * The size of the blob when the pointer is at the blobFarDistance (Default is 5cm).\r\n */\r\n @serialize()\r\n public blobFarSize = 0.05;\r\n\r\n /**\r\n * The distance at which the pointer is considered near. See [left|right]BlobNearSize. (Default is 0cm).\r\n */\r\n @serialize()\r\n public blobNearDistance = 0;\r\n\r\n /**\r\n * The distance at which the pointer is considered far. See [left|right]BlobFarSize. (Default is 8cm).\r\n */\r\n @serialize()\r\n public blobFarDistance = 0.08;\r\n\r\n /**\r\n * The distance over which the blob intensity fades from full to none (Default is 8cm).\r\n */\r\n @serialize()\r\n public blobFadeLength = 0.08;\r\n\r\n /**\r\n * Gets or sets whether the blob corresponding to the left index finger is enabled.\r\n */\r\n @serialize()\r\n public leftBlobEnable = true;\r\n\r\n /**\r\n * Gets or sets the size of the left blob when the left pointer is considered near. See blobNearDistance. (Default is 2.5cm).\r\n */\r\n @serialize()\r\n public leftBlobNearSize = 0.025;\r\n\r\n /**\r\n * Gets or sets the progress of the pulse animation on the left blob (Ranges 0-1).\r\n */\r\n @serialize()\r\n public leftBlobPulse = 0;\r\n\r\n /**\r\n * Gets or sets the fade factor on the left blob.\r\n */\r\n @serialize()\r\n public leftBlobFade = 1;\r\n\r\n /**\r\n * Gets or sets the inner fade on the left blob;\r\n */\r\n @serialize()\r\n public leftBlobInnerFade = 0.01;\r\n\r\n /**\r\n * Gets or sets whether the blob corresponding to the right index finger is enabled.\r\n */\r\n @serialize()\r\n public rightBlobEnable = true;\r\n\r\n /**\r\n * Gets or sets the size of the right blob when the right pointer is considered near. See blobNearDistance. (Default is 2.5cm).\r\n */\r\n @serialize()\r\n public rightBlobNearSize = 0.025;\r\n\r\n /**\r\n * Gets or sets the progress of the pulse animation on the right blob (Ranges 0-1).\r\n */\r\n @serialize()\r\n public rightBlobPulse = 0;\r\n\r\n /**\r\n * Gets or sets the fade factor on the right blob.\r\n */\r\n @serialize()\r\n public rightBlobFade = 1;\r\n\r\n /**\r\n * Gets or sets the inner fade on the right blob;\r\n */\r\n @serialize()\r\n public rightBlobInnerFade = 0.01;\r\n\r\n /**\r\n * Gets or sets the direction of the active face before the world transform is applied.\r\n * This should almost always be set to -z.\r\n */\r\n @serializeAsVector3()\r\n public activeFaceDir = new Vector3(0, 0, -1);\r\n\r\n /**\r\n * Gets or sets the button's up direction before the world transform is applied.\r\n * This should almost always be set to +y.\r\n */\r\n @serializeAsVector3()\r\n public activeFaceUp = new Vector3(0, 1, 0);\r\n\r\n /**\r\n * Gets or sets whether the edge fade effect is enabled.\r\n */\r\n @serialize()\r\n public enableFade = true;\r\n\r\n /**\r\n * Gets or sets a value corresponding to the width of the edge fade effect (Default 1.5).\r\n */\r\n @serialize()\r\n public fadeWidth = 1.5;\r\n\r\n /**\r\n * Gets or sets whether the active face is smoothly interpolated.\r\n */\r\n @serialize()\r\n public smoothActiveFace = true;\r\n\r\n /**\r\n * Gets or sets whether the frame of the fluent button model is visible.\r\n * This is usually only enabled for debugging purposes.\r\n */\r\n @serialize()\r\n public showFrame = false;\r\n\r\n /**\r\n * Gets or sets whether the blob color texture is used for the proximity\r\n * light effect. This is usually only disabled for debugging purposes.\r\n */\r\n @serialize()\r\n public useBlobTexture = true;\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\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\r\n private _blobTexture: Texture;\r\n\r\n constructor(name: string, scene?: Scene) {\r\n super(name, scene);\r\n this.alphaMode = Constants.ALPHA_ADD;\r\n this.disableDepthWrite = true;\r\n this.backFaceCulling = false;\r\n\r\n this._blobTexture = new Texture(FluentButtonMaterial.BLOB_TEXTURE_URL, this.getScene(), true, false, Texture.NEAREST_SAMPLINGMODE);\r\n }\r\n\r\n public override needAlphaBlending(): boolean {\r\n return true;\r\n }\r\n\r\n public override needAlphaTesting(): boolean {\r\n return true;\r\n }\r\n\r\n public override getAlphaTestTexture(): Nullable<BaseTexture> {\r\n return null;\r\n }\r\n\r\n // Methods\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 FluentButtonMaterialDefines();\r\n }\r\n\r\n const defines = <FluentButtonMaterialDefines>subMesh.materialDefines;\r\n const scene = this.getScene();\r\n\r\n if (this._isReadyForSubMesh(subMesh)) {\r\n return true;\r\n }\r\n\r\n const engine = scene.getEngine();\r\n\r\n // Attribs\r\n PrepareDefinesForAttributes(mesh, defines, true, false);\r\n\r\n // Get correct effect\r\n if (defines.isDirty) {\r\n defines.markAsProcessed();\r\n\r\n scene.resetCachedMaterial();\r\n\r\n // Fallbacks\r\n const fallbacks = new EffectFallbacks();\r\n if (defines.FOG) {\r\n fallbacks.addFallback(1, \"FOG\");\r\n }\r\n\r\n HandleFallbacksForShadows(defines, fallbacks);\r\n\r\n defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;\r\n\r\n //Attributes\r\n const attribs = [VertexBuffer.PositionKind];\r\n\r\n if (defines.NORMAL) {\r\n attribs.push(VertexBuffer.NormalKind);\r\n }\r\n\r\n if (defines.UV1) {\r\n attribs.push(VertexBuffer.UVKind);\r\n }\r\n\r\n if (defines.UV2) {\r\n attribs.push(VertexBuffer.UV2Kind);\r\n }\r\n\r\n if (defines.VERTEXCOLOR) {\r\n attribs.push(VertexBuffer.ColorKind);\r\n }\r\n\r\n if (defines.TANGENT) {\r\n attribs.push(VertexBuffer.TangentKind);\r\n }\r\n\r\n PrepareAttributesForInstances(attribs, defines);\r\n\r\n // Legacy browser patch\r\n const shaderName = \"fluentButton\";\r\n const join = defines.toString();\r\n\r\n const uniforms = [\r\n \"world\",\r\n \"viewProjection\",\r\n \"cameraPosition\",\r\n\r\n \"_Edge_Width_\",\r\n \"_Edge_Color_\",\r\n \"_Relative_Width_\",\r\n \"_Proximity_Max_Intensity_\",\r\n \"_Proximity_Far_Distance_\",\r\n \"_Proximity_Near_Radius_\",\r\n \"_Proximity_Anisotropy_\",\r\n \"_Selection_Fuzz_\",\r\n \"_Selected_\",\r\n \"_Selection_Fade_\",\r\n \"_Selection_Fade_Size_\",\r\n \"_Selected_Distance_\",\r\n \"_Selected_Fade_Length_\",\r\n \"_Blob_Enable_\",\r\n \"_Blob_Position_\",\r\n \"_Blob_Intensity_\",\r\n \"_Blob_Near_Size_\",\r\n \"_Blob_Far_Size_\",\r\n \"_Blob_Near_Distance_\",\r\n \"_Blob_Far_Distance_\",\r\n \"_Blob_Fade_Length_\",\r\n \"_Blob_Inner_Fade_\",\r\n \"_Blob_Pulse_\",\r\n \"_Blob_Fade_\",\r\n \"_Blob_Texture_\",\r\n \"_Blob_Enable_2_\",\r\n \"_Blob_Position_2_\",\r\n \"_Blob_Near_Size_2_\",\r\n \"_Blob_Inner_Fade_2_\",\r\n \"_Blob_Pulse_2_\",\r\n \"_Blob_Fade_2_\",\r\n \"_Active_Face_Dir_\",\r\n \"_Active_Face_Up_\",\r\n \"_Enable_Fade_\",\r\n \"_Fade_Width_\",\r\n \"_Smooth_Active_Face_\",\r\n \"_Show_Frame_\",\r\n \"_Use_Blob_Texture_\",\r\n\r\n \"Use_Global_Left_Index\",\r\n \"Use_Global_Right_Index\",\r\n \"Global_Left_Index_Tip_Position\",\r\n \"Global_Right_Index_Tip_Position\",\r\n \"Global_Left_Thumb_Tip_Position\",\r\n \"Global_Right_Thumb_Tip_Position\",\r\n \"Global_Left_Index_Tip_Proximity\",\r\n \"Global_Right_Index_Tip_Proximity\",\r\n ];\r\n const samplers: string[] = [\"_Blob_Texture_\"];\r\n const uniformBuffers: string[] = [];\r\n\r\n PrepareUniformsAndSamplersList(<IEffectCreationOptions>{\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: defines,\r\n maxSimultaneousLights: 4,\r\n });\r\n\r\n subMesh.setEffect(\r\n scene.getEngine().createEffect(\r\n shaderName,\r\n <IEffectCreationOptions>{\r\n attributes: attribs,\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: join,\r\n fallbacks: fallbacks,\r\n onCompiled: this.onCompiled,\r\n onError: this.onError,\r\n indexParameters: { maxSimultaneousLights: 4 },\r\n },\r\n engine\r\n ),\r\n defines,\r\n this._materialContext\r\n );\r\n }\r\n if (!subMesh.effect || !subMesh.effect.isReady()) {\r\n return false;\r\n }\r\n\r\n defines._renderId = scene.getRenderId();\r\n 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 = <FluentButtonMaterialDefines>subMesh.materialDefines;\r\n if (!defines) {\r\n return;\r\n }\r\n\r\n const effect = subMesh.effect;\r\n if (!effect) {\r\n return;\r\n }\r\n\r\n this._activeEffect = effect;\r\n\r\n // Matrices\r\n this.bindOnlyWorldMatrix(world);\r\n this._activeEffect.setMatrix(\"viewProjection\", scene.getTransformMatrix());\r\n this._activeEffect.setVector3(\"cameraPosition\", scene.activeCamera!.position);\r\n\r\n // \"Blob Texture\"\r\n this._activeEffect.setTexture(\"_Blob_Texture_\", this._blobTexture);\r\n\r\n // \"Wireframe\"\r\n this._activeEffect.setFloat(\"_Edge_Width_\", this.edgeWidth);\r\n this._activeEffect.setColor4(\"_Edge_Color_\", new Color3(this.edgeColor.r, this.edgeColor.g, this.edgeColor.b), this.edgeColor.a);\r\n //define _Relative_Width_ true;\r\n\r\n // \"Proximity\"\r\n this._activeEffect.setFloat(\"_Proximity_Max_Intensity_\", this.proximityMaxIntensity);\r\n this._activeEffect.setFloat(\"_Proximity_Far_Distance_\", this.proximityFarDistance);\r\n this._activeEffect.setFloat(\"_Proximity_Near_Radius_\", this.proximityNearRadius);\r\n this._activeEffect.setFloat(\"_Proximity_Anisotropy_\", this.proximityAnisotropy);\r\n\r\n // \"Selection\"\r\n this._activeEffect.setFloat(\"_Selection_Fuzz_\", this.selectionFuzz);\r\n this._activeEffect.setFloat(\"_Selected_\", this.selected);\r\n this._activeEffect.setFloat(\"_Selection_Fade_\", this.selectionFade);\r\n this._activeEffect.setFloat(\"_Selection_Fade_Size_\", this.selectionFadeSize);\r\n this._activeEffect.setFloat(\"_Selected_Distance_\", this.selectedDistance);\r\n this._activeEffect.setFloat(\"_Selected_Fade_Length_\", this.selectedFadeLength);\r\n\r\n // \"Blob\"\r\n this._activeEffect.setFloat(\"_Blob_Enable_\", this.leftBlobEnable ? 1.0 : 0.0);\r\n this._activeEffect.setFloat(\"_Blob_Intensity_\", this.blobIntensity);\r\n this._activeEffect.setFloat(\"_Blob_Near_Size_\", this.leftBlobNearSize);\r\n this._activeEffect.setFloat(\"_Blob_Far_Size_\", this.blobFarSize);\r\n this._activeEffect.setFloat(\"_Blob_Near_Distance_\", this.blobNearDistance);\r\n this._activeEffect.setFloat(\"_Blob_Far_Distance_\", this.blobFarDistance);\r\n this._activeEffect.setFloat(\"_Blob_Fade_Length_\", this.blobFadeLength);\r\n this._activeEffect.setFloat(\"_Blob_Inner_Fade_\", this.leftBlobInnerFade);\r\n this._activeEffect.setFloat(\"_Blob_Pulse_\", this.leftBlobPulse);\r\n this._activeEffect.setFloat(\"_Blob_Fade_\", this.leftBlobFade);\r\n\r\n // \"Blob 2\"\r\n this._activeEffect.setFloat(\"_Blob_Enable_2_\", this.rightBlobEnable ? 1.0 : 0.0);\r\n this._activeEffect.setFloat(\"_Blob_Near_Size_2_\", this.rightBlobNearSize);\r\n this._activeEffect.setFloat(\"_Blob_Inner_Fade_2_\", this.rightBlobInnerFade);\r\n this._activeEffect.setFloat(\"_Blob_Pulse_2_\", this.rightBlobPulse);\r\n this._activeEffect.setFloat(\"_Blob_Fade_2_\", this.rightBlobFade);\r\n\r\n // \"Active Face\"\r\n this._activeEffect.setVector3(\"_Active_Face_Dir_\", this.activeFaceDir);\r\n this._activeEffect.setVector3(\"_Active_Face_Up_\", this.activeFaceUp);\r\n\r\n // \"Hololens Edge Fade\"\r\n //define _Enable_Fade_ true;\r\n this._activeEffect.setFloat(\"_Fade_Width_\", this.fadeWidth);\r\n this._activeEffect.setFloat(\"_Smooth_Active_Face_\", this.smoothActiveFace ? 1.0 : 0.0);\r\n\r\n // \"Debug\"\r\n this._activeEffect.setFloat(\"_Show_Frame_\", this.showFrame ? 1.0 : 0.0);\r\n this._activeEffect.setFloat(\"_Use_Blob_Texture_\", this.useBlobTexture ? 1.0 : 0.0);\r\n\r\n // Global inputs\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._activeEffect.setVector4(\r\n \"Global_Left_Index_Tip_Position\",\r\n new Vector4(this.globalLeftIndexTipPosition.x, this.globalLeftIndexTipPosition.y, this.globalLeftIndexTipPosition.z, 1.0)\r\n );\r\n this._activeEffect.setVector4(\r\n \"Global_Right_Index_Tip_Position\",\r\n new Vector4(this.globalRightIndexTipPosition.x, this.globalRightIndexTipPosition.y, this.globalRightIndexTipPosition.z, 1.0)\r\n );\r\n\r\n this._afterBind(mesh, this._activeEffect, subMesh);\r\n }\r\n\r\n /**\r\n * Get the list of animatables in the material.\r\n * @returns the list of animatables object used in the material\r\n */\r\n public override getAnimatables(): IAnimatable[] {\r\n return [];\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): FluentButtonMaterial {\r\n return SerializationHelper.Clone(() => new FluentButtonMaterial(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.FluentButtonMaterial\";\r\n return serializationObject;\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"FluentButtonMaterial\";\r\n }\r\n\r\n // Statics\r\n public static override Parse(source: any, scene: Scene, rootUrl: string): FluentButtonMaterial {\r\n return SerializationHelper.Parse(() => new FluentButtonMaterial(source.name, scene), source, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.GUI.FluentButtonMaterial\", FluentButtonMaterial);\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"handleMaterial.js","sourceRoot":"","sources":["../../../../../../dev/gui/src/3D/materials/handle/handleMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["import { ShaderMaterial } from \"core/Materials/shaderMaterial\";\r\nimport type { Scene } from \"core/scene\";\r\nimport type { Nullable } from \"core/types\";\r\nimport type { Observer } from \"core/Misc/observable\";\r\nimport { Color3, TmpColors } from \"core/Maths/math.color\";\r\nimport { Vector3 } from \"core/Maths/math.vector\";\r\n\r\nimport \"./shaders/handle.vertex\";\r\nimport \"./shaders/handle.fragment\";\r\n\r\n/**\r\n * Class used to render gizmo handles with fluent design\r\n */\r\nexport class HandleMaterial extends ShaderMaterial {\r\n private _hover: boolean = false;\r\n private _drag: boolean = false;\r\n private _onBeforeRender: Nullable<Observer<Scene>>;\r\n private _color: Color3 = new Color3();\r\n private _scale: number = 1;\r\n private _targetColor: Color3;\r\n private _targetScale: number;\r\n private _lastTick = -1;\r\n\r\n /**\r\n * Is the material indicating hovering state\r\n */\r\n public get hover(): boolean {\r\n return this._hover;\r\n }\r\n\r\n public set hover(b: boolean) {\r\n this._hover = b;\r\n\r\n this._updateInterpolationTarget();\r\n }\r\n\r\n /**\r\n * Is the material indicating drag state\r\n */\r\n public get drag(): boolean {\r\n return this._drag;\r\n }\r\n\r\n public set drag(b: boolean) {\r\n this._drag = b;\r\n\r\n this._updateInterpolationTarget();\r\n }\r\n\r\n /**\r\n * Length of animation\r\n */\r\n public animationLength: number = 100;\r\n\r\n /**\r\n * Color of the handle when hovered\r\n */\r\n public hoverColor: Color3 = new Color3(0, 0.467, 0.84);\r\n\r\n /**\r\n * Color of the handle when idle\r\n */\r\n public baseColor: Color3 = new Color3(1, 1, 1);\r\n\r\n /**\r\n * Scale of the handle when hovered\r\n */\r\n public hoverScale: number = 0.75;\r\n\r\n /**\r\n * Scale of the handle when idle\r\n */\r\n public baseScale: number = 0.35;\r\n\r\n /**\r\n * Scale of the handle when dragged\r\n */\r\n public dragScale: number = 0.55;\r\n\r\n /**\r\n * @internal\r\n */\r\n public _positionOffset: Vector3 = Vector3.Zero();\r\n\r\n /**\r\n * Creates a handle material\r\n * @param name Name of the material\r\n * @param scene Scene\r\n */\r\n constructor(name: string, scene: Scene) {\r\n super(name, scene, \"handle\", {\r\n attributes: [\"position\"],\r\n uniforms: [\"worldViewProjection\", \"color\", \"scale\", \"positionOffset\"],\r\n needAlphaBlending: false,\r\n needAlphaTesting: false,\r\n });\r\n\r\n this._updateInterpolationTarget();\r\n\r\n // Register callback for scene after render\r\n this._lastTick = Date.now();\r\n this._onBeforeRender = this.getScene().onBeforeRenderObservable.add(() => {\r\n const tick = Date.now();\r\n const delta = tick - this._lastTick;\r\n\r\n const scaleDiff = this._targetScale - this._scale;\r\n const colorDiff = TmpColors.Color3[0].copyFrom(this._targetColor).subtractToRef(this._color, TmpColors.Color3[0]);\r\n\r\n this._scale = this._scale + (scaleDiff * delta) / this.animationLength;\r\n colorDiff.scaleToRef(delta / this.animationLength, colorDiff);\r\n this._color.addToRef(colorDiff, this._color);\r\n\r\n this.setColor3(\"color\", this._color);\r\n this.setFloat(\"scale\", this._scale);\r\n this.setVector3(\"positionOffset\", this._positionOffset);\r\n\r\n this._lastTick = tick;\r\n });\r\n }\r\n\r\n private _updateInterpolationTarget() {\r\n if (this.drag) {\r\n this._targetColor = this.hoverColor;\r\n this._targetScale = this.dragScale;\r\n } else if (this.hover) {\r\n this._targetColor = this.hoverColor;\r\n this._targetScale = this.hoverScale;\r\n } else {\r\n this._targetColor = this.baseColor;\r\n this._targetScale = this.baseScale;\r\n }\r\n }\r\n\r\n /**\r\n * Disposes the handle material\r\n */\r\n public override dispose() {\r\n super.dispose();\r\n this.getScene().onBeforeRenderObservable.remove(this._onBeforeRender);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"handleMaterial.js","sourceRoot":"","sources":["../../../../../../dev/gui/src/3D/materials/handle/handleMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["import { ShaderMaterial } from \"core/Materials/shaderMaterial\";\r\nimport type { Scene } from \"core/scene\";\r\nimport type { Nullable } from \"core/types\";\r\nimport type { Observer } from \"core/Misc/observable\";\r\nimport { Color3, TmpColors } from \"core/Maths/math.color\";\r\nimport { Vector3 } from \"core/Maths/math.vector\";\r\n\r\nimport \"./shaders/handle.vertex\";\r\nimport \"./shaders/handle.fragment\";\r\n\r\n/**\r\n * Class used to render gizmo handles with fluent design\r\n */\r\nexport class HandleMaterial extends ShaderMaterial {\r\n private _hover: boolean = false;\r\n private _drag: boolean = false;\r\n private _onBeforeRender: Nullable<Observer<Scene>>;\r\n private _color: Color3 = new Color3();\r\n private _scale: number = 1;\r\n private _targetColor: Color3;\r\n private _targetScale: number;\r\n private _lastTick = -1;\r\n\r\n /**\r\n * Is the material indicating hovering state\r\n */\r\n public get hover(): boolean {\r\n return this._hover;\r\n }\r\n\r\n public set hover(b: boolean) {\r\n this._hover = b;\r\n\r\n this._updateInterpolationTarget();\r\n }\r\n\r\n /**\r\n * Is the material indicating drag state\r\n */\r\n public get drag(): boolean {\r\n return this._drag;\r\n }\r\n\r\n public set drag(b: boolean) {\r\n this._drag = b;\r\n\r\n this._updateInterpolationTarget();\r\n }\r\n\r\n /**\r\n * Length of animation\r\n */\r\n public animationLength: number = 100;\r\n\r\n /**\r\n * Color of the handle when hovered\r\n */\r\n public hoverColor: Color3 = new Color3(0, 0.467, 0.84);\r\n\r\n /**\r\n * Color of the handle when idle\r\n */\r\n public baseColor: Color3 = new Color3(1, 1, 1);\r\n\r\n /**\r\n * Scale of the handle when hovered\r\n */\r\n public hoverScale: number = 0.75;\r\n\r\n /**\r\n * Scale of the handle when idle\r\n */\r\n public baseScale: number = 0.35;\r\n\r\n /**\r\n * Scale of the handle when dragged\r\n */\r\n public dragScale: number = 0.55;\r\n\r\n /**\r\n * @internal\r\n */\r\n public _positionOffset: Vector3 = Vector3.Zero();\r\n\r\n /**\r\n * Creates a handle material\r\n * @param name Name of the material\r\n * @param scene Scene\r\n */\r\n constructor(name: string, scene: Scene) {\r\n super(name, scene, \"handle\", {\r\n attributes: [\"position\"],\r\n uniforms: [\"worldViewProjection\", \"color\", \"scale\", \"positionOffset\"],\r\n needAlphaBlending: false,\r\n needAlphaTesting: false,\r\n });\r\n\r\n this._updateInterpolationTarget();\r\n\r\n // Register callback for scene after render\r\n this._lastTick = Date.now();\r\n this._onBeforeRender = this.getScene().onBeforeRenderObservable.add(() => {\r\n const tick = Date.now();\r\n const delta = tick - this._lastTick;\r\n\r\n const scaleDiff = this._targetScale - this._scale;\r\n const colorDiff = TmpColors.Color3[0].copyFrom(this._targetColor).subtractToRef(this._color, TmpColors.Color3[0]);\r\n\r\n this._scale = this._scale + (scaleDiff * delta) / this.animationLength;\r\n colorDiff.scaleToRef(delta / this.animationLength, colorDiff);\r\n this._color.addToRef(colorDiff, this._color);\r\n\r\n this.setColor3(\"color\", this._color);\r\n this.setFloat(\"scale\", this._scale);\r\n this.setVector3(\"positionOffset\", this._positionOffset);\r\n\r\n this._lastTick = tick;\r\n });\r\n }\r\n\r\n private _updateInterpolationTarget() {\r\n if (this.drag) {\r\n this._targetColor = this.hoverColor;\r\n this._targetScale = this.dragScale;\r\n } else if (this.hover) {\r\n this._targetColor = this.hoverColor;\r\n this._targetScale = this.hoverScale;\r\n } else {\r\n this._targetColor = this.baseColor;\r\n this._targetScale = this.baseScale;\r\n }\r\n }\r\n\r\n /**\r\n * Disposes the handle material\r\n */\r\n public override dispose() {\r\n super.dispose();\r\n this.getScene().onBeforeRenderObservable.remove(this._onBeforeRender);\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"mrdlBackglowMaterial.js","sourceRoot":"","sources":["../../../../../../dev/gui/src/3D/materials/mrdl/mrdlBackglowMaterial.ts"],"names":[],"mappings":";AAUA,OAAO,EAAE,MAAM,EAAE,4CAA8B;AAC/C,OAAO,EAAE,SAAS,EAAE,6CAA+B;AACnD,OAAO,EAAE,eAAe,EAAE,qDAAuC;AACjE,OAAO,EAAE,eAAe,EAAE,qDAAuC;AACjE,OAAO,EAAE,YAAY,EAAE,kDAAoC;AAC3D,OAAO,EAAE,aAAa,EAAE,0CAA4B;AACpD,OAAO,EAAE,SAAS,EAAE,2CAA6B;AACjD,OAAO,EAAE,mBAAmB,EAAE,yDAA2C;AACzE,OAAO,EAAE,YAAY,EAAE,0CAA4B;AAEnD,OAAO,iCAAiC,CAAC;AACzC,OAAO,+BAA+B,CAAC;AACvC,OAAO,EAAE,yBAAyB,EAAE,6BAA6B,EAAE,2BAA2B,EAAE,8BAA8B,EAAE,8DAAgD;AAEhL,cAAc;AACd,MAAM,2BAA4B,SAAQ,eAAe;IACrD;QACI,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;CACJ;AAED,MAAM,OAAO,oBAAqB,SAAQ,YAAY;IAsFlD,YAAY,IAAY,EAAE,KAAY;QAClC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAtFvB;;WAEG;QAEI,gBAAW,GAAG,IAAI,CAAC;QAE1B;;WAEG;QAEI,cAAS,GAAG,IAAI,CAAC;QAExB;;;WAGG;QAEI,kBAAa,GAAG,KAAK,CAAC;QAE7B;;WAEG;QAEI,iBAAY,GAAG,GAAG,CAAC;QAE1B;;WAEG;QAEI,WAAM,GAAG,GAAG,CAAC;QAEpB;;WAEG;QAEI,iBAAY,GAAG,GAAG,CAAC;QAE1B;;WAEG;QAEI,4BAAuB,GAAG,GAAG,CAAC;QAErC;;WAEG;QAEI,mBAAc,GAAG,IAAI,CAAC;QAE7B;;WAEG;QAEI,iBAAY,GAAG,IAAI,CAAC;QAE3B;;WAEG;QAEI,UAAK,GAAW,IAAI,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAE5D;;WAEG;QAEI,eAAU,GAAW,IAAI,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAExE;;WAEG;QAEI,kBAAa,GAAG,GAAG,CAAC;QAE3B;;WAEG;QAEI,YAAO,GAAG,GAAG,CAAC;QAErB;;WAEG;QAEI,SAAI,GAAG,GAAG,CAAC;QAId,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IACjC,CAAC;IAEe,iBAAiB;QAC7B,OAAO,IAAI,CAAC;IAChB,CAAC;IAEe,gBAAgB;QAC5B,OAAO,KAAK,CAAC;IACjB,CAAC;IAEe,mBAAmB;QAC/B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,UAAU;IACM,iBAAiB,CAAC,IAAkB,EAAE,OAAgB;QAClE,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;QAEzC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,mBAAmB,EAAE;gBACvD,OAAO,IAAI,CAAC;aACf;SACJ;QAED,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;YAC1B,OAAO,CAAC,eAAe,GAAG,IAAI,2BAA2B,EAAE,CAAC;SAC/D;QAED,MAAM,OAAO,GAAgC,OAAO,CAAC,eAAe,CAAC;QACrE,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAE9B,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE;YAClC,OAAO,IAAI,CAAC;SACf;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAEjC,UAAU;QACV,2BAA2B,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAEzD,qBAAqB;QACrB,IAAI,OAAO,CAAC,OAAO,EAAE;YACjB,OAAO,CAAC,eAAe,EAAE,CAAC;YAE1B,KAAK,CAAC,mBAAmB,EAAE,CAAC;YAE5B,YAAY;YACZ,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;YACxC,IAAI,OAAO,CAAC,GAAG,EAAE;gBACb,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;aACnC;YAED,yBAAyB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAE9C,OAAO,CAAC,0BAA0B,GAAG,KAAK,CAAC,4BAA4B,CAAC,kBAAkB,CAAC;YAE3F,YAAY;YACZ,MAAM,OAAO,GAAG,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YAE5C,IAAI,OAAO,CAAC,MAAM,EAAE;gBAChB,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;aACzC;YAED,IAAI,OAAO,CAAC,GAAG,EAAE;gBACb,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;aACrC;YAED,IAAI,OAAO,CAAC,GAAG,EAAE;gBACb,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;aACtC;YAED,IAAI,OAAO,CAAC,WAAW,EAAE;gBACrB,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;aACxC;YAED,IAAI,OAAO,CAAC,OAAO,EAAE;gBACjB,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;aAC1C;YAED,6BAA6B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAEhD,uBAAuB;YACvB,MAAM,UAAU,GAAG,cAAc,CAAC;YAClC,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YAEhC,MAAM,QAAQ,GAAG;gBACb,OAAO;gBACP,WAAW;gBACX,qBAAqB;gBACrB,MAAM;gBACN,YAAY;gBACZ,gBAAgB;gBAChB,gBAAgB;gBAChB,gBAAgB;gBAChB,cAAc;gBACd,kBAAkB;gBAClB,iBAAiB;gBACjB,UAAU;gBACV,iBAAiB;gBACjB,8BAA8B;gBAC9B,oBAAoB;gBACpB,kBAAkB;gBAClB,SAAS;gBACT,eAAe;gBACf,kBAAkB;gBAClB,WAAW;gBACX,QAAQ;aACX,CAAC;YACF,MAAM,QAAQ,GAAa,EAAE,CAAC;YAC9B,MAAM,cAAc,GAAa,EAAE,CAAC;YAEpC,8BAA8B,CAAyB;gBACnD,aAAa,EAAE,QAAQ;gBACvB,mBAAmB,EAAE,cAAc;gBACnC,QAAQ,EAAE,QAAQ;gBAClB,OAAO,EAAE,OAAO;gBAChB,qBAAqB,EAAE,CAAC;aAC3B,CAAC,CAAC;YAEH,OAAO,CAAC,SAAS,CACb,KAAK,CAAC,SAAS,EAAE,CAAC,YAAY,CAC1B,UAAU,EACc;gBACpB,UAAU,EAAE,OAAO;gBACnB,aAAa,EAAE,QAAQ;gBACvB,mBAAmB,EAAE,cAAc;gBACnC,QAAQ,EAAE,QAAQ;gBAClB,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,SAAS;gBACpB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,eAAe,EAAE,EAAE,qBAAqB,EAAE,CAAC,EAAE;aAChD,EACD,MAAM,CACT,EACD,OAAO,CACV,CAAC;SACL;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE;YAC9C,OAAO,KAAK,CAAC;SAChB;QAED,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACxC,WAAW,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAEvC,OAAO,IAAI,CAAC;IAChB,CAAC;IAEe,cAAc,CAAC,KAAa,EAAE,IAAU,EAAE,OAAgB;QACtE,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAE9B,MAAM,OAAO,GAAgC,OAAO,CAAC,eAAe,CAAC;QACrE,IAAI,CAAC,OAAO,EAAE;YACV,OAAO;SACV;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,EAAE;YACT,OAAO;SACV;QAED,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAE5B,WAAW;QACX,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,gBAAgB,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAC3E,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,gBAAgB,EAAE,KAAK,CAAC,YAAa,CAAC,QAAQ,CAAC,CAAC;QAE9E,sBAAsB;QACtB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAChE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5D,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,kBAAkB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAEhF,cAAc;QACd,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,iBAAiB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAClE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,iBAAiB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAClE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,8BAA8B,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC1F,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,oBAAoB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACvE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,kBAAkB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAEnE,UAAU;QACV,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACrE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,kBAAkB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAEpE,qBAAqB;QACrB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAEjD,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IAED;;;OAGG;IACa,cAAc;QAC1B,OAAO,EAAE,CAAC;IACd,CAAC;IAEe,OAAO,CAAC,kBAA4B;QAChD,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;IAEe,KAAK,CAAC,IAAY;QAC9B,OAAO,mBAAmB,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IAClG,CAAC;IAEe,SAAS;QACrB,MAAM,mBAAmB,GAAG,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAChE,mBAAmB,CAAC,UAAU,GAAG,8BAA8B,CAAC;QAChE,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAEe,YAAY;QACxB,OAAO,sBAAsB,CAAC;IAClC,CAAC;IAED,UAAU;IACH,MAAM,CAAU,KAAK,CAAC,MAAW,EAAE,KAAY,EAAE,OAAe;QACnE,OAAO,mBAAmB,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,oBAAoB,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACjH,CAAC;CACJ;AArTU;IADN,SAAS,EAAE;yDACc;AAMnB;IADN,SAAS,EAAE;uDACY;AAOjB;IADN,SAAS,EAAE;2DACiB;AAMtB;IADN,SAAS,EAAE;0DACc;AAMnB;IADN,SAAS,EAAE;oDACQ;AAMb;IADN,SAAS,EAAE;0DACc;AAMnB;IADN,SAAS,EAAE;qEACyB;AAM9B;IADN,SAAS,EAAE;4DACiB;AAMtB;IADN,SAAS,EAAE;0DACe;AAMpB;IADN,SAAS,EAAE;mDACgD;AAMrD;IADN,SAAS,EAAE;wDAC4D;AAMjE;IADN,SAAS,EAAE;2DACe;AAMpB;IADN,SAAS,EAAE;qDACS;AAMd;IADN,SAAS,EAAE;kDACM;AAwOtB,aAAa,CAAC,kCAAkC,EAAE,oBAAoB,CAAC,CAAC","sourcesContent":["import type { AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport type { BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\nimport type { IAnimatable } from \"core/Animations/animatable.interface\";\r\nimport type { IEffectCreationOptions } from \"core/Materials/effect\";\r\nimport type { Matrix } from \"core/Maths/math.vector\";\r\nimport type { Mesh } from \"core/Meshes/mesh\";\r\nimport type { Nullable } from \"core/types\";\r\nimport type { Scene } from \"core/scene\";\r\nimport type { SubMesh } from \"core/Meshes/subMesh\";\r\n\r\nimport { Color4 } from \"core/Maths/math.color\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { EffectFallbacks } from \"core/Materials/effectFallbacks\";\r\nimport { MaterialDefines } from \"core/Materials/materialDefines\";\r\nimport { PushMaterial } from \"core/Materials/pushMaterial\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { serialize } from \"core/Misc/decorators\";\r\nimport { SerializationHelper } from \"core/Misc/decorators.serialization\";\r\nimport { VertexBuffer } from \"core/Buffers/buffer\";\r\n\r\nimport \"./shaders/mrdlBackglow.fragment\";\r\nimport \"./shaders/mrdlBackglow.vertex\";\r\nimport { HandleFallbacksForShadows, PrepareAttributesForInstances, PrepareDefinesForAttributes, PrepareUniformsAndSamplersList } from \"core/Materials/materialHelper.functions\";\r\n\r\n/** @hidden */\r\nclass MRDLBackglowMaterialDefines extends MaterialDefines {\r\n constructor() {\r\n super();\r\n this._needNormals = true;\r\n this._needUVs = true;\r\n this.rebuild();\r\n }\r\n}\r\n\r\nexport class MRDLBackglowMaterial extends PushMaterial {\r\n /**\r\n * Gets or sets the bevel radius on the backglow. If this value is changed, update the lineWidth to match.\r\n */\r\n @serialize()\r\n public bevelRadius = 0.16;\r\n\r\n /**\r\n * Gets or sets the line width of the backglow.\r\n */\r\n @serialize()\r\n public lineWidth = 0.16;\r\n\r\n /**\r\n * Gets or sets whether to use absolute sizes when calculating effects on the backglow.\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 /**\r\n * Gets or sets the tuning motion of the backglow.\r\n */\r\n @serialize()\r\n public tuningMotion = 0.0;\r\n\r\n /**\r\n * Gets or sets the motion of the backglow.\r\n */\r\n @serialize()\r\n public motion = 1.0;\r\n\r\n /**\r\n * Gets or sets the maximum intensity of the backglow.\r\n */\r\n @serialize()\r\n public maxIntensity = 0.7;\r\n\r\n /**\r\n * Gets or sets the fade-in exponent of the intensity of the backglow.\r\n */\r\n @serialize()\r\n public intensityFadeInExponent = 2.0;\r\n\r\n /**\r\n * Gets or sets the start of the outer fuzz effect on the backglow.\r\n */\r\n @serialize()\r\n public outerFuzzStart = 0.04;\r\n\r\n /**\r\n * Gets or sets the end of the outer fuzz effect on the backglow.\r\n */\r\n @serialize()\r\n public outerFuzzEnd = 0.04;\r\n\r\n /**\r\n * Gets or sets the color of the backglow.\r\n */\r\n @serialize()\r\n public color: Color4 = new Color4(0.682353, 0.698039, 1, 1);\r\n\r\n /**\r\n * Gets or sets the inner color of the backglow.\r\n */\r\n @serialize()\r\n public innerColor: Color4 = new Color4(0.356863, 0.392157, 0.796078, 1);\r\n\r\n /**\r\n * Gets or sets the blend exponent of the backglow.\r\n */\r\n @serialize()\r\n public blendExponent = 1.5;\r\n\r\n /**\r\n * Gets or sets the falloff of the backglow.\r\n */\r\n @serialize()\r\n public falloff = 2.0;\r\n\r\n /**\r\n * Gets or sets the bias of the backglow.\r\n */\r\n @serialize()\r\n public bias = 0.5;\r\n\r\n constructor(name: string, scene: Scene) {\r\n super(name, scene);\r\n this.alphaMode = Constants.ALPHA_ADD;\r\n this.disableDepthWrite = true;\r\n this.backFaceCulling = false;\r\n }\r\n\r\n public override needAlphaBlending(): boolean {\r\n return true;\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 // Methods\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 MRDLBackglowMaterialDefines();\r\n }\r\n\r\n const defines = <MRDLBackglowMaterialDefines>subMesh.materialDefines;\r\n const scene = this.getScene();\r\n\r\n if (this._isReadyForSubMesh(subMesh)) {\r\n return true;\r\n }\r\n\r\n const engine = scene.getEngine();\r\n\r\n // Attribs\r\n PrepareDefinesForAttributes(mesh, defines, false, false);\r\n\r\n // Get correct effect\r\n if (defines.isDirty) {\r\n defines.markAsProcessed();\r\n\r\n scene.resetCachedMaterial();\r\n\r\n // Fallbacks\r\n const fallbacks = new EffectFallbacks();\r\n if (defines.FOG) {\r\n fallbacks.addFallback(1, \"FOG\");\r\n }\r\n\r\n HandleFallbacksForShadows(defines, fallbacks);\r\n\r\n defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;\r\n\r\n //Attributes\r\n const attribs = [VertexBuffer.PositionKind];\r\n\r\n if (defines.NORMAL) {\r\n attribs.push(VertexBuffer.NormalKind);\r\n }\r\n\r\n if (defines.UV1) {\r\n attribs.push(VertexBuffer.UVKind);\r\n }\r\n\r\n if (defines.UV2) {\r\n attribs.push(VertexBuffer.UV2Kind);\r\n }\r\n\r\n if (defines.VERTEXCOLOR) {\r\n attribs.push(VertexBuffer.ColorKind);\r\n }\r\n\r\n if (defines.TANGENT) {\r\n attribs.push(VertexBuffer.TangentKind);\r\n }\r\n\r\n PrepareAttributesForInstances(attribs, defines);\r\n\r\n // Legacy browser patch\r\n const shaderName = \"mrdlBackglow\";\r\n const join = defines.toString();\r\n\r\n const uniforms = [\r\n \"world\",\r\n \"worldView\",\r\n \"worldViewProjection\",\r\n \"view\",\r\n \"projection\",\r\n \"viewProjection\",\r\n \"cameraPosition\",\r\n \"_Bevel_Radius_\",\r\n \"_Line_Width_\",\r\n \"_Absolute_Sizes_\",\r\n \"_Tuning_Motion_\",\r\n \"_Motion_\",\r\n \"_Max_Intensity_\",\r\n \"_Intensity_Fade_In_Exponent_\",\r\n \"_Outer_Fuzz_Start_\",\r\n \"_Outer_Fuzz_End_\",\r\n \"_Color_\",\r\n \"_Inner_Color_\",\r\n \"_Blend_Exponent_\",\r\n \"_Falloff_\",\r\n \"_Bias_\",\r\n ];\r\n const samplers: string[] = [];\r\n const uniformBuffers: string[] = [];\r\n\r\n PrepareUniformsAndSamplersList(<IEffectCreationOptions>{\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: defines,\r\n maxSimultaneousLights: 4,\r\n });\r\n\r\n subMesh.setEffect(\r\n scene.getEngine().createEffect(\r\n shaderName,\r\n <IEffectCreationOptions>{\r\n attributes: attribs,\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: join,\r\n fallbacks: fallbacks,\r\n onCompiled: this.onCompiled,\r\n onError: this.onError,\r\n indexParameters: { maxSimultaneousLights: 4 },\r\n },\r\n engine\r\n ),\r\n defines\r\n );\r\n }\r\n if (!subMesh.effect || !subMesh.effect.isReady()) {\r\n return false;\r\n }\r\n\r\n defines._renderId = scene.getRenderId();\r\n drawWrapper._wasPreviouslyReady = true;\r\n\r\n return true;\r\n }\r\n\r\n public override bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void {\r\n const scene = this.getScene();\r\n\r\n const defines = <MRDLBackglowMaterialDefines>subMesh.materialDefines;\r\n if (!defines) {\r\n return;\r\n }\r\n\r\n const effect = subMesh.effect;\r\n if (!effect) {\r\n return;\r\n }\r\n\r\n this._activeEffect = effect;\r\n\r\n // Matrices\r\n this.bindOnlyWorldMatrix(world);\r\n this._activeEffect.setMatrix(\"viewProjection\", scene.getTransformMatrix());\r\n this._activeEffect.setVector3(\"cameraPosition\", scene.activeCamera!.position);\r\n\r\n // \"Rounded Rectangle\"\r\n this._activeEffect.setFloat(\"_Bevel_Radius_\", this.bevelRadius);\r\n this._activeEffect.setFloat(\"_Line_Width_\", this.lineWidth);\r\n this._activeEffect.setFloat(\"_Absolute_Sizes_\", this.absoluteSizes ? 1.0 : 0.0);\r\n\r\n // \"Animation\"\r\n this._activeEffect.setFloat(\"_Tuning_Motion_\", this.tuningMotion);\r\n this._activeEffect.setFloat(\"_Motion_\", this.motion);\r\n this._activeEffect.setFloat(\"_Max_Intensity_\", this.maxIntensity);\r\n this._activeEffect.setFloat(\"_Intensity_Fade_In_Exponent_\", this.intensityFadeInExponent);\r\n this._activeEffect.setFloat(\"_Outer_Fuzz_Start_\", this.outerFuzzStart);\r\n this._activeEffect.setFloat(\"_Outer_Fuzz_End_\", this.outerFuzzEnd);\r\n\r\n // \"Color\"\r\n this._activeEffect.setDirectColor4(\"_Color_\", this.color);\r\n this._activeEffect.setDirectColor4(\"_Inner_Color_\", this.innerColor);\r\n this._activeEffect.setFloat(\"_Blend_Exponent_\", this.blendExponent);\r\n\r\n // \"Inner Transition\"\r\n this._activeEffect.setFloat(\"_Falloff_\", this.falloff);\r\n this._activeEffect.setFloat(\"_Bias_\", this.bias);\r\n\r\n this._afterBind(mesh, this._activeEffect, subMesh);\r\n }\r\n\r\n /**\r\n * Get the list of animatables in the material.\r\n * @returns the list of animatables object used in the material\r\n */\r\n public override getAnimatables(): IAnimatable[] {\r\n return [];\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): MRDLBackglowMaterial {\r\n return SerializationHelper.Clone(() => new MRDLBackglowMaterial(name, this.getScene()), this);\r\n }\r\n\r\n public override serialize(): unknown {\r\n const serializationObject = SerializationHelper.Serialize(this);\r\n serializationObject.customType = \"BABYLON.MRDLBackglowMaterial\";\r\n return serializationObject;\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"MRDLBackglowMaterial\";\r\n }\r\n\r\n // Statics\r\n public static override Parse(source: any, scene: Scene, rootUrl: string): MRDLBackglowMaterial {\r\n return SerializationHelper.Parse(() => new MRDLBackglowMaterial(source.name, scene), source, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.GUI.MRDLBackglowMaterial\", MRDLBackglowMaterial);\r\n"]}
1
+ {"version":3,"file":"mrdlBackglowMaterial.js","sourceRoot":"","sources":["../../../../../../dev/gui/src/3D/materials/mrdl/mrdlBackglowMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport type { BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\nimport type { IAnimatable } from \"core/Animations/animatable.interface\";\r\nimport type { IEffectCreationOptions } from \"core/Materials/effect\";\r\nimport type { Matrix } from \"core/Maths/math.vector\";\r\nimport type { Mesh } from \"core/Meshes/mesh\";\r\nimport type { Nullable } from \"core/types\";\r\nimport type { Scene } from \"core/scene\";\r\nimport type { SubMesh } from \"core/Meshes/subMesh\";\r\n\r\nimport { Color4 } from \"core/Maths/math.color\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { EffectFallbacks } from \"core/Materials/effectFallbacks\";\r\nimport { MaterialDefines } from \"core/Materials/materialDefines\";\r\nimport { PushMaterial } from \"core/Materials/pushMaterial\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { serialize } from \"core/Misc/decorators\";\r\nimport { SerializationHelper } from \"core/Misc/decorators.serialization\";\r\nimport { VertexBuffer } from \"core/Buffers/buffer\";\r\n\r\nimport \"./shaders/mrdlBackglow.fragment\";\r\nimport \"./shaders/mrdlBackglow.vertex\";\r\nimport { HandleFallbacksForShadows, PrepareAttributesForInstances, PrepareDefinesForAttributes, PrepareUniformsAndSamplersList } from \"core/Materials/materialHelper.functions\";\r\n\r\n/** @hidden */\r\nclass MRDLBackglowMaterialDefines extends MaterialDefines {\r\n constructor() {\r\n super();\r\n this._needNormals = true;\r\n this._needUVs = true;\r\n this.rebuild();\r\n }\r\n}\r\n\r\nexport class MRDLBackglowMaterial extends PushMaterial {\r\n /**\r\n * Gets or sets the bevel radius on the backglow. If this value is changed, update the lineWidth to match.\r\n */\r\n @serialize()\r\n public bevelRadius = 0.16;\r\n\r\n /**\r\n * Gets or sets the line width of the backglow.\r\n */\r\n @serialize()\r\n public lineWidth = 0.16;\r\n\r\n /**\r\n * Gets or sets whether to use absolute sizes when calculating effects on the backglow.\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 /**\r\n * Gets or sets the tuning motion of the backglow.\r\n */\r\n @serialize()\r\n public tuningMotion = 0.0;\r\n\r\n /**\r\n * Gets or sets the motion of the backglow.\r\n */\r\n @serialize()\r\n public motion = 1.0;\r\n\r\n /**\r\n * Gets or sets the maximum intensity of the backglow.\r\n */\r\n @serialize()\r\n public maxIntensity = 0.7;\r\n\r\n /**\r\n * Gets or sets the fade-in exponent of the intensity of the backglow.\r\n */\r\n @serialize()\r\n public intensityFadeInExponent = 2.0;\r\n\r\n /**\r\n * Gets or sets the start of the outer fuzz effect on the backglow.\r\n */\r\n @serialize()\r\n public outerFuzzStart = 0.04;\r\n\r\n /**\r\n * Gets or sets the end of the outer fuzz effect on the backglow.\r\n */\r\n @serialize()\r\n public outerFuzzEnd = 0.04;\r\n\r\n /**\r\n * Gets or sets the color of the backglow.\r\n */\r\n @serialize()\r\n public color: Color4 = new Color4(0.682353, 0.698039, 1, 1);\r\n\r\n /**\r\n * Gets or sets the inner color of the backglow.\r\n */\r\n @serialize()\r\n public innerColor: Color4 = new Color4(0.356863, 0.392157, 0.796078, 1);\r\n\r\n /**\r\n * Gets or sets the blend exponent of the backglow.\r\n */\r\n @serialize()\r\n public blendExponent = 1.5;\r\n\r\n /**\r\n * Gets or sets the falloff of the backglow.\r\n */\r\n @serialize()\r\n public falloff = 2.0;\r\n\r\n /**\r\n * Gets or sets the bias of the backglow.\r\n */\r\n @serialize()\r\n public bias = 0.5;\r\n\r\n constructor(name: string, scene: Scene) {\r\n super(name, scene);\r\n this.alphaMode = Constants.ALPHA_ADD;\r\n this.disableDepthWrite = true;\r\n this.backFaceCulling = false;\r\n }\r\n\r\n public override needAlphaBlending(): boolean {\r\n return true;\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 // Methods\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 MRDLBackglowMaterialDefines();\r\n }\r\n\r\n const defines = <MRDLBackglowMaterialDefines>subMesh.materialDefines;\r\n const scene = this.getScene();\r\n\r\n if (this._isReadyForSubMesh(subMesh)) {\r\n return true;\r\n }\r\n\r\n const engine = scene.getEngine();\r\n\r\n // Attribs\r\n PrepareDefinesForAttributes(mesh, defines, false, false);\r\n\r\n // Get correct effect\r\n if (defines.isDirty) {\r\n defines.markAsProcessed();\r\n\r\n scene.resetCachedMaterial();\r\n\r\n // Fallbacks\r\n const fallbacks = new EffectFallbacks();\r\n if (defines.FOG) {\r\n fallbacks.addFallback(1, \"FOG\");\r\n }\r\n\r\n HandleFallbacksForShadows(defines, fallbacks);\r\n\r\n defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;\r\n\r\n //Attributes\r\n const attribs = [VertexBuffer.PositionKind];\r\n\r\n if (defines.NORMAL) {\r\n attribs.push(VertexBuffer.NormalKind);\r\n }\r\n\r\n if (defines.UV1) {\r\n attribs.push(VertexBuffer.UVKind);\r\n }\r\n\r\n if (defines.UV2) {\r\n attribs.push(VertexBuffer.UV2Kind);\r\n }\r\n\r\n if (defines.VERTEXCOLOR) {\r\n attribs.push(VertexBuffer.ColorKind);\r\n }\r\n\r\n if (defines.TANGENT) {\r\n attribs.push(VertexBuffer.TangentKind);\r\n }\r\n\r\n PrepareAttributesForInstances(attribs, defines);\r\n\r\n // Legacy browser patch\r\n const shaderName = \"mrdlBackglow\";\r\n const join = defines.toString();\r\n\r\n const uniforms = [\r\n \"world\",\r\n \"worldView\",\r\n \"worldViewProjection\",\r\n \"view\",\r\n \"projection\",\r\n \"viewProjection\",\r\n \"cameraPosition\",\r\n \"_Bevel_Radius_\",\r\n \"_Line_Width_\",\r\n \"_Absolute_Sizes_\",\r\n \"_Tuning_Motion_\",\r\n \"_Motion_\",\r\n \"_Max_Intensity_\",\r\n \"_Intensity_Fade_In_Exponent_\",\r\n \"_Outer_Fuzz_Start_\",\r\n \"_Outer_Fuzz_End_\",\r\n \"_Color_\",\r\n \"_Inner_Color_\",\r\n \"_Blend_Exponent_\",\r\n \"_Falloff_\",\r\n \"_Bias_\",\r\n ];\r\n const samplers: string[] = [];\r\n const uniformBuffers: string[] = [];\r\n\r\n PrepareUniformsAndSamplersList(<IEffectCreationOptions>{\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: defines,\r\n maxSimultaneousLights: 4,\r\n });\r\n\r\n subMesh.setEffect(\r\n scene.getEngine().createEffect(\r\n shaderName,\r\n <IEffectCreationOptions>{\r\n attributes: attribs,\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: join,\r\n fallbacks: fallbacks,\r\n onCompiled: this.onCompiled,\r\n onError: this.onError,\r\n indexParameters: { maxSimultaneousLights: 4 },\r\n },\r\n engine\r\n ),\r\n defines\r\n );\r\n }\r\n if (!subMesh.effect || !subMesh.effect.isReady()) {\r\n return false;\r\n }\r\n\r\n defines._renderId = scene.getRenderId();\r\n drawWrapper._wasPreviouslyReady = true;\r\n\r\n return true;\r\n }\r\n\r\n public override bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void {\r\n const scene = this.getScene();\r\n\r\n const defines = <MRDLBackglowMaterialDefines>subMesh.materialDefines;\r\n if (!defines) {\r\n return;\r\n }\r\n\r\n const effect = subMesh.effect;\r\n if (!effect) {\r\n return;\r\n }\r\n\r\n this._activeEffect = effect;\r\n\r\n // Matrices\r\n this.bindOnlyWorldMatrix(world);\r\n this._activeEffect.setMatrix(\"viewProjection\", scene.getTransformMatrix());\r\n this._activeEffect.setVector3(\"cameraPosition\", scene.activeCamera!.position);\r\n\r\n // \"Rounded Rectangle\"\r\n this._activeEffect.setFloat(\"_Bevel_Radius_\", this.bevelRadius);\r\n this._activeEffect.setFloat(\"_Line_Width_\", this.lineWidth);\r\n this._activeEffect.setFloat(\"_Absolute_Sizes_\", this.absoluteSizes ? 1.0 : 0.0);\r\n\r\n // \"Animation\"\r\n this._activeEffect.setFloat(\"_Tuning_Motion_\", this.tuningMotion);\r\n this._activeEffect.setFloat(\"_Motion_\", this.motion);\r\n this._activeEffect.setFloat(\"_Max_Intensity_\", this.maxIntensity);\r\n this._activeEffect.setFloat(\"_Intensity_Fade_In_Exponent_\", this.intensityFadeInExponent);\r\n this._activeEffect.setFloat(\"_Outer_Fuzz_Start_\", this.outerFuzzStart);\r\n this._activeEffect.setFloat(\"_Outer_Fuzz_End_\", this.outerFuzzEnd);\r\n\r\n // \"Color\"\r\n this._activeEffect.setDirectColor4(\"_Color_\", this.color);\r\n this._activeEffect.setDirectColor4(\"_Inner_Color_\", this.innerColor);\r\n this._activeEffect.setFloat(\"_Blend_Exponent_\", this.blendExponent);\r\n\r\n // \"Inner Transition\"\r\n this._activeEffect.setFloat(\"_Falloff_\", this.falloff);\r\n this._activeEffect.setFloat(\"_Bias_\", this.bias);\r\n\r\n this._afterBind(mesh, this._activeEffect, subMesh);\r\n }\r\n\r\n /**\r\n * Get the list of animatables in the material.\r\n * @returns the list of animatables object used in the material\r\n */\r\n public override getAnimatables(): IAnimatable[] {\r\n return [];\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): MRDLBackglowMaterial {\r\n return SerializationHelper.Clone(() => new MRDLBackglowMaterial(name, this.getScene()), this);\r\n }\r\n\r\n public override serialize(): unknown {\r\n const serializationObject = SerializationHelper.Serialize(this);\r\n serializationObject.customType = \"BABYLON.MRDLBackglowMaterial\";\r\n return serializationObject;\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"MRDLBackglowMaterial\";\r\n }\r\n\r\n // Statics\r\n public static override Parse(source: any, scene: Scene, rootUrl: string): MRDLBackglowMaterial {\r\n return SerializationHelper.Parse(() => new MRDLBackglowMaterial(source.name, scene), source, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.GUI.MRDLBackglowMaterial\", MRDLBackglowMaterial);\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"mrdlBackplateMaterial.js","sourceRoot":"","sources":["../../../../../../dev/gui/src/3D/materials/mrdl/mrdlBackplateMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport type { Nullable } from \"core/types\";\r\nimport { serialize } from \"core/Misc/decorators\";\r\nimport { SerializationHelper } from \"core/Misc/decorators.serialization\";\r\nimport type { Matrix } from \"core/Maths/math.vector\";\r\nimport { Vector4 } from \"core/Maths/math.vector\";\r\nimport type { IAnimatable } from \"core/Animations/animatable.interface\";\r\nimport type { BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\nimport { Texture } from \"core/Materials/Textures/texture\";\r\nimport { MaterialDefines } from \"core/Materials/materialDefines\";\r\nimport type { IEffectCreationOptions } from \"core/Materials/effect\";\r\nimport { PushMaterial } from \"core/Materials/pushMaterial\";\r\nimport { VertexBuffer } from \"core/Buffers/buffer\";\r\nimport type { AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport type { SubMesh } from \"core/Meshes/subMesh\";\r\nimport type { Mesh } from \"core/Meshes/mesh\";\r\nimport type { Scene } from \"core/scene\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { Color4 } from \"core/Maths/math.color\";\r\nimport { EffectFallbacks } from \"core/Materials/effectFallbacks\";\r\nimport { Constants } from \"core/Engines/constants\";\r\n\r\nimport \"./shaders/mrdlBackplate.fragment\";\r\nimport \"./shaders/mrdlBackplate.vertex\";\r\nimport { HandleFallbacksForShadows, PrepareAttributesForInstances, PrepareDefinesForAttributes, PrepareUniformsAndSamplersList } from \"core/Materials/materialHelper.functions\";\r\n\r\n/** @internal */\r\nclass MRDLBackplateMaterialDefines extends MaterialDefines {\r\n /*\r\n \"IRIDESCENCE_ENABLE\", \"SMOOTH_EDGES\"\r\n */\r\n public IRIDESCENCE_ENABLE = true;\r\n public SMOOTH_EDGES = true;\r\n\r\n constructor() {\r\n super();\r\n this._needNormals = true;\r\n this.rebuild();\r\n }\r\n}\r\n\r\n/**\r\n * Class used to render backplate material with MRDL\r\n */\r\nexport class MRDLBackplateMaterial extends PushMaterial {\r\n /**\r\n * URL pointing to the texture used to define the coloring for the Iridescent Map effect.\r\n */\r\n public static IRIDESCENT_MAP_TEXTURE_URL = \"https://assets.babylonjs.com/meshes/MRTK/MRDL/mrtk-mrdl-backplate-iridescence.png\";\r\n private _iridescentMapTexture: Texture;\r\n\r\n /**\r\n * Gets or sets the corner radius on the backplate. If this value is changed, update the lineWidth to match.\r\n */\r\n @serialize()\r\n public radius = 0.3;\r\n\r\n /**\r\n * Gets or sets the line width of the backplate.\r\n */\r\n @serialize()\r\n public lineWidth = 0.003;\r\n\r\n /**\r\n * Gets or sets whether to use absolute sizes when calculating effects on the backplate.\r\n * Since desktop and VR/AR have different relative sizes, it's usually best to keep this false.\r\n */\r\n @serialize()\r\n public absoluteSizes = false;\r\n\r\n /** @internal */\r\n public _filterWidth = 1;\r\n\r\n /**\r\n * Gets or sets the base color of the backplate.\r\n */\r\n @serialize()\r\n public baseColor = new Color4(0, 0, 0, 1);\r\n\r\n /**\r\n * Gets or sets the line color of the backplate.\r\n */\r\n @serialize()\r\n public lineColor = new Color4(0.2, 0.262745, 0.4, 1);\r\n\r\n /**\r\n * Gets or sets the top left Radii Multiplier.\r\n */\r\n @serialize()\r\n public radiusTopLeft = 1.0;\r\n\r\n /**\r\n * Gets or sets the top left Radii Multiplier.\r\n */\r\n @serialize()\r\n public radiusTopRight = 1.0;\r\n\r\n /**\r\n * Gets or sets the top left Radii Multiplier.\r\n */\r\n @serialize()\r\n public radiusBottomLeft = 1.0;\r\n\r\n /**\r\n * Gets or sets the top left Radii Multiplier.\r\n */\r\n @serialize()\r\n public radiusBottomRight = 1.0;\r\n\r\n /** @internal */\r\n public _rate = 0;\r\n\r\n /**\r\n * Gets or sets the color of the highlights on the backplate line.\r\n */\r\n @serialize()\r\n public highlightColor = new Color4(0.239216, 0.435294, 0.827451, 1);\r\n\r\n /**\r\n * Gets or sets the width of the highlights on the backplate line.\r\n */\r\n @serialize()\r\n public highlightWidth = 0;\r\n\r\n /** @internal */\r\n public _highlightTransform = new Vector4(1, 1, 0, 0);\r\n\r\n /** @internal */\r\n public _highlight = 1;\r\n\r\n /**\r\n * Gets or sets the intensity of the iridescence effect.\r\n */\r\n @serialize()\r\n public iridescenceIntensity = 0.45;\r\n\r\n /**\r\n * Gets or sets the intensity of the iridescence effect on the backplate edges.\r\n */\r\n @serialize()\r\n public iridescenceEdgeIntensity = 1;\r\n\r\n /**\r\n * Gets or sets the Tint of the iridescence effect on the backplate.\r\n */\r\n @serialize()\r\n public iridescenceTint = new Color4(1, 1, 1, 1);\r\n\r\n /** @internal */\r\n public _angle = -45;\r\n\r\n /**\r\n * Gets or sets the opacity of the backplate (0.0 - 1.0).\r\n */\r\n @serialize()\r\n public fadeOut = 1;\r\n\r\n /** @internal */\r\n public _reflected = true;\r\n\r\n /** @internal */\r\n public _frequency = 1;\r\n\r\n /** @internal */\r\n public _verticalOffset = 0;\r\n\r\n /**\r\n * Gets or sets the gradient color effect on the backplate.\r\n */\r\n @serialize()\r\n public gradientColor = new Color4(0.74902, 0.74902, 0.74902, 1);\r\n\r\n /**\r\n * Gets or sets the top left gradient color effect on the backplate.\r\n */\r\n @serialize()\r\n public topLeftGradientColor = new Color4(0.00784314, 0.294118, 0.580392, 1);\r\n\r\n /**\r\n * Gets or sets the top right gradient color effect on the backplate.\r\n */\r\n @serialize()\r\n public topRightGradientColor = new Color4(0.305882, 0, 1, 1);\r\n\r\n /**\r\n * Gets or sets the bottom left gradient color effect on the backplate.\r\n */\r\n @serialize()\r\n public bottomLeftGradientColor = new Color4(0.133333, 0.258824, 0.992157, 1);\r\n\r\n /**\r\n * Gets or sets the bottom right gradient color effect on the backplate.\r\n */\r\n @serialize()\r\n public bottomRightGradientColor = new Color4(0.176471, 0.176471, 0.619608, 1);\r\n\r\n /**\r\n * Gets or sets the edge width of the backplate.\r\n */\r\n @serialize()\r\n public edgeWidth = 0.5;\r\n\r\n /**\r\n * Gets or sets the edge width of the backplate.\r\n */\r\n @serialize()\r\n public edgePower = 1;\r\n\r\n /**\r\n * Gets or sets the edge width of the backplate.\r\n */\r\n @serialize()\r\n public edgeLineGradientBlend = 0.5;\r\n\r\n constructor(name: string, scene?: Scene) {\r\n super(name, scene);\r\n this.alphaMode = Constants.ALPHA_DISABLE;\r\n this.backFaceCulling = false;\r\n\r\n this._iridescentMapTexture = new Texture(MRDLBackplateMaterial.IRIDESCENT_MAP_TEXTURE_URL, this.getScene(), true, false, Texture.NEAREST_SAMPLINGMODE);\r\n }\r\n\r\n public override needAlphaBlending(): boolean {\r\n return false;\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 // Methods\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 MRDLBackplateMaterialDefines();\r\n }\r\n\r\n const defines = <MRDLBackplateMaterialDefines>subMesh.materialDefines;\r\n const scene = this.getScene();\r\n\r\n if (this._isReadyForSubMesh(subMesh)) {\r\n return true;\r\n }\r\n\r\n const engine = scene.getEngine();\r\n\r\n // Attribs\r\n PrepareDefinesForAttributes(mesh, defines, false, false);\r\n\r\n // Get correct effect\r\n if (defines.isDirty) {\r\n defines.markAsProcessed();\r\n\r\n scene.resetCachedMaterial();\r\n\r\n // Fallbacks\r\n const fallbacks = new EffectFallbacks();\r\n if (defines.FOG) {\r\n fallbacks.addFallback(1, \"FOG\");\r\n }\r\n\r\n HandleFallbacksForShadows(defines, fallbacks);\r\n\r\n defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;\r\n\r\n //Attributes\r\n const attribs = [VertexBuffer.PositionKind];\r\n\r\n if (defines.NORMAL) {\r\n attribs.push(VertexBuffer.NormalKind);\r\n }\r\n\r\n if (defines.UV1) {\r\n attribs.push(VertexBuffer.UVKind);\r\n }\r\n\r\n if (defines.UV2) {\r\n attribs.push(VertexBuffer.UV2Kind);\r\n }\r\n\r\n if (defines.VERTEXCOLOR) {\r\n attribs.push(VertexBuffer.ColorKind);\r\n }\r\n\r\n if (defines.TANGENT) {\r\n attribs.push(VertexBuffer.TangentKind);\r\n }\r\n\r\n PrepareAttributesForInstances(attribs, defines);\r\n\r\n // Legacy browser patch\r\n const shaderName = \"mrdlBackplate\";\r\n const join = defines.toString();\r\n\r\n const uniforms = [\r\n \"world\",\r\n \"viewProjection\",\r\n \"cameraPosition\",\r\n \"_Radius_\",\r\n \"_Line_Width_\",\r\n \"_Absolute_Sizes_\",\r\n \"_Filter_Width_\",\r\n \"_Base_Color_\",\r\n \"_Line_Color_\",\r\n \"_Radius_Top_Left_\",\r\n \"_Radius_Top_Right_\",\r\n \"_Radius_Bottom_Left_\",\r\n \"_Radius_Bottom_Right_\",\r\n \"_Rate_\",\r\n \"_Highlight_Color_\",\r\n \"_Highlight_Width_\",\r\n \"_Highlight_Transform_\",\r\n \"_Highlight_\",\r\n \"_Iridescence_Intensity_\",\r\n \"_Iridescence_Edge_Intensity_\",\r\n \"_Iridescence_Tint_\",\r\n \"_Iridescent_Map_\",\r\n \"_Angle_\",\r\n \"_Reflected_\",\r\n \"_Frequency_\",\r\n \"_Vertical_Offset_\",\r\n \"_Gradient_Color_\",\r\n \"_Top_Left_\",\r\n \"_Top_Right_\",\r\n \"_Bottom_Left_\",\r\n \"_Bottom_Right_\",\r\n \"_Edge_Width_\",\r\n \"_Edge_Power_\",\r\n \"_Line_Gradient_Blend_\",\r\n \"_Fade_Out_\",\r\n ];\r\n const samplers: string[] = [\"_Iridescent_Map_\"];\r\n const uniformBuffers: string[] = [];\r\n\r\n PrepareUniformsAndSamplersList(<IEffectCreationOptions>{\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: defines,\r\n maxSimultaneousLights: 4,\r\n });\r\n\r\n subMesh.setEffect(\r\n scene.getEngine().createEffect(\r\n shaderName,\r\n <IEffectCreationOptions>{\r\n attributes: attribs,\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: join,\r\n fallbacks: fallbacks,\r\n onCompiled: this.onCompiled,\r\n onError: this.onError,\r\n indexParameters: { maxSimultaneousLights: 4 },\r\n },\r\n engine\r\n ),\r\n defines\r\n );\r\n }\r\n if (!subMesh.effect || !subMesh.effect.isReady()) {\r\n return false;\r\n }\r\n\r\n defines._renderId = scene.getRenderId();\r\n drawWrapper._wasPreviouslyReady = true;\r\n\r\n return true;\r\n }\r\n\r\n public override bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void {\r\n const defines = <MRDLBackplateMaterialDefines>subMesh.materialDefines;\r\n if (!defines) {\r\n return;\r\n }\r\n\r\n const effect = subMesh.effect;\r\n if (!effect) {\r\n return;\r\n }\r\n\r\n this._activeEffect = effect;\r\n\r\n // Matrices\r\n this.bindOnlyWorldMatrix(world);\r\n this._activeEffect.setMatrix(\"viewProjection\", this.getScene().getTransformMatrix());\r\n this._activeEffect.setVector3(\"cameraPosition\", this.getScene().activeCamera!.position);\r\n\r\n // \"Round Rect\"\r\n this._activeEffect.setFloat(\"_Radius_\", this.radius);\r\n this._activeEffect.setFloat(\"_Line_Width_\", this.lineWidth);\r\n this._activeEffect.setFloat(\"_Absolute_Sizes_\", this.absoluteSizes ? 1.0 : 0.0);\r\n this._activeEffect.setFloat(\"_Filter_Width_\", this._filterWidth);\r\n this._activeEffect.setDirectColor4(\"_Base_Color_\", this.baseColor);\r\n this._activeEffect.setDirectColor4(\"_Line_Color_\", this.lineColor);\r\n\r\n // \"Radii Multipliers\"\r\n this._activeEffect.setFloat(\"_Radius_Top_Left_\", this.radiusTopLeft);\r\n this._activeEffect.setFloat(\"_Radius_Top_Right_\", this.radiusTopRight);\r\n this._activeEffect.setFloat(\"_Radius_Bottom_Left_\", this.radiusBottomLeft);\r\n this._activeEffect.setFloat(\"_Radius_Bottom_Right_\", this.radiusBottomRight);\r\n\r\n // \"Line Highlight\"\r\n this._activeEffect.setFloat(\"_Rate_\", this._rate);\r\n this._activeEffect.setDirectColor4(\"_Highlight_Color_\", this.highlightColor);\r\n this._activeEffect.setFloat(\"_Highlight_Width_\", this.highlightWidth);\r\n this._activeEffect.setVector4(\"_Highlight_Transform_\", this._highlightTransform);\r\n this._activeEffect.setFloat(\"_Highlight_\", this._highlight);\r\n\r\n // \"Iridescence\"\r\n //define IRIDESCENCE_ENABLE true;\r\n this._activeEffect.setFloat(\"_Iridescence_Intensity_\", this.iridescenceIntensity);\r\n this._activeEffect.setFloat(\"_Iridescence_Edge_Intensity_\", this.iridescenceEdgeIntensity);\r\n this._activeEffect.setDirectColor4(\"_Iridescence_Tint_\", this.iridescenceTint);\r\n this._activeEffect.setTexture(\"_Iridescent_Map_\", this._iridescentMapTexture);\r\n this._activeEffect.setFloat(\"_Angle_\", this._angle);\r\n this._activeEffect.setFloat(\"_Reflected_\", this._reflected ? 1.0 : 0.0);\r\n this._activeEffect.setFloat(\"_Frequency_\", this._frequency);\r\n this._activeEffect.setFloat(\"_Vertical_Offset_\", this._verticalOffset);\r\n\r\n // \"Gradient\"\r\n this._activeEffect.setDirectColor4(\"_Gradient_Color_\", this.gradientColor);\r\n this._activeEffect.setDirectColor4(\"_Top_Left_\", this.topLeftGradientColor);\r\n this._activeEffect.setDirectColor4(\"_Top_Right_\", this.topRightGradientColor);\r\n this._activeEffect.setDirectColor4(\"_Bottom_Left_\", this.bottomLeftGradientColor);\r\n this._activeEffect.setDirectColor4(\"_Bottom_Right_\", this.bottomRightGradientColor);\r\n //define EDGE_ONLY false;\r\n this._activeEffect.setFloat(\"_Edge_Width_\", this.edgeWidth);\r\n this._activeEffect.setFloat(\"_Edge_Power_\", this.edgePower);\r\n this._activeEffect.setFloat(\"_Line_Gradient_Blend_\", this.edgeLineGradientBlend);\r\n\r\n // \"Fade\"\r\n this._activeEffect.setFloat(\"_Fade_Out_\", this.fadeOut);\r\n\r\n // \"Antialiasing\"\r\n //define SMOOTH_EDGES true;\r\n\r\n this._afterBind(mesh, this._activeEffect, subMesh);\r\n }\r\n\r\n /**\r\n * Get the list of animatables in the material.\r\n * @returns the list of animatables object used in the material\r\n */\r\n public override getAnimatables(): IAnimatable[] {\r\n return [];\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): MRDLBackplateMaterial {\r\n return SerializationHelper.Clone(() => new MRDLBackplateMaterial(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.MRDLBackplateMaterial\";\r\n return serializationObject;\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"MRDLBackplateMaterial\";\r\n }\r\n\r\n // Statics\r\n public static override Parse(source: any, scene: Scene, rootUrl: string): MRDLBackplateMaterial {\r\n return SerializationHelper.Parse(() => new MRDLBackplateMaterial(source.name, scene), source, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.GUI.MRDLBackplateMaterial\", MRDLBackplateMaterial);\r\n"]}
1
+ {"version":3,"file":"mrdlBackplateMaterial.js","sourceRoot":"","sources":["../../../../../../dev/gui/src/3D/materials/mrdl/mrdlBackplateMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport type { Nullable } from \"core/types\";\r\nimport { serialize } from \"core/Misc/decorators\";\r\nimport { SerializationHelper } from \"core/Misc/decorators.serialization\";\r\nimport type { Matrix } from \"core/Maths/math.vector\";\r\nimport { Vector4 } from \"core/Maths/math.vector\";\r\nimport type { IAnimatable } from \"core/Animations/animatable.interface\";\r\nimport type { BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\nimport { Texture } from \"core/Materials/Textures/texture\";\r\nimport { MaterialDefines } from \"core/Materials/materialDefines\";\r\nimport type { IEffectCreationOptions } from \"core/Materials/effect\";\r\nimport { PushMaterial } from \"core/Materials/pushMaterial\";\r\nimport { VertexBuffer } from \"core/Buffers/buffer\";\r\nimport type { AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport type { SubMesh } from \"core/Meshes/subMesh\";\r\nimport type { Mesh } from \"core/Meshes/mesh\";\r\nimport type { Scene } from \"core/scene\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { Color4 } from \"core/Maths/math.color\";\r\nimport { EffectFallbacks } from \"core/Materials/effectFallbacks\";\r\nimport { Constants } from \"core/Engines/constants\";\r\n\r\nimport \"./shaders/mrdlBackplate.fragment\";\r\nimport \"./shaders/mrdlBackplate.vertex\";\r\nimport { HandleFallbacksForShadows, PrepareAttributesForInstances, PrepareDefinesForAttributes, PrepareUniformsAndSamplersList } from \"core/Materials/materialHelper.functions\";\r\n\r\n/** @internal */\r\nclass MRDLBackplateMaterialDefines extends MaterialDefines {\r\n /*\r\n \"IRIDESCENCE_ENABLE\", \"SMOOTH_EDGES\"\r\n */\r\n public IRIDESCENCE_ENABLE = true;\r\n public SMOOTH_EDGES = true;\r\n\r\n constructor() {\r\n super();\r\n this._needNormals = true;\r\n this.rebuild();\r\n }\r\n}\r\n\r\n/**\r\n * Class used to render backplate material with MRDL\r\n */\r\nexport class MRDLBackplateMaterial extends PushMaterial {\r\n /**\r\n * URL pointing to the texture used to define the coloring for the Iridescent Map effect.\r\n */\r\n public static IRIDESCENT_MAP_TEXTURE_URL = \"https://assets.babylonjs.com/meshes/MRTK/MRDL/mrtk-mrdl-backplate-iridescence.png\";\r\n private _iridescentMapTexture: Texture;\r\n\r\n /**\r\n * Gets or sets the corner radius on the backplate. If this value is changed, update the lineWidth to match.\r\n */\r\n @serialize()\r\n public radius = 0.3;\r\n\r\n /**\r\n * Gets or sets the line width of the backplate.\r\n */\r\n @serialize()\r\n public lineWidth = 0.003;\r\n\r\n /**\r\n * Gets or sets whether to use absolute sizes when calculating effects on the backplate.\r\n * Since desktop and VR/AR have different relative sizes, it's usually best to keep this false.\r\n */\r\n @serialize()\r\n public absoluteSizes = false;\r\n\r\n /** @internal */\r\n public _filterWidth = 1;\r\n\r\n /**\r\n * Gets or sets the base color of the backplate.\r\n */\r\n @serialize()\r\n public baseColor = new Color4(0, 0, 0, 1);\r\n\r\n /**\r\n * Gets or sets the line color of the backplate.\r\n */\r\n @serialize()\r\n public lineColor = new Color4(0.2, 0.262745, 0.4, 1);\r\n\r\n /**\r\n * Gets or sets the top left Radii Multiplier.\r\n */\r\n @serialize()\r\n public radiusTopLeft = 1.0;\r\n\r\n /**\r\n * Gets or sets the top left Radii Multiplier.\r\n */\r\n @serialize()\r\n public radiusTopRight = 1.0;\r\n\r\n /**\r\n * Gets or sets the top left Radii Multiplier.\r\n */\r\n @serialize()\r\n public radiusBottomLeft = 1.0;\r\n\r\n /**\r\n * Gets or sets the top left Radii Multiplier.\r\n */\r\n @serialize()\r\n public radiusBottomRight = 1.0;\r\n\r\n /** @internal */\r\n public _rate = 0;\r\n\r\n /**\r\n * Gets or sets the color of the highlights on the backplate line.\r\n */\r\n @serialize()\r\n public highlightColor = new Color4(0.239216, 0.435294, 0.827451, 1);\r\n\r\n /**\r\n * Gets or sets the width of the highlights on the backplate line.\r\n */\r\n @serialize()\r\n public highlightWidth = 0;\r\n\r\n /** @internal */\r\n public _highlightTransform = new Vector4(1, 1, 0, 0);\r\n\r\n /** @internal */\r\n public _highlight = 1;\r\n\r\n /**\r\n * Gets or sets the intensity of the iridescence effect.\r\n */\r\n @serialize()\r\n public iridescenceIntensity = 0.45;\r\n\r\n /**\r\n * Gets or sets the intensity of the iridescence effect on the backplate edges.\r\n */\r\n @serialize()\r\n public iridescenceEdgeIntensity = 1;\r\n\r\n /**\r\n * Gets or sets the Tint of the iridescence effect on the backplate.\r\n */\r\n @serialize()\r\n public iridescenceTint = new Color4(1, 1, 1, 1);\r\n\r\n /** @internal */\r\n public _angle = -45;\r\n\r\n /**\r\n * Gets or sets the opacity of the backplate (0.0 - 1.0).\r\n */\r\n @serialize()\r\n public fadeOut = 1;\r\n\r\n /** @internal */\r\n public _reflected = true;\r\n\r\n /** @internal */\r\n public _frequency = 1;\r\n\r\n /** @internal */\r\n public _verticalOffset = 0;\r\n\r\n /**\r\n * Gets or sets the gradient color effect on the backplate.\r\n */\r\n @serialize()\r\n public gradientColor = new Color4(0.74902, 0.74902, 0.74902, 1);\r\n\r\n /**\r\n * Gets or sets the top left gradient color effect on the backplate.\r\n */\r\n @serialize()\r\n public topLeftGradientColor = new Color4(0.00784314, 0.294118, 0.580392, 1);\r\n\r\n /**\r\n * Gets or sets the top right gradient color effect on the backplate.\r\n */\r\n @serialize()\r\n public topRightGradientColor = new Color4(0.305882, 0, 1, 1);\r\n\r\n /**\r\n * Gets or sets the bottom left gradient color effect on the backplate.\r\n */\r\n @serialize()\r\n public bottomLeftGradientColor = new Color4(0.133333, 0.258824, 0.992157, 1);\r\n\r\n /**\r\n * Gets or sets the bottom right gradient color effect on the backplate.\r\n */\r\n @serialize()\r\n public bottomRightGradientColor = new Color4(0.176471, 0.176471, 0.619608, 1);\r\n\r\n /**\r\n * Gets or sets the edge width of the backplate.\r\n */\r\n @serialize()\r\n public edgeWidth = 0.5;\r\n\r\n /**\r\n * Gets or sets the edge width of the backplate.\r\n */\r\n @serialize()\r\n public edgePower = 1;\r\n\r\n /**\r\n * Gets or sets the edge width of the backplate.\r\n */\r\n @serialize()\r\n public edgeLineGradientBlend = 0.5;\r\n\r\n constructor(name: string, scene?: Scene) {\r\n super(name, scene);\r\n this.alphaMode = Constants.ALPHA_DISABLE;\r\n this.backFaceCulling = false;\r\n\r\n this._iridescentMapTexture = new Texture(MRDLBackplateMaterial.IRIDESCENT_MAP_TEXTURE_URL, this.getScene(), true, false, Texture.NEAREST_SAMPLINGMODE);\r\n }\r\n\r\n public override needAlphaBlending(): boolean {\r\n return false;\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 // Methods\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 MRDLBackplateMaterialDefines();\r\n }\r\n\r\n const defines = <MRDLBackplateMaterialDefines>subMesh.materialDefines;\r\n const scene = this.getScene();\r\n\r\n if (this._isReadyForSubMesh(subMesh)) {\r\n return true;\r\n }\r\n\r\n const engine = scene.getEngine();\r\n\r\n // Attribs\r\n PrepareDefinesForAttributes(mesh, defines, false, false);\r\n\r\n // Get correct effect\r\n if (defines.isDirty) {\r\n defines.markAsProcessed();\r\n\r\n scene.resetCachedMaterial();\r\n\r\n // Fallbacks\r\n const fallbacks = new EffectFallbacks();\r\n if (defines.FOG) {\r\n fallbacks.addFallback(1, \"FOG\");\r\n }\r\n\r\n HandleFallbacksForShadows(defines, fallbacks);\r\n\r\n defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;\r\n\r\n //Attributes\r\n const attribs = [VertexBuffer.PositionKind];\r\n\r\n if (defines.NORMAL) {\r\n attribs.push(VertexBuffer.NormalKind);\r\n }\r\n\r\n if (defines.UV1) {\r\n attribs.push(VertexBuffer.UVKind);\r\n }\r\n\r\n if (defines.UV2) {\r\n attribs.push(VertexBuffer.UV2Kind);\r\n }\r\n\r\n if (defines.VERTEXCOLOR) {\r\n attribs.push(VertexBuffer.ColorKind);\r\n }\r\n\r\n if (defines.TANGENT) {\r\n attribs.push(VertexBuffer.TangentKind);\r\n }\r\n\r\n PrepareAttributesForInstances(attribs, defines);\r\n\r\n // Legacy browser patch\r\n const shaderName = \"mrdlBackplate\";\r\n const join = defines.toString();\r\n\r\n const uniforms = [\r\n \"world\",\r\n \"viewProjection\",\r\n \"cameraPosition\",\r\n \"_Radius_\",\r\n \"_Line_Width_\",\r\n \"_Absolute_Sizes_\",\r\n \"_Filter_Width_\",\r\n \"_Base_Color_\",\r\n \"_Line_Color_\",\r\n \"_Radius_Top_Left_\",\r\n \"_Radius_Top_Right_\",\r\n \"_Radius_Bottom_Left_\",\r\n \"_Radius_Bottom_Right_\",\r\n \"_Rate_\",\r\n \"_Highlight_Color_\",\r\n \"_Highlight_Width_\",\r\n \"_Highlight_Transform_\",\r\n \"_Highlight_\",\r\n \"_Iridescence_Intensity_\",\r\n \"_Iridescence_Edge_Intensity_\",\r\n \"_Iridescence_Tint_\",\r\n \"_Iridescent_Map_\",\r\n \"_Angle_\",\r\n \"_Reflected_\",\r\n \"_Frequency_\",\r\n \"_Vertical_Offset_\",\r\n \"_Gradient_Color_\",\r\n \"_Top_Left_\",\r\n \"_Top_Right_\",\r\n \"_Bottom_Left_\",\r\n \"_Bottom_Right_\",\r\n \"_Edge_Width_\",\r\n \"_Edge_Power_\",\r\n \"_Line_Gradient_Blend_\",\r\n \"_Fade_Out_\",\r\n ];\r\n const samplers: string[] = [\"_Iridescent_Map_\"];\r\n const uniformBuffers: string[] = [];\r\n\r\n PrepareUniformsAndSamplersList(<IEffectCreationOptions>{\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: defines,\r\n maxSimultaneousLights: 4,\r\n });\r\n\r\n subMesh.setEffect(\r\n scene.getEngine().createEffect(\r\n shaderName,\r\n <IEffectCreationOptions>{\r\n attributes: attribs,\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: join,\r\n fallbacks: fallbacks,\r\n onCompiled: this.onCompiled,\r\n onError: this.onError,\r\n indexParameters: { maxSimultaneousLights: 4 },\r\n },\r\n engine\r\n ),\r\n defines\r\n );\r\n }\r\n if (!subMesh.effect || !subMesh.effect.isReady()) {\r\n return false;\r\n }\r\n\r\n defines._renderId = scene.getRenderId();\r\n drawWrapper._wasPreviouslyReady = true;\r\n\r\n return true;\r\n }\r\n\r\n public override bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void {\r\n const defines = <MRDLBackplateMaterialDefines>subMesh.materialDefines;\r\n if (!defines) {\r\n return;\r\n }\r\n\r\n const effect = subMesh.effect;\r\n if (!effect) {\r\n return;\r\n }\r\n\r\n this._activeEffect = effect;\r\n\r\n // Matrices\r\n this.bindOnlyWorldMatrix(world);\r\n this._activeEffect.setMatrix(\"viewProjection\", this.getScene().getTransformMatrix());\r\n this._activeEffect.setVector3(\"cameraPosition\", this.getScene().activeCamera!.position);\r\n\r\n // \"Round Rect\"\r\n this._activeEffect.setFloat(\"_Radius_\", this.radius);\r\n this._activeEffect.setFloat(\"_Line_Width_\", this.lineWidth);\r\n this._activeEffect.setFloat(\"_Absolute_Sizes_\", this.absoluteSizes ? 1.0 : 0.0);\r\n this._activeEffect.setFloat(\"_Filter_Width_\", this._filterWidth);\r\n this._activeEffect.setDirectColor4(\"_Base_Color_\", this.baseColor);\r\n this._activeEffect.setDirectColor4(\"_Line_Color_\", this.lineColor);\r\n\r\n // \"Radii Multipliers\"\r\n this._activeEffect.setFloat(\"_Radius_Top_Left_\", this.radiusTopLeft);\r\n this._activeEffect.setFloat(\"_Radius_Top_Right_\", this.radiusTopRight);\r\n this._activeEffect.setFloat(\"_Radius_Bottom_Left_\", this.radiusBottomLeft);\r\n this._activeEffect.setFloat(\"_Radius_Bottom_Right_\", this.radiusBottomRight);\r\n\r\n // \"Line Highlight\"\r\n this._activeEffect.setFloat(\"_Rate_\", this._rate);\r\n this._activeEffect.setDirectColor4(\"_Highlight_Color_\", this.highlightColor);\r\n this._activeEffect.setFloat(\"_Highlight_Width_\", this.highlightWidth);\r\n this._activeEffect.setVector4(\"_Highlight_Transform_\", this._highlightTransform);\r\n this._activeEffect.setFloat(\"_Highlight_\", this._highlight);\r\n\r\n // \"Iridescence\"\r\n //define IRIDESCENCE_ENABLE true;\r\n this._activeEffect.setFloat(\"_Iridescence_Intensity_\", this.iridescenceIntensity);\r\n this._activeEffect.setFloat(\"_Iridescence_Edge_Intensity_\", this.iridescenceEdgeIntensity);\r\n this._activeEffect.setDirectColor4(\"_Iridescence_Tint_\", this.iridescenceTint);\r\n this._activeEffect.setTexture(\"_Iridescent_Map_\", this._iridescentMapTexture);\r\n this._activeEffect.setFloat(\"_Angle_\", this._angle);\r\n this._activeEffect.setFloat(\"_Reflected_\", this._reflected ? 1.0 : 0.0);\r\n this._activeEffect.setFloat(\"_Frequency_\", this._frequency);\r\n this._activeEffect.setFloat(\"_Vertical_Offset_\", this._verticalOffset);\r\n\r\n // \"Gradient\"\r\n this._activeEffect.setDirectColor4(\"_Gradient_Color_\", this.gradientColor);\r\n this._activeEffect.setDirectColor4(\"_Top_Left_\", this.topLeftGradientColor);\r\n this._activeEffect.setDirectColor4(\"_Top_Right_\", this.topRightGradientColor);\r\n this._activeEffect.setDirectColor4(\"_Bottom_Left_\", this.bottomLeftGradientColor);\r\n this._activeEffect.setDirectColor4(\"_Bottom_Right_\", this.bottomRightGradientColor);\r\n //define EDGE_ONLY false;\r\n this._activeEffect.setFloat(\"_Edge_Width_\", this.edgeWidth);\r\n this._activeEffect.setFloat(\"_Edge_Power_\", this.edgePower);\r\n this._activeEffect.setFloat(\"_Line_Gradient_Blend_\", this.edgeLineGradientBlend);\r\n\r\n // \"Fade\"\r\n this._activeEffect.setFloat(\"_Fade_Out_\", this.fadeOut);\r\n\r\n // \"Antialiasing\"\r\n //define SMOOTH_EDGES true;\r\n\r\n this._afterBind(mesh, this._activeEffect, subMesh);\r\n }\r\n\r\n /**\r\n * Get the list of animatables in the material.\r\n * @returns the list of animatables object used in the material\r\n */\r\n public override getAnimatables(): IAnimatable[] {\r\n return [];\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): MRDLBackplateMaterial {\r\n return SerializationHelper.Clone(() => new MRDLBackplateMaterial(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.MRDLBackplateMaterial\";\r\n return serializationObject;\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"MRDLBackplateMaterial\";\r\n }\r\n\r\n // Statics\r\n public static override Parse(source: any, scene: Scene, rootUrl: string): MRDLBackplateMaterial {\r\n return SerializationHelper.Parse(() => new MRDLBackplateMaterial(source.name, scene), source, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.GUI.MRDLBackplateMaterial\", MRDLBackplateMaterial);\r\n"]}