@galacean/effects-webgl 2.9.0-alpha.2 → 2.9.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.
@@ -1,7 +1,12 @@
1
- import type { EngineOptions, Nullable, Texture, math } from '@galacean/effects-core';
1
+ import type { EngineOptions, Geometry, Material, Nullable, RenderPassClearAction, ShaderLibrary, Texture, math } from '@galacean/effects-core';
2
2
  import { Engine } from '@galacean/effects-core';
3
3
  import { GLShaderLibrary } from './gl-shader-library';
4
+ import type { GLTexture } from './gl-texture';
4
5
  import { GLContextManager } from './gl-context-manager';
6
+ import type { GLFramebuffer } from './gl-framebuffer';
7
+ import type { GLGPUBuffer } from './gl-gpu-buffer';
8
+ import type { GLRenderbuffer } from './gl-renderbuffer';
9
+ import { GLVertexArrayObject } from './gl-vertex-array-object';
5
10
  type Color = math.Color;
6
11
  type Vector2 = math.Vector2;
7
12
  type Vector3 = math.Vector3;
@@ -23,9 +28,25 @@ export declare class GLEngine extends Engine {
23
28
  private pixelStorei;
24
29
  private restoreCompositionsCache;
25
30
  constructor(canvas: HTMLCanvasElement, options?: EngineOptions);
31
+ getWidth(): number;
32
+ getHeight(): number;
33
+ getShaderLibrary(): ShaderLibrary | null;
34
+ createGLFramebuffer(name?: string): WebGLFramebuffer | null;
35
+ createVAO(name?: string): GLVertexArrayObject | undefined;
36
+ deleteGLTexture(texture: GLTexture): void;
37
+ deleteGPUBuffer(buffer: GLGPUBuffer | null): void;
38
+ deleteGLFramebuffer(framebuffer: GLFramebuffer): void;
39
+ deleteGLRenderbuffer(renderbuffer: GLRenderbuffer): void;
40
+ drawGeometry(geometry: Geometry, matrix: Matrix4, material: Material, subMeshIndex?: number): void;
41
+ clear(action: RenderPassClearAction): void;
26
42
  dispose(): void;
27
43
  reset(): void;
28
- toggle(capability: GLenum, enable?: boolean): void;
44
+ setSampleAlphaToCoverage(enable: boolean): void;
45
+ setBlending(enable: boolean): void;
46
+ setDepthTest(enable: boolean): void;
47
+ setStencilTest(enable: boolean): void;
48
+ setCulling(enable: boolean): void;
49
+ setPolygonOffsetFill(enable: boolean): void;
29
50
  /**
30
51
  * 对于该上下文开启某种特性
31
52
  * @param capability
@@ -62,14 +83,6 @@ export declare class GLEngine extends Engine {
62
83
  * gl.useProgram(null);
63
84
  */
64
85
  useProgram(program: WebGLProgram | null): void;
65
- /**
66
- * 使用预设值来清空缓冲
67
- * @param mask
68
- * example:
69
- * gl.clear(gl.DEPTH_BUFFER_BIT);
70
- * gl.clear(gl.DEPTH_BUFFER_BIT | gl.COLOR_BUFFER_BIT);
71
- */
72
- clear(mask: number): void;
73
86
  /*** depth start ***/
74
87
  /**
75
88
  * 设置深度缓冲区的深度清除值
@@ -1,7 +1,6 @@
1
1
  import type { Disposable, FramebufferProps, Renderbuffer, Renderer, Texture } from '@galacean/effects-core';
2
2
  import { Framebuffer, RenderPassDestroyAttachmentType } from '@galacean/effects-core';
3
3
  import { GLRenderbuffer } from './gl-renderbuffer';
4
- import type { GLRenderer } from './gl-renderer';
5
4
  import { GLTexture } from './gl-texture';
6
5
  import type { GLEngine } from './gl-engine';
7
6
  export declare class GLFramebuffer extends Framebuffer implements Disposable {
@@ -12,7 +11,7 @@ export declare class GLFramebuffer extends Framebuffer implements Disposable {
12
11
  colorTextures: GLTexture[];
13
12
  fbo?: WebGLFramebuffer;
14
13
  engine: GLEngine;
15
- readonly renderer: GLRenderer;
14
+ readonly renderer: Renderer;
16
15
  private readonly attachmentTextures;
17
16
  constructor(props: FramebufferProps, renderer: Renderer);
18
17
  get stencilStorage(): Renderbuffer | undefined;
@@ -1,12 +1,11 @@
1
- import type { RenderbufferProps } from '@galacean/effects-core';
1
+ import type { RenderbufferProps, Renderer } from '@galacean/effects-core';
2
2
  import { Renderbuffer } from '@galacean/effects-core';
3
- import type { GLRenderer } from './gl-renderer';
4
3
  export declare class GLRenderbuffer extends Renderbuffer {
5
4
  buffer: WebGLRenderbuffer | null;
6
5
  private initialized;
7
6
  private renderer?;
8
- constructor(props: RenderbufferProps, renderer?: GLRenderer);
9
- initialize(renderer: GLRenderer): void;
7
+ constructor(props: RenderbufferProps, renderer?: Renderer);
8
+ initialize(renderer: Renderer): void;
10
9
  setSize(width: number, height: number): void;
11
10
  dispose(): void;
12
11
  }
@@ -33,5 +33,7 @@ export declare class GLShaderVariant extends ShaderVariant {
33
33
  fillShaderInformation(uniformNames: string[], samplers: string[]): void;
34
34
  toData(): void;
35
35
  dispose(): void;
36
+ bind(): void;
37
+ isReady(): boolean;
36
38
  }
37
39
  export {};
@@ -1,4 +1,4 @@
1
- import type { Disposable, RestoreHandler, TextureConfigOptions, TextureSourceOptions, Engine } from '@galacean/effects-core';
1
+ import type { Disposable, RestoreHandler, TextureConfigOptions, TextureSourceOptions, spec, Engine } from '@galacean/effects-core';
2
2
  import { Texture } from '@galacean/effects-core';
3
3
  export declare class GLTexture extends Texture implements Disposable, RestoreHandler {
4
4
  textureBuffer: WebGLTexture | null;
@@ -17,7 +17,7 @@ export declare class GLTexture extends Texture implements Disposable, RestoreHan
17
17
  release(): void;
18
18
  update(sourceOptions: TextureSourceOptions): void;
19
19
  setTextureFilters(gl: WebGLRenderingContext | WebGL2RenderingContext, target: GLenum, options: TextureConfigOptions): void;
20
- fromData(data: any): void;
20
+ fromData(data: spec.EffectsObjectData): void;
21
21
  private texImage2D;
22
22
  private texImage2DData;
23
23
  private resizeImage;
package/dist/index.d.ts CHANGED
@@ -1,6 +1,4 @@
1
1
  export * from './gl-geometry';
2
- export * from './gl-renderer';
3
- export * from './gl-material';
4
2
  export * from './gl-renderer-internal';
5
3
  export * from './gl-renderbuffer';
6
4
  export * from './gl-texture';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@galacean/effects-webgl",
3
- "version": "2.9.0-alpha.2",
3
+ "version": "2.9.0",
4
4
  "description": "Galacean Effects runtime webgl for the web",
5
5
  "types": "./dist/index.d.ts",
6
6
  "files": [
@@ -38,7 +38,7 @@
38
38
  "registry": "https://registry.npmjs.org"
39
39
  },
40
40
  "dependencies": {
41
- "@galacean/effects-core": "2.9.0-alpha.2"
41
+ "@galacean/effects-core": "2.9.0"
42
42
  },
43
43
  "scripts": {
44
44
  "prebuild": "pnpm clean",
@@ -1,50 +0,0 @@
1
- import type { GLEngine } from './gl-engine';
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(colorMask: 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(engine: GLEngine): void;
50
- }
@@ -1,124 +0,0 @@
1
- import type { Engine, GlobalUniforms, MaterialProps, Renderer, Texture, UndefinedAble } from '@galacean/effects-core';
2
- import { spec, Material, math } from '@galacean/effects-core';
3
- import type { GLEngine } from './gl-engine';
4
- type Color = math.Color;
5
- type Vector2 = math.Vector2;
6
- type Vector3 = math.Vector3;
7
- type Vector4 = math.Vector4;
8
- type Matrix3 = math.Matrix3;
9
- type Matrix4 = math.Matrix4;
10
- type Quaternion = math.Quaternion;
11
- declare const Vector4: typeof math.Vector4, Matrix4: typeof math.Matrix4;
12
- export declare class GLMaterial extends Material {
13
- private floats;
14
- private ints;
15
- private vector2s;
16
- private vector3s;
17
- private vector4s;
18
- private colors;
19
- private quaternions;
20
- private matrices;
21
- private matrice3s;
22
- private textures;
23
- private floatArrays;
24
- private vector4Arrays;
25
- private matrixArrays;
26
- private samplers;
27
- private uniforms;
28
- private uniformDirty;
29
- private macrosDirty;
30
- private glMaterialState;
31
- constructor(engine: Engine, props?: MaterialProps);
32
- get blending(): UndefinedAble<boolean>;
33
- set blending(blending: UndefinedAble<boolean>);
34
- get blendColor(): UndefinedAble<[r: number, g: number, b: number, a: number]>;
35
- set blendColor(color: UndefinedAble<[r: number, g: number, b: number, a: number]>);
36
- get blendFunction(): UndefinedAble<[blendSrc: number, blendDst: number, blendSrcAlpha: number, blendDstAlpha: number]>;
37
- set blendFunction(func: UndefinedAble<[blendSrc: number, blendDst: number, blendSrcAlpha: number, blendDstAlpha: number]>);
38
- get blendEquation(): UndefinedAble<[rgb: number, alpha: number]>;
39
- set blendEquation(equation: UndefinedAble<[rgb: number, alpha: number]>);
40
- get depthTest(): UndefinedAble<boolean>;
41
- set depthTest(value: UndefinedAble<boolean>);
42
- get depthMask(): UndefinedAble<boolean>;
43
- set depthMask(value: UndefinedAble<boolean>);
44
- get depthRange(): UndefinedAble<[number, number]>;
45
- set depthRange(value: UndefinedAble<[number, number]>);
46
- get depthFunc(): UndefinedAble<number>;
47
- set depthFunc(value: UndefinedAble<number>);
48
- get polygonOffsetFill(): UndefinedAble<boolean>;
49
- set polygonOffsetFill(value: UndefinedAble<boolean>);
50
- get polygonOffset(): UndefinedAble<[number, number]>;
51
- set polygonOffset(value: UndefinedAble<[number, number]>);
52
- get sampleAlphaToCoverage(): UndefinedAble<boolean>;
53
- set sampleAlphaToCoverage(value: UndefinedAble<boolean>);
54
- get colorMask(): boolean;
55
- set colorMask(value: boolean);
56
- get stencilTest(): UndefinedAble<boolean>;
57
- set stencilTest(value: UndefinedAble<boolean>);
58
- get stencilMask(): UndefinedAble<[number, number]>;
59
- set stencilMask(value: UndefinedAble<[number, number]>);
60
- get stencilRef(): UndefinedAble<[number, number]>;
61
- set stencilRef(value: UndefinedAble<[number, number]>);
62
- get stencilFunc(): UndefinedAble<[number, number]>;
63
- set stencilFunc(value: UndefinedAble<[number, number]>);
64
- get stencilOpFail(): UndefinedAble<[number, number]>;
65
- set stencilOpFail(value: UndefinedAble<[number, number]>);
66
- get stencilOpZFail(): UndefinedAble<[number, number]>;
67
- set stencilOpZFail(value: UndefinedAble<[number, number]>);
68
- get stencilOpZPass(): UndefinedAble<[number, number]>;
69
- set stencilOpZPass(value: UndefinedAble<[number, number]>);
70
- get culling(): UndefinedAble<boolean>;
71
- set culling(value: UndefinedAble<boolean>);
72
- get frontFace(): UndefinedAble<number>;
73
- set frontFace(value: UndefinedAble<number>);
74
- get cullFace(): UndefinedAble<number>;
75
- set cullFace(value: UndefinedAble<number>);
76
- enableMacro(keyword: string, value?: boolean | number): void;
77
- disableMacro(keyword: string): void;
78
- isMacroEnabled(keyword: string): boolean;
79
- get isDestroyed(): boolean;
80
- /**shader和texture的GPU资源初始化。 */
81
- initialize(): void;
82
- createShaderVariant(): void;
83
- setupStates(engine: GLEngine): void;
84
- use(renderer: Renderer, globalUniforms?: GlobalUniforms): void;
85
- getFloat(name: string): number | null;
86
- setFloat(name: string, value: number): void;
87
- getInt(name: string): number | null;
88
- setInt(name: string, value: number): void;
89
- getFloats(name: string): number[] | null;
90
- setFloats(name: string, value: number[]): void;
91
- getVector2(name: string): Vector2 | null;
92
- setVector2(name: string, value: Vector2): void;
93
- getVector3(name: string): Vector3 | null;
94
- setVector3(name: string, value: Vector3): void;
95
- getVector4(name: string): Vector4 | null;
96
- setVector4(name: string, value: Vector4): void;
97
- getColor(name: string): Color | null;
98
- setColor(name: string, value: Color): void;
99
- getQuaternion(name: string): Quaternion | null;
100
- setQuaternion(name: string, value: Quaternion): void;
101
- getMatrix(name: string): Matrix4 | null;
102
- setMatrix(name: string, value: Matrix4): void;
103
- setMatrix3(name: string, value: Matrix3): void;
104
- getVector4Array(name: string): number[];
105
- setVector4Array(name: string, array: Vector4[]): void;
106
- getMatrixArray(name: string): number[] | null;
107
- setMatrixArray(name: string, array: Matrix4[]): void;
108
- setMatrixNumberArray(name: string, array: number[]): void;
109
- getTexture(name: string): Texture | null;
110
- setTexture(name: string, texture: Texture): void;
111
- hasUniform(name: string): boolean;
112
- clone(props?: MaterialProps): Material;
113
- fromData(data: spec.MaterialData): void;
114
- /**
115
- * @since 2.0.0
116
- * @param sceneData
117
- * @returns
118
- */
119
- toData(): spec.MaterialData;
120
- cloneUniforms(sourceMaterial: Material): void;
121
- private checkUniform;
122
- dispose(): void;
123
- }
124
- export {};
@@ -1,65 +0,0 @@
1
- import type { Disposable, Engine, Framebuffer, RenderFrame, RenderPass, RenderPassClearAction, RendererComponent, ShaderLibrary, Texture } from '@galacean/effects-core';
2
- import { Geometry, Material, math, Renderer } from '@galacean/effects-core';
3
- import type { GLFramebuffer } from './gl-framebuffer';
4
- import type { GLTexture } from './gl-texture';
5
- import type { GLRenderbuffer } from './gl-renderbuffer';
6
- import { GLVertexArrayObject } from './gl-vertex-array-object';
7
- import type { GLGPUBuffer } from './gl-gpu-buffer';
8
- type Matrix4 = math.Matrix4;
9
- type Vector4 = math.Vector4;
10
- type Vector3 = math.Vector3;
11
- export declare class GLRenderer extends Renderer implements Disposable {
12
- temporaryRTs: Record<string, Framebuffer>;
13
- readonly name: string;
14
- private sourceFbo;
15
- private targetFbo;
16
- private disposed;
17
- private blitGeometry;
18
- private blitMaterial;
19
- get gl(): WebGLRenderingContext | WebGL2RenderingContext;
20
- get height(): number;
21
- get width(): number;
22
- get canvas(): HTMLCanvasElement | OffscreenCanvas;
23
- get isDisposed(): boolean;
24
- get context(): import("packages/effects-webgl/src/gl-context-manager").GLContextManager;
25
- constructor(engine: Engine);
26
- renderRenderFrame(renderFrame: RenderFrame): void;
27
- renderRenderPass(pass: RenderPass): void;
28
- renderMeshes(meshes: RendererComponent[]): void;
29
- setGlobalFloat(name: string, value: number): void;
30
- setGlobalVector4(name: string, value: Vector4): void;
31
- getGlobalVector4(name: string): Vector4;
32
- setGlobalInt(name: string, value: number): void;
33
- setGlobalMatrix(name: string, value: Matrix4): void;
34
- setGlobalVector3(name: string, value: Vector3): void;
35
- drawGeometry(geometry: Geometry, matrix: Matrix4, material: Material, subMeshIndex?: number): void;
36
- setFramebuffer(framebuffer: Framebuffer | null): void;
37
- setViewport(x: number, y: number, width: number, height: number): void;
38
- clear(action: RenderPassClearAction): void;
39
- getShaderLibrary(): ShaderLibrary | undefined;
40
- getWidth(): number;
41
- getHeight(): number;
42
- dispose(): void;
43
- lost(e: Event): void;
44
- restore(): void;
45
- resize(width: number, height: number): void;
46
- /**
47
- * 将源纹理复制到目标 Framebuffer,可使用自定义材质进行处理
48
- * @param source - 源纹理
49
- * @param destination - 目标 Framebuffer,如果为 null 则渲染到屏幕
50
- * @param material - 可选的自定义材质,不传则使用默认复制材质
51
- */
52
- blit(source: Texture, destination: Framebuffer | null, material?: Material): void;
53
- private checkGlobalUniform;
54
- copy2(source: GLTexture, target: GLTexture): void;
55
- createGLRenderbuffer(renderbuffer: GLRenderbuffer): WebGLRenderbuffer | null;
56
- createGLFramebuffer(name?: string): WebGLFramebuffer | null;
57
- /**创建包裹VAO对象。 */
58
- createVAO(name?: string): GLVertexArrayObject | undefined;
59
- deleteGLTexture(texture: GLTexture): void;
60
- deleteGPUBuffer(buffer: GLGPUBuffer | null): void;
61
- deleteGLFramebuffer(framebuffer: GLFramebuffer): void;
62
- deleteGLRenderbuffer(renderbuffer: GLRenderbuffer): void;
63
- private deleteResource;
64
- }
65
- export {};