@predy-js/render-interface 0.1.61-beta.9 → 0.1.62-beta.1

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: Geometry['indexDataType'];
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.9
5
+ * Version: v0.1.62-beta.1
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;
@@ -0,0 +1,18 @@
1
+ export declare abstract class AndGLContext {
2
+ abstract isEnabled(param: GLenum): boolean;
3
+ /**
4
+ * 获取gl的参数, 返回值为4个int 数组
5
+ * @param param
6
+ */
7
+ abstract getParameter_i4(param: GLenum): [number, number, number, number];
8
+ /**
9
+ * 获取gl的参数, 返回值为4个bool 数组
10
+ * @param param
11
+ */
12
+ abstract getParameter_b4(param: GLenum): [boolean, boolean, boolean, boolean];
13
+ /**
14
+ * 获取gl的参数, 返回值为1个int
15
+ * @param param
16
+ */
17
+ abstract getParameter_i1(param: GLenum): number;
18
+ }
@@ -1,5 +1,6 @@
1
1
  import type { ResourceInternal } from './ResourceInternal';
2
2
  import type { TypedArray } from '../type';
3
+ import type { TextureInternal } from './TextureInternal';
3
4
  export interface DataBlockInternalOptions {
4
5
  name: string;
5
6
  }
@@ -26,4 +27,6 @@ export declare abstract class DataBlockInternal implements ResourceInternal {
26
27
  * @param value
27
28
  */
28
29
  abstract getUniformValue(name: string, value: TypedArray): boolean;
30
+ abstract setUniformTextures(uniformName: string, texture: TextureInternal[] | undefined): void;
31
+ abstract getUniformTextures(uniformName: string): TextureInternal[] | undefined;
29
32
  }
@@ -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;
@@ -1,7 +1,6 @@
1
1
  import type { ResourceInternal } from './ResourceInternal';
2
2
  import type { MaterialRenderStates } from '../Material';
3
3
  import type { DataBlockInternal } from './DataBlockInternal';
