modern-canvas 0.13.6 → 0.14.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.
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 +4419 -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 -4
  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 +24 -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
@@ -1,4 +1,4 @@
1
- import type { ColorValue, WebGLRenderer } from '../../core';
1
+ import type { ColorValue, GlRenderer } from '../../core';
2
2
  import type { EffectProperties, Node, Viewport } from '../main';
3
3
  import { Color } from '../../core';
4
4
  import { Effect } from '../main/Effect';
@@ -24,5 +24,5 @@ export declare class OutlineEffect extends Effect {
24
24
  knockout: boolean;
25
25
  protected _color: Color;
26
26
  constructor(properties?: Partial<OutlineEffectProperties>, children?: Node[]);
27
- apply(renderer: WebGLRenderer, source: Viewport): void;
27
+ apply(renderer: GlRenderer, source: Viewport): void;
28
28
  }
@@ -1,4 +1,4 @@
1
- import type { WebGLRenderer } from '../../core';
1
+ import type { GlRenderer } from '../../core';
2
2
  import type { EffectProperties, Node, Viewport } from '../main';
3
3
  import { Effect } from '../main/Effect';
4
4
  import { Material } from '../resources';
@@ -9,5 +9,5 @@ export declare class PixelateEffect extends Effect {
9
9
  static material: Material;
10
10
  strength: number;
11
11
  constructor(properties?: Partial<PixelateEffectProperties>, children?: Node[]);
12
- apply(renderer: WebGLRenderer, source: Viewport): void;
12
+ apply(renderer: GlRenderer, source: Viewport): void;
13
13
  }
@@ -1,5 +1,5 @@
1
- import type { WebGLRenderer } from '../../core';
2
- import type { EffectContext, EffectProperties, Node, Viewport } from '../main';
1
+ import type { GlRenderer } from '../../core';
2
+ import type { EffectProperties, Node, Viewport } from '../main';
3
3
  import { Effect } from '../main/Effect';
4
4
  import { Material } from '../resources';
