Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New VFX System #14792

Closed
wants to merge 440 commits into from
Closed

New VFX System #14792

wants to merge 440 commits into from

Conversation

SantyWang
Copy link
Contributor

Re: #

Changelog


Continuous Integration

This pull request:

  • needs automatic test cases check.

    Manual trigger with @cocos-robot run test cases afterward.

  • does not change any runtime related code or build configuration

    If any reviewer thinks the CI checks are needed, please uncheck this option, then close and reopen the issue.


Compatibility Check

This pull request:

  • changes public API, and have ensured backward compatibility with deprecated features.
  • affects platform compatibility, e.g. system version, browser version, platform sdk version, platform toolchain, language version, hardware compatibility etc.
  • affects file structure of the build package or build configuration which requires user project upgrade.
  • introduces breaking changes, please list all changes, affected features and the scope of violation.

@SantyWang SantyWang changed the title New particle New VFX System Apr 13, 2023
@SantyWang SantyWang requested a review from zxx43 April 13, 2023 11:30
@shrinktofit shrinktofit reopened this May 16, 2023
@github-actions
Copy link

github-actions bot commented May 16, 2023

Interface Check Report

! WARNING this pull request has changed these public interfaces:

@@ -26825,8 +26825,13 @@
          * @event Director.EVENT_BEFORE_UPDATE
          */
         static readonly EVENT_BEFORE_UPDATE = "director_before_update";
         /**
+         * @en The event which will be triggered at the time that particle system update.
+         * @zh 粒子系统开始更新时的事件
+         */
+        static readonly EVENT_UPDATE_PARTICLE = "director_update_particle";
+        /**
          * @en The event which will be triggered after engine and components update logic.
          * @zh 将在引擎和组件 “update” 逻辑之后所触发的事件。
          * @event Director.EVENT_AFTER_UPDATE
          */
@@ -26849,8 +26854,12 @@
          * @event Director.EVENT_BEFORE_COMMIT
          */
         static readonly EVENT_BEFORE_COMMIT = "director_before_commit";
         /**
+         * @zh 当前渲染帧更新动态 vbo 的事件
+         */
+        static readonly EVENT_UPLOAD_DYNAMIC_VBO = "director_upload_dynamic_vbo";
+        /**
          * @en The event which will be triggered before the render pipeline processes the render scene.
          * @zh 当前帧将渲染场景提交到渲染管线之前所触发的事件。
          * @event Director.EVENT_BEFORE_RENDER
          */
@@ -55995,9 +56004,1409 @@
      */
     export class UIReorderComponent {
         constructor();
     }
