@galacean/effects-core 2.0.0-alpha.8 → 2.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/README.md +25 -21
  2. package/dist/__definations__/fbeffects-object-data.d.ts +28 -0
  3. package/dist/__definations__/fbeffects-package-data.d.ts +26 -0
  4. package/dist/__definations__/fbgeometry-data.d.ts +77 -0
  5. package/dist/__definations__/fbsub-mesh.d.ts +26 -0
  6. package/dist/__definations__/fbvertex-channel.d.ts +33 -0
  7. package/dist/__definations__/fbvertex-data.d.ts +27 -0
  8. package/dist/__definations__/index.d.ts +6 -0
  9. package/dist/asset-loader.d.ts +0 -13
  10. package/dist/asset-manager.d.ts +1 -75
  11. package/dist/binary-asset.d.ts +6 -0
  12. package/dist/camera.d.ts +10 -1
  13. package/dist/canvas-pool.d.ts +9 -0
  14. package/dist/comp-vfx-item.d.ts +26 -12
  15. package/dist/components/component.d.ts +4 -14
  16. package/dist/components/effect-component.d.ts +3 -23
  17. package/dist/components/index.d.ts +1 -0
  18. package/dist/components/post-process-volume.d.ts +15 -0
  19. package/dist/components/renderer-component.d.ts +2 -2
  20. package/dist/composition-source-manager.d.ts +8 -7
  21. package/dist/composition.d.ts +71 -64
  22. package/dist/constants.d.ts +1 -1
  23. package/dist/decorators.d.ts +4 -3
  24. package/dist/downloader.d.ts +9 -0
  25. package/dist/effects-object.d.ts +4 -1
  26. package/dist/effects-package.d.ts +19 -0
  27. package/dist/engine.d.ts +7 -4
  28. package/dist/events/event-emitter.d.ts +46 -0
  29. package/dist/events/index.d.ts +2 -0
  30. package/dist/events/types.d.ts +37 -0
  31. package/dist/fallback/camera.d.ts +2 -0
  32. package/dist/fallback/index.d.ts +12 -0
  33. package/dist/fallback/interact.d.ts +2 -0
  34. package/dist/fallback/migration.d.ts +20 -0
  35. package/dist/fallback/particle.d.ts +2 -0
  36. package/dist/fallback/sprite.d.ts +3 -0
  37. package/dist/fallback/utils.d.ts +25 -0
  38. package/dist/gl/create-gl-context.d.ts +2 -1
  39. package/dist/gl/index.d.ts +3 -0
  40. package/dist/image-asset.d.ts +5 -0
  41. package/dist/index.d.ts +9 -4
  42. package/dist/index.js +18920 -14116
  43. package/dist/index.js.map +1 -1
  44. package/dist/index.mjs +19155 -14360
  45. package/dist/index.mjs.map +1 -1
  46. package/dist/material/material.d.ts +17 -7
  47. package/dist/material/utils.d.ts +0 -10
  48. package/dist/math/bezier.d.ts +99 -0
  49. package/dist/math/keyframe-info.d.ts +39 -0
  50. package/dist/math/translate.d.ts +3 -2
  51. package/dist/math/utils.d.ts +5 -4
  52. package/dist/math/value-getter.d.ts +52 -26
  53. package/dist/pass-render-level.d.ts +3 -1
  54. package/dist/plugin-system.d.ts +3 -4
  55. package/dist/plugins/cal/animation-playable.d.ts +2 -1
  56. package/dist/plugins/cal/calculate-item.d.ts +5 -39
  57. package/dist/plugins/cal/calculate-vfx-item.d.ts +54 -13
  58. package/dist/plugins/cal/playable-graph.d.ts +72 -21
  59. package/dist/plugins/cal/timeline-asset.d.ts +27 -0
  60. package/dist/plugins/camera/camera-controller-node.d.ts +2 -13
  61. package/dist/plugins/index.d.ts +8 -3
  62. package/dist/plugins/interact/click-handler.d.ts +3 -3
  63. package/dist/plugins/interact/event-system.d.ts +0 -2
  64. package/dist/plugins/interact/interact-item.d.ts +15 -1
  65. package/dist/plugins/particle/burst.d.ts +10 -3
  66. package/dist/plugins/particle/link.d.ts +1 -0
  67. package/dist/plugins/particle/particle-loader.d.ts +2 -2
  68. package/dist/plugins/particle/particle-mesh.d.ts +5 -9
  69. package/dist/plugins/particle/particle-system-renderer.d.ts +1 -1
  70. package/dist/plugins/particle/particle-system.d.ts +14 -6
  71. package/dist/plugins/particle/particle-vfx-item.d.ts +9 -3
  72. package/dist/plugins/particle/trail-mesh.d.ts +2 -2
  73. package/dist/plugins/plugin.d.ts +7 -8
  74. package/dist/plugins/sprite/sprite-item.d.ts +29 -12
  75. package/dist/plugins/sprite/sprite-mesh.d.ts +0 -4
  76. package/dist/plugins/text/index.d.ts +4 -0
  77. package/dist/plugins/text/text-item.d.ts +33 -5
  78. package/dist/plugins/text/text-layout.d.ts +9 -1
  79. package/dist/plugins/timeline/playables/activation-mixer-playable.d.ts +7 -0
  80. package/dist/plugins/timeline/playables/sub-composition-clip-playable.d.ts +5 -0
  81. package/dist/plugins/timeline/playables/sub-composition-playable-asset.d.ts +5 -0
  82. package/dist/plugins/timeline/track.d.ts +72 -0
  83. package/dist/plugins/timeline/tracks/activation-track.d.ts +5 -0
  84. package/dist/plugins/timeline/tracks/sprite-color-track.d.ts +3 -0
  85. package/dist/plugins/timeline/tracks/sub-composition-track.d.ts +4 -0
  86. package/dist/plugins/timeline/tracks/transform-track.d.ts +3 -0
  87. package/dist/render/create-copy-shader.d.ts +2 -2
  88. package/dist/render/{frame-buffer.d.ts → framebuffer.d.ts} +7 -7
  89. package/dist/render/geometry.d.ts +14 -1
  90. package/dist/render/global-volume.d.ts +4 -5
  91. package/dist/render/gpu-capability.d.ts +6 -6
  92. package/dist/render/index.d.ts +3 -2
  93. package/dist/render/mesh.d.ts +1 -1
  94. package/dist/render/render-frame.d.ts +13 -12
  95. package/dist/render/render-pass.d.ts +10 -10
  96. package/dist/render/{render-buffer.d.ts → renderbuffer.d.ts} +4 -4
  97. package/dist/render/renderer.d.ts +9 -7
  98. package/dist/{semantic-map.d.ts → render/semantic-map.d.ts} +4 -4
  99. package/dist/render/shader.d.ts +4 -4
  100. package/dist/scene.d.ts +86 -4
  101. package/dist/serialization-helper.d.ts +6 -4
  102. package/dist/shader/index.d.ts +1 -3
  103. package/dist/shader/shader-factory.d.ts +35 -0
  104. package/dist/shape/shape.d.ts +1 -1
  105. package/dist/template-image.d.ts +3 -14
  106. package/dist/texture/texture.d.ts +8 -0
  107. package/dist/texture/types.d.ts +2 -2
  108. package/dist/texture/utils.d.ts +2 -1
  109. package/dist/ticker.d.ts +2 -2
  110. package/dist/transform.d.ts +3 -3
  111. package/dist/utils/array.d.ts +1 -1
  112. package/dist/utils/device.d.ts +4 -0
  113. package/dist/utils/index.d.ts +29 -14
  114. package/dist/utils/text.d.ts +8 -0
  115. package/dist/vfx-item.d.ts +37 -61
  116. package/package.json +7 -5
  117. package/dist/asset-migrations.d.ts +0 -5
  118. package/dist/plugins/cal/animation-mixer-playable.d.ts +0 -4
  119. package/dist/plugins/cal/animation-playable-output.d.ts +0 -4
  120. package/dist/plugins/cal/track.d.ts +0 -34
  121. package/dist/utils/timeline-component.d.ts +0 -6
