@predy-js/render-interface 0.0.6

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.
Files changed (62) hide show
  1. package/dist/index.js +5545 -0
  2. package/dist/index.js.map +1 -0
  3. package/dist/index.mjs +5524 -0
  4. package/dist/index.mjs.map +1 -0
  5. package/dist/src/common/console.d.ts +3 -0
  6. package/dist/src/common/env.d.ts +1 -0
  7. package/dist/src/common/raf.d.ts +2 -0
  8. package/dist/src/common/request.d.ts +10 -0
  9. package/dist/src/common/utils.d.ts +14 -0
  10. package/dist/src/index.d.ts +17 -0
  11. package/dist/src/render/MarsExtWrap.d.ts +15 -0
  12. package/dist/src/render/MarsGPUCapability.d.ts +2 -0
  13. package/dist/src/render/MarsGeometry.d.ts +64 -0
  14. package/dist/src/render/MarsMaterial.d.ts +29 -0
  15. package/dist/src/render/MarsMaterialDataBlock.d.ts +37 -0
  16. package/dist/src/render/MarsMesh.d.ts +24 -0
  17. package/dist/src/render/MarsRenderFrame.d.ts +22 -0
  18. package/dist/src/render/MarsRenderPass.d.ts +51 -0
  19. package/dist/src/render/MarsRenderPassColorAttachment.d.ts +27 -0
  20. package/dist/src/render/MarsRenderer.d.ts +20 -0
  21. package/dist/src/render/MarsSemanticMap.d.ts +10 -0
  22. package/dist/src/render/MarsSharedGeometry.d.ts +13 -0
  23. package/dist/src/render/MarsTexture.d.ts +29 -0
  24. package/dist/src/render/MarsTextureFactory.d.ts +20 -0
  25. package/dist/src/render/RenderFrameInternal.d.ts +8 -0
  26. package/dist/src/statistic/index.d.ts +20 -0
  27. package/dist/src/webgl/GLFrameBuffer.d.ts +45 -0
  28. package/dist/src/webgl/GLGPUBuffer.d.ts +27 -0
  29. package/dist/src/webgl/GLGPUCapability.d.ts +32 -0
  30. package/dist/src/webgl/GLGPURenderer.d.ts +57 -0
  31. package/dist/src/webgl/GLGeometry.d.ts +52 -0
  32. package/dist/src/webgl/GLMaterial.d.ts +15 -0
  33. package/dist/src/webgl/GLProgram.d.ts +42 -0
  34. package/dist/src/webgl/GLRenderBuffer.d.ts +22 -0
  35. package/dist/src/webgl/GLShaderLibrary.d.ts +33 -0
  36. package/dist/src/webgl/GLTexture.d.ts +35 -0
  37. package/dist/src/webgl/GLUniformUtils.d.ts +42 -0
  38. package/dist/src/webgl/GLVertexArrayObject.d.ts +11 -0
  39. package/dist/src/webgl/KhronosTextureContainer.d.ts +25 -0
  40. package/dist/src/webgl/WebGLState.d.ts +285 -0
  41. package/dist/src/webgl/constants.d.ts +4 -0
  42. package/dist/src/webgl/glType.d.ts +8 -0
  43. package/dist/statistic.js +406 -0
  44. package/dist/statistic.js.map +1 -0
  45. package/dist/types/Camera.d.ts +12 -0
  46. package/dist/types/Canvas.d.ts +12 -0
  47. package/dist/types/GPUBuffer.d.ts +54 -0
  48. package/dist/types/GPUCapability.d.ts +50 -0
  49. package/dist/types/Geometry.d.ts +142 -0
  50. package/dist/types/IGPURenderer.d.ts +14 -0
  51. package/dist/types/Material.d.ts +156 -0
  52. package/dist/types/Mesh.d.ts +50 -0
  53. package/dist/types/RenderFrame.d.ts +50 -0
  54. package/dist/types/RenderPass.d.ts +156 -0
  55. package/dist/types/Renderer.d.ts +52 -0
  56. package/dist/types/Scene.d.ts +48 -0
  57. package/dist/types/ShaderLibrary.d.ts +78 -0
  58. package/dist/types/Texture.d.ts +212 -0
  59. package/dist/types/constants.d.ts +6 -0
  60. package/dist/types/index.d.ts +26 -0
  61. package/dist/types/type.d.ts +37 -0
  62. package/package.json +54 -0