+    export class VFXEmitter extends Component {
+        static CullingMode: typeof __private._cocos_vfx_define__CullingMode;
+        /**
+         * @zh 选择粒子系统所在的坐标系[[Space]]。<br>
+         */
+        get localSpace(): boolean;
+        set localSpace(val: boolean);
+        /**
+         * @zh 选中之后,粒子系统会以已播放完一轮之后的状态开始播放(仅当循环播放启用时有效)。
+         */
+        get prewarm(): boolean;
+        set prewarm(val: boolean);
+        get prewarmTime(): number;
+        set prewarmTime(val: number);
+        get prewarmTimeStep(): number;
+        set prewarmTimeStep(val: number);
+        /**
+         * @zh 控制整个粒子系统的更新速度。
+         */
+        get simulationSpeed(): number;
+        set simulationSpeed(val: number);
+        get maxDeltaTime(): number;
+        set maxDeltaTime(val: number);
+        get scalingMode(): __private._cocos_vfx_define__ScalingMode;
+        set scalingMode(val: __private._cocos_vfx_define__ScalingMode);
+        get capacityMode(): __private._cocos_vfx_define__CapacityMode;
+        set capacityMode(val: __private._cocos_vfx_define__CapacityMode);
+        /**
+         * @zh 粒子系统能生成的最大粒子数量。
+         */
+        get maxCapacity(): number;
+        set maxCapacity(val: number);
+        /**
+         * @zh 粒子系统加载后是否自动开始播放。
+         */
+        get playOnAwake(): boolean;
+        set playOnAwake(val: boolean);
+        get determinism(): boolean;
+        set determinism(val: boolean);
+        get randomSeed(): number;
+        set randomSeed(val: number);
+        get boundsMode(): __private._cocos_vfx_define__BoundsMode;
+        set boundsMode(val: __private._cocos_vfx_define__BoundsMode);
+        get fixedBoundsMin(): Readonly<math.Vec3>;
+        set fixedBoundsMin(val: Readonly<math.Vec3>);
+        get fixedBoundsMax(): Readonly<math.Vec3>;
+        set fixedBoundsMax(val: Readonly<math.Vec3>);
+        /**
+         * @en Particle culling mode option. Includes pause, pause and catchup, always simulate.
+         * @zh 粒子剔除模式选择。包括暂停模拟,暂停以后快进继续以及不间断模拟。
+         */
+        get cullingMode(): __private._cocos_vfx_define__CullingMode;
+        set cullingMode(val: __private._cocos_vfx_define__CullingMode);
+        get finishAction(): __private._cocos_vfx_define__FinishAction;
+        set finishAction(val: __private._cocos_vfx_define__FinishAction);
+        get isPlaying(): boolean;
+        get isPaused(): boolean;
+        get isStopped(): boolean;
+        get isEmitting(): boolean;
+        get time(): number;
+        get emitterStage(): __private._cocos_vfx_vfx_module__VFXStage;
+        get spawnStage(): __private._cocos_vfx_vfx_module__VFXStage;
+        get updateStage(): __private._cocos_vfx_vfx_module__VFXStage;
+        get eventHandlers(): __private._cocos_vfx_event_handler__EventHandler[];
+        get renderers(): ParticleRenderer[];
+        get eventHandlerCount(): number;
+        /**
+         * @zh 获取当前粒子数量
+         */
+        get particleCount(): number;
+        get rendererCount(): number;
+        get lastSimulateFrame(): number;
+        get boundsMin(): Readonly<math.Vec3>;
+        get boundsMax(): Readonly<math.Vec3>;
+        /**
+         * @en play particle system
+         * @zh 播放粒子效果。
+         */
+        play(): void;
+        /**
+         * @en pause particle system
+         * @zh 暂停播放粒子效果。
+         */
+        pause(): void;
+        /**
+         * @en stop particle system
+         * @zh 停止播放粒子。
+         */
+        stop(clear?: boolean): void;
+        /**
+         * @en remove all particles from current particle system.
+         * @zh 将所有粒子从粒子系统中清除。
+         */
+        clear(): void;
+    }
+    export class VFXRenderer extends ModelRenderer {
+        get sharedMaterials(): (Material | null)[];
+        set sharedMaterials(val: (Material | null)[]);
+        onEnable(): void;
+        onDisable(): void;
+        onDestroy(): void;
+        updateRenderData(): void;
+    }
+    export abstract class VFXExpression {
+        get usage(): __private._cocos_vfx_vfx_module__VFXExecutionStage;
+        abstract get valueType(): VFXValueType;
+        abstract get isConstant(): boolean;
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXModule): void;
+        requireRecompile(): void;
+        abstract bind(parameterMap: VFXParameterMap): void;
+    }
+    export class VFXParameterMap {
+        get count(): number;
+        has(param: VFXParameter): boolean;
+        ensure(param: VFXParameter): void;
+        getValueEntriesWithNamespace(namespace: string): ReadonlyArray<VFXValue>;
+        getBoolValue(param: VFXParameter): VFXBool;
+        getBoolArrayValue(param: VFXParameter): VFXBoolArray;
+        getColorValue(param: VFXParameter): VFXColor;
+        getColorArrayValue(param: VFXParameter): VFXColorArray;
+        getFloatValue(param: VFXParameter): VFXFloat;
+        getFloatArrayVale(param: VFXParameter): VFXFloatArray;
+        getInt32Value(param: VFXParameter): VFXInt32;
+        getInt32ArrayValue(param: VFXParameter): VFXInt32Array;
+        getMat3Value(param: VFXParameter): VFXMat3;
+        getMat3ArrayValue(param: VFXParameter): VFXMat3Array;
+        getMat4Value(param: VFXParameter): VFXMat4;
+        getMat4ArrayValue(param: VFXParameter): VFXMat4Array;
+        getQuatValue(param: VFXParameter): VFXQuat;
+        getQuatArrayValue(param: VFXParameter): VFXQuatArray;
+        getUint8Value(param: VFXParameter): VFXUint8;
+        getUint8ArrayValue(param: VFXParameter): VFXUint8Array;
+        getUint32Value(param: VFXParameter): VFXUint32;
+        getUint32ArrayValue(param: VFXParameter): VFXUint32Array;
+        getVec2Value(param: VFXParameter): VFXVec2;
+        getVec2ArrayValue(param: VFXParameter): VFXVec2Array;
+        getVec3Value(param: VFXParameter): VFXVec3;
+        getVec3ArrayValue(param: VFXParameter): VFXVec3Array;
+        getVec4Value(param: VFXParameter): VFXVec4;
+        getVec4ArrayValue(param: VFXParameter): VFXVec4Array;
+        getEventValue(param: VFXParameter): VFXEvent;
+        getEventArrayValue(param: VFXParameter): VFXEventArray;
+        getSpawnInfoValue(param: VFXParameter): VFXSpawnInfo;
+        getSpawnInfoArrayValue(param: VFXParameter): VFXSpawnInfoArray;
+        getValueUnsafe<T extends VFXValue>(param: VFXParameter): T;
+        add(param: VFXParameter): void;
+        remove(param: VFXParameter): void;
+        reset(): void;
+    }
+    export abstract class ParticleRenderer {
+        get enabled(): boolean;
+        set enabled(val: boolean);
+        abstract get name(): string;
+        get sharedMaterial(): Material | null;
+        set sharedMaterial(val: Material | null);
+        get material(): renderer.MaterialInstance | null;
+        set material(val: renderer.MaterialInstance | null);
+        get renderingSubMesh(): RenderingSubMesh | null;
+        get vertexCount(): number;
+        get indexCount(): number;
+        get instanceCount(): number;
+        get firstInstance(): number;
+        get firstVertex(): number;
+        get firstIndex(): number;
+        protected _isMaterialDirty: boolean;
+        protected _renderingSubMesh: RenderingSubMesh | null;
+        protected _vertexCount: number;
+        protected _firstIndex: number;
+        protected _indexCount: number;
+        protected _instanceCount: number;
+        protected _firstInstance: number;
+        protected _firstVertex: number;
+        abstract render(parameterMap: VFXParameterMap, count: number): any;
+    }
+    export const BATCH_OPERATION_THRESHOLD_VEC3 = 330;
+    export const BATCH_OPERATION_THRESHOLD = 1000;
+    export type Handle = number;
+    export enum VFXValueType {
+        FLOAT = 0,
+        BOOL = 1,
+        VEC2 = 2,
+        VEC3 = 3,
+        VEC4 = 4,
+        QUAT = 5,
+        COLOR = 6,
+        INT32 = 7,
+        UINT32 = 8,
+        UINT8 = 9,
+        MAT3 = 10,
+        MAT4 = 11,
+        EVENT = 12,
+        SPAWN_INFO = 13
+    }
+    export class VFXParameter {
+        get id(): number;
+        get type(): VFXValueType;
+        get namespace(): string;
+        get isArray(): boolean;
+        get name(): string;
+        set name(val: string);
+        constructor(id: number, name: string, type: VFXValueType, namespace: string, isArray: boolean);
+    }
+    export class VFXParameterRegistry {
+        register(parameter: VFXParameter): void;
+        unregister(parameter: VFXParameter): void;
+        findParameterById(id: number): VFXParameter | null;
+        findParameterByName(name: string): VFXParameter | null;
+        clear(): void;
+    }
+    export abstract class VFXValue {
+        get isArray(): boolean;
+        abstract get type(): VFXValueType;
+    }
+    export abstract class VFXArray extends VFXValue {
+        get capacity(): number;
+        get isArray(): boolean;
+        protected _capacity: number;
+        abstract reserve(capacity: number): any;
+        abstract moveTo(a: Handle, b: Handle): any;
+        abstract copyFrom(src: VFXArray, fromIndex: Handle, toIndex: Handle): any;
+    }
+    export class VFXDynamicBuffer {
+        get buffer(): gfx.Buffer;
+        get floatDataView(): Float32Array;
+        get uint32DataView(): Uint32Array;
+        get uint16DataView(): Uint16Array;
+        get usedCount(): number;
+        set usedCount(val: number);
+        get capacity(): number;
+        constructor(device: gfx.Device, size: number, bufferUsage: gfx.BufferUsageBit);
+        update(): void;
+        reset(): void;
+        destroy(): void;
+    }
+    export class ScaleColorModule extends __private._cocos_vfx_vfx_module__VFXModule {
+        /**
+         * @zh 颜色随时间变化的参数,各个 key 之间线性差值变化。
+         */
+        get scalar(): ColorExpression;
+        set scalar(val: ColorExpression);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export class ScaleVelocityModule extends __private._cocos_vfx_vfx_module__VFXModule {
+        get coordinateSpace(): __private._cocos_vfx_define__CoordinateSpace;
+        set coordinateSpace(val: __private._cocos_vfx_define__CoordinateSpace);
+        /**
+         * @zh 决定是否在每个轴上独立控制粒子大小。
+         */
+        get separateAxes(): boolean;
+        set separateAxes(val: boolean);
+        /**
+         * @zh 速度修正系数。
+         */
+        get scalar(): Vec3Expression;
+        set scalar(val: Vec3Expression);
+        get uniformScalar(): FloatExpression;
+        set uniformScalar(val: FloatExpression);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
     /**
+     * 粒子在发射形状上的分布方式
+     */
+    export enum DistributionMode {
+        /**
+         * 随机位置发射。
+         */
+        RANDOM = 0,
+        /**
+         * 设置一个位置发射。
+         */
+        DIRECT = 1,
+        /**
+         * 均匀分布在发射器形状上,依赖此帧发射的粒子总数。可以与 burst 配合使用。
+         */
+        UNIFORM = 2
+    }
+    export abstract class ShapeLocationModule extends __private._cocos_vfx_vfx_module__VFXModule {
+        /**
+         * @zh 粒子发射器位置。
+         */
+        get position(): Vec3Expression;
+        set position(val: Vec3Expression);
+        /**
+         * @zh 粒子发射器旋转角度。
+         */
+        get rotation(): Vec3Expression;
+        set rotation(val: Vec3Expression);
+        /**
+         * @zh 粒子发射器缩放比例。
+         */
+        get scale(): Vec3Expression;
+        set scale(val: Vec3Expression);
+        get origin(): Vec3Expression;
+        set origin(val: Vec3Expression);
+        protected storePosition: (index: number, pos: math.Vec3, position: VFXVec3Array) => void;
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+        protected storePositionFast(index: number, pos: math.Vec3, position: VFXVec3Array): void;
+        protected storePositionSlow(index: number, pos: math.Vec3, position: VFXVec3Array): void;
+    }
+    export class SpawnRateModule extends __private._cocos_vfx_vfx_module__VFXModule {
+        /**
+         * @zh 每秒发射的粒子数。
+         */
+        get rate(): FloatExpression;
+        set rate(val: FloatExpression);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export class SpawnPerUnitModule extends __private._cocos_vfx_vfx_module__VFXModule {
+        /**
+         * @zh 每移动单位距离发射的粒子数。
+         */
+        get spawnSpacing(): FloatExpression;
+        set spawnSpacing(val: FloatExpression);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export class SpawnBurstModule extends __private._cocos_vfx_vfx_module__VFXModule {
+        /**
+         * @zh 发射的粒子的数量。
+         */
+        get count(): FloatExpression;
+        set count(val: FloatExpression);
+        /**
+         * @zh 粒子系统开始运行到触发此次 Burst 的时间。
+         */
+        get time(): FloatExpression;
+        set time(val: FloatExpression);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export class SetPositionModule extends __private._cocos_vfx_vfx_module__VFXModule {
+        /**
+         * @zh 设置粒子颜色。
+         */
+        get position(): Vec3Expression;
+        set position(val: Vec3Expression);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export class SetColorModule extends __private._cocos_vfx_vfx_module__VFXModule {
+        /**
+         * @zh 设置粒子颜色。
+         */
+        get color(): ColorExpression;
+        set color(val: ColorExpression);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export class SetSpriteRotationModule extends __private._cocos_vfx_vfx_module__VFXModule {
+        get rotation(): FloatExpression;
+        set rotation(val: FloatExpression);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export class SetLifeTimeModule extends __private._cocos_vfx_vfx_module__VFXModule {
+        /**
+         * @zh 粒子生命周期。
+         */
+        get lifetime(): FloatExpression;
+        set lifetime(val: FloatExpression);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export class SetMeshScaleModule extends __private._cocos_vfx_vfx_module__VFXModule {
+        get separateAxes(): boolean;
+        set separateAxes(val: boolean);
+        get uniformScale(): FloatExpression;
+        set uniformScale(val: FloatExpression);
+        get scale(): Vec3Expression;
+        set scale(val: Vec3Expression);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export class SetSpriteSizeModule extends __private._cocos_vfx_vfx_module__VFXModule {
+        get separateAxes(): boolean;
+        set separateAxes(val: boolean);
+        get uniformSize(): FloatExpression;
+        set uniformSize(val: FloatExpression);
+        get size(): Vec2Expression;
+        set size(val: Vec2Expression);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export class SetRibbonWidthModule extends __private._cocos_vfx_vfx_module__VFXModule {
+        get width(): FloatExpression;
+        set width(val: FloatExpression);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export class GravityModule extends __private._cocos_vfx_vfx_module__VFXModule {
+        get gravity(): Vec3Expression;
+        set gravity(val: Vec3Expression);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export class LocationEventGeneratorModule extends __private._cocos_vfx_vfx_module__VFXModule {
+        probability: number;
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export class DeathEventGeneratorModule extends __private._cocos_vfx_vfx_module__VFXModule {
+        probability: number;
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export class SolveForceAndVelocityModule extends __private._cocos_vfx_vfx_module__VFXModule {
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export enum LifetimeElapsedOperation {
+        KILL = 0,
+        LOOP_LIFETIME = 1,
+        KEEP = 2
+    }
+    export class ParticleStateModule extends __private._cocos_vfx_vfx_module__VFXModule {
+        get lifetimeElapsedOperation(): LifetimeElapsedOperation;
+        set lifetimeElapsedOperation(val: LifetimeElapsedOperation);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export enum SubUVAnimationMode {
+        LINEAR = 0,
+        CURVE = 1,
+        RANDOM = 2,
+        INFINITE_LOOP = 3,
+        DIRECT_INDEX = 4
+    }
+    export enum SubUVIndexChannel {
+        SUB_UV_INDEX1 = 0,
+        SUB_UV_INDEX2 = 1,
+        SUB_UV_INDEX3 = 2,
+        SUB_UV_INDEX4 = 3
+    }
+    export class SubUVAnimationModule extends __private._cocos_vfx_vfx_module__VFXModule {
+        get subImageSize(): Vec2Expression;
+        set subImageSize(val: Vec2Expression);
+        get useStartFrameRangeOverride(): boolean;
+        set useStartFrameRangeOverride(val: boolean);
+        get startFrameRangeOverride(): Int32Expression;
+        set startFrameRangeOverride(val: Int32Expression);
+        get useEndFrameRangeOverride(): boolean;
+        set useEndFrameRangeOverride(val: boolean);
+        get endFrameRangeOverride(): Int32Expression;
+        set endFrameRangeOverride(val: Int32Expression);
+        get subUVIndexChannel(): SubUVIndexChannel;
+        set subUVIndexChannel(val: SubUVIndexChannel);
+        /**
+         * @zh 动画播放方式 [[SubUVAnimationMode]]。
+         */
+        get subUVAnimationMode(): SubUVAnimationMode;
+        set subUVAnimationMode(val: SubUVAnimationMode);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export enum VelocityMode {
+        LINEAR = 0,
+        FROM_POINT = 1,
+        IN_CONE = 2
+    }
+    export class AddVelocityModule extends __private._cocos_vfx_vfx_module__VFXModule {
+        get velocityMode(): VelocityMode;
+        set velocityMode(val: VelocityMode);
+        get coordinateSpace(): __private._cocos_vfx_define__CoordinateSpace;
+        set coordinateSpace(val: __private._cocos_vfx_define__CoordinateSpace);
+        get velocity(): Vec3Expression;
+        set velocity(val: Vec3Expression);
+        get velocityScale(): FloatExpression;
+        set velocityScale(val: FloatExpression);
+        get speed(): FloatExpression;
+        set speed(val: FloatExpression);
+        get velocityOrigin(): Vec3Expression;
+        set velocityOrigin(val: Vec3Expression);
+        get defaultPosition(): Vec3Expression;
+        set defaultPosition(val: Vec3Expression);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export class BoxLocationModule extends ShapeLocationModule {
+        get boxSize(): Vec3Expression;
+        set boxSize(val: Vec3Expression);
+        get boxCenter(): Vec3Expression;
+        set boxCenter(val: Vec3Expression);
+        get surfaceOnly(): boolean;
+        set surfaceOnly(val: boolean);
+        get surfaceThickness(): FloatExpression;
+        set surfaceThickness(val: FloatExpression);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export class ScaleColorBySpeedModule extends __private._cocos_vfx_vfx_module__VFXModule {
+        get minScalar(): ColorExpression;
+        set minScalar(val: ColorExpression);
+        get maxScalar(): ColorExpression;
+        set maxScalar(val: ColorExpression);
+        get minSpeedThreshold(): FloatExpression;
+        set minSpeedThreshold(val: FloatExpression);
+        get maxSpeedThreshold(): FloatExpression;
+        set maxSpeedThreshold(val: FloatExpression);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export class ScaleMeshSizeModule extends __private._cocos_vfx_vfx_module__VFXModule {
+        /**
+         * @zh 决定是否在每个轴上独立控制粒子大小。
+         */
+        get separateAxes(): boolean;
+        set separateAxes(val: boolean);
+        /**
+         * @zh 定义一条曲线来决定粒子在其生命周期中的大小变化。
+         */
+        get uniformScalar(): FloatExpression;
+        set uniformScalar(val: FloatExpression);
+        get scalar(): Vec3Expression;
+        set scalar(val: Vec3Expression);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export class ScaleSpriteSizeModule extends __private._cocos_vfx_vfx_module__VFXModule {
+        /**
+         * @zh 决定是否在每个轴上独立控制粒子大小。
+         */
+        get separateAxes(): boolean;
+        set separateAxes(val: boolean);
+        /**
+         * @zh 定义一条曲线来决定粒子在其生命周期中的大小变化。
+         */
+        get uniformScalar(): FloatExpression;
+        set uniformScalar(val: FloatExpression);
+        get scalar(): Vec2Expression;
+        set scalar(val: Vec2Expression);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export class ScaleRibbonWidthModule extends __private._cocos_vfx_vfx_module__VFXModule {
+        /**
+         * @zh 定义一条曲线来决定粒子在其生命周期中的大小变化。
+         */
+        get scalar(): FloatExpression;
+        set scalar(val: FloatExpression);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export class ScaleMeshSizeBySpeedModule extends __private._cocos_vfx_vfx_module__VFXModule {
+        /**
+         * @zh 决定是否在每个轴上独立控制粒子大小。
+         */
+        get separateAxes(): boolean;
+        set separateAxes(val: boolean);
+        /**
+         * @zh 定义一条曲线来决定粒子在其生命周期中的大小变化。
+         */
+        get uniformMinScalar(): FloatExpression;
+        set uniformMinScalar(val: FloatExpression);
+        get uniformMaxScalar(): FloatExpression;
+        set uniformMaxScalar(val: FloatExpression);
+        get minScalar(): Vec3Expression;
+        set minScalar(val: Vec3Expression);
+        get maxScalar(): Vec3Expression;
+        set maxScalar(val: Vec3Expression);
+        get minSpeedThreshold(): FloatExpression;
+        set minSpeedThreshold(val: FloatExpression);
+        get maxSpeedThreshold(): FloatExpression;
+        set maxSpeedThreshold(val: FloatExpression);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export class ScaleSpriteSizeBySpeedModule extends __private._cocos_vfx_vfx_module__VFXModule {
+        /**
+         * @zh 决定是否在每个轴上独立控制粒子大小。
+         */
+        get separateAxes(): boolean;
+        set separateAxes(val: boolean);
+        /**
+         * @zh 定义一条曲线来决定粒子在其生命周期中的大小变化。
+         */
+        get uniformMinScalar(): FloatExpression;
+        set uniformMinScalar(val: FloatExpression);
+        get uniformMaxScalar(): FloatExpression;
+        set uniformMaxScalar(val: FloatExpression);
+        get minScalar(): Vec2Expression;
+        set minScalar(val: Vec2Expression);
+        get maxScalar(): Vec2Expression;
+        set maxScalar(val: Vec2Expression);
+        get minSpeedThreshold(): FloatExpression;
+        set minSpeedThreshold(val: FloatExpression);
+        get maxSpeedThreshold(): FloatExpression;
+        set maxSpeedThreshold(val: FloatExpression);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export class InheritVelocityModule extends __private._cocos_vfx_vfx_module__VFXModule {
+        get scale(): Vec3Expression;
+        set scale(val: Vec3Expression);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export class ConeLocationModule extends ShapeLocationModule {
+        get length(): FloatExpression;
+        set length(val: FloatExpression);
+        get angle(): FloatExpression;
+        set angle(val: FloatExpression);
+        get innerAngle(): FloatExpression;
+        set innerAngle(val: FloatExpression);
+        get radialAngle(): FloatExpression;
+        set radialAngle(val: FloatExpression);
+        get surfaceDistribution(): FloatExpression;
+        set surfaceDistribution(val: FloatExpression);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export class SphereLocationModule extends ShapeLocationModule {
+        get radius(): FloatExpression;
+        set radius(val: FloatExpression);
+        get distributionMode(): DistributionMode;
+        set distributionMode(val: DistributionMode);
+        get surfaceDistribution(): FloatExpression;
+        set surfaceDistribution(val: FloatExpression);
+        get hemisphereDistribution(): Vec2Expression;
+        set hemisphereDistribution(val: Vec2Expression);
+        get uPosition(): FloatExpression;
+        set uPosition(val: FloatExpression);
+        get vPosition(): FloatExpression;
+        set vPosition(val: FloatExpression);
+        get radiusPosition(): FloatExpression;
+        set radiusPosition(val: FloatExpression);
+        get uniformDistribution(): FloatExpression;
+        set uniformDistribution(val: FloatExpression);
+        get uniformSpiralAmount(): FloatExpression;
+        set uniformSpiralAmount(val: FloatExpression);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export enum TorusDistributionMode {
+        RANDOM = 0,
+        DIRECT = 1
+    }
+    export class TorusLocationModule extends ShapeLocationModule {
+        get largeRadius(): FloatExpression;
+        set largeRadius(val: FloatExpression);
+        get handleRadius(): FloatExpression;
+        set handleRadius(val: FloatExpression);
+        get distributionMode(): TorusDistributionMode;
+        set distributionMode(val: TorusDistributionMode);
+        get surfaceDistribution(): FloatExpression;
+        set surfaceDistribution(val: FloatExpression);
+        get uDistribution(): FloatExpression;
+        set uDistribution(val: FloatExpression);
+        get vDistribution(): FloatExpression;
+        set vDistribution(val: FloatExpression);
+        get uPosition(): FloatExpression;
+        set uPosition(val: FloatExpression);
+        get vPosition(): FloatExpression;
+        set vPosition(val: FloatExpression);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export class CircleLocationModule extends ShapeLocationModule {
+        /**
+         * @zh 粒子发射器半径。
+         */
+        get radius(): FloatExpression;
+        set radius(val: FloatExpression);
+        /**
+         * @zh 粒子在扇形范围内的发射方式 [[ArcMode]]。
+         */
+        get distributionMode(): DistributionMode;
+        set distributionMode(val: DistributionMode);
+        get radiusCoverage(): FloatExpression;
+        set radiusCoverage(val: FloatExpression);
+        get thetaCoverage(): FloatExpression;
+        set thetaCoverage(val: FloatExpression);
+        get uPosition(): FloatExpression;
+        set uPosition(val: FloatExpression);
+        get radiusPosition(): FloatExpression;
+        set radiusPosition(val: FloatExpression);
+        get uniformSpiralAmount(): FloatExpression;
+        set uniformSpiralAmount(val: FloatExpression);
+        get uniformSpiralFalloff(): FloatExpression;
+        set uniformSpiralFalloff(val: FloatExpression);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export class PlaneLocationModule extends ShapeLocationModule {
+        get planeSize(): Vec2Expression;
+        set planeSize(val: Vec2Expression);
+        get planeCenter(): Vec2Expression;
+        set planeCenter(val: Vec2Expression);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export class DragModule extends __private._cocos_vfx_vfx_module__VFXModule {
+        get drag(): FloatExpression;
+        set drag(val: FloatExpression);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export class LimitVelocityModule extends __private._cocos_vfx_vfx_module__VFXModule {
+        /**
+         * @zh 是否三个轴分开限制。
+         */
+        get separateAxes(): boolean;
+        set separateAxes(val: boolean);
+        /**
+         * @zh 计算速度下限时采用的坐标系 [[Space]]。
+         */
+        get coordinateSpace(): __private._cocos_vfx_define__CoordinateSpace;
+        set coordinateSpace(val: __private._cocos_vfx_define__CoordinateSpace);
+        /**
+         * @zh X 轴方向上的速度下限。
+         */
+        get uniformLimit(): FloatExpression;
+        set uniformLimit(val: FloatExpression);
+        /**
+         * @zh 速度下限。
+         */
+        get limit(): Vec3Expression;
+        set limit(val: Vec3Expression);
+        /**
+         * @zh 当前速度与速度下限的插值。
+         */
+        get dampen(): FloatExpression;
+        set dampen(val: FloatExpression);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export class ForceModule extends __private._cocos_vfx_vfx_module__VFXModule {
+        /**
+         * @zh 加速度计算时采用的坐标系 [[Space]]。
+         */
+        get coordinateSpace(): __private._cocos_vfx_define__CoordinateSpace;
+        set coordinateSpace(val: __private._cocos_vfx_define__CoordinateSpace);
+        /**
+         * @zh X 轴方向上的加速度分量。
+         */
+        get force(): Vec3Expression;
+        set force(val: Vec3Expression);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export function perlin3D(outDerivative: math.Vec2, position: math.Vec3, frequency: number, cache: PerlinNoise3DCache): math.Vec2;
+    export function perlin2D(outDerivative: math.Vec2, position: math.Vec2, frequency: number, cache: PerlinNoise2DCache): math.Vec2;
+    export function perlin1D(outDerivative: math.Vec2, x: number, frequency: number, cache: PerlinNoise1DCache): math.Vec2;
+    export class PerlinNoise1DCache {
+        i0: number;
+        i1: number;
+        g0: number;
+        g1: number;
+        db: number;
+        updateCache(x: number): void;
+    }
+    export class PerlinNoise2DCache {
+        ix0: number;
+        iy0: number;
+        ix1: number;
+        iy1: number;
+        g00: math.Vec2;
+        g10: math.Vec2;
+        g01: math.Vec2;
+        g11: math.Vec2;
+        db: math.Vec2;
+        dc: math.Vec2;
+        dd: math.Vec2;
+        updateCache(x: number, y: number): void;
+    }
+    export class PerlinNoise3DCache {
+        ix0: number;
+        iy0: number;
+        iz0: number;
+        ix1: number;
+        iy1: number;
+        iz1: number;
+        g000: math.Vec3;
+        g100: math.Vec3;
+        g010: math.Vec3;
+        g110: math.Vec3;
+        g001: math.Vec3;
+        g101: math.Vec3;
+        g011: math.Vec3;
+        g111: math.Vec3;
+        db: math.Vec3;
+        dc: math.Vec3;
+        dd: math.Vec3;
+        de: math.Vec3;
+        df: math.Vec3;
+        dg: math.Vec3;
+        dh: math.Vec3;
+        updateCache(x: number, y: number, z: number): void;
+    }
+    export enum Algorithm {
+        PERLIN = 0,
+        SIMPLEX = 1,
+        VALUE = 2
+    }
+    export enum Quality {
+        LOW = 0,
+        MIDDLE = 1,
+        HIGH = 2
+    }
+    export class CurlNoiseForceModule extends __private._cocos_vfx_vfx_module__VFXModule {
+        get separateAxes(): boolean;
+        set separateAxes(val: boolean);
+        get strength(): Vec3Expression;
+        set strength(value: Vec3Expression);
+        get uniformStrength(): FloatExpression;
+        set uniformStrength(val: FloatExpression);
+        get frequency(): FloatExpression;
+        set frequency(value: FloatExpression);
+        get panSpeed(): Vec3Expression;
+        set panSpeed(val: Vec3Expression);
+        get quality(): Quality;
+        set quality(val: Quality);
+        get enableRemap(): boolean;
+        set enableRemap(val: boolean);
+        get remapX(): RealCurve;
+        set remapX(value: RealCurve);
+        get remapY(): RealCurve;
+        set remapY(value: RealCurve);
+        get remapZ(): RealCurve;
+        set remapZ(value: RealCurve);
+        get remapCurve(): RealCurve;
+        set remapCurve(value: RealCurve);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export class SpriteRotationRateModule extends __private._cocos_vfx_vfx_module__VFXModule {
+        get rate(): FloatExpression;
+        set rate(val: FloatExpression);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export class UpdateMeshOrientationModule extends __private._cocos_vfx_vfx_module__VFXModule {
+        /**
+         * @zh 绕 X 轴设定旋转。
+         */
+        get rotationRate(): Vec3Expression;
+        set rotationRate(val: Vec3Expression);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export class EmitterStateModule extends __private._cocos_vfx_vfx_module__VFXModule {
+        /**
+         * @zh 粒子系统运行时间。
+         */
+        get loopDuration(): FloatExpression;
+        set loopDuration(val: FloatExpression);
+        /**
+         * @zh 粒子系统是否循环播放。
+         */
+        get loopMode(): __private._cocos_vfx_define__LoopMode;
+        set loopMode(val: __private._cocos_vfx_define__LoopMode);
+        get loopCount(): Int32Expression;
+        set loopCount(val: Int32Expression);
+        get delayMode(): __private._cocos_vfx_define__DelayMode;
+        set delayMode(val: __private._cocos_vfx_define__DelayMode);
+        /**
+         * @zh 粒子系统开始运行后,延迟粒子发射的时间。
+         */
+        get loopDelay(): FloatExpression;
+        set loopDelay(val: FloatExpression);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXStage): void;
+        execute(parameterMap: VFXParameterMap): void;
+    }
+    export class ConstantFloatExpression extends FloatExpression {
+        get value(): number;
+        set value(val: number);
+        get isConstant(): boolean;
+        constructor(value?: number);
+        bind(parameterMap: VFXParameterMap): void;
+        evaluate(index: number): number;
+    }
+    export abstract class FloatExpression extends VFXExpression {
+        get valueType(): VFXValueType;
+        abstract evaluate(index: number): number;
+    }
+    export abstract class ColorExpression extends VFXExpression {
+        get valueType(): VFXValueType;
+        abstract evaluate(index: number, out: math.Color): math.Color;
+    }
+    export class RandomRangeFloatExpression extends FloatExpression {
+        get maximum(): FloatExpression;
+        set maximum(val: FloatExpression);
+        get minimum(): FloatExpression;
+        set minimum(val: FloatExpression);
+        get evaluationMode(): __private._cocos_vfx_define__VFXRandomEvaluationMode;
+        set evaluationMode(val: __private._cocos_vfx_define__VFXRandomEvaluationMode);
+        get isConstant(): boolean;
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXModule): void;
+        bind(parameterMap: VFXParameterMap): void;
+        evaluate(index: number): number;
+    }
+    export class FloatFromCurveExpression extends FloatExpression {
+        get curve(): RealCurve;
+        set curve(val: RealCurve);
+        get scale(): FloatExpression;
+        set scale(val: FloatExpression);
+        get curveIndex(): FloatExpression;
+        set curveIndex(val: FloatExpression);
+        get isConstant(): boolean;
+        constructor(curve?: RealCurve);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXModule): void;
+        bind(parameterMap: VFXParameterMap): void;
+        evaluate(index: number): number;
+    }
+    export abstract class Vec3Expression extends VFXExpression {
+        get valueType(): VFXValueType;
+        abstract evaluate(index: number, out: math.Vec3): math.Vec3;
+    }
+    export abstract class Vec2Expression extends VFXExpression {
+        get valueType(): VFXValueType;
+        abstract evaluate(index: number, out: math.Vec2): math.Vec2;
+    }
+    export abstract class Int32Expression extends VFXExpression {
+        get valueType(): VFXValueType;
+        abstract evaluate(index: number): number;
+    }
+    export class ConstantVec3Expression extends Vec3Expression {
+        get x(): number;
+        set x(val: number);
+        get y(): number;
+        set y(val: number);
+        get z(): number;
+        set z(val: number);
+        get isConstant(): boolean;
+        constructor(x?: number, y?: number, z?: number);
+        bind(parameterMap: VFXParameterMap): void;
+        evaluate(index: number, out: math.Vec3): math.Vec3;
+    }
+    export class RandomRangeVec3Expression extends Vec3Expression {
+        get maximum(): Vec3Expression;
+        set maximum(val: Vec3Expression);
+        get minimum(): Vec3Expression;
+        set minimum(val: Vec3Expression);
+        get evaluationMode(): __private._cocos_vfx_define__VFXRandomEvaluationMode;
+        set evaluationMode(val: __private._cocos_vfx_define__VFXRandomEvaluationMode);
+        get isConstant(): boolean;
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXModule): void;
+        bind(parameterMap: VFXParameterMap): void;
+        evaluate(index: number, out: math.Vec3): math.Vec3;
+    }
+    export class RandomRangeVec2Expression extends Vec2Expression {
+        get maximum(): Vec2Expression;
+        set maximum(val: Vec2Expression);
+        get minimum(): Vec2Expression;
+        set minimum(val: Vec2Expression);
+        get evaluationMode(): __private._cocos_vfx_define__VFXRandomEvaluationMode;
+        set evaluationMode(val: __private._cocos_vfx_define__VFXRandomEvaluationMode);
+        get isConstant(): boolean;
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXModule): void;
+        bind(parameterMap: VFXParameterMap): void;
+        evaluate(index: number, out: math.Vec2): math.Vec2;
+    }
+    export class Vec3FromCurveExpression extends Vec3Expression {
+        get x(): RealCurve;
+        set x(val: RealCurve);
+        get y(): RealCurve;
+        set y(val: RealCurve);
+        get z(): RealCurve;
+        set z(val: RealCurve);
+        get scale(): Vec3Expression;
+        set scale(val: Vec3Expression);
+        get curveIndex(): FloatExpression;
+        set curveIndex(val: FloatExpression);
+        get isConstant(): boolean;
+        constructor(x?: RealCurve, y?: RealCurve, z?: RealCurve);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXModule): void;
+        bind(parameterMap: VFXParameterMap): void;
+        evaluate(index: number, out: math.Vec3): math.Vec3;
+    }
+    export class Vec3FromFloatExpression extends Vec3Expression {
+        get value(): FloatExpression;
+        set value(val: FloatExpression);
+        get isConstant(): boolean;
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXModule): void;
+        bind(parameterMap: VFXParameterMap): void;
+        evaluate(index: number, out: math.Vec3): math.Vec3;
+    }
+    export class MakeVec3Expression extends Vec3Expression {
+        get x(): FloatExpression;
+        set x(val: FloatExpression);
+        get y(): FloatExpression;
+        set y(val: FloatExpression);
+        get z(): FloatExpression;
+        set z(val: FloatExpression);
+        get isConstant(): boolean;
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXModule): void;
+        bind(parameterMap: VFXParameterMap): void;
+        evaluate(index: number, out: math.Vec3): math.Vec3;
+    }
+    export enum Vec3Channel {
+        X = 0,
+        Y = 1,
+        Z = 2
+    }
+    export class MakeFloatFromVec3Expression extends FloatExpression {
+        get vec3(): Vec3Expression;
+        set vec3(val: Vec3Expression);
+        get channel(): Vec3Channel;
+        set channel(val: Vec3Channel);
+        get isConstant(): boolean;
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXModule): void;
+        bind(parameterMap: VFXParameterMap): void;
+        evaluate(index: number): number;
+    }
+    export class ColorFromCurveExpression extends ColorExpression {
+        get curve(): Gradient;
+        set curve(val: Gradient);
+        get curveIndex(): FloatExpression;
+        set curveIndex(val: FloatExpression);
+        get isConstant(): boolean;
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXModule): void;
+        bind(parameterMap: VFXParameterMap): void;
+        evaluate(index: number, out: math.Color): math.Color;
+    }
+    export class RandomRangeColorExpression extends ColorExpression {
+        get maximum(): ColorExpression;
+        set maximum(val: ColorExpression);
+        get minimum(): ColorExpression;
+        set minimum(val: ColorExpression);
+        get evaluationMode(): __private._cocos_vfx_define__VFXRandomEvaluationMode;
+        set evaluationMode(val: __private._cocos_vfx_define__VFXRandomEvaluationMode);
+        get isConstant(): boolean;
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXModule): void;
+        bind(parameterMap: VFXParameterMap): void;
+        evaluate(index: number, out: math.Color): math.Color;
+    }
+    export class ConstantColorExpression extends ColorExpression {
+        get color(): Readonly<math.Color>;
+        set color(val: Readonly<math.Color>);
+        get isConstant(): boolean;
+        constructor(val?: math.Color);
+        bind(parameterMap: VFXParameterMap): void;
+        evaluate(index: number, out: math.Color): math.Color;
+    }
+    export class ConstantInt32Expression extends Int32Expression {
+        get value(): number;
+        set value(val: number);
+        get isConstant(): boolean;
+        constructor(value?: number);
+        bind(parameterMap: VFXParameterMap): void;
+        evaluate(index: number): number;
+    }
+    export class BindingFloatExpression extends FloatExpression {
+        get bindingParameterId(): number;
+        set bindingParameterId(val: number);
+        get isConstant(): boolean;
+        constructor(vfxParameterIdentity: VFXParameter);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXModule): void;
+        bind(parameterMap: VFXParameterMap): void;
+        evaluate(index: number): number;
+    }
+    export class ConstantVec2Expression extends Vec2Expression {
+        get x(): number;
+        set x(val: number);
+        get y(): number;
+        set y(val: number);
+        get isConstant(): boolean;
+        constructor(val?: math.Vec2);
+        bind(parameterMap: VFXParameterMap): void;
+        evaluate(index: number, out: math.Vec2): math.Vec2;
+    }
+    export class BindingVec3Expression extends Vec3Expression {
+        get isConstant(): boolean;
+        constructor(vfxParameterIdentity: VFXParameter);
+        compile(parameterMap: VFXParameterMap, owner: __private._cocos_vfx_vfx_module__VFXModule): void;
+        bind(parameterMap: VFXParameterMap): void;
+        evaluate(index: number, out: math.Vec3): math.Vec3;
+    }
+    export enum MeshFacingMode {
+        NONE = 0,
+        VELOCITY = 1,
+        CAMERA = 2
+    }
+    export class MeshParticleRenderer extends ParticleRenderer {
+        get name(): string;
+        /**
+         * @zh 粒子发射的模型。
+         */
+        get mesh(): Mesh | null;
+        set mesh(val: Mesh | null);
+        facingMode: MeshFacingMode;
+        render(parameterMap: VFXParameterMap, count: number): void;
+    }
+    export class RibbonParticleRenderer extends ParticleRenderer {
+        get name(): string;
+        render(parameterMap: VFXParameterMap, count: number): void;
+    }
+    /**
+     * @en Particle alignment mode.
+     * @zh 粒子的对齐模式。
+     * @enum SpriteParticleRenderer.AlignmentMode
+     */
+    export enum AlignmentMode {
+        NONE = 0,
+        VELOCITY = 1,
+        CUSTOM = 2
+    }
+    /**
+     * 粒子的朝向模式。
+     * @enum SpriteParticleRenderer.FacingMode
+     */
+    export enum SpriteFacingMode {
+        /**
+         * 粒子始终面向摄像机。
+         */
+        CAMERA = 0,
+        /**
+         * 粒子始终与 XZ 平面平行。
+         */
+        HORIZONTAL = 1,
+        /**
+         * 粒子始终与 Y 轴平行且朝向摄像机。
+         */
+        VERTICAL = 2,
+        /**
+         * 粒子朝向自定义朝向矢量
+         */
+        CUSTOM = 3
+    }
+    export class SpriteParticleRenderer extends ParticleRenderer {
+        get name(): string;
+        /**
+         * @zh 设定粒子朝向模式。
+         */
+        facingMode: SpriteFacingMode;
+        render(parameterMap: VFXParameterMap, count: number): void;
+    }
+    export class VFXVec3Array extends VFXArray {
+        get data(): Float32Array;
+        get type(): VFXValueType;
+        static scaleAndAdd(out: VFXVec3Array, a: VFXVec3Array, b: VFXVec3Array, scale: number, fromIndex: Handle, toIndex: Handle): void;
+        reserve(capacity: number): void;
+        /**
+         * Move data at a to b. the previous data at b will be overwrite.
+         * @param a the handle to be moved.
+         * @param b the handle to be overwrite.
+         */
+        moveTo(a: Handle, b: Handle): void;
+        getVec3At(out: math.Vec3, handle: Handle): math.Vec3;
+        setVec3At(val: math.Vec3, handle: Handle): void;
+        setUniformFloatAt(val: number, handle: Handle): void;
+        addVec3At(val: math.Vec3, handle: Handle): void;
+        multiplyVec3At(val: math.Vec3, handle: Handle): void;
+        multiplyScalarAt(val: number, handle: Handle): void;
+        copyFrom(src: VFXVec3Array, fromIndex: Handle, toIndex: Handle): void;
+        copyToTypedArray(dest: Float32Array, destOffset: number, stride: number, strideOffset: number, fromIndex: Handle, toIndex: Handle): void;
+        fill(val: math.Vec3, fromIndex: Handle, toIndex: Handle): void;
+    }
+    export class VFXVec3 extends VFXValue {
+        get type(): VFXValueType;
+        get data(): Readonly<math.Vec3>;
+        set data(val: Readonly<math.Vec3>);
+    }
+    export class VFXFloatArray extends VFXArray {
+        get data(): Float32Array;
+        get type(): VFXValueType;
+        reserve(capacity: number): void;
+        moveTo(a: number, b: number): void;
+        getFloatAt(handle: Handle): number;
+        setFloatAt(val: number, handle: Handle): void;
+        addFloatAt(val: number, handle: Handle): void;
+        multiplyFloatAt(val: number, handle: Handle): void;
+        copyFrom(src: VFXFloatArray, fromIndex: Handle, toIndex: Handle): void;
+        copyToTypedArray(dest: Float32Array, destOffset: number, stride: number, strideOffset: number, fromIndex: Handle, toIndex: Handle): void;
+        fill(val: number, fromIndex: number, toIndex: number): void;
+    }
+    export class VFXFloat extends VFXValue {
+        get type(): VFXValueType;
+        get data(): number;
+        set data(val: number);
+    }
+    export class VFXUint32Array extends VFXArray {
+        get data(): Uint32Array;
+        get type(): VFXValueType;
+        reserve(capacity: number): void;
+        moveTo(a: number, b: number): void;
+        getUint32At(handle: Handle): number;
+        setUint32At(val: number, handle: Handle): void;
+        copyFrom(src: VFXUint32Array, fromIndex: Handle, toIndex: Handle): void;
+        copyToTypedArray(dest: Uint32Array, destOffset: number, stride: number, strideOffset: number, fromIndex: Handle, toIndex: Handle): void;
+        fill(val: number, fromIndex: number, toIndex: number): void;
+    }
+    export class VFXUint32 extends VFXValue {
+        get type(): VFXValueType;
+        get data(): number;
+        set data(val: number);
+    }
+    export class VFXUint8Array extends VFXArray {
+        get data(): Uint8Array;
+        get type(): VFXValueType;
+        reserve(capacity: number): void;
+        moveTo(a: number, b: number): void;
+        getUint8At(handle: Handle): number;
+        setUint8At(val: number, handle: Handle): void;
+        copyFrom(src: VFXUint8Array, fromIndex: Handle, toIndex: Handle): void;
+        copyToTypedArray(dest: Uint8Array, destOffset: number, stride: number, strideOffset: number, fromIndex: Handle, toIndex: Handle): void;
+        fill(val: number, fromIndex: number, toIndex: number): void;
+    }
+    export class VFXUint8 extends VFXValue {
+        get type(): VFXValueType;
+        get data(): number;
+        set data(val: number);
+    }
+    export class VFXInt32Array extends VFXArray {
+        get data(): Int32Array;
+        get type(): VFXValueType;
+        reserve(capacity: number): void;
+        moveTo(a: number, b: number): void;
+        getInt32At(handle: Handle): number;
+        setInt32At(val: number, handle: Handle): void;
+        copyFrom(src: VFXInt32Array, fromIndex: Handle, toIndex: Handle): void;
+        copyToTypedArray(dest: Int32Array, destOffset: number, stride: number, strideOffset: number, fromIndex: Handle, toIndex: Handle): void;
+        fill(val: number, fromIndex: number, toIndex: number): void;
+    }
+    export class VFXInt32 extends VFXValue {
+        get type(): VFXValueType;
+        get data(): number;
+        set data(val: number);
+    }
+    export class VFXBoolArray extends VFXArray {
+        get data(): Uint8Array;
+        get type(): VFXValueType;
+        reserve(capacity: number): void;
+        moveTo(a: Handle, b: Handle): void;
+        getBoolAt(handle: Handle): boolean;
+        setBoolAt(val: boolean, handle: Handle): void;
+        copyFrom(src: VFXBoolArray, fromIndex: Handle, toIndex: Handle): void;
+        copyToTypedArray(dest: Uint8Array, destOffset: number, stride: number, strideOffset: number, fromIndex: Handle, toIndex: Handle): void;
+        fill(val: boolean, fromIndex: number, toIndex: number): void;
+    }
+    export class VFXBool extends VFXValue {
+        get type(): VFXValueType;
+        get data(): boolean;
+        set data(val: boolean);
+    }
+    export class VFXColorArray extends VFXArray {
+        get data(): Uint32Array;
+        get type(): VFXValueType;
+        reserve(capacity: number): void;
+        moveTo(a: Handle, b: Handle): void;
+        getColorAt(out: math.Color, handle: Handle): math.Color;
+        setColorAt(color: math.Color, handle: Handle): void;
+        multiplyColorAt(color: math.Color, handle: Handle): void;
+        fill(color: math.Color, fromIndex: Handle, toIndex: Handle): void;
+        copyToTypedArray(dest: Uint32Array, destOffset: number, stride: number, strideOffset: number, fromIndex: Handle, toIndex: Handle): void;
+        copyFrom(src: VFXColorArray, fromIndex: Handle, toIndex: Handle): void;
+    }
+    export class VFXColor extends VFXValue {
+        get type(): VFXValueType;
+        get data(): Readonly<math.Color>;
+        set data(val: Readonly<math.Color>);
+    }
+    export class VFXVec2Array extends VFXArray {
+        get data(): Float32Array;
+        get type(): VFXValueType;
+        static multiplyScalar(out: VFXVec2Array, a: VFXVec2Array, scale: number, fromIndex: Handle, toIndex: Handle): void;
+        reserve(capacity: number): void;
+        /**
+         * Move data at a to b. the previous data at b will be overwrite.
+         * @param a the handle to be moved.
+         * @param b the handle to be overwrite.
+         */
+        moveTo(a: Handle, b: Handle): void;
+        getVec2At(out: math.Vec2, handle: Handle): math.Vec2;
+        setVec2At(val: math.Vec2, handle: Handle): void;
+        setUniformFloatAt(val: number, handle: Handle): void;
+        addVec2At(val: math.Vec2, handle: Handle): void;
+        multiplyVec2At(val: math.Vec2, handle: Handle): void;
+        multiplyScalarAt(val: number, handle: Handle): void;
+        copyFrom(src: VFXVec2Array, fromIndex: Handle, toIndex: Handle): void;
+        copyToTypedArray(dest: Float32Array, destOffset: number, stride: number, strideOffset: number, fromIndex: Handle, toIndex: Handle): void;
+        fill(val: math.Vec2, fromIndex: Handle, toIndex: Handle): void;
+    }
+    export class VFXVec2 extends VFXValue {
+        get type(): VFXValueType;
+        get data(): Readonly<math.Vec2>;
+        set data(val: Readonly<math.Vec2>);
+    }
+    export class VFXVec4Array extends VFXArray {
+        get data(): Float32Array;
+        get type(): VFXValueType;
+        reserve(capacity: number): void;
+        /**
+         * Move data at a to b. the previous data at b will be overwrite.
+         * @param a the handle to be moved.
+         * @param b the handle to be overwrite.
+         */
+        moveTo(a: Handle, b: Handle): void;
+        getVec4At(out: math.Vec4, handle: Handle): math.Vec4;
+        setVec4At(val: math.Vec4, handle: Handle): void;
+        setUniformFloatAt(val: number, handle: Handle): void;
+        addVec4At(val: math.Vec4, handle: Handle): void;
+        multiplyVec4At(val: math.Vec4, handle: Handle): void;
+        multiplyScalarAt(val: number, handle: Handle): void;
+        copyFrom(src: VFXVec4Array, fromIndex: Handle, toIndex: Handle): void;
+        copyToTypedArray(dest: Float32Array, destOffset: number, stride: number, strideOffset: number, fromIndex: Handle, toIndex: Handle): void;
+        fill(val: math.Vec4, fromIndex: Handle, toIndex: Handle): void;
+    }
+    export class VFXVec4 extends VFXValue {
+        get type(): VFXValueType;
+        get data(): Readonly<math.Vec4>;
+        set data(val: Readonly<math.Vec4>);
+    }
+    export class VFXQuatArray extends VFXArray {
+        get data(): Float32Array;
+        get type(): VFXValueType;
+        reserve(capacity: number): void;
+        /**
+         * Move data at a to b. the previous data at b will be overwrite.
+         * @param a the handle to be moved.
+         * @param b the handle to be overwrite.
+         */
+        moveTo(a: Handle, b: Handle): void;
+        getQuatAt(out: math.Quat, handle: Handle): math.Quat;
+        setQuatAt(val: math.Quat, handle: Handle): void;
+        multiplyQuatAt(val: math.Quat, handle: Handle): void;
+        multiplyScalarAt(val: number, handle: Handle): void;
+        copyFrom(src: VFXQuatArray, fromIndex: Handle, toIndex: Handle): void;
+        copyToTypedArray(dest: Float32Array, destOffset: number, stride: number, strideOffset: number, fromIndex: Handle, toIndex: Handle): void;
+        fill(val: math.Vec3, fromIndex: Handle, toIndex: Handle): void;
+    }
+    export class VFXQuat extends VFXValue {
+        get type(): VFXValueType;
+        get data(): Readonly<math.Quat>;
+        set data(val: Readonly<math.Quat>);
+    }
+    export class VFXMat4Array extends VFXArray {
+        get data(): Float32Array;
+        get type(): VFXValueType;
+        reserve(capacity: number): void;
+        moveTo(a: number, b: number): void;
+        getMat4At(out: math.Mat4, handle: number): math.Mat4;
+        setMat4At(val: math.Mat4, handle: number): void;
+        copyFrom(src: VFXMat4Array, fromIndex: number, toIndex: number): void;
+        copyToTypedArray(dest: ArrayBufferView, destOffset: number, stride: number, strideOffset: number, fromIndex: number, toIndex: number): void;
+    }
+    export class VFXMat4 extends VFXValue {
+        get type(): VFXValueType;
+        get data(): Readonly<math.Mat4>;
+        set data(val: Readonly<math.Mat4>);
+    }
+    export class VFXMat3Array extends VFXArray {
+        get data(): Float32Array;
+        get type(): VFXValueType;
+        reserve(capacity: number): void;
+        moveTo(a: number, b: number): void;
+        getMat3At(out: math.Mat3, handle: number): math.Mat3;
+        setMat3At(val: math.Mat3, handle: number): void;
+        copyFrom(src: VFXMat3Array, fromIndex: number, toIndex: number): void;
+        copyToTypedArray(dest: ArrayBufferView, destOffset: number, stride: number, strideOffset: number, fromIndex: number, toIndex: number): void;
+    }
+    export class VFXMat3 extends VFXValue {
+        get type(): VFXValueType;
+        get data(): Readonly<math.Mat3>;
+        set data(val: Readonly<math.Mat3>);
+    }
+    export class VFXEventInfo {
+        type: __private._cocos_vfx_define__VFXEventType;
+        particleId: number;
+        currentTime: number;
+        prevTime: number;
+        position: math.Vec3;
+        velocity: math.Vec3;
+        color: math.Color;
+        copy(src: VFXEventInfo): void;
+    }
+    export class VFXEventArray extends VFXArray {
+        get type(): VFXValueType;
+        reserve(capacity: number): void;
+        moveTo(a: Handle, b: Handle): void;
+        getEventAt(out: VFXEventInfo, handle: Handle): VFXEventInfo;
+        setEventAt(event: VFXEventInfo, handle: Handle): void;
+        copyFrom(src: VFXEventArray, fromIndex: Handle, toIndex: Handle): void;
+    }
+    export class VFXEvent extends VFXValue {
+        get type(): VFXValueType;
+        get data(): Readonly<VFXEventInfo>;
+        set data(val: Readonly<VFXEventInfo>);
+    }
+    export class SpawnInfo {
+        count: number;
+        intervalDt: number;
+        interpStartDt: number;
+        copy(val: Readonly<SpawnInfo>): void;
+    }
+    export class VFXSpawnInfoArray extends VFXArray {
+        get type(): VFXValueType;
+        reserve(capacity: number): void;
+        moveTo(a: Handle, b: Handle): void;
+        getSpawnInfoAt(out: SpawnInfo, handle: Handle): SpawnInfo;
+        setSpawnInfoAt(spawnInfo: SpawnInfo, handle: Handle): void;
+        copyFrom(src: VFXSpawnInfoArray, fromIndex: Handle, toIndex: Handle): void;
+    }
+    export class VFXSpawnInfo extends VFXValue {
+        get type(): VFXValueType;
+        get data(): Readonly<SpawnInfo>;
+        set data(val: Readonly<SpawnInfo>);
+    }
+    /**
      * @en
      * The video clip asset.
      * @zh
      * 视频片段资源。
@@ -67490,8 +68899,124 @@
              * @deprecated since v3.5.0, this is an engine private interface that will be removed in the future.
              */
             _buildResult(containerW: any, containerH: any, contentW: any, contentH: any, scaleX: any, scaleY: any): _cocos_ui_view__AdaptResult;
         }
+        /**
+         * @en Particle emitter culling mode
+         * @zh 粒子的剔除模式。
+         */
+        export enum _cocos_vfx_define__CullingMode {
+            ALWAYS_SIMULATE = 0,
+            PAUSE = 1,
+            PAUSE_AND_CATCHUP = 2,
+            STOP_EMITTING = 3,
+            CLEAR_AND_FINISH = 4
+        }
+        export enum _cocos_vfx_define__ScalingMode {
+            HIERARCHY = 0,
+            LOCAL = 1,
+            SHAPE = 2
+        }
+        export enum _cocos_vfx_define__CapacityMode {
+            AUTO = 0,
+            FIXED = 1
+        }
+        export enum _cocos_vfx_define__BoundsMode {
+            AUTO = 0,
+            FIXED = 1
+        }
+        export enum _cocos_vfx_define__FinishAction {
+            NONE = 0,
+            DESTROY = 1,
+            DISABLE = 2
+        }
+        export enum _cocos_vfx_vfx_module__VFXExecutionStageFlags {
+            NONE = 0,
+            EMITTER = 1,
+            SPAWN = 2,
+            UPDATE = 4,
+            EVENT_HANDLER = 8
+        }
+        export class _cocos_vfx_vfx_module__VFXModuleIdentity {
+            readonly ctor: _types_globals__Constructor<_cocos_vfx_vfx_module__VFXModule> | null;
+            readonly name: string;
+            readonly execStages: _cocos_vfx_vfx_module__VFXExecutionStageFlags;
+            readonly provideParams: string[];
+            readonly consumeParams: string[];
+            constructor(ctor: _types_globals__Constructor<_cocos_vfx_vfx_module__VFXModule>, name: string, execStages: _cocos_vfx_vfx_module__VFXExecutionStageFlags, provideParams?: string[], consumeParams?: string[]);
+        }
+        export enum _cocos_vfx_vfx_module__VFXExecutionStage {
+            UNKNOWN = "Bad expression <-1>",
+            EMITTER = 0,
+            SPAWN = 1,
+            UPDATE = 2,
+            EVENT_HANDLER = 3
+        }
+        export abstract class _cocos_vfx_vfx_module__VFXModule {
+            static register(name: string, stages: _cocos_vfx_vfx_module__VFXExecutionStageFlags, provide?: string[], consume?: string[]): (ctor: _types_globals__Constructor<_cocos_vfx_vfx_module__VFXModule>) => void;
+            static get allRegisteredModules(): ReadonlyArray<_cocos_vfx_vfx_module__VFXModuleIdentity>;
+            static findAProperPositionToInsert(modules: _cocos_vfx_vfx_module__VFXModule[], module: _cocos_vfx_vfx_module__VFXModule, fromIndex: number, toIndex: number): number;
+            static getModuleIdentityByClassUnsafe(ctor: _types_globals__Constructor<_cocos_vfx_vfx_module__VFXModule>): _cocos_vfx_vfx_module__VFXModuleIdentity;
+            static getModuleIdentityByClass(ctor: _types_globals__Constructor<_cocos_vfx_vfx_module__VFXModule>): _cocos_vfx_vfx_module__VFXModuleIdentity | null;
+            static getModuleIdentityByName(name: string): _cocos_vfx_vfx_module__VFXModuleIdentity | null;
+            static getModuleIdentitiesWithSpecificStage(stage: _cocos_vfx_vfx_module__VFXExecutionStage, out: _cocos_vfx_vfx_module__VFXModuleIdentity[]): _cocos_vfx_vfx_module__VFXModuleIdentity[];
+            static clearRegisteredModules(): void;
+            get enabled(): boolean;
+            set enabled(val: boolean);
+            get name(): string | undefined;
+            get usage(): _cocos_vfx_vfx_module__VFXExecutionStage;
+            protected needsFilterSerialization(): boolean;
+            protected getSerializedProps(): string[];
+            requireRecompile(): void;
+        }
+        export class _cocos_vfx_vfx_module__VFXStage {
+            get modules(): ReadonlyArray<_cocos_vfx_vfx_module__VFXModule>;
+            get usage(): _cocos_vfx_vfx_module__VFXExecutionStage;
+            constructor(stage?: _cocos_vfx_vfx_module__VFXExecutionStage);
+            /**
+             * @zh 添加粒子模块
+             */
+            addModule<T extends _cocos_vfx_vfx_module__VFXModule>(ModuleType: _types_globals__Constructor<T>): T;
+            getModule<T extends _cocos_vfx_vfx_module__VFXModule>(moduleType: _types_globals__Constructor<T> | _types_globals__AbstractedConstructor<T>): T | null;
+            getModules<T extends _cocos_vfx_vfx_module__VFXModule>(moduleType: _types_globals__Constructor<T> | _types_globals__AbstractedConstructor<T>, out: Array<any>): Array<T>;
+            moveUpModule(module: _cocos_vfx_vfx_module__VFXModule): void;
+            moveDownModule(module: _cocos_vfx_vfx_module__VFXModule): void;
+            removeModule(module: _cocos_vfx_vfx_module__VFXModule): void;
+            getOrAddModule<T extends _cocos_vfx_vfx_module__VFXModule>(moduleType: _types_globals__Constructor<T>): T;
+            requireRecompile(): void;
+        }
+        export enum _cocos_vfx_define__VFXEventType {
+            UNKNOWN = 0,
+            LOCATION = 1,
+            DEATH = 2,
+            COLLISION = 3
+        }
+        export class _cocos_vfx_event_handler__EventHandler extends _cocos_vfx_vfx_module__VFXStage {
+            target: VFXEmitter | null;
+            eventType: _cocos_vfx_define__VFXEventType;
+            spawnCount: number;
+            inheritedProperties: number;
+            constructor();
+        }
+        export enum _cocos_vfx_define__CoordinateSpace {
+            WORLD = 0,
+            LOCAL = 1,
+            SIMULATION = 2
+        }
+        export enum _cocos_vfx_define__LoopMode {
+            INFINITE = 0,
+            ONCE = 1,
+            MULTIPLE = 2
+        }
+        export enum _cocos_vfx_define__DelayMode {
+            NONE = 0,
+            FIRST_LOOP_ONLY = 1,
+            EVERY_LOOP = 2
+        }
+        export enum _cocos_vfx_define__VFXRandomEvaluationMode {
+            SPAWN_ONLY = 0,
+            EVERY_FRAME = 1
+        }
         export enum _cocos_video_video_player_enums__EventType {
             /**
              * @en None.
              * @zh 无。

@@ -401,14 +402,18 @@ export class RealCurve extends KeyframeCurve<RealKeyframeValue> {
}

const iNext = ~index;
assertIsTrue(iNext !== 0 && iNext !== nFrames && nFrames > 1);
if (DEBUG) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This method can't be shaked?

SantyWang and others added 24 commits June 2, 2023 16:35
* add dynamic buffer

* modify dynamic buffer

* move functions to vfx-manager

* update buffer once
cocos#15278)

* Marionette: add editor method to copy state machine as pose graph node

* Fix copy

* Fix Clone
* fix code style

* rm getter
bofeng-song and others added 28 commits July 6, 2023 15:42
…mePlayer.stop on the Alipay platform. (cocos#15633)

* fix audio can not be stopped while call MiniGamePlayer's stop
* Fix spine replacement skin and animation bone rendering data not refreshed.

# Conflicts:
#	cocos/animation/marionette/graph-eval.ts
#	cocos/physics/framework/components/constraints/hinge-constraint.ts
#	cocos/rendering/custom/pipeline.ts
#	cocos/rendering/custom/private.ts
#	cocos/rendering/custom/render-graph.ts
#	cocos/rendering/post-process/passes/forward-pass.ts
#	cocos/rendering/post-process/passes/forward-transparency-pass.ts
#	cocos/rendering/post-process/passes/index.ts
#	cocos/rendering/post-process/passes/tone-mapping-pass.ts
#	cocos/rendering/post-process/post-process-builder.ts
#	editor/assets/effects/advanced/leaf.effect
#	editor/i18n/en/animation.js
#	editor/i18n/en/localization.js
#	editor/i18n/zh/animation.js
#	editor/i18n/zh/localization.js
#	editor/inspector/assets/fbx/model.js
#	native/cocos/renderer/pipeline/custom/NativeExecutor.cpp
#	native/cocos/renderer/pipeline/custom/NativePipeline.cpp
#	native/cocos/renderer/pipeline/custom/NativePipelineTypes.h
#	native/cocos/renderer/pipeline/custom/NativeRenderGraph.cpp
#	native/cocos/renderer/pipeline/custom/RenderInterfaceTypes.h

* Add bone & IkConstraintData & IkConstraint & PathConstraintData & PathConstraint setter bindings.

* Add TrackEntry & AnimationState & Animation setter bindings.

* Fix the problem that SkeletonData removal skin  and animation are not removed on editor.

* fix the problem of skeleton animation delete refresh.

* add Skeleton getState interface.

* optimize the requestDrawData parameter name & fix get texture by textureID.

* add getAttachments

* Add slots and atlas mapping hash.

* optimize atlas hash code.

* parsing atlas from native layer.

* rollback to remove the skeleton component of forced refresh.

* revert some change

* optimize get atlas page index & fix multi-posting texture cache mode does not display.

* fix extra space.

---------

Co-authored-by: zxx43 <[email protected]>
Co-authored-by: santy-wang <[email protected]>
…0. (cocos#15662)

* fix spine animation does not render in cache mode when total time is 0.

* fix code format.
* export getAttachments

* export getAttachments and other interface

* change string to const string&
…ipt interfaces. (cocos#15664)

* Fix the issue of aligning the enumeration order of event types in Wasm (native) and TypeScript interfaces.

* optimize EventType_Complete order.

* fix mapping bindings.
* fix problem when skin changed and slot texture changed

* update external version
@SantyWang SantyWang closed this Aug 9, 2023
@SantyWang SantyWang deleted the new-particle branch October 17, 2023 03:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.