package/README.md CHANGED
@@ -1,12 +1,15 @@
1
1
  # Galacean Effects Core
2
2
 
3
3
  ## Basic Concepts
4
- In Galacean Effects, a Composition is the unit of animation playback. It is managed by the abstract class `Composition`, which is responsible for parsing data (JSON -> VFXItem / Texture -> mesh), creating and updating render frames (`renderFrame`) and render passes (renderPass).
4
+ The **Composition** in Galacean Effects is the unit of animation playback. The abstract class `Composition` manages the process from data parsing (JSON -> VFXItem -> mesh) to the creation, updating, and destruction of rendered frames (`renderFrame`) and render passes (`renderPass`).
5
5
 
6
- Each composition uses animation data for different types of elements (`VFXItems`), including camera properties, multiple layers, particles, and interactive elements. When a composition is created, it completes the creation of elements (`VFXItems`), loading and creation of animation texture maps (`Textures`), and initialization of render frames (`renderFrame`) and render passes (`renderPass`).
7
- At the beginning of the composition's lifecycle, the corresponding mesh is added to the default render pass (`renderPass`).
8
- During the lifecycle, the `Geometry` and `Material` data contained in the mesh is updated.
9
- When post-processing is required, the mesh is split into the appropriate `renderPass`.At the end of the lifecycle, the corresponding mesh is removed from the `renderFrame`.
6
+ Each composition utilizes animation data from various types of elements (`VFXItem`) and their corresponding components (`Component`), including camera properties, multiple layers, particles, and interactive elements.
7
+
8
+ When a composition is created, it loads various data assets, creates elements (`VFXItem`) along with their corresponding components (`Component`), and initializes animation texture maps (`Texture`), `renderFrame`, and `renderPass`.
9
+
10
+ At the beginning of the lifecycle, the corresponding mesh will be added to the default `renderPass` by the composition. During the course of the lifecycle, the data within the mesh, such as `Geometry` and `Material`, will be updated.
11
+
12
+ When post-processing is needed, the mesh will be broken down into the appropriate `renderPass`. After the lifecycle ends, the corresponding mesh will be removed from the `renderFrame`.
10
13
 
11
14
  To play the animation, the engine retrieves the mesh from the `renderFrame` and adds it to the scene, continuously calls the update function of the `Composition` during the rendering loop to `update` the data.
12
15
 
@@ -16,23 +19,24 @@ To play the animation, the engine retrieves the mesh from the `renderFrame` and
16
19
  1. Selective downloading of resources based on rendering levels.
17
20
  2. After loading the image, image/text replacement is performed according to the configuration, and the modified image is saved as an `imageData` object by drawing on a Canvas.
18
21
  3. Enable the gl extension `KHR_parallel_shader_compile` to compile shaders after resource loading is completed.
19
- - Texture Creation [Texture](./src/texture/texture.ts): `Textures` are created based on the parameters obtained from the resource download process. The current texture object may be based on one of the creation types defined in the `TextureSourceType` enumeration.
22
+ - Asset Creation [engine](./src/engine.ts)
23
+ The scene data loaded from the network needs to be mounted onto the `engine` object (`addPackageDatas`) to create instances through the `engine` object.
24
+ 1. Texture Creation [Texture](./src/texture/texture.ts): The static methods `create` and `createWithData` in the `Texture` abstract class are used to create real texture objects based on the parameters returned above. The current texture objects may be based on the creation types enumerated in `TextureSourceType`.
25
+ 2. Element Creation [VFXItem](./src/vfx-item.ts): Call `engine.createVFXItems()` to create VFXItem instances.
20
26
 
21
27
  ### 2. Animation Playback
