@predy-js/render-interface 0.1.61-beta.1 → 0.1.61-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +2 -4
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/dist/statistic.js +1 -1
- package/dist/types/ShaderLibrary.d.ts +4 -4
- package/package.json +2 -3
- package/types/Canvas.ts +0 -20
- package/types/GPUBuffer.ts +0 -85
- package/types/GPUCapability.ts +0 -67
- package/types/Geometry.ts +0 -186
- package/types/IGPURenderer.ts +0 -18
- package/types/Material.ts +0 -190
- package/types/Mesh.ts +0 -82
- package/types/RenderFrame.ts +0 -70
- package/types/RenderPass.ts +0 -222
- package/types/Renderer.ts +0 -62
- package/types/ShaderLibrary.ts +0 -128
- package/types/Texture.ts +0 -236
- package/types/constants.ts +0 -7
- package/types/index.ts +0 -37
- package/types/native/DataBlockInternal.ts +0 -35
- package/types/native/GPUBufferInternal.ts +0 -46
- package/types/native/GeometryInternal.ts +0 -55
- package/types/native/ImageBitmapInternal.ts +0 -28
- package/types/native/MaterialInternal.ts +0 -31
- package/types/native/MeshInternal.ts +0 -25
- package/types/native/RenderFrameInternal.ts +0 -34
- package/types/native/RenderPassInternal.ts +0 -69
- package/types/native/RendererInternal.ts +0 -66
- package/types/native/ResourceInternal.ts +0 -12
- package/types/native/ShaderLibraryInternal.ts +0 -19
- package/types/native/TextureInternal.ts +0 -53
- package/types/native/index.ts +0 -12
- package/types/type.ts +0 -30
package/dist/statistic.js
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
export type Shader = ShaderWithSource | ShaderUseCacheId;
|
2
2
|
export type ShaderWithSource = InstancedShaderWithSource | SharedShaderWithSource;
|
3
3
|
export interface MetaShaderSpec {
|
4
|
-
mtlBinary?: ArrayBuffer
|
4
|
+
mtlBinary?: ArrayBuffer;
|
5
5
|
mtlSource?: string;
|
6
6
|
mtlVertex?: string;
|
7
7
|
mtlFragment?: string;
|
@@ -51,9 +51,9 @@ export interface ShaderLibrary {
|
|
51
51
|
readonly cacheIds: string[];
|
52
52
|
getShaderResult(cacheId: string): ShaderCompileResult | undefined;
|
53
53
|
/**
|
54
|
-
|
55
|
-
|
56
|
-
|
54
|
+
* 添加shader
|
55
|
+
* @param shader
|
56
|
+
*/
|
57
57
|
addShader(shader: Shader): string;
|
58
58
|
/**
|
59
59
|
* @param cacheId
|
package/package.json
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
{
|
2
2
|
"name": "@predy-js/render-interface",
|
3
|
-
"version": "0.1.61-beta.
|
3
|
+
"version": "0.1.61-beta.3",
|
4
4
|
"license": "MIT",
|
5
5
|
"module": "./dist/index.mjs",
|
6
6
|
"main": "./dist/index.js",
|
7
7
|
"types": "./dist/types/index.d.ts",
|
8
8
|
"files": [
|
9
|
-
"dist"
|
10
|
-
"types"
|
9
|
+
"dist"
|
11
10
|
],
|
12
11
|
"publishConfig": {
|
13
12
|
"access": "public"
|
package/types/Canvas.ts
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
export interface Canvas {
|
2
|
-
width: number,
|
3
|
-
height: number,
|
4
|
-
|
5
|
-
addEventListener(name: string, handler: Function): void,
|
6
|
-
|
7
|
-
removeEventListener(name: string, handler: Function): void,
|
8
|
-
|
9
|
-
}
|
10
|
-
|
11
|
-
export class CanvasEmpty implements Canvas {
|
12
|
-
width = 0;
|
13
|
-
height = 0;
|
14
|
-
|
15
|
-
addEventListener (name: string, handler: Function) {
|
16
|
-
}
|
17
|
-
|
18
|
-
removeEventListener (name: string, handler: Function) {
|
19
|
-
}
|
20
|
-
}
|
package/types/GPUBuffer.ts
DELETED
@@ -1,85 +0,0 @@
|
|
1
|
-
import type { TypedArray } from './type';
|
2
|
-
import type { IGPUResource, IGPURenderer } from './IGPURenderer';
|
3
|
-
import type { GPURenderer } from './Renderer';
|
4
|
-
|
5
|
-
export type GPUBufferTarget =
|
6
|
-
| WebGLRenderingContext['ARRAY_BUFFER']
|
7
|
-
| WebGLRenderingContext['ELEMENT_ARRAY_BUFFER']
|
8
|
-
| WebGL2RenderingContext['COPY_READ_BUFFER']
|
9
|
-
| WebGL2RenderingContext['COPY_WRITE_BUFFER']
|
10
|
-
| WebGL2RenderingContext['TRANSFORM_FEEDBACK_BUFFER']
|
11
|
-
| WebGL2RenderingContext['UNIFORM_BUFFER']
|
12
|
-
| WebGL2RenderingContext['PIXEL_PACK_BUFFER']
|
13
|
-
| WebGL2RenderingContext['PIXEL_UNPACK_BUFFER'];
|
14
|
-
|
15
|
-
type GPUBufferType = WebGLRenderingContext['FLOAT'] | WebGLRenderingContext['INT'] | WebGLRenderingContext['SHORT'];
|
16
|
-
export interface GPUBufferOptions {
|
17
|
-
name?: string,
|
18
|
-
|
19
|
-
target?: GPUBufferTarget,
|
20
|
-
|
21
|
-
type?: GPUBufferType,
|
22
|
-
/**
|
23
|
-
* 数据元素的总量
|
24
|
-
*/
|
25
|
-
elementCount?: number,
|
26
|
-
|
27
|
-
data?: TypedArray,
|
28
|
-
|
29
|
-
usage?: WebGLRenderingContext['STATIC_DRAW'] | WebGLRenderingContext['DYNAMIC_DRAW'],
|
30
|
-
}
|
31
|
-
|
32
|
-
/**
|
33
|
-
* GPU的Buffer对象,通过JS ArrayBuffer,可以向其中写入数据
|
34
|
-
* JS调用写入数据后,会立即执行GPU写入的操作,此类型不会保存JS的ArrayBuffer对象
|
35
|
-
*
|
36
|
-
*/
|
37
|
-
export declare class GPUBuffer implements IGPUResource {
|
38
|
-
readonly renderer?: IGPURenderer;
|
39
|
-
|
40
|
-
readonly isDestroyed: boolean;
|
41
|
-
|
42
|
-
readonly level: number;
|
43
|
-
|
44
|
-
readonly target: GPUBufferTarget;
|
45
|
-
|
46
|
-
readonly type: GPUBufferOptions['type'];
|
47
|
-
|
48
|
-
readonly byteLength: number;
|
49
|
-
|
50
|
-
readonly bytesPerElement: number;
|
51
|
-
|
52
|
-
destroy (): void;
|
53
|
-
|
54
|
-
constructor (options: GPUBufferOptions, renderer?: IGPURenderer);
|
55
|
-
|
56
|
-
/**
|
57
|
-
* 数据元素的总量
|
58
|
-
*/
|
59
|
-
readonly elementCount: number;
|
60
|
-
|
61
|
-
/**
|
62
|
-
* 根据TypedArray容量,重新分配Buffer内存
|
63
|
-
* @param typedArray
|
64
|
-
*/
|
65
|
-
bufferData (typedArray: TypedArray): void;
|
66
|
-
|
67
|
-
/**
|
68
|
-
* 更新buffer数据,立即写入GPU中
|
69
|
-
* @param elementOffset 从buffer的第几个元素开始
|
70
|
-
* @param typedArray 要写入的数据
|
71
|
-
*/
|
72
|
-
|
73
|
-
bufferSubData (elementOffset: number, typedArray: TypedArray): void;
|
74
|
-
|
75
|
-
/**
|
76
|
-
* 将数据从GPU中读出,写入到传入的typedArray中,只有当level为2时才能成功,webgl下此函数永远不会成功
|
77
|
-
* @param elementOffset 从第几个元素开始拷贝,默认为 0
|
78
|
-
* @param typedArray 要写入的typedArray
|
79
|
-
* @param elementCount 要写入多少个元素,如果不传入,则为typedArray元素长度
|
80
|
-
*/
|
81
|
-
readSubData (elementOffset: number, typedArray: TypedArray, elementCount?: number): boolean;
|
82
|
-
|
83
|
-
assignRenderer (renderer: GPURenderer): GPUBuffer;
|
84
|
-
}
|
85
|
-
|
package/types/GPUCapability.ts
DELETED
@@ -1,67 +0,0 @@
|
|
1
|
-
import type { Immutable } from './type';
|
2
|
-
|
3
|
-
export const COMPRESSED_TEXTURE_NONE = 0;
|
4
|
-
export const COMPRESSED_TEXTURE_PVRTC = 1;
|
5
|
-
export const COMPRESSED_TEXTURE_ASTC = 2;
|
6
|
-
|
7
|
-
export interface GPUCapabilityDetail {
|
8
|
-
maxSample: number,
|
9
|
-
floatTexture: number,
|
10
|
-
halfFloatTexture: number,
|
11
|
-
//set currentPass color attachment type FLOAT
|
12
|
-
floatColorAttachment?: boolean,
|
13
|
-
//set currentPass color attachment type HALF_FLOAT
|
14
|
-
halfFloatColorAttachment?: boolean,
|
15
|
-
maxVertexUniforms: number,
|
16
|
-
maxVertexTextures: number,
|
17
|
-
maxFragmentUniforms: number,
|
18
|
-
maxFragmentTextures: number,
|
19
|
-
maxShaderTexCount: number,
|
20
|
-
maxTextureSize: number,
|
21
|
-
maxTextureAnisotropy: number,
|
22
|
-
compressedTexture: number,
|
23
|
-
shaderTextureLod: boolean,
|
24
|
-
instanceDraw?: boolean,
|
25
|
-
drawBuffers?: boolean,
|
26
|
-
asyncShaderCompile?: boolean,
|
27
|
-
//draw elements use uint32 Array
|
28
|
-
intIndexElementBuffer?: boolean,
|
29
|
-
//render pass depth and stencil texture readable
|
30
|
-
//in webgl, if not readable,use RenderBuffer which cannot readable
|
31
|
-
readableDepthStencilTextures?: boolean,
|
32
|
-
writableFragDepth?: boolean,
|
33
|
-
}
|
34
|
-
|
35
|
-
export interface GPUCapability {
|
36
|
-
type: 'webgl' | 'webgl2' | 'native-gl' | 'node-gl' | 'metal' | 'none',
|
37
|
-
level: number,
|
38
|
-
capability: Immutable<GPUCapabilityDetail>,
|
39
|
-
|
40
|
-
setup (gl: WebGLRenderingContext): void,
|
41
|
-
}
|
42
|
-
|
43
|
-
export class GPUCapabilityEmpty implements GPUCapability {
|
44
|
-
type: 'webgl' | 'webgl2' | 'native-gl' | 'node-gl' | 'metal' | 'none';
|
45
|
-
level = 0;
|
46
|
-
capability = {
|
47
|
-
maxSample: 0,
|
48
|
-
floatTexture: 0,
|
49
|
-
halfFloatTexture: 0,
|
50
|
-
maxVertexUniforms: 0,
|
51
|
-
maxVertexTextures: 0,
|
52
|
-
maxFragmentUniforms: 0,
|
53
|
-
maxFragmentTextures: 0,
|
54
|
-
maxTextureSize: 0,
|
55
|
-
maxShaderTexCount:0,
|
56
|
-
maxTextureAnisotropy: 0,
|
57
|
-
compressedTexture: 0,
|
58
|
-
shaderTextureLod: false,
|
59
|
-
};
|
60
|
-
|
61
|
-
constructor () {
|
62
|
-
this.type = 'none';
|
63
|
-
}
|
64
|
-
|
65
|
-
setup (gl: WebGLRenderingContext) {
|
66
|
-
}
|
67
|
-
}
|
package/types/Geometry.ts
DELETED
@@ -1,186 +0,0 @@
|
|
1
|
-
import type { GPUBuffer } from './GPUBuffer';
|
2
|
-
import type { IGPUResource, IGPURenderer } from './IGPURenderer';
|
3
|
-
import type { Immutable, TypedArray } from './type';
|
4
|
-
import type { GPURenderer } from './Renderer';
|
5
|
-
|
6
|
-
/**
|
7
|
-
* Attribute binding information,
|
8
|
-
* size:attribute size. the size attribute of vec4|vec3|vec2 is 4|3|2
|
9
|
-
* stride:used for interleaved attributes, 2 vec4 stride is 4 * 2 * Float32Array.BYTES_PER_ELEMENTS
|
10
|
-
* offset: offset for interleaved attributes, 1 vec4 offset is 4 * Float32Array.BYTES_PER_ELEMENTS
|
11
|
-
* normalize: attributed should be normalized
|
12
|
-
* location: attribute location
|
13
|
-
* Attribute的绑定信息
|
14
|
-
* size:向量的大小,vec4|vec3|vec2的大小分别为 4|3|2
|
15
|
-
* stride:如果使用交错存储顶点,2个vec4的stride为 2 * 4 * Float32Array.BYTES_PER_ELEMENTS
|
16
|
-
* offset:交错顶点的数据偏移,1个vec4的偏移为 4*Float32Array.BYTES_PER_ELEMENTS
|
17
|
-
* location: attribute location 可以通过GL反射获得,Metal必须填写
|
18
|
-
*/
|
19
|
-
export interface AttributeBase {
|
20
|
-
|
21
|
-
size: number,
|
22
|
-
|
23
|
-
stride?: number,
|
24
|
-
|
25
|
-
offset?: number,
|
26
|
-
|
27
|
-
instanceDivisor?: number,
|
28
|
-
|
29
|
-
normalize?: boolean,
|
30
|
-
|
31
|
-
location?: number,
|
32
|
-
}
|
33
|
-
|
34
|
-
/**
|
35
|
-
* if data provided, type can be inferred from its data
|
36
|
-
* if data not provided, type will be FLOAT by default
|
37
|
-
* releasable is false by default,
|
38
|
-
* if releasable set true, geometry.getAttributeData will return null after data send to gpu buffer
|
39
|
-
* 如果有data字段,type会根据数据进行推断
|
40
|
-
* 如果没有data字段,type默认为FLOAT
|
41
|
-
* releasable默认为false,如果为true,在数据被提交到gpu buffer后geometry.getAttributeData方法返回null
|
42
|
-
*/
|
43
|
-
export interface AttributeWithData extends AttributeBase {
|
44
|
-
data?: TypedArray,
|
45
|
-
releasable?: boolean,
|
46
|
-
type?: WebGLRenderingContext['FLOAT'] | WebGLRenderingContext['INT'] | WebGLRenderingContext['SHORT'],
|
47
|
-
}
|
48
|
-
|
49
|
-
export interface AttributeWithType extends AttributeBase {
|
50
|
-
/**
|
51
|
-
* 如果使用interleaved attribute,此字段表示数据共享的attribute
|
52
|
-
*/
|
53
|
-
dataSource: string,
|
54
|
-
type: WebGLRenderingContext['FLOAT'] | WebGLRenderingContext['INT'] | WebGLRenderingContext['SHORT'],
|
55
|
-
}
|
56
|
-
|
57
|
-
export interface AttributeWithDataSource extends AttributeBase {
|
58
|
-
/**
|
59
|
-
* 如果使用interleaved attribute,此字段表示数据共享的attribute
|
60
|
-
*/
|
61
|
-
dataSource: string,
|
62
|
-
/**
|
63
|
-
* use FLOAT by default
|
64
|
-
*/
|
65
|
-
type?: WebGLRenderingContext['FLOAT'] | WebGLRenderingContext['INT'] | WebGLRenderingContext['SHORT'],
|
66
|
-
}
|
67
|
-
|
68
|
-
export type Attribute = AttributeWithData | AttributeWithType | AttributeWithDataSource;
|
69
|
-
|
70
|
-
export type GeometryDrawMode =
|
71
|
-
WebGLRenderingContext['POINTS']
|
72
|
-
| WebGLRenderingContext['TRIANGLES']
|
73
|
-
| WebGLRenderingContext['TRIANGLE_STRIP']
|
74
|
-
| WebGLRenderingContext['TRIANGLE_FAN']
|
75
|
-
| WebGLRenderingContext['LINES']
|
76
|
-
| WebGLRenderingContext['LINE_STRIP']
|
77
|
-
| WebGLRenderingContext['LINE_LOOP'];
|
78
|
-
|
79
|
-
export interface GeometryOptions {
|
80
|
-
name?: string,
|
81
|
-
|
82
|
-
attributes: { [key: string]: Attribute },
|
83
|
-
|
84
|
-
index?: { data: Uint8Array | Uint16Array | Uint32Array, releasable?: boolean },
|
85
|
-
|
86
|
-
mode?: GeometryDrawMode,
|
87
|
-
|
88
|
-
drawCount?: number,
|
89
|
-
|
90
|
-
drawStart?: number,
|
91
|
-
|
92
|
-
bufferUsage?: GLenum,
|
93
|
-
}
|
94
|
-
|
95
|
-
export declare class Geometry implements IGPUResource {
|
96
|
-
|
97
|
-
readonly renderer?: IGPURenderer;
|
98
|
-
|
99
|
-
/**
|
100
|
-
* 集合体的attribute信息,只读
|
101
|
-
*/
|
102
|
-
readonly attributes?: Immutable<{ [key: string]: Attribute }>;
|
103
|
-
|
104
|
-
readonly isDestroyed: boolean;
|
105
|
-
|
106
|
-
readonly options?: Immutable<GeometryOptions>;
|
107
|
-
|
108
|
-
drawStart: number;
|
109
|
-
|
110
|
-
drawCount: number;
|
111
|
-
|
112
|
-
mode: number;
|
113
|
-
|
114
|
-
constructor (options: GeometryOptions, renderer?: IGPURenderer);
|
115
|
-
|
116
|
-
assignRenderer (renderer: GPURenderer): Geometry;
|
117
|
-
|
118
|
-
destroy (): void;
|
119
|
-
|
120
|
-
setAttributeBuffer (name: string, buffer: GPUBuffer): void;
|
121
|
-
|
122
|
-
getAttributeBuffer (name: string): GPUBuffer | undefined;
|
123
|
-
|
124
|
-
/**
|
125
|
-
* Attribute的实际数据尺寸,如果没有配置stride,则通过attribute size和attribute数据类型进行计算
|
126
|
-
* @param name
|
127
|
-
*/
|
128
|
-
getAttributeStride (name: string): number;
|
129
|
-
|
130
|
-
setAttributeData (name: string, data: TypedArray): void;
|
131
|
-
|
132
|
-
getAttributeData (name: string): TypedArray | undefined;
|
133
|
-
|
134
|
-
setAttributeSubData (name: string, offset: number, data: TypedArray): void;
|
135
|
-
|
136
|
-
getIndexData (): Uint8Array | Uint16Array | Uint32Array | undefined;
|
137
|
-
|
138
|
-
setIndexData (data: Uint8Array | Uint16Array | Uint32Array | undefined): void;
|
139
|
-
|
140
|
-
setIndexSubData (offset: number, data: TypedArray): void;
|
141
|
-
|
142
|
-
/**
|
143
|
-
* 获取Attribute的数据内存长度
|
144
|
-
* 如果此Attribute设置了其他dataSource则返回 0
|
145
|
-
* 无论是否设置了attribute releasable,此函数总是返回实际数据长度
|
146
|
-
* @param name
|
147
|
-
*/
|
148
|
-
getAttributeDataLength (name: string): number;
|
149
|
-
|
150
|
-
// attribute names without indexBuffer
|
151
|
-
getAttributeNames (): string[];
|
152
|
-
|
153
|
-
/**
|
154
|
-
* 数据写入的指令被缓存到JS中,在调用此函数后,所有JS数据指令开始调用对应的GPU函数
|
155
|
-
* 如果geometry对象没有进行GPU对象绑定,此函数不会成功
|
156
|
-
*/
|
157
|
-
flush (): boolean;
|
158
|
-
|
159
|
-
}
|
160
|
-
|
161
|
-
export interface SharedGeometryOptions {
|
162
|
-
name?: string,
|
163
|
-
|
164
|
-
drawStart?: number,
|
165
|
-
|
166
|
-
drawCount?: number,
|
167
|
-
|
168
|
-
mode?: number,
|
169
|
-
|
170
|
-
index?: { data: Uint8Array | Uint16Array | Uint32Array, releasable?: boolean },
|
171
|
-
|
172
|
-
geometry: Geometry,
|
173
|
-
}
|
174
|
-
|
175
|
-
/**
|
176
|
-
* 重用Geometry的vao对象,可以进行indexBuffer的修改
|
177
|
-
*/
|
178
|
-
export declare class SharedGeometry extends Geometry {
|
179
|
-
/**
|
180
|
-
* clone geometry with same gpu buffers,
|
181
|
-
* if geometry renderer not assigned,this method returns void
|
182
|
-
* @param options
|
183
|
-
* @param renderer
|
184
|
-
*/
|
185
|
-
constructor (options: SharedGeometryOptions, renderer?: IGPURenderer);
|
186
|
-
}
|
package/types/IGPURenderer.ts
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
export interface IGPURenderer {
|
2
|
-
readonly width: number,
|
3
|
-
readonly height: number,
|
4
|
-
}
|
5
|
-
|
6
|
-
export interface IGPUResource {
|
7
|
-
/**
|
8
|
-
* 大部分的JS数据对象创建不依赖于GPU接口,数据被存储在JS对象中,
|
9
|
-
* 当接收到GPU接口时,创建对应的GPU对象
|
10
|
-
*/
|
11
|
-
readonly renderer?: IGPURenderer,
|
12
|
-
|
13
|
-
readonly isDestroyed: boolean,
|
14
|
-
|
15
|
-
assignRenderer(renderer: IGPURenderer): IGPUResource,
|
16
|
-
|
17
|
-
destroy(): void,
|
18
|
-
}
|
package/types/Material.ts
DELETED
@@ -1,190 +0,0 @@
|
|
1
|
-
import type { Texture } from './Texture';
|
2
|
-
import type { ShaderUseCacheId, ShaderWithSource } from './ShaderLibrary';
|
3
|
-
import type { IGPUResource, IGPURenderer } from './IGPURenderer';
|
4
|
-
import type { Immutable, TypedArray } from './type';
|
5
|
-
import type { GPURenderer } from './Renderer';
|
6
|
-
import type { DestroyOptions } from './constants';
|
7
|
-
|
8
|
-
export type UniformSemantic =
|
9
|
-
| 'VIEW'
|
10
|
-
| 'MODEL'
|
11
|
-
| 'MODELVIEW'
|
12
|
-
| 'PROJECTION'
|
13
|
-
| 'VIEWPROJECTION'
|
14
|
-
| 'MODELVIEWPROJECTION'
|
15
|
-
| string;
|
16
|
-
|
17
|
-
export interface MaterialRenderStates {
|
18
|
-
sampleAlphaToCoverage?: boolean,
|
19
|
-
blending?: boolean,
|
20
|
-
blendEquationRGB?: number,
|
21
|
-
blendEquationAlpha?: number,
|
22
|
-
blendDstAlpha?: number,
|
23
|
-
blendSrcAlpha?: number,
|
24
|
-
blendSrc?: number,
|
25
|
-
blendDst?: number,
|
26
|
-
/**
|
27
|
-
* The blend color is a state value,
|
28
|
-
* like the blend equations and blend parameters. Therefore,
|
29
|
-
* it cannot change within a single draw call;
|
30
|
-
* fragment shaders cannot write to, modify,
|
31
|
-
* or even access the blend color.
|
32
|
-
* All buffers share the same blend color.
|
33
|
-
*/
|
34
|
-
blendColor?: [r: number, g: number, b: number, a: number],
|
35
|
-
colorMask?: [r: boolean, g: boolean, b: boolean, a: boolean],
|
36
|
-
depthTest?: boolean,
|
37
|
-
depthMask?: boolean,
|
38
|
-
depthFunc?: number,
|
39
|
-
depthRange?: [zNear: number, zFar: number],
|
40
|
-
cullFace?: number,
|
41
|
-
cullFaceEnabled?: boolean,
|
42
|
-
frontFace?: number,
|
43
|
-
stencilTest?: boolean,
|
44
|
-
stencilMask?: number,
|
45
|
-
stencilMaskBack?: number,
|
46
|
-
stencilMaskFront?: number,
|
47
|
-
stencilFunc?: [func: GLenum, ref: GLint, mask: GLuint],
|
48
|
-
stencilFuncBack?: [func: GLenum, ref: GLint, mask: GLuint],
|
49
|
-
stencilFuncFront?: [func: GLenum, ref: GLint, mask: GLuint],
|
50
|
-
stencilOp?: [fail: GLenum, zfail: GLenum, zpass: GLenum],
|
51
|
-
stencilOpBack?: [fail: GLenum, zfail: GLenum, zpass: GLenum],
|
52
|
-
stencilOpFront?: [fail: GLenum, zfail: GLenum, zpass: GLenum],
|
53
|
-
polygonOffset?: [factor: number, units: number],
|
54
|
-
polygonOffsetFill?: boolean,
|
55
|
-
}
|
56
|
-
|
57
|
-
export const enum MaterialRenderType {
|
58
|
-
normal = 0,
|
59
|
-
}
|
60
|
-
|
61
|
-
export interface MaterialOptions {
|
62
|
-
states: MaterialRenderStates,
|
63
|
-
shader: ShaderWithSource | ShaderUseCacheId,
|
64
|
-
name?: string,
|
65
|
-
dataBlocks?: MaterialDataBlockOptions[],
|
66
|
-
uniformSemantics?: { [key: string]: UniformSemantic },
|
67
|
-
uniformValues?: { [key: string]: UniformValue },
|
68
|
-
}
|
69
|
-
|
70
|
-
//使用shader即时编译,此参数会调用 shaderLibrary.addShader() 为 Material提供shaderCacheId属性值,
|
71
|
-
//利用shaderCacheId,可以在渲染前进行编译,或者第一次渲染时自动编译
|
72
|
-
/**
|
73
|
-
* @example
|
74
|
-
* const mtl0 = new Material({
|
75
|
-
* shader:{
|
76
|
-
* fragment:'...',
|
77
|
-
* vertex:'...',
|
78
|
-
* shaderCacheId:'mtl_01'
|
79
|
-
* }});
|
80
|
-
* console.log(mtl.shaderCacheId) // expect to be a none empty string
|
81
|
-
*/
|
82
|
-
|
83
|
-
//使用提前编译的shader进行绘制,传递提前编译的shaderCacheId
|
84
|
-
/**
|
85
|
-
* @example
|
86
|
-
* const mtl0 = new Material({
|
87
|
-
* shader:{
|
88
|
-
* fragment:'...',
|
89
|
-
* vertex:'...',
|
90
|
-
* cacheId:'mtl_01'
|
91
|
-
* }});
|
92
|
-
*
|
93
|
-
* const mtl2 = new Material({
|
94
|
-
* shader:{
|
95
|
-
* cacheId:'mtl_01'
|
96
|
-
* }
|
97
|
-
* });
|
98
|
-
* mtl2 use the same program with mtl0
|
99
|
-
*/
|
100
|
-
export type UniformValueDataType = TypedArray | number | number[] | Texture | Texture[] | number[][];
|
101
|
-
// 支持结构体Uniform数据
|
102
|
-
export type UniformValue =
|
103
|
-
UniformValueDataType
|
104
|
-
| UniformStruct
|
105
|
-
| UniformStruct[];
|
106
|
-
|
107
|
-
export type UniformStruct = { [key: string]: UniformValueDataType };
|
108
|
-
|
109
|
-
export interface MaterialDestroyOptions {
|
110
|
-
textures?: DestroyOptions,
|
111
|
-
blocks?: DestroyOptions,
|
112
|
-
}
|
113
|
-
|
114
|
-
export declare class Material implements IGPUResource {
|
115
|
-
|
116
|
-
readonly renderer?: IGPURenderer;
|
117
|
-
|
118
|
-
readonly name: string;
|
119
|
-
|
120
|
-
readonly defaultDataBlock: MaterialDataBlock;
|
121
|
-
|
122
|
-
readonly dataBlocks: MaterialDataBlock[];
|
123
|
-
|
124
|
-
readonly options: Immutable<MaterialOptions>;
|
125
|
-
|
126
|
-
readonly shaderCacheId: string;
|
127
|
-
|
128
|
-
readonly states: Immutable<MaterialRenderStates>;
|
129
|
-
|
130
|
-
readonly isDestroyed: boolean;
|
131
|
-
|
132
|
-
constructor (options: MaterialOptions);
|
133
|
-
|
134
|
-
addDataBlock (b: MaterialDataBlock): void;
|
135
|
-
|
136
|
-
removeDataBlock (b: MaterialDataBlock): void;
|
137
|
-
|
138
|
-
destroy (options?: MaterialDestroyOptions): void;
|
139
|
-
|
140
|
-
setUniformSemantic (uniformName: string, semantic: string | undefined): void;
|
141
|
-
|
142
|
-
assignRenderer (renderer: GPURenderer): Material;
|
143
|
-
}
|
144
|
-
|
145
|
-
export interface MaterialDataBlockOptions {
|
146
|
-
uniformValues?: { [key: string]: UniformValue },
|
147
|
-
name?: string,
|
148
|
-
}
|
149
|
-
|
150
|
-
export interface MaterialDataBlockDestroyOptions {
|
151
|
-
textures?: DestroyOptions,
|
152
|
-
}
|
153
|
-
|
154
|
-
export declare class MaterialDataBlock implements IGPUResource {
|
155
|
-
|
156
|
-
readonly renderer?: IGPURenderer;
|
157
|
-
|
158
|
-
readonly isDestroyed: boolean;
|
159
|
-
|
160
|
-
readonly name: string;
|
161
|
-
|
162
|
-
constructor (options: MaterialDataBlockOptions);
|
163
|
-
|
164
|
-
hasUniformValue (name: string): boolean;
|
165
|
-
|
166
|
-
setUniformValue (name: string, value: UniformValue): boolean;
|
167
|
-
|
168
|
-
getUniformValue (name: string): UniformValue;
|
169
|
-
|
170
|
-
getUniformValues (): { [key: string]: UniformValue };
|
171
|
-
|
172
|
-
setUniformValues (map: { [key: string]: UniformValue }): void;
|
173
|
-
|
174
|
-
/**
|
175
|
-
* indicate uniform data should be resent to GPU, but not the full range,
|
176
|
-
* only works for ubo,if not an ubo, this method has no side effect
|
177
|
-
* offset and count are counted by typed entry, not the number elements
|
178
|
-
* entry means matrix or vector in shader
|
179
|
-
* @param name uniform name
|
180
|
-
* @param offset entry offset,first entry to send to gpu, default 0
|
181
|
-
* @param count entry count,entry count to send to gpu,default to end
|
182
|
-
*/
|
183
|
-
updateUniformSubData (name: string, offset: number, count: number): void;
|
184
|
-
|
185
|
-
destroy (options?: MaterialDataBlockDestroyOptions): void;
|
186
|
-
|
187
|
-
assignRenderer (renderer: GPURenderer): MaterialDataBlock;
|
188
|
-
|
189
|
-
clone (name: string): MaterialDataBlock;
|
190
|
-
}
|
package/types/Mesh.ts
DELETED
@@ -1,82 +0,0 @@
|
|
1
|
-
import type {
|
2
|
-
Material, MaterialDestroyOptions, MaterialOptions,
|
3
|
-
} from './Material';
|
4
|
-
import type { Geometry, GeometryOptions } from './Geometry';
|
5
|
-
import type { IGPUResource, IGPURenderer } from './IGPURenderer';
|
6
|
-
import type { GPURenderer } from './Renderer';
|
7
|
-
import type { DestroyOptions } from './constants';
|
8
|
-
|
9
|
-
interface MeshOptionsBase {
|
10
|
-
material: Material | MaterialOptions,
|
11
|
-
name?: string,
|
12
|
-
priority?: number,
|
13
|
-
}
|
14
|
-
|
15
|
-
export interface GeometryMeshOptions extends MeshOptionsBase {
|
16
|
-
geometry: Geometry | GeometryOptions,
|
17
|
-
}
|
18
|
-
|
19
|
-
export interface GeometriesMeshOptions extends MeshOptionsBase {
|
20
|
-
geometries: Array<Geometry | GeometryOptions>,
|
21
|
-
}
|
22
|
-
|
23
|
-
export type MeshOptions = GeometryMeshOptions | GeometriesMeshOptions;
|
24
|
-
|
25
|
-
export type MeshDestroyOptions = {
|
26
|
-
geometries?: DestroyOptions,
|
27
|
-
material?: MaterialDestroyOptions | DestroyOptions.keep,
|
28
|
-
};
|
29
|
-
|
30
|
-
export declare class Mesh implements IGPUResource {
|
31
|
-
|
32
|
-
readonly renderer?: IGPURenderer;
|
33
|
-
|
34
|
-
readonly isDestroyed: boolean;
|
35
|
-
|
36
|
-
readonly name: string;
|
37
|
-
|
38
|
-
readonly geometries: Geometry[];
|
39
|
-
|
40
|
-
// first geometry
|
41
|
-
readonly geometry?: Geometry;
|
42
|
-
|
43
|
-
readonly material: Material;
|
44
|
-
|
45
|
-
public hide: boolean;
|
46
|
-
|
47
|
-
public priority: number;
|
48
|
-
|
49
|
-
constructor (options: MeshOptions, renderer?: IGPURenderer);
|
50
|
-
|
51
|
-
/**
|
52
|
-
* update geometries
|
53
|
-
* @param geos geometries to update
|
54
|
-
* @param destroyGeometries whether to destroy previous geometries,default is true
|
55
|
-
*/
|
56
|
-
setGeometries (geos: Geometry[], destroyGeometries?: DestroyOptions): void;
|
57
|
-
|
58
|
-
/**
|
59
|
-
* update material
|
60
|
-
* @param mtl material to update
|
61
|
-
* @param destroyMtl whether to destroy previous material, set true equals MaterialDestroyOptions { all:true }
|
62
|
-
*/
|
63
|
-
setMaterial (mtl: Material | MaterialOptions, destroyMtl?: MaterialDestroyOptions | DestroyOptions.keep): void;
|
64
|
-
|
65
|
-
destroy (options?: MeshDestroyOptions): void;
|
66
|
-
|
67
|
-
assignRenderer (renderer: GPURenderer): Mesh;
|
68
|
-
}
|
69
|
-
|
70
|
-
export interface InstancedGeometryMeshOptions extends GeometryMeshOptions {
|
71
|
-
instanceCount: number,
|
72
|
-
}
|
73
|
-
|
74
|
-
export interface InstancedGeometriesMeshOptions extends GeometriesMeshOptions {
|
75
|
-
instanceCount: number,
|
76
|
-
}
|
77
|
-
|
78
|
-
export type InstancedMeshOptions = InstancedGeometryMeshOptions | InstancedGeometriesMeshOptions;
|
79
|
-
export declare class InstancedMesh extends Mesh {
|
80
|
-
public instanceCount: number;
|
81
|
-
constructor (options: InstancedMeshOptions, renderer?: IGPURenderer);
|
82
|
-
}
|