@galacean/effects-core 2.0.0-alpha.3 → 2.0.0-alpha.31

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 (122) hide show
  1. package/dist/__definations__/fbeffects-object-data.d.ts +28 -0
  2. package/dist/__definations__/fbeffects-package-data.d.ts +26 -0
  3. package/dist/__definations__/fbgeometry-data.d.ts +77 -0
  4. package/dist/__definations__/fbsub-mesh.d.ts +26 -0
  5. package/dist/__definations__/fbvertex-channel.d.ts +33 -0
  6. package/dist/__definations__/fbvertex-data.d.ts +27 -0
  7. package/dist/__definations__/index.d.ts +6 -0
  8. package/dist/asset-loader.d.ts +8 -90
  9. package/dist/asset-manager.d.ts +1 -80
  10. package/dist/binary-asset.d.ts +6 -0
  11. package/dist/camera.d.ts +10 -1
  12. package/dist/canvas-pool.d.ts +10 -0
  13. package/dist/comp-vfx-item.d.ts +24 -10
  14. package/dist/components/component.d.ts +5 -5
  15. package/dist/components/effect-component.d.ts +1 -1
  16. package/dist/components/index.d.ts +1 -0
  17. package/dist/components/post-process-volume.d.ts +15 -0
  18. package/dist/components/renderer-component.d.ts +1 -1
  19. package/dist/composition-source-manager.d.ts +8 -7
  20. package/dist/composition.d.ts +70 -40
  21. package/dist/constants.d.ts +1 -2
  22. package/dist/decorators.d.ts +4 -3
  23. package/dist/downloader.d.ts +11 -8
  24. package/dist/effects-object.d.ts +3 -2
  25. package/dist/effects-package.d.ts +19 -0
  26. package/dist/engine.d.ts +11 -7
  27. package/dist/fallback/camera.d.ts +2 -0
  28. package/dist/fallback/index.d.ts +12 -0
  29. package/dist/fallback/interact.d.ts +2 -0
  30. package/dist/fallback/migration.d.ts +20 -0
  31. package/dist/fallback/particle.d.ts +2 -0
  32. package/dist/fallback/sprite.d.ts +3 -0
  33. package/dist/fallback/utils.d.ts +25 -0
  34. package/dist/gl/create-gl-context.d.ts +2 -1
  35. package/dist/gl/index.d.ts +3 -0
  36. package/dist/image-asset.d.ts +5 -0
  37. package/dist/index.d.ts +8 -4
  38. package/dist/index.js +21140 -19641
  39. package/dist/index.js.map +1 -1
  40. package/dist/index.mjs +21563 -20062
  41. package/dist/index.mjs.map +1 -1
  42. package/dist/material/material.d.ts +19 -5
  43. package/dist/material/types.d.ts +0 -5
  44. package/dist/material/utils.d.ts +4 -4
  45. package/dist/math/bezier.d.ts +99 -0
  46. package/dist/math/keyframe-info.d.ts +39 -0
  47. package/dist/math/translate.d.ts +3 -2
  48. package/dist/math/utils.d.ts +6 -2
  49. package/dist/math/value-getter.d.ts +52 -26
  50. package/dist/pass-render-level.d.ts +3 -1
  51. package/dist/plugin-system.d.ts +3 -4
  52. package/dist/plugins/cal/animation-playable.d.ts +2 -1
  53. package/dist/plugins/cal/calculate-item.d.ts +5 -39
  54. package/dist/plugins/cal/calculate-vfx-item.d.ts +54 -13
  55. package/dist/plugins/cal/playable-graph.d.ts +72 -21
  56. package/dist/plugins/cal/timeline-asset.d.ts +27 -0
  57. package/dist/plugins/camera/camera-controller-node.d.ts +1 -12
  58. package/dist/plugins/index.d.ts +8 -3
  59. package/dist/plugins/interact/click-handler.d.ts +3 -3
  60. package/dist/plugins/interact/event-system.d.ts +0 -2
  61. package/dist/plugins/interact/interact-item.d.ts +15 -1
  62. package/dist/plugins/interact/interact-mesh.d.ts +1 -1
  63. package/dist/plugins/particle/particle-loader.d.ts +1 -1
  64. package/dist/plugins/particle/particle-mesh.d.ts +7 -7
  65. package/dist/plugins/particle/particle-system-renderer.d.ts +1 -1
  66. package/dist/plugins/particle/particle-system.d.ts +5 -3
  67. package/dist/plugins/particle/particle-vfx-item.d.ts +8 -3
  68. package/dist/plugins/particle/trail-mesh.d.ts +7 -7
  69. package/dist/plugins/plugin.d.ts +7 -8
  70. package/dist/plugins/sprite/sprite-item.d.ts +29 -15
  71. package/dist/plugins/sprite/sprite-mesh.d.ts +0 -4
  72. package/dist/plugins/text/index.d.ts +4 -0
  73. package/dist/plugins/text/text-item.d.ts +33 -5
  74. package/dist/plugins/text/text-layout.d.ts +9 -1
  75. package/dist/plugins/timeline/playables/activation-mixer-playable.d.ts +7 -0
  76. package/dist/plugins/timeline/playables/sub-composition-clip-playable.d.ts +5 -0
  77. package/dist/plugins/timeline/playables/sub-composition-playable-asset.d.ts +5 -0
  78. package/dist/plugins/timeline/track.d.ts +72 -0
  79. package/dist/plugins/timeline/tracks/activation-track.d.ts +5 -0
  80. package/dist/plugins/timeline/tracks/sprite-color-track.d.ts +3 -0
  81. package/dist/plugins/timeline/tracks/sub-composition-track.d.ts +4 -0
  82. package/dist/plugins/timeline/tracks/transform-track.d.ts +3 -0
  83. package/dist/render/create-copy-shader.d.ts +1 -1
  84. package/dist/render/{frame-buffer.d.ts → framebuffer.d.ts} +7 -7
  85. package/dist/render/geometry.d.ts +14 -1
  86. package/dist/render/global-volume.d.ts +7 -5
  87. package/dist/render/gpu-capability.d.ts +6 -6
  88. package/dist/render/index.d.ts +3 -2
  89. package/dist/render/render-frame.d.ts +12 -12
  90. package/dist/render/render-pass.d.ts +10 -10
  91. package/dist/render/{render-buffer.d.ts → renderbuffer.d.ts} +4 -4
  92. package/dist/render/renderer.d.ts +7 -6
  93. package/dist/render/semantic-map.d.ts +14 -0
  94. package/dist/render/shader.d.ts +12 -5
  95. package/dist/scene.d.ts +86 -4
  96. package/dist/serialization-helper.d.ts +6 -4
  97. package/dist/shader/index.d.ts +0 -11
  98. package/dist/shape/shape.d.ts +1 -1
  99. package/dist/shape/sphere.d.ts +0 -3
  100. package/dist/template-image.d.ts +10 -0
  101. package/dist/texture/texture.d.ts +8 -0
  102. package/dist/texture/types.d.ts +2 -2
  103. package/dist/texture/utils.d.ts +2 -1
  104. package/dist/ticker.d.ts +2 -2
  105. package/dist/transform.d.ts +3 -3
  106. package/dist/utils/array.d.ts +1 -1
  107. package/dist/utils/device.d.ts +4 -0
  108. package/dist/utils/index.d.ts +29 -14
  109. package/dist/utils/text.d.ts +8 -0
  110. package/dist/vfx-item.d.ts +37 -61
  111. package/package.json +8 -6
  112. package/dist/asset-migrations.d.ts +0 -7
  113. package/dist/plugins/cal/animation-mixer-playable.d.ts +0 -4
  114. package/dist/plugins/cal/animation-playable-output.d.ts +0 -4
  115. package/dist/plugins/cal/track.d.ts +0 -34
  116. package/dist/semantic-map.d.ts +0 -14
  117. package/dist/template-image/index.d.ts +0 -67
  118. package/dist/template-image/qcanvas-viewer.d.ts +0 -21
  119. package/dist/template-image/qtext.d.ts +0 -96
  120. package/dist/template-image/template-v1.d.ts +0 -27
  121. package/dist/template-image/text-metrics.d.ts +0 -18
  122. package/dist/utils/timeline-component.d.ts +0 -6