22
- - [Composition](./src/composition.ts): The composition manages the data processing and rendering setup for animation playback. The `initialize` function is called to initialize the `VFXItemManager` for JSON -> VFXItem processing. Additionally, the engine needs to retrieve the mesh when appropriate through `composition.renderFrame` and add the retrieved mesh to the scene.
23
- 1. Static `initialize` method:
24
- - The engine needs to implement the creation of `VFXItemManager`, `Composition` instances, and converting texture parameters to `Texture` usable by the engine.
25
- 2. In the constructor, the following functions need to be called:
26
- - Plugin system `pluginSystem.initializeComposition()`.
27
- - `composition.resetRenderFrame()`: Create and initialize the `renderFrame`.
28
- - `composition.reset()`: Parse the animation data and initialize the state of the render instance.
29
- - `composition.play()`: Start playing the composition animation.
30
- 3. `update` method: Used to call the `renderFrame`'s methods to add/modify/delete meshes and drive the update and vertex data, uniform variable values, etc., of `VFXItems`. The following functions need to be implemented:
31
- - `updateVideo`: Update video frames for video playback.
32
- - `getRendererOptions`: Return a blank `Texture` created using the data.
33
- - `reloadTexture/offloadTexture`: Reload/unload textures.
34
- 4. The mesh or rendering objects added to the scene can be retrieved through the `renderFrame`, and the interface can be freely designed in the `Composition` according to the engine's needs.
35
- 5. `dispose` method: When the composition's lifecycle comes to an end, this method is called based on the termination behavior. It executes the composition's disposal callback for `VFXItem` and also destroys associated objects such as meshes and textures.
28
+ - [Composition](./src/composition.ts): The Composition manages the data processing and rendering settings for animation playback. The engine needs to obtain the mesh through `composition.renderFrame` and add the retrieved meshes to the scene.
29
+ 1. The constructor will invoke the following functions, which do not need to be called manually when integrating:
30
+ - Plugin system `pluginSystem.initializeComposition()`
31
+ - `composition.createRenderFrame()`: Creation and initialization of `renderFrame`
32
+ - `composition.reset()`: Animation data parsing and initialization of the rendering instance state such as Mesh
33
+ - `composition.play()`: Start playback of the composition
34
+ 2. `update` method: This method is used to call `renderFrame` to add/modify/delete meshes, driving the update of `VFXItem` and refreshing vertex data, uniform variable values, etc. The following functions will be called and need to be implemented:
35
+ - `updateVideo`: Update video frames for video playback
36
+ - `getRendererOptions`: Return an empty `Texture` created with the data
37
+ - `reloadTexture/offloadTexture`: Handle the `reload` and `offload` of textures
38
+ 3. The meshes or rendering objects added to the scene are obtained through `renderFrame`. The interface can be freely designed in `Composition` according to the needs of the engine.
39
+ 4. `dispose` method: At the end of the composition lifecycle, this method will be called based on the termination behavior, executing the composition destruction callback of `VFXItem`, and will also destroy objects such as meshes and textures.
36
40
 
37
41
  - [RenderFrame](./src/render/render-frame.ts): The `RenderFrame` can be understood as the rendering data object corresponding to each frame of the composition. In addition to managing the `renderPass`, it also stores the camera properties and common uniform variable table (semantics) associated with the composition. The meshes corresponding to different types of elements are added and removed using `addMeshToDefaultRenderPass` and `removeMeshFromDefaultRenderPass` methods of `renderFrame`. The mesh is added to the appropriate position in the `renderPass` based on its `priority` property.
38
42
  1. `addMeshToDefaultRenderPass/removeMeshFromDefaultRenderPass`:
@@ -49,7 +53,7 @@ To play the animation, the engine retrieves the mesh from the `renderFrame` and
49
53
 
50
54
  > Tips
51
55
  >
52
- > - Each `spriteVFXItem` does not necessarily correspond to a single mesh. Layer elements are compared using a diff algorithm during frame updates to determine whether adjacent meshes have the same material properties, and then the meshes are split or merged accordingly.
56
+ > - To access methods on the element component, you can use `VFXItem.getComponent(XXXComponent)`.
53
57
  > - To obtain the mesh corresponding to the current `VFXItem`, you can use `VFXItem.content.mesh` to retrieve it.
54
58
 
55
59
  ### 3. [Geometry](./src/render/geometry.ts)
