@predy-js/render-interface 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/dist/index.js +5545 -0
  2. package/dist/index.js.map +1 -0
  3. package/dist/index.mjs +5524 -0
  4. package/dist/index.mjs.map +1 -0
  5. package/dist/src/common/console.d.ts +3 -0
  6. package/dist/src/common/env.d.ts +1 -0
  7. package/dist/src/common/raf.d.ts +2 -0
  8. package/dist/src/common/request.d.ts +10 -0
  9. package/dist/src/common/utils.d.ts +14 -0
  10. package/dist/src/index.d.ts +17 -0
  11. package/dist/src/render/MarsExtWrap.d.ts +15 -0
  12. package/dist/src/render/MarsGPUCapability.d.ts +2 -0
  13. package/dist/src/render/MarsGeometry.d.ts +64 -0
  14. package/dist/src/render/MarsMaterial.d.ts +29 -0
  15. package/dist/src/render/MarsMaterialDataBlock.d.ts +37 -0
  16. package/dist/src/render/MarsMesh.d.ts +24 -0
  17. package/dist/src/render/MarsRenderFrame.d.ts +22 -0
  18. package/dist/src/render/MarsRenderPass.d.ts +51 -0
  19. package/dist/src/render/MarsRenderPassColorAttachment.d.ts +27 -0
  20. package/dist/src/render/MarsRenderer.d.ts +20 -0
  21. package/dist/src/render/MarsSemanticMap.d.ts +10 -0
  22. package/dist/src/render/MarsSharedGeometry.d.ts +13 -0
  23. package/dist/src/render/MarsTexture.d.ts +29 -0
  24. package/dist/src/render/MarsTextureFactory.d.ts +20 -0
  25. package/dist/src/render/RenderFrameInternal.d.ts +8 -0
  26. package/dist/src/statistic/index.d.ts +20 -0
  27. package/dist/src/webgl/GLFrameBuffer.d.ts +45 -0
  28. package/dist/src/webgl/GLGPUBuffer.d.ts +27 -0
  29. package/dist/src/webgl/GLGPUCapability.d.ts +32 -0
  30. package/dist/src/webgl/GLGPURenderer.d.ts +57 -0
  31. package/dist/src/webgl/GLGeometry.d.ts +52 -0
  32. package/dist/src/webgl/GLMaterial.d.ts +15 -0
  33. package/dist/src/webgl/GLProgram.d.ts +42 -0
  34. package/dist/src/webgl/GLRenderBuffer.d.ts +22 -0
  35. package/dist/src/webgl/GLShaderLibrary.d.ts +33 -0
  36. package/dist/src/webgl/GLTexture.d.ts +35 -0
  37. package/dist/src/webgl/GLUniformUtils.d.ts +42 -0
  38. package/dist/src/webgl/GLVertexArrayObject.d.ts +11 -0
  39. package/dist/src/webgl/KhronosTextureContainer.d.ts +25 -0
  40. package/dist/src/webgl/WebGLState.d.ts +285 -0
  41. package/dist/src/webgl/constants.d.ts +4 -0
  42. package/dist/src/webgl/glType.d.ts +8 -0
  43. package/dist/statistic.js +406 -0
  44. package/dist/statistic.js.map +1 -0
  45. package/dist/types/Camera.d.ts +12 -0
  46. package/dist/types/Canvas.d.ts +12 -0
  47. package/dist/types/GPUBuffer.d.ts +54 -0
  48. package/dist/types/GPUCapability.d.ts +50 -0
  49. package/dist/types/Geometry.d.ts +142 -0
  50. package/dist/types/IGPURenderer.d.ts +14 -0
  51. package/dist/types/Material.d.ts +156 -0
  52. package/dist/types/Mesh.d.ts +50 -0
  53. package/dist/types/RenderFrame.d.ts +50 -0
  54. package/dist/types/RenderPass.d.ts +156 -0
  55. package/dist/types/Renderer.d.ts +52 -0
  56. package/dist/types/Scene.d.ts +48 -0
  57. package/dist/types/ShaderLibrary.d.ts +78 -0
  58. package/dist/types/Texture.d.ts +212 -0
  59. package/dist/types/constants.d.ts +6 -0
  60. package/dist/types/index.d.ts +26 -0
  61. package/dist/types/type.d.ts +37 -0
  62. package/package.json +54 -0
