@predy-js/render-interface 0.1.61-beta.20 → 0.1.61-beta.22

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.
@@ -26,7 +26,7 @@ export declare class MarsGeometry implements Geometry {
26
26
  _dirtyFlags: {
27
27
  [key: string]: BufferDirtyFlag;
28
28
  };
29
- _index?: Uint8Array | Uint16Array | Uint32Array;
29
+ _index?: Uint16Array | Uint32Array;
30
30
  _indexReleasable: boolean;
31
31
  readonly internal: GLGeometry;
32
32
  readonly options?: GeometryOptions;
@@ -35,6 +35,7 @@ export declare class MarsGeometry implements Geometry {
35
35
  protected _drawStart: number;
36
36
  protected _mode: number;
37
37
  protected _isDestroyed: boolean;
38
+ indexDataType: number;
38
39
  get isDestroyed(): boolean;
39
40
  get mode(): number;
40
41
  set mode(n: number);
@@ -52,8 +53,8 @@ export declare class MarsGeometry implements Geometry {
52
53
  setAttributeData(name: string, data: TypedArray): void;
53
54
  getAttributeData(name: string): TypedArray | undefined;
54
55
  setAttributeSubData(name: string, offset: number, data: TypedArray): void;
55
- getIndexData(): Uint8Array | Uint16Array | Uint32Array | undefined;
56
- setIndexData(data: Uint8Array | Uint16Array | Uint32Array | undefined): void;
56
+ getIndexData(): Uint16Array | Uint32Array | undefined;
57
+ setIndexData(data: Uint16Array | Uint32Array | undefined): void;
57
58
  setIndexSubData(offset: number, data: TypedArray): void;
58
59
  getAttributeStride(name: string): number;
59
60
  getAttributeDataLength(name: string): number;
@@ -3,18 +3,15 @@ import type { GLGPURenderer } from './GLGPURenderer';
3
3
  import type { TypedArray } from '../../types/type';
4
4
  import type { MarsRenderer } from '../render/MarsRenderer';
5
5
  export declare class GLGPUBuffer implements GPUBuffer {
6
- readonly bytesPerElement: number;
7
- readonly target: GPUBufferTarget;
8
- readonly type: WebGLRenderingContext['FLOAT'] | WebGLRenderingContext['INT'] | WebGLRenderingContext['SHORT'];
9
6
  readonly usage: WebGLRenderingContext['STATIC_DRAW'] | WebGLRenderingContext['DYNAMIC_DRAW'] | WebGLRenderingContext['STREAM_DRAW'];
10
7
  readonly renderer?: GLGPURenderer;
11
8
  readonly glBuffer: WebGLBuffer | null;
9
+ readonly target: GPUBufferTarget;
12
10
  private _byteLength;
13
11
  private _isDestroyed;
14
12
  readonly name: string;
15
13
  get byteLength(): number;
16
14
  get isBuffer(): boolean;
17
- get elementCount(): number;
18
15
  get level(): number;
19
16
  get isDestroyed(): boolean;
20
17
  constructor(options: GPUBufferOptions, renderer: GLGPURenderer);
@@ -23,5 +20,6 @@ export declare class GLGPUBuffer implements GPUBuffer {
23
20
  bufferSubData(elementOffset: number, typedArray: TypedArray): void;
24
21
  destroy(): void;
25
22
  readSubData(elementOffset: number, typedArray: TypedArray): boolean;
23
+ getElementCount(bytePerElement: number): number;
26
24
  assignRenderer(renderer: MarsRenderer): GLGPUBuffer;
27
25
  }
@@ -26,6 +26,8 @@ export declare class GLGPURenderer implements GPURenderer {
26
26
  private _isDestroyed;
27
27
  extension: RendererExtensions;
28
28
  constructor(gl: WebGLRenderingContext | WebGL2RenderingContext);
29
+ requestAnimationFrame(cb: FrameRequestCallback): number;
30
+ cancelAnimationFrame(id: number): void;
29
31
  get isDestroyed(): boolean;
30
32
  onContextLose: (e: Event) => void;
31
33
  copy2(source: GLTexture, target: GLTexture): void;
@@ -7,6 +7,9 @@ import type { GLVertexArrayObject } from './GLVertexArrayObject';
7
7
  export declare const INDEX_TYPE_MAP: {
8
8
  [x: number]: number;
9
9
  };
10
+ export declare const TYPE_BYTE_MAP: {
11
+ [x: number]: number;
12
+ };
10
13
  export type GLGeometryOptions = {
11
14
  drawStart: number;
12
15
  drawCount: number;
@@ -31,6 +34,7 @@ export declare class GLGeometry {
31
34
  drawStart: number;
32
35
  drawCount: number;
33
36
  mode: GLenum;
37
+ indexBufferType: GLenum;
34
38
  attributes: {
35
39
  [key: string]: AttributeWithType;
36
40
  };
@@ -42,8 +46,8 @@ export declare class GLGeometry {
42
46
  constructor(option: GLGeometryOptions | GLGeometry, renderer: GLGPURenderer);
43
47
  createVao(name: string): GLVertexArrayObject;
44
48
  destroyVao(name: string): void;
45
- setIndexBuffer(buffer: GLGPUBuffer): void;
46
- createIndexBuffer(data: Uint16Array | Uint32Array | Uint8Array, renderer: GLGPURenderer): GLGPUBuffer;
49
+ setIndexBuffer(buffer: GLGPUBuffer, indexBufferType: GLenum): void;
50
+ createIndexBuffer(data: Uint16Array | Uint32Array | Uint8Array, renderer: GLGPURenderer): [buffer: GLGPUBuffer, type: GLenum];
47
51
  getGPUBuffer(name: string | number): GLGPUBuffer | null;
48
52
  destroy(): void;
49
53
  setAttributeBuffer(name: string, buffer: GPUBuffer): void;
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.20
5
+ * Version: v0.1.61-beta.22
6
6
  */
7
7
 
8
8
  // https://github.com/greggman/webgl-memory/blob/main/src/texture-utils.js
@@ -1,17 +1,22 @@
1
1
  import type { TypedArray } from './type';
2
2
  import type { IGPUResource, IGPURenderer } from './IGPURenderer';
3
3
  import type { GPURenderer } from './Renderer';
4
+ export declare const GPUBufferOptionsMemoryShared: number;
4
5
  export type GPUBufferTarget = WebGLRenderingContext['ARRAY_BUFFER'] | WebGLRenderingContext['ELEMENT_ARRAY_BUFFER'] | WebGL2RenderingContext['COPY_READ_BUFFER'] | WebGL2RenderingContext['COPY_WRITE_BUFFER'] | WebGL2RenderingContext['TRANSFORM_FEEDBACK_BUFFER'] | WebGL2RenderingContext['UNIFORM_BUFFER'] | WebGL2RenderingContext['PIXEL_PACK_BUFFER'] | WebGL2RenderingContext['PIXEL_UNPACK_BUFFER'];
5
- type GPUBufferType = WebGLRenderingContext['FLOAT'] | WebGLRenderingContext['INT'] | WebGLRenderingContext['SHORT'];
6
6
  export interface GPUBufferOptions {
7
7
  name?: string;
8
- target?: GPUBufferTarget;
9
- type?: GPUBufferType;
10
8
  /**
11
- * 数据元素的总量
9
+ * 数据长度,如果提供了data,忽略此参数
12
10
  */
13
- elementCount?: number;
11
+ byteLength?: number;
14
12
  data?: TypedArray;
13
+ /**
14
+ * GL需要设置,Vulkan和Metal此属性忽略
15
+ */
16
+ target?: GPUBufferTarget;
17
+ /**
18
+ * GL需要设置,Vulkan和Metal此属性忽略
19
+ */
15
20
  usage?: WebGLRenderingContext['STATIC_DRAW'] | WebGLRenderingContext['DYNAMIC_DRAW'];
16
21
  }
17
22
  /**
@@ -23,16 +28,11 @@ export declare class GPUBuffer implements IGPUResource {
23
28
  readonly renderer?: IGPURenderer;
24
29
  readonly isDestroyed: boolean;
25
30
  readonly level: number;
26
- readonly target: GPUBufferTarget;
27
- readonly type: GPUBufferOptions['type'];
28
31
  readonly byteLength: number;
29
- readonly bytesPerElement: number;
30
- destroy(): void;
32
+ readonly target: GPUBufferTarget;
33
+ readonly usage?: WebGLRenderingContext['STATIC_DRAW'] | WebGLRenderingContext['DYNAMIC_DRAW'];
31
34
  constructor(options: GPUBufferOptions, renderer?: IGPURenderer);
32
- /**
33
- * 数据元素的总量
34
- */
35
- readonly elementCount: number;
35
+ getElementCount(bytePerElement: number): number;
36
36
  /**
37
37
  * 根据TypedArray容量,重新分配Buffer内存
38
38
  * @param typedArray
@@ -52,5 +52,5 @@ export declare class GPUBuffer implements IGPUResource {
52
52
  */
53
53
  readSubData(elementOffset: number, typedArray: TypedArray, elementCount?: number): boolean;
54
54
  assignRenderer(renderer: GPURenderer): GPUBuffer;
55
+ destroy(): void;
55
56
  }
56
- export {};
@@ -62,7 +62,7 @@ export interface GeometryOptions {
62
62
  [key: string]: Attribute;
63
63
  };
64
64
  index?: {
65
- data: Uint8Array | Uint16Array | Uint32Array;
65
+ data: GeometryIndexData;
66
66
  releasable?: boolean;
67
67
  };
68
68
  mode?: GeometryDrawMode;
@@ -70,6 +70,10 @@ export interface GeometryOptions {
70
70
  drawStart?: number;
71
71
  bufferUsage?: GLenum;
72
72
  }
73
+ /**
74
+ * 不兼容Uint8的Index,只能使用Uin16和Uin32
75
+ */
76
+ export type GeometryIndexData = Uint16Array | Uint32Array;
73
77
  export declare class Geometry implements IGPUResource {
74
78
  readonly renderer?: IGPURenderer;
75
79
  /**
@@ -80,6 +84,7 @@ export declare class Geometry implements IGPUResource {
80
84
  }>;
81
85
  readonly isDestroyed: boolean;
82
86
  readonly options?: Immutable<GeometryOptions>;
87
+ indexDataType?: WebGLRenderingContext['UNSIGNED_INT'] | WebGLRenderingContext['UNSIGNED_SHORT'];
83
88
  drawStart: number;
84
89
  drawCount: number;
85
90
  mode: number;
@@ -96,8 +101,8 @@ export declare class Geometry implements IGPUResource {
96
101
  setAttributeData(name: string, data: TypedArray): void;
97
102
  getAttributeData(name: string): TypedArray | undefined;
98
103
  setAttributeSubData(name: string, offset: number, data: TypedArray): void;
99
- getIndexData(): Uint8Array | Uint16Array | Uint32Array | undefined;
100
- setIndexData(data: Uint8Array | Uint16Array | Uint32Array | undefined): void;
104
+ getIndexData(): GeometryIndexData | undefined;
105
+ setIndexData(data: GeometryIndexData | undefined): void;
101
106
  setIndexSubData(offset: number, data: TypedArray): void;
102
107
  /**
103
108
  * 获取Attribute的数据内存长度
@@ -119,7 +124,7 @@ export interface SharedGeometryOptions {
119
124
  drawCount?: number;
120
125
  mode?: number;
121
126
  index?: {
122
- data: Uint8Array | Uint16Array | Uint32Array;
127
+ data: GeometryIndexData;
123
128
  releasable?: boolean;
124
129
  };
125
130
  geometry: Geometry;
@@ -1,6 +1,6 @@
1
1
  import type { ResourceInternal } from './ResourceInternal';
2
2
  import type { TypedArray } from '../type';
3
- export declare const GPUBufferOptionsMemoryShared: number;
3
+ import type { GPUBufferOptionsMemoryShared } from '../GPUBuffer';
4
4
  export interface GPUBufferInternalOptions {
5
5
  data?: TypedArray;
6
6
  options?: typeof GPUBufferOptionsMemoryShared;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@predy-js/render-interface",
3
- "version": "0.1.61-beta.20",
3
+ "version": "0.1.61-beta.22",
4
4
  "license": "MIT",
5
5
  "module": "./dist/index.mjs",
6
6
  "main": "./dist/index.js",
@@ -1,7 +1,7 @@
1
1
  import type { TypedArray } from './type';
2
2
  import type { IGPUResource, IGPURenderer } from './IGPURenderer';
3
3
  import type { GPURenderer } from './Renderer';
4
-
4
+ export const GPUBufferOptionsMemoryShared = 1 << 1;
5
5
  export type GPUBufferTarget =
6
6
  | WebGLRenderingContext['ARRAY_BUFFER']
7
7
  | WebGLRenderingContext['ELEMENT_ARRAY_BUFFER']
@@ -12,20 +12,23 @@ export type GPUBufferTarget =
12
12
  | WebGL2RenderingContext['PIXEL_PACK_BUFFER']
13
13
  | WebGL2RenderingContext['PIXEL_UNPACK_BUFFER'];
14
14
 
15
- type GPUBufferType = WebGLRenderingContext['FLOAT'] | WebGLRenderingContext['INT'] | WebGLRenderingContext['SHORT'];
16
15
  export interface GPUBufferOptions {
17
16
  name?: string,
18
-
19
- target?: GPUBufferTarget,
20
-
21
- type?: GPUBufferType,
22
17
  /**
23
- * 数据元素的总量
18
+ * 数据长度,如果提供了data,忽略此参数
24
19
  */
25
- elementCount?: number,
20
+ byteLength?: number,
26
21
 
27
22
  data?: TypedArray,
28
23
 
24
+ /**
25
+ * GL需要设置,Vulkan和Metal此属性忽略
26
+ */
27
+ target?: GPUBufferTarget,
28
+
29
+ /**
30
+ * GL需要设置,Vulkan和Metal此属性忽略
31
+ */
29
32
  usage?: WebGLRenderingContext['STATIC_DRAW'] | WebGLRenderingContext['DYNAMIC_DRAW'],
30
33
  }
31
34
 
@@ -41,23 +44,15 @@ export declare class GPUBuffer implements IGPUResource {
41
44
 
42
45
  readonly level: number;
43
46
 
44
- readonly target: GPUBufferTarget;
45
-
46
- readonly type: GPUBufferOptions['type'];
47
-
48
47
  readonly byteLength: number;
49
48
 
50
- readonly bytesPerElement: number;
49
+ readonly target: GPUBufferTarget;
51
50
 
52
- destroy (): void;
51
+ readonly usage?: WebGLRenderingContext['STATIC_DRAW'] | WebGLRenderingContext['DYNAMIC_DRAW'];
53
52
 
54
53
  constructor (options: GPUBufferOptions, renderer?: IGPURenderer);
55
54
 
56
- /**
57
- * 数据元素的总量
58
- */
59
- readonly elementCount: number;
60
-
55
+ getElementCount (bytePerElement: number): number;
61
56
  /**
62
57
  * 根据TypedArray容量,重新分配Buffer内存
63
58
  * @param typedArray
@@ -81,5 +76,7 @@ export declare class GPUBuffer implements IGPUResource {
81
76
  readSubData (elementOffset: number, typedArray: TypedArray, elementCount?: number): boolean;
82
77
 
83
78
  assignRenderer (renderer: GPURenderer): GPUBuffer;
79
+
80
+ destroy (): void;
84
81
  }
85
82
 
package/types/Geometry.ts CHANGED
@@ -81,7 +81,7 @@ export interface GeometryOptions {
81
81
 
82
82
  attributes: { [key: string]: Attribute },
83
83
 
84
- index?: { data: Uint8Array | Uint16Array | Uint32Array, releasable?: boolean },
84
+ index?: { data: GeometryIndexData, releasable?: boolean },
85
85
 
86
86
  mode?: GeometryDrawMode,
87
87
 
@@ -92,6 +92,11 @@ export interface GeometryOptions {
92
92
  bufferUsage?: GLenum,
93
93
  }
94
94
 
95
+ /**
96
+ * 不兼容Uint8的Index,只能使用Uin16和Uin32
97
+ */
98
+ export type GeometryIndexData = Uint16Array | Uint32Array;
99
+
95
100
  export declare class Geometry implements IGPUResource {
96
101
 
97
102
  readonly renderer?: IGPURenderer;
@@ -105,6 +110,8 @@ export declare class Geometry implements IGPUResource {
105
110
 
106
111
  readonly options?: Immutable<GeometryOptions>;
107
112
 
113
+ indexDataType?: WebGLRenderingContext['UNSIGNED_INT'] | WebGLRenderingContext['UNSIGNED_SHORT'];
114
+
108
115
  drawStart: number;
109
116
 
110
117
  drawCount: number;
@@ -133,9 +140,9 @@ export declare class Geometry implements IGPUResource {
133
140
 
134
141
  setAttributeSubData (name: string, offset: number, data: TypedArray): void;
135
142
 
136
- getIndexData (): Uint8Array | Uint16Array | Uint32Array | undefined;
143
+ getIndexData (): GeometryIndexData | undefined;
137
144
 
138
- setIndexData (data: Uint8Array | Uint16Array | Uint32Array | undefined): void;
145
+ setIndexData (data: GeometryIndexData | undefined,): void;
139
146
 
140
147
  setIndexSubData (offset: number, data: TypedArray): void;
141
148
 
@@ -167,7 +174,7 @@ export interface SharedGeometryOptions {
167
174
 
168
175
  mode?: number,
169
176
 
170
- index?: { data: Uint8Array | Uint16Array | Uint32Array, releasable?: boolean },
177
+ index?: { data: GeometryIndexData, releasable?: boolean },
171
178
 
172
179
  geometry: Geometry,
173
180
  }
@@ -1,7 +1,6 @@
1
1
  import type { ResourceInternal } from './ResourceInternal';
2
2
  import type { TypedArray } from '../type';
3
-
4
- export const GPUBufferOptionsMemoryShared = 1 << 1;
3
+ import type { GPUBufferOptionsMemoryShared } from '../GPUBuffer';
5
4
 
6
5
  export interface GPUBufferInternalOptions {
7
6
  data?: TypedArray,