@@ -0,0 +1,28 @@
1
+ import * as flatbuffers from 'flatbuffers';
2
+ export declare class FBEffectsObjectData implements flatbuffers.IUnpackableObject<FBEffectsObjectDataT> {
3
+ bb: flatbuffers.ByteBuffer | null;
4
+ bb_pos: number;
5
+ __init(i: number, bb: flatbuffers.ByteBuffer): FBEffectsObjectData;
6
+ static getRootAsFBEffectsObjectData(bb: flatbuffers.ByteBuffer, obj?: FBEffectsObjectData): FBEffectsObjectData;
7
+ static getSizePrefixedRootAsFBEffectsObjectData(bb: flatbuffers.ByteBuffer, obj?: FBEffectsObjectData): FBEffectsObjectData;
8
+ dataType(): string | null;
9
+ dataType(optionalEncoding: flatbuffers.Encoding): string | Uint8Array | null;
10
+ data(index: number): number | null;
11
+ dataLength(): number;
12
+ dataArray(): Uint8Array | null;
13
+ static startFBEffectsObjectData(builder: flatbuffers.Builder): void;
14
+ static addDataType(builder: flatbuffers.Builder, dataTypeOffset: flatbuffers.Offset): void;
15
+ static addData(builder: flatbuffers.Builder, dataOffset: flatbuffers.Offset): void;
16
+ static createDataVector(builder: flatbuffers.Builder, data: number[] | Uint8Array): flatbuffers.Offset;
17
+ static startDataVector(builder: flatbuffers.Builder, numElems: number): void;
18
+ static endFBEffectsObjectData(builder: flatbuffers.Builder): flatbuffers.Offset;
19
+ static createFBEffectsObjectData(builder: flatbuffers.Builder, dataTypeOffset: flatbuffers.Offset, dataOffset: flatbuffers.Offset): flatbuffers.Offset;
20
+ unpack(): FBEffectsObjectDataT;
21
+ unpackTo(_o: FBEffectsObjectDataT): void;
22
+ }
23
+ export declare class FBEffectsObjectDataT implements flatbuffers.IGeneratedObject {
24
+ dataType: string | Uint8Array | null;
25
+ data: (number)[];
26
+ constructor(dataType?: string | Uint8Array | null, data?: (number)[]);
27
+ pack(builder: flatbuffers.Builder): flatbuffers.Offset;
28
+ }
@@ -0,0 +1,26 @@
1
+ import * as flatbuffers from 'flatbuffers';
2
+ import { FBEffectsObjectData, FBEffectsObjectDataT } from './fbeffects-object-data.js';
3
+ export declare class FBEffectsPackageData implements flatbuffers.IUnpackableObject<FBEffectsPackageDataT> {
4
+ bb: flatbuffers.ByteBuffer | null;
5
+ bb_pos: number;
6
+ __init(i: number, bb: flatbuffers.ByteBuffer): FBEffectsPackageData;
7
+ static getRootAsFBEffectsPackageData(bb: flatbuffers.ByteBuffer, obj?: FBEffectsPackageData): FBEffectsPackageData;
8
+ static getSizePrefixedRootAsFBEffectsPackageData(bb: flatbuffers.ByteBuffer, obj?: FBEffectsPackageData): FBEffectsPackageData;
9
+ exportObjects(index: number, obj?: FBEffectsObjectData): FBEffectsObjectData | null;
10
+ exportObjectsLength(): number;
11
+ static startFBEffectsPackageData(builder: flatbuffers.Builder): void;
12
+ static addExportObjects(builder: flatbuffers.Builder, exportObjectsOffset: flatbuffers.Offset): void;
13
+ static createExportObjectsVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset;
14
+ static startExportObjectsVector(builder: flatbuffers.Builder, numElems: number): void;
15
+ static endFBEffectsPackageData(builder: flatbuffers.Builder): flatbuffers.Offset;
16
+ static finishFBEffectsPackageDataBuffer(builder: flatbuffers.Builder, offset: flatbuffers.Offset): void;
17
+ static finishSizePrefixedFBEffectsPackageDataBuffer(builder: flatbuffers.Builder, offset: flatbuffers.Offset): void;
18
+ static createFBEffectsPackageData(builder: flatbuffers.Builder, exportObjectsOffset: flatbuffers.Offset): flatbuffers.Offset;
19
+ unpack(): FBEffectsPackageDataT;
20
+ unpackTo(_o: FBEffectsPackageDataT): void;
21
+ }
22
+ export declare class FBEffectsPackageDataT implements flatbuffers.IGeneratedObject {
23
+ exportObjects: (FBEffectsObjectDataT)[];
24
+ constructor(exportObjects?: (FBEffectsObjectDataT)[]);
25
+ pack(builder: flatbuffers.Builder): flatbuffers.Offset;
26
+ }
@@ -0,0 +1,77 @@
1
+ import * as flatbuffers from 'flatbuffers';
2
+ import { FBSubMesh, FBSubMeshT } from './fbsub-mesh.js';
3
+ import { FBVertexData, FBVertexDataT } from './fbvertex-data.js';
4
+ export declare class FBGeometryData implements flatbuffers.IUnpackableObject<FBGeometryDataT> {
5
+ bb: flatbuffers.ByteBuffer | null;
6
+ bb_pos: number;
7
+ __init(i: number, bb: flatbuffers.ByteBuffer): FBGeometryData;
8
+ static getRootAsFBGeometryData(bb: flatbuffers.ByteBuffer, obj?: FBGeometryData): FBGeometryData;
9
+ static getSizePrefixedRootAsFBGeometryData(bb: flatbuffers.ByteBuffer, obj?: FBGeometryData): FBGeometryData;
10
+ id(): string | null;
11
+ id(optionalEncoding: flatbuffers.Encoding): string | Uint8Array | null;
12
+ name(): string | null;
13
+ name(optionalEncoding: flatbuffers.Encoding): string | Uint8Array | null;
14
+ vertexData(obj?: FBVertexData): FBVertexData | null;
15
+ indexFormat(): number;
16
+ indexOffset(): number;
17
+ subMeshes(index: number, obj?: FBSubMesh): FBSubMesh | null;
18
+ subMeshesLength(): number;
19
+ mode(): number;
20
+ buffer(): string | null;
21
+ buffer(optionalEncoding: flatbuffers.Encoding): string | Uint8Array | null;
22
+ binaryData(index: number): number | null;
23
+ binaryDataLength(): number;
24
+ binaryDataArray(): Uint8Array | null;
25
+ boneNames(index: number): string;
26
+ boneNames(index: number, optionalEncoding: flatbuffers.Encoding): string | Uint8Array;
27
+ boneNamesLength(): number;
28
+ rootBoneName(): string | null;
29
+ rootBoneName(optionalEncoding: flatbuffers.Encoding): string | Uint8Array | null;
30
+ inverseBindMatrices(index: number): number | null;
31
+ inverseBindMatricesLength(): number;
32
+ inverseBindMatricesArray(): Float32Array | null;
33
+ static startFBGeometryData(builder: flatbuffers.Builder): void;
34
+ static addId(builder: flatbuffers.Builder, idOffset: flatbuffers.Offset): void;
35
+ static addName(builder: flatbuffers.Builder, nameOffset: flatbuffers.Offset): void;
36
+ static addVertexData(builder: flatbuffers.Builder, vertexDataOffset: flatbuffers.Offset): void;
37
+ static addIndexFormat(builder: flatbuffers.Builder, indexFormat: number): void;
38
+ static addIndexOffset(builder: flatbuffers.Builder, indexOffset: number): void;
39
+ static addSubMeshes(builder: flatbuffers.Builder, subMeshesOffset: flatbuffers.Offset): void;
40
+ static createSubMeshesVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset;
41
+ static startSubMeshesVector(builder: flatbuffers.Builder, numElems: number): void;
42
+ static addMode(builder: flatbuffers.Builder, mode: number): void;
43
+ static addBuffer(builder: flatbuffers.Builder, bufferOffset: flatbuffers.Offset): void;
44
+ static addBinaryData(builder: flatbuffers.Builder, binaryDataOffset: flatbuffers.Offset): void;
45
+ static createBinaryDataVector(builder: flatbuffers.Builder, data: number[] | Uint8Array): flatbuffers.Offset;
46
+ static startBinaryDataVector(builder: flatbuffers.Builder, numElems: number): void;
47
+ static addBoneNames(builder: flatbuffers.Builder, boneNamesOffset: flatbuffers.Offset): void;
48
+ static createBoneNamesVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset;
49
+ static startBoneNamesVector(builder: flatbuffers.Builder, numElems: number): void;
50
+ static addRootBoneName(builder: flatbuffers.Builder, rootBoneNameOffset: flatbuffers.Offset): void;
51
+ static addInverseBindMatrices(builder: flatbuffers.Builder, inverseBindMatricesOffset: flatbuffers.Offset): void;
52
+ static createInverseBindMatricesVector(builder: flatbuffers.Builder, data: number[] | Float32Array): flatbuffers.Offset;
53
+ /**
54
+ * @deprecated This Uint8Array overload will be removed in the future.
55
+ */
56
+ static createInverseBindMatricesVector(builder: flatbuffers.Builder, data: number[] | Uint8Array): flatbuffers.Offset;
57
+ static startInverseBindMatricesVector(builder: flatbuffers.Builder, numElems: number): void;
58
+ static endFBGeometryData(builder: flatbuffers.Builder): flatbuffers.Offset;
59
+ unpack(): FBGeometryDataT;
60
+ unpackTo(_o: FBGeometryDataT): void;
61
+ }
62
+ export declare class FBGeometryDataT implements flatbuffers.IGeneratedObject {
63
+ id: string | Uint8Array | null;
64
+ name: string | Uint8Array | null;
65
+ vertexData: FBVertexDataT | null;
66
+ indexFormat: number;
67
+ indexOffset: number;
68
+ subMeshes: (FBSubMeshT)[];
69
+ mode: number;
70
+ buffer: string | Uint8Array | null;
71
+ binaryData: (number)[];
72
+ boneNames: (string)[];
73
+ rootBoneName: string | Uint8Array | null;
74
+ inverseBindMatrices: (number)[];
75
+ constructor(id?: string | Uint8Array | null, name?: string | Uint8Array | null, vertexData?: FBVertexDataT | null, indexFormat?: number, indexOffset?: number, subMeshes?: (FBSubMeshT)[], mode?: number, buffer?: string | Uint8Array | null, binaryData?: (number)[], boneNames?: (string)[], rootBoneName?: string | Uint8Array | null, inverseBindMatrices?: (number)[]);
76
+ pack(builder: flatbuffers.Builder): flatbuffers.Offset;
77
+ }
@@ -0,0 +1,26 @@
1
+ import * as flatbuffers from 'flatbuffers';
2
+ export declare class FBSubMesh implements flatbuffers.IUnpackableObject<FBSubMeshT> {
3
+ bb: flatbuffers.ByteBuffer | null;
4
+ bb_pos: number;
5
+ __init(i: number, bb: flatbuffers.ByteBuffer): FBSubMesh;
6
+ static getRootAsFBSubMesh(bb: flatbuffers.ByteBuffer, obj?: FBSubMesh): FBSubMesh;
7
+ static getSizePrefixedRootAsFBSubMesh(bb: flatbuffers.ByteBuffer, obj?: FBSubMesh): FBSubMesh;
8
+ offset(): number;
9
+ indexCount(): number;
10
+ vertexCount(): number;
11
+ static startFBSubMesh(builder: flatbuffers.Builder): void;
12
+ static addOffset(builder: flatbuffers.Builder, offset: number): void;
13
+ static addIndexCount(builder: flatbuffers.Builder, indexCount: number): void;
14
+ static addVertexCount(builder: flatbuffers.Builder, vertexCount: number): void;
15
+ static endFBSubMesh(builder: flatbuffers.Builder): flatbuffers.Offset;
16
+ static createFBSubMesh(builder: flatbuffers.Builder, offset: number, indexCount: number, vertexCount: number): flatbuffers.Offset;
17
+ unpack(): FBSubMeshT;
18
+ unpackTo(_o: FBSubMeshT): void;
19
+ }
20
+ export declare class FBSubMeshT implements flatbuffers.IGeneratedObject {
21
+ offset: number;
22
+ indexCount: number;
23
+ vertexCount: number;
24
+ constructor(offset?: number, indexCount?: number, vertexCount?: number);
25
+ pack(builder: flatbuffers.Builder): flatbuffers.Offset;
26
+ }
@@ -0,0 +1,33 @@
1
+ import * as flatbuffers from 'flatbuffers';
2
+ export declare class FBVertexChannel implements flatbuffers.IUnpackableObject<FBVertexChannelT> {
3
+ bb: flatbuffers.ByteBuffer | null;
4
+ bb_pos: number;
5
+ __init(i: number, bb: flatbuffers.ByteBuffer): FBVertexChannel;
6
+ static getRootAsFBVertexChannel(bb: flatbuffers.ByteBuffer, obj?: FBVertexChannel): FBVertexChannel;
7
+ static getSizePrefixedRootAsFBVertexChannel(bb: flatbuffers.ByteBuffer, obj?: FBVertexChannel): FBVertexChannel;
8
+ semantic(): string | null;
9
+ semantic(optionalEncoding: flatbuffers.Encoding): string | Uint8Array | null;
10
+ offset(): number;
11
+ format(): number;
12
+ dimension(): number;
13
+ normalize(): boolean;
14
+ static startFBVertexChannel(builder: flatbuffers.Builder): void;
15
+ static addSemantic(builder: flatbuffers.Builder, semanticOffset: flatbuffers.Offset): void;
16
+ static addOffset(builder: flatbuffers.Builder, offset: number): void;
17
+ static addFormat(builder: flatbuffers.Builder, format: number): void;
18
+ static addDimension(builder: flatbuffers.Builder, dimension: number): void;
19
+ static addNormalize(builder: flatbuffers.Builder, normalize: boolean): void;
20
+ static endFBVertexChannel(builder: flatbuffers.Builder): flatbuffers.Offset;
21
+ static createFBVertexChannel(builder: flatbuffers.Builder, semanticOffset: flatbuffers.Offset, offset: number, format: number, dimension: number, normalize: boolean): flatbuffers.Offset;
22
+ unpack(): FBVertexChannelT;
23
+ unpackTo(_o: FBVertexChannelT): void;
24
+ }
25
+ export declare class FBVertexChannelT implements flatbuffers.IGeneratedObject {
26
+ semantic: string | Uint8Array | null;
27
+ offset: number;
28
+ format: number;
29
+ dimension: number;
30
+ normalize: boolean;
31
+ constructor(semantic?: string | Uint8Array | null, offset?: number, format?: number, dimension?: number, normalize?: boolean);
32
+ pack(builder: flatbuffers.Builder): flatbuffers.Offset;
33
+ }
@@ -0,0 +1,27 @@
1
+ import * as flatbuffers from 'flatbuffers';
2
+ import { FBVertexChannel, FBVertexChannelT } from './fbvertex-channel.js';
3
+ export declare class FBVertexData implements flatbuffers.IUnpackableObject<FBVertexDataT> {
4
+ bb: flatbuffers.ByteBuffer | null;
5
+ bb_pos: number;
6
+ __init(i: number, bb: flatbuffers.ByteBuffer): FBVertexData;
7
+ static getRootAsFBVertexData(bb: flatbuffers.ByteBuffer, obj?: FBVertexData): FBVertexData;
8
+ static getSizePrefixedRootAsFBVertexData(bb: flatbuffers.ByteBuffer, obj?: FBVertexData): FBVertexData;
9
+ vertexCount(): number;
10
+ channels(index: number, obj?: FBVertexChannel): FBVertexChannel | null;
11
+ channelsLength(): number;
12
+ static startFBVertexData(builder: flatbuffers.Builder): void;
13
+ static addVertexCount(builder: flatbuffers.Builder, vertexCount: number): void;
14
+ static addChannels(builder: flatbuffers.Builder, channelsOffset: flatbuffers.Offset): void;
15
+ static createChannelsVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset;
16
+ static startChannelsVector(builder: flatbuffers.Builder, numElems: number): void;
17
+ static endFBVertexData(builder: flatbuffers.Builder): flatbuffers.Offset;
18
+ static createFBVertexData(builder: flatbuffers.Builder, vertexCount: number, channelsOffset: flatbuffers.Offset): flatbuffers.Offset;
19
+ unpack(): FBVertexDataT;
20
+ unpackTo(_o: FBVertexDataT): void;
21
+ }
22
+ export declare class FBVertexDataT implements flatbuffers.IGeneratedObject {
23
+ vertexCount: number;
24
+ channels: (FBVertexChannelT)[];
25
+ constructor(vertexCount?: number, channels?: (FBVertexChannelT)[]);
26
+ pack(builder: flatbuffers.Builder): flatbuffers.Offset;
27
+ }
@@ -0,0 +1,6 @@
1
+ export { FBEffectsObjectData, FBEffectsObjectDataT } from './fbeffects-object-data.js';
2
+ export { FBEffectsPackageData, FBEffectsPackageDataT } from './fbeffects-package-data.js';
3
+ export { FBGeometryData, FBGeometryDataT } from './fbgeometry-data.js';
4
+ export { FBSubMesh, FBSubMeshT } from './fbsub-mesh.js';
5
+ export { FBVertexChannel, FBVertexChannelT } from './fbvertex-channel.js';
6
+ export { FBVertexData, FBVertexDataT } from './fbvertex-data.js';
@@ -1,7 +1,6 @@
1
1
  import * as spec from '@galacean/effects-specification';