@@ -0,0 +1,3 @@
1
+ export declare function consoleLog(msg: string, ...data: any[]): void;
2
+ export declare function consoleWarn(msg: string, ...data: any[]): void;
3
+ export declare function consoleError(msg: string, ...data: any[]): void;
@@ -0,0 +1 @@
1
+ export declare function isAndroid(): boolean;
@@ -0,0 +1,2 @@
1
+ export declare function requestAnimationFrame(cb: (n: number) => void): number;
2
+ export declare function cancelAnimationFrame(handle: number): void;
@@ -0,0 +1,10 @@
1
+ export interface RequestOptions {
2
+ method?: 'get' | 'post';
3
+ responseType?: 'json' | 'blob' | 'arraybuffer';
4
+ data?: XMLHttpRequestBodyInit | null;
5
+ }
6
+ export declare function requestAsync(url: string, options?: RequestOptions): Promise<any>;
7
+ export declare function loadImageAsync(imgOrURL: string | HTMLImageElement | Blob, options?: {
8
+ asImageBitMap?: boolean;
9
+ revokeURL?: boolean;
10
+ }): Promise<HTMLImageElement | ImageBitmap>;
@@ -0,0 +1,14 @@
1
+ export declare function isFunc(val: any): boolean;
2
+ export declare function isObj(a: any): boolean;
3
+ export declare function isStr(a: any, withLength?: boolean): boolean;
4
+ export declare function arrRemove(arr: Array<any>, ele: any): boolean;
5
+ export declare function arrAdd<T>(arr: Array<T>, item: T): boolean;
6
+ export declare function strHashCode(...strings: string[]): number;
7
+ export declare function arrAddByOrder(arr: Array<any>, item: any, order?: number): boolean;
8
+ export declare function sortByOrder(arr: Array<any>, order?: number): Array<any>;
9
+ export declare function forEach<T>(object: null | undefined | {
10
+ [key: string]: T;
11
+ }, callback: (val: T, key: string) => void, thisObj?: any): {
12
+ [key: string]: T;
13
+ } | null | undefined;
14
+ export declare function throwDestroyedError(): void;
@@ -0,0 +1,17 @@
1
+ export * from '../types/constants';
2
+ export * from '../types/RenderPass';
3
+ export * from '../types/Texture';
4
+ export * from '../types/GPUBuffer';
5
+ export { constants } from './webgl/constants';
6
+ export * from '../types/ShaderLibrary';
7
+ export { MarsRenderFrame as RenderFrame } from './render/MarsRenderFrame';
8
+ export { MarsRenderer as Renderer } from './render/MarsRenderer';
9
+ export { MarsMesh as Mesh } from './render/MarsMesh';
10
+ export { MarsGeometry as Geometry } from './render/MarsGeometry';
11
+ export { MarsRenderPass as RenderPass } from './render/MarsRenderPass';
12
+ export { MarsTexture as Texture } from './render/MarsTexture';
13
+ export { MarsMaterial as Material } from './render/MarsMaterial';
14
+ export { MarsMaterialDataBlock as MaterialDataBlock } from './render/MarsMaterialDataBlock';
15
+ export { MarsSharedGeometry as SharedGeometry } from './render/MarsSharedGeometry';
16
+ export { getDefaultGPUCapability } from './render/MarsGPUCapability';
17
+ export { getDefaultTextureFactory, setDefaultTextureFactory, MarsTextureFactory } from './render/MarsTextureFactory';
@@ -0,0 +1,15 @@
1
+ import type { RendererExtensions, RenderPass, Texture } from '../../types';
2
+ import type { MarsTexture } from './MarsTexture';
3
+ import type { MarsRenderer } from './MarsRenderer';
4
+ import { MarsRenderPass } from './MarsRenderPass';
5
+ export declare class MarsExtWrap implements RendererExtensions {
6
+ _copyRenderPass?: MarsRenderPass;
7
+ renderer?: MarsRenderer;
8
+ constructor(renderer: MarsRenderer);
9
+ resetColorAttachments(rp: RenderPass, colorTextures: Texture[]): void;
10
+ copyTexture(source: Texture, tex: Texture): void;
11
+ copy2(source: MarsTexture, target: MarsTexture): void;
12
+ copy1(source: MarsTexture, target: MarsTexture): void;
13
+ _createCopyRenderPass(): MarsRenderPass;
14
+ destroy(): void;
15
+ }
@@ -0,0 +1,2 @@
1
+ import type { GPUCapability } from '../../types/GPUCapability';
2
+ export declare function getDefaultGPUCapability(): GPUCapability;
@@ -0,0 +1,64 @@
1
+ import type { Immutable, TypedArray } from '../../types/type';
2
+ import type { Geometry, GeometryOptions, AttributeWithType, Attribute } from '../../types/Geometry';
3
+ import type { GPUBuffer, GPUBufferOptions } from '../../types/GPUBuffer';
4
+ import { GLGeometry } from '../webgl/GLGeometry';
5
+ import type { MarsRenderer } from './MarsRenderer';
6
+ type BufferDirtyFlag = {
7
+ dirty: boolean;
8
+ discard?: boolean;
9
+ start?: number;
10
+ end?: number;
11
+ };
12
+ /**
13
+ * 应用层Geometry对象,本身不直接保存GPU资源而是通过geometryInternal成员保存GPU资源。
14
+ *
15
+ */
16
+ export declare class MarsGeometry implements Geometry {
17
+ renderer?: MarsRenderer;
18
+ _buffers: {
19
+ [key: string]: GPUBufferOptions;
20
+ };
21
+ _attributes: Record<string, AttributeWithType>;
22
+ _attributesReleasable: {
23
+ [key: string]: boolean;
24
+ };
25
+ _attributesName: string[];
26
+ _dirtyFlags: {
27
+ [key: string]: BufferDirtyFlag;
28
+ };
29
+ _index?: Uint8Array | Uint16Array | Uint32Array;
30
+ _indexReleasable: boolean;
31
+ readonly internal: GLGeometry;
32
+ readonly options?: GeometryOptions;
33
+ readonly name: string;
34
+ protected _drawCount: number;
35
+ protected _drawStart: number;
36
+ protected _mode: number;
37
+ protected _isDestroyed: boolean;
38
+ get isDestroyed(): boolean;
39
+ get mode(): number;
40
+ set mode(n: number);
41
+ get attributes(): Immutable<{
42
+ [key: string]: Attribute;
43
+ }>;
44
+ get drawCount(): number;
45
+ set drawCount(n: number | undefined);
46
+ get drawStart(): number;
47
+ set drawStart(n: number);
48
+ constructor(option: GeometryOptions);
49
+ destroy(): void;
50
+ setAttributeBuffer(name: string, buffer: GPUBuffer): void;
51
+ getAttributeBuffer(name: string): GPUBuffer | undefined;
52
+ setAttributeData(name: string, data: TypedArray): void;
53
+ getAttributeData(name: string): TypedArray | undefined;
54
+ setAttributeSubData(name: string, offset: number, data: TypedArray): void;
55
+ getIndexData(): Uint8Array | Uint16Array | Uint32Array | undefined;
56
+ setIndexData(data: Uint8Array | Uint16Array | Uint32Array | undefined): void;
57
+ setIndexSubData(offset: number, data: TypedArray): void;
58
+ getAttributeStride(name: string): number;
59
+ getAttributeDataLength(name: string): number;
60
+ getAttributeNames(): string[];
61
+ assignRenderer(renderer: MarsRenderer): MarsGeometry;
62
+ flush(): boolean;
63
+ }
64
+ export {};
@@ -0,0 +1,29 @@
1
+ import type { Material, MaterialDestroyOptions, MaterialOptions, MaterialRenderStates } from '../../types';
2
+ import type { UniformSemantic } from '../../types';
3
+ import { MaterialRenderType } from '../../types/Material';
4
+ import type { Immutable } from '../../types/type';
5
+ import { GLMaterial } from '../webgl/GLMaterial';
6
+ import type { MarsRenderer } from './MarsRenderer';
7
+ import { MarsMaterialDataBlock } from './MarsMaterialDataBlock';
8
+ export declare class MarsMaterial implements Material {
9
+ readonly shaderCacheId: string;
10
+ readonly options: Immutable<MaterialOptions>;
11
+ readonly materialInternal?: GLMaterial;
12
+ readonly name: string;
13
+ readonly _dataBlocks: MarsMaterialDataBlock[];
14
+ readonly renderType: MaterialRenderType;
15
+ readonly states: Immutable<MaterialRenderStates>;
16
+ readonly renderer?: MarsRenderer;
17
+ private _isDestroyed;
18
+ readonly uniformSemantics: Record<string, UniformSemantic>;
19
+ get isDestroyed(): boolean;
20
+ get dataBlocks(): MarsMaterialDataBlock[];
21
+ get defaultDataBlock(): MarsMaterialDataBlock;
22
+ constructor(options: MaterialOptions);
23
+ createMaterialStates(states: MaterialRenderStates): Immutable<MaterialRenderStates>;
24
+ addDataBlock(b: MarsMaterialDataBlock): void;
25
+ removeDataBlock(b: MarsMaterialDataBlock): void;
26
+ setUniformSemantic(uniformName: string, semantic: string | undefined): void;
27
+ assignRenderer(renderer: MarsRenderer): MarsMaterial;
28
+ destroy(options?: MaterialDestroyOptions): void;
29
+ }
@@ -0,0 +1,37 @@
1
+ import type { MaterialDataBlock, MaterialDataBlockDestroyOptions, MaterialDataBlockOptions, UniformValue, vec2 } from '../../types';
2
+ import type { MarsRenderer } from './MarsRenderer';
3
+ import type { UniformBlockSpec } from '../webgl/GLUniformUtils';
4
+ import { UniformBlockBuffer } from '../webgl/GLUniformUtils';
5
+ export declare class MarsMaterialDataBlock implements MaterialDataBlock {
6
+ readonly _uniformValues: Record<string, UniformValue>;
7
+ readonly _uniformFlags: Record<string, boolean>;
8
+ readonly _uniformValueRanges: Record<string, vec2>;
9
+ readonly name: string;
10
+ readonly renderer?: MarsRenderer;
11
+ readonly uboBufferMap: Record<string, UniformBlockBuffer>;
12
+ protected _isDestroyed: boolean;
13
+ private readonly _keepUboData;
14
+ constructor(props: MaterialDataBlockOptions & {
15
+ keepUboData?: boolean;
16
+ }, renderer?: MarsRenderer);
17
+ _assignUniformValueRenderer(value: UniformValue, renderer?: MarsRenderer): void;
18
+ invalidAllFlags(): void;
19
+ clearFlags(): void;
20
+ isDirty(shaderCacheId: string, name: string): boolean;
21
+ get isDestroyed(): boolean;
22
+ assignRenderer(renderer: MarsRenderer): MaterialDataBlock;
23
+ createUboBuffer(spec: UniformBlockSpec): UniformBlockBuffer | undefined;
24
+ setUboBuffer(uboBuffer: UniformBlockBuffer): void;
25
+ updateUniformSubData(name: string, start: number, count: number): void;
26
+ hasUniformValue(name: string): boolean;
27
+ destroy(options?: MaterialDataBlockDestroyOptions): void;
28
+ getUniformValue(name: string): UniformValue;
29
+ getUniformValues(): {
30
+ [p: string]: UniformValue;
31
+ };
32
+ setUniformValue(name: string, value: UniformValue | undefined): boolean;
33
+ setUniformValues(map: {
34
+ [p: string]: UniformValue;
35
+ }): void;
36
+ clone(name: string): MarsMaterialDataBlock;
37
+ }
@@ -0,0 +1,24 @@
1
+ import type { Mesh, MeshDestroyOptions, MeshOptions } from '../../types/Mesh';
2
+ import { MarsMaterial } from './MarsMaterial';
3
+ import { MarsGeometry } from './MarsGeometry';
4
+ import type { Material, MaterialDestroyOptions, MaterialOptions } from '../../types/Material';
5
+ import type { MarsRenderer } from './MarsRenderer';
6
+ import type { mat4 } from '../../types';
7
+ import { DestroyOptions } from '../../types/constants';
8
+ export declare class MarsMesh implements Mesh {
9
+ readonly material: MarsMaterial;
10
+ readonly geometries: MarsGeometry[];
11
+ readonly name: string;
12
+ priority: number;
13
+ worldMatrix: mat4 | Float32Array;
14
+ hide: boolean;
15
+ renderer?: MarsRenderer;
16
+ private _isDestroyed;
17
+ get isDestroyed(): boolean;
18
+ get geometry(): MarsGeometry;
19
+ constructor(options: MeshOptions);
20
+ setMaterial(mtl: Material | MaterialOptions, destroyMtl?: MaterialDestroyOptions | DestroyOptions.keep): void;
21
+ setGeometries(geos: MarsGeometry[], destroyGeometries?: DestroyOptions): void;
22
+ destroy(options?: MeshDestroyOptions): void;
23
+ assignRenderer(renderer: MarsRenderer): MarsMesh;
24
+ }
@@ -0,0 +1,22 @@
1
+ import type { RenderFrame, RenderFrameDestroyOptions, RenderFrameOptions, RenderPass, RenderPassClearAction } from '../../types';
2
+ import type { MarsRenderer } from './MarsRenderer';
3
+ import { MarsSemanticMap } from './MarsSemanticMap';
4
+ export declare class MarsRenderFrame implements RenderFrame {
5
+ clearAction: RenderPassClearAction;
6
+ readonly name: string;
7
+ readonly semantics: MarsSemanticMap;
8
+ _renderPasses: RenderPass[];
9
+ private _renderer;
10
+ private _isDestroyed;
11
+ get renderPasses(): RenderPass[];
12
+ get isDestroyed(): boolean;
13
+ get renderer(): MarsRenderer;
14
+ constructor(options: RenderFrameOptions, renderer?: MarsRenderer);
15
+ assignRenderer(renderer: MarsRenderer): MarsRenderFrame;
16
+ destroy(options?: RenderFrameDestroyOptions): void;
17
+ render(): void;
18
+ setRenderPasses(passes: RenderPass[]): void;
19
+ addRenderPass(pass: RenderPass): void;
20
+ removeRenderPass(pass: RenderPass): void;
21
+ forEachRenderPass(callback: (renderPass: RenderPass, index: number, pipeline: MarsRenderFrame) => void): void;
22
+ }
@@ -0,0 +1,51 @@
1
+ import type { RenderPass, RenderPassAttachmentOptions, RenderPassClearAction, RenderPassDelegate, RenderPassDepthStencilAttachment, RenderPassDestroyOptions, RenderPassOptions, RenderPassStoreAction } from '../../types/RenderPass';
2
+ import { RenderPassAttachmentStorageType, RenderPassMeshOrder } from '../../types/RenderPass';
3
+ import type { MarsMesh } from './MarsMesh';
4
+ import type { Camera } from '../../types/Camera';
5
+ import type { MarsRenderer } from './MarsRenderer';
6
+ import { GLFrameBuffer } from '../webgl/GLFrameBuffer';
7
+ import { MarsRenderPassColorAttachment } from './MarsRenderPassColorAttachment';
8
+ import { MarsTexture } from './MarsTexture';
9
+ import type { vec4 } from '../../types';
10
+ import { MarsSemanticMap } from './MarsSemanticMap';
11
+ export declare class MarsRenderPass implements RenderPass {
12
+ delegate: RenderPassDelegate;
13
+ readonly name: string;
14
+ readonly priority: number;
15
+ readonly meshes: MarsMesh[];
16
+ readonly camera: Camera;
17
+ readonly options: RenderPassAttachmentOptions;
18
+ readonly renderer: MarsRenderer;
19
+ readonly frameBuffer?: GLFrameBuffer;
20
+ readonly depthStencilType: RenderPassAttachmentStorageType;
21
+ readonly clearAction: RenderPassClearAction;
22
+ readonly storeAction: RenderPassStoreAction;
23
+ readonly semantics: MarsSemanticMap;
24
+ private _isDestroyed;
25
+ private _depthTexture?;
26
+ private _stencilTexture?;
27
+ private _attachments;
28
+ get isDestroyed(): boolean;
29
+ get attachments(): MarsRenderPassColorAttachment[];
30
+ viewportScale: number;
31
+ private _isCustomViewport;
32
+ private _customViewport?;
33
+ meshOrder: RenderPassMeshOrder;
34
+ constructor(options: RenderPassOptions, renderer?: MarsRenderer);
35
+ get viewport(): vec4;
36
+ get stencilAttachment(): RenderPassDepthStencilAttachment | undefined;
37
+ get depthAttachment(): RenderPassDepthStencilAttachment | undefined;
38
+ bind(): void;
39
+ private _getDepthTexture;
40
+ private _getStencilTexture;
41
+ private _setViewportOptions;
42
+ resetColorAttachments(colors: MarsTexture[]): void;
43
+ resetAttachments(options: RenderPassAttachmentOptions): RenderPassAttachmentOptions;
44
+ private _resetAttachments;
45
+ unbind(): void;
46
+ assignRenderer(renderer: MarsRenderer): MarsRenderPass;
47
+ destroy(options?: RenderPassDestroyOptions): void;
48
+ addMesh(mesh: MarsMesh): void;
49
+ removeMesh(mesh: MarsMesh): void;
50
+ setMeshes(meshes: MarsMesh[]): MarsMesh[];
51
+ }
@@ -0,0 +1,27 @@
1
+ import type { RenderPassColorAttachment, RenderPassColorAttachmentOptions, RenderPassColorAttachmentTextureOptions } from '../../types/RenderPass';
2
+ import { RenderPassAttachmentStorageType } from '../../types/RenderPass';
3
+ import { MarsTexture } from './MarsTexture';
4
+ import type { MarsRenderer } from './MarsRenderer';
5
+ interface MarsRenderPassColorAttachmentOptions extends RenderPassColorAttachmentOptions {
6
+ size?: [x: number, y: number];
7
+ name?: string;
8
+ }
9
+ interface MarsRenderPassColorAttachmentTextureOptions extends RenderPassColorAttachmentTextureOptions {
10
+ size?: [x: number, y: number];
11
+ }
12
+ export declare class MarsRenderPassColorAttachment implements RenderPassColorAttachment {
13
+ readonly readable: boolean;
14
+ texture: MarsTexture;
15
+ readonly externalTexture: boolean;
16
+ textureOptions?: MarsRenderPassColorAttachmentTextureOptions;
17
+ private _isDestroyed;
18
+ get isDestroyed(): boolean;
19
+ get storageType(): RenderPassAttachmentStorageType;
20
+ constructor(options: MarsRenderPassColorAttachmentOptions);
21
+ get size(): [x: number, y: number];
22
+ get width(): number;
23
+ get height(): number;
24
+ assignRenderer(renderer: MarsRenderer): MarsRenderPassColorAttachment;
25
+ destroy(): void;
26
+ }
27
+ export {};
@@ -0,0 +1,20 @@
1
+ import type { GPUBuffer, GPUBufferOptions, GPUCapability, GPURenderer, RendererOptions, RenderFrameOptions, ShaderLibrary } from '../../types';
2
+ import { GLGPURenderer } from '../webgl/GLGPURenderer';
3
+ import { MarsRenderFrame } from './MarsRenderFrame';
4
+ import type { Canvas } from '../../types/Canvas';
5
+ import { MarsExtWrap } from './MarsExtWrap';
6
+ export declare class MarsRenderer implements GPURenderer {
7
+ readonly gpu: GPUCapability;
8
+ readonly shaderLibrary: ShaderLibrary;
9
+ readonly internal: GLGPURenderer;
10
+ readonly canvas: Canvas;
11
+ readonly extension: MarsExtWrap;
12
+ get isDestroyed(): boolean;
13
+ get height(): number;
14
+ get width(): number;
15
+ constructor(options: RendererOptions);
16
+ createBuffer(options: GPUBufferOptions): GPUBuffer;
17
+ createRenderFrame(options?: RenderFrameOptions): MarsRenderFrame;
18
+ destroy(haltGL?: boolean): void;
19
+ resize(width: number, height: number): void;
20
+ }
@@ -0,0 +1,10 @@
1
+ import type { GPUBuffer, RenderState, UniformValue, SemanticMap, SemanticGetter } from '../../types';
2
+ export declare class MarsSemanticMap implements SemanticMap {
3
+ readonly semantics: Record<string, SemanticGetter>;
4
+ constructor(semantics?: Record<string, SemanticGetter>);
5
+ toObject(): Record<string, SemanticGetter>;
6
+ setSemantic(name: string, value: SemanticGetter | undefined): void;
7
+ getSemanticValue(name: string, state: RenderState): UniformValue | GPUBuffer | null | undefined;
8
+ hasSemanticValue(name: string): boolean;
9
+ destroy(): void;
10
+ }
@@ -0,0 +1,13 @@
1
+ import { MarsGeometry } from './MarsGeometry';
2
+ import type { SharedGeometry, SharedGeometryOptions } from '../../types';
3
+ import type { MarsRenderer } from './MarsRenderer';
4
+ export declare class MarsSharedGeometry extends MarsGeometry implements SharedGeometry {
5
+ private readonly _source;
6
+ renderer: MarsRenderer;
7
+ constructor(opt: SharedGeometryOptions, renderer?: MarsRenderer);
8
+ assignRenderer(renderer: MarsRenderer): MarsSharedGeometry;
9
+ getAttributeNames(): string[];
10
+ getAttributeDataLength(name: string): number;
11
+ flush(): boolean;
12
+ destroy(): void;
13
+ }
@@ -0,0 +1,29 @@
1
+ import type { Texture, TextureOptions, TextureSourceOptions } from '../../types/Texture';
2
+ import { TextureSourceType } from '../../types/Texture';
3
+ import type { GLGPURenderer } from '../webgl/GLGPURenderer';
4
+ import { GLTexture } from '../webgl/GLTexture';
5
+ import type { Immutable } from '../../types/type';
6
+ import type { MarsRenderer } from './MarsRenderer';
7
+ export declare function closeImageBitMap(img: any): void;
8
+ export declare class MarsTexture implements Texture {
9
+ readonly id: string;
10
+ readonly options: Immutable<TextureOptions>;
11
+ readonly sourceType: TextureSourceType;
12
+ readonly name: string;
13
+ readonly renderer?: MarsRenderer;
14
+ readonly internal?: GLTexture;
15
+ private _offloaded;
16
+ private _isDestroyed;
17
+ get isDestroyed(): boolean;
18
+ constructor(options: TextureOptions | GLTexture, renderer?: MarsRenderer);
19
+ checkOptions(options: TextureOptions): Immutable<TextureOptions>;
20
+ get width(): number;
21
+ get height(): number;
22
+ assignRenderer(renderer: MarsRenderer): MarsTexture;
23
+ _assignRenderer(renderer: GLGPURenderer): void;
24
+ uploadCurrentVideoFrame(): boolean;
25
+ destroy(): void;
26
+ reloadDataAsync(): Promise<Texture>;
27
+ offloadData(): void;
28
+ updateSource(options: TextureSourceOptions): void;
29
+ }
@@ -0,0 +1,20 @@
1
+ import type { Texture, TextureConfigOptions, TextureCubeSourceURLMap, TextureFactory, TextureFactorySourceFrom, TextureOptions, TextureSourceCubeData } from '../../types/Texture';
2
+ import type { TypedArray, vec2 } from '../../types';
3
+ export declare class MarsTextureFactory implements TextureFactory {
4
+ reloadPending: {
5
+ [key: string]: Promise<Texture>;
6
+ };
7
+ constructor();
8
+ loadMipmapImagesAsync(pointers: vec2[], bin: ArrayBuffer): Promise<(HTMLImageElement | ImageBitmap)[]>;
9
+ loadImageAsync(url: string | HTMLImageElement | Blob): Promise<HTMLImageElement | ImageBitmap>;
10
+ requestBinaryAsync(url: string): Promise<ArrayBuffer>;
11
+ loadImageBinaryAsync(binary: ArrayBuffer | TypedArray | Blob, mime?: string): Promise<HTMLImageElement | ImageBitmap>;
12
+ canOffloadTexture(texture: Texture): boolean;
13
+ loadSourceAsync(sourceFrom: TextureFactorySourceFrom, config?: TextureConfigOptions): Promise<TextureOptions>;
14
+ _loadVideoAsync(url: string | null | MediaProvider): Promise<HTMLVideoElement>;
15
+ _loadCubeMapAsync(map: TextureCubeSourceURLMap | string[]): Promise<TextureSourceCubeData>;
16
+ loadCompressedTextureFromArrayBuffer(arrayBuffer: ArrayBuffer, options?: TextureOptions): TextureOptions;
17
+ reloadTextureAsync(texture: Texture): Promise<Texture>;
18
+ }
19
+ export declare function getDefaultTextureFactory(): TextureFactory;
20
+ export declare function setDefaultTextureFactory(factory: TextureFactory): void;
@@ -0,0 +1,8 @@
1
+ import type { MarsRenderFrame } from './MarsRenderFrame';
2
+ import type { RenderState } from '../../types/RenderFrame';
3
+ import type { MarsRenderPass } from './MarsRenderPass';
4
+ import type { MarsRenderer } from './MarsRenderer';
5
+ export declare class RenderFrameInternal {
6
+ static render(frame: MarsRenderFrame): void;
7
+ static renderRenderPass(renderer: MarsRenderer, pass: MarsRenderPass, renderState: RenderState): void;
8
+ }
@@ -0,0 +1,20 @@
1
+ import type { MarsRenderer } from '../render/MarsRenderer';
2
+ import type { GLTexture } from '../webgl/GLTexture';
3
+ export interface TextureStatistic {
4
+ name: string;
5
+ memory: number;
6
+ }
7
+ export interface BufferStatistic {
8
+ name: string;
9
+ memory: number;
10
+ }
11
+ export interface RendererStatistic {
12
+ textures: TextureStatistic[];
13
+ buffers: BufferStatistic[];
14
+ memory: {
15
+ texture: number;
16
+ buffer: number;
17
+ };
18
+ }
19
+ export declare function getRendererStatistic(renderer: MarsRenderer): RendererStatistic;
20
+ export declare function getTextureMemory(tex: GLTexture | undefined): number;
@@ -0,0 +1,45 @@
1
+ import type { GLGPURenderer } from './GLGPURenderer';
2
+ import type { RenderPassDepthStencilAttachmentOptions, RenderPassStorageObject, RenderPassStoreAction } from '../../types/RenderPass';
3
+ import { RenderPassAttachmentStorageType, RenderPassDestroyAttachmentType } from '../../types/RenderPass';
4
+ import { GLRenderBuffer } from './GLRenderBuffer';
5
+ import { GLTexture } from './GLTexture';
6
+ export interface GLFrameBufferOptions {
7
+ attachments: GLTexture[];
8
+ depthStencilAttachment?: RenderPassDepthStencilAttachmentOptions;
9
+ isCustomViewport?: boolean;
10
+ viewport: [x: number, y: number, width: number, height: number];
11
+ viewportScale?: number;
12
+ storeAction: RenderPassStoreAction;
13
+ name?: string;
14
+ }
15
+ export declare class GLFrameBuffer {
16
+ readonly renderer: GLGPURenderer;
17
+ readonly viewport: [x: number, y: number, width: number, height: number];
18
+ readonly ready: boolean;
19
+ readonly depthStencilStorageType: RenderPassAttachmentStorageType;
20
+ readonly name: string;
21
+ externalStorage: boolean;
22
+ storeAction: RenderPassStoreAction;
23
+ storeInvalidAttachments?: GLenum[];
24
+ isCustomViewport: boolean;
25
+ depthStencilRenderBuffer?: GLRenderBuffer;
26
+ depthTexture?: GLTexture;
27
+ stencilTexture?: GLTexture;
28
+ colorTextures: GLTexture[];
29
+ fbo?: WebGLFramebuffer;
30
+ viewportScale: number;
31
+ readonly _attachmentHandles: WebGLTexture[];
32
+ constructor(options: GLFrameBufferOptions, renderer: GLGPURenderer);
33
+ get stencilStorage(): RenderPassStorageObject | undefined;
34
+ get depthStorage(): RenderPassStorageObject | undefined;
35
+ _getHandles(): void;
36
+ checkOptions(options: GLFrameBufferOptions): void;
37
+ getStoreAttachments(storeAction: RenderPassStoreAction, separateDepthStencil: boolean): GLenum[] | undefined;
38
+ unbind(): void;
39
+ bind(): void;
40
+ resetColorTextures(colors?: GLTexture[]): void;
41
+ destroy(opt?: {
42
+ depthStencilAttachment?: RenderPassDestroyAttachmentType;
43
+ }): void;
44
+ resize(x: number, y: number, width: number, height: number): void;
45
+ }
@@ -0,0 +1,27 @@
1
+ import type { GPUBuffer, GPUBufferOptions, GPUBufferTarget } from '../../types/GPUBuffer';
2
+ import type { GLGPURenderer } from './GLGPURenderer';
3
+ import type { TypedArray } from '../../types/type';
4
+ import type { MarsRenderer } from '../render/MarsRenderer';
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
+ readonly usage: WebGLRenderingContext['STATIC_DRAW'] | WebGLRenderingContext['DYNAMIC_DRAW'] | WebGLRenderingContext['STREAM_DRAW'];
10
+ readonly renderer?: GLGPURenderer;
11
+ readonly glBuffer: WebGLBuffer | null;
12
+ private _byteLength;
13
+ private _isDestroyed;
14
+ readonly name: string;
15
+ get byteLength(): number;
16
+ get isBuffer(): boolean;
17
+ get elementCount(): number;
18
+ get level(): number;
19
+ get isDestroyed(): boolean;
20
+ constructor(options: GPUBufferOptions, renderer: GLGPURenderer);
21
+ bind(): void;
22
+ bufferData(typedArray: TypedArray | number): void;
23
+ bufferSubData(elementOffset: number, typedArray: TypedArray): void;
24
+ destroy(): void;
25
+ readSubData(elementOffset: number, typedArray: TypedArray): boolean;
26
+ assignRenderer(renderer: MarsRenderer): GLGPUBuffer;
27
+ }
@@ -0,0 +1,32 @@
1
+ import type { GPUCapability, GPUCapabilityDetail } from '../../types/GPUCapability';
2
+ import type { Immutable } from '../../types/type';
3
+ interface GLGPUCapabilityDetail extends GPUCapabilityDetail {
4
+ vao: boolean;
5
+ standardDerivatives: boolean;
6
+ halfFloatLinear: boolean;
7
+ floatLinear: boolean;
8
+ maxSample: number;
9
+ maxShaderTexCount: number;
10
+ }
11
+ export declare class GLGPUCapability implements GPUCapability {
12
+ readonly capability: Immutable<GLGPUCapabilityDetail>;
13
+ readonly level: number;
14
+ readonly type: 'webgl' | 'webgl2' | 'node-gl' | 'none';
15
+ drawBufferExtension: any;
16
+ vaoExt: any;
17
+ UNSIGNED_INT_24_8: number;
18
+ internalFormatDepth16: number;
19
+ internalFormatDepth24_stencil8: number;
20
+ constructor(opt: {
21
+ glType?: 'webgl' | 'webgl2';
22
+ gl?: WebGLRenderingContext | WebGL2RenderingContext;
23
+ });
24
+ _setupCapability(gl?: WebGLRenderingContext | WebGL2RenderingContext): void;
25
+ checkLinearTextureFilter(gl: WebGL2RenderingContext, type: number): boolean;
26
+ framebufferTexture2D(gl: WebGLRenderingContext | WebGL2RenderingContext, target: GLenum, index: number, textarget: number, texture: WebGLTexture): void;
27
+ drawBuffers(gl: WebGLRenderingContext | WebGL2RenderingContext, bufferStates: boolean[]): void;
28
+ setTextureAnisotropic(gl: WebGLRenderingContext | WebGL2RenderingContext, target: GLenum, level: number): void;
29
+ setup(gl: WebGLRenderingContext): void;
30
+ }
31
+ export declare function registerCompressedTexture(gl: WebGLRenderingContext | WebGL2RenderingContext): number;
32
+ export {};
@@ -0,0 +1,57 @@
1
+ import { GLGPUBuffer } from './GLGPUBuffer';
2
+ import { WebGLState } from './WebGLState';
3
+ import { GLShaderLibrary } from './GLShaderLibrary';
4
+ import type { GPURenderer, RendererExtensions } from '../../types';
5
+ import type { GPUBufferOptions } from '../../types/GPUBuffer';
6
+ import type { RenderFrame, RenderFrameOptions } from '../../types/RenderFrame';
7
+ import type { ParsedScene, SceneSchema } from '../../types/Scene';
8
+ import { GLGPUCapability } from './GLGPUCapability';
9
+ import { GLTexture } from './GLTexture';
10
+ import type { GLRenderBuffer } from './GLRenderBuffer';
11
+ import type { GLFrameBuffer } from './GLFrameBuffer';
12
+ export declare class GLGPURenderer implements GPURenderer {
13
+ readonly gl: WebGLRenderingContext | WebGL2RenderingContext;
14
+ readonly level: number;
15
+ readonly gpu: GLGPUCapability;
16
+ readonly state: WebGLState;
17
+ readonly shaderLibrary: GLShaderLibrary;
18
+ readonly emptyTexture2D: GLTexture;
19
+ readonly emptyTextureCube: GLTexture;
20
+ readonly _buffers: GLGPUBuffer[];
21
+ readonly _textures: GLTexture[];
22
+ readonly _renderBuffers: GLRenderBuffer[];
23
+ readonly _frameBuffers: GLFrameBuffer[];
24
+ readonly _vaos: WebGLVertexArrayObject[];
25
+ private _sourceFbo;
26
+ private _targetFbo;
27
+ private _isDestroyed;
28
+ extension: RendererExtensions;
29
+ constructor(gl: WebGLRenderingContext | WebGL2RenderingContext);
30
+ get isDestroyed(): boolean;
31
+ onContextLose: (e: Event) => void;
32
+ copy2(source: GLTexture, target: GLTexture): void;
33
+ resetColorAttachments(rp: GLFrameBuffer, colors: GLTexture[]): void;
34
+ createGLRenderBuffer(renderbuffer: GLRenderBuffer): WebGLRenderbuffer | null;
35
+ createPipeline(options?: RenderFrameOptions): RenderFrame;
36
+ createBuffer(options: GPUBufferOptions): GLGPUBuffer;
37
+ parseSceneSchema(schema: SceneSchema): ParsedScene;
38
+ resize(width: number, height: number): void;
39
+ _assignInspectorName(obj: any, name?: string, id?: string): void;
40
+ createGLFrameBuffer(frameBuffer: GLFrameBuffer, name?: string): WebGLFramebuffer | null;
41
+ createGLTexture(texture: GLTexture, name?: string): WebGLTexture | null;
42
+ createGLBuffer(gpuBuffer: GLGPUBuffer, name?: string): WebGLBuffer | null;
43
+ deleteGLTexture(texture: GLTexture): void;
44
+ deleteGPUBuffer(buffer: GLGPUBuffer | null): void;
45
+ deleteGLFrameBuffer(frameBuffer: GLFrameBuffer): void;
46
+ deleteGLRenderBuffer(renderbuffer: GLRenderBuffer): void;
47
+ createVertexArray(name?: string): WebGLVertexArrayObject | undefined;
48
+ _bindVertexArray(vao: WebGLVertexArrayObject | null): void;
49
+ _bindVertexArrayOES(vao: WebGLVertexArrayObject | null): void;
50
+ bindVertexArray(vao: WebGLVertexArrayObject | null): void;
51
+ deleteVertexArray(vao: WebGLVertexArrayObject): void;
52
+ destroy(haltGL?: boolean): void;
53
+ get height(): number;
54
+ get width(): number;
55
+ get canvas(): HTMLCanvasElement | OffscreenCanvas;
56
+ createRenderFrame(options?: RenderFrameOptions): RenderFrame;
57
+ }