modern-canvas 0.13.6 → 0.14.0

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 (173) hide show
  1. package/dist/Engine.d.ts +5 -3
  2. package/dist/core/index.d.ts +1 -1
  3. package/dist/core/math/{Rect2.d.ts → Rectangle.d.ts} +16 -2
  4. package/dist/core/math/index.d.ts +1 -1
  5. package/dist/core/renderers/gl/GlBatch2DSystem.d.ts +44 -0
  6. package/dist/core/renderers/gl/GlColorMaskSystem.d.ts +7 -0
  7. package/dist/core/renderers/gl/GlMaskSystem.d.ts +17 -0
  8. package/dist/core/renderers/gl/GlRenderer.d.ts +63 -0
  9. package/dist/core/renderers/gl/GlStencilSystem.d.ts +56 -0
  10. package/dist/core/renderers/gl/GlViewportSystem.d.ts +9 -0
  11. package/dist/core/renderers/gl/buffer/GlBuffer.d.ts +8 -0
  12. package/dist/core/renderers/gl/buffer/GlBufferSystem.d.ts +14 -0
  13. package/dist/core/renderers/gl/buffer/const.d.ts +5 -0
  14. package/dist/core/renderers/gl/buffer/index.d.ts +3 -0
  15. package/dist/core/renderers/gl/const.d.ts +19 -0
  16. package/dist/core/renderers/gl/geometry/GlGeometrySystem.d.ts +29 -0
  17. package/dist/core/renderers/gl/geometry/getGlTypeFromFormat.d.ts +6 -0
  18. package/dist/core/renderers/gl/geometry/index.d.ts +1 -0
  19. package/dist/core/renderers/gl/index.d.ts +11 -0
  20. package/dist/core/renderers/gl/renderTarget/GlRenderTarget.d.ts +10 -0
  21. package/dist/core/renderers/gl/renderTarget/GlRenderTargetSystem.d.ts +31 -0
  22. package/dist/core/renderers/gl/renderTarget/index.d.ts +2 -0
  23. package/dist/core/renderers/gl/shader/GlProgram.d.ts +39 -0
  24. package/dist/core/renderers/gl/shader/GlProgramData.d.ts +4 -0
  25. package/dist/core/renderers/gl/shader/GlShaderSystem.d.ts +22 -0
  26. package/dist/core/renderers/gl/shader/const.d.ts +1 -0
  27. package/dist/core/renderers/gl/shader/defaultValue.d.ts +1 -0
  28. package/dist/core/renderers/gl/shader/getMaxFragmentPrecision.d.ts +3 -0
  29. package/dist/core/renderers/gl/shader/getTestContext.d.ts +2 -0
  30. package/dist/core/renderers/gl/shader/index.d.ts +2 -0
  31. package/dist/core/renderers/gl/shader/mapType.d.ts +3 -0
  32. package/dist/core/renderers/gl/shader/preprocessors/addProgramDefines.d.ts +1 -0
  33. package/dist/core/renderers/gl/shader/preprocessors/ensurePrecision.d.ts +9 -0
  34. package/dist/core/renderers/gl/shader/preprocessors/insertVersion.d.ts +1 -0
  35. package/dist/core/renderers/gl/shader/preprocessors/setProgramName.d.ts +3 -0
  36. package/dist/core/renderers/gl/shader/preprocessors/stripVersion.d.ts +1 -0
  37. package/dist/core/renderers/gl/state/GlBlendMode.d.ts +20 -0
  38. package/dist/core/{renderer/webgl/modules/WebGLStateModule.d.ts → renderers/gl/state/GlStateSystem.d.ts} +18 -17
  39. package/dist/core/renderers/gl/state/index.d.ts +2 -0
  40. package/dist/core/renderers/gl/system/GlSystem.d.ts +12 -0
  41. package/dist/core/renderers/gl/system/index.d.ts +1 -0
  42. package/dist/core/renderers/gl/texture/GlTexture.d.ts +12 -0
  43. package/dist/core/renderers/gl/texture/GlTextureSystem.d.ts +31 -0
  44. package/dist/core/renderers/gl/texture/GlTextureUploader.d.ts +8 -0
  45. package/dist/core/renderers/gl/texture/const.d.ts +49 -0
  46. package/dist/core/renderers/gl/texture/index.d.ts +2 -0
  47. package/dist/core/renderers/gl/texture/mapFormatToGlFormat.d.ts +2 -0
  48. package/dist/core/renderers/gl/texture/mapFormatToGlInternalFormat.d.ts +2 -0
  49. package/dist/core/renderers/gl/texture/mapFormatToGlType.d.ts +2 -0
  50. package/dist/core/renderers/gl/texture/updateTextureStyle.d.ts +31 -0
  51. package/dist/core/renderers/gl/texture/uploaders/buffer.d.ts +2 -0
  52. package/dist/core/renderers/gl/texture/uploaders/image.d.ts +2 -0
  53. package/dist/core/renderers/gl/texture/uploaders/index.d.ts +5 -0
  54. package/dist/core/renderers/gl/types.d.ts +71 -0
  55. package/dist/core/renderers/index.d.ts +2 -0
  56. package/dist/core/{renderer → renderers/shared}/Renderer.d.ts +0 -4
  57. package/dist/core/renderers/shared/buffer/BufferLike.d.ts +11 -0
  58. package/dist/core/renderers/shared/buffer/const.d.ts +13 -0
  59. package/dist/core/renderers/shared/buffer/index.d.ts +2 -0
  60. package/dist/core/renderers/shared/geometry/GeometryLike.d.ts +22 -0
  61. package/dist/core/renderers/shared/geometry/const.d.ts +2 -0
  62. package/dist/core/renderers/shared/geometry/getAttributeInfoFromFormat.d.ts +6 -0
  63. package/dist/core/renderers/shared/geometry/index.d.ts +2 -0
  64. package/dist/core/renderers/shared/index.d.ts +7 -0
  65. package/dist/core/renderers/shared/renderTarget/RenderTargetLike.d.ts +16 -0
  66. package/dist/core/renderers/shared/renderTarget/index.d.ts +1 -0
  67. package/dist/core/renderers/shared/shader/ShaderLike.d.ts +10 -0
  68. package/dist/core/renderers/shared/shader/index.d.ts +1 -0
  69. package/dist/core/renderers/shared/texture/TextureLike.d.ts +31 -0
  70. package/dist/core/renderers/shared/texture/const.d.ts +6 -0
  71. package/dist/core/renderers/shared/texture/index.d.ts +2 -0
  72. package/dist/core/renderers/shared/utils/createIdFromString.d.ts +1 -0
  73. package/dist/core/renderers/shared/utils/index.d.ts +1 -0
  74. package/dist/core/shared/id.d.ts +1 -0
  75. package/dist/core/shared/index.d.ts +1 -1
  76. package/dist/core/shared/utils.d.ts +0 -1
  77. package/dist/css/index.d.ts +3 -3
  78. package/dist/css/{parseCSSFilter.d.ts → parseCssFilter.d.ts} +1 -1
  79. package/dist/css/{parseCSSTransform.d.ts → parseCssTransform.d.ts} +1 -1
  80. package/dist/css/parseCssTransformOrigin.d.ts +1 -0
  81. package/dist/index.js +4423 -4122
  82. package/dist/render.d.ts +2 -3
  83. package/dist/scene/2d/Camera2D.d.ts +3 -1
  84. package/dist/scene/2d/Element2D.d.ts +11 -4
  85. package/dist/scene/2d/FlexLayout.d.ts +6 -11
  86. package/dist/scene/2d/Node2D.d.ts +1 -1
  87. package/dist/scene/2d/element/BaseElement2D.d.ts +35 -35
  88. package/dist/scene/2d/element/{BaseElement2DBackground.d.ts → Element2DBackground.d.ts} +2 -2
  89. package/dist/scene/2d/element/{BaseElement2DFill.d.ts → Element2DFill.d.ts} +13 -12
  90. package/dist/scene/2d/element/{BaseElement2DForeground.d.ts → Element2DForeground.d.ts} +2 -2
  91. package/dist/scene/2d/element/{BaseElement2DOutline.d.ts → Element2DOutline.d.ts} +4 -4
  92. package/dist/scene/2d/element/{BaseElement2DShadow.d.ts → Element2DShadow.d.ts} +1 -1
  93. package/dist/scene/2d/element/{BaseElement2DShape.d.ts → Element2DShape.d.ts} +1 -1
  94. package/dist/scene/2d/element/Element2DStyle.d.ts +6 -6
  95. package/dist/scene/2d/element/{BaseElement2DText.d.ts → Element2DText.d.ts} +11 -6
  96. package/dist/scene/2d/element/index.d.ts +7 -9
  97. package/dist/scene/2d/element/utils.d.ts +3 -5
  98. package/dist/scene/2d/index.d.ts +0 -2
  99. package/dist/scene/audio/AudioWaveform.d.ts +0 -1
  100. package/dist/scene/effects/ColorAdjustEffect.d.ts +2 -2
  101. package/dist/scene/effects/ColorFilterEffect.d.ts +5 -4
  102. package/dist/scene/effects/ColorOverlayEffect.d.ts +2 -2
  103. package/dist/scene/effects/ColorRemoveEffect.d.ts +2 -2
  104. package/dist/scene/effects/ColorReplaceEffect.d.ts +2 -2
  105. package/dist/scene/effects/DrawboardEffect.d.ts +2 -2
  106. package/dist/scene/effects/DropShadowEffect.d.ts +2 -2
  107. package/dist/scene/effects/EmbossEffect.d.ts +2 -2
  108. package/dist/scene/effects/GaussianBlurEffect.d.ts +2 -2
  109. package/dist/scene/effects/GlitchEffect.d.ts +2 -2
  110. package/dist/scene/effects/GodrayEffect.d.ts +2 -2
  111. package/dist/scene/effects/KawaseBlurEffect.d.ts +2 -2
  112. package/dist/scene/effects/MaskEffect.d.ts +2 -2
  113. package/dist/scene/effects/OutlineEffect.d.ts +2 -2
  114. package/dist/scene/effects/PixelateEffect.d.ts +2 -2
  115. package/dist/scene/effects/ZoomBlurEffect.d.ts +3 -3
  116. package/dist/scene/main/CanvasContext.d.ts +11 -9
  117. package/dist/scene/main/CanvasItem.d.ts +13 -16
  118. package/dist/scene/main/Effect.d.ts +7 -8
  119. package/dist/scene/main/Node.d.ts +19 -10
  120. package/dist/scene/main/RenderStack.d.ts +9 -6
  121. package/dist/scene/main/SceneTree.d.ts +6 -6
  122. package/dist/scene/main/Viewport.d.ts +18 -26
  123. package/dist/scene/main/Window.d.ts +4 -4
  124. package/dist/scene/main/interfaces/Rectangulable.d.ts +2 -2
  125. package/dist/scene/resources/RenderTarget.d.ts +26 -0
  126. package/dist/scene/resources/geometries/Geometry.d.ts +11 -20
  127. package/dist/scene/resources/geometries/IndexBuffer.d.ts +7 -16
  128. package/dist/scene/resources/geometries/QuadUvGeometry.d.ts +2 -2
  129. package/dist/scene/resources/geometries/UvGeometry.d.ts +4 -1
  130. package/dist/scene/resources/geometries/VertexAttribute.d.ts +9 -18
  131. package/dist/scene/resources/geometries/VertexBuffer.d.ts +7 -16
  132. package/dist/scene/resources/index.d.ts +1 -0
  133. package/dist/scene/resources/materials/EffectMaterial.d.ts +0 -2
  134. package/dist/scene/resources/materials/Material.d.ts +9 -13
  135. package/dist/scene/resources/textures/CanvasTexture.d.ts +4 -2
  136. package/dist/scene/resources/textures/ColorTexture.d.ts +3 -2
  137. package/dist/scene/resources/textures/GradientTexture.d.ts +2 -2
  138. package/dist/scene/resources/textures/PixelsTexture.d.ts +5 -4
  139. package/dist/scene/resources/textures/Texture2D.d.ts +23 -25
  140. package/dist/scene/resources/textures/VideoTexture.d.ts +2 -2
  141. package/dist/scene/resources/textures/ViewportTexture.d.ts +2 -2
  142. package/dist/scene/resources/textures/index.d.ts +0 -1
  143. package/dist/scene/transitions/KawaseTransition.d.ts +2 -2
  144. package/dist/scene/transitions/LeftEraseTransition.d.ts +2 -2
  145. package/dist/scene/transitions/TiltShiftTransition.d.ts +2 -2
  146. package/dist/scene/transitions/TwistTransition.d.ts +2 -2
  147. package/package.json +7 -7
  148. package/dist/core/renderer/index.d.ts +0 -2
  149. package/dist/core/renderer/webgl/WebGLRenderer.d.ts +0 -52
  150. package/dist/core/renderer/webgl/index.d.ts +0 -3
  151. package/dist/core/renderer/webgl/modules/WebGLBatch2DModule.d.ts +0 -45
  152. package/dist/core/renderer/webgl/modules/WebGLBlendMode.d.ts +0 -20
  153. package/dist/core/renderer/webgl/modules/WebGLBufferModule.d.ts +0 -18
  154. package/dist/core/renderer/webgl/modules/WebGLFramebufferModule.d.ts +0 -25
  155. package/dist/core/renderer/webgl/modules/WebGLMaskModule.d.ts +0 -31
  156. package/dist/core/renderer/webgl/modules/WebGLModule.d.ts +0 -10
  157. package/dist/core/renderer/webgl/modules/WebGLProgramModule.d.ts +0 -21
  158. package/dist/core/renderer/webgl/modules/WebGLScissorModule.d.ts +0 -10
  159. package/dist/core/renderer/webgl/modules/WebGLStencilModule.d.ts +0 -10
  160. package/dist/core/renderer/webgl/modules/WebGLTextureModule.d.ts +0 -26
  161. package/dist/core/renderer/webgl/modules/WebGLVertexArrayModule.d.ts +0 -19
  162. package/dist/core/renderer/webgl/modules/WebGLViewportModule.d.ts +0 -9
  163. package/dist/core/renderer/webgl/modules/index.d.ts +0 -14
  164. package/dist/core/renderer/webgl/modules/types.d.ts +0 -4
  165. package/dist/core/renderer/webgl/modules/utils.d.ts +0 -1
  166. package/dist/core/renderer/webgl/types.d.ts +0 -129
  167. package/dist/core/shared/RawWeakMap.d.ts +0 -22
  168. package/dist/css/parseCSSTransformOrigin.d.ts +0 -1
  169. package/dist/scene/2d/FlexElement2D.d.ts +0 -32
  170. package/dist/scene/2d/Image2D.d.ts +0 -35
  171. package/dist/scene/2d/element/BaseElement2DStyle.d.ts +0 -13
  172. package/dist/scene/2d/element/FlexElement2DStyle.d.ts +0 -9
  173. package/dist/scene/resources/textures/ImageTexture.d.ts +0 -20