@@ -0,0 +1,7 @@
1
+ import type { FrameContext } from '../../cal/playable-graph';
2
+ import { Playable } from '../../cal/playable-graph';
3
+ export declare class ActivationMixerPlayable extends Playable {
4
+ processFrame(context: FrameContext): void;
5
+ private hideRendererComponents;
6
+ private showRendererComponents;
7
+ }
@@ -0,0 +1,5 @@
1
+ import type { FrameContext } from '../../cal/playable-graph';
2
+ import { Playable } from '../../cal/playable-graph';
3
+ export declare class SubCompositionClipPlayable extends Playable {
4
+ processFrame(context: FrameContext): void;
5
+ }
@@ -0,0 +1,5 @@
1
+ import type { Playable, PlayableGraph } from '../../cal/playable-graph';
2
+ import { PlayableAsset } from '../../cal/playable-graph';
3
+ export declare class SubCompositionPlayableAsset extends PlayableAsset {
4
+ createPlayable(graph: PlayableGraph): Playable;
5
+ }
@@ -0,0 +1,72 @@
1
+ import { EndBehavior } from '@galacean/effects-specification';
2
+ import type { PlayableGraph } from '../cal/playable-graph';
3
+ import { Playable, PlayableAsset, PlayableOutput } from '../cal/playable-graph';
4
+ import { ParticleSystem } from '../particle/particle-system';
5
+ import type { Constructor } from '../../utils';
6
+ /**
7
+ * @since 2.0.0
8
+ * @internal
9
+ */
10
+ export declare class TimelineClip {
11
+ id: string;
12
+ name: string;
13
+ start: number;
14
+ duration: number;
15
+ asset: PlayableAsset;
16
+ endBehavior: EndBehavior;
17
+ constructor();
18
+ toLocalTime(time: number): number;
19
+ }
20
+ /**
21
+ * @since 2.0.0
22
+ * @internal
23
+ */
24
+ export declare class TrackAsset extends PlayableAsset {
25
+ name: string;
26
+ binding: object;
27
+ trackType: TrackType;
28
+ private clipSeed;
29
+ private clips;
30
+ protected children: TrackAsset[];
31
+ /**
32
+ * 重写该方法以获取自定义对象绑定
33
+ */
34
+ resolveBinding(parentBinding: object): object;
35
+ /**
36
+ * 重写该方法以创建自定义混合器
37
+ */
38
+ createTrackMixer(graph: PlayableGraph): Playable;
39
+ createOutput(): PlayableOutput;
40
+ createPlayableGraph(graph: PlayableGraph, runtimeClips: RuntimeClip[]): Playable;
41
+ createMixerPlayableGraph(graph: PlayableGraph, runtimeClips: RuntimeClip[]): Playable;
42
+ compileClips(graph: PlayableGraph, timelineClips: TimelineClip[], runtimeClips: RuntimeClip[]): Playable;
43
+ createPlayable(graph: PlayableGraph): Playable;
44
+ getChildTracks(): TrackAsset[];
45
+ addChild(child: TrackAsset): void;
46
+ createClip<T extends PlayableAsset>(classConstructor: Constructor<T>, name?: string): TimelineClip;
47
+ getClips(): TimelineClip[];
48
+ findClip(name: string): TimelineClip | undefined;
49
+ addClip(clip: TimelineClip): void;
50
+ private createClipPlayable;
51
+ }
52
+ export declare enum TrackType {
53
+ MasterTrack = 0,
54
+ ObjectTrack = 1
55
+ }
56
+ export declare class RuntimeClip {
57
+ clip: TimelineClip;
58
+ playable: Playable;
59
+ parentMixer: Playable;
60
+ track: TrackAsset;
61
+ particleSystem: ParticleSystem;
62
+ constructor(clip: TimelineClip, clipPlayable: Playable, parentMixer: Playable, track: TrackAsset);
63
+ set enable(value: boolean);
64
+ evaluateAt(localTime: number): void;
65
+ }
66
+ /**
67
+ * @since 2.0.0
68
+ * @internal
69
+ */
70
+ export interface TimelineClipData {
71
+ asset: PlayableAsset;
72
+ }
@@ -0,0 +1,5 @@
1
+ import type { PlayableGraph, Playable } from '../../cal/playable-graph';
2
+ import { TrackAsset } from '../track';
3
+ export declare class ActivationTrack extends TrackAsset {
4
+ createTrackMixer(graph: PlayableGraph): Playable;
5
+ }
@@ -0,0 +1,3 @@
1
+ import { TrackAsset } from '../track';
2
+ export declare class SpriteColorTrack extends TrackAsset {
3
+ }
@@ -0,0 +1,4 @@
1
+ import { TrackAsset } from '../track';
2
+ export declare class SubCompositionTrack extends TrackAsset {
3
+ resolveBinding(parentBinding: object): object;
4
+ }
@@ -0,0 +1,3 @@
1
+ import { TrackAsset } from '../track';
2
+ export declare class TransformTrack extends TrackAsset {
3
+ }
@@ -2,5 +2,5 @@ import type { SharedShaderWithSource } from './shader';
2
2
  export declare const EFFECTS_COPY_MESH_NAME = "effects-internal-copy";
