@galacean/effects-core 1.1.2 → 1.1.3
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.
- package/dist/asset-manager.d.ts +135 -0
- package/dist/camera.d.ts +183 -0
- package/dist/comp-vfx-item.d.ts +71 -0
- package/dist/composition-source-manager.d.ts +45 -0
- package/dist/composition.d.ts +406 -0
- package/dist/config.d.ts +7 -0
- package/dist/constants.d.ts +11 -0
- package/dist/downloader.d.ts +83 -0
- package/dist/engine.d.ts +38 -0
- package/dist/filter.d.ts +63 -0
- package/dist/filters/alpha-frame.d.ts +5 -0
- package/dist/filters/alpha-mask.d.ts +5 -0
- package/dist/filters/bloom.d.ts +8 -0
- package/dist/filters/camera-move.d.ts +5 -0
- package/dist/filters/delay.d.ts +14 -0
- package/dist/filters/distortion.d.ts +5 -0
- package/dist/filters/gaussian.d.ts +27 -0
- package/dist/filters/index.d.ts +2 -0
- package/dist/filters/lum.d.ts +5 -0
- package/dist/filters/utils.d.ts +7 -0
- package/dist/gl/create-gl-context.d.ts +9 -0
- package/dist/gl/gpu-time.d.ts +5 -0
- package/dist/gl/index.d.ts +6 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.js +26 -22
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +26 -22
- package/dist/index.mjs.map +1 -1
- package/dist/libs/earcut.d.ts +37 -0
- package/dist/material/index.d.ts +4 -0
- package/dist/material/material-data-block.d.ts +27 -0
- package/dist/material/material.d.ts +347 -0
- package/dist/material/types.d.ts +66 -0
- package/dist/material/utils.d.ts +17 -0
- package/dist/math/float16array-wrapper.d.ts +5 -0
- package/dist/math/index.d.ts +4 -0
- package/dist/math/translate.d.ts +10 -0
- package/dist/math/utils.d.ts +19 -0
- package/dist/math/value-getter.d.ts +127 -0
- package/dist/paas-texture-cache.d.ts +24 -0
- package/dist/pass-render-level.d.ts +1 -0
- package/dist/plugin-system.d.ts +34 -0
- package/dist/plugins/cal/calculate-item.d.ts +84 -0
- package/dist/plugins/cal/calculate-loader.d.ts +3 -0
- package/dist/plugins/cal/calculate-vfx-item.d.ts +26 -0
- package/dist/plugins/camera/camera-controller-node.d.ts +17 -0
- package/dist/plugins/camera/camera-vfx-item-loader.d.ts +3 -0
- package/dist/plugins/camera/camera-vfx-item.d.ts +13 -0
- package/dist/plugins/index.d.ts +26 -0
- package/dist/plugins/interact/click-handler.d.ts +66 -0
- package/dist/plugins/interact/event-system.d.ts +37 -0
- package/dist/plugins/interact/interact-item.d.ts +2 -0
- package/dist/plugins/interact/interact-loader.d.ts +13 -0
- package/dist/plugins/interact/interact-mesh.d.ts +16 -0
- package/dist/plugins/interact/interact-vfx-item.d.ts +28 -0
- package/dist/plugins/particle/burst.d.ts +21 -0
- package/dist/plugins/particle/link.d.ts +21 -0
- package/dist/plugins/particle/particle-loader.d.ts +18 -0
- package/dist/plugins/particle/particle-mesh.d.ts +164 -0
- package/dist/plugins/particle/particle-system.d.ts +198 -0
- package/dist/plugins/particle/particle-vfx-item.d.ts +27 -0
- package/dist/plugins/particle/trail-mesh.d.ts +61 -0
- package/dist/plugins/plugin.d.ts +125 -0
- package/dist/plugins/sprite/filter-sprite-vfx-item.d.ts +13 -0
- package/dist/plugins/sprite/sprite-group.d.ts +95 -0
- package/dist/plugins/sprite/sprite-item.d.ts +106 -0
- package/dist/plugins/sprite/sprite-loader.d.ts +20 -0
- package/dist/plugins/sprite/sprite-mesh.d.ts +67 -0
- package/dist/plugins/sprite/sprite-vfx-item.d.ts +33 -0
- package/dist/plugins/text/text-item.d.ts +117 -0
- package/dist/plugins/text/text-layout.d.ts +28 -0
- package/dist/plugins/text/text-loader.d.ts +18 -0
- package/dist/plugins/text/text-mesh.d.ts +15 -0
- package/dist/plugins/text/text-style.d.ts +67 -0
- package/dist/plugins/text/text-vfx-item.d.ts +28 -0
- package/dist/polyfill.d.ts +4 -0
- package/dist/render/create-copy-shader.d.ts +6 -0
- package/dist/render/frame-buffer.d.ts +48 -0
- package/dist/render/geometry.d.ts +118 -0
- package/dist/render/global-volume.d.ts +15 -0
- package/dist/render/gpu-capability.d.ts +49 -0
- package/dist/render/index.d.ts +12 -0
- package/dist/render/mesh.d.ts +82 -0
- package/dist/render/post-process-pass.d.ts +37 -0
- package/dist/render/render-buffer.d.ts +20 -0
- package/dist/render/render-frame.d.ts +269 -0
- package/dist/render/render-pass.d.ts +309 -0
- package/dist/render/renderer.d.ts +62 -0
- package/dist/render/shader.d.ts +97 -0
- package/dist/render/types.d.ts +5 -0
- package/dist/scene.d.ts +29 -0
- package/dist/semantic-map.d.ts +14 -0
- package/dist/shader/index.d.ts +30 -0
- package/dist/shape/2d-shape.d.ts +32 -0
- package/dist/shape/cone.d.ts +11 -0
- package/dist/shape/donut.d.ts +9 -0
- package/dist/shape/earcut.d.ts +1 -0
- package/dist/shape/geometry.d.ts +30 -0
- package/dist/shape/index.d.ts +3 -0
- package/dist/shape/shape.d.ts +21 -0
- package/dist/shape/sphere.d.ts +15 -0
- package/dist/shape/texture-shape.d.ts +11 -0
- package/dist/template-image/index.d.ts +67 -0
- package/dist/template-image/qcanvas-viewer.d.ts +21 -0
- package/dist/template-image/qtext.d.ts +96 -0
- package/dist/template-image/template-v1.d.ts +27 -0
- package/dist/template-image/text-metrics.d.ts +18 -0
- package/dist/texture/index.d.ts +5 -0
- package/dist/texture/ktx-texture.d.ts +21 -0
- package/dist/texture/texture-factory.d.ts +13 -0
- package/dist/texture/texture.d.ts +78 -0
- package/dist/texture/types.d.ts +165 -0
- package/dist/texture/utils.d.ts +5 -0
- package/dist/ticker.d.ts +48 -0
- package/dist/transform.d.ts +221 -0
- package/dist/utils/array.d.ts +19 -0
- package/dist/utils/asserts.d.ts +2 -0
- package/dist/utils/color.d.ts +10 -0
- package/dist/utils/device.d.ts +4 -0
- package/dist/utils/image-data.d.ts +10 -0
- package/dist/utils/index.d.ts +67 -0
- package/dist/utils/sortable.d.ts +23 -0
- package/dist/utils/timeline-component.d.ts +39 -0
- package/dist/vfx-item.d.ts +360 -0
- 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,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,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 {};
|