computeShaderParticleSystem.d.ts 1.6 KB

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