package/dist/Engine.d.ts CHANGED
@@ -1,6 +1,7 @@
1
- import type { SceneTreeEvents, SceneTreeProperties } from './scene';
2
- import { WebGLRenderer } from './core';
1
+ import type { Node, SceneTreeEvents, SceneTreeProperties } from './scene';
2
+ import { GlRenderer } from './core';
3
3
  import { SceneTree } from './scene';
4
+ export type EngineData = Record<string, any> | Node | (Node | Record<string, any>)[];
4
5
  export interface EngineProperties extends WebGLContextAttributes, SceneTreeProperties {
5
6
  view?: HTMLCanvasElement | WebGLRenderingContext | WebGL2RenderingContext;
6
7
  width?: number;
@@ -8,6 +9,7 @@ export interface EngineProperties extends WebGLContextAttributes, SceneTreePrope
8
9
  pixelRatio?: number;
9
10
  autoResize: boolean;
10
11
  autoStart: boolean;
12
+ data?: EngineData;
11
13
  }
12
14
  interface EngineEvents extends SceneTreeEvents {
13
15
  }
@@ -28,7 +30,7 @@ export declare const defaultOptions: {
28
30
  export declare class Engine extends SceneTree {
29
31
  autoResize: boolean;
30
32
  autoStart: boolean;
31
- readonly renderer: WebGLRenderer;
33
+ readonly renderer: GlRenderer;
32
34
  get view(): HTMLCanvasElement | undefined;
33
35
  get gl(): WebGLRenderingContext | WebGL2RenderingContext;
34
36
  get screen(): {
@@ -5,5 +5,5 @@ export * from './io';
5
5
  export * from './math';
6
6
  export * from './object';
7
7
  export * from './os';
8
- export * from './renderer';
8
+ export * from './renderers';
9
9
  export * from './shared';
@@ -1,18 +1,32 @@
1
1
  import type { Vector2Data } from './Vector2';
2
2
  import { Vector2 } from './Vector2';
3
- export declare class Rect2 {
3
+ export interface RectangleLike {
4
+ x: number;
5
+ y: number;
6
+ width: number;
7
+ height: number;
8
+ }
9
+ export declare class Rectangle implements RectangleLike {
4
10
  get x(): number;
11
+ set x(val: number);
5
12
  get y(): number;
13
+ set y(val: number);
6
14
  get left(): number;
15
+ set left(val: number);
7
16
  get top(): number;
17
+ set top(val: number);
8
18
  get right(): number;
19
+ set right(val: number);
9
20
  get bottom(): number;
21
+ set bottom(val: number);
10
22
  get width(): number;
23
+ set width(val: number);
11
24
  get height(): number;
25
+ set height(val: number);
12
26
  readonly end: Vector2;
13
27
  readonly position: Vector2;
14
28
  readonly size: Vector2;
15
- constructor(from: Rect2);
29
+ constructor(from: RectangleLike);
16
30
  constructor(pointArray: Vector2Data[]);
17
31
  constructor(position: Vector2Data, size: Vector2Data);
18
32
  constructor(x: number, y: number, width: number, height: number);
@@ -5,7 +5,7 @@ export * from './Matrix2';
5
5
  export * from './Matrix3';
6
6
  export * from './Matrix4';
7
7
  export * from './Projection2D';
8
- export * from './Rect2';
8
+ export * from './Rectangle';
9
9
  export * from './Transform2D';
10
10
  export * from './utils';
11
11
  export * from './Vector';
@@ -0,0 +1,44 @@
1
+ import type { BufferLike, GeometryAttributeLike, TextureLike } from '../shared';
2
+ import type { GlDrawOptions } from './geometry';
3
+ import type { GlRenderer } from './GlRenderer';
4
+ import { GlBlendMode, GlState } from './state';
5
+ import { GlSystem } from './system';
6
+ export interface Batchable2D {
7
+ vertices: Float32Array;
8
+ indices: Uint32Array;
9
+ uvs?: Float32Array;
10
+ size?: {
11
+ width: number;
12
+ height: number;
13
+ };
14
+ texture?: TextureLike;
15
+ blendMode?: GlBlendMode;
16
+ roundPixels?: boolean;
17
+ clipOutsideUv?: boolean;
18
+ }
19
+ interface Shader {
20
+ update: (bufferData: BufferLike['data'], indexBufferData: BufferLike['data']) => void;
21
+ draw: (options?: GlDrawOptions) => void;
22
+ }
23
+ export declare class GlBatch2DSystem extends GlSystem {
24
+ install(renderer: GlRenderer): void;
25
+ protected _state: GlState;
26
+ protected _batchSize: number;
27
+ protected _batchables: Batchable2D[];
28
+ protected _vertexCount: number;
29
+ protected _indexCount: number;
30
+ protected _attributeBuffer: ArrayBuffer[];
31
+ protected _indexBuffers: Uint32Array<ArrayBuffer>[];
32
+ protected _shaders: Map<number, Shader>;
33
+ protected _attributes: Record<string, Partial<GeometryAttributeLike>>;
34
+ protected _vertexSize: number;
35
+ protected _getShader(maxTextureUnits: number): Shader;
36
+ protected _createShader(maxTextureUnits: number): Shader;
37
+ render(batchable: Batchable2D): void;
38
+ flush(): void;
39
+ protected _getBufferData(size: number): ArrayBuffer;
40
+ protected _getIndexBufferData(size: number): Uint32Array<ArrayBuffer>;
41
+ }
42
+ export declare function nextPow2(v: number): number;
43
+ export declare function log2(v: number): number;
44
+ export {};
@@ -0,0 +1,7 @@
1
+ import type { GlRenderer } from './GlRenderer';
2
+ import { GlSystem } from './system';
3
+ export declare class GlColorMaskSystem extends GlSystem {
4
+ install(renderer: GlRenderer): void;
5
+ current: number;
6
+ bind(colorMask: number): void;
7
+ }
@@ -0,0 +1,17 @@
1
+ import type { GlRenderer } from './GlRenderer';
2
+ import type { GlRenderable } from './types';
3
+ import { GlSystem } from './system';
4
+ export type MaskLike = GlRenderable;
5
+ export interface MaskStackItem {
6
+ source: GlRenderable;
7
+ mask: MaskLike;
8
+ }
9
+ export declare class GlMaskSystem extends GlSystem {
10
+ install(renderer: GlRenderer): void;
11
+ stack: MaskStackItem[];
12
+ protected _maskStackHash: Record<number, number>;
13
+ get length(): number;
14
+ get last(): MaskStackItem;
15
+ push(source: GlRenderable, mask: MaskLike): void;
16
+ pop(source: GlRenderable): void;
17
+ }
@@ -0,0 +1,63 @@
1
+ import type { ClearOrBool } from './const';
2
+ import type { GlExtensions, GlRenderingContext, GlTarget } from './types';
3
+ import { Renderer } from '../shared';
4
+ import { GlBufferSystem } from './buffer';
5
+ import { GlGeometrySystem } from './geometry';
6
+ import { GlBatch2DSystem } from './GlBatch2DSystem';
7
+ import { GlColorMaskSystem } from './GlColorMaskSystem';
8
+ import { GlMaskSystem } from './GlMaskSystem';
9
+ import { GlStencilSystem } from './GlStencilSystem';
10
+ import { GlViewportSystem } from './GlViewportSystem';
11
+ import { GlRenderTargetSystem } from './renderTarget';
12
+ import { GlShaderSystem } from './shader';
13
+ import { GlStateSystem } from './state';
14
+ import { GlTextureSystem } from './texture';
15
+ export interface GlRenderer {
16
+ texture: GlTextureSystem;
17
+ buffer: GlBufferSystem;
18
+ shader: GlShaderSystem;
19
+ geometry: GlGeometrySystem;
20
+ renderTarget: GlRenderTargetSystem;
21
+ state: GlStateSystem;
22
+ mask: GlMaskSystem;
23
+ colorMask: GlColorMaskSystem;
24
+ stencil: GlStencilSystem;
25
+ batch2D: GlBatch2DSystem;
26
+ viewport: GlViewportSystem;
27
+ }
28
+ export declare class GlRenderer extends Renderer {
29
+ contextLost: boolean;
30
+ gl: GlRenderingContext;
31
+ version: 1 | 2;
32
+ extensions: GlExtensions;
33
+ protected _systems: (GlShaderSystem | GlTextureSystem | GlGeometrySystem | GlBufferSystem | GlStateSystem | GlBatch2DSystem | GlColorMaskSystem | GlMaskSystem | GlRenderTargetSystem | GlStencilSystem | GlViewportSystem)[];
34
+ readonly bindPoints: Map<number, GlTarget>;
35
+ readonly supports: {
36
+ uint32Indices: boolean;
37
+ uniformBufferObject: boolean;
38
+ vertexArrayObject: boolean;
39
+ srgbTextures: boolean;
40
+ nonPowOf2wrapping: boolean;
41
+ msaa: boolean;
42
+ nonPowOf2mipmaps: boolean;
43
+ };
44
+ constructor(view?: HTMLCanvasElement | WebGLRenderingContext | WebGL2RenderingContext, options?: WebGLContextAttributes);
45
+ protected _setupContext(view: HTMLCanvasElement, options?: WebGLContextAttributes): this;
46
+ protected _setupExtensions(): this;
47
+ protected _setupSupports(): this;
48
+ protected _setupBindPoints(): this;
49
+ /**
50
+ * Setup polyfill
51
+ *
52
+ * @protected
53
+ */
54
+ protected _setupPolyfill(): this;
55
+ protected _contextLost(event: WebGLContextEvent): void;
56
+ protected _contextRestored(): void;
57
+ resize(width: number, height: number, updateStyle?: boolean): void;
58
+ clear(clear?: ClearOrBool): void;
59
+ reset(): void;
60
+ flush(): void;
61
+ destroy(): void;
62
+ toPixels(x?: number, y?: number, width?: number, height?: number): Uint8ClampedArray<ArrayBuffer>;
63
+ }
@@ -0,0 +1,56 @@
1
+ import type { RenderTargetLike } from '../shared';
2
+ import type { GlRenderer } from './GlRenderer';
3
+ import type { GlRenderingContext } from './types';
4
+ import { StencilMode } from './const';
5
+ import { GlSystem } from './system';
6
+ export interface StencilState {
7
+ stencilWriteMask?: number;
8
+ stencilReadMask?: number;
9
+ stencilFront?: {
10
+ compare: 'always' | 'equal' | 'not-equal';
11
+ passOp: 'increment-clamp' | 'decrement-clamp' | 'keep' | 'replace';
12
+ };
13
+ stencilBack?: {
14
+ compare: 'always' | 'equal' | 'not-equal';
15
+ passOp: 'increment-clamp' | 'decrement-clamp' | 'keep' | 'replace';
16
+ };
17
+ }
18
+ /** @internal */
19
+ export declare const stencilModeMap: StencilState[];
20
+ export declare class GlStencilSystem extends GlSystem {
21
+ install(renderer: GlRenderer): void;
22
+ protected readonly _cache: {
23
+ enabled: boolean;
24
+ stencilMode: StencilMode;
25
+ refCount: number;
26
+ };
27
+ current: Record<number, {
28
+ stencilMode: StencilMode;
29
+ refCount: number;
30
+ }>;
31
+ protected _passOpMap: {
32
+ 'keep': number;
33
+ 'zero': number;
34
+ 'replace': number;
35
+ 'invert': number;
36
+ 'increment-clamp': number;
37
+ 'decrement-clamp': number;
38
+ 'increment-wrap': number;
39
+ 'decrement-wrap': number;
40
+ };
41
+ protected _compareMap: {
42
+ 'always': number;
43
+ 'never': number;
44
+ 'equal': number;
45
+ 'not-equal': number;
46
+ 'less': number;
47
+ 'less-equal': number;
48
+ 'greater': number;
49
+ 'greater-equal': number;
50
+ };
51
+ onUpdateContext(gl: GlRenderingContext): void;
52
+ reset(): void;
53
+ protected _activeRenderTarget: RenderTargetLike | null;
54
+ onRenderTargetChange(renderTarget: RenderTargetLike | null): void;
55
+ bind(stencilMode: StencilMode, refCount: number): void;
56
+ }
@@ -0,0 +1,9 @@
1
+ import type { RectangleLike } from '../../math';
2
+ import type { GlRenderer } from './GlRenderer';
3
+ import { Rectangle } from '../../math';
4
+ import { GlSystem } from './system';
5
+ export declare class GlViewportSystem extends GlSystem {
6
+ readonly current: Rectangle;
7
+ install(renderer: GlRenderer): void;
8
+ bind(rect: RectangleLike): void;
9
+ }
@@ -0,0 +1,8 @@
1
+ import { GlBufferTarget } from './const';
2
+ export declare class GlBuffer {
3
+ native: WebGLBuffer;
4
+ target: GlBufferTarget;
5
+ byteLength: number;
6
+ dirty: boolean;
7
+ constructor(native: WebGLBuffer);
8
+ }
@@ -0,0 +1,14 @@
1
+ import type { BufferLike } from '../../shared';
2
+ import type { GlRenderer } from '../GlRenderer';
3
+ import { GlSystem } from '../system';
4
+ import { GlBuffer } from './GlBuffer';
5
+ export declare class GlBufferSystem extends GlSystem {
6
+ install(renderer: GlRenderer): void;
7
+ readonly buffers: Map<number, BufferLike>;
8
+ readonly glBuffers: Map<number, GlBuffer>;
9
+ getGlBuffer(source: BufferLike): GlBuffer;
10
+ protected _createGlBuffer(buffer: BufferLike): GlBuffer;
11
+ bind(buffer: BufferLike): void;
12
+ update(buffer: BufferLike, force?: boolean): GlBuffer;
13
+ reset(): void;
14
+ }
@@ -0,0 +1,5 @@
1
+ export declare enum GlBufferTarget {
2
+ elementArrayBuffer = 34963,
3
+ arrayBuffer = 34962,
4
+ uniformBuffer = 35345
5
+ }
@@ -0,0 +1,3 @@
1
+ export * from './const';
2
+ export * from './GlBuffer';
3
+ export * from './GlBufferSystem';
@@ -0,0 +1,19 @@
1
+ export declare enum StencilMode {
2
+ disabled = 0,
3
+ renderingMaskAdd = 1,
4
+ maskActive = 2,
5
+ inverseMaskActive = 3,
6
+ renderingMaskRemove = 4,
7
+ none = 5
8
+ }
9
+ export declare enum Clear {
10
+ none = 0,
11
+ color = 16384,
12
+ stencil = 1024,
13
+ depth = 256,
14
+ colorDepth = 16640,
15
+ colorStencil = 17408,
16
+ depthStencil = 1280,
17
+ all = 17664
18
+ }
19
+ export type ClearOrBool = Clear | boolean;
@@ -0,0 +1,29 @@
1
+ import type { BufferLike, GeometryLike, Topology } from '../../shared';
2
+ import type { GlRenderer } from '../GlRenderer';
3
+ import type { GlProgram } from '../shader';
4
+ import { GlSystem } from '../system';
5
+ export interface GlDrawOptions {
6
+ topology?: Topology;
7
+ size?: number;
8
+ start?: number;
9
+ instanceCount?: number;
10
+ }
11
+ export declare class GlGeometrySystem extends GlSystem {
12
+ protected _geometryVaoHash: Record<number, Record<string, WebGLVertexArrayObject>>;
13
+ hasInstance: boolean;
14
+ current: GeometryLike | null;
15
+ currentVao: WebGLVertexArrayObject | null;
16
+ install(renderer: GlRenderer): void;
17
+ bind(geometry: GeometryLike | null, program?: GlProgram): void;
18
+ protected getVao(geometry: GeometryLike, program: GlProgram): WebGLVertexArrayObject;
19
+ protected _getBuffers(geometry: GeometryLike): BufferLike[];
20
+ protected _ensureAttributes(geometry: GeometryLike, program: GlProgram, buffers: BufferLike[]): void;
21
+ protected _createVao(geometry: GeometryLike, program: GlProgram): WebGLVertexArrayObject;
22
+ protected _activateVao(geometry: GeometryLike, glProgram: GlProgram): void;
23
+ updateBuffers(): void;
24
+ protected _getSignature(geometry: GeometryLike, program: GlProgram): string;
25
+ unbind(): void;
26
+ getSize(geometry: GeometryLike): number;
27
+ draw(options?: GlDrawOptions): this;
28
+ reset(): void;
29
+ }
@@ -0,0 +1,6 @@
1
+ import type { VertexFormat } from '../../shared';
2
+ /**
3
+ * @param format
4
+ * @internal
5
+ */
6
+ export declare function getGlTypeFromFormat(format: VertexFormat): number;
@@ -0,0 +1 @@
1
+ export * from './GlGeometrySystem';
@@ -0,0 +1,11 @@
1
+ export * from './buffer';
2
+ export * from './GlBatch2DSystem';
3
+ export * from './GlMaskSystem';
4
+ export * from './GlRenderer';
5
+ export * from './GlStencilSystem';
6
+ export * from './GlViewportSystem';
7
+ export * from './renderTarget';
8
+ export * from './shader';
9
+ export * from './state';
10
+ export * from './system';
11
+ export * from './types';
@@ -0,0 +1,10 @@
1
+ export declare class GlRenderTarget {
2
+ framebuffer: WebGLFramebuffer;
3
+ width: number;
4
+ height: number;
5
+ msaa: boolean;
6
+ framebuffer2?: WebGLFramebuffer;
7
+ msaaRenderBuffer: WebGLRenderbuffer[];
8
+ depthStencilRenderBuffer?: WebGLRenderbuffer;
9
+ constructor(framebuffer: WebGLFramebuffer);
10
+ }
@@ -0,0 +1,31 @@
1
+ import type { RectangleLike } from '../../../math';
2
+ import type { RenderTargetLike, TextureLike } from '../../shared';
3
+ import type { GlRenderer } from '../GlRenderer';
4
+ import { Projection2D } from '../../../math';
5
+ import { GlSystem } from '../system';
6
+ import { GlRenderTarget } from './GlRenderTarget';
7
+ export declare class GlRenderTargetSystem extends GlSystem {
8
+ install(renderer: GlRenderer): void;
9
+ readonly renderTargets: Map<number, RenderTargetLike>;
10
+ readonly glRenderTargets: Map<number, GlRenderTarget>;
11
+ current: RenderTargetLike | null;
12
+ protected _msaaSamples: number[];
13
+ protected _hasMRT: boolean;
14
+ protected _writeDepthTexture: boolean;
15
+ projectionMatrix: Projection2D;
16
+ onUpdateContext(): void;
17
+ bind(renderTarget: RenderTargetLike | null, frame?: RectangleLike): void;
18
+ unbind(): void;
19
+ getGlRenderTarget(renderTarget: RenderTargetLike): GlRenderTarget;
20
+ protected _createGlRenderTarget(renderTarget: RenderTargetLike): GlRenderTarget;
21
+ protected _init(renderTarget: RenderTargetLike): void;
22
+ ensureDepthStencil(): void;
23
+ destroyGpuRenderTarget(gpuRenderTarget: GlRenderTarget): void;
24
+ resizeGpuRenderTarget(renderTarget: RenderTargetLike): void;
25
+ protected _initStencil(glRenderTarget: GlRenderTarget): void;
26
+ protected _resizeStencil(glRenderTarget: GlRenderTarget): void;
27
+ protected _resizeColorTextures(renderTarget: RenderTargetLike, glRenderTarget: GlRenderTarget): void;
28
+ finishRenderPass(viewport: RenderTargetLike): void;
29
+ copyToTexture(framebuffer: RenderTargetLike, texture: TextureLike): void;
30
+ reset(): void;
31
+ }
@@ -0,0 +1,2 @@
1
+ export * from './GlRenderTarget';
2
+ export * from './GlRenderTargetSystem';
@@ -0,0 +1,39 @@
1
+ import type { GeometryAttributeLike } from '../../shared';
2
+ export interface GlAttribute extends Omit<GeometryAttributeLike, 'buffer'> {
3
+ location: number;
4
+ }
5
+ export interface GlUniform {
6
+ name: string;
7
+ index: number;
8
+ type: string;
9
+ size: number;
10
+ isArray: boolean;
11
+ value: any;
12
+ }
13
+ export interface GlProgramOptions {
14
+ fragment: string;
15
+ vertex: string;
16
+ name?: string;
17
+ preferredVertexPrecision?: string;
18
+ preferredFragmentPrecision?: string;
19
+ transformFeedbackVaryings?: {
20
+ names: string[];
21
+ bufferMode: 'separate' | 'interleaved';
22
+ };
23
+ }
24
+ export declare class GlProgram {
25
+ static defaultOptions: Partial<GlProgramOptions>;
26
+ readonly id: number;
27
+ fragment: string;
28
+ vertex: string;
29
+ transformFeedbackVaryings?: {
30
+ names: string[];
31
+ bufferMode: 'separate' | 'interleaved';
32
+ };
33
+ _cacheKey?: string;
34
+ attributes: Record<string, GlAttribute>;
35
+ uniforms: Record<string, GlUniform>;
36
+ constructor(options: GlProgramOptions);
37
+ destroy(): void;
38
+ static from(options: GlProgramOptions): GlProgram;
39
+ }
@@ -0,0 +1,4 @@
1
+ export declare class GlProgramData {
2
+ native: WebGLProgram;
3
+ constructor(native: WebGLProgram);
4
+ }
@@ -0,0 +1,22 @@
1
+ import type { ShaderLike } from '../../shared';
2
+ import type { GlRenderer } from '../GlRenderer';
3
+ import type { GlProgram } from './GlProgram';
4
+ import { GlSystem } from '../system';
5
+ import { GlProgramData } from './GlProgramData';
6
+ export declare class GlShaderSystem extends GlSystem {
7
+ install(renderer: GlRenderer): void;
8
+ readonly glProgramDatas: Map<number, GlProgramData>;
9
+ currentProgram: GlProgram | null;
10
+ uniforms: {
11
+ projectionMatrix: number[];
12
+ viewMatrix: number[];
13
+ };
14
+ bind(source: ShaderLike | null): void;
15
+ useProgram(glProgram: GlProgram | null): void;
16
+ getGlProgramData(source: GlProgram): GlProgramData;
17
+ protected _createGlProgramData(glProgram: GlProgram): GlProgramData;
18
+ protected _createGlShader(source: string, target: number): WebGLShader;
19
+ updateUniforms(source: ShaderLike): void;
20
+ reset(): void;
21
+ destroy(): void;
22
+ }
@@ -0,0 +1 @@
1
+ export type GlPrecision = 'highp' | 'mediump' | 'lowp';
@@ -0,0 +1 @@
1
+ export declare function defaultValue(type: string, size: number): number | Float32Array | Int32Array | Uint32Array | boolean | boolean[];
@@ -0,0 +1,3 @@
1
+ import type { GlPrecision } from './const';
2
+ /** @internal */
3
+ export declare function getMaxFragmentPrecision(): GlPrecision;
@@ -0,0 +1,2 @@
1
+ import type { GlRenderingContext } from '../types';
2
+ export declare function getTestContext(): GlRenderingContext;
@@ -0,0 +1,2 @@
1
+ export * from './GlProgram';
2
+ export * from './GlShaderSystem';
@@ -0,0 +1,3 @@
1
+ import type { VertexFormat } from '../../shared';
2
+ export declare function mapType(gl: any, type: number): string;
3
+ export declare function mapGlToVertexFormat(gl: any, type: number): VertexFormat;
@@ -0,0 +1 @@
1
+ export declare function addProgramDefines(src: string, isES300: boolean, isFragment?: boolean): string;
@@ -0,0 +1,9 @@
1
+ import type { GlPrecision } from '../const';
2
+ interface EnsurePrecisionOptions {
3
+ requestedVertexPrecision: GlPrecision;
4
+ requestedFragmentPrecision: GlPrecision;
5
+ maxSupportedVertexPrecision: GlPrecision;
6
+ maxSupportedFragmentPrecision: GlPrecision;
7
+ }
8
+ export declare function ensurePrecision(src: string, options: EnsurePrecisionOptions, isFragment?: boolean): string;
9
+ export {};
@@ -0,0 +1 @@
1
+ export declare function insertVersion(src: string, isES300: boolean): string;
@@ -0,0 +1,3 @@
1
+ export declare function setProgramName(src: string, { name }: {
2
+ name: string;
3
+ }, isFragment?: boolean): string;
@@ -0,0 +1 @@
1
+ export declare function stripVersion(src: string, isES300: boolean): string;
@@ -0,0 +1,20 @@
1
+ export declare enum GlBlendMode {
2
+ normal = "normal",
3
+ add = "add",
4
+ multiply = "multiply",
5
+ screen = "screen",
6
+ none = "none",
7
+ normalNpm = "normalNpm",
8
+ addNpm = "add_npm",
9
+ screenNpm = "screenNpm",
10
+ srcIn = "srcIn",
11
+ srcOut = "srcOut",
12
+ srcAtop = "srcAtop",
13
+ dstOver = "dstOver",
14
+ dstIn = "dstIn",
15
+ dstOut = "dstOut",
16
+ dstAtop = "dstAtop",
17
+ xor = "xor",
18
+ subtract = "subtract"
19
+ }
20
+ export declare function mapGlBlendModes(gl: WebGLRenderingContext): Record<GlBlendMode, any>;
@@ -1,7 +1,8 @@
1
- import type { WebGLRenderer } from '../WebGLRenderer';
2
- import { WebGLBlendMode } from './WebGLBlendMode';
3
- import { WebGLModule } from './WebGLModule';
4
- export interface WebGLState {
1
+ import type { GlRenderer } from '../GlRenderer';
2
+ import type { GlRenderingContext } from '../types';
3
+ import { GlSystem } from '../system';
4
+ import { GlBlendMode } from './GlBlendMode';
5
+ export interface GlState {
5
6
  blend: boolean;
6
7
  offsets: boolean;
7
8
  culling: boolean;
@@ -9,28 +10,28 @@ export interface WebGLState {
9
10
  clockwiseFrontFace: boolean;
10
11
  depthMask: boolean;
11
12
  }
12
- export declare class WebGLState {
13
+ export declare class GlState {
13
14
  static readonly _properties: string[];
14
15
  static _init(): void;
15
- static for2D(): WebGLState;
16
- protected _blendMode: WebGLBlendMode;
16
+ static for2D(): GlState;
17
+ protected _blendMode: GlBlendMode;
17
18
  protected _polygonOffset: number;
18
19
  bitmap: number;
19
- get blendMode(): WebGLBlendMode;
20
- set blendMode(value: WebGLBlendMode);
20
+ get blendMode(): GlBlendMode;
21
+ set blendMode(value: GlBlendMode);
21
22
  get polygonOffset(): number;
22
23
  set polygonOffset(value: number);
23
- constructor(options?: Partial<WebGLState>);
24
+ constructor(options?: Partial<GlState>);
24
25
  }
25
- export declare class WebGLStateModule extends WebGLModule {
26
- install(renderer: WebGLRenderer): void;
26
+ export declare class GlStateSystem extends GlSystem {
27
+ install(renderer: GlRenderer): void;
27
28
  protected _blendEq: boolean;
28
29
  protected _setters: any[];
29
30
  boundStateBitmap: number;
30
31
  boundBlendMode?: string;
31
- blendModes: Record<WebGLBlendMode, any>;
32
- defaultState: WebGLState;
33
- onUpdateContext(): void;
32
+ blendModes: Record<GlBlendMode, any>;
33
+ defaultState: GlState;
34
+ onUpdateContext(gl: GlRenderingContext): void;
34
35
  toggle(boundPoint: number, enable: boolean): void;
35
36
  setBlend(value: boolean): void;
36
37
  setOffsets(value: boolean): void;
@@ -38,8 +39,8 @@ export declare class WebGLStateModule extends WebGLModule {
38
39
  setDepthTest(value: boolean): void;
39
40
  setDepthMask(value: boolean): void;
40
41
  setClockwiseFrontFace(value: boolean): void;
41
- setBlendMode(value: WebGLBlendMode): void;
42
+ setBlendMode(value: GlBlendMode): void;
42
43
  setPolygonOffset(value: number, scale: number): void;
43
- bind(state: WebGLState): void;
44
+ bind(state: GlState): void;
44
45
  reset(): void;
45
46
  }