2
2
  import type { EffectsObject } from './effects-object';
3
3
  import type { Engine } from './engine';
4
- import type { ShaderMarcos } from './render';
5
4
  import type { VFXItemProps } from './vfx-item';
6
5
  /**
7
6
  * @since 2.0.0
@@ -18,18 +17,6 @@ export declare class AssetLoader {
18
17
  export declare class Database {
19
18
  loadGUID(guid: string): Promise<EffectsObject | undefined>;
20
19
  }
21
- export interface MaterialData extends spec.MaterialData {
22
- /**
23
- * shader的宏定义
24
- */
25
- marcos?: ShaderMarcos;
26
- }
27
- export interface GeometryData extends spec.EffectsObjectData {
28
- vertexData: spec.VertexData;
29
- indexFormat: number;
30
- indexOffset: number;
31
- buffer: string;
32
- }
33
20
  export interface EffectComponentData extends spec.EffectsObjectData {
34
21
  _priority: number;
35
22
  item: spec.DataPath;
@@ -1,81 +1,7 @@
1
- import * as spec from '@galacean/effects-specification';
2
1
  import { Downloader } from './downloader';
3
- import type { Scene } from './scene';
2
+ import type { Scene, SceneLoadOptions, SceneType } from './scene';
4
3
  import type { Disposable } from './utils';
5
4
  import type { Renderer } from './render';
6
- /**
7
- * 场景加载参数
8
- */
9
- export interface SceneLoadOptions {
10
- /**
11
- * 动态数据的参数
12
- * key 是 JSON 中配置的字段名
13
- * value 是要使用的值,图片使用 url 链接
14
- * 图片链接可以使用数组传递,如果第一个加载失败,将尝试使用第二个地址
15
- *
16
- * @example
17
- * ``` ts
18
- * {
19
- * variables: {
20
- * bg: ['url','fallback_url'], // 如果两个图片都失败,将会触发加载失败
21
- * fg: 'url' // 如果图片加载失败,将会触发加载失败,
22
- * amount: 88.8,
23
- * name: 'abc'
24
- * }
25
- * }
26
- * ```
27
- */
28
- variables?: Record<string, number | string | string[]>;
29
- /**
30
- * 是否使用压缩纹理
31
- */
32
- useCompressedTexture?: boolean;
33
- /**
34
- * 渲染分级。
35
- * 分级之后,只会加载当前渲染等级的资源。
36
- * 当渲染等级被设置为 B 后,player 的 fps 会降到 30 帧
37
- * @default 's'
38
- */
39
- renderLevel?: spec.RenderLevel;
40
- /**
41
- * 资源加载超时,时间单位秒
42
- * @default 10s
43
- */
44
- timeout?: number;
45
- /***
46
- * 用于给 plugin 的加载数据
47
- * key/value 的内容由 plugin 自己实现
48
- */
49
- pluginData?: Record<string, any>;
50
- /**
51
- * 场景加载时的环境(加载后把 env 结果写入 scene)
52
- * @default '' - 编辑器中为 'editor'
53
- */
54
- env?: string;
55
- /**
56
- * 加载后是否自动播放
57
- * @default true
58
- */
59
- autoplay?: boolean;
60
- /**
61
- * 合成播放完成后是否需要再使用,是的话生命周期结束后不会 `dispose`
62
- * @default false
63
- */
64
- reusable?: boolean;
65
- /**
66
- * 播放速度,当速度为负数时,合成倒播
67
- */
68
- speed?: number;
69
- }
70
- /**
71
- * 接受用于加载的数据类型
72
- */
73
- export type SceneType = string | Scene | Record<string, unknown>;
74
- export type SceneWithOptionsType = {
75
- scene: SceneType;
76
- options: SceneLoadOptions;
77
- };
78
- export type SceneLoadType = SceneType | SceneWithOptionsType;
79
5
  /**
80
6
  * 资源管理器
81
7
  * 用于加载和动效中所有的资源文件,包括图片、插件、图层粒子数据等
@@ -0,0 +1,6 @@
1
+ import type { EffectsObjectData } from '@galacean/effects-specification';
2
+ import { EffectsObject } from './effects-object';
3
+ export declare class BinaryAsset extends EffectsObject {
4
+ buffer: ArrayBuffer;
5
+ fromData(data: EffectsObjectData): void;
6
+ }
package/dist/camera.d.ts CHANGED
@@ -1,5 +1,8 @@
1
+ import { Vector3 } from '@galacean/effects-math/es/core/vector3';
2
+ import { Quaternion } from '@galacean/effects-math/es/core/quaternion';
3
+ import { Matrix4 } from '@galacean/effects-math/es/core/matrix4';
4
+ import { Euler } from '@galacean/effects-math/es/core/euler';
1
5
  import * as spec from '@galacean/effects-specification';
2
- import { Matrix4, Vector3, Euler, Quaternion } from '@galacean/effects-math/es/core/index';
3
6
  interface CameraOptionsBase {
4
7
  /**
5
8
  * 相机近平面
@@ -58,6 +61,10 @@ export interface CameraOptionsEx extends CameraOptionsBase {
58
61
  */
59
62
  export declare class Camera {
60
63
  name: string;
64
+ /**
65
+ * 编辑器用于缩放画布
66
+ */
67
+ private viewportMatrix;
61
68
  private options;
62
69
  private viewMatrix;
63
70
  private projectionMatrix;
@@ -114,6 +121,8 @@ export declare class Camera {
114
121
  */
115
122
  set rotation(value: Euler);
116
123
  get rotation(): Euler;
124
+ setViewportMatrix(matrix: Matrix4): void;
125
+ getViewportMatrix(): Matrix4;
117
126
  /**
118
127
  * 获取相机的视图变换矩阵
119
128
  * @return
@@ -0,0 +1,9 @@
1
+ declare class CanvasPool {
2
+ readonly elements: HTMLCanvasElement[];
3
+ constructor();
4
+ dispose(): void;
5
+ getCanvas(): HTMLCanvasElement;
6
+ saveCanvas(canvas: HTMLCanvasElement): void;
7
+ }
8
+ export declare const canvasPool: CanvasPool;
9
+ export {};
@@ -1,27 +1,41 @@
1
1
  import type { Ray } from '@galacean/effects-math/es/core/ray';
2
- import { ItemBehaviour } from './components';
2
+ import * as spec from '@galacean/effects-specification';
3
+ import { Behaviour } from './components';
3
4
  import type { CompositionHitTestOptions } from './composition';
4
- import type { Region } from './plugins';
5
- import { TimelineComponent } from './plugins';
6
- import type { VFXItemContent } from './vfx-item';
5
+ import type { ContentOptions } from './composition-source-manager';
6
+ import type { Region, TrackAsset } from './plugins';
7
7
  import { VFXItem } from './vfx-item';
8
+ export interface SceneBinding {
9
+ key: TrackAsset;
10
+ value: VFXItem;
11
+ }
12
+ export interface SceneBindingData {
13
+ key: spec.DataPath;
14
+ value: spec.DataPath;
15
+ }
8
16
  /**
9
17
  * @since 2.0.0
10
18
  * @internal
11
19
  */
12
- export declare class CompositionComponent extends ItemBehaviour {
20
+ export declare class CompositionComponent extends Behaviour {
21
+ time: number;
13
22
  startTime: number;
14
23
  refId: string;
15
- items: VFXItem<VFXItemContent>[];
16
- timelineComponents: TimelineComponent[];
17
- timelineComponent: TimelineComponent;
24
+ items: VFXItem[];
25
+ data: ContentOptions;
26
+ private reusable;
27
+ private sceneBindings;
28
+ private timelineAsset;
29
+ private timelinePlayable;
30
+ private graph;
18
31
  start(): void;
32
+ setReusable(value: boolean): void;
33
+ getReusable(): boolean;
19
34
  update(dt: number): void;
20
- /**
21
- * 重置元素状态属性
22
- */
23
- resetStatus(): void;
24
35
  createContent(): void;
25
36
  onDestroy(): void;
26
37
  hitTest(ray: Ray, x: number, y: number, regions: Region[], force?: boolean, options?: CompositionHitTestOptions): Region[];
38
+ fromData(data: unknown): void;
39
+ private resolveBindings;
40
+ private resolveTrackBindingsWithRoot;
27
41
  }
@@ -1,5 +1,5 @@
1
1
  import { EffectsObject } from '../effects-object';
2
- import type { VFXItem, VFXItemContent } from '../vfx-item';
2
+ import type { VFXItem } from '../vfx-item';
3
3
  /**
4
4
  * @since 2.0.0
5
5
  * @internal
@@ -9,7 +9,7 @@ export declare abstract class Component extends EffectsObject {
9
9
  /**
10
10
  * 附加到的 VFXItem 对象
11
11
  */
12
- item: VFXItem<VFXItemContent>;
12
+ item: VFXItem;
13
13
  /**
14
14
  * 附加到的 VFXItem 对象 Transform 组件
15
15
  */
@@ -24,23 +24,14 @@ export declare abstract class Component extends EffectsObject {
24
24
  * @internal
25
25
  */
26
26
  export declare abstract class Behaviour extends Component {
27
- _enabled: boolean;
27
+ private _enabled;
28
28
  /**
29
29
  * 组件是否可以更新,true 更新,false 不更新
30
30
  */
31
31
  get isActiveAndEnabled(): boolean;
32
32
  get enabled(): boolean;
33
33
  set enabled(value: boolean);
34
- protected onBehaviourEnable(): void;
35
- fromData(data: any): void;
36
- toData(): void;
37
- }
38
- /**
39
- * @since 2.0.0
40
- * @internal
41
- */
42
- export declare abstract class ItemBehaviour extends Behaviour {
43
- started: boolean;
34
+ isStartCalled: boolean;
44
35
  /**
45
36
  * 在每次设置 enabled 为 true 时触发
46
37
  */
@@ -59,5 +50,4 @@ export declare abstract class ItemBehaviour extends Behaviour {
59
50
  lateUpdate(dt: number): void;
60
51
  onAttached(): void;
61
52
  dispose(): void;
62
- protected onBehaviourEnable(): void;
63
53
  }
@@ -1,5 +1,4 @@
1
1
  import { Matrix4 } from '@galacean/effects-math/es/core/matrix4';
2
- import type { TriangleLike } from '@galacean/effects-math/es/core/type';
3
2
  import type { Engine } from '../engine';
4
3
  import type { Material, MaterialDestroyOptions } from '../material';
5
4
  import type { BoundingBoxTriangle, HitTestTriangleParams } from '../plugins';
@@ -12,10 +11,6 @@ import { RendererComponent } from './renderer-component';
12
11
  * @internal
13
12
  */
14
13
  export declare class EffectComponent extends RendererComponent {
15
- /**
16
- * Mesh 的全局唯一 id
17
- */
18
- readonly id: string;
19
14
  /**
20
15
  * Mesh 的世界矩阵
21
16
  */
@@ -24,27 +19,12 @@ export declare class EffectComponent extends RendererComponent {
24
19
  * Mesh 的 Geometry
25
20
  */
26
21
  geometry: Geometry;
27
- triangles: TriangleLike[];
28
- protected destroyed: boolean;
29
- private visible;
22
+ private triangles;
23
+ private destroyed;
30
24
  private hitTestGeometry;
31
25
  constructor(engine: Engine);
32
- get isDestroyed(): boolean;
33
- /**
34
- * 设置当前 Mesh 的可见性。
35
- * @param visible - true:可见,false:不可见
36
- */
37
- setVisible(visible: boolean): void;
38
26
  start(): void;
39
27
  render(renderer: Renderer): void;
40
- /**
41
- * 获取当前 Mesh 的可见性。
42
- */
43
- getVisible(): boolean;
44
- /**
45
- * 获取当前 Mesh 的第一个 geometry。
46
- */
47
- firstGeometry(): Geometry;
48
28
  /**
49
29
  * 设置当前 Mesh 的材质
50
30
  * @param material - 要设置的材质
@@ -53,7 +33,7 @@ export declare class EffectComponent extends RendererComponent {
53
33
  setMaterial(material: Material, destroy?: MaterialDestroyOptions | DestroyOptions.keep): void;
54
34
  getHitTestParams: (force?: boolean) => HitTestTriangleParams | void;
55
35
  getBoundingBox(): BoundingBoxTriangle | void;
56
- fromData(data: any): void;
36
+ fromData(data: unknown): void;
57
37
  toData(): void;
58
38
  /**
59
39
  * 销毁当前资源
@@ -1,3 +1,4 @@
1
1
  export * from './renderer-component';
2
2
  export * from './component';
3
3
  export * from './effect-component';
4
+ export * from './post-process-volume';
@@ -0,0 +1,15 @@
1
+ import { Behaviour } from './component';
2
+ export declare class PostProcessVolume extends Behaviour {
3
+ useHDR: boolean;
4
+ useBloom: boolean;
5
+ threshold: number;
6
+ bloomIntensity: number;
7
+ brightness: number;
8
+ saturation: number;
9
+ contrast: number;
10
+ vignetteIntensity: number;
11
+ vignetteSmoothness: number;
12
+ vignetteRoundness: number;
13
+ useToneMapping: boolean;
14
+ start(): void;
15
+ }