@predy-js/render-interface 0.3.0-beta.18 → 0.3.0-beta.181

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.
@@ -1,4 +1,4 @@
1
- import type { MaterialDataBlock, MaterialDataBlockDestroyOptions, MaterialDataBlockOptions, UniformSemantic, UniformValue, vec2, Texture } from '../../types';
1
+ import type { MaterialDataBlock, MaterialDataBlockDestroyOptions, MaterialDataBlockOptions, UniformSemantic, UniformValue, vec2, Texture, SemanticFunc } from '../../types';
2
2
  import type { MarsRenderer } from './MarsRenderer';
3
3
  import { MarsTexture } from './MarsTexture';
4
4
  import type { UniformBlockSpec } from '../webgl/GLUniformUtils';
@@ -10,7 +10,7 @@ export declare class MarsMaterialDataBlock implements MaterialDataBlock {
10
10
  readonly _uniformValueRanges: Record<string, vec2>;
11
11
  readonly name: string;
12
12
  readonly uniformSemantics: {
13
- [key: string]: UniformSemantic;
13
+ [key: string]: UniformSemantic | SemanticFunc;
14
14
  };
15
15
  readonly renderer?: MarsRenderer;
16
16
  readonly uboBufferMap: Record<string, UniformBlockBuffer>;
@@ -41,6 +41,6 @@ export declare class MarsMaterialDataBlock implements MaterialDataBlock {
41
41
  setUniformValues(map: {
42
42
  [p: string]: UniformValue;
43
43
  }): void;
44
- setUniformSemantic(name: string, semantic: string | undefined): void;
44
+ setUniformSemantic(name: string, semantic: string | SemanticFunc | undefined): void;
45
45
  clone(name: string): MarsMaterialDataBlock;
46
46
  }
@@ -5,7 +5,7 @@ export declare class MarsTextureFactory implements TextureFactory {
5
5
  [key: string]: Promise<Texture>;
6
6
  };
7
7
  constructor();
8
- loadMipmapImagesAsync(pointers: vec2[], bin: ArrayBuffer): Promise<(ImageBitmap | HTMLImageElement)[]>;
8
+ loadMipmapImagesAsync(pointers: vec2[], bin: ArrayBuffer): Promise<(HTMLImageElement | ImageBitmap)[]>;
9
9
  loadImageAsync(url: string | HTMLImageElement | Blob): Promise<HTMLImageElement | ImageBitmap>;
10
10
  requestBinaryAsync(url: string): Promise<ArrayBuffer>;
11
11
  loadImageBinaryAsync(binary: ArrayBuffer | TypedArray | Blob, mime?: string): Promise<HTMLImageElement | ImageBitmap>;
@@ -1,9 +1,8 @@
1
1
  import type { GLGPURenderer } from './GLGPURenderer';
2
2
  import type { GLGeometry } from './GLGeometry';
3
- import type { RenderState } from '../../types/RenderFrame';
3
+ import type { RenderState, SemanticFunc } from '../../types/RenderFrame';
4
4
  import type { GLVertexArrayObject } from './GLVertexArrayObject';
5
5
  import type { UniformBlockSpec } from './GLUniformUtils';
6
- import type { UniformValue } from '../../types';
7
6
  export interface ProgramAttributeInfo {
8
7
  readonly name: string;
9
8
  readonly size: number;
@@ -36,7 +35,7 @@ export declare class GLProgram {
36
35
  constructor(renderer: GLGPURenderer, program: WebGLProgram, shared: boolean, id: string);
37
36
  init(renderer: GLGPURenderer, program: WebGLProgram): void;
38
37
  bind(): void;
39
- getSemanticValue(state: RenderState, semanticName: string): import("../../types").GPUBuffer | UniformValue | null | undefined;
38
+ getSemanticValue(state: RenderState, semanticName: string | SemanticFunc): number | Float32Array | Float64Array | Uint8Array | Uint32Array | Uint16Array | Int8Array | Int16Array | Int32Array | import("../../types").GPUBuffer | import("../../types").Texture | number[] | number[][] | import("../../types").UniformStruct | import("../../types").UniformStruct[] | SemanticFunc | import("../../types").Texture[] | null | undefined;
40
39
  setupUniforms(state: RenderState): void;
41
40
  setGLUniformValue(name: string, value: any, info: ProgramUniformInfo, gl: WebGL2RenderingContext | WebGLRenderingContext): void;
42
41
  setupAttributes(geometry: GLGeometry): GLVertexArrayObject;
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.3.0-beta.18
5
+ * Version: v0.3.0-beta.181
6
6
  */
7
7
 
8
8
  // https://github.com/greggman/webgl-memory/blob/main/src/texture-utils.js
@@ -4,6 +4,7 @@ import type { Immutable, TypedArray } from './type';
4
4
  import type { GPURenderer } from './Renderer';
5
5
  import type { DestroyOptions } from './constants';
6
6
  import type { Texture } from './Texture';
7
+ import type { SemanticFunc } from './RenderFrame';
7
8
  export type UniformSemantic = 'VIEW' | 'MODEL' | 'MODELVIEW' | 'PROJECTION' | 'VIEWPROJECTION' | 'MODELVIEWPROJECTION' | string;
8
9
  export interface MaterialRenderStates {
9
10
  sampleAlphaToCoverage?: boolean;
@@ -110,7 +111,7 @@ export interface MaterialDataBlockOptions {
110
111
  uniformTextures?: Record<string, Texture | Texture[]>;
111
112
  name?: string;
112
113
  uniformSemantics?: {
113
- [key: string]: UniformSemantic;
114
+ [key: string]: UniformSemantic | SemanticFunc;
114
115
  };
115
116
  }
116
117
  export interface MaterialDataBlockDestroyOptions {
@@ -121,11 +122,11 @@ export declare class MaterialDataBlock implements IGPUResource {
121
122
  readonly isDestroyed: boolean;
122
123
  readonly name: string;
123
124
  readonly uniformSemantics?: {
124
- [key: string]: UniformSemantic;
125
+ [key: string]: UniformSemantic | SemanticFunc;
125
126
  };
126
127
  constructor(options: MaterialDataBlockOptions);
127
128
  hasUniformValue(name: string): boolean;
128
- setUniformSemantic(name: string, semantic: string | undefined): void;
129
+ setUniformSemantic(name: string, semantic: string | SemanticFunc | undefined): void;
129
130
  /**
130
131
  * 多次调用次函数只会更新JS层的数据,不会直接更新GPU数据
131
132
  * 在下一次渲染前,会将JS层的数据更新到GPU
@@ -4,6 +4,12 @@ import type { TextureInternal } from './TextureInternal';
4
4
  export interface DataBlockInternalOptions {
5
5
  name: string;
6
6
  }
7
+ /**
8
+ * struct uniform的数据结构
9
+ */
10
+ export interface NativeUniformStruct {
11
+ [key: string]: TypedArray;
12
+ }
7
13
  export declare abstract class DataBlockInternal implements ResourceInternal {
8
14
  readonly isDestroyed: boolean;
9
15
  /**
@@ -27,6 +33,15 @@ export declare abstract class DataBlockInternal implements ResourceInternal {
27
33
  * @param value
28
34
  */
29
35
  abstract getUniformValue(name: string, value: TypedArray): boolean;
36
+ /**
37
+ * 设置uniform的结构体数据,对于数据进行深拷贝,修改原始数据,不会影响已经传入的数据,
38
+ * 如果要修改数据,必须重新调用setUniformStructValues
39
+ */
40
+ abstract setUniformStructValues(name: string, values: NativeUniformStruct[]): boolean;
41
+ /**
42
+ * 获取uniform的结构体数据,获取的数据进行深拷贝,传入的数据将
43
+ */
44
+ abstract getUniformStructValue(name: string, idx: number): Record<string, ArrayBuffer> | undefined;
30
45
  abstract setUniformTextures(uniformName: string, texture: TextureInternal[] | undefined): void;
31
46
  abstract getUniformTextures(uniformName: string): TextureInternal[] | undefined;
32
47
  }
@@ -1,5 +1,5 @@
1
1
  import type { ImageBitmapCallback, ImageBitmapConstructor } from './ImageBitmapInternal';
2
- import type { TypedArray } from '../type';
2
+ import type { TypedArray, vec2 } from '../type';
3
3
  import type { GPUCapability } from '../GPUCapability';
4
4
  import type { PredyResizeTemplate, SDFImageOptions, SDFImage } from '@predy-js/specification';
5
5
  import type { ImageBitmapInternal } from './ImageBitmapInternal';
@@ -21,6 +21,8 @@ export interface PredyRequestResponse {
21
21
  time: number;
22
22
  }
23
23
  export type PredyRequestCallback = (err: string | undefined, res: PredyRequestResponse) => void;
24
+ export declare const DataCompressMethodZlib = 1;
25
+ type DataCompressMethod = typeof DataCompressMethodZlib;
24
26
  export interface PredyNativeInternal {
25
27
  webpDisabled?: boolean;
26
28
  createImageBitmap(data: TypedArray | string, //图片文件的数据
@@ -53,6 +55,25 @@ export interface PredyNativeInternal {
53
55
  * @param callback
54
56
  */
55
57
  evaluateScriptURL(url: string, callback: (err: Error, result: any) => void): void;
58
+ /**
59
+ * 将float32Array转换为half float,写入Uint16Array中,
60
+ * 如果提供了range参数,代表float16会被重新map到range中,以此提高精度范围
61
+ * 提供range参数后,算法求出source的最大最小值,然后将float16重新映射到range中
62
+ * 如果source和target的长度不匹配,返回false
63
+ */
64
+ float32ToFloat16(source: Float32Array, target: Uint16Array, range?: vec2): boolean;
65
+ /**
66
+ * 将half float转换为float32,通过Float32Array返回,
67
+ * 如果提供了range参数,代表float16会被重新map到range中,以此提高精度范围
68
+ * 如果没有提供,float16会被直接转化为float32
69
+ * 如果source和target的长度不匹配,返回false
70
+ */
71
+ float16ToFloat32(source: Uint16Array, target: Float32Array, range?: vec2): boolean;
72
+ /**
73
+ * 解压数据
74
+ * @param data
75
+ */
76
+ inflateData(data: Uint8Array, method: DataCompressMethod): Uint8Array | undefined;
56
77
  }
57
78
  type renderSDFImageCallback = (img: SDFImage) => void;
58
79
  export {};
@@ -11,6 +11,7 @@ import type { GPUCapability } from '../GPUCapability';
11
11
  import type { TextureInternal, TextureInternalConstructOptions } from './TextureInternal';
12
12
  import type { AndGLContext } from './AndGLContext';
13
13
  import type { MetalInternal } from './MetalInternal';
14
+ import type { vec2 } from '../type';
14
15
  /**
15
16
  * renderer 内部创建的对象,用来统计信息,排查资源泄漏的问题
16
17
  */
@@ -83,5 +84,9 @@ export declare abstract class RendererInternal implements ResourceInternal {
83
84
  * 每次调用此函数后,清空错误队列
84
85
  */
85
86
  abstract getErrors(): string[];
86
- abstract resize(width: number, height: number): void;
87
+ /**
88
+ * resize predy view,并且相关的fbo和render pass都需要设为相应的尺寸
89
+ * @param size 如果不提供size,则使用当前predy view parent的尺寸
90
+ */
91
+ abstract resize(size?: vec2): void;
87
92
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@predy-js/render-interface",
3
- "version": "0.3.0-beta.18",
3
+ "version": "0.3.0-beta.181",
4
4
  "license": "MIT",
5
5
  "module": "./dist/index.mjs",
6
6
  "main": "./dist/index.js",
package/types/Material.ts CHANGED
@@ -4,6 +4,7 @@ import type { Immutable, TypedArray } from './type';
4
4
  import type { GPURenderer } from './Renderer';
5
5
  import type { DestroyOptions } from './constants';
6
6
  import type { Texture } from './Texture';
7
+ import type { SemanticFunc } from './RenderFrame';
7
8
 
8
9
  export type UniformSemantic =
9
10
  | 'VIEW'
@@ -142,7 +143,7 @@ export interface MaterialDataBlockOptions {
142
143
  uniformValues?: { [key: string]: UniformValue },
143
144
  uniformTextures?: Record<string, Texture | Texture[]>,
144
145
  name?: string,
145
- uniformSemantics?: { [key: string]: UniformSemantic },
146
+ uniformSemantics?: { [key: string]: UniformSemantic | SemanticFunc },
146
147
  }
147
148
 
148
149
  export interface MaterialDataBlockDestroyOptions {
@@ -157,13 +158,13 @@ export declare class MaterialDataBlock implements IGPUResource {
157
158
 
158
159
  readonly name: string;
159
160
 
160
- readonly uniformSemantics?: { [key: string]: UniformSemantic };
161
+ readonly uniformSemantics?: { [key: string]: UniformSemantic | SemanticFunc };
161
162
 
162
163
  constructor (options: MaterialDataBlockOptions);
163
164
 
164
165
  hasUniformValue (name: string): boolean;
165
166
 
166
- setUniformSemantic (name: string, semantic: string | undefined): void;
167
+ setUniformSemantic (name: string, semantic: string | SemanticFunc | undefined): void;
167
168
 
168
169
  /**
169
170
  * 多次调用次函数只会更新JS层的数据,不会直接更新GPU数据
@@ -5,6 +5,12 @@ import type { TextureInternal } from './TextureInternal';
5
5
  export interface DataBlockInternalOptions {
6
6
  name: string,
7
7
  }
8
+
9
+ /**
10
+ * struct uniform的数据结构
11
+ */
12
+ export interface NativeUniformStruct { [key: string]: TypedArray }
13
+
8
14
  export abstract class DataBlockInternal implements ResourceInternal {
9
15
  readonly isDestroyed: boolean;
10
16
  /**
@@ -33,6 +39,17 @@ export abstract class DataBlockInternal implements ResourceInternal {
33
39
  */
34
40
  abstract getUniformValue (name: string, value: TypedArray): boolean;
35
41
 
42
+ /**
43
+ * 设置uniform的结构体数据,对于数据进行深拷贝,修改原始数据,不会影响已经传入的数据,
44
+ * 如果要修改数据,必须重新调用setUniformStructValues
45
+ */
46
+ abstract setUniformStructValues (name: string, values: NativeUniformStruct[]): boolean;
47
+
48
+ /**
49
+ * 获取uniform的结构体数据,获取的数据进行深拷贝,传入的数据将
50
+ */
51
+ abstract getUniformStructValue (name: string, idx: number): Record<string, ArrayBuffer> | undefined;
52
+
36
53
  abstract setUniformTextures (uniformName: string, texture: TextureInternal[] | undefined): void;
37
54
 
38
55
  abstract getUniformTextures (uniformName: string): TextureInternal[] | undefined;
@@ -1,8 +1,9 @@
1
1
  import type { ImageBitmapCallback, ImageBitmapConstructor } from './ImageBitmapInternal';
2
- import type { TypedArray } from '../type';
2
+ import type { TypedArray, vec2 } from '../type';
3
3
  import type { GPUCapability } from '../GPUCapability';
4
4
  import type { PredyResizeTemplate, SDFImageOptions, SDFImage } from '@predy-js/specification';
5
5
  import type { ImageBitmapInternal } from './ImageBitmapInternal';
6
+
6
7
  export interface PredyRequestOptions {
7
8
  url: string,
8
9
  //用于测试缓存,生产中不要使用
@@ -29,6 +30,10 @@ export interface PredyRequestResponse {
29
30
 
30
31
  export type PredyRequestCallback = (err: string | undefined, res: PredyRequestResponse) => void;
31
32
 
33
+ export const DataCompressMethodZlib = 1;
34
+
35
+ type DataCompressMethod = typeof DataCompressMethodZlib;
36
+
32
37
  export interface PredyNativeInternal {
33
38
  webpDisabled?: boolean,
34
39
 
@@ -67,6 +72,28 @@ export interface PredyNativeInternal {
67
72
  * @param callback
68
73
  */
69
74
  evaluateScriptURL (url: string, callback: (err: Error, result: any) => void): void,
75
+
76
+ /**
77
+ * 将float32Array转换为half float,写入Uint16Array中,
78
+ * 如果提供了range参数,代表float16会被重新map到range中,以此提高精度范围
79
+ * 提供range参数后,算法求出source的最大最小值,然后将float16重新映射到range中
80
+ * 如果source和target的长度不匹配,返回false
81
+ */
82
+ float32ToFloat16(source: Float32Array, target: Uint16Array, range?: vec2): boolean,
83
+
84
+ /**
85
+ * 将half float转换为float32,通过Float32Array返回,
86
+ * 如果提供了range参数,代表float16会被重新map到range中,以此提高精度范围
87
+ * 如果没有提供,float16会被直接转化为float32
88
+ * 如果source和target的长度不匹配,返回false
89
+ */
90
+ float16ToFloat32(source: Uint16Array, target: Float32Array, range?: vec2): boolean,
91
+
92
+ /**
93
+ * 解压数据
94
+ * @param data
95
+ */
96
+ inflateData(data: Uint8Array, method: DataCompressMethod): Uint8Array | undefined,
70
97
  }
71
98
 
72
99
  type renderSDFImageCallback = (img: SDFImage) => void;
@@ -11,6 +11,7 @@ import type { GPUCapability } from '../GPUCapability';
11
11
  import type { TextureInternal, TextureInternalConstructOptions } from './TextureInternal';
12
12
  import type { AndGLContext } from './AndGLContext';
13
13
  import type { MetalInternal } from './MetalInternal';
14
+ import type { vec2 } from '../type';
14
15
 
15
16
  /**
16
17
  * renderer 内部创建的对象,用来统计信息,排查资源泄漏的问题
@@ -109,6 +110,10 @@ export abstract class RendererInternal implements ResourceInternal {
109
110
  */
110
111
  abstract getErrors (): string[];
111
112
 
112
- abstract resize (width: number, height: number): void;
113
+ /**
114
+ * resize predy view,并且相关的fbo和render pass都需要设为相应的尺寸
115
+ * @param size 如果不提供size,则使用当前predy view parent的尺寸
116
+ */
117
+ abstract resize (size?: vec2): void;
113
118
  }
114
119