4
- import type { TextureInternal } from './TextureInternal';
5
4
  export interface MaterialInternalOptions {
6
5
  states: MaterialRenderStates;
7
6
  dataBlocks: DataBlockInternal[];
@@ -15,12 +14,4 @@ export declare abstract class MaterialInternal implements ResourceInternal {
15
14
  dataBlocks: DataBlockInternal[];
16
15
  protected constructor(options: MaterialInternalOptions);
17
16
  abstract destroy(): void;
18
- /**
19
- * 对于 uniform sampler2D uTex
20
- * 和 uniform sampler2D uTextures[4] 都使用此函数
21
- * @param name
22
- * @param value
23
- */
24
- abstract setUniformTextures(name: string, value: TextureInternal[]): void;
25
- abstract getUniformTextures(name: string): TextureInternal[];
26
17
  }
@@ -16,6 +16,10 @@ export declare abstract class RenderFrameInternal implements ResourceInternal {
16
16
  renderPasses: RenderPassInternal[];
17
17
  protected constructor(options: RenderFrameInternalOptions);
18
18
  abstract destroy(): void;
19
+ /**
20
+ * 代表此帧会在渲染队列的下一帧被渲染,调用此函数,也会调用renderer.invalid方法
21
+ * 由于渲染是异步的,此函数在Metal/Vulkan实现中,并不会直接绘制
22
+ */
19
23
  abstract render(): void;
20
24
  abstract updateLoadAction(action: RenderPassLoadAction): void;
21
25
  }
@@ -4,6 +4,7 @@ import type { RenderPassLoadAction, RenderPassStoreAction } from '../RenderPass'
4
4
  import type { TextureInternal } from './TextureInternal';
5
5
  import type { RenderPassStorageObject } from '../RenderPass';
6
6
  import type { RenderPassAttachmentStorageType } from '../RenderPass';
7
+ import type { AndGLContext } from './AndGLContext';
7
8
  export interface RenderPassColorAttachmentInternal {
8
9
  readonly storageType: RenderPassAttachmentStorageType.color;
9
10
  readonly texture: TextureInternal;
@@ -47,6 +48,7 @@ export declare abstract class RenderPassInternal implements ResourceInternal {
47
48
  readonly attachments: RenderPassColorAttachmentInternal[];
48
49
  readonly width: number;
49
50
  readonly height: number;
51
+ readonly gl?: AndGLContext;
50
52
  /**
51
53
  * 增删改查的操作,在warp层对Mesh进行后,得到的数据全部覆盖当前数据
52
54
  */
@@ -4,6 +4,7 @@ import type { TypedArray } from '../type';
4
4
  import type { ImageBitmapInternal } from './ImageBitmapInternal';
5
5
  export interface TextureInternalOptions extends TextureFormatOptions, Omit<TextureConfigOptionsBase, 'keepImageSource'> {
6
6
  target: WebGLRenderingContext['TEXTURE_CUBE_MAP'] | WebGLRenderingContext['TEXTURE_2D'];
7
+ generateMipmap?: boolean;
7
8
  }
8
9
  export interface TextureInternalConstructOptions extends TextureInternalOptions {
9
10
  width: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@predy-js/render-interface",
3
- "version": "0.1.61-beta.9",
3
+ "version": "0.1.62-beta.1",
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
  }
@@ -0,0 +1,22 @@
1
+
2
+ export abstract class AndGLContext {
3
+ abstract isEnabled (param: GLenum): boolean;
4
+
5
+ /**
6
+ * 获取gl的参数, 返回值为4个int 数组
7
+ * @param param
8
+ */
9
+ abstract getParameter_i4 (param: GLenum): [number, number, number, number];
10
+
11
+ /**
12
+ * 获取gl的参数, 返回值为4个bool 数组
13
+ * @param param
14
+ */
15
+ abstract getParameter_b4 (param: GLenum): [boolean, boolean, boolean, boolean];
16
+
17
+ /**
18
+ * 获取gl的参数, 返回值为1个int
19
+ * @param param
20
+ */
21
+ abstract getParameter_i1 (param: GLenum): number;
22
+ }
@@ -1,5 +1,6 @@
1
1
  import type { ResourceInternal } from './ResourceInternal';
2
2
  import type { TypedArray } from '../type';
3
+ import type { TextureInternal } from './TextureInternal';
3
4
 
4
5
  export interface DataBlockInternalOptions {
5
6
  name: string,
@@ -32,4 +33,8 @@ export abstract class DataBlockInternal implements ResourceInternal {
32
33
  */
33
34
  abstract getUniformValue (name: string, value: TypedArray): boolean;
34
35
 
36
+ abstract setUniformTextures (uniformName: string, texture: TextureInternal[] | undefined): void;
37
+
38
+ abstract getUniformTextures (uniformName: string): TextureInternal[] | undefined;
39
+
35
40
  }
@@ -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,
@@ -1,7 +1,6 @@
1
1
  import type { ResourceInternal } from './ResourceInternal';
2
2
  import type { MaterialRenderStates } from '../Material';
3
3
  import type { DataBlockInternal } from './DataBlockInternal';
4
- import type { TextureInternal } from './TextureInternal';
5
4
  export interface MaterialInternalOptions {
6
5
  states: MaterialRenderStates,
7
6
  dataBlocks: DataBlockInternal[],
@@ -18,14 +17,4 @@ export abstract class MaterialInternal implements ResourceInternal {
18
17
  protected constructor (options: MaterialInternalOptions) {
19
18
  }
20
19
  abstract destroy (): void;
21
-
22
- /**
23
- * 对于 uniform sampler2D uTex
24
- * 和 uniform sampler2D uTextures[4] 都使用此函数
25
- * @param name
26
- * @param value
27
- */
28
- abstract setUniformTextures (name: string, value: TextureInternal[]): void;
29
-
30
- abstract getUniformTextures (name: string): TextureInternal[];
31
20
  }
@@ -20,6 +20,10 @@ export abstract class RenderFrameInternal implements ResourceInternal {
20
20
  }
21
21
  abstract destroy (): void;
22
22
 
23
+ /**
24
+ * 代表此帧会在渲染队列的下一帧被渲染,调用此函数,也会调用renderer.invalid方法
25
+ * 由于渲染是异步的,此函数在Metal/Vulkan实现中,并不会直接绘制
26
+ */
23
27
  abstract render (): void;
24
28
 
25
29
  abstract updateLoadAction (action: RenderPassLoadAction): void;
@@ -4,6 +4,7 @@ import type { RenderPassLoadAction, RenderPassStoreAction } from '../RenderPass'
4
4
  import type { TextureInternal } from './TextureInternal';
5
5
  import type { RenderPassStorageObject } from '../RenderPass';
6
6
  import type { RenderPassAttachmentStorageType } from '../RenderPass';
7
+ import type { AndGLContext } from './AndGLContext';
7
8
 
8
9
  //--- color ---
9
10
  export interface RenderPassColorAttachmentInternal {
@@ -54,6 +55,7 @@ export abstract class RenderPassInternal implements ResourceInternal {
54
55
  readonly attachments: RenderPassColorAttachmentInternal[];
55
56
  readonly width: number;
56
57
  readonly height: number;
58
+ readonly gl?: AndGLContext;
57
59
  /**
58
60
  * 增删改查的操作,在warp层对Mesh进行后,得到的数据全部覆盖当前数据
59
61
  */
@@ -5,6 +5,7 @@ import type { ImageBitmapInternal } from './ImageBitmapInternal';
5
5
 
6
6
  export interface TextureInternalOptions extends TextureFormatOptions, Omit<TextureConfigOptionsBase, 'keepImageSource'> {
7
7
  target: WebGLRenderingContext['TEXTURE_CUBE_MAP'] | WebGLRenderingContext['TEXTURE_2D'],
8
+ generateMipmap?: boolean,
8
9
  }
9
10
 
10
11
  export interface TextureInternalConstructOptions extends TextureInternalOptions {