@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/statistic.js CHANGED
@@ -2,7 +2,7 @@
2
2
  * Name: @predy-js/render-interface
3
3
  * Description: undefined
4
4
  * Author: undefined
5
- * Version: v0.1.61-beta.1
5
+ * Version: v0.1.61-beta.3
6
6
  */
7
7
 
8
8
  // https://github.com/greggman/webgl-memory/blob/main/src/texture-utils.js
@@ -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 | string;
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
- * 添加shader
55
- * @param shader
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.1",
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
- }
@@ -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
-
@@ -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
- }
@@ -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
- }