@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.
- package/dist/index.js +5545 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +5524 -0
- package/dist/index.mjs.map +1 -0
- package/dist/src/common/console.d.ts +3 -0
- package/dist/src/common/env.d.ts +1 -0
- package/dist/src/common/raf.d.ts +2 -0
- package/dist/src/common/request.d.ts +10 -0
- package/dist/src/common/utils.d.ts +14 -0
- package/dist/src/index.d.ts +17 -0
- package/dist/src/render/MarsExtWrap.d.ts +15 -0
- package/dist/src/render/MarsGPUCapability.d.ts +2 -0
- package/dist/src/render/MarsGeometry.d.ts +64 -0
- package/dist/src/render/MarsMaterial.d.ts +29 -0
- package/dist/src/render/MarsMaterialDataBlock.d.ts +37 -0
- package/dist/src/render/MarsMesh.d.ts +24 -0
- package/dist/src/render/MarsRenderFrame.d.ts +22 -0
- package/dist/src/render/MarsRenderPass.d.ts +51 -0
- package/dist/src/render/MarsRenderPassColorAttachment.d.ts +27 -0
- package/dist/src/render/MarsRenderer.d.ts +20 -0
- package/dist/src/render/MarsSemanticMap.d.ts +10 -0
- package/dist/src/render/MarsSharedGeometry.d.ts +13 -0
- package/dist/src/render/MarsTexture.d.ts +29 -0
- package/dist/src/render/MarsTextureFactory.d.ts +20 -0
- package/dist/src/render/RenderFrameInternal.d.ts +8 -0
- package/dist/src/statistic/index.d.ts +20 -0
- package/dist/src/webgl/GLFrameBuffer.d.ts +45 -0
- package/dist/src/webgl/GLGPUBuffer.d.ts +27 -0
- package/dist/src/webgl/GLGPUCapability.d.ts +32 -0
- package/dist/src/webgl/GLGPURenderer.d.ts +57 -0
- package/dist/src/webgl/GLGeometry.d.ts +52 -0
- package/dist/src/webgl/GLMaterial.d.ts +15 -0
- package/dist/src/webgl/GLProgram.d.ts +42 -0
- package/dist/src/webgl/GLRenderBuffer.d.ts +22 -0
- package/dist/src/webgl/GLShaderLibrary.d.ts +33 -0
- package/dist/src/webgl/GLTexture.d.ts +35 -0
- package/dist/src/webgl/GLUniformUtils.d.ts +42 -0
- package/dist/src/webgl/GLVertexArrayObject.d.ts +11 -0
- package/dist/src/webgl/KhronosTextureContainer.d.ts +25 -0
- package/dist/src/webgl/WebGLState.d.ts +285 -0
- package/dist/src/webgl/constants.d.ts +4 -0
- package/dist/src/webgl/glType.d.ts +8 -0
- package/dist/statistic.js +406 -0
- package/dist/statistic.js.map +1 -0
- package/dist/types/Camera.d.ts +12 -0
- package/dist/types/Canvas.d.ts +12 -0
- package/dist/types/GPUBuffer.d.ts +54 -0
- package/dist/types/GPUCapability.d.ts +50 -0
- package/dist/types/Geometry.d.ts +142 -0
- package/dist/types/IGPURenderer.d.ts +14 -0
- package/dist/types/Material.d.ts +156 -0
- package/dist/types/Mesh.d.ts +50 -0
- package/dist/types/RenderFrame.d.ts +50 -0
- package/dist/types/RenderPass.d.ts +156 -0
- package/dist/types/Renderer.d.ts +52 -0
- package/dist/types/Scene.d.ts +48 -0
- package/dist/types/ShaderLibrary.d.ts +78 -0
- package/dist/types/Texture.d.ts +212 -0
- package/dist/types/constants.d.ts +6 -0
- package/dist/types/index.d.ts +26 -0
- package/dist/types/type.d.ts +37 -0
- 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
|
+
};
|