webgl2ParticleSystem.d.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import type { VertexBuffer, Buffer } from "../Buffers/buffer";
  2. import type { ThinEngine } from "../Engines/thinEngine";
  3. import { Effect } from "../Materials/effect";
  4. import type { IGPUParticleSystemPlatform } from "./IGPUParticleSystemPlatform";
  5. import type { GPUParticleSystem } from "./gpuParticleSystem";
  6. import type { DataArray, Nullable } from "../types";
  7. import type { DataBuffer } from "../Buffers/dataBuffer";
  8. import { UniformBufferEffectCommonAccessor } from "../Materials/uniformBufferEffectCommonAccessor";
  9. import "../Shaders/gpuUpdateParticles.fragment";
  10. import "../Shaders/gpuUpdateParticles.vertex";
  11. /** @internal */
  12. export declare class WebGL2ParticleSystem implements IGPUParticleSystemPlatform {
  13. private _parent;
  14. private _engine;
  15. private _updateEffect;
  16. private _updateEffectOptions;
  17. private _renderVAO;
  18. private _updateVAO;
  19. private _renderVertexBuffers;
  20. readonly alignDataInBuffer = false;
  21. constructor(parent: GPUParticleSystem, engine: ThinEngine);
  22. contextLost(): void;
  23. isUpdateBufferCreated(): boolean;
  24. isUpdateBufferReady(): boolean;
  25. createUpdateBuffer(defines: string): UniformBufferEffectCommonAccessor;
  26. createVertexBuffers(updateBuffer: Buffer, renderVertexBuffers: {
  27. [key: string]: VertexBuffer;
  28. }): void;
  29. createParticleBuffer(data: number[]): DataArray | DataBuffer;
  30. bindDrawBuffers(index: number, effect: Effect, indexBuffer: Nullable<DataBuffer>): void;
  31. preUpdateParticleBuffer(): void;
  32. updateParticleBuffer(index: number, targetBuffer: Buffer, currentActiveCount: number): void;
  33. releaseBuffers(): void;
  34. releaseVertexBuffers(): void;
  35. private _createUpdateVAO;
  36. }