5
5
  export interface ZoomBlurEffectProperties extends EffectProperties {
@@ -15,5 +15,5 @@ export declare class ZoomBlurEffect extends Effect {
15
15
  radius: number;
16
16
  strength: number;
17
17
  constructor(properties?: Partial<ZoomBlurEffectProperties>, children?: Node[]);
18
- apply(renderer: WebGLRenderer, source: Viewport, context: EffectContext): void;
18
+ apply(renderer: GlRenderer, source: Viewport): void;
19
19
  }
@@ -1,23 +1,27 @@
1
1
  import type { LineCap, LineJoin, LineStyle } from 'modern-path2d';
2
- import type { Batchable2D, ColorValue, Transform2D } from '../../core';
2
+ import type { Batchable2D, ColorValue } from '../../core';
3
3
  import { Path2D } from 'modern-path2d';
4
4
  import { Texture2D } from '../resources';
5
+ export type TransformUv = (uvs: Float32Array, index: number) => void;
6
+ export type TransformVertex = (vertices: Float32Array, index: number) => void;
5
7
  export interface CanvasBatchable extends Batchable2D {
6
8
  type: 'stroke' | 'fill';
7
9
  texture?: Texture2D;
8
- uvTransform?: Transform2D;
9
- vertTransform?: Transform2D;
10
+ transformUv?: TransformUv;
11
+ transformVertex?: TransformVertex;
12
+ size?: {
13
+ width: number;
14
+ height: number;
15
+ };
10
16
  }
11
17
  export interface StrokeDraw extends Partial<CanvasBatchable> {
12
18
  type: 'stroke';
13
19
  path: Path2D;
14
20
  lineStyle: LineStyle;
15
- uvTransform?: Transform2D;
16
21
  }
17
22
  export interface FillDraw extends Partial<CanvasBatchable> {
18
23
  type: 'fill';
19
24
  path: Path2D;
20
- uvTransform?: Transform2D;
21
25
  }
22
26
  export declare class CanvasContext extends Path2D {
23
27
  fillStyle?: ColorValue | Texture2D;
@@ -27,12 +31,11 @@ export declare class CanvasContext extends Path2D {
27
31
  lineJoin?: LineJoin;
28
32
  lineWidth?: number;
29
33
  miterLimit?: number;
30
- uvTransform?: Transform2D;
31
- vertTransform?: Transform2D;
34
+ transformUv?: TransformUv;
35
+ transformVertex?: TransformVertex;
32
36
  protected _draws: (StrokeDraw | FillDraw)[];
33
37
  protected _parseDrawStyle(source?: ColorValue | Texture2D): {
34
38
  texture?: Texture2D;
35
- backgroundColor?: number[];
36
39
  };
37
40
  stroke(options?: Partial<StrokeDraw>): void;
38
41
  fillRect(x: number, y: number, width: number, height: number): void;
@@ -41,6 +44,5 @@ export declare class CanvasContext extends Path2D {
41
44
  copy(source: CanvasContext): this;
42
45
  resetStatus(): void;
43
46
  reset(): this;
44
- buildUvs(start: number, vertices: number[], uvs: number[], texture?: Texture2D, uvTransform?: Transform2D): void;
45
47
  toBatchables(): CanvasBatchable[];
46
48
  }
@@ -1,14 +1,12 @@
1
- import type { Batchable2D, ColorValue, WebGLBlendMode, WebGLRenderer } from '../../core';
1
+ import type { Batchable2D, GlBlendMode, GlRenderer } from '../../core';
2
2
  import type { Texture2D } from '../resources';
3
3
  import type { CanvasBatchable } from './CanvasContext';
4
4
  import type { Node } from './Node';
5
5
  import type { TimelineNodeEvents, TimelineNodeProperties } from './TimelineNode';
6
- import { Color } from '../../core';
7
6
  import { CanvasContext } from './CanvasContext';
8
7
  import { TimelineNode } from './TimelineNode';
9
8
  export interface CanvasItemProperties extends TimelineNodeProperties {
10
- modulate: ColorValue;
11
- blendMode: WebGLBlendMode;
9
+ blendMode: GlBlendMode;
12
10
  }
13
11
  export interface CanvasItemEvents extends TimelineNodeEvents {
14
12
  draw: [];
@@ -20,8 +18,7 @@ export interface CanvasItem {
20
18
  emit: <K extends keyof CanvasItemEvents & string>(event: K, ...args: CanvasItemEvents[K]) => this;
21
19
  }
22
20
  export declare class CanvasItem extends TimelineNode {
23
- modulate: ColorValue | undefined;
24
- blendMode: WebGLBlendMode | undefined;
21
+ blendMode: GlBlendMode | undefined;
25
22
  visible: boolean;
26
23
  opacity: number;
27
24
  protected _parentGlobalVisible?: boolean;
@@ -30,14 +27,13 @@ export declare class CanvasItem extends TimelineNode {
30
27
  protected _parentGlobalOpacity?: number;
31
28
  protected _globalOpacity?: number;
32
29
  get globalOpacity(): number;
33
- protected _modulate: Color;
34
30
  context: CanvasContext;
35
31
  protected _resetContext: boolean;
36
- protected _redrawing: boolean;
37
- protected _relayouting: boolean;
38
- protected _repainting: boolean;
39
- protected _originalBatchables: CanvasBatchable[];
40
- protected _layoutedBatchables: CanvasBatchable[];
32
+ needsRender: boolean;
33
+ needsLayout: boolean;
34
+ needsPaint: boolean;
35
+ protected _rawBatchables: CanvasBatchable[];
36
+ protected _layoutBatchables: CanvasBatchable[];
41
37
  protected _batchables: CanvasBatchable[];
42
38
  constructor(properties?: Partial<CanvasItemProperties>, nodes?: Node[]);
43
39
  protected _updateProperty(key: string, value: any, oldValue: any): void;
@@ -45,17 +41,18 @@ export declare class CanvasItem extends TimelineNode {
45
41
  hide(): void;
46
42
  isVisibleInTree(): boolean;
47
43
  canRender(): boolean;
48
- requestRedraw(): void;
49
- requestRelayout(): void;
50
- requestRepaint(): void;
44
+ requestRender(): void;
45
+ requestLayout(): void;
46
+ requestPaint(): void;
51
47
  protected _updateGlobalVisible(): void;
52
48
  protected _updateGlobalOpacity(): void;
53
49
  protected _draw(): void;
50
+ protected _transformUvs(batchable: CanvasBatchable): Float32Array | undefined;
54
51
  protected _redraw(): CanvasBatchable[];
55
52
  protected _relayout(batchables: CanvasBatchable[]): CanvasBatchable[];
56
53
  protected _repaint(batchables: CanvasBatchable[]): CanvasBatchable[];
57
54
  protected _process(delta: number): void;
58
55
  protected _updateBatchables(): void;
59
56
  protected _handleViewportTexture(batchable: Batchable2D): Texture2D | undefined;
60
- protected _render(renderer: WebGLRenderer): void;
57
+ protected _render(renderer: GlRenderer): void;
61
58
  }
@@ -1,4 +1,4 @@
1
- import type { WebGLRenderer } from '../../core';
1
+ import type { GlRenderer } from '../../core';
2
2
  import type { Material } from '../resources';
3
3
  import type { Node } from './Node';
4
4
  import type { SceneTree } from './SceneTree';
@@ -16,7 +16,6 @@ export interface EffectContext {
16
16
  redraw?: boolean;
17
17
  /** parent redraw */
18
18
  target?: Node;
19
- targetArea?: [number, number, number, number];
20
19
  /** transition */
21
20
  from?: Viewport;
22
21
  to?: Viewport;
@@ -26,6 +25,7 @@ export declare class Effect extends TimelineNode {
26
25
  effectMode?: EffectMode;
27
26
  glsl?: string;
28
27
  glslSrc?: string;
28
+ needsRender: boolean;
29
29
  protected get _effectMode(): EffectMode;
30
30
  /** Viewports */
31
31
  readonly viewport1: Viewport;
@@ -45,10 +45,9 @@ export declare class Effect extends TimelineNode {
45
45
  protected _processParent(): void;
46
46
  protected _processChildren(): void;
47
47
  _onProcess(delta?: number): void;
48
- protected _renderBefore(renderer: WebGLRenderer): void;
49
- protected _renderTransition(renderer: WebGLRenderer): void;
50
- protected _renderParentOrChildren(renderer: WebGLRenderer): void;
51
- protected _parseTargetArea(): number[] | undefined;
52
- protected _render(renderer: WebGLRenderer): void;
53
- apply(renderer: WebGLRenderer, viewport: Viewport, context?: EffectContext): void;
48
+ protected _renderBefore(renderer: GlRenderer): void;
49
+ protected _renderTransition(renderer: GlRenderer): void;
50
+ protected _renderParentOrChildren(renderer: GlRenderer): void;
51
+ protected _render(renderer: GlRenderer): void;
52
+ apply(renderer: GlRenderer, viewport: Viewport, context?: EffectContext): void;
54
53
  }
@@ -1,4 +1,4 @@
1
- import type { CoreObjectEvents, InputEvent, InputEventKey, InputEvents, Maskable, WebGLRenderer } from '../../core';
1
+ import type { CoreObjectEvents, GlRenderer, InputEvent, InputEventKey, InputEvents, MaskLike } from '../../core';
2
2
  import type { SceneTree } from './SceneTree';
3
3
  import type { Viewport } from './Viewport';
4
4
  import type { Window } from './Window';
@@ -30,21 +30,30 @@ export interface Node {
30
30
  off: <K extends keyof NodeEvents & string>(event: K, listener: (...args: NodeEvents[K]) => void) => this;
31
31
  emit: <K extends keyof NodeEvents & string>(event: K, ...args: NodeEvents[K]) => this;
32
32
  }
33
- export type ProcessMode = 'inherit' | 'pausable' | 'when_paused' | 'always' | 'disabled';
34
- export type ProcessSortMode = 'default' | 'parent_before';
33
+ export type ProcessMode = 'inherit' | 'pausable' | 'when-paused' | 'always' | 'disabled';
34
+ export type ProcessSortMode = 'default' | 'parent-before';
35
35
  export type RenderMode = 'inherit' | 'always' | 'disabled';
36
36
  export type InputMode = 'inherit' | 'always' | 'disabled';
37
37
  export type InternalMode = 'default' | 'front' | 'back';
38
38
  export interface NodeProperties {
39
39
  id: string;
40
40
  name: string;
41
- mask: Maskable;
41
+ mask: MaskLike;
42
42
  processMode: ProcessMode;
43
43
  processSortMode: ProcessSortMode;
44
44
  renderMode: RenderMode;
45
45
  internalMode: InternalMode;
46
46
  meta: Record<string, any>;
47
47
  }
48
+ export interface SerializedNode {
49
+ [key: string]: any;
50
+ is?: string;
51
+ children?: SerializedNode[];
52
+ meta?: {
53
+ [key: string]: any;
54
+ inCanvasIs?: string;
55
+ };
56
+ }
48
57
  export declare class Node extends CoreObject {
49
58
  readonly is: string;
50
59
  id: string;
@@ -54,7 +63,7 @@ export declare class Node extends CoreObject {
54
63
  renderMode: RenderMode;
55
64
  inputMode: InputMode;
56
65
  internalMode: InternalMode;
57
- mask?: Maskable;
66
+ mask?: MaskLike;
58
67
  protected _meta: Meta;
59
68
  get meta(): Meta;
60
69
  set meta(value: Record<string, any>);
@@ -101,7 +110,7 @@ export declare class Node extends CoreObject {
101
110
  protected _onUnparented(oldParent: Node): void;
102
111
  protected _onReady(): void;
103
112
  protected _onProcess(delta?: number): void;
104
- render(renderer: WebGLRenderer, next?: () => void): void;
113
+ render(renderer: GlRenderer, next?: () => void): void;
105
114
  input(event: InputEvent, key: InputEventKey): void;
106
115
  getIndex(): number;
107
116
  getNode<T extends Node>(path: string): T | undefined;
@@ -109,8 +118,8 @@ export declare class Node extends CoreObject {
109
118
  addSibling(sibling: Node): this;
110
119
  prepend<T extends Node>(nodes: T[]): void;
111
120
  prepend<T extends Node>(...nodes: T[]): void;
112
- append<T extends Node>(nodes: T[]): void;
113
- append<T extends Node>(...nodes: T[]): void;
121
+ append<T extends Node | SerializedNode>(nodes: T[]): void;
122
+ append<T extends Node | SerializedNode>(...nodes: T[]): void;
114
123
  before<T extends Node>(nodes: T[]): void;
115
124
  before<T extends Node>(...nodes: T[]): void;
116
125
  after<T extends Node>(nodes: T[]): void;
@@ -132,9 +141,9 @@ export declare class Node extends CoreObject {
132
141
  protected _unparented(oldParent: Node): void;
133
142
  protected _process(delta: number): void;
134
143
  protected _input(event: InputEvent, key: InputEventKey): void;
135
- protected _render(renderer: WebGLRenderer): void;
144
+ protected _render(renderer: GlRenderer): void;
136
145
  destroy(): void;
137
146
  clone(): this;
138
147
  toJSON(): Record<string, any>;
139
- static parse(value: any): any;
148
+ static parse(value: SerializedNode | SerializedNode[]): any;
140
149
  }
@@ -1,15 +1,18 @@
1
- import type { WebGLRenderer } from '../../core';
1
+ import type { GlRenderer } from '../../core';
2
2
  import type { Node } from './Node';
3
+ export type Renderable = Node & {
4
+ needsRender?: boolean;
5
+ };
3
6
  export interface RenderCall {
4
- renderable: Node;
5
- fn: (renderer: WebGLRenderer, next: () => void) => void;
7
+ renderable: Renderable;
8
+ fn: (renderer: GlRenderer, next: () => void) => void;
6
9
  parentCall: RenderCall | undefined;
7
10
  calls: RenderCall[];
8
11
  }
9
12
  export declare class RenderStack {
10
13
  currentCall?: RenderCall;
11
14
  calls: RenderCall[];
12
- createCall(renderable: Node): RenderCall;
13
- push(renderable: Node): RenderCall;
14
- render(renderer: WebGLRenderer): void;
15
+ createCall(renderable: Renderable): RenderCall;
16
+ push(renderable: Renderable): RenderCall;
17
+ render(renderer: GlRenderer): void;
15
18
  }
@@ -1,6 +1,6 @@
1
1
  import type { Fonts } from 'modern-font';
2
2
  import type { Hex8Color } from 'modern-idoc';
3
- import type { InputEvents, MainLoopEvents, MainLoopProperties, WebGLRenderer } from '../../core';
3
+ import type { GlRenderer, InputEvents, MainLoopEvents, MainLoopProperties } from '../../core';
4
4
  import type { Node } from './Node';
5
5
  import type { Viewport } from './Viewport';
6
6
  import { Color, Input, MainLoop } from '../../core';
@@ -24,6 +24,7 @@ export interface SceneTree {
24
24
  export interface SceneTreeProperties extends MainLoopProperties {
25
25
  msaa: boolean;
26
26
  pixelate: boolean;
27
+ roundPixels: boolean;
27
28
  backgroundColor: Hex8Color;
28
29
  debug: boolean;
29
30
  processPaused: boolean;
@@ -33,6 +34,7 @@ export interface SceneTreeProperties extends MainLoopProperties {
33
34
  export declare class SceneTree extends MainLoop {
34
35
  msaa: boolean;
35
36
  pixelate: boolean;
37
+ roundPixels: boolean;
36
38
  backgroundColor?: Hex8Color;
37
39
  debug: boolean;
38
40
  processPaused: boolean;
@@ -44,14 +46,14 @@ export declare class SceneTree extends MainLoop {
44
46
  protected _backgroundColor: Color;
45
47
  protected _previousViewport?: Viewport;
46
48
  protected _currentViewport?: Viewport;
47
- getCurrentViewport(): Viewport | undefined;
48
49
  getPreviousViewport(): Viewport | undefined;
50
+ getCurrentViewport(): Viewport | undefined;
49
51
  setCurrentViewport(viewport: Viewport | undefined): void;
50
52
  constructor(properties?: Partial<SceneTreeProperties>);
51
53
  protected _updateProperty(key: string, value: any, oldValue: any): void;
52
54
  log(...args: any[]): void;
53
55
  protected _process(delta?: number): void;
54
- protected _render(renderer: WebGLRenderer): void;
55
- protected _renderScreen(renderer: WebGLRenderer): void;
56
+ protected _render(renderer: GlRenderer): void;
57
+ protected _renderScreen(renderer: GlRenderer): void;
56
58
  destroy(): void;
57
59
  }
@@ -1,8 +1,9 @@
1
- import type { Vector2, Vector2Data, WebGLFramebufferOptions, WebGLRenderer } from '../../core';
1
+ import type { GlRenderer, RectangleLike, Vector2, Vector2Data } from '../../core';
2
+ import type { Texture2D } from '../resources';
2
3
  import type { Rectangulable, RectangulableEvents } from './interfaces';
3
4
  import type { NodeEvents } from './Node';
4
- import { Projection2D, Rect2, Transform2D } from '../../core';
5
- import { ViewportTexture } from '../resources';
5
+ import { Rectangle, Transform2D } from '../../core';
6
+ import { RenderTarget } from '../resources';
6
7
  import { Node } from './Node';
7
8
  export interface ViewportEvents extends NodeEvents, RectangulableEvents {
8
9
  }
@@ -12,40 +13,31 @@ export interface Viewport {
12
13
  off: <K extends keyof ViewportEvents & string>(event: K, listener: (...args: ViewportEvents[K]) => void) => this;
13
14
  emit: <K extends keyof ViewportEvents & string>(event: K, ...args: ViewportEvents[K]) => this;
14
15
  }
15
- export interface ViewportFramebuffer {
16
- texture: ViewportTexture;
17
- needsUpload: boolean;
18
- }
19
16
  export declare class Viewport extends Node implements Rectangulable {
20
- flipY: boolean;
21
- readonly projection: Projection2D;
22
17
  readonly canvasTransform: Transform2D;
23
- protected _framebufferIndex: number;
24
- protected _framebuffers: ViewportFramebuffer[];
18
+ renderTargetIndex: number;
19
+ readonly renderTargets: RenderTarget[];
25
20
  x: number;
26
21
  y: number;
27
22
  width: number;
28
23
  height: number;
24
+ mipLevel: number;
29
25
  msaa: boolean;
30
26
  get valid(): boolean;
31
- get framebuffer(): ViewportFramebuffer;
32
- get texture(): ViewportTexture;
27
+ get renderTarget(): RenderTarget;
28
+ get previousRenderTarget(): RenderTarget;
29
+ get texture(): Texture2D<null>;
33
30
  getViewport(): Viewport;
34
- constructor(flipY?: boolean);
35
- /** @internal */
36
- _glFramebufferOptions(renderer: WebGLRenderer): WebGLFramebufferOptions;
37
- /** @internal */
38
- _glFramebuffer(renderer: WebGLRenderer): WebGLFramebuffer;
39
31
  protected _updateProperty(key: string, value: any, oldValue: any): void;
40
- requestUpload(): void;
32
+ flush(renderer: GlRenderer): void;
41
33
  resize(width: number, height: number): void;
42
- upload(renderer: WebGLRenderer): boolean;
43
- activate(renderer: WebGLRenderer): boolean;
44
- flush(renderer: WebGLRenderer): void;
45
- redraw(renderer: WebGLRenderer, cb: () => void): boolean;
46
- activateWithCopy(renderer: WebGLRenderer, target: Viewport): void;
47
- render(renderer: WebGLRenderer, next?: () => void): void;
48
- getRect(): Rect2;
34
+ activate(renderer: GlRenderer, frame?: RectangleLike): boolean;
35
+ redraw(renderer: GlRenderer, cb: () => void): boolean;
36
+ activateWithCopy(renderer: GlRenderer, target: Viewport): void;
37
+ renderStart(renderer: GlRenderer, frame?: RectangleLike): void;
38
+ renderEnd(renderer: GlRenderer, oldViewport: Viewport | undefined): void;
39
+ render(renderer: GlRenderer, next?: () => void): void;
40
+ getRect(): Rectangle;
49
41
  toCanvasGlobal<P extends Vector2Data = Vector2>(screenPos: Vector2Data, newPos?: P): P;
50
42
  toCanvasScreen<P extends Vector2Data = Vector2>(globalPos: Vector2Data, newPos?: P): P;
51
43
  }
@@ -1,7 +1,7 @@
1
- import type { WebGLRenderer } from '../../core';
1
+ import type { GlRenderer } from '../../core';
2
2
  import { Viewport } from './Viewport';
3
3
  export declare class Window extends Viewport {
4
- msaa: boolean;
5
- finish(renderer: WebGLRenderer): void;
6
- flush(renderer: WebGLRenderer): void;
4
+ constructor();
5
+ finish(renderer: GlRenderer): void;
6
+ flush(renderer: GlRenderer): void;
7
7
  }
@@ -1,4 +1,4 @@
1
- import type { Rect2 } from '../../../core';
1
+ import type { Rectangle } from '../../../core';
2
2
  export interface RectangulableEvents {
3
3
  updateRect: [];
4
4
  }
@@ -9,5 +9,5 @@ export interface Rectangulable {
9
9
  emit: <K extends keyof RectangulableEvents & string>(event: K, ...args: RectangulableEvents[K]) => this;
10
10
  }
11
11
  export interface Rectangulable {
12
- getRect: () => Rect2;
12
+ getRect: () => Rectangle;
13
13
  }
@@ -0,0 +1,24 @@
1
+ import type { GlRenderer, RectangleLike, RenderTargetLikeReactiveObject, ResourceEvents } from '../../core';
2
+ import { Resource } from '../../core';
3
+ import { Texture2D } from '../resources';
4
+ export interface RenderTargetEvents extends ResourceEvents {
5
+ }
6
+ export interface RenderTarget {
7
+ on: <K extends keyof RenderTargetEvents & string>(event: K, listener: (...args: RenderTargetEvents[K]) => void) => this;
8
+ once: <K extends keyof RenderTargetEvents & string>(event: K, listener: (...args: RenderTargetEvents[K]) => void) => this;
9
+ off: <K extends keyof RenderTargetEvents & string>(event: K, listener: (...args: RenderTargetEvents[K]) => void) => this;
10
+ emit: <K extends keyof RenderTargetEvents & string>(event: K, ...args: RenderTargetEvents[K]) => this;
11
+ }
12
+ export declare class RenderTarget extends Resource implements RenderTargetLikeReactiveObject {
13
+ isRoot: boolean;
14
+ x: number;
15
+ y: number;
16
+ width: number;
17
+ height: number;
18
+ mipLevel: number;
19
+ msaa: boolean;
20
+ colorTextures: Texture2D<null>[];
21
+ get valid(): boolean;
22
+ get colorTexture(): Texture2D<null>;
23
+ activate(renderer: GlRenderer, frame?: RectangleLike): boolean;
24
+ }
@@ -1,24 +1,15 @@
1
- import type { WebGLDrawMode, WebGLRenderer, WebGLVertexArrayObjectOptions } from '../../../core';
1
+ import type { GeometryLikeObject, GeometryLikeReactiveObject, GlRenderer, Topology } from '../../../core';
2
2
  import type { Material } from '../materials/Material';
3
- import type { IndexBuffer } from './IndexBuffer';
4
3
  import type { VertexAttribute } from './VertexAttribute';
5
- import { RawWeakMap, Resource } from '../../../core';
6
- export interface GeometryOptions {
7
- vertexAttributes?: Record<string, VertexAttribute>;
8
- indexBuffer?: IndexBuffer;
9
- instanceCount?: number;
10
- mode?: WebGLDrawMode;
4
+ import { Resource } from '../../../core';
5
+ import { IndexBuffer } from './IndexBuffer';
6
+ export interface GeometryProperties extends Partial<Omit<GeometryLikeObject, 'instanceId'>> {
11
7
  }
12
- export declare class Geometry extends Resource {
13
- vertexAttributes: Map<string, VertexAttribute>;
14
- indexBuffer?: IndexBuffer;
15
- instanceCount?: number;
16
- mode: WebGLDrawMode;
17
- protected _materialWeakMap: RawWeakMap<Material, Record<string, any>>;
18
- constructor(options?: GeometryOptions);
19
- /** @internal */
20
- _glVertexArray(renderer: WebGLRenderer): WebGLVertexArrayObjectOptions;
21
- /** @internal */
22
- _glVertexArrayObject(renderer: WebGLRenderer, material: Material): WebGLVertexArrayObject | null;
23
- draw(renderer: WebGLRenderer, material: Material, uniforms?: Record<string, any>): void;
8
+ export declare class Geometry extends Resource implements GeometryLikeReactiveObject {
9
+ topology: Topology;
10
+ attributes: Record<string, VertexAttribute>;
11
+ indexBuffer: IndexBuffer;
12
+ instanceCount: number;
13
+ constructor(properties?: GeometryProperties);
14
+ draw(renderer: GlRenderer, material: Material, uniforms?: Record<string, any>): void;
24
15
  }
@@ -1,18 +1,9 @@
1
- import type { WebGLBufferOptions, WebGLRenderer } from '../../../core';
2
- import { Resource } from '../../../core';
3
- export interface IndexBufferOptions {
4
- data?: Uint16Array<ArrayBuffer> | null;
5
- dynamic?: boolean;
1
+ import type { BufferLikeObject, BufferLikeReactiveObject } from '../../../core';
2
+ import { BufferUsage, Resource } from '../../../core';
3
+ export interface IndexBufferProperties extends Partial<Omit<BufferLikeObject, 'instanceId'>> {
6
4
  }
7
- export declare class IndexBuffer extends Resource {
8
- data: Uint16Array<ArrayBuffer> | null;
9
- dynamic: boolean;
10
- needsUpload: boolean;
11
- constructor(options?: IndexBufferOptions);
12
- /** @internal */
13
- _glBufferOptions(): WebGLBufferOptions;
14
- /** @internal */
15
- _glBuffer(renderer: WebGLRenderer): WebGLBuffer;
16
- protected _updateProperty(key: string, value: any, oldValue: any): void;
17
- upload(renderer: WebGLRenderer): boolean;
5
+ export declare class IndexBuffer extends Resource implements BufferLikeReactiveObject {
6
+ usage: BufferUsage;
7
+ data: BufferLikeObject['data'];
8
+ constructor(properties?: IndexBufferProperties);
18
9
  }
@@ -1,9 +1,9 @@
1
- import type { WebGLRenderer } from '../../../core';
1
+ import type { GlRenderer } from '../../../core';
2
2
  import type { Material } from '../materials';
3
3
  import { Geometry } from './Geometry';
4
4
  export declare class QuadUvGeometry extends Geometry {
5
5
  protected static _instance: QuadUvGeometry;
6
6
  static get instance(): QuadUvGeometry;
7
- static draw(renderer: WebGLRenderer, material?: Material, uniforms?: Record<string, any>): void;
7
+ static draw(renderer: GlRenderer, material?: Material, uniforms?: Record<string, any>): void;
8
8
  constructor();
9
9
  }
@@ -1,7 +1,10 @@
1
+ import type { GeometryProperties } from './Geometry';
1
2
  import { Geometry } from './Geometry';
2
3
  import { VertexBuffer } from './VertexBuffer';
4
+ export interface UvGeometryProperties extends GeometryProperties {
5
+ }
3
6
  export declare class UvGeometry extends Geometry {
4
7
  positionBuffer: VertexBuffer;
5
8
  uvBuffer: VertexBuffer;
6
- constructor();
9
+ constructor(properties: UvGeometryProperties);
7
10
  }
@@ -1,24 +1,15 @@
1
+ import type { GeometryAttributeLike, VertexFormat } from '../../../core';
1
2
  import { Resource } from '../../../core';
2
3
  import { VertexBuffer } from './VertexBuffer';
3
- export interface VertexAttributeOptions {
4
- buffer?: VertexBuffer;
5
- size?: number;
6
- normalized?: boolean;
7
- type?: 'float' | 'unsigned_byte' | 'unsigned_short';
4
+ export interface VertexAttributeProperties extends Partial<GeometryAttributeLike> {
5
+ }
6
+ export declare class VertexAttribute extends Resource implements GeometryAttributeLike {
7
+ buffer: VertexBuffer;
8
+ format: VertexFormat;
9
+ instance?: boolean;
8
10
  stride?: number;
9
11
  offset?: number;
12
+ start?: number;
10
13
  divisor?: number;
11
- }
12
- export declare class VertexAttribute extends Resource {
13
- buffer: VertexBuffer;
14
- size: number;
15
- normalized: boolean;
16
- type: 'float' | 'unsigned_byte' | 'unsigned_short';
17
- stride: number | undefined;
18
- offset: number | undefined;
19
- divisor: number | undefined;
20
- needsUpload: boolean;
21
- constructor(options?: VertexAttributeOptions);
22
- protected _updateProperty(key: string, value: any, oldValue: any): void;
23
- upload(): boolean;
14
+ constructor(properties?: VertexAttributeProperties);
24
15
  }
@@ -1,18 +1,9 @@
1
- import type { WebGLBufferOptions, WebGLRenderer } from '../../../core';
2
- import { Resource } from '../../../core';
3
- export interface VertexBufferOptions {
4
- data?: BufferSource | null;
5
- dynamic?: boolean;
1
+ import type { BufferLikeObject, BufferLikeReactiveObject } from '../../../core';
2
+ import { BufferUsage, Resource } from '../../../core';
3
+ export interface VertexBufferProperties extends Partial<Omit<BufferLikeObject, 'instanceId'>> {
6
4
  }
7
- export declare class VertexBuffer extends Resource {
8
- data: BufferSource | null;
9
- dynamic: boolean;
10
- needsUpload: boolean;
11
- constructor(options?: VertexBufferOptions);
12
- /** @internal */
13
- _glBufferOptions(): WebGLBufferOptions;
14
- /** @internal */
15
- _glBuffer(renderer: WebGLRenderer): WebGLBuffer;
16
- protected _updateProperty(key: string, value: any, oldValue: any): void;
17
- upload(renderer: WebGLRenderer): boolean;
5
+ export declare class VertexBuffer extends Resource implements BufferLikeReactiveObject {
6
+ usage: BufferUsage;
7
+ data: BufferLikeObject['data'];
8
+ constructor(properties?: VertexBufferProperties);
18
9
  }
@@ -1,3 +1,4 @@
1
1
  export * from './geometries';
2
2
  export * from './materials';
3
+ export * from './RenderTarget';
3
4
  export * from './textures';
@@ -1,7 +1,5 @@
1
1
  import { Material } from './Material';
2
2
  export declare class EffectMaterial extends Material {
3
- vert: string;
4
- readonly uniforms: Map<string, any>;
5
3
  static RE: {
6
4
  getColor: RegExp;
7
5
  getFromColor: RegExp;