3
3
  export declare const COPY_MESH_SHADER_ID = "effects-internal-copy-mesh";
4
4
  export declare const COPY_VERTEX_SHADER = "\n#ifdef WEBGL2\n#define vsIn in\n#define vsOut out\n#else\n#define vsIn attribute\n#define vsOut varying\n#endif\nprecision highp float;\nvsIn vec2 aPos;\nvsOut vec2 vTex;\nvoid main(){\n gl_Position = vec4(aPos,0.,1.0);\n vTex = (aPos + vec2(1.0))/2.;\n}";
5
- export declare const COPY_FRAGMENT_SHADER: string;
5
+ export declare const COPY_FRAGMENT_SHADER = "precision mediump float;\n#ifdef WEBGL2\n#define fsIn in\n#define fsOut out\n#define texture2D texture\n#else\n#define fsIn varying\n#endif\nfsIn vec2 vTex;\n#ifdef WEBGL2\nlayout (location = 0) out vec4 fragColor;\n#else\n#define fragColor gl_FragColor\n#endif\n\n#ifdef DEPTH_TEXTURE\nuniform sampler2D uDepth;\n#ifndef WEBGL2\n#extension GL_EXT_frag_depth : enable\n#define gl_FragDepth gl_FragDepthEXT\n#endif\n#endif\nvoid main(){\n #ifdef DEPTH_TEXTURE\n gl_FragDepth = texture2D(uDepth,vTex).r;\n #endif\n}\n";
6
6
  export declare function createCopyShader(level: number, writeDepth?: boolean): SharedShaderWithSource;
@@ -1,9 +1,9 @@
1
1
  import type { Texture } from '../texture';
2
- import type { RenderBuffer } from './render-buffer';
2
+ import type { Renderbuffer } from './renderbuffer';
3
3
  import type { RenderPassAttachmentStorageType, RenderPassDepthStencilAttachmentOptions } from './render-pass';
4
4
  import type { RenderPassDestroyAttachmentType, RenderPassStoreAction } from './render-pass';
