import type { _InstancesBatch } from "@babylonjs/core/Meshes/mesh"; import type { SubMesh } from "@babylonjs/core/Meshes/subMesh"; import { Scene } from "@babylonjs/core/scene"; import type { ISceneComponent } from "@babylonjs/core/sceneComponent"; declare module "@babylonjs/core/scene" { interface Scene { /** @internal */ _mmdOutlineRenderer: MmdOutlineRenderer; /** * Gets the outline renderer associated with the scene * @returns a MmdOutlineRenderer */ getMmdOutlineRenderer(): MmdOutlineRenderer; } } /** * This class is responsible to draw the outline/overlay of meshes. * It should not be used directly but through the available method on mesh. */ export declare class MmdOutlineRenderer implements ISceneComponent { /** * The name of the component. Each component must have a unique name. */ name: string; /** * The scene the component belongs to. */ scene: Scene; /** * Defines a zOffset default Factor to prevent zFighting between the overlay and the mesh. */ zOffset: number; /** * Defines a zOffset default Unit to prevent zFighting between the overlay and the mesh. */ zOffsetUnits: number; private readonly _engine; private readonly _passIdForDrawWrapper; /** * Instantiates a new outline renderer. (There could be only one per scene). * @param scene Defines the scene it belongs to */ constructor(scene: Scene); /** * Register the component to one instance of a scene. */ register(): void; /** * Rebuilds the elements related to this component in case of * context lost for instance. */ rebuild(): void; /** * Disposes the component and the associated resources. */ dispose(): void; private static readonly _ViewMatrix; private static readonly _InverseViewProjectionMatrix; /** * Renders the outline in the canvas. * @param subMesh Defines the sumesh to render * @param batch Defines the batch of meshes in case of instances * @param renderPassId Render pass id to use to render the mesh */ render(subMesh: SubMesh, batch: _InstancesBatch, renderPassId?: number): void; /** * Returns whether or not the outline renderer is ready for a given submesh. * All the dependencies e.g. submeshes, texture, effect... mus be ready * @param subMesh Defines the submesh to check readiness for * @param useInstances Defines whether wee are trying to render instances or not * @param renderPassId Render pass id to use to render the mesh * @returns true if ready otherwise false */ isReady(subMesh: SubMesh, useInstances: boolean, renderPassId?: number): boolean; private _afterRenderingMesh; }