UNPKG

@babylonjs/core

Version:

Getting started? Play directly with the Babylon.js API using our [playground](https://playground.babylonjs.com/). It also contains a lot of samples to learn how to use it.

90 lines (89 loc) 3.29 kB
import type { VertexBuffer } from "../../Buffers/buffer.js"; import type { DataBuffer } from "../../Buffers/dataBuffer.js"; import type { AbstractEngine } from "../../Engines/abstractEngine.js"; import { EffectWrapper } from "../../Materials/effectRenderer.js"; import { Observable } from "../../Misc/observable.js"; import type { Scene } from "../../scene.js"; import type { Nullable } from "../../types.js"; import { ShaderLanguage } from "../../Materials/shaderLanguage.js"; /** * Defines the base object used for fluid rendering. * It is based on a list of vertices (particles) */ export declare abstract class FluidRenderingObject { protected _scene: Scene; protected _engine: AbstractEngine; protected _effectsAreDirty: boolean; protected _depthEffectWrapper: Nullable<EffectWrapper>; protected _thicknessEffectWrapper: Nullable<EffectWrapper>; /** Defines the priority of the object. Objects will be rendered in ascending order of priority */ priority: number; protected _particleSize: number; /** Observable triggered when the size of the particle is changed */ onParticleSizeChanged: Observable<FluidRenderingObject>; /** Gets or sets the size of the particle */ get particleSize(): number; set particleSize(size: number); /** Defines the alpha value of a particle */ particleThicknessAlpha: number; /** Indicates if the object uses instancing or not */ get useInstancing(): boolean; private _useVelocity; /** Indicates if velocity of particles should be used when rendering the object. The vertex buffer set must contain a "velocity" buffer for this to work! */ get useVelocity(): boolean; set useVelocity(use: boolean); private _hasVelocity; /** * Gets the vertex buffers */ abstract get vertexBuffers(): { [key: string]: VertexBuffer; }; /** * Gets the index buffer (or null if the object is using instancing) */ get indexBuffer(): Nullable<DataBuffer>; /** * @returns the name of the class */ getClassName(): string; /** Shader language used by the object */ protected _shaderLanguage: ShaderLanguage; /** * Gets the shader language used in this object */ get shaderLanguage(): ShaderLanguage; /** * Instantiates a fluid rendering object * @param scene The scene the object is part of * @param shaderLanguage The shader language to use */ constructor(scene: Scene, shaderLanguage?: ShaderLanguage); protected _createEffects(): void; /** * Indicates if the object is ready to be rendered * @returns True if everything is ready for the object to be rendered, otherwise false */ isReady(): boolean; /** * Gets the number of particles (vertices) of this object * @returns The number of particles */ abstract get numParticles(): number; /** * Render the depth texture for this object */ renderDepthTexture(): void; /** * Render the thickness texture for this object */ renderThicknessTexture(): void; /** * Render the diffuse texture for this object */ renderDiffuseTexture(): void; /** * Releases the ressources used by the class */ dispose(): void; }