@galacean/effects-webgl 0.0.1-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,22 @@
1
+ import type { Disposable } from '@galacean/effects-core';
2
+ import { RenderPass } from '@galacean/effects-core';
3
+ import type { GLRenderer } from './gl-renderer';
4
+ import type { GLTexture } from './gl-texture';
5
+ /**
6
+ * 常用的 GPU 方法,不是规范必须实现的
7
+ */
8
+ export interface RendererExtensions {
9
+ copyTexture?: (source: GLTexture, tex: GLTexture) => void;
10
+ resetColorAttachments?: (rp: RenderPass, colorAttachments: GLTexture[]) => void;
11
+ }
12
+ export declare class ExtWrap implements RendererExtensions, Disposable {
13
+ readonly renderer: GLRenderer;
14
+ private copyRenderPass?;
15
+ constructor(renderer: GLRenderer);
16
+ resetColorAttachments(rp: RenderPass, colorTextures: GLTexture[]): void;
17
+ copyTexture(source: GLTexture, tex: GLTexture): void;
18
+ copy2(source: GLTexture, target: GLTexture): void;
19
+ copy1(source: GLTexture, target: GLTexture): void;
20
+ private createCopyRenderPass;
21
+ dispose(): void;
22
+ }
@@ -0,0 +1,16 @@
1
+ import type { LostHandler, RestoreHandler } from '@galacean/effects-core';
2
+ export declare class GLContextManager {
3
+ canvas: HTMLCanvasElement | OffscreenCanvas | null;
4
+ readonly glType: 'webgl' | 'webgl2';
5
+ gl: WebGLRenderingContext | WebGL2RenderingContext | null;
6
+ private readonly contextLostListener;
7
+ private readonly contextRestoredListener;
8
+ private readonly restoreHandlers;
9
+ private readonly lostHandlers;
10
+ constructor(canvas: HTMLCanvasElement | OffscreenCanvas | null, glType?: 'webgl' | 'webgl2', options?: WebGLContextAttributes);
11
+ dispose(): void;
12
+ addLostHandler(lostHandler: LostHandler): void;
13
+ removeLostHandler(lostHandler: LostHandler): void;
14
+ addRestoreHandler(restoreHandler: RestoreHandler): void;
15
+ removeRestoreHandler(restorable: RestoreHandler): void;
16
+ }
@@ -0,0 +1,11 @@
1
+ import { Engine } from '@galacean/effects-core';
2
+ import type { GLRendererInternal } from './gl-renderer-internal';
3
+ import type { GLRenderer } from './gl-renderer';
4
+ import type { GLPipelineContext } from './gl-pipeline-context';
5
+ export declare class GLEngine extends Engine {
6
+ constructor(gl: WebGLRenderingContext | WebGL2RenderingContext);
7
+ dispose(): void;
8
+ getGLRenderer(): GLRenderer;
9
+ getGLRendererInternal(): GLRendererInternal;
10
+ getGLPipelineContext(): GLPipelineContext;
11
+ }
@@ -0,0 +1,33 @@
1
+ import type { Disposable, FrameBufferProps, RenderBuffer, Renderer, Texture } from '@galacean/effects-core';
2
+ import { FrameBuffer, RenderPassDestroyAttachmentType } from '@galacean/effects-core';
3
+ import { GLRenderBuffer } from './gl-render-buffer';
4
+ import type { GLRenderer } from './gl-renderer';
5
+ import { GLTexture } from './gl-texture';
6
+ import type { GLEngine } from './gl-engine';
7
+ export declare class GLFrameBuffer extends FrameBuffer implements Disposable {
8
+ storeInvalidAttachments?: GLenum[];
9
+ depthStencilRenderBuffer?: GLRenderBuffer;
10
+ depthTexture?: GLTexture;
11
+ stencilTexture?: GLTexture;
12
+ colorTextures: GLTexture[];
13
+ fbo?: WebGLFramebuffer;
14
+ engine: GLEngine;
15
+ readonly renderer: GLRenderer;
16
+ private readonly attachmentTextures;
17
+ constructor(props: FrameBufferProps, renderer: Renderer);
18
+ get stencilStorage(): RenderBuffer | undefined;
19
+ get depthStorage(): RenderBuffer | undefined;
20
+ getDepthTexture(): Texture | undefined;
21
+ getStencilTexture(): Texture | undefined;
22
+ getColorTextures(): Texture[];
23
+ private updateAttachmentTextures;
24
+ private updateProps;
25
+ private getStoreAttachments;
26
+ unbind(): void;
27
+ bind(): void;
28
+ resetColorTextures(colorTextures?: Texture[]): void;
29
+ resize(x: number, y: number, width: number, height: number): void;
30
+ dispose(opt?: {
31
+ depthStencilAttachment?: RenderPassDestroyAttachmentType;
32
+ }): void;
33
+ }
@@ -0,0 +1,78 @@
1
+ import type { Disposable, GeometryProps, spec, Engine } from '@galacean/effects-core';
2
+ import { Geometry } from '@galacean/effects-core';
3
+ import type { GLGPUBufferProps } from './gl-gpu-buffer';
4
+ import { GLGPUBuffer } from './gl-gpu-buffer';
5
+ import type { GLPipelineContext } from './gl-pipeline-context';
6
+ import type { GLVertexArrayObject } from './gl-vertex-array-object';
7
+ /**
8
+ * 应用层 Geometry 对象,本身不直接保存 GPU 资源而是通过 geometryInternal 成员保存 GPU 资源
9
+ */
10
+ export declare class GLGeometry extends Geometry implements Disposable {
11
+ /**
12
+ * 索引缓冲区
13
+ */
14
+ indicesBuffer?: GLGPUBuffer;
15
+ drawCount: number;
16
+ drawStart: number;
17
+ mode: number;
18
+ /**
19
+ * 记录顶点属性信息用于 GLProgram 绑定顶点属性
20
+ */
21
+ attributes: Record<string, spec.AttributeWithType>;
22
+ /**
23
+ * JS 端记录数据,用于 flush
24
+ */
25
+ bufferProps: Record<string, GLGPUBufferProps>;
26
+ /**
27
+ * 记录了顶点属性与 GPUBuffer 对应关系
28
+ */
29
+ buffers: Record<string, GLGPUBuffer>;
30
+ indices?: spec.TypedArray;
31
+ readonly vaos: Record<string, GLVertexArrayObject | undefined>;
32
+ protected initialized: boolean;
33
+ private options?;
34
+ private attributesReleasable;
35
+ private indicesReleasable;
36
+ private dirtyFlags;
37
+ private attributesName;
38
+ private destroyed;
39
+ engine?: Engine;
40
+ constructor(engine: Engine, props: GeometryProps);
41
+ get isDestroyed(): boolean;
42
+ get isInitialized(): boolean;
43
+ getOptions(): {
44
+ name?: string | undefined;
45
+ attributes?: Record<string, import("@galacean/effects-core").Attribute> | undefined;
46
+ indices?: {
47
+ data: spec.TypedArray;
48
+ releasable?: boolean | undefined;
49
+ } | undefined;
50
+ mode?: import("@galacean/effects-core").GeometryDrawMode | undefined;
51
+ drawCount?: number | undefined;
52
+ drawStart?: number | undefined;
53
+ instanceCount?: number | undefined;
54
+ bufferUsage?: 35044 | 35048 | undefined;
55
+ maxVertex?: number | undefined;
56
+ };
57
+ /**
58
+ * Geometry 的 GPU 资源初始化方法,在绘制前调用
59
+ */
60
+ initialize(): void;
61
+ getAttributeBuffer(name: string): GLGPUBuffer | undefined;
62
+ setAttributeData(name: string, data: spec.TypedArray): void;
63
+ getAttributeData(name: string): spec.TypedArray | undefined;
64
+ setAttributeSubData(name: string, offset: number, data: spec.TypedArray): void;
65
+ getIndexData(): spec.TypedArray | undefined;
66
+ setIndexData(data?: spec.TypedArray): void;
67
+ setIndexSubData(offset: number, data: spec.TypedArray): void;
68
+ getAttributeStride(name: string): number;
69
+ getAttributeNames(): string[];
70
+ setDrawStart(count: number): void;
71
+ getDrawStart(): number;
72
+ setDrawCount(count: number): void;
73
+ getDrawCount(): number;
74
+ private getAttributeBufferOption;
75
+ createIndicesBuffer(pipelineContext: GLPipelineContext, data: spec.TypedArray): GLGPUBuffer;
76
+ flush(): void;
77
+ dispose(): void;
78
+ }
@@ -0,0 +1,36 @@
1
+ import type { Disposable, spec } from '@galacean/effects-core';
2
+ import type { GLPipelineContext } from './gl-pipeline-context';
3
+ type GPUBufferTarget = WebGLRenderingContext['ARRAY_BUFFER'] | WebGLRenderingContext['ELEMENT_ARRAY_BUFFER'] | WebGL2RenderingContext['COPY_READ_BUFFER'] | WebGL2RenderingContext['COPY_WRITE_BUFFER'] | WebGL2RenderingContext['TRANSFORM_FEEDBACK_BUFFER'] | WebGL2RenderingContext['UNIFORM_BUFFER'] | WebGL2RenderingContext['PIXEL_PACK_BUFFER'] | WebGL2RenderingContext['PIXEL_UNPACK_BUFFER'];
4
+ type GPUBufferType = WebGLRenderingContext['UNSIGNED_INT'] | WebGLRenderingContext['UNSIGNED_SHORT'] | WebGLRenderingContext['UNSIGNED_BYTE'] | WebGLRenderingContext['FLOAT'] | WebGLRenderingContext['INT'] | WebGLRenderingContext['SHORT'] | WebGLRenderingContext['BYTE'];
5
+ export interface GLGPUBufferProps {
6
+ name?: string;
7
+ target?: GPUBufferTarget;
8
+ type?: GPUBufferType;
9
+ /**
10
+ * 数据元素的总量
11
+ */
12
+ elementCount?: number;
13
+ data?: spec.TypedArray;
14
+ usage?: WebGLRenderingContext['STATIC_DRAW'] | WebGLRenderingContext['DYNAMIC_DRAW'];
15
+ }
16
+ export declare class GLGPUBuffer implements Disposable {
17
+ readonly pipelineContext: GLPipelineContext;
18
+ readonly bytesPerElement: number;
19
+ readonly target: GPUBufferTarget;
20
+ readonly type: GPUBufferType;
21
+ readonly usage: WebGLRenderingContext['STATIC_DRAW'] | WebGLRenderingContext['DYNAMIC_DRAW'] | WebGLRenderingContext['STREAM_DRAW'];
22
+ readonly glBuffer: WebGLBuffer | null;
23
+ private byteLength;
24
+ private destroyed;
25
+ constructor(pipelineContext: GLPipelineContext, props: GLGPUBufferProps);
26
+ get elementCount(): number;
27
+ get isDestroyed(): boolean;
28
+ private createGLBuffer;
29
+ bind(): void;
30
+ bufferData(data: spec.TypedArray | number): void;
31
+ bufferSubData(elementOffset: number, data: spec.TypedArray): void;
32
+ dispose(): void;
33
+ readSubData(elementOffset: number, dstBuffer: spec.TypedArray): boolean;
34
+ }
35
+ export declare function getBytesPerElementByGLType(type: number): number;
36
+ export {};
@@ -0,0 +1,50 @@
1
+ import type { GLPipelineContext } from './gl-pipeline-context';
2
+ export declare class GLMaterialState {
3
+ blending: boolean;
4
+ blendFunctionParameters: [blendSrc: GLenum, blendDst: GLenum, blendSrcAlpha: GLenum, blendDstAlpha: GLenum];
5
+ blendEquationParameters: [blendEquationRGB: GLenum, blendEquationAlpha: GLenum];
6
+ blendColor: [r: number, g: number, b: number, a: number];
7
+ depthTest: boolean;
8
+ depthMask: boolean;
9
+ depthRange: [zNear: GLenum, zFar: GLenum];
10
+ depthFunc: GLenum;
11
+ polygonOffset: [factor: GLenum, units: GLenum];
12
+ polygonOffsetFill: boolean;
13
+ sampleAlphaToCoverage: boolean;
14
+ colorMask: [r: boolean, g: boolean, b: boolean, a: boolean];
15
+ stencilTest: boolean;
16
+ stencilMask: [front: GLenum, back: GLenum];
17
+ stencilRef: [front: GLenum, back: GLenum];
18
+ stencilFunc: [front: GLenum, back: GLenum];
19
+ stencilOpFail: [front: GLenum, back: GLenum];
20
+ stencilOpZFail: [front: GLenum, back: GLenum];
21
+ stencilOpZPass: [front: GLenum, back: GLenum];
22
+ culling: boolean;
23
+ frontFace: GLenum;
24
+ cullFace: GLenum;
25
+ constructor();
26
+ setBlendColor(color: [r: number, g: number, b: number, a: number]): void;
27
+ setBlending(value: boolean): void;
28
+ setBlendFunctionParameters(value: [blendSrc: GLenum, blendDst: GLenum, blendSrcAlpha: GLenum, blendDstAlpha: GLenum]): void;
29
+ setBlendEquationParameters(value: [rgb: GLenum, alpha: GLenum]): void;
30
+ setDepthTest(value: boolean): void;
31
+ setDepthMask(value: boolean): void;
32
+ setDepthRange(value: [zNear: GLenum, zFar: GLenum]): void;
33
+ setDepthFunc(value: GLenum): void;
34
+ setPolygonOffsetFill(value: boolean): void;
35
+ setPolygonOffset(value: [factor: GLenum, units: GLenum]): void;
36
+ setSampleAlphaToCoverage(value: boolean): void;
37
+ setColorMask(color: [r: boolean, g: boolean, b: boolean, a: boolean]): void;
38
+ setStencilTest(value: boolean): void;
39
+ setStencilMask(value: [front: GLenum, back: GLenum]): void;
40
+ setStencilRef(value: [front: GLenum, back: GLenum]): void;
41
+ setStencilFunc(value: [front: GLenum, back: GLenum]): void;
42
+ setStencilOpFail(value: [front: GLenum, back: GLenum]): void;
43
+ setStencilOpZFail(value: [front: GLenum, back: GLenum]): void;
44
+ setStencilOpZPass(value: [front: GLenum, back: GLenum]): void;
45
+ setCulling(value: boolean): void;
46
+ setFrontFace(value: GLenum): void;
47
+ setCullFace(value: GLenum): void;
48
+ reset(): void;
49
+ apply(pipelineContext: GLPipelineContext): void;
50
+ }
@@ -0,0 +1,106 @@
1
+ import type { MaterialDestroyOptions, MaterialProps, MaterialStates, UndefinedAble, Texture, spec, Engine, GlobalUniforms } from '@galacean/effects-core';
2
+ import { Material } from '@galacean/effects-core';
3
+ import { GLMaterialState } from './gl-material-state';
4
+ import type { GLPipelineContext } from './gl-pipeline-context';
5
+ import type { GLShader } from './gl-shader';
6
+ import type { GLRenderer } from './gl-renderer';
7
+ export declare class GLMaterial extends Material {
8
+ shader: GLShader;
9
+ floats: Record<string, number>;
10
+ ints: Record<string, number>;
11
+ vector2s: Record<string, spec.vec2>;
12
+ vector3s: Record<string, spec.vec3>;
13
+ vector4s: Record<string, spec.vec4>;
14
+ matrices: Record<string, spec.mat4>;
15
+ matrice3s: Record<string, spec.mat3>;
16
+ textures: Record<string, Texture>;
17
+ floatArrays: Record<string, number[]>;
18
+ vector4Arrays: Record<string, number[]>;
19
+ matrixArrays: Record<string, number[]>;
20
+ samplers: string[];
21
+ uniforms: string[];
22
+ uniformDirtyFlag: boolean;
23
+ glMaterialState: GLMaterialState;
24
+ private engine?;
25
+ constructor(engine: Engine, props: MaterialProps);
26
+ get blending(): UndefinedAble<boolean>;
27
+ set blending(blending: UndefinedAble<boolean>);
28
+ get blendColor(): UndefinedAble<[r: number, g: number, b: number, a: number]>;
29
+ set blendColor(color: UndefinedAble<[r: number, g: number, b: number, a: number]>);
30
+ get blendFunction(): UndefinedAble<[blendSrc: number, blendDst: number, blendSrcAlpha: number, blendDstAlpha: number]>;
31
+ set blendFunction(func: UndefinedAble<[blendSrc: number, blendDst: number, blendSrcAlpha: number, blendDstAlpha: number]>);
32
+ get blendEquation(): UndefinedAble<[rgb: number, alpha: number]>;
33
+ set blendEquation(equation: UndefinedAble<[rgb: number, alpha: number]>);
34
+ get depthTest(): UndefinedAble<boolean>;
35
+ set depthTest(value: UndefinedAble<boolean>);
36
+ get depthMask(): UndefinedAble<boolean>;
37
+ set depthMask(value: UndefinedAble<boolean>);
38
+ get depthRange(): UndefinedAble<[number, number]>;
39
+ set depthRange(value: UndefinedAble<[number, number]>);
40
+ get depthFunc(): UndefinedAble<number>;
41
+ set depthFunc(value: UndefinedAble<number>);
42
+ get polygonOffsetFill(): UndefinedAble<boolean>;
43
+ set polygonOffsetFill(value: UndefinedAble<boolean>);
44
+ get polygonOffset(): UndefinedAble<[number, number]>;
45
+ set polygonOffset(value: UndefinedAble<[number, number]>);
46
+ get sampleAlphaToCoverage(): UndefinedAble<boolean>;
47
+ set sampleAlphaToCoverage(value: UndefinedAble<boolean>);
48
+ get colorMask(): UndefinedAble<[r: boolean, g: boolean, b: boolean, a: boolean]>;
49
+ set colorMask(value: UndefinedAble<[r: boolean, g: boolean, b: boolean, a: boolean]>);
50
+ get stencilTest(): UndefinedAble<boolean>;
51
+ set stencilTest(value: UndefinedAble<boolean>);
52
+ get stencilMask(): UndefinedAble<[number, number]>;
53
+ set stencilMask(value: UndefinedAble<[number, number]>);
54
+ get stencilRef(): UndefinedAble<[number, number]>;
55
+ set stencilRef(value: UndefinedAble<[number, number]>);
56
+ get stencilFunc(): UndefinedAble<[number, number]>;
57
+ set stencilFunc(value: UndefinedAble<[number, number]>);
58
+ get stencilOpFail(): UndefinedAble<[number, number]>;
59
+ set stencilOpFail(value: UndefinedAble<[number, number]>);
60
+ get stencilOpZFail(): UndefinedAble<[number, number]>;
61
+ set stencilOpZFail(value: UndefinedAble<[number, number]>);
62
+ get stencilOpZPass(): UndefinedAble<[number, number]>;
63
+ set stencilOpZPass(value: UndefinedAble<[number, number]>);
64
+ get culling(): UndefinedAble<boolean>;
65
+ set culling(value: UndefinedAble<boolean>);
66
+ get frontFace(): UndefinedAble<number>;
67
+ set frontFace(value: UndefinedAble<number>);
68
+ get cullFace(): UndefinedAble<number>;
69
+ set cullFace(value: UndefinedAble<number>);
70
+ enableKeyword(keyword: string): void;
71
+ disableKeyword(keyword: string): void;
72
+ isKeywordEnabled(keyword: string): boolean;
73
+ createMaterialStates(states: MaterialStates): void;
74
+ get isDestroyed(): boolean;
75
+ /**shader和texture的GPU资源初始化。 */
76
+ initialize(): void;
77
+ setupStates(pipelineContext: GLPipelineContext): void;
78
+ use(renderer: GLRenderer, globalUniforms?: GlobalUniforms): void;
79
+ getFloat(name: string): number | null;
80
+ setFloat(name: string, value: number): void;
81
+ getInt(name: string): number | null;
82
+ setInt(name: string, value: number): void;
83
+ getFloats(name: string): number[] | null;
84
+ setFloats(name: string, value: number[]): void;
85
+ getVector2(name: string): spec.vec2 | null;
86
+ setVector2(name: string, value: spec.vec2): void;
87
+ getVector3(name: string): spec.vec3 | null;
88
+ setVector3(name: string, value: spec.vec3): void;
89
+ getVector4(name: string): spec.vec4 | null;
90
+ setVector4(name: string, value: spec.vec4): void;
91
+ getMatrix(name: string): spec.mat4 | null;
92
+ setMatrix(name: string, value: spec.mat4): void;
93
+ setMatrix3(name: string, value: spec.mat3): void;
94
+ getVector4Array(name: string): number[];
95
+ setVector4Array(name: string, array: spec.vec4[]): void;
96
+ getMatrixArray(name: string): number[] | null;
97
+ setMatrixArray(name: string, array: spec.mat4[]): void;
98
+ setMatrixNumberArray(name: string, array: number[]): void;
99
+ getTexture(name: string): Texture | null;
100
+ setTexture(name: string, texture: Texture): void;
101
+ hasUniform(name: string): boolean;
102
+ clone(props?: MaterialProps): Material;
103
+ cloneUniforms(sourceMaterial: Material): void;
104
+ private checkUniform;
105
+ dispose(options?: MaterialDestroyOptions): void;
106
+ }
@@ -0,0 +1,316 @@
1
+ import type { Disposable, Texture } from '@galacean/effects-core';
2
+ import { GLShaderLibrary } from './gl-shader-library';
3
+ import type { GLEngine } from './gl-engine';
4
+ export type Nullable<T> = T | null;
5
+ export declare class GLPipelineContext implements Disposable {
6
+ engine: GLEngine;
7
+ gl: WebGLRenderingContext | WebGL2RenderingContext;
8
+ textureUnitDict: Record<string, WebGLTexture | null>;
9
+ shaderLibrary: GLShaderLibrary;
10
+ private readonly maxTextureCount;
11
+ private glCapabilityCache;
12
+ private currentFramebuffer;
13
+ private currentTextureBinding;
14
+ private currentRenderBuffer;
15
+ private activeTextureIndex;
16
+ private pixelStorei;
17
+ constructor(engine: GLEngine, gl: WebGLRenderingContext | WebGL2RenderingContext);
18
+ dispose(): void;
19
+ private reset;
20
+ toggle(capability: GLenum, enable?: boolean): void;
21
+ /**
22
+ * 对于该上下文开启某种特性
23
+ * @param capability
24
+ * example:
25
+ * gl.enable(gl.DITHER);
26
+ */
27
+ enable(capability: GLenum): void;
28
+ /**
29
+ * 基于某种上下文关闭特性
30
+ * @param capability
31
+ * example:
32
+ * gl.disable(gl.DITHER);
33
+ */
34
+ disable(capability: GLenum): void;
35
+ /**
36
+ * 绑定framebuffer webgl2新增: gl.DRAW_FRAMEBUFFER 和 gl.READ_FRAMEBUFFER
37
+ * @param target
38
+ * @param framebuffer
39
+ * example:
40
+ * const framebuffer = gl.createFramebuffer();
41
+ * gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
42
+ */
43
+ bindFramebuffer(target: GLenum, framebuffer: WebGLFramebuffer | null): void;
44
+ bindRenderBuffer(target: GLenum, renderBuffer: WebGLRenderbuffer | null): void;
45
+ /**
46
+ * 绑定系统 framebuffer
47
+ */
48
+ bindSystemFramebuffer(): void;
49
+ /**
50
+ * 将定义好的 WebGLProgram 对象添加到当前的渲染状态中。
51
+ * @param program
52
+ * example:
53
+ * gl.useProgram(program);
54
+ * gl.useProgram(null);
55
+ */
56
+ useProgram(program: WebGLProgram | null): void;
57
+ /**
58
+ * 使用预设值来清空缓冲
59
+ * @param mask
60
+ * example:
61
+ * gl.clear(gl.DEPTH_BUFFER_BIT);
62
+ * gl.clear(gl.DEPTH_BUFFER_BIT | gl.COLOR_BUFFER_BIT);
63
+ */
64
+ clear(mask: number): void;
65
+ /*** depth start ***/
66
+ /**
67
+ * 设置深度缓冲区的深度清除值
68
+ * @param depth
69
+ * example:
70
+ * gl.clearDepth(0.5);
71
+ */
72
+ clearDepth(depth: GLclampf): void;
73
+ /**
74
+ * 指定将输入像素深度与当前深度缓冲区值进行比较的函数。
75
+ * @param func
76
+ * example:
77
+ * gl.enable(gl.DEPTH_TEST);
78
+ * gl.depthFunc(gl.NEVER);
79
+ */
80
+ depthFunc(func: GLenum): void;
81
+ /**
82
+ * 设置是否启用写入深度缓冲。
83
+ * @param flag
84
+ * example:
85
+ * gl.depthMask(false);
86
+ */
87
+ depthMask(flag: boolean): void;
88
+ polygonOffset(factor: number, unit: number): void;
89
+ /**
90
+ * 将 z 值从规范化设备坐标映射到窗口坐标
91
+ * @param zNear
92
+ * @param zFar
93
+ * example:
94
+ * gl.depthRange(0.2, 0.6);
95
+ */
96
+ depthRange(zNear: number, zFar: number): void;
97
+ /*** depth end ***/
98
+ /*** stencil start ***/
99
+ /**
100
+ * 模版测试设置函数和引用值。
101
+ * @param func
102
+ * @param ref
103
+ * @param mask
104
+ * example:
105
+ * gl.enable(gl.STENCIL_TEST);
106
+ * gl.stencilFunc(gl.LESS, 0, 0b1110011);
107
+ */
108
+ clearStencil(s: GLint): void;
109
+ /**
110
+ * 控制启用和禁用模板平面中单个位的正面和背面写入
111
+ * @param mask
112
+ * example:
113
+ * gl.stencilMask(0xff);
114
+ */
115
+ stencilMask(mask: number): void;
116
+ /**
117
+ * 模版测试设置函数和引用值。
118
+ * @param func
119
+ * @param ref
120
+ * @param mask
121
+ * example:
122
+ * gl.enable(gl.STENCIL_TEST);
123
+ * gl.stencilFunc(gl.LESS, 0, 0b1110011);
124
+ */
125
+ stencilFunc(func: GLenum, ref: GLint, mask: GLuint): void;
126
+ /**
127
+ * 单面模版测试
128
+ * @param face
129
+ * @param func
130
+ * @param ref
131
+ * @param mask
132
+ * example:
133
+ * gl.enable(gl.STENCIL_TEST);
134
+ * gl.stencilFuncSeparate(gl.FRONT, gl.LESS, 0.2, 1110011);
135
+ */
136
+ stencilFuncSeparate(face: GLenum, func: GLenum, ref: GLint, mask: GLuint): void;
137
+ /**
138
+ * 单面的mask写入
139
+ * @param face
140
+ * @param mask
141
+ * example:
142
+ * gl.stencilMaskSeparate(gl.FRONT, 110101);
143
+ */
144
+ stencilMaskSeparate(face: GLenum, mask: GLuint): void;
145
+ /**
146
+ * 设置正面和背面模板测试操作
147
+ * @param fail
148
+ * @param zfail
149
+ * @param zpass
150
+ * example:
151
+ * gl.enable(gl.STENCIL_TEST);
152
+ * gl.stencilOp(gl.INCR, gl.DECR, gl.INVERT);
153
+ */
154
+ stencilOp(fail: GLenum, zfail: GLenum, zpass: GLenum): void;
155
+ /**
156
+ * 设置正面和/或背面模板测试操作
157
+ * @param face
158
+ * @param fail
159
+ * @param zfail
160
+ * @param zpass
161
+ * example:
162
+ * gl.enable(gl.STENCIL_TEST);
163
+ * gl.stencilOpSeparate(gl.FRONT, gl.INCR, gl.DECR, gl.INVERT);
164
+ */
165
+ stencilOpSeparate(face: GLenum, fail: GLenum, zfail: GLenum, zpass: GLenum): void;
166
+ /*** stencil end ***/
167
+ /*** face start ***/
168
+ /**
169
+ * 剔除方式
170
+ * @param mode
171
+ * example:
172
+ * gl.enable(gl.CULL_FACE);
173
+ * gl.cullFace(gl.FRONT_AND_BACK);
174
+ */
175
+ cullFace(mode: GLenum): void;
176
+ /**
177
+ * 设置卷绕方向
178
+ * @param mode
179
+ * example:
180
+ * gl.frontFace(gl.CW);
181
+ */
182
+ frontFace(mode: GLenum): void;
183
+ /*** face end ***/
184
+ /*** color start ***/
185
+ /**
186
+ * 设置颜色写入
187
+ * @param red
188
+ * @param green
189
+ * @param blue
190
+ * @param alpha
191
+ * example:
192
+ * gl.colorMask(true, true, true, false);
193
+ */
194
+ clearColor(red: GLclampf, green: GLclampf, blue: GLclampf, alpha: GLclampf): void;
195
+ /**
196
+ * 设置颜色写入
197
+ * @param red
198
+ * @param green
199
+ * @param blue
200
+ * @param alpha
201
+ * example:
202
+ * gl.colorMask(true, true, true, false);
203
+ */
204
+ colorMask(red: boolean, green: boolean, blue: boolean, alpha: boolean): void;
205
+ /**
206
+ * 设置源和目标混合因子
207
+ * @param red
208
+ * @param green
209
+ * @param blue
210
+ * @param alpha
211
+ * example:
212
+ * gl.blendColor(0, 0.5, 1, 1);
213
+ */
214
+ blendColor(red: GLclampf, green: GLclampf, blue: GLclampf, alpha: GLclampf): void;
215
+ /**
216
+ * 用于混合像素算法
217
+ * @param sfactor
218
+ * @param dfactor
219
+ * example:
220
+ * gl.enable(gl.BLEND);
221
+ * gl.blendFunc(gl.SRC_COLOR, gl.DST_COLOR);
222
+ */
223
+ blendFunc(sfactor: GLenum, dfactor: GLenum): void;
224
+ /**
225
+ * 分别设置应用在 RGB 和 Alpha 上的 factor
226
+ * @param srcRGB
227
+ * @param dstRGB
228
+ * @param srcAlpha
229
+ * @param dstAlpha
230
+ * example:
231
+ * gl.enable(gl.BLEND);
232
+ * gl.blendFuncSeparate(gl.SRC_COLOR, gl.DST_COLOR, gl.ONE, gl.ZERO);
233
+ */
234
+ blendFuncSeparate(srcRGB: GLenum, dstRGB: GLenum, srcAlpha: GLenum, dstAlpha: GLenum): void;
235
+ /**
236
+ * 设置混合模式
237
+ * @param mode
238
+ * example:
239
+ * gl.blendEquation(gl.FUNC_ADD);
240
+ * gl.blendEquation(gl.FUNC_SUBTRACT);
241
+ * gl.blendEquation(gl.FUNC_REVERSE_SUBTRACT);
242
+ */
243
+ blendEquation(mode: GLenum): void;
244
+ /**
245
+ * 可以分别对 RGB 和 Alpha 做不同的操作处理
246
+ * @param modeRGB
247
+ * @param modeAlpha
248
+ * example:
249
+ * gl.blendEquationSeparate(gl.FUNC_ADD, gl.FUNC_SUBTRACT);
250
+ */
251
+ blendEquationSeparate(modeRGB: GLenum, modeAlpha: GLenum): void;
252
+ /*** color end ***/
253
+ /**
254
+ * 图像预处理
255
+ * @param pname
256
+ * @param param
257
+ * example:
258
+ * var tex = gl.createTexture();
259
+ * gl.bindTexture(gl.TEXTURE_2D, tex);
260
+ * gl.pixelStorei(gl.PACK_ALIGNMENT, 4);
261
+ */
262
+ setPixelStorei(pname: GLenum, param: GLenum): void;
263
+ /**
264
+ * 用来设置视口,即指定从标准设备到窗口坐标的x、y仿射变换。
265
+ * @param x
266
+ * @param y
267
+ * @param width
268
+ * @param height
269
+ * example:
270
+ * gl.viewport(0, 0, width, height);
271
+ */
272
+ viewport(x: number, y: number, width: number, height: number): void;
273
+ /**
274
+ * 激活指定的纹理单元
275
+ * @param texture
276
+ * example:
277
+ * gl.activeTexture(gl.TEXTURE1);
278
+ */
279
+ activeTexture(texture: GLenum): void;
280
+ /**
281
+ * 绑定WebGLTexture
282
+ * @param target
283
+ * @param texture
284
+ * @param force
285
+ * example:
286
+ * const texture = gl.createTexture();
287
+ * gl.bindTexture(gl.TEXTURE_2D, texture)
288
+ */
289
+ bindTexture(target: GLenum, texture: WebGLTexture | null, force?: boolean): void;
290
+ private set1;
291
+ private set2;
292
+ private set3;
293
+ private set4;
294
+ get(name: string): any;
295
+ setFloat(uniform: Nullable<WebGLUniformLocation>, value: number): void;
296
+ setInt(uniform: Nullable<WebGLUniformLocation>, value: number): void;
297
+ setFloats(uniform: Nullable<WebGLUniformLocation>, value: number[]): void;
298
+ setVector2(uniform: Nullable<WebGLUniformLocation>, value: number[]): void;
299
+ setVector3(uniform: Nullable<WebGLUniformLocation>, value: number[]): void;
300
+ setVector4(uniform: Nullable<WebGLUniformLocation>, value: number[]): void;
301
+ setVector4Array(uniform: Nullable<WebGLUniformLocation>, array: number[]): void;
302
+ setMatrix(uniform: Nullable<WebGLUniformLocation>, value: number[]): void;
303
+ setMatrix3(uniform: Nullable<WebGLUniformLocation>, value: number[]): void;
304
+ setMatrixArray(uniform: Nullable<WebGLUniformLocation>, array: number[]): void;
305
+ setTexture(uniform: Nullable<WebGLUniformLocation>, channel: number, texture: Texture): void;
306
+ /**
307
+ * 查询所有uniform的location。
308
+ * @param program 查询的shader program
309
+ * @param uniformsNames 查询的uniform名称列表
310
+ * @returns
311
+ */
312
+ getUniforms(program: WebGLProgram, uniformsNames: string[]): Nullable<WebGLUniformLocation>[];
313
+ private setFloat4;
314
+ private setFloat3;
315
+ private setFloat2;
316
+ }
@@ -0,0 +1,40 @@
1
+ import type { Disposable } from '@galacean/effects-core';
2
+ import type { GLGeometry } from './gl-geometry';
3
+ import { GLVertexArrayObject } from './gl-vertex-array-object';
4
+ import type { GLEngine } from './gl-engine';
5
+ export interface ProgramAttributeInfo {
6
+ readonly name: string;
7
+ readonly size: number;
8
+ readonly type: number;
9
+ readonly loc: number;
10
+ }
11
+ export interface ProgramUniformInfo {
12
+ readonly loc: WebGLUniformLocation;
13
+ readonly subInfos: ProgramUniformInfo[];
14
+ readonly name: string;
15
+ readonly size: number;
16
+ readonly type: number;
17
+ readonly textureIndex: number;
18
+ readonly isTexture: boolean;
19
+ }
20
+ export declare class GLProgram implements Disposable {
21
+ engine: GLEngine;
22
+ readonly program: WebGLProgram;
23
+ private readonly shared;
24
+ private readonly id;
25
+ private readonly uniformBlockMap;
26
+ private attribInfoMap;
27
+ private uniformInfoMap;
28
+ private pipelineContext;
29
+ constructor(engine: GLEngine, program: WebGLProgram, shared: boolean, id: string);
30
+ bind(): void;
31
+ /**
32
+ * 绑定 vao 对象并设置顶点属性
33
+ * 如果当前环境不支持 vao,则使用 gl 函数依次设置属性。
34
+ * @param geometry
35
+ * @returns
36
+ */
37
+ setupAttributes(geometry: GLGeometry): GLVertexArrayObject;
38
+ createAttribMap(): Record<string, ProgramAttributeInfo>;
39
+ dispose(): void;
40
+ }
@@ -0,0 +1,12 @@
1
+ import type { RenderBufferProps } from '@galacean/effects-core';
2
+ import { RenderBuffer } from '@galacean/effects-core';
3
+ import type { GLRendererInternal } from './gl-renderer-internal';
4
+ export declare class GLRenderBuffer extends RenderBuffer {
5
+ buffer: WebGLRenderbuffer | null;
6
+ private initialized;
7
+ private renderer?;
8
+ constructor(props: RenderBufferProps, renderer?: GLRendererInternal);
9
+ initialize(renderer: GLRendererInternal): void;
10
+ setSize(width: number, height: number): void;
11
+ dispose(): void;
12
+ }
@@ -0,0 +1,43 @@
1
+ import type { Disposable, LostHandler, Material, Geometry } from '@galacean/effects-core';
2
+ import type { GLFrameBuffer } from './gl-frame-buffer';
3
+ import type { GLGPUBuffer } from './gl-gpu-buffer';
4
+ import type { GLPipelineContext } from './gl-pipeline-context';
5
+ import type { GLRenderBuffer } from './gl-render-buffer';
6
+ import { GLTexture } from './gl-texture';
7
+ import { GLVertexArrayObject } from './gl-vertex-array-object';
8
+ import type { GLEngine } from './gl-engine';
9
+ export declare class GLRendererInternal implements Disposable, LostHandler {
10
+ engine: GLEngine;
11
+ emptyTexture2D: GLTexture;
12
+ emptyTextureCube: GLTexture;
13
+ pipelineContext: GLPipelineContext;
14
+ gl: WebGLRenderingContext | WebGL2RenderingContext;
15
+ readonly name: string;
16
+ readonly textures: GLTexture[];
17
+ private readonly renderBuffers;
18
+ private readonly frameBuffers;
19
+ private sourceFbo;
20
+ private targetFbo;
21
+ private destroyed;
22
+ constructor(engine: GLEngine);
23
+ get height(): number;
24
+ get width(): number;
25
+ get canvas(): HTMLCanvasElement | OffscreenCanvas;
26
+ get isDestroyed(): boolean;
27
+ copy2(source: GLTexture, target: GLTexture): void;
28
+ resetColorAttachments(rp: GLFrameBuffer, colors: GLTexture[]): void;
29
+ createGLRenderBuffer(renderbuffer: GLRenderBuffer): WebGLRenderbuffer | null;
30
+ resize(width: number, height: number): void;
31
+ drawGeometry(geometry: Geometry, material: Material): void;
32
+ createGLFrameBuffer(frameBuffer: GLFrameBuffer, name?: string): WebGLFramebuffer | null;
33
+ /**创建包裹VAO对象。 */
34
+ createVAO(name: string): GLVertexArrayObject | undefined;
35
+ deleteGLTexture(texture: GLTexture): void;
36
+ deleteGPUBuffer(buffer: GLGPUBuffer | null): void;
37
+ deleteGLFrameBuffer(frameBuffer: GLFrameBuffer): void;
38
+ deleteGLRenderBuffer(renderbuffer: GLRenderBuffer): void;
39
+ private deleteResource;
40
+ lost(e: Event): void;
41
+ dispose(haltGL?: boolean): void;
42
+ }
43
+ export declare function assignInspectorName(obj: Record<string, any>, name?: string, id?: string): void;
@@ -0,0 +1,41 @@
1
+ import type { Disposable, FrameBuffer, Geometry, LostHandler, Material, Mesh, RenderFrame, RenderPass, RenderPassClearAction, RenderPassStoreAction, RestoreHandler, ShaderLibrary, mat4 } from '@galacean/effects-core';
2
+ import { Renderer, FilterMode, RenderTextureFormat } from '@galacean/effects-core';
3
+ import { ExtWrap } from './ext-wrap';
4
+ import { GLContextManager } from './gl-context-manager';
5
+ import { GLPipelineContext } from './gl-pipeline-context';
6
+ import { GLRendererInternal } from './gl-renderer-internal';
7
+ export declare class GLRenderer extends Renderer implements Disposable {
8
+ readonly canvas: HTMLCanvasElement | OffscreenCanvas;
9
+ glRenderer: GLRendererInternal;
10
+ extension: ExtWrap;
11
+ frameBuffer: FrameBuffer;
12
+ temporaryRTs: Record<string, FrameBuffer>;
13
+ pipelineContext: GLPipelineContext;
14
+ readonly context: GLContextManager;
15
+ constructor(canvas: HTMLCanvasElement | OffscreenCanvas, framework: 'webgl' | 'webgl2', renderOptions?: WebGLContextAttributes);
16
+ get isDestroyed(): boolean;
17
+ get height(): number;
18
+ get width(): number;
19
+ renderRenderFrame(renderFrame: RenderFrame): void;
20
+ renderRenderPass(pass: RenderPass): void;
21
+ renderMeshes(meshes: Mesh[]): void;
22
+ setGlobalFloat(name: string, value: number): void;
23
+ setGlobalInt(name: string, value: number): void;
24
+ setGlobalMatrix(name: string, value: mat4): void;
25
+ drawGeometry(geometry: Geometry, material: Material): void;
26
+ setFrameBuffer(frameBuffer: FrameBuffer | null): void;
27
+ getFrameBuffer(): FrameBuffer | null;
28
+ getTemporaryRT(name: string, width: number, height: number, depthBuffer: number, filter: FilterMode, format: RenderTextureFormat): FrameBuffer | null;
29
+ setViewport(x: number, y: number, width: number, height: number): void;
30
+ clear(action: RenderPassStoreAction | RenderPassClearAction): void;
31
+ addLostHandler(lostHandler: LostHandler): void;
32
+ addRestoreHandler(restoreHandler: RestoreHandler): void;
33
+ getShaderLibrary(): ShaderLibrary | undefined;
34
+ getWidth(): number;
35
+ getHeight(): number;
36
+ dispose(haltGL?: boolean): void;
37
+ lost(e: Event): void;
38
+ restore(): void;
39
+ resize(width: number, height: number): void;
40
+ private checkGlobalUniform;
41
+ }
@@ -0,0 +1,26 @@
1
+ import type { Disposable, RestoreHandler, ShaderCompileResult, ShaderLibrary, ShaderWithSource } from '@galacean/effects-core';
2
+ import { GLShader } from './gl-shader';
3
+ import type { GLPipelineContext } from './gl-pipeline-context';
4
+ import type { GLEngine } from './gl-engine';
5
+ export declare class GLShaderLibrary implements ShaderLibrary, Disposable, RestoreHandler {
6
+ engine: GLEngine;
7
+ pipelineContext: GLPipelineContext;
8
+ readonly shaderResults: Record<string, ShaderCompileResult>;
9
+ private readonly glAsyncCompileExt;
10
+ private programMap;
11
+ private glVertShaderMap;
12
+ private glFragShaderMap;
13
+ private shaderAllDone;
14
+ private cachedShaders;
15
+ constructor(engine: GLEngine, pipelineContext: GLPipelineContext);
16
+ compileAllShaders(asyncCallback?: (results: ShaderCompileResult[]) => void): void;
17
+ addShader(shaderSource: ShaderWithSource): string;
18
+ createShader(shaderSource: ShaderWithSource): GLShader;
19
+ compileShader(shader: GLShader, asyncCallback?: (result: ShaderCompileResult) => void): void;
20
+ private computeShaderCacheId;
21
+ private createProgram;
22
+ private createGLShader;
23
+ deleteShader(cacheId: string): void;
24
+ restore(): void;
25
+ dispose(): void;
26
+ }
@@ -0,0 +1,28 @@
1
+ import type { ShaderCompileResult, ShaderWithSource, Texture, Engine } from '@galacean/effects-core';
2
+ import { Shader } from '@galacean/effects-core';
3
+ import type { GLProgram } from './gl-program';
4
+ import type { GLPipelineContext } from './gl-pipeline-context';
5
+ export declare class GLShader extends Shader {
6
+ pipelineContext: GLPipelineContext;
7
+ program: GLProgram;
8
+ compileResult: ShaderCompileResult;
9
+ id: string;
10
+ initialized: boolean;
11
+ uniformLocations: Record<string, WebGLUniformLocation | null>;
12
+ private samplerChannels;
13
+ constructor(source: ShaderWithSource);
14
+ initialize(engine: Engine): void;
15
+ setFloat(name: string, value: number): void;
16
+ setInt(name: string, value: number): void;
17
+ setFloats(name: string, value: number[]): void;
18
+ setTexture(name: string, texture: Texture): void;
19
+ setVector2(name: string, value: number[]): void;
20
+ setVector3(name: string, value: number[]): void;
21
+ setVector4(name: string, value: number[]): void;
22
+ setMatrix(name: string, value: number[]): void;
23
+ setMatrix3(name: string, value: number[]): void;
24
+ setVector4Array(name: string, array: number[]): void;
25
+ setMatrixArray(name: string, array: number[]): void;
26
+ fillShaderInformation(uniformNames: string[], samplers: string[]): void;
27
+ dispose(): void;
28
+ }
@@ -0,0 +1,26 @@
1
+ import type { Disposable, RestoreHandler, TextureConfigOptions, TextureSourceOptions, Engine } from '@galacean/effects-core';
2
+ import { Texture } from '@galacean/effects-core';
3
+ export declare class GLTexture extends Texture implements Disposable, RestoreHandler {
4
+ textureBuffer: WebGLTexture | null;
5
+ target: GLenum;
6
+ private pipelineContext;
7
+ private initialized;
8
+ constructor(engine: Engine, source: TextureSourceOptions);
9
+ /** 绑定当前Texture对象。*/
10
+ bind(force?: boolean): void;
11
+ /** 初始化Texture的GPU资源。*/
12
+ initialize(): void;
13
+ clone(): GLTexture;
14
+ release(): void;
15
+ update(sourceOptions: TextureSourceOptions): void;
16
+ setTextureFilters(gl: WebGLRenderingContext | WebGL2RenderingContext, target: GLenum, options: TextureConfigOptions): void;
17
+ private texImage2D;
18
+ private texImage2DData;
19
+ private resizeImage;
20
+ reloadData(): Promise<void>;
21
+ offloadData(): void;
22
+ uploadCurrentVideoFrame(): Promise<boolean>;
23
+ updateSource(opts: TextureSourceOptions): void;
24
+ restore(): void;
25
+ dispose(): void;
26
+ }
@@ -0,0 +1,45 @@
1
+ import type { Disposable, UniformValue, spec } from '@galacean/effects-core';
2
+ import { GLGPUBuffer } from './gl-gpu-buffer';
3
+ import type { GLPipelineContext } from './gl-pipeline-context';
4
+ type BlockUniformInfo = [
5
+ type: number,
6
+ offset: number,
7
+ size: number,
8
+ blockIndex: number,
9
+ arrayStride: number,
10
+ maxStride: number,
11
+ rowMajor: number,
12
+ index: number,
13
+ byteLength: number
14
+ ];
15
+ export interface UniformBlockSpec {
16
+ index: number;
17
+ usedByVertexShader: boolean;
18
+ usedByFragmentShader: boolean;
19
+ size: number;
20
+ uniformIndices: number[];
21
+ used: boolean;
22
+ name: string;
23
+ uniforms: Record<string, BlockUniformInfo>;
24
+ id: string;
25
+ }
26
+ interface UBODirtyFlag {
27
+ start: number;
28
+ dirty: boolean;
29
+ buffer?: spec.TypedArray;
30
+ }
31
+ export declare class UniformBlockBuffer implements Disposable {
32
+ private readonly info;
33
+ buffer?: GLGPUBuffer;
34
+ dirtyFlags: Record<string, UBODirtyFlag>;
35
+ keepData: boolean;
36
+ constructor(pipelineContext: GLPipelineContext, info: UniformBlockSpec);
37
+ setValues(uniformValues: Record<string, UniformValue>, dirtyFlags: Record<string, boolean>, uniformValueOffsets: Record<string, spec.vec2>): void;
38
+ bind(gl: WebGL2RenderingContext, program: WebGLProgram, bufferBindIndex: number): void;
39
+ dispose(): void;
40
+ }
41
+ export declare function createUniformBlockDataFromProgram(gl: WebGL2RenderingContext, program: WebGLProgram): {
42
+ blockSpecs: UniformBlockSpec[];
43
+ blockUniformNames: string[];
44
+ };
45
+ export {};
@@ -0,0 +1,20 @@
1
+ import type { Disposable } from '@galacean/effects-core';
2
+ import type { GLEngine } from './gl-engine';
3
+ export declare class GLVertexArrayObject implements Disposable {
4
+ private engine;
5
+ ready: boolean;
6
+ disposed: boolean;
7
+ readonly vao: WebGLVertexArrayObject | null;
8
+ private vaoExt;
9
+ private gl;
10
+ constructor(engine: GLEngine, name?: string);
11
+ bind(): void;
12
+ unbind(): void;
13
+ private createVertexArray;
14
+ /**
15
+ * 根据 gpu level 选择对应的绑定函数
16
+ * @param vao
17
+ */
18
+ private bindVertexArray;
19
+ dispose(): void;
20
+ }
@@ -0,0 +1,12 @@
1
+ export * from './gl-geometry';
2
+ export * from './gl-renderer';
3
+ export * from './gl-material';
4
+ export * from './gl-renderer-internal';
5
+ export * from './gl-render-buffer';
6
+ export * from './gl-texture';
7
+ export * from './gl-frame-buffer';
8
+ export * from './gl-gpu-buffer';
9
+ export * from './gl-vertex-array-object';
10
+ export * from './gl-pipeline-context';
11
+ export * from './gl-shader-library';
12
+ export * from './gl-engine';
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "@galacean/effects-webgl",
3
+ "version": "0.0.1-alpha.0",
4
+ "description": "Galacean Effects runtime webgl for the web",
5
+ "types": "./dist/index.d.ts",
6
+ "files": [
7
+ "dist"
8
+ ],
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts"
12
+ }
13
+ },
14
+ "contributors": [
15
+ {
16
+ "name": "燃然"
17
+ },
18
+ {
19
+ "name": "飂兮"
20
+ },
21
+ {
22
+ "name": "十弦"
23
+ },
24
+ {
25
+ "name": "云垣"
26
+ },
27
+ {
28
+ "name": "茂安"
29
+ },
30
+ {
31
+ "name": "意绮"
32
+ }
33
+ ],
34
+ "author": "Ant Group CO., Ltd.",
35
+ "license": "MIT",
36
+ "publishConfig": {
37
+ "access": "public",
38
+ "registry": "https://registry.npmjs.org"
39
+ },
40
+ "dependencies": {
41
+ "@galacean/effects-core": "0.0.1-alpha.0"
42
+ },
43
+ "scripts": {
44
+ "prebuild": "pnpm clean",
45
+ "build": "pnpm build:declaration",
46
+ "build:declaration": "tsc -d --declarationDir dist --emitDeclarationOnly",
47
+ "clean": "rimraf dist && rimraf '*+(.tsbuildinfo)'"
48
+ }
49
+ }