@galacean/engine-core 1.2.0-beta.6 → 1.2.0-beta.7

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 (34) hide show
  1. package/dist/main.js +151 -53
  2. package/dist/main.js.map +1 -1
  3. package/dist/miniprogram.js +151 -53
  4. package/dist/module.js +152 -54
  5. package/dist/module.js.map +1 -1
  6. package/package.json +3 -3
  7. package/types/Camera.d.ts +7 -4
  8. package/types/Entity.d.ts +4 -1
  9. package/types/RenderPipeline/BatchUtils.d.ts +1 -0
  10. package/types/RenderPipeline/BatcherManager.d.ts +1 -12
  11. package/types/RenderPipeline/MaskManager.d.ts +1 -0
  12. package/types/RenderPipeline/PrimitiveChunk.d.ts +1 -0
  13. package/types/RenderPipeline/PrimitiveChunkManager.d.ts +1 -0
  14. package/types/RenderPipeline/SubPrimitiveChunk.d.ts +1 -0
  15. package/types/RenderPipeline/SubRenderElement.d.ts +22 -0
  16. package/types/RenderPipeline/VertexArea.d.ts +1 -0
  17. package/types/animation/AnimatorCondition.d.ts +13 -0
  18. package/types/animation/AnimatorControllerParameter.d.ts +10 -0
  19. package/types/animation/AnimatorStateTransition.d.ts +51 -0
  20. package/types/asset/ResourceManager.d.ts +3 -1
  21. package/types/enums/ReplacementFailureStrategy.d.ts +9 -0
  22. package/types/index.d.ts +1 -0
  23. package/types/postProcess/PostProcessManager.d.ts +1 -0
  24. package/types/postProcess/effects/BloomEffect.d.ts +94 -0
  25. package/types/postProcess/effects/TonemappingEffect.d.ts +35 -0
  26. package/types/postProcess/effects/index.d.ts +2 -0
  27. package/types/postProcess/index.d.ts +3 -0
  28. package/types/ui/Image.d.ts +0 -3
  29. package/types/ui/UICanvas.d.ts +13 -7
  30. package/types/ui/UIRenderer.d.ts +0 -6
  31. package/types/utils/ClearableObjectPool.d.ts +16 -0
  32. package/types/utils/ObjectPool.d.ts +16 -0
  33. package/types/utils/ReturnableObjectPool.d.ts +16 -0
  34. package/types/utils/index.d.ts +3 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@galacean/engine-core",
3
- "version": "1.2.0-beta.6",
3
+ "version": "1.2.0-beta.7",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org"
@@ -15,10 +15,10 @@
15
15
  "types/**/*"
16
16
  ],
17
17
  "dependencies": {
18
- "@galacean/engine-math": "1.2.0-beta.6"
18
+ "@galacean/engine-math": "1.2.0-beta.7"
19
19
  },
20
20
  "devDependencies": {
21
- "@galacean/engine-design": "1.2.0-beta.6"
21
+ "@galacean/engine-design": "1.2.0-beta.7"
22
22
  },