@@ -0,0 +1,52 @@
1
+ import type { AttributeWithType } from '../../types/Geometry';
2
+ import type { GPUBuffer, GPUBufferOptions } from '../../types/GPUBuffer';
3
+ import { GLGPUBuffer } from './GLGPUBuffer';
4
+ import type { GLGPURenderer } from './GLGPURenderer';
5
+ import type { RenderState } from '../../types/RenderFrame';
6
+ import type { GLVertexArrayObject } from './GLVertexArrayObject';
7
+ export declare const INDEX_TYPE_MAP: {
8
+ [x: number]: number;
9
+ };
10
+ export type GLGeometryOptions = {
11
+ drawStart: number;
12
+ drawCount: number;
13
+ attributes: {
14
+ [key: string]: AttributeWithType;
15
+ };
16
+ buffers: {
17
+ [key: string]: GPUBufferOptions;
18
+ };
19
+ mode: GLenum;
20
+ index?: GPUBufferOptions;
21
+ name: string;
22
+ vaoMap?: Record<string, GLVertexArrayObject | undefined>;
23
+ };
24
+ /**
25
+ * GLGeometry对象,保存GLGPUBuffer对象。
26
+ *
27
+ */
28
+ export declare class GLGeometry {
29
+ name?: string;
30
+ renderer?: GLGPURenderer | undefined;
31
+ drawStart: number;
32
+ drawCount: number;
33
+ mode: GLenum;
34
+ attributes: {
35
+ [key: string]: AttributeWithType;
36
+ };
37
+ _buffersMap: {
38
+ [key: string]: GLGPUBuffer;
39
+ };
40
+ _indexBuffer?: GLGPUBuffer;
41
+ readonly vaoMap: Record<string, GLVertexArrayObject | undefined>;
42
+ constructor(option: GLGeometryOptions | GLGeometry, renderer: GLGPURenderer);
43
+ createVao(name: string): GLVertexArrayObject;
44
+ destroyVao(name: string): void;
45
+ setIndexBuffer(buffer: GLGPUBuffer): void;
46
+ createIndexBuffer(data: Uint16Array | Uint32Array | Uint8Array, renderer: GLGPURenderer): GLGPUBuffer;
47
+ getGPUBuffer(name: string | number): GLGPUBuffer | null;
48
+ destroy(): void;
49
+ setAttributeBuffer(name: string, buffer: GPUBuffer): void;
50
+ getAttributeBuffer(name: string): GPUBuffer | null;
51
+ draw(state: RenderState): void;
52
+ }
@@ -0,0 +1,15 @@
1
+ import type { MaterialRenderStates } from '../../types/Material';
2
+ import type { GLGPURenderer } from './GLGPURenderer';
3
+ import type { MarsMaterial } from '../render/MarsMaterial';
4
+ import type { Immutable } from '../../types/type';
5
+ import type { GLProgram } from './GLProgram';
6
+ export declare class GLMaterial {
7
+ readonly renderer: GLGPURenderer;
8
+ readonly shaderCacheId: string;
9
+ readonly states: Immutable<MaterialRenderStates>;
10
+ readonly material: MarsMaterial;
11
+ constructor(renderer: GLGPURenderer, material: MarsMaterial);
12
+ setupStates(): void;
13
+ getProgram(): GLProgram | null;
14
+ destroy(): void;
15
+ }
@@ -0,0 +1,42 @@
1
+ import type { GLGPURenderer } from './GLGPURenderer';
2
+ import type { GLGeometry } from './GLGeometry';
3
+ import type { RenderState } from '../../types/RenderFrame';
4
+ import type { GLVertexArrayObject } from './GLVertexArrayObject';
5
+ import type { UniformBlockSpec } from './GLUniformUtils';
6
+ export interface ProgramAttributeInfo {
7
+ readonly name: string;
8
+ readonly size: number;
9
+ readonly type: number;
10
+ readonly loc: number;
11
+ }
12
+ export interface ProgramUniformInfo {
13
+ readonly loc: WebGLUniformLocation;
14
+ readonly subInfos: ProgramUniformInfo[];
15
+ readonly name: string;
16
+ readonly size: number;
17
+ readonly type: number;
18
+ readonly textureIndex: number;
19
+ readonly isTexture: boolean;
20
+ }
21
+ export declare class GLProgram {
22
+ readonly glHandle: WebGLProgram;
23
+ readonly renderer: GLGPURenderer;
24
+ readonly shared: boolean;
25
+ readonly id: string;
26
+ readonly _vaos: GLVertexArrayObject[];
27
+ readonly uniformBlockMap: Record<string, UniformBlockSpec>;
28
+ attrInfoMap: {
29
+ [key: string]: ProgramAttributeInfo;
30
+ };
31
+ uniformInfoMap: {
32
+ [key: string]: ProgramUniformInfo;
33
+ };
34
+ private _uniformBlocks;
35
+ constructor(renderer: GLGPURenderer, program: WebGLProgram, shared: boolean, id: string);
36
+ init(renderer: GLGPURenderer, program: WebGLProgram): void;
37
+ bind(): void;
38
+ setupUniforms(state: RenderState): void;
39
+ setGLUniformValue(name: string, value: any, info: ProgramUniformInfo, gl: WebGL2RenderingContext | WebGLRenderingContext): void;
40
+ setupAttributes(geometry: GLGeometry): GLVertexArrayObject;
41
+ destroy(): void;
42
+ }
@@ -0,0 +1,22 @@
1
+ import type { RenderPassStorageObject, RenderPassAttachmentStorageType } from '../../types/RenderPass';
2
+ import type { GLGPURenderer } from './GLGPURenderer';
3
+ interface GLRenderBufferOptions {
4
+ storageType: RenderPassAttachmentStorageType;
5
+ format: GLenum;
6
+ attachment: GLenum;
7
+ }
8
+ export declare class GLRenderBuffer implements RenderPassStorageObject {
9
+ readonly renderer: GLGPURenderer;
10
+ readonly storageType: RenderPassAttachmentStorageType;
11
+ readonly internalFormat: GLenum;
12
+ readonly glHandle: WebGLRenderbuffer;
13
+ readonly size: [x: number, y: number];
14
+ readonly ready: boolean;
15
+ readonly format: GLenum;
16
+ readonly attachment: GLenum;
17
+ readonly multiSample: number;
18
+ constructor(renderer: GLGPURenderer, options: GLRenderBufferOptions);
19
+ setSize(width: number, height: number): GLRenderBuffer;
20
+ destroy(): void;
21
+ }
22
+ export {};
@@ -0,0 +1,33 @@
1
+ import type { ShaderCompileResult, ShaderLibrary, ShaderWithSource } from '../../types/ShaderLibrary';
2
+ import type { GLGPURenderer } from './GLGPURenderer';
3
+ import { GLProgram } from './GLProgram';
4
+ interface GLShaderCompileResult extends ShaderCompileResult {
5
+ program?: WebGLProgram;
6
+ }
7
+ declare enum ShaderType {
8
+ vertex = 0,
9
+ fragment = 1
10
+ }
11
+ export declare class GLShaderLibrary implements ShaderLibrary {
12
+ readonly renderer: GLGPURenderer;
13
+ readonly shaderResults: {
14
+ [p: string]: ShaderCompileResult;
15
+ };
16
+ private _shaderMap;
17
+ private _programMap;
18
+ private _glVertShaderMap;
19
+ private _glFragShaderMap;
20
+ private readonly _glAsyncCompileExt?;
21
+ private _shaderAllDone;
22
+ constructor(renderer: GLGPURenderer);
23
+ compileAllShaders(asyncCallback?: (results: ShaderCompileResult[]) => void): void;
24
+ getProgram(shaderCacheId: string): GLProgram | null;
25
+ addMarcosHeader(header: string, shader: string, type: ShaderType, downgrade?: boolean): string;
26
+ addShader(shader: ShaderWithSource): string;
27
+ compileShader(shaderCacheId: string, asyncCallback?: (result: ShaderCompileResult) => void): ShaderCompileResult;
28
+ createProgram(gl: WebGLRenderingContext, vs: string, fs: string, result: GLShaderCompileResult): () => (WebGLProgram | null);
29
+ createShader(gl: WebGLRenderingContext, shaderType: GLenum, code: string): WebGLShader | null;
30
+ deleteShader(cacheId: string): void;
31
+ destroy(): void;
32
+ }
33
+ export {};
@@ -0,0 +1,35 @@
1
+ import type { TextureConfigOptions, TextureOptions, TextureSourceOptions } from '../../types/Texture';
2
+ import type { GLGPURenderer } from './GLGPURenderer';
3
+ import type { TypedArray, vec2 } from '../../types/type';
4
+ type HTMLImageLike = ImageBitmap | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement;
5
+ type GLContext = WebGLRenderingContext | WebGL2RenderingContext;
6
+ export declare const imageBitMapAvailable: boolean;
7
+ export declare class GLTexture {
8
+ readonly renderer?: GLGPURenderer;
9
+ readonly glHandle: WebGLTexture | null;
10
+ readonly options: TextureOptions;
11
+ readonly target: GLenum;
12
+ readonly gpuInfo: [format: number, type: number, target: number, mipmaps: vec2[]];
13
+ width: number;
14
+ height: number;
15
+ _mipmapUsed: boolean;
16
+ constructor(option: TextureOptions, renderer: GLGPURenderer);
17
+ setInspectorName(name: string): void;
18
+ errorLog(): void;
19
+ update(source: TextureSourceOptions): void;
20
+ setTextureFilters(gl: GLContext, target: GLenum, options: TextureConfigOptions): void;
21
+ texImage2D(gl: GLContext, target: GLenum, level: number, internalformat: GLenum, format: GLenum, type: GLenum, image: HTMLImageLike): vec2;
22
+ flipImageBitmap(bitmap: ImageBitmap): HTMLCanvasElement;
23
+ texImage2DData(gl: GLContext, target: GLenum, level: number, internalformat: GLenum, format: GLenum, type: GLenum, data: {
24
+ data: TypedArray;
25
+ width: number;
26
+ height: number;
27
+ }): vec2;
28
+ resizeImage(image: HTMLImageLike, targetWidth?: number, targetHeight?: number): HTMLCanvasElement | HTMLImageElement;
29
+ offloadData(): void;
30
+ destroy(): void;
31
+ _assignRenderer(renderer: GLGPURenderer): void;
32
+ }
33
+ export declare function nearestPowerOfTwo(value: number): number;
34
+ export declare function isPowerOfTwo(value: number): boolean;
35
+ export {};
@@ -0,0 +1,42 @@
1
+ import type { GLGPURenderer } from './GLGPURenderer';
2
+ import type { TypedArray, UniformValue, vec2 } from '../../types';
3
+ import { GLGPUBuffer } from './GLGPUBuffer';
4
+ export interface UniformBlockSpec {
5
+ index: number;
6
+ usedByVertexShader: boolean;
7
+ usedByFragmentShader: boolean;
8
+ size: number;
9
+ uniformIndices: number[];
10
+ used: boolean;
11
+ name: string;
12
+ uniforms: Record<string, BlockUniformInfo>;
13
+ id: string;
14
+ }
15
+ type BlockUniformInfo = [
16
+ type: number,
17
+ offset: number,
18
+ size: number,
19
+ blockIndex: number,
20
+ arrayStride: number,
21
+ maxStride: number,
22
+ rowMajor: number,
23
+ index: number,
24
+ byteLength: number
25
+ ];
26
+ export declare function createUniformBlockSpecsFromProgram(gl: WebGL2RenderingContext, program: WebGLProgram, blockUniformNames: string[]): UniformBlockSpec[];
27
+ interface UBODirtyFlag {
28
+ start: number;
29
+ dirty: boolean;
30
+ buffer?: TypedArray;
31
+ }
32
+ export declare class UniformBlockBuffer {
33
+ buffer?: GLGPUBuffer;
34
+ info: UniformBlockSpec;
35
+ dirtyFlags: Record<string, UBODirtyFlag>;
36
+ keepData: boolean;
37
+ constructor(renderer: GLGPURenderer, info: UniformBlockSpec);
38
+ setValues(uniformValues: Record<string, UniformValue>, dirtyFlags: Record<string, boolean>, uniformValueOffsets: Record<string, vec2>): void;
39
+ bind(gl: WebGL2RenderingContext, program: WebGLProgram, bufferBindIndex: number): void;
40
+ destroy(): void;
41
+ }
42
+ export {};
@@ -0,0 +1,11 @@
1
+ import type { GLGPURenderer } from './GLGPURenderer';
2
+ export declare function createVAO(renderer: GLGPURenderer, name?: string): GLVertexArrayObject | undefined;
3
+ export declare class GLVertexArrayObject {
4
+ readonly renderer: GLGPURenderer;
5
+ readonly vao: WebGLVertexArrayObject;
6
+ ready: boolean;
7
+ constructor(renderer: GLGPURenderer, name?: string);
8
+ destroy(): void;
9
+ bind(): void;
10
+ unbind(): void;
11
+ }
@@ -0,0 +1,25 @@
1
+ import type { TextureOptions, TypedArray } from '../../types';
2
+ export declare class KhronosTextureContainer {
3
+ arrayBuffer: ArrayBuffer;
4
+ baseOffset: number;
5
+ glType: number;
6
+ glTypeSize: number;
7
+ glFormat: number;
8
+ glInternalFormat: number;
9
+ glBaseInternalFormat: number;
10
+ pixelWidth: number;
11
+ pixelHeight: number;
12
+ loadType: number;
13
+ pixelDepth: number;
14
+ numberOfArrayElements: number;
15
+ numberOfFaces: number;
16
+ numberOfMipmapLevels: number;
17
+ bytesOfKeyValueData: number;
18
+ constructor(arrayBuffer: ArrayBuffer, facesExpected: number, baseOffset?: number);
19
+ mipmaps(loadMipmaps: boolean): Array<{
20
+ data: TypedArray;
21
+ width: number;
22
+ height: number;
23
+ }>;
24
+ }
25
+ export declare function getCompressedTextureOptions(data: ArrayBuffer): TextureOptions;
@@ -0,0 +1,285 @@
1
+ export declare class WebGLState {
2
+ noCache: boolean;
3
+ readonly _gl: WebGLRenderingContext | WebGL2RenderingContext;
4
+ private _dict;
5
+ private _currentFramebuffer;
6
+ private _currentTextureBinding;
7
+ private _currentRenderBuffer;
8
+ private _activeTextureIndex;
9
+ private readonly _maxTextureCount;
10
+ private _pixelStorei;
11
+ _textureUnitDict: {
12
+ [key: string]: WebGLTexture | null;
13
+ };
14
+ bindingVAO?: WebGLVertexArrayObject;
15
+ constructor(gl: WebGLRenderingContext | WebGL2RenderingContext);
16
+ destroy(): void;
17
+ private _reset;
18
+ toggle(capability: GLenum, enable?: boolean): void;
19
+ /**
20
+ * 对于该上下文开启某种特性
21
+ * @param capability
22
+ * example:
23
+ * gl.enable(gl.DITHER);
24
+ */
25
+ enable(capability: GLenum): void;
26
+ /**
27
+ * 基于某种上下文关闭特性
28
+ * @param capability
29
+ * example:
30
+ * gl.disable(gl.DITHER);
31
+ */
32
+ disable(capability: GLenum): void;
33
+ /**
34
+ * 绑定framebuffer webgl2新增: gl.DRAW_FRAMEBUFFER 和 gl.READ_FRAMEBUFFER
35
+ * @param target
36
+ * @param framebuffer
37
+ * example:
38
+ * const framebuffer = gl.createFramebuffer();
39
+ * gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
40
+ */
41
+ bindFramebuffer(target: GLenum, framebuffer: WebGLFramebuffer | null): void;
42
+ bindRenderBuffer(target: GLenum, renderBuffer: WebGLRenderbuffer | null): void;
43
+ /**
44
+ * 绑定系统framebuffer
45
+ */
46
+ bindSystemFramebuffer(): void;
47
+ /**
48
+ * 将定义好的WebGLProgram 对象添加到当前的渲染状态中。
49
+ * @param program
50
+ * example:
51
+ * gl.useProgram(program);
52
+ * gl.useProgram(null);
53
+ */
54
+ useProgram(program: WebGLProgram | null): void;
55
+ /**
56
+ * 使用预设值来清空缓冲
57
+ * @param mask
58
+ * example:
59
+ * gl.clear(gl.DEPTH_BUFFER_BIT);
60
+ * gl.clear(gl.DEPTH_BUFFER_BIT | gl.COLOR_BUFFER_BIT);
61
+ */
62
+ clear(mask: number): void;
63
+ /**
64
+ * 设置深度缓冲区的深度清除值
65
+ * @param depth
66
+ * example:
67
+ * gl.clearDepth(0.5);
68
+ */
69
+ clearDepth(depth: GLclampf): void;
70
+ /**
71
+ * 指定将输入像素深度与当前深度缓冲区值进行比较的函数。
72
+ * @param func
73
+ * example:
74
+ * gl.enable(gl.DEPTH_TEST);
75
+ * gl.depthFunc(gl.NEVER);
76
+ */
77
+ depthFunc(func: GLenum): void;
78
+ /**
79
+ * 设置是否启用写入深度缓冲。
80
+ * @param flag
81
+ * example:
82
+ * gl.depthMask(false);
83
+ */
84
+ depthMask(flag: boolean): void;
85
+ polygonOffset(factor: number, unit: number): void;
86
+ /**
87
+ * 将 z 值从规范化设备坐标映射到窗口坐标
88
+ * @param zNear
89
+ * @param zFar
90
+ * example:
91
+ * gl.depthRange(0.2, 0.6);
92
+ */
93
+ depthRange(zNear: number, zFar: number): void;
94
+ /**
95
+ * 模版测试设置函数和引用值。
96
+ * @param func
97
+ * @param ref
98
+ * @param mask
99
+ * example:
100
+ * gl.enable(gl.STENCIL_TEST);
101
+ * gl.stencilFunc(gl.LESS, 0, 0b1110011);
102
+ */
103
+ clearStencil(s: GLint): void;
104
+ /**
105
+ * 控制启用和禁用模板平面中单个位的正面和背面写入
106
+ * @param mask
107
+ * example:
108
+ * gl.stencilMask(0xff);
109
+ */
110
+ stencilMask(mask: number): void;
111
+ /**
112
+ * 模版测试设置函数和引用值。
113
+ * @param func
114
+ * @param ref
115
+ * @param mask
116
+ * example:
117
+ * gl.enable(gl.STENCIL_TEST);
118
+ * gl.stencilFunc(gl.LESS, 0, 0b1110011);
119
+ */
120
+ stencilFunc(func: GLenum, ref: GLint, mask: GLuint): void;
121
+ /**
122
+ * 单面模版测试
123
+ * @param face
124
+ * @param func
125
+ * @param ref
126
+ * @param mask
127
+ * example:
128
+ * gl.enable(gl.STENCIL_TEST);
129
+ * gl.stencilFuncSeparate(gl.FRONT, gl.LESS, 0.2, 1110011);
130
+ */
131
+ stencilFuncSeparate(face: GLenum, func: GLenum, ref: GLint, mask: GLuint): void;
132
+ /**
133
+ * 单面的mask写入
134
+ * @param face
135
+ * @param mask
136
+ * example:
137
+ * gl.stencilMaskSeparate(gl.FRONT, 110101);
138
+ */
139
+ stencilMaskSeparate(face: GLenum, mask: GLuint): void;
140
+ /**
141
+ * 设置正面和背面模板测试操作
142
+ * @param fail
143
+ * @param zfail
144
+ * @param zpass
145
+ * example:
146
+ * gl.enable(gl.STENCIL_TEST);
147
+ * gl.stencilOp(gl.INCR, gl.DECR, gl.INVERT);
148
+ */
149
+ stencilOp(fail: GLenum, zfail: GLenum, zpass: GLenum): void;
150
+ /**
151
+ * 设置正面和/或背面模板测试操作
152
+ * @param face
153
+ * @param fail
154
+ * @param zfail
155
+ * @param zpass
156
+ * example:
157
+ * gl.enable(gl.STENCIL_TEST);
158
+ * gl.stencilOpSeparate(gl.FRONT, gl.INCR, gl.DECR, gl.INVERT);
159
+ */
160
+ stencilOpSeparate(face: GLenum, fail: GLenum, zfail: GLenum, zpass: GLenum): void;
161
+ /**
162
+ * 剔除方式
163
+ * @param mode
164
+ * example:
165
+ * gl.enable(gl.CULL_FACE);
166
+ * gl.cullFace(gl.FRONT_AND_BACK);
167
+ */
168
+ cullFace(mode: GLenum): void;
169
+ /**
170
+ * 设置卷绕方向
171
+ * @param mode
172
+ * example:
173
+ * gl.frontFace(gl.CW);
174
+ */
175
+ frontFace(mode: GLenum): void;
176
+ /**
177
+ * 设置颜色写入
178
+ * @param red
179
+ * @param green
180
+ * @param blue
181
+ * @param alpha
182
+ * example:
183
+ * gl.colorMask(true, true, true, false);
184
+ */
185
+ clearColor(red: GLclampf, green: GLclampf, blue: GLclampf, alpha: GLclampf): void;
186
+ /**
187
+ * 设置颜色写入
188
+ * @param red
189
+ * @param green
190
+ * @param blue
191
+ * @param alpha
192
+ * example:
193
+ * gl.colorMask(true, true, true, false);
194
+ */
195
+ colorMask(red: boolean, green: boolean, blue: boolean, alpha: boolean): void;
196
+ /**
197
+ * 设置源和目标混合因子
198
+ * @param red
199
+ * @param green
200
+ * @param blue
201
+ * @param alpha
202
+ * example:
203
+ * gl.blendColor(0, 0.5, 1, 1);
204
+ */
205
+ blendColor(red: GLclampf, green: GLclampf, blue: GLclampf, alpha: GLclampf): void;
206
+ /**
207
+ * 用于混合像素算法
208
+ * @param sfactor
209
+ * @param dfactor
210
+ * example:
211
+ * gl.enable(gl.BLEND);
212
+ * gl.blendFunc(gl.SRC_COLOR, gl.DST_COLOR);
213
+ */
214
+ blendFunc(sfactor: GLenum, dfactor: GLenum): void;
215
+ /**
216
+ * 分别设置应用在 RGB 和 Alpha 上的 factor
217
+ * @param srcRGB
218
+ * @param dstRGB
219
+ * @param srcAlpha
220
+ * @param dstAlpha
221
+ * example:
222
+ * gl.enable(gl.BLEND);
223
+ * gl.blendFuncSeparate(gl.SRC_COLOR, gl.DST_COLOR, gl.ONE, gl.ZERO);
224
+ */
225
+ blendFuncSeparate(srcRGB: GLenum, dstRGB: GLenum, srcAlpha: GLenum, dstAlpha: GLenum): void;
226
+ /**
227
+ * 设置混合模式
228
+ * @param mode
229
+ * example:
230
+ * gl.blendEquation(gl.FUNC_ADD);
231
+ * gl.blendEquation(gl.FUNC_SUBTRACT);
232
+ * gl.blendEquation(gl.FUNC_REVERSE_SUBTRACT);
233
+ */
234
+ blendEquation(mode: GLenum): void;
235
+ /**
236
+ * 可以分别对 RGB 和 Alpha 做不同的操作处理
237
+ * @param modeRGB
238
+ * @param modeAlpha
239
+ * example:
240
+ * gl.blendEquationSeparate(gl.FUNC_ADD, gl.FUNC_SUBTRACT);
241
+ */
242
+ blendEquationSeparate(modeRGB: GLenum, modeAlpha: GLenum): void;
243
+ /**
244
+ * 图像预处理
245
+ * @param pname
246
+ * @param param
247
+ * example:
248
+ * var tex = gl.createTexture();
249
+ * gl.bindTexture(gl.TEXTURE_2D, tex);
250
+ * gl.pixelStorei(gl.PACK_ALIGNMENT, 4);
251
+ */
252
+ pixelStorei(pname: GLenum, param: GLenum): void;
253
+ /**
254
+ * 用来设置视口,即指定从标准设备到窗口坐标的x、y仿射变换。
255
+ * @param x
256
+ * @param y
257
+ * @param width
258
+ * @param height
259
+ * example:
260
+ * gl.viewport(0, 0, width, height);
261
+ */
262
+ viewport(x: number, y: number, width: number, height: number): void;
263
+ /**
264
+ * 激活指定的纹理单元
265
+ * @param texture
266
+ * example:
267
+ * gl.activeTexture(gl.TEXTURE1);
268
+ */
269
+ activeTexture(texture: GLenum): void;
270
+ /**
271
+ * 绑定WebGLTexture
272
+ * @param target
273
+ * @param texture
274
+ * @param force
275
+ * example:
276
+ * var texture = gl.createTexture();
277
+ * gl.bindTexture(gl.TEXTURE_2D, texture)
278
+ */
279
+ bindTexture(target: GLenum, texture: WebGLTexture | null, force?: boolean): void;
280
+ private _set1;
281
+ private _set2;
282
+ private _set3;
283
+ private _set4;
284
+ get(name: string): any;
285
+ }
@@ -0,0 +1,4 @@
1
+ import type { TypedArray } from '../../types/type';
2
+ export declare let constants: WebGL2RenderingContext;
3
+ export declare function createTypedArrayByGLType(type: number, elementCount: number | ArrayBuffer): TypedArray;
4
+ export declare function getBytesPerElementByGLType(type: number): number;
@@ -0,0 +1,8 @@
1
+ import type { ProgramUniformInfo } from './GLProgram';
2
+ import type { GLGPURenderer } from './GLGPURenderer';
3
+ export declare const DATA_DICT: {
4
+ [k: string | number]: {
5
+ name: number;
6
+ uniform: (gl: WebGL2RenderingContext | WebGLRenderingContext, info: ProgramUniformInfo, value: any, renderer: GLGPURenderer) => void;
7
+ };
8
+ };