@galacean/effects-core 1.1.2 → 1.1.4

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 (125) hide show
  1. package/dist/asset-manager.d.ts +130 -0
  2. package/dist/camera.d.ts +183 -0
  3. package/dist/comp-vfx-item.d.ts +71 -0
  4. package/dist/composition-source-manager.d.ts +45 -0
  5. package/dist/composition.d.ts +406 -0
  6. package/dist/config.d.ts +7 -0
  7. package/dist/constants.d.ts +11 -0
  8. package/dist/downloader.d.ts +83 -0
  9. package/dist/engine.d.ts +38 -0
  10. package/dist/filter.d.ts +63 -0
  11. package/dist/filters/alpha-frame.d.ts +5 -0
  12. package/dist/filters/alpha-mask.d.ts +5 -0
  13. package/dist/filters/bloom.d.ts +8 -0
  14. package/dist/filters/camera-move.d.ts +5 -0
  15. package/dist/filters/delay.d.ts +14 -0
  16. package/dist/filters/distortion.d.ts +5 -0
  17. package/dist/filters/gaussian.d.ts +27 -0
  18. package/dist/filters/index.d.ts +2 -0
  19. package/dist/filters/lum.d.ts +5 -0
  20. package/dist/filters/utils.d.ts +7 -0
  21. package/dist/gl/create-gl-context.d.ts +9 -0
  22. package/dist/gl/gpu-time.d.ts +5 -0
  23. package/dist/gl/index.d.ts +6 -0
  24. package/dist/index.d.ts +31 -0
  25. package/dist/index.js +110 -81
  26. package/dist/index.js.map +1 -1
  27. package/dist/index.mjs +110 -81
  28. package/dist/index.mjs.map +1 -1
  29. package/dist/libs/earcut.d.ts +37 -0
  30. package/dist/material/index.d.ts +4 -0
  31. package/dist/material/material-data-block.d.ts +27 -0
  32. package/dist/material/material.d.ts +347 -0
  33. package/dist/material/types.d.ts +66 -0
  34. package/dist/material/utils.d.ts +17 -0
  35. package/dist/math/float16array-wrapper.d.ts +5 -0
  36. package/dist/math/index.d.ts +4 -0
  37. package/dist/math/translate.d.ts +10 -0
  38. package/dist/math/utils.d.ts +19 -0
  39. package/dist/math/value-getter.d.ts +127 -0
  40. package/dist/paas-texture-cache.d.ts +24 -0
  41. package/dist/pass-render-level.d.ts +1 -0
  42. package/dist/plugin-system.d.ts +34 -0
  43. package/dist/plugins/cal/calculate-item.d.ts +84 -0
  44. package/dist/plugins/cal/calculate-loader.d.ts +3 -0
  45. package/dist/plugins/cal/calculate-vfx-item.d.ts +26 -0
  46. package/dist/plugins/camera/camera-controller-node.d.ts +17 -0
  47. package/dist/plugins/camera/camera-vfx-item-loader.d.ts +3 -0
  48. package/dist/plugins/camera/camera-vfx-item.d.ts +13 -0
  49. package/dist/plugins/index.d.ts +26 -0
  50. package/dist/plugins/interact/click-handler.d.ts +66 -0
  51. package/dist/plugins/interact/event-system.d.ts +37 -0
  52. package/dist/plugins/interact/interact-item.d.ts +2 -0
  53. package/dist/plugins/interact/interact-loader.d.ts +13 -0
  54. package/dist/plugins/interact/interact-mesh.d.ts +16 -0
  55. package/dist/plugins/interact/interact-vfx-item.d.ts +28 -0
  56. package/dist/plugins/particle/burst.d.ts +21 -0
  57. package/dist/plugins/particle/link.d.ts +21 -0
  58. package/dist/plugins/particle/particle-loader.d.ts +18 -0
  59. package/dist/plugins/particle/particle-mesh.d.ts +164 -0
  60. package/dist/plugins/particle/particle-system.d.ts +197 -0
  61. package/dist/plugins/particle/particle-vfx-item.d.ts +27 -0
  62. package/dist/plugins/particle/trail-mesh.d.ts +61 -0
  63. package/dist/plugins/plugin.d.ts +125 -0
  64. package/dist/plugins/sprite/filter-sprite-vfx-item.d.ts +13 -0
  65. package/dist/plugins/sprite/sprite-group.d.ts +95 -0
  66. package/dist/plugins/sprite/sprite-item.d.ts +106 -0
  67. package/dist/plugins/sprite/sprite-loader.d.ts +20 -0
  68. package/dist/plugins/sprite/sprite-mesh.d.ts +67 -0
  69. package/dist/plugins/sprite/sprite-vfx-item.d.ts +33 -0
  70. package/dist/plugins/text/text-item.d.ts +117 -0
  71. package/dist/plugins/text/text-layout.d.ts +28 -0
  72. package/dist/plugins/text/text-loader.d.ts +18 -0
  73. package/dist/plugins/text/text-mesh.d.ts +15 -0
  74. package/dist/plugins/text/text-style.d.ts +67 -0
  75. package/dist/plugins/text/text-vfx-item.d.ts +28 -0
  76. package/dist/polyfill.d.ts +4 -0
  77. package/dist/render/create-copy-shader.d.ts +6 -0
  78. package/dist/render/frame-buffer.d.ts +48 -0
  79. package/dist/render/geometry.d.ts +118 -0
  80. package/dist/render/global-volume.d.ts +15 -0
  81. package/dist/render/gpu-capability.d.ts +49 -0
  82. package/dist/render/index.d.ts +12 -0
  83. package/dist/render/mesh.d.ts +82 -0
  84. package/dist/render/post-process-pass.d.ts +37 -0
  85. package/dist/render/render-buffer.d.ts +20 -0
  86. package/dist/render/render-frame.d.ts +269 -0
  87. package/dist/render/render-pass.d.ts +309 -0
  88. package/dist/render/renderer.d.ts +62 -0
  89. package/dist/render/shader.d.ts +97 -0
  90. package/dist/render/types.d.ts +5 -0
  91. package/dist/scene.d.ts +30 -0
  92. package/dist/semantic-map.d.ts +14 -0
  93. package/dist/shader/index.d.ts +30 -0
  94. package/dist/shape/2d-shape.d.ts +32 -0
  95. package/dist/shape/cone.d.ts +11 -0
  96. package/dist/shape/donut.d.ts +9 -0
  97. package/dist/shape/earcut.d.ts +1 -0
  98. package/dist/shape/geometry.d.ts +30 -0
  99. package/dist/shape/index.d.ts +3 -0
  100. package/dist/shape/shape.d.ts +21 -0
  101. package/dist/shape/sphere.d.ts +15 -0
  102. package/dist/shape/texture-shape.d.ts +11 -0
  103. package/dist/template-image/index.d.ts +67 -0
  104. package/dist/template-image/qcanvas-viewer.d.ts +21 -0
  105. package/dist/template-image/qtext.d.ts +96 -0
  106. package/dist/template-image/template-v1.d.ts +27 -0
  107. package/dist/template-image/text-metrics.d.ts +18 -0
  108. package/dist/texture/index.d.ts +5 -0
  109. package/dist/texture/ktx-texture.d.ts +21 -0
  110. package/dist/texture/texture-factory.d.ts +13 -0
  111. package/dist/texture/texture.d.ts +78 -0
  112. package/dist/texture/types.d.ts +165 -0
  113. package/dist/texture/utils.d.ts +5 -0
  114. package/dist/ticker.d.ts +48 -0
  115. package/dist/transform.d.ts +221 -0
  116. package/dist/utils/array.d.ts +19 -0
  117. package/dist/utils/asserts.d.ts +2 -0
  118. package/dist/utils/color.d.ts +10 -0
  119. package/dist/utils/device.d.ts +4 -0
  120. package/dist/utils/image-data.d.ts +10 -0
  121. package/dist/utils/index.d.ts +67 -0
  122. package/dist/utils/sortable.d.ts +23 -0
  123. package/dist/utils/timeline-component.d.ts +39 -0
  124. package/dist/vfx-item.d.ts +361 -0
  125. package/package.json +2 -2
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Earcut.js from: https://github.com/mapbox/earcut/tree/v2.2.2
3
+ */
4
+ export function earcut(data: any, holeIndices: any, dim: any): any[];
5
+ export namespace earcut {
6
+ function deviation(data: any, holeIndices: any, dim: any, triangles: any): number;
7
+ function flatten(data: any): {
8
+ vertices: never[];
9
+ holes: never[];
10
+ dimensions: any;
11
+ };
12
+ }
13
+ export function linkedList(data: any, start: any, end: any, dim: any, clockwise: any): any;
14
+ export function filterPoints(start: any, end: any): any;
15
+ export function isEar(ear: any): boolean;
16
+ export function isEarHashed(ear: any, minX: any, minY: any, invSize: any): boolean;
17
+ export function eliminateHoles(data: any, holeIndices: any, outerNode: any, dim: any): any;
18
+ export function indexCurve(start: any, minX: any, minY: any, invSize: any): void;
19
+ export function isValidDiagonal(a: any, b: any): number | boolean;
20
+ export function equals(p1: any, p2: any): boolean;
21
+ export function intersects(p1: any, q1: any, p2: any, q2: any): boolean;
22
+ export function locallyInside(a: any, b: any): boolean;
23
+ export function splitPolygon(a: any, b: any): Node;
24
+ export function removeNode(p: any): void;
25
+ export function Node(i: any, x: any, y: any): void;
26
+ export class Node {
27
+ constructor(i: any, x: any, y: any);
28
+ i: any;
29
+ x: any;
30
+ y: any;
31
+ prev: any;
32
+ next: any;
33
+ z: any;
34
+ prevZ: any;
35
+ nextZ: any;
36
+ steiner: boolean;
37
+ }
@@ -0,0 +1,4 @@
1
+ export * from './types';
2
+ export * from './utils';
3
+ export * from './material-data-block';
4
+ export * from './material';
@@ -0,0 +1,27 @@
1
+ import type { MaterialDataBlockDestroyOptions, UniformValue } from './types';
2
+ import type { Disposable } from '../utils';
3
+ export interface MaterialDataBlockProps {
4
+ uniformValues?: Record<string, UniformValue>;
5
+ name?: string;
6
+ keepUboData?: boolean;
7
+ }
8
+ /**
9
+ * 引擎接入暂时不需要实现
10
+ */
11
+ export declare abstract class MaterialDataBlock implements Disposable {
12
+ readonly name: string;
13
+ protected destroyed: boolean;
14
+ protected constructor(props: MaterialDataBlockProps);
15
+ setUniformValues(uniformValue: Record<string, UniformValue>): void;
16
+ invalidAllFlags(): void;
17
+ updateUniformSubData(name: string, start: number, count: number): void;
18
+ abstract hasUniformValue(name: string): boolean;
19
+ abstract getUniformValue(name: string): UniformValue | undefined;
20
+ abstract getUniformValues(): Record<string, UniformValue>;
21
+ abstract setUniformValue(name: string, value: UniformValue): void;
22
+ abstract removeUniformValue(name: string): void;
23
+ abstract dispose(options?: MaterialDataBlockDestroyOptions): void;
24
+ static create: (props: MaterialDataBlockProps) => MaterialDataBlock;
25
+ }
26
+ export declare function isUniformStruct(value: UniformValue): boolean;
27
+ export declare function isUniformStructArray(value: UniformValue): boolean | 0;
@@ -0,0 +1,347 @@
1
+ import type { Matrix3, Matrix4, Quaternion, Vector2, Vector3, Vector4 } from '@galacean/effects-math/es/core/index';
2
+ import type { GlobalUniforms, Renderer, ShaderWithSource } from '../render';
3
+ import type { Texture } from '../texture';
4
+ import type { DestroyOptions, Disposable } from '../utils';
5
+ import type { UniformSemantic, UniformValue } from './types';
6
+ import type { Engine } from '../engine';
7
+ /**
8
+ * 材质销毁设置
9
+ */
10
+ export interface MaterialDestroyOptions {
11
+ /**
12
+ * 纹理的销毁设置
13
+ */
14
+ textures?: DestroyOptions;
15
+ }
16
+ /**
17
+ * 材质渲染类型
18
+ */
19
+ export declare enum MaterialRenderType {
20
+ normal = 0,
21
+ transformFeedback = 1
22
+ }
23
+ export type UndefinedAble<U> = U | undefined;
24
+ /**
25
+ * 材质属性
26
+ */
27
+ export interface MaterialProps {
28
+ /**
29
+ * shader 文本和属性
30
+ */
31
+ shader: ShaderWithSource;
32
+ /**
33
+ * 材质的名称,未传入会自动设置为 `Material[seed]`
34
+ */
35
+ name?: string;
36
+ /**
37
+ * 传递的变换矩阵
38
+ */
39
+ uniformSemantics?: Record<string, UniformSemantic>;
40
+ /**
41
+ * 渲染类型
42
+ */
43
+ renderType?: MaterialRenderType;
44
+ /**
45
+ * uniform 数据
46
+ */
47
+ uniformValues?: Record<string, UniformValue>;
48
+ transformFeedbackOutput?: {
49
+ mode: WebGL2RenderingContext['INTERLEAVED_ATTRIBS'] | WebGL2RenderingContext['SEPARATE_ATTRIBS'];
50
+ varyings: string[];
51
+ };
52
+ }
53
+ /**
54
+ * Material 抽象类
55
+ */
56
+ export declare abstract class Material implements Disposable {
57
+ readonly props: MaterialProps;
58
+ shaderSource: ShaderWithSource;
59
+ readonly uniformSemantics: Record<string, UniformSemantic>;
60
+ readonly renderType: MaterialRenderType;
61
+ readonly name: string;
62
+ protected destroyed: boolean;
63
+ protected initialized: boolean;
64
+ /**
65
+ *
66
+ * @param props - 材质属性
67
+ */
68
+ constructor(props: MaterialProps);
69
+ /******** effects-core 中会调用 引擎必须实现 ***********************/
70
+ /**
71
+ * 设置 Material 的颜色融合开关
72
+ * @param blending - 是否开启混合效果
73
+ */
74
+ set blending(blending: UndefinedAble<boolean>);
75
+ /**
76
+ * 分别指定 Material 的颜色混合函数乘数
77
+ * @param func - 混合函数参数
78
+ */
79
+ set blendFunction(func: UndefinedAble<[blendSrc: number, blendDst: number, blendSrcAlpha: number, blendDstAlpha: number]>);
80
+ /**
81
+ * 分别指定 Material 的颜色混合方式
82
+ * @param equation - 混合方程参数
83
+ */
84
+ set blendEquation(equation: UndefinedAble<[rgb: number, alpha: number]>);
85
+ /**
86
+ * 设置 Material 的深度测试开关
87
+ * @param value - 是否开启深度测试
88
+ */
89
+ set depthTest(value: UndefinedAble<boolean>);
90
+ /**
91
+ * 设置 Material 的写入深度缓冲开关
92
+ * @param value - 是否开启深度写入
93
+ */
94
+ set depthMask(value: UndefinedAble<boolean>);
95
+ /**
96
+ * 设置 Material 的模板测试开关
97
+ * @param value - 是否开启模板测试
98
+ */
99
+ set stencilTest(value: UndefinedAble<boolean>);
100
+ /**
101
+ * 分别指定 Material 的模板测试参考值
102
+ * @param value - 模板测试参考值参数
103
+ */
104
+ set stencilRef(value: UndefinedAble<[front: number, back: number]>);
105
+ /**
106
+ * 分别指定 Material 的模板测试函数
107
+ * @param value - 模板测试函数参数
108
+ */
109
+ set stencilFunc(value: UndefinedAble<[front: number, back: number]>);
110
+ /**
111
+ * 分别指定 Material 的模板测试和深度测试都通过时使用的函数
112
+ * @param value - 模板测试深度测试通过时的操作参数
113
+ */
114
+ set stencilOpZPass(value: UndefinedAble<[front: number, back: number]>);
115
+ /**
116
+ * 设置 Material 的正反面剔除开关
117
+ * @param value - 是否开启剔除
118
+ */
119
+ set culling(value: UndefinedAble<boolean>);
120
+ /**
121
+ * 设置 Material 的正反面计算方向
122
+ * @param value
123
+ */
124
+ set frontFace(value: UndefinedAble<number>);
125
+ /**
126
+ * 设置 Material 要剔除的面
127
+ * @param value - 剔除面参数
128
+ */
129
+ set cullFace(value: UndefinedAble<number>);
130
+ /***************************************************/
131
+ /******** effects-core 中暂无调用 引擎可以先不实现 ***********************/
132
+ /**
133
+ * 设置 Material 的源和目标混合因子
134
+ * @param color
135
+ */
136
+ set blendColor(color: UndefinedAble<[r: number, g: number, b: number, a: number]>);
137
+ /**
138
+ * 设置 Material 的深度映射范围
139
+ * @param value
140
+ */
141
+ set depthRange(value: UndefinedAble<[zNear: number, zFar: number]>);
142
+ /**
143
+ * 设置 Material 的深度比较函数
144
+ * @param value - 深度测试函数参数
145
+ */
146
+ set depthFunc(value: UndefinedAble<number>);
147
+ /**
148
+ * 设置 Material 的多边形偏移(实现类似深度偏移的效果)
149
+ * @param value - 多边形偏移参数
150
+ */
151
+ set polygonOffsetFill(value: UndefinedAble<boolean>);
152
+ /**
153
+ * 指定 Material 计算深度值的比例因子 factor 和单位 units
154
+ * @param value
155
+ */
156
+ set polygonOffset(value: UndefinedAble<[factor: number, units: number]>);
157
+ /**
158
+ * 设置 Material 的通过 alpha 值决定临时覆盖值计算的开关
159
+ * @param value - 是否开启 alpha 抖动
160
+ */
161
+ set sampleAlphaToCoverage(value: UndefinedAble<boolean>);
162
+ /**
163
+ * 设置 Material 颜色缓冲区的写入开关
164
+ * @param value
165
+ */
166
+ set colorMask(value: UndefinedAble<[r: boolean, g: boolean, b: boolean, a: boolean]>);
167
+ /**
168
+ * 分别指定 Material 的模板测试掩码
169
+ * @param value - 模板测试写入掩码参数
170
+ */
171
+ set stencilMask(value: UndefinedAble<[front: number, back: number]>);
172
+ /**
173
+ * 分别指定 Material 模板测试失败时要使用的函数
174
+ * @param value - 模板测试失败时的操作参数
175
+ */
176
+ set stencilOpFail(value: UndefinedAble<[front: number, back: number]>);
177
+ /**
178
+ * 分别指定 Material 模板测试通过但深度测试失败时要使用的函数
179
+ * @param value - 模板测试深度测试失败时的操作参数
180
+ */
181
+ set stencilOpZFail(value: UndefinedAble<[front: number, back: number]>);
182
+ /***************************************************/
183
+ /**
184
+ * 获取 Material 的 float 类型的 uniform 数据
185
+ * @param name
186
+ */
187
+ abstract getFloat(name: string): number | null;
188
+ /**
189
+ * 设置 float 类型的 uniform 数据
190
+ * @param name - uniform 名称
191
+ * @param value - 要设置的 uniform 数据
192
+ */
193
+ abstract setFloat(name: string, value: number): void;
194
+ /**
195
+ * 获取 Material 的 float 类型的 uniform 数据
196
+ * @param name
197
+ */
198
+ abstract getInt(name: string): number | null;
199
+ /**
200
+ * 设置 int 类型的 uniform 的数据
201
+ * @param name - uniform 名称
202
+ * @param value - 要设置的 uniform 数据
203
+ */
204
+ abstract setInt(name: string, value: number): void;
205
+ /**
206
+ * 获取 Material 的 float 数组类型的 uniform 数据
207
+ * @param name
208
+ */
209
+ abstract getFloats(name: string): number[] | null;
210
+ /**
211
+ * 设置 float 数组类型的 uniform 的数据
212
+ * @param name - uniform 名称
213
+ * @param value - 要设置的 uniform 数据
214
+ */
215
+ abstract setFloats(name: string, value: number[]): void;
216
+ /**
217
+ * 获取 Material 的 vec2 类型的 uniform 数据
218
+ * @param name
219
+ */
220
+ abstract getVector2(name: string): Vector2 | null;
221
+ /**
222
+ * 设置 vec2 类型的 uniform 的数据
223
+ * @param name - uniform 名称
224
+ * @param value - 要设置的 uniform 数据
225
+ */
226
+ abstract setVector2(name: string, value: Vector2): void;
227
+ /**
228
+ * 获取 Material 的 vec3 类型的 uniform 数据
229
+ * @param name
230
+ */
231
+ abstract getVector3(name: string): Vector3 | null;
232
+ /**
233
+ * 设置 vec3 类型的 uniform 的数据
234
+ * @param name - uniform 名称
235
+ * @param value - 要设置的 uniform 数据
236
+ */
237
+ abstract setVector3(name: string, value: Vector3): void;
238
+ /**
239
+ * 获取 Material 的 vec4 类型的 uniform 数据
240
+ * @param name
241
+ */
242
+ abstract getVector4(name: string): Vector4 | null;
243
+ /**
244
+ * 设置 vec4 类型的 uniform 的数据
245
+ * @param name - uniform 名称
246
+ * @param value - 要设置的 uniform 数据
247
+ */
248
+ abstract setVector4(name: string, value: Vector4): void;
249
+ /**
250
+ * 获取 Material 的 Quaternion 类型的 uniform 数据
251
+ * @param name
252
+ */
253
+ abstract getQuaternion(name: string): Quaternion | null;
254
+ /**
255
+ * 设置 Quaternion 类型的 uniform 的数据
256
+ * @param name - uniform 名称
257
+ * @param value - 要设置的 uniform 数据
258
+ */
259
+ abstract setQuaternion(name: string, value: Quaternion): void;
260
+ /**
261
+ * 获取 Material 的 vec4 数组类型的 uniform 数据
262
+ * @param name
263
+ */
264
+ abstract getVector4Array(name: string): number[];
265
+ /**
266
+ * 设置 vec4 数组类型的 uniform 的数据
267
+ * @param name - uniform 名称
268
+ * @param value - 要设置的 uniform 数据
269
+ */
270
+ abstract setVector4Array(name: string, value: Vector4[]): void;
271
+ /**
272
+ * 获取 Material 的 mat4 类型的 uniform 数据
273
+ * @param name
274
+ */
275
+ abstract getMatrix(name: string): Matrix4 | null;
276
+ /**
277
+ * 设置 mat4 类型的 uniform 的数据
278
+ * @param name - uniform 名称
279
+ * @param value - 要设置的 uniform 数据
280
+ */
281
+ abstract setMatrix(name: string, value: Matrix4): void;
282
+ /**
283
+ * 设置 mat3 类型的 uniform 的数据
284
+ * @param name - uniform 名称
285
+ * @param value - 要设置的 uniform 数据
286
+ */
287
+ abstract setMatrix3(name: string, value: Matrix3): void;
288
+ /**
289
+ * 获取 Material 的 mat4 数组类型的 uniform 数据
290
+ * @param name
291
+ */
292
+ abstract getMatrixArray(name: string): number[] | null;
293
+ /**
294
+ * 设置 mat 数组类型的 uniform 的数据
295
+ * @param name - uniform 名称
296
+ * @param array - 要设置的 uniform 数据
297
+ */
298
+ abstract setMatrixArray(name: string, array: Matrix4[]): void;
299
+ /**
300
+ * 设置 mat 数组类型的 uniform 的数据,传入 number 数组
301
+ * @param name - uniform 名称
302
+ * @param array - 要设置的 uniform 数据,number 类型数组
303
+ */
304
+ abstract setMatrixNumberArray(name: string, array: number[]): void;
305
+ /**
306
+ * 获取 Material 的 sampler2D 类型的 uniform 数据
307
+ * @param name
308
+ */
309
+ abstract getTexture(name: string): Texture | null;
310
+ /**
311
+ * 设置 sampler2D 类型的 uniform 的数据
312
+ * @param name - uniform 名称
313
+ * @param texture - 要设置的 uniform 数据
314
+ */
315
+ abstract setTexture(name: string, texture: Texture): void;
316
+ /**
317
+ * 获取 Material 的 float 类型的 uniform 数据
318
+ * @param name
319
+ */
320
+ abstract hasUniform(name: string): boolean;
321
+ /******** 预留接口,暂时不用实现 ***********************/
322
+ abstract enableKeyword(keyword: string): void;
323
+ abstract disableKeyword(keyword: string): void;
324
+ abstract isKeywordEnabled(keyword: string): boolean;
325
+ /***************************************************/
326
+ /**
327
+ * Material 的克隆方法(不接入滤镜,本方法可以不做实现)
328
+ * @param props 新的材质属性
329
+ */
330
+ abstract clone(props?: MaterialProps): Material;
331
+ abstract cloneUniforms(sourceMaterial: Material): void;
332
+ /**
333
+ * 销毁当前 Material
334
+ * @param destroy - 包含纹理的销毁选项
335
+ */
336
+ abstract dispose(destroy?: MaterialDestroyOptions): void;
337
+ /**
338
+ * 创建 Material
339
+ */
340
+ static create: (engine: Engine, props: MaterialProps) => Material;
341
+ /**
342
+ * 初始化 GPU 资源
343
+ * @override
344
+ */
345
+ initialize(): void;
346
+ use(render: Renderer, globalUniforms: GlobalUniforms): void;
347
+ }
@@ -0,0 +1,66 @@
1
+ import type * as spec from '@galacean/effects-specification';
2
+ import type { Matrix3, Matrix4, Vector2, Vector3, Vector4 } from '@galacean/effects-math/es/core/index';
3
+ import type { Texture } from '../texture';
4
+ import type { DestroyOptions } from '../utils';
5
+ export type UniformSemantic = 'VIEW' | 'MODEL' | 'MODELVIEW' | 'PROJECTION' | 'VIEWPROJECTION' | 'VIEWINVERSE' | 'EDITOR_TRANSFORM' | 'MODELVIEWPROJECTION';
6
+ export interface MaterialBlendingStates {
7
+ blending?: boolean;
8
+ blendFunction?: [blendSrc: GLenum, blendDst: GLenum, blendSrcAlpha: GLenum, blendDstAlpha: GLenum];
9
+ blendEquation?: [blendEquationRGB: GLenum, blendEquationAlpha: GLenum];
10
+ blendColor?: [r: number, g: number, b: number, a: number];
11
+ }
12
+ export interface MaterialStencilStates {
13
+ stencilTest?: boolean;
14
+ stencilMask?: [front: GLenum, back: GLenum];
15
+ stencilRef?: [front: GLenum, back: GLenum];
16
+ stencilFunc?: [front: GLenum, back: GLenum];
17
+ stencilOpFail?: [front: GLenum, back: GLenum];
18
+ stencilOpZFail?: [front: GLenum, back: GLenum];
19
+ stencilOZPass?: [front: GLenum, back: GLenum];
20
+ }
21
+ export interface MaterialSideStates {
22
+ culling?: boolean;
23
+ cullFace?: GLenum;
24
+ frontFace?: GLenum;
25
+ }
26
+ export interface MaterialStates extends MaterialBlendingStates, MaterialStencilStates, MaterialSideStates {
27
+ sampleAlphaToCoverage?: boolean;
28
+ colorMask?: [r: boolean, g: boolean, b: boolean, a: boolean];
29
+ depthTest?: boolean;
30
+ depthMask?: boolean;
31
+ depthFunc?: number;
32
+ depthRange?: [zNear: number, zFar: number];
33
+ polygonOffset?: [factor: number, units: number];
34
+ polygonOffsetFill?: boolean;
35
+ }
36
+ export interface FilterMaterialStates extends MaterialStates {
37
+ blendMode?: spec.BlendingMode;
38
+ side?: spec.SideMode;
39
+ maskMode?: spec.MaskMode;
40
+ }
41
+ export interface MaterialDataBlockDestroyOptions {
42
+ textures?: DestroyOptions;
43
+ }
44
+ /**
45
+ * @example
46
+ * const mtl0 = new Material({
47
+ * shader:{
48
+ * fragment:'...',
49
+ * vertex:'...',
50
+ * cacheId:'mtl_01'
51
+ * }});
52
+ *
53
+ * const mtl2 = new Material({
54
+ * shader:{
55
+ * cacheId:'mtl_01'
56
+ * }
57
+ * });
58
+ * mtl2 use the same program with mtl0
59
+ */
60
+ export type UniformValueDataType = spec.TypedArray | number | number[] | Texture | Texture[] | number[][] | Vector2 | Vector3 | Vector4 | Matrix3 | Matrix4;
61
+ export type UniformStruct = Record<string, UniformValueDataType>;
62
+ export type UniformValue = UniformValueDataType | UniformStruct | UniformStruct[];
63
+ export declare enum ShaderType {
64
+ vertex = 0,
65
+ fragment = 1
66
+ }
@@ -0,0 +1,17 @@
1
+ import * as spec from '@galacean/effects-specification';
2
+ import type { ShaderMarcos } from '../render';
3
+ import type { Material } from './material';
4
+ import { ShaderType } from './types';
5
+ export declare function valIfUndefined<T>(val: any, def: T): T;
6
+ export declare function getPreMultiAlpha(blending?: number): number;
7
+ /**
8
+ * 生成 shader,检测到 WebGL1 上下文会降级
9
+ * @param marcos - 宏定义数组
10
+ * @param shader - 原始 shader 文本
11
+ * @param shaderType - shader 类型
12
+ * @return 去除版本号的 shader 文本
13
+ */
14
+ export declare function createShaderWithMarcos(marcos: ShaderMarcos, shader: string, shaderType: ShaderType, level: number): string;
15
+ export declare function setBlendMode(material: Material, blendMode: number | undefined): void;
16
+ export declare function setSideMode(material: Material, side: spec.SideMode): void;
17
+ export declare function setMaskMode(material: Material, maskMode: number): void;
@@ -0,0 +1,5 @@
1
+ export declare class Float16ArrayWrapper {
2
+ data: Uint16Array;
3
+ constructor(num: number | ArrayLike<number>);
4
+ set(number: ArrayLike<number>, startIndex: number): void;
5
+ }
@@ -0,0 +1,4 @@
1
+ export * from './float16array-wrapper';
2
+ export * from './translate';
3
+ export * from './utils';
4
+ export * from './value-getter';
@@ -0,0 +1,10 @@
1
+ import type { ValueGetter } from './value-getter';
2
+ import { Vector3 } from '@galacean/effects-math/es/core/index';
3
+ export declare function translatePoint(x: number, y: number): number[];
4
+ export interface TranslateTarget {
5
+ speedOverLifetime?: ValueGetter<number>;
6
+ gravityModifier?: ValueGetter<number>;
7
+ linearVelOverLifetime?: any;
8
+ orbitalVelOverLifetime?: any;
9
+ }
10
+ export declare function calculateTranslation(out: Vector3, target: TranslateTarget, acc: Vector3, time: number, duration: number, posData: Vector3, velData: Vector3): Vector3;
@@ -0,0 +1,19 @@
1
+ import * as spec from '@galacean/effects-specification';
2
+ import type { vec2, vec3, vec4 } from '@galacean/effects-specification';
3
+ import type { TriangleLike } from '@galacean/effects-math/es/core/index';
4
+ import { Vector3, Ray } from '@galacean/effects-math/es/core/index';
5
+ import type { Camera } from '../camera';
6
+ export type vec = number[];
7
+ export declare function ensureVec3(num?: any): vec3;
8
+ export declare function vecFill<T extends vec | vec3 | vec4 | vec2>(out: T | number[], number: number): T;
9
+ export declare function vecAssign<T extends vec | vec3 | vec4 | vec2>(out: T | number[] | Float32Array, a: T, count: number, start?: number): T;
10
+ export declare function vecNormalize<T extends vec | vec2 | vec3 | vec4>(out: T | number[], a?: T | number[]): T;
11
+ export declare function vecMulCombine<T extends vec | vec3 | vec4 | vec2>(out: T | number[] | Float32Array, a?: T, b?: T): T;
12
+ export declare const particleOriginTranslateMap: Record<number, vec2>;
13
+ /**
14
+ * 提取并转换 JSON 数据中的 anchor 值
15
+ */
16
+ export declare function convertAnchor(anchor?: vec2, particleOrigin?: spec.ParticleOrigin): vec2;
17
+ export declare function nearestPowerOfTwo(value: number): number;
18
+ export declare function setRayFromCamera(x: number, y: number, camera: Camera): Ray;
19
+ export declare function trianglesFromRect(position: Vector3, halfWidth: number, halfHeight: number): TriangleLike[];
@@ -0,0 +1,127 @@
1
+ import * as spec from '@galacean/effects-specification';
2
+ import type { ColorStop } from '../utils';
3
+ interface KeyFrameMeta {
4
+ curves: ValueGetter<any>[];
5
+ index: number;
6
+ max: number;
7
+ lineSegCount: number;
8
+ curveCount: number;
9
+ }
10
+ export declare class ValueGetter<T> {
11
+ constructor(arg: any);
12
+ onCreate(props: any): void;
13
+ getIntegrateValue(t0: number, t1: number, timeScale?: number): T;
14
+ getIntegrateByTime(t0: number, time: number): T;
15
+ getValue(time?: number): T;
16
+ toUniform(meta: KeyFrameMeta): Float32Array;
17
+ map(func: (n: T) => T): void;
18
+ scaleXCoord(scale: number): ValueGetter<T>;
19
+ }
20
+ export declare class StaticValue extends ValueGetter<number> {
21
+ private value;
22
+ onCreate(arg: number): void;
23
+ getIntegrateValue(t0: number, t1: number, ts: number): number;
24
+ getIntegrateByTime(t0: number, t1: number): number;
25
+ getValue(time?: number): number;
26
+ toUniform(): Float32Array;
27
+ map(func: (n: number) => number): this;
28
+ }
29
+ export declare class RandomSetValue<T> extends ValueGetter<T> {
30
+ private items;
31
+ onCreate(arg: T[]): void;
32
+ getValue(t: number): T;
33
+ map(func: (v: T) => T): this;
34
+ }
35
+ export declare class RandomValue extends ValueGetter<number> {
36
+ private min;
37
+ private max;
38
+ onCreate(props: [min: number, max: number]): void;
39
+ getValue(time?: number): number;
40
+ toUniform(): Float32Array;
41
+ map(func: any): this;
42
+ }
43
+ export declare class RandomVectorValue extends ValueGetter<number[]> {
44
+ private min;
45
+ private max;
46
+ onCreate(props: [min: number[], max: number[]]): void;
47
+ getValue(time: number): number[];
48
+ map(func: any): this;
49
+ }
50
+ export declare class LinearValue extends ValueGetter<number> {
51
+ private min;
52
+ private max;
53
+ private xCoord;
54
+ onCreate(props: [min: number, max: number]): void;
55
+ getValue(t: number): number;
56
+ toUniform(): Float32Array;
57
+ getIntegrateValue(t0: number, t1: number, timeScale?: number): number;
58
+ getIntegrateByTime(t0: number, t1: number): number;
59
+ map(func: (num: number) => number): this;
60
+ scaleXCoord(scale: number): LinearValue;
61
+ }
62
+ export declare class GradientValue extends ValueGetter<number[]> {
63
+ stops: ColorStop[];
64
+ onCreate(props: number[][] | Record<string, string>): void;
65
+ getStops(): ColorStop[];
66
+ getValue(time: number): number[];
67
+ }
68
+ export type KeyFrame = {
69
+ inTangent: number;
70
+ outTangent: number;
71
+ time: number;
72
+ value: number;
73
+ };
74
+ export declare class CurveValue extends ValueGetter<number> {
75
+ keys: KeyFrame[] | number[][];
76
+ min: number;
77
+ dist: number;
78
+ isCurveValue: boolean;
79
+ static getAllData(meta: KeyFrameMeta, halfFloat?: boolean): Uint16Array | Float32Array;
80
+ onCreate(props: number[] & number[][]): void;
81
+ getValue(time: number): number;
82
+ getIntegrateByTime(t0: number, t1: number): number;
83
+ getIntegrateValue(t0: number, t1: number, ts: number): number;
84
+ integrate(time: number, byTime: boolean): number;
85
+ toData(): Float32Array;
86
+ toUniform(meta: any): Float32Array;
87
+ map(func: (num: number) => number): this;
88
+ scaleXCoord(scale: number): this;
89
+ }
90
+ export declare class LineSegments extends ValueGetter<number> {
91
+ isLineSeg: boolean;
92
+ keys: number[][];
93
+ onCreate(props: ({
94
+ time: number;
95
+ value: number;
96
+ } & number[])[]): void;
97
+ getValue(time: number): number;
98
+ getIntegrateValue(t0: number, t1: number, ts?: number): number;
99
+ getIntegrateByTime(t0: number, t1: number): number;
100
+ private integrate;
101
+ toData(): Float32Array;
102
+ toUniform(meta: any): Float32Array;
103
+ map(func: (k: number) => number): this;
104
+ scaleXCoord(scale: number): this;
105
+ }
106
+ export declare class PathSegments extends ValueGetter<number[]> {
107
+ keys: number[][];
108
+ values: number[][];
109
+ onCreate(props: number[][][]): void;
110
+ getValue(time: number): number[];
111
+ calculateVec(i: number, dt: number): number[];
112
+ }
113
+ export declare class BezierSegments extends PathSegments {
114
+ cps: number[][];
115
+ onCreate(props: number[][][]): void;
116
+ calculateVec(i: number, t: number): number[];
117
+ }
118
+ export declare function createValueGetter(args: any): ValueGetter<any>;
119
+ export declare function getKeyFrameMetaByRawValue(meta: KeyFrameMeta, value?: [type: spec.ValueType, value: any]): void;
120
+ export declare function createKeyFrameMeta(): {
121
+ curves: never[];
122
+ index: number;
123
+ max: number;
124
+ lineSegCount: number;
125
+ curveCount: number;
126
+ };
127
+ export {};