5
5
  import type { Renderer } from './renderer';
6
- export interface FrameBufferProps {
6
+ export interface FramebufferProps {
7
7
  attachments: Texture[];
8
8
  depthStencilAttachment?: RenderPassDepthStencilAttachmentOptions;
9
9
  isCustomViewport?: boolean;
@@ -23,7 +23,7 @@ export declare enum RenderTextureFormat {
23
23
  /**
24
24
  *
25
25
  */
26
- export declare class FrameBuffer {
26
+ export declare class Framebuffer {
27
27
  depthStencilStorageType: RenderPassAttachmentStorageType;
28
28
  name: string;
29
29
  viewportScale: number;
@@ -32,17 +32,17 @@ export declare class FrameBuffer {
32
32
  externalStorage: boolean;
33
33
  storeAction: RenderPassStoreAction;
34
34
  isCustomViewport: boolean;
35
- static create: (props: FrameBufferProps, renderer: Renderer) => FrameBuffer;
35
+ static create: (props: FramebufferProps, renderer: Renderer) => Framebuffer;
36
36
  resize(x: number, y: number, width: number, height: number): void;
37
37
  resetColorTextures(textures: Texture[]): void;
38
38
  unbind(): void;
39
39
  bind(): void;
40
- get stencilStorage(): RenderBuffer | undefined;
41
- get depthStorage(): RenderBuffer | undefined;
40
+ get stencilStorage(): Renderbuffer | undefined;
41
+ get depthStorage(): Renderbuffer | undefined;
42
42
  getDepthTexture(): Texture | undefined;
43
43
  getStencilTexture(): Texture | undefined;
44
44
  getColorTextures(): Texture[];
45
- dispose(opt?: {
45
+ dispose(options?: {
46
46
  depthStencilAttachment?: RenderPassDestroyAttachmentType;
47
47
  }): void;
48
48
  }
@@ -24,6 +24,11 @@ export interface GeometryProps {
24
24
  */
25
25
  maxVertex?: number;
26
26
  }
27
+ export interface SkinProps {
28
+ boneNames?: string[];
29
+ rootBoneName?: string;
30
+ inverseBindMatrices?: number[];
31
+ }
27
32
  /**
28
33
  * Geometry 抽象类
29
34
  */
@@ -32,6 +37,10 @@ export declare abstract class Geometry extends EffectsObject {
32
37
  * Geometry 的名称
33
38
  */
34
39
  name: string;
40
+ /**
41
+ * 子网格数据
42
+ */
43
+ subMeshes: spec.SubMesh[];
35
44
  /**
36
45
  * Geometry 创建函数
37
46
  */
@@ -96,6 +105,10 @@ export declare abstract class Geometry extends EffectsObject {
96
105
  * 获取当前 Geometry 的 drawcount
97
106
  */
98
107
  abstract getDrawCount(): number;
108
+ /**
109
+ * 获取当前 Geometry 关联的蒙皮数据
110
+ */
111
+ abstract getSkinProps(): SkinProps;
99
112
  /**
100
113
  * 初始化 GPU 资源
101
114
  * @override
@@ -106,4 +119,4 @@ export declare abstract class Geometry extends EffectsObject {
106
119
  */
107
120
  flush(): void;
108
121
  }
109
- export declare function generateEmptyTypedArray(type: number): Float32Array | Int32Array | Int16Array;
122
+ export declare function generateEmptyTypedArray(type: number): Float32Array | Int16Array | Int32Array;
@@ -1,15 +1,17 @@
1
1
  /**
2
2
  * 后处理配置
3
3
  */
4
- export interface GlobalVolume {
5
- usePostProcessing: boolean;
4
+ export interface PostProcessVolumeData {
6
5
  useHDR: boolean;
7
- useBloom: number;
6
+ useBloom: boolean;
8
7
  threshold: number;
9
8
  bloomIntensity: number;
10
9
  brightness: number;
11
10
  saturation: number;
12
11
  contrast: number;
13
- useToneMapping: number;
12
+ vignetteIntensity: number;
13
+ vignetteSmoothness: number;
14
+ vignetteRoundness: number;
15
+ useToneMapping: boolean;
14
16
  }
15
- export declare const defaultGlobalVolume: GlobalVolume;
17
+ export declare const defaultGlobalVolume: PostProcessVolumeData;
@@ -1,5 +1,5 @@
1
+ import type { GLType } from '../gl';
1
2
  import type { Immutable } from '../utils';
2
- export type GLType = 'webgl' | 'webgl2';
3
3
  export interface GPUCapabilityDetail {
4
4
  floatTexture: number;
5
5
  halfFloatTexture: number;
@@ -42,8 +42,8 @@ export declare class GPUCapability {
42
42
  drawBuffers(gl: WebGLRenderingContext | WebGL2RenderingContext, bufferStates: boolean[]): void;
43
43
  setTextureAnisotropic(gl: WebGLRenderingContext | WebGL2RenderingContext, target: GLenum, level: number): void;
44
44
  }
45
- export declare const COMPRESSED_TEXTURE: {
46
- NONE: number;
47
- PVRTC: number;
48
- ASTC: number;
49
- };
45
+ export declare enum COMPRESSED_TEXTURE {
46
+ NONE = 0,
47
+ PVRTC = 1,
48
+ ASTC = 2
49
+ }
@@ -1,12 +1,13 @@
1
1
  export * from './create-copy-shader';
2
2
  export * from './render-frame';
3
- export * from './render-buffer';
3
+ export * from './renderbuffer';
4
4
  export * from './render-pass';
5
5
  export * from './shader';
6
6
  export * from './gpu-capability';
7
7
  export * from './mesh';
8
8
  export * from './types';
9
9
  export * from './geometry';
10
- export * from './frame-buffer';
10
+ export * from './framebuffer';
11
11
  export * from './renderer';
12
12
  export * from './global-volume';
13
+ export * from './semantic-map';
@@ -1,11 +1,12 @@
1
1
  import type { vec4 } from '@galacean/effects-specification';
2
- import type { Matrix4 } from '@galacean/effects-math/es/core/index';
3
- import { Vector2, Vector4 } from '@galacean/effects-math/es/core/index';
2
+ import type { Matrix4 } from '@galacean/effects-math/es/core/matrix4';
3
+ import { Vector2 } from '@galacean/effects-math/es/core/vector2';
4
+ import { Vector4 } from '@galacean/effects-math/es/core/vector4';
4
5
  import type { Camera } from '../camera';
5
6
  import type { UniformValue } from '../material';
6
7
  import { PassTextureCache } from '../paas-texture-cache';
7
- import type { SemanticFunc } from '../semantic-map';
8
- import { SemanticMap } from '../semantic-map';
8
+ import type { SemanticFunc } from './semantic-map';
9
+ import { SemanticMap } from './semantic-map';
9
10
  import { Texture } from '../texture';
10
11
  import type { Disposable } from '../utils';
11
12
  import { DestroyOptions } from '../utils';
@@ -13,8 +14,7 @@ import { Mesh } from './mesh';
13
14
  import type { RenderPassClearAction, RenderPassColorAttachmentOptions, RenderPassDepthStencilAttachment, RenderPassDestroyOptions, RenderPassStoreAction } from './render-pass';
14
15
  import { RenderPass } from './render-pass';
15
16
  import type { Renderer } from './renderer';
16
- import type { GlobalVolume } from './global-volume';
17
- import type { RendererComponent } from '../components';
17
+ import type { PostProcessVolume, RendererComponent } from '../components';
18
18
  /**
19
19
  * 渲染数据,保存了当前渲染使用到的数据。
20
20
  */
@@ -69,11 +69,11 @@ export interface RenderPassInfo {
69
69
  */
70
70
  export interface RenderFrameResource {
71
71
  /**
72
- * 纹理对象,用于 FrameBuffer 的颜色 Attachment
72
+ * 纹理对象,用于 Framebuffer 的颜色 Attachment
73
73
  */
74
74
  color_a: Texture;
75
75
  /**
76
- * 纹理对象,用于 FrameBuffer 的颜色 Attachment
76
+ * 纹理对象,用于 Framebuffer 的颜色 Attachment
77
77
  */
78
78
  color_b: Texture;
79
79
  /**
@@ -127,7 +127,7 @@ export interface RenderFrameOptions {
127
127
  /**
128
128
  * 后处理渲染配置
129
129
  */
130
- globalVolume?: Partial<GlobalVolume>;
130
+ globalVolume?: PostProcessVolume;
131
131
  /**
132
132
  * 名称
133
133
  */
@@ -165,7 +165,7 @@ export declare class RenderFrame implements Disposable {
165
165
  /**
166
166
  * 存放后处理的属性设置
167
167
  */
168
- globalVolume: GlobalVolume;
168
+ globalVolume: PostProcessVolume;
169
169
  renderer: Renderer;
170
170
  resource: RenderFrameResource;
171
171
  keepColorBuffer?: boolean;
@@ -210,7 +210,7 @@ export declare class RenderFrame implements Disposable {
210
210
  */
211
211
  dispose(options?: RenderFrameDestroyOptions): void;
212
212
  /**
213
- * 重置 RenderPass ColorAttachment,解决 FrameBuffer 即读又写的问题
213
+ * 重置 RenderPass ColorAttachment,解决 Framebuffer 即读又写的问题
214
214
  * @param renderPasses - RenderPass 对象数组
215
215
  * @param startIndex - 开始重置的索引
216
216
  */
@@ -239,7 +239,7 @@ export declare class RenderFrame implements Disposable {
239
239
  createResource(): void;
240
240
  /**
241
241
  * 创建拷贝 RenderPass 用到的 Mesh 对象
242
- * @param semantics - RenderPass 渲染时 FrameBuffer 的颜色和深度纹理、大小和是否混合
242
+ * @param semantics - RenderPass 渲染时 Framebuffer 的颜色和深度纹理、大小和是否混合
243
243
  */
244
244
  createCopyMesh(semantics?: {
245
245
  tex?: string;
@@ -4,14 +4,14 @@ import type { Camera } from '../camera';
4
4
  import type { RendererComponent } from '../components';
5
5
  import type { Engine } from '../engine';
6
6
  import type { MeshDestroyOptions, Renderer } from '../render';
7
- import { FrameBuffer } from '../render';
8
- import type { SemanticGetter } from '../semantic-map';
9
- import { SemanticMap } from '../semantic-map';
7
+ import { Framebuffer } from '../render';
8
+ import type { SemanticGetter } from './semantic-map';
9
+ import { SemanticMap } from './semantic-map';
10
10
  import type { TextureConfigOptions, TextureLoadAction } from '../texture';
11
11
  import { Texture } from '../texture';
12
12
  import type { Disposable, Sortable } from '../utils';
13
13
  import { DestroyOptions, OrderType } from '../utils';
14
- import type { RenderBuffer } from './render-buffer';
14
+ import type { Renderbuffer } from './renderbuffer';
15
15
  import type { RenderingData } from './render-frame';
16
16
  export declare const RenderPassPriorityPrepare = 0;
17
17
  export declare const RenderPassPriorityNormal = 1000;
@@ -76,9 +76,9 @@ export interface RenderPassColorAttachmentOptions {
76
76
  /**
77
77
  * ColorAttachment 的 Buffer 参数
78
78
  */
79
- buffer?: RenderBuffer;
79
+ buffer?: Renderbuffer;
80
80
  /**
81
- * WebGL2 下 RenderBuffer 超采数目。默认是0,即不启用超采。
81
+ * WebGL2 下 Renderbuffer 超采数目。默认是0,即不启用超采。
82
82
  * @default 0
83
83
  */
84
84
  multiSample?: number;
@@ -102,12 +102,12 @@ export declare class RenderTargetHandle implements Disposable {
102
102
  }
103
103
  export interface RenderPassDepthStencilAttachment {
104
104
  readonly storageType: RenderPassAttachmentStorageType;
105
- readonly storage?: RenderBuffer;
105
+ readonly storage?: Renderbuffer;
106
106
  readonly texture?: Texture;
107
107
  }
108
108
  export interface RenderPassDepthStencilAttachmentOptions {
109
109
  storageType: RenderPassAttachmentStorageType;
110
- storage?: RenderBuffer;
110
+ storage?: Renderbuffer;
111
111
  texture?: Texture;
112
112
  }
113
113
  /**
@@ -209,7 +209,7 @@ export declare class RenderPass implements Disposable, Sortable {
209
209
  * ColorAttachment 数组
210
210
  */
211
211
  attachments: RenderTargetHandle[];
212
- frameBuffer?: FrameBuffer;
212
+ framebuffer: Framebuffer | null;
213
213
  /**
214
214
  * 名称
215
215
  */
@@ -227,7 +227,7 @@ export declare class RenderPass implements Disposable, Sortable {
227
227
  */
228
228
  readonly camera?: Camera;
229
229
  /**
230
- * 深度和蒙版 Attachment 类型,注意区分纹理和 RenderBuffer
230
+ * 深度和蒙版 Attachment 类型,注意区分纹理和 Renderbuffer
231
231
  */
232
232
  readonly depthStencilType: RenderPassAttachmentStorageType;
233
233
  /**
@@ -1,19 +1,19 @@
1
1
  import type { Disposable } from '../utils';
2
2
  import type { RenderPassAttachmentStorageType } from './render-pass';
3
- export interface RenderBufferProps {
3
+ export interface RenderbufferProps {
4
4
  storageType: RenderPassAttachmentStorageType;
5
5
  format: GLenum;
6
6
  attachment: GLenum;
7
7
  }
8
- export declare abstract class RenderBuffer implements Disposable {
8
+ export declare abstract class Renderbuffer implements Disposable {
9
9
  readonly size: [x: number, y: number];
10
10
  readonly multiSample = 1;
11
11
  readonly storageType: RenderPassAttachmentStorageType;
12
12
  readonly format: GLenum;
13
13
  readonly attachment: GLenum;
14
14
  protected destroyed: boolean;
15
- static create: (props: RenderBufferProps) => RenderBuffer;
16
- constructor(props: RenderBufferProps);
15
+ static create: (props: RenderbufferProps) => Renderbuffer;
16
+ constructor(props: RenderbufferProps);
17
17
  get isDestroyed(): boolean;
18
18
  abstract setSize(width: number, height: number): void;
19
19
  abstract dispose(): void;
@@ -3,13 +3,14 @@ import type { RendererComponent } from '../components/renderer-component';
3
3
  import type { Engine } from '../engine';
4
4
  import type { Material } from '../material';
5
5
  import type { LostHandler, RestoreHandler } from '../utils';
6
- import type { FilterMode, FrameBuffer, RenderTextureFormat } from './frame-buffer';
6
+ import type { FilterMode, Framebuffer, RenderTextureFormat } from './framebuffer';
7
7
  import type { Geometry } from './geometry';
8
8
  import type { RenderFrame, RenderingData } from './render-frame';
9
9
  import type { RenderPassClearAction, RenderPassStoreAction } from './render-pass';
10
10
  import type { ShaderLibrary } from './shader';
11
+ import type { GLType } from '../gl';
11
12
  export declare class Renderer implements LostHandler, RestoreHandler {
12
- static create: (canvas: HTMLCanvasElement | OffscreenCanvas, framework: 'webgl' | 'webgl2', renderOptions?: WebGLContextAttributes) => Renderer;
13
+ static create: (canvas: HTMLCanvasElement | OffscreenCanvas, framework: GLType, renderOptions?: WebGLContextAttributes) => Renderer;
13
14
  engine: Engine;
14
15
  env: string;
15
16
  /**
@@ -20,8 +21,8 @@ export declare class Renderer implements LostHandler, RestoreHandler {
20
21
  setGlobalFloat(name: string, value: number): void;
21
22
  setGlobalInt(name: string, value: number): void;
22
23
  setGlobalMatrix(name: string, value: Matrix4): void;
23
- getFrameBuffer(): FrameBuffer | null;
24
- setFrameBuffer(frameBuffer: FrameBuffer | null): void;
24
+ getFramebuffer(): Framebuffer | null;
25
+ setFramebuffer(framebuffer: Framebuffer | null): void;
25
26
  setViewport(x: number, y: number, width: number, height: number): void;
26
27
  resize(canvasWidth: number, canvasHeight: number): void;
27
28
  clear(action: RenderPassClearAction | RenderPassStoreAction): void;
@@ -56,7 +57,7 @@ export declare class Renderer implements LostHandler, RestoreHandler {
56
57
  getShaderLibrary(): ShaderLibrary | undefined;
57
58
  renderRenderFrame(renderFrame: RenderFrame): void;
58
59
  renderMeshes(meshes: RendererComponent[]): void;
59
- drawGeometry(geometry: Geometry, material: Material): void;
60
- getTemporaryRT(name: string, width: number, height: number, depthBuffer: number, filter: FilterMode, format: RenderTextureFormat): FrameBuffer | null;
60
+ drawGeometry(geometry: Geometry, material: Material, subMeshIndex?: number): void;
61
+ getTemporaryRT(name: string, width: number, height: number, depthBuffer: number, filter: FilterMode, format: RenderTextureFormat): Framebuffer | null;
61
62
  dispose(haltGL?: boolean): void;
62
63
  }
@@ -0,0 +1,14 @@
1
+ import type { UniformValue } from '../material';
2
+ import type { RenderingData } from '.';
3
+ import type { Disposable } from '../utils';
4
+ export type SemanticFunc = (state: RenderingData) => UniformValue | undefined;
5
+ export type SemanticGetter = UniformValue | SemanticFunc;
6
+ export declare class SemanticMap implements Disposable {
7
+ readonly semantics: Record<string, SemanticGetter>;
8
+ constructor(semantics?: Record<string, SemanticGetter>);
9
+ toObject(): Record<string, SemanticGetter>;
10
+ setSemantic(name: string, value?: SemanticGetter): void;
11
+ getSemanticValue(name: string, state: RenderingData): number | Float32Array | Float64Array | Uint8Array | Uint32Array | Uint16Array | Int8Array | Int16Array | Int32Array | number[] | number[][] | import("@galacean/effects-core").Texture | import("@galacean/effects-math/es/core").Vector2 | import("@galacean/effects-math/es/core").Vector3 | import("@galacean/effects-math/es/core").Vector4 | import("@galacean/effects-math/es/core").Matrix3 | import("@galacean/effects-math/es/core").Matrix4 | import("@galacean/effects-core").Texture[] | import("packages/effects-core/src/material/types").UniformStruct | import("packages/effects-core/src/material/types").UniformStruct[] | SemanticFunc | undefined;
12
+ hasSemanticValue(name: string): boolean;
13
+ dispose(): void;
14
+ }
@@ -1,6 +1,7 @@
1
+ import type * as spec from '@galacean/effects-specification';
1
2
  import { EffectsObject } from '../effects-object';
2
3
  import type { Engine } from '../engine';
3
- export type ShaderMarcos = [key: string, value: string | number | boolean][];
4
+ export type ShaderMacros = [key: string, value: string | number | boolean][];
4
5
  export declare enum ShaderCompileResultStatus {
5
6
  noShader = 0,
6
7
  success = 1,
@@ -38,7 +39,7 @@ export interface InstancedShaderWithSource {
38
39
  /**
39
40
  * shader的宏定义
40
41
  */
41
- marcos?: ShaderMarcos;
42
+ macros?: ShaderMacros;
42
43
  /**
43
44
  * shader是否共享
44
45
  */
@@ -64,7 +65,7 @@ export interface SharedShaderWithSource {
64
65
  /**
65
66
  * shader的宏定义
66
67
  */
67
- marcos?: ShaderMarcos;
68
+ macros?: ShaderMacros;
68
69
  /**
69
70
  * 是否共用GLProgram
70
71
  * shared为true时,
@@ -78,16 +79,22 @@ export interface SharedShaderWithSource {
78
79
  cacheId?: string;
79
80
  }
80
81
  export type ShaderWithSource = InstancedShaderWithSource | SharedShaderWithSource;
81
- export declare abstract class Shader extends EffectsObject {
82
+ export declare abstract class ShaderVariant extends EffectsObject {
82
83
  readonly source: ShaderWithSource;
84
+ shader: Shader;
83
85
  constructor(engine: Engine, source: ShaderWithSource);
84
86
  }
87
+ export declare class Shader extends EffectsObject {
88
+ shaderData: spec.ShaderData;
89
+ createVariant(macros?: Record<string, number | boolean>): ShaderVariant;
90
+ fromData(data: spec.ShaderData): void;
91
+ }
85
92
  export interface ShaderLibrary {
86
93
  readonly shaderResults: {
87
94
  [cacheId: string]: ShaderCompileResult;
88
95
  };
89
96
  addShader(shader: ShaderWithSource): void;
90
- createShader(shaderSource: ShaderWithSource): Shader;
97
+ createShader(shaderSource: ShaderWithSource, macros?: ShaderMacros): ShaderVariant;
91
98
  /**
92
99
  * @param cacheId
93
100
  */
package/dist/scene.d.ts CHANGED
@@ -1,16 +1,17 @@
1
1
  import type * as spec from '@galacean/effects-specification';
2
- import type { SceneType } from './asset-manager';
3
2
  import type { Texture } from './texture';
4
3
  import type { PluginSystem } from './plugin-system';
4
+ import type { PickEnum } from './utils';
5
5
  export type ImageSource = spec.TemplateImage | spec.Image | spec.CompressedImage;
6
+ export type SceneRenderLevel = PickEnum<spec.RenderLevel, spec.RenderLevel.A | spec.RenderLevel.B | spec.RenderLevel.S>;
6
7
  /**
7
- *
8
+ * 场景类型
8
9
  */
9
10
  export interface Scene {
10
11
  readonly jsonScene: spec.JSONScene;
11
12
  readonly bins: ArrayBuffer[];
12
13
  readonly pluginSystem: PluginSystem;
13
- readonly renderLevel?: spec.RenderLevel;
14
+ readonly renderLevel?: SceneRenderLevel;
14
15
  readonly storage: Record<string, any>;
15
16
  textureOptions: Record<string, any>[];
16
17
  images: ImageSource[];
@@ -24,7 +25,88 @@ export interface Scene {
24
25
  * 加载开始时间
25
26
  */
26
27
  startTime?: number;
28
+ /**
29
+ * 加载分段时长
30
+ */
31
+ timeInfos: Record<string, number>;
27
32
  url: SceneType;
28
33
  usedImages: Record<number, boolean>;
29
34
  }
30
- export declare function isScene(scene: any): scene is Scene;
35
+ /**
36
+ * 场景加载参数
37
+ */
38
+ export interface SceneLoadOptions {
39
+ /**
40
+ * 动态数据的参数
41
+ * key 是 JSON 中配置的字段名
42
+ * value 是要使用的值,图片使用 url 链接
43
+ * 图片链接可以使用数组传递,如果第一个加载失败,将尝试使用第二个地址
44
+ *
45
+ * @example
46
+ * ``` ts
47
+ * {
48
+ * variables: {
49
+ * bg: ['url','fallback_url'], // 如果两个图片都失败,将会触发加载失败
50
+ * fg: 'url' // 如果图片加载失败,将会触发加载失败,
51
+ * amount: 88.8,
52
+ * name: 'abc'
53
+ * }
54
+ * }
55
+ * ```
56
+ */
57
+ variables?: spec.TemplateVariables;
58
+ /**
59
+ * 是否使用压缩纹理
60
+ */
61
+ useCompressedTexture?: boolean;
62
+ /**
63
+ * 渲染分级。
64
+ * 分级之后,只会加载当前渲染等级的资源。
65
+ * 当渲染等级被设置为 B 后,player 的 fps 会降到 30 帧
66
+ * @default 'S'
67
+ */
68
+ renderLevel?: SceneRenderLevel;
69
+ /**
70
+ * 资源加载超时,时间单位秒
71
+ * @default 10s
72
+ */
73
+ timeout?: number;
74
+ /***
75
+ * 用于给 plugin 的加载数据
76
+ * key/value 的内容由 plugin 自己实现
77
+ */
78
+ pluginData?: Record<string, any>;
79
+ /**
80
+ * 场景加载时的环境(加载后把 env 结果写入 scene)
81
+ * @default '' - 编辑器中为 'editor'
82
+ */
83
+ env?: string;
84
+ /**
85
+ * 加载后是否自动播放
86
+ * @default true
87
+ */
88
+ autoplay?: boolean;
89
+ /**
90
+ * 合成播放完成后是否需要再使用,是的话生命周期结束后不会 `dispose`
91
+ * @default false
92
+ */
93
+ reusable?: boolean;
94
+ /**
95
+ * 播放速度,当速度为负数时,合成倒播
96
+ */
97
+ speed?: number;
98
+ }
99
+ /**
100
+ * 接受用于加载的数据类型
101
+ */
102
+ export type SceneURLType = {
103
+ url: string;
104
+ };
105
+ export type SceneType = string | Scene | SceneURLType | Record<string, any>;
106
+ export type SceneWithOptionsType = {
107
+ options: SceneLoadOptions;
108
+ };
109
+ export type SceneLoadType = SceneType | SceneWithOptionsType;
110
+ export declare function isSceneJSON(scene: any): scene is Scene;
111
+ export declare function isSceneURL(scene: any): scene is Scene;
112
+ export declare function isSceneWithOptions(scene: any): scene is SceneWithOptionsType;