23
23
  "scripts": {
24
24
  "b:types": "tsc"
package/types/Camera.d.ts CHANGED
@@ -5,6 +5,7 @@ import { CameraClearFlags } from "./enums/CameraClearFlags";
5
5
  import { DepthTextureMode } from "./enums/DepthTextureMode";
6
6
  import { Downsampling } from "./enums/Downsampling";
7
7
  import { MSAASamples } from "./enums/MSAASamples";
8
+ import { ReplacementFailureStrategy } from "./enums/ReplacementFailureStrategy";
8
9
  import { Shader } from "./shader/Shader";
9
10
  import { ShaderData } from "./shader/ShaderData";
10
11
  import { ShaderTagKey } from "./shader/ShaderTagKey";
@@ -245,22 +246,24 @@ export declare class Camera extends Component {
245
246
  * Set the replacement shader.
246
247
  * @param shader - Replacement shader
247
248
  * @param replacementTagName - Sub shader tag name
249
+ * @param failureStrategy - Replacement failure strategy, @defaultValue `ReplacementFailureStrategy.KeepOriginalShader`
248
250
  *
249
251
  * @remarks
250
252
  * If replacementTagName is not specified, the first sub shader will be replaced.
251
- * If replacementTagName is specified, the replacement shader will find the first sub shader which has the same tag value get by replacementTagKey.
253
+ * If replacementTagName is specified, the replacement shader will find the first sub shader which has the same tag value get by replacementTagKey. If failed to find the sub shader, the strategy will be determined by failureStrategy.
252
254
  */
253
- setReplacementShader(shader: Shader, replacementTagName?: string): any;
255
+ setReplacementShader(shader: Shader, replacementTagName?: string, failureStrategy?: ReplacementFailureStrategy): any;
254
256
  /**
255
257
  * Set the replacement shader.
256
258
  * @param shader - Replacement shader
257
259
  * @param replacementTag - Sub shader tag
260
+ * @param failureStrategy - Replacement failure strategy, @defaultValue `ReplacementFailureStrategy.KeepOriginalShader`
258
261
  *
259
262
  * @remarks
260
263
  * If replacementTag is not specified, the first sub shader will be replaced.
261
- * If replacementTag is specified, the replacement shader will find the first sub shader which has the same tag value get by replacementTagKey.
264
+ * If replacementTag is specified, the replacement shader will find the first sub shader which has the same tag value get by replacementTagKey. If failed to find the sub shader, the strategy will be determined by failureStrategy.
262
265
  */
263
- setReplacementShader(shader: Shader, replacementTag?: ShaderTagKey): any;
266
+ setReplacementShader(shader: Shader, replacementTag?: ShaderTagKey, failureStrategy?: ReplacementFailureStrategy): any;
264
267
  /**
265
268
  * Reset and clear the replacement shader.
266
269
  */
package/types/Entity.d.ts CHANGED
@@ -58,9 +58,10 @@ export declare class Entity extends EngineObject {
58
58
  /**
59
59
  * Add component based on the component type.
60
60
  * @param type - The type of the component
61
+ * @param args - The arguments of the component
61
62
  * @returns The component which has been added
62
63
  */
63
- addComponent<T extends Component>(type: new (entity: Entity) => T): T;
64
+ addComponent<T extends new (entity: Entity, ...args: any[]) => Component>(type: T, ...args: ComponentArguments<T>): InstanceType<T>;
64
65
  /**
65
66
  * Get component which match the type.
66
67
  * @param type - The type of the component
@@ -152,3 +153,5 @@ export declare class Entity extends EngineObject {
152
153
  */
153
154
  getInvModelMatrix(): Matrix;
154
155
  }
156
+ type ComponentArguments<T extends new (entity: Entity, ...args: any[]) => Component> = T extends new (entity: Entity, ...args: infer P) => Component ? P : never;
157
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -1,12 +1 @@
1
- import { Engine } from "../Engine";
2
- import { RenderContext } from "./RenderContext";
3
- import { RenderData } from "./RenderData";
4
- import { RenderElement } from "./RenderElement";
5
- export declare class BatcherManager {
6
- constructor(engine: Engine);
7
- destroy(): void;
8
- commitRenderData(context: RenderContext, data: RenderData): void;
9
- batch(elements: Array<RenderElement>, batchedElements: Array<RenderElement>): void;
10
- uploadBuffer(): void;
11
- clear(): void;
12
- }
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,22 @@
1
+ import { Renderer } from "../Renderer";
2
+ import { Primitive, SubMesh } from "../graphic";
3
+ import { Material } from "../material";
4
+ import { ShaderData, ShaderPass } from "../shader";
5
+ import { Texture2D } from "../texture";
6
+ import { IPoolElement } from "../utils/ObjectPool";
7
+ import { RenderQueueFlags } from "./BasicRenderPipeline";
8
+ import { SubPrimitiveChunk } from "./SubPrimitiveChunk";
9
+ export declare class SubRenderElement implements IPoolElement {
10
+ component: Renderer;
11
+ primitive: Primitive;
12
+ material: Material;
13
+ subPrimitive: SubMesh;
14
+ shaderPasses: ReadonlyArray<ShaderPass>;
15
+ shaderData?: ShaderData;
16
+ batched: boolean;
17
+ renderQueueFlags: RenderQueueFlags;
18
+ texture?: Texture2D;
19
+ subChunk?: SubPrimitiveChunk;
20
+ set(component: Renderer, material: Material, primitive: Primitive, subPrimitive: SubMesh, texture?: Texture2D, subChunk?: SubPrimitiveChunk): void;
21
+ dispose(): void;
22
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,13 @@
1
+ import { AnimatorControllerParameterValueType } from "./AnimatorControllerParameter";
2
+ import { AnimatorConditionMode } from "./enums/AnimatorConditionMode";
3
+ /**
4
+ * Condition that is used to determine if a transition must be taken.
5
+ */
6
+ export declare class AnimatorCondition {
7
+ /** The mode of the condition. */
8
+ mode: AnimatorConditionMode;
9
+ /** The name of the parameter used in the condition. */
10
+ parameterName: string;
11
+ /** The AnimatorParameter's threshold value for the condition to be true. */
12
+ threshold?: AnimatorControllerParameterValueType;
13
+ }
@@ -0,0 +1,10 @@
1
+ export type AnimatorControllerParameterValueType = number | string | boolean;
2
+ /**
3
+ * Used to communicate between scripting and the controller, parameters can be set in scripting and used by the controller.
4
+ */
5
+ export declare class AnimatorControllerParameter {
6
+ /** The name of the parameter. */
7
+ name: string;
8
+ /** The value of the parameter. */
9
+ value: AnimatorControllerParameterValueType;
10
+ }
@@ -0,0 +1,51 @@
1
+ import { AnimatorControllerParameterValueType } from "./AnimatorControllerParameter";
2
+ import { AnimatorConditionMode } from "./enums/AnimatorConditionMode";
3
+ import { AnimatorCondition } from "./AnimatorCondition";
4
+ import { AnimatorState } from "./AnimatorState";
5
+ /**
6
+ * Transitions define when and how the state machine switch from on state to another. AnimatorTransition always originate from a StateMachine or a StateMachine entry.
7
+ */
8
+ export declare class AnimatorStateTransition {
9
+ /** The duration of the transition. This is represented in normalized time. */
10
+ duration: number;
11
+ /** The time at which the destination state will start. This is represented in normalized time. */
12
+ offset: number;
13
+ /** ExitTime represents the exact time at which the transition can take effect. This is represented in normalized time. */
14
+ exitTime: number;
15
+ /** The destination state of the transition. */
16
+ destinationState: AnimatorState;
17
+ /** Mutes the transition. The transition will never occur. */
18
+ mute: boolean;
19
+ private _conditions;
20
+ private _solo;
21
+ /**
22
+ * Is the transition destination the exit of the current state machine.
23
+ */
24
+ get isExit(): Readonly<boolean>;
25
+ /**
26
+ * Mutes all other transitions in the source state.
27
+ */
28
+ get solo(): boolean;
29
+ set solo(value: boolean);
30
+ /**
31
+ * The conditions in the transition.
32
+ */
33
+ get conditions(): Readonly<AnimatorCondition[]>;
34
+ /**
35
+ * Add a condition to a transition.
36
+ * @param mode - The AnimatorCondition mode of the condition
37
+ * @param parameterName - The name of the parameter
38
+ * @param threshold - The threshold value of the condition
39
+ */
40
+ addCondition(mode: AnimatorConditionMode, parameterName: string, threshold?: AnimatorControllerParameterValueType): AnimatorCondition;
41
+ /**
42
+ * Add a condition to a transition.
43
+ * @param animatorCondition - The condition to add
44
+ */
45
+ addCondition(animatorCondition: AnimatorCondition): AnimatorCondition;
46
+ /**
47
+ * Remove a condition from the transition.
48
+ * @param condition - The condition to remove
49
+ */
50
+ removeCondition(condition: AnimatorCondition): void;
51
+ }
@@ -102,11 +102,13 @@ export declare class ResourceManager {
102
102
  addContentRestorer<T extends EngineObject>(restorer: ContentRestorer<T>): void;
103
103
  private _assignDefaultOptions;
104
104
  private _loadSingleItem;
105
- private _pushSubAssetPromiseCallback;
105
+ private _loadMainAsset;
106
+ private _createSubAssetPromiseCallback;
106
107
  private _gc;
107
108
  private _getResolveResource;
108
109
  private _parseURL;
109
110
  private _parseQueryPath;
111
+ private _releaseSubAssetPromiseCallback;
110
112
  }
111
113
  /**
112
114
  * Declare ResourceLoader's decorator.
@@ -0,0 +1,9 @@
1
+ /**
2
+ * The strategy to use when a shader replacement fails.
3
+ */
4
+ export declare enum ReplacementFailureStrategy {
5
+ /** Keep the original shader. */
6
+ KeepOriginalShader = 0,
7
+ /** Do not render. */
8
+ DoNotRender = 1
9
+ }
package/types/index.d.ts CHANGED
@@ -31,6 +31,7 @@ export { FogMode } from "./enums/FogMode";
31
31
  export { CameraClearFlags } from "./enums/CameraClearFlags";
32
32
  export { CameraType } from "./enums/CameraType";
33
33
  export { MSAASamples } from "./enums/MSAASamples";
34
+ export { ReplacementFailureStrategy } from "./enums/ReplacementFailureStrategy";
34
35
  export { Downsampling } from "./enums/Downsampling";
35
36
  export { ColorSpace } from "./enums/ColorSpace";
36
37
  export { BackgroundTextureFillMode } from "./enums/BackgroundTextureFillMode";
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,94 @@
1
+ import { Color } from "@galacean/engine-math";
2
+ import { RenderContext } from "../../RenderPipeline/RenderContext";
3
+ import { Material } from "../../material";
4
+ import { Texture2D } from "../../texture";
5
+ /**
6
+ * This controls the size of the bloom texture.
7
+ */
8
+ export declare enum BloomDownScaleMode {
9
+ /**
10
+ * Use this to select half size as the starting resolution.
11
+ */
12
+ Half = 0,
13
+ /**
14
+ * Use this to select quarter size as the starting resolution.
15
+ */
16
+ Quarter = 1
17
+ }
18
+ export declare class BloomEffect {
19
+ private _uberMaterial;
20
+ static readonly SHADER_NAME = "PostProcessEffect Bloom";
21
+ private static _hqMacro;
22
+ private static _dirtMacro;
23
+ private static _bloomParams;
24
+ private static _lowMipTextureProp;
25
+ private static _lowMipTexelSizeProp;
26
+ private static _enableMacro;
27
+ private static _bloomTextureProp;
28
+ private static _dirtTextureProp;
29
+ private static _tintProp;
30
+ private static _bloomIntensityParams;
31
+ private static _dirtTilingOffsetProp;
32
+ private _bloomMaterial;
33
+ private _threshold;
34
+ private _scatter;
35
+ private _highQualityFiltering;
36
+ private _mipDownRT;
37
+ private _mipUpRT;
38
+ private _maxIterations;
39
+ private _enabled;
40
+ /**
41
+ * Controls the starting resolution that this effect begins processing.
42
+ */
43
+ downScale: BloomDownScaleMode;
44
+ /**
45
+ * Indicates whether the post process effect is enabled.
46
+ */
47
+ get enabled(): boolean;
48
+ set enabled(value: boolean);
49
+ /**
50
+ * Set the level of brightness to filter out pixels under this level.
51
+ * @remarks This value is expressed in gamma-space.
52
+ */
53
+ get threshold(): number;
54
+ set threshold(value: number);
55
+ /**
56
+ * Controls the radius of the bloom effect.
57
+ */
58
+ get scatter(): number;
59
+ set scatter(value: number);
60
+ /**
61
+ * Controls the strength of the bloom effect.
62
+ */
63
+ get intensity(): number;
64
+ set intensity(value: number);
65
+ /**
66
+ * Specifies the tint of the bloom effect.
67
+ */
68
+ get tint(): Color;
69
+ set tint(value: Color);
70
+ /**
71
+ * Controls whether to use bicubic sampling instead of bilinear sampling for the upSampling passes.
72
+ * @remarks This is slightly more expensive but helps getting smoother visuals.
73
+ */
74
+ get highQualityFiltering(): boolean;
75
+ set highQualityFiltering(value: boolean);
76
+ /**
77
+ * Specifies a Texture to add smudges or dust to the bloom effect.
78
+ */
79
+ get dirtTexture(): Texture2D;
80
+ set dirtTexture(value: Texture2D);
81
+ /**
82
+ * Controls the strength of the lens dirt.
83
+ */
84
+ get dirtIntensity(): number;
85
+ set dirtIntensity(value: number);
86
+ constructor(_uberMaterial: Material);
87
+ onRender(context: RenderContext, srcTexture: Texture2D): void;
88
+ private _calculateMipCount;
89
+ private _prefilter;
90
+ private _downsample;
91
+ private _upsample;
92
+ private _setupUber;
93
+ private _releaseRenderTargets;
94
+ }
@@ -0,0 +1,35 @@
1
+ import { Material } from "../../material";
2
+ /**
3
+ * Options to select a tonemapping algorithm to use.
4
+ */
5
+ export declare enum TonemappingMode {
6
+ /**
7
+ * Neutral tonemapper
8
+ * @remarks Use this option if you only want range-remapping with minimal impact on color hue and saturation.
9
+ */
10
+ Neutral = 0,
11
+ /**
12
+ * ACES Filmic reference tonemapper (custom approximation)
13
+ * @remarks
14
+ * Use this option to apply a close approximation of the reference ACES tonemapper for a more filmic look.
15
+ * It is more contrasted than Neutral and has an effect on actual color hue and saturation.
16
+ */
17
+ ACES = 1
18
+ }
19
+ export declare class TonemappingEffect {
20
+ private _uberMaterial;
21
+ private static _enableMacro;
22
+ private _mode;
23
+ private _enabled;
24
+ /**
25
+ * Indicates whether the post process effect is enabled.
26
+ */
27
+ get enabled(): boolean;
28
+ set enabled(value: boolean);
29
+ /**
30
+ * Use this to select a tonemapping algorithm to use.
31
+ */
32
+ get mode(): TonemappingMode;
33
+ set mode(value: TonemappingMode);
34
+ constructor(_uberMaterial: Material);
35
+ }
@@ -0,0 +1,2 @@
1
+ export { BloomDownScaleMode, BloomEffect } from "./BloomEffect";
2
+ export { TonemappingEffect, TonemappingMode } from "./TonemappingEffect";
@@ -0,0 +1,3 @@
1
+ import { _PostProcessManager } from "./PostProcessManager";
2
+ export * from "./effects";
3
+ export { _PostProcessManager };
@@ -1,6 +1,5 @@
1
1
  import { Color } from "@galacean/engine-math";
2
2
  import { Sprite, SpriteDrawMode, SpriteTileMode } from "../2d";
3
- import { RenderElement } from "../RenderPipeline/RenderElement";
4
3
  import { UIRenderer } from "./UIRenderer";
5
4
  export declare class Image extends UIRenderer {
6
5
  private _color;
@@ -34,8 +33,6 @@ export declare class Image extends UIRenderer {
34
33
  */
35
34
  get color(): Color;
36
35
  set color(value: Color);
37
- protected _canBatch(elementA: RenderElement, elementB: RenderElement): boolean;
38
- protected _batchRenderElement(elementA: RenderElement, elementB?: RenderElement): void;
39
36
  protected _onDestroy(): void;
40
37
  private _onSpriteChange;
41
38
  }
@@ -17,7 +17,8 @@ export declare class UICanvas extends Component {
17
17
  private _referenceResolution;
18
18
  private _isRootCanvas;
19
19
  private _enableBlocked;
20
- private _canvasHierarchyDirty;
20
+ private _parents;
21
+ private _hierarchyDirty;
21
22
  get enableBlocked(): boolean;
22
23
  set enableBlocked(value: boolean);
23
24
  get referenceResolution(): Vector2;
@@ -34,16 +35,21 @@ export declare class UICanvas extends Component {
34
35
  set distance(val: number);
35
36
  constructor(entity: Entity);
36
37
  _prepareRender(context: RenderContext): void;
37
- private _onReferenceResolutionChanged;
38
- private _onCameraTransformChange;
39
- private _onCameraPropertyChange;
40
- private _onCanvasSizeChange;
41
38
  private _adapterPoseInScreenSpace;
42
39
  private _adapterSizeInScreenSpace;
43
40
  private _walk;
44
41
  private _addCameraListener;
45
- private _addCanvasListener;
46
42
  private _removeCameraListener;
43
+ private _onCameraPropertyListener;
44
+ private _onCameraTransformListener;
45
+ private _addCanvasListener;
47
46
  private _removeCanvasListener;
48
- _onParentChange(seniority: number): void;
47
+ private _onCanvasSizeListener;
48
+ private _addParentListener;
49
+ private _removeParentListener;
50
+ private _onEntityListener;
51
+ private _onParentListener;
52
+ private _onReferenceResolutionChanged;
53
+ private _checkIsRootCanvas;
54
+ private _setIsRootCanvas;
49
55
  }
@@ -1,20 +1,14 @@
1
1
  import { BoundingBox, Vector4 } from "@galacean/engine-math";
2
2
  import { Renderer } from "../Renderer";
3
- import { UICanvas } from "./UICanvas";
4
3
  import { UITransform, UITransformModifyFlags } from "./UITransform";
5
4
  export declare class UIRenderer extends Renderer {
6
- private static _uiCanvas;
7
- protected _canvas: UICanvas;
8
5
  protected _uiTransform: UITransform;
9
6
  protected _localBounds: BoundingBox;
10
7
  protected _rayCastTarget: boolean;
11
8
  protected _rayCastPadding: Vector4;
12
- get canvas(): UICanvas;
13
- set canvas(val: UICanvas);
14
9
  get rayCastTarget(): boolean;
15
10
  set rayCastTarget(value: boolean);
16
11
  get rayCastPadding(): Vector4;
17
12
  set rayCastPadding(value: Vector4);
18
- _onParentChange(seniority: number): void;
19
13
  protected _onUITransformChanged(flag: UITransformModifyFlags): void;
20
14
  }
@@ -0,0 +1,16 @@
1
+ import { IPoolElement, ObjectPool } from "./ObjectPool";
2
+ /**
3
+ * Clearable Object Pool.
4
+ */
5
+ export declare class ClearableObjectPool<T extends IPoolElement> extends ObjectPool<T> {
6
+ private _usedElementCount;
7
+ constructor(type: new () => T);
8
+ /**
9
+ * Get an object.
10
+ */
11
+ get(): T;
12
+ /**
13
+ * Clear used object count to 0, not destroy any object, just change index.
14
+ */
15
+ clear(): void;
16
+ }
@@ -0,0 +1,16 @@
1
+ export declare abstract class ObjectPool<T extends IPoolElement> {
2
+ protected _type: new () => T;
3
+ protected _elements: T[];
4
+ constructor(type: new () => T);
5
+ garbageCollection(): void;
6
+ abstract get(): T;
7
+ }
8
+ /**
9
+ * The basic interface for Object Pool's element.
10
+ */
11
+ export interface IPoolElement {
12
+ /**
13
+ * Called when the object need be release.
14
+ */
15
+ dispose?(): void;
16
+ }
@@ -0,0 +1,16 @@
1
+ import { IPoolElement, ObjectPool } from "./ObjectPool";
2
+ /**
3
+ * Returnable Object Pool.
4
+ */
5
+ export declare class ReturnableObjectPool<T extends IPoolElement> extends ObjectPool<T> {
6
+ private _lastElementIndex;
7
+ constructor(type: new () => T, initializeCount?: number);
8
+ /**
9
+ * Get an object from the pool.
10
+ */
11
+ get(): T;
12
+ /**
13
+ * Return an object to the pool.
14
+ */
15
+ return(element: T): void;
16
+ }
@@ -0,0 +1,3 @@
1
+ export { ClearableObjectPool } from "./ClearableObjectPool";
2
+ export type { IPoolElement } from "./ObjectPool";
3
+ export { ReturnableObjectPool } from "./ReturnableObjectPool";