import { type Nullable } from "@babylonjs/core/types.js"; import { type Matrix, Vector3, Vector4 } from "@babylonjs/core/Maths/math.vector.pure.js"; import { type IAnimatable } from "@babylonjs/core/Animations/animatable.interface.js"; import { type BaseTexture } from "@babylonjs/core/Materials/Textures/baseTexture.js"; import { PushMaterial } from "@babylonjs/core/Materials/pushMaterial.js"; import { type AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh.pure.js"; import { type SubMesh } from "@babylonjs/core/Meshes/subMesh.js"; import { type Mesh } from "@babylonjs/core/Meshes/mesh.js"; import { type Scene } from "@babylonjs/core/scene.js"; import { Color4 } from "@babylonjs/core/Maths/math.color.pure.js"; /** * Class used to render square buttons with fluent design */ export declare class FluentBackplateMaterial extends PushMaterial { private static readonly _ShaderLoader; /** * URL pointing to the texture used to define the coloring for the fluent blob effect. */ static BLOB_TEXTURE_URL: string; /** * URL pointing to the texture used to define iridescent map. */ static IM_TEXTURE_URL: string; private _blobTexture; private _iridescentMap; /** * Gets or sets the corner radius on the backplate. Best to keep this value between 0.01 and 0.5. Default is 0.03. */ radius: number; /** * Gets or sets the line width of the backplate. */ lineWidth: number; /** * Gets or sets whether to use absolute sizes when calculating effects on the backplate. * Since desktop and VR/AR have different relative sizes, it's usually best to keep this false. */ absoluteSizes: boolean; /** @internal */ _filterWidth: number; /** * Gets or sets the base color of the backplate. */ baseColor: Color4; /** * Gets or sets the line color of the backplate. */ lineColor: Color4; /** * Gets or sets the intensity of the fluent hover glow effect. */ blobIntensity: number; /** * Gets or sets the far size of the fluent hover glow effect. */ blobFarSize: number; /** * Gets or sets the distance considered "near" to the backplate, which controls the size of the fluent hover glow effect (see blobNearSize). */ blobNearDistance: number; /** * Gets or sets the distance considered "far" from the backplate, which controls the size of the fluent hover glow effect (see blobFarSize). */ blobFarDistance: number; /** * Gets or sets the length of the fluent hover glow effect fade. */ blobFadeLength: number; /** * Gets or sets the size of the fluent hover glow effect when the left pointer is considered "near" to the backplate (see blobNearDistance). */ blobNearSize: number; /** * Gets or sets the progress of the fluent hover glow effect selection animation corresponding to the left pointer (0.0 - 1.0). */ blobPulse: number; /** * Gets or sets the opacity of the fluent hover glow effect corresponding to the left pointer (0.0 - 1.0). Default is 0. */ blobFade: number; /** * Gets or sets the size of the fluent hover glow effect when the right pointer is considered "near" to the backplate (see blobNearDistance). */ blobNearSize2: number; /** * Gets or sets the progress of the fluent hover glow effect selection animation corresponding to the right pointer (0.0 - 1.0). */ blobPulse2: number; /** * Gets or sets the opacity of the fluent hover glow effect corresponding to the right pointer (0.0 - 1.0). Default is 0. */ blobFade2: number; /** @internal */ _rate: number; /** * Gets or sets the color of the highlights on the backplate line. */ highlightColor: Color4; /** * Gets or sets the width of the highlights on the backplate line. */ highlightWidth: number; /** @internal */ _highlightTransform: Vector4; /** @internal */ _highlight: number; /** * Gets or sets the intensity of the iridescence effect. */ iridescenceIntensity: number; /** * Gets or sets the intensity of the iridescence effect on the backplate edges. */ iridescenceEdgeIntensity: number; /** @internal */ _angle: number; /** * Gets or sets the opacity of the backplate (0.0 - 1.0). */ fadeOut: number; /** @internal */ _reflected: boolean; /** @internal */ _frequency: number; /** @internal */ _verticalOffset: number; /** * Gets or sets the world-space position of the tip of the left index finger. */ globalLeftIndexTipPosition: Vector3; private _globalLeftIndexTipPosition4; /** * Gets or sets the world-space position of the tip of the right index finger. */ globalRightIndexTipPosition: Vector3; private _globalRightIndexTipPosition4; constructor(name: string, scene?: Scene); needAlphaBlending(): boolean; needAlphaTesting(): boolean; getAlphaTestTexture(): Nullable; isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh): boolean; bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void; /** * Get the list of animatables in the material. * @returns the list of animatables object used in the material */ getAnimatables(): IAnimatable[]; /** * Disposes the material. * @param forceDisposeEffect specifies if effects should be forcefully disposed */ dispose(forceDisposeEffect?: boolean): void; clone(name: string): FluentBackplateMaterial; serialize(): any; getClassName(): string; /** * Creates a fluent backplate material from parsed material data. * @param source defines the JSON representation of the material * @param scene defines the hosting scene * @param rootUrl defines the root URL to use to load textures and relative dependencies * @returns a new fluent backplate material */ static Parse(source: any, scene: Scene, rootUrl: string): FluentBackplateMaterial; } /** * Registers the FluentBackplateMaterial class with the type store for serialization support. * Safe to call multiple times; only the first call has an effect. */ export declare function RegisterFluentBackplateMaterial(): void;