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
@@ -1,17 +1,13 @@
1
- import type { WebGLRenderer } from '../../../core';
2
- import { Resource } from '../../../core';
3
- export interface MaterialOptions {
4
- vert?: string;
5
- frag?: string;
1
+ import type { GlProgramOptions, GlRenderer, ShaderLikeReactiveObject } from '../../../core';
2
+ import { GlProgram, Resource } from '../../../core';
3
+ export interface MaterialProperties {
4
+ gl?: Partial<GlProgramOptions>;
6
5
  uniforms?: Record<string, any>;
7
6
  }
8
- export declare class Material extends Resource {
7
+ export declare class Material extends Resource implements ShaderLikeReactiveObject {
9
8
  static instance: Material;
10
- vert: string;
11
- frag: string;
12
- readonly uniforms: Map<string, any>;
13
- constructor(options?: MaterialOptions);
14
- /** @internal */
15
- _glProgram(renderer: WebGLRenderer): WebGLProgram;
16
- activate(renderer: WebGLRenderer, uniforms?: Record<string, any>): void;
9
+ readonly glProgram: GlProgram;
10
+ uniforms: Record<string, any>;
11
+ constructor(properties?: MaterialProperties);
12
+ activate(renderer: GlRenderer, uniforms?: Record<string, any>): void;
17
13
  }
@@ -1,6 +1,8 @@
1
+ import type { Texture2DProperties } from './Texture2D';
1
2
  import { Texture2D } from './Texture2D';
3
+ export interface CanvasTextureProperties extends Texture2DProperties<HTMLCanvasElement> {
4
+ }
2
5
  export declare class CanvasTexture extends Texture2D<HTMLCanvasElement> {
3
- pixelRatio: number;
4
- constructor(source?: HTMLCanvasElement);
6
+ constructor(properties?: CanvasTextureProperties);
5
7
  protected _updateProperty(key: string, value: any, oldValue: any): void;
6
8
  }
@@ -1,7 +1,8 @@
1
1
  import type { ColorValue } from '../../../core';
2
+ import { Color } from '../../../core';
2
3
  import { Texture2D } from './Texture2D';
3
4
  export declare class ColorTexture extends Texture2D {
4
5
  protected static _cached: Map<string, ColorTexture>;
5
- static get(value: ColorValue): Texture2D;
6
- constructor(value: ColorValue);
6
+ static get(value: ColorValue): ColorTexture;
7
+ constructor(value: ColorValue | Color);
7
8
  }
@@ -1,8 +1,8 @@
1
1
  import type { LinearGradient, RadialGradient } from 'modern-idoc';
2
- import type { Texture2DPixelsSource } from './Texture2D';
2
+ import type { Texture2DProperties } from './Texture2D';
3
3
  import { Texture2D } from './Texture2D';
4
4
  export declare class GradientTexture extends Texture2D {
5
5
  static test(value: string): boolean;
6
- static linearGradient(linearGradient: LinearGradient, width: number, height: number): Texture2DPixelsSource;
6
+ static linearGradient(linearGradient: LinearGradient, width: number, height: number): Texture2DProperties;
7
7
  constructor(gradient: LinearGradient | RadialGradient, width: number, height: number);
8
8
  }
@@ -1,6 +1,7 @@
1
- import type { Texture2DPixelsSource } from './Texture2D';
1
+ import type { Texture2DProperties } from './Texture2D';
2
2
  import { Texture2D } from './Texture2D';
3
- export declare class PixelsTexture extends Texture2D<Texture2DPixelsSource> {
4
- constructor(pixels?: number[] | ArrayBufferLike | ArrayBufferView | null, width?: number, height?: number);
5
- protected _updateProperty(key: string, value: any, oldValue: any): void;
3
+ export interface PixelsTextureProperties extends Texture2DProperties<ArrayBufferView | null> {
4
+ }
5
+ export declare class PixelsTexture extends Texture2D<ArrayBufferView | null> {
6
+ constructor(properties?: PixelsTextureProperties);
6
7
  }
@@ -1,42 +1,40 @@
1
- import type { WebGLRenderer, WebGLTextureFilterMode, WebGLTextureOptions, WebGLTextureWrapMode } from '../../../core';
1
+ import type { AlphaMode, GlRenderer, ScaleMode, TextureFormat, TextureLikeObject, TextureLikeReactiveObject, TextureSource, WrapMode } from '../../../core';
2
2
  import { Resource } from '../../../core';
3
- export type Texture2DFilterMode = WebGLTextureFilterMode;
4
- export type Texture2DWrapMode = WebGLTextureWrapMode;
5
- export interface Texture2DPixelsSource {
6
- width: number;
7
- height: number;
8
- pixels: Uint8Array | null;
3
+ export interface Texture2DProperties<T extends TextureSource = TextureSource> extends Partial<Omit<TextureLikeObject, 'source'>> {
4
+ source?: T;
9
5
  }
10
- export type Texture2DSource = TexImageSource | Texture2DPixelsSource;
11
- export declare class Texture2D<T extends Texture2DSource = Texture2DSource> extends Resource {
6
+ export declare class Texture2D<T extends TextureSource = TextureSource> extends Resource implements TextureLikeReactiveObject {
12
7
  static get EMPTY(): Texture2D;
13
8
  static get WHITE(): Texture2D;
14
9
  static get BLACK(): Texture2D;
15
10
  static get RED(): Texture2D;
16
11
  static get GREEN(): Texture2D;
17
12
  static get BLUE(): Texture2D;
13
+ uploadMethodId: string;
18
14
  source: T;
19
15
  width: number;
20
16
  height: number;
21
- filterMode: Texture2DFilterMode;
22
- wrapMode: Texture2DWrapMode;
23
17
  pixelRatio: number;
24
- protected _isPowerOfTwo: boolean;
25
- protected _needsUpload: boolean;
26
- get realWidth(): number;
27
- get realHeight(): number;
28
- constructor(source: T);
18
+ format: TextureFormat;
19
+ alphaMode: AlphaMode;
20
+ mipLevelCount: number;
21
+ mipmap: boolean;
22
+ addressModeU: WrapMode;
23
+ addressModeV: WrapMode;
24
+ addressModeW: WrapMode;
25
+ magFilter: ScaleMode;
26
+ minFilter: ScaleMode;
27
+ mipmapFilter: ScaleMode;
28
+ isPowerOfTwo: boolean;
29
+ get sourceWidth(): number;
30
+ get sourceHeight(): number;
31
+ get pixelWidth(): number;
32
+ get pixelHeight(): number;
33
+ constructor(properties?: Texture2DProperties<T>);
29
34
  isValid(): boolean;
30
- /** @internal */
31
- _glTextureOptions(renderer: WebGLRenderer, options?: Partial<WebGLTextureOptions>): WebGLTextureOptions;
32
- /** @internal */
33
- _glTexture(renderer: WebGLRenderer, options?: Partial<WebGLTextureOptions>): WebGLTexture;
34
35
  protected _updateProperty(key: string, value: any, oldValue: any): void;
35
- protected _updatePOT(): void;
36
36
  updateSize(): void;
37
- requestUpload(): void;
38
- upload(renderer: WebGLRenderer, options?: Partial<WebGLTextureOptions>): boolean;
39
- activate(renderer: WebGLRenderer, location?: number): boolean;
40
- inactivate(renderer: WebGLRenderer): void;
37
+ activate(renderer: GlRenderer, location?: number): boolean;
38
+ inactivate(renderer: GlRenderer): void;
41
39
  destroy(): void;
42
40
  }
@@ -8,7 +8,7 @@ export interface VideoTextureOptions {
8
8
  muted?: boolean;
9
9
  playsinline?: boolean;
10
10
  }
11
- export interface VideoTextureSource {
11
+ export interface VideoTextureLike {
12
12
  src: string;
13
13
  mime: string;
14
14
  }
@@ -30,7 +30,7 @@ export declare class VideoTexture extends Texture2D<HTMLVideoElement> {
30
30
  protected _requestId?: number;
31
31
  protected _resolve?: (val: this) => void;
32
32
  protected _reject?: (event: ErrorEvent) => void;
33
- constructor(source: HTMLVideoElement | (string | VideoTextureSource)[] | string, options?: VideoTextureOptions);
33
+ constructor(source: HTMLVideoElement | (string | VideoTextureLike)[] | string, options?: VideoTextureOptions);
34
34
  protected _updateProperty(key: string, value: any, oldValue: any): void;
35
35
  protected _onPlayStart: () => void;
36
36
  protected _onPlayStop: () => void;
@@ -1,3 +1,3 @@
1
- import { PixelsTexture } from './PixelsTexture';
2
- export declare class ViewportTexture extends PixelsTexture {
1
+ import { Texture2D } from './Texture2D';
2
+ export declare class ViewportTexture extends Texture2D<null> {
3
3
  }
@@ -2,7 +2,6 @@ export * from './AnimatedTexture';
2
2
  export * from './CanvasTexture';
3
3
  export * from './ColorTexture';
4
4
  export * from './GradientTexture';
5
- export * from './ImageTexture';
6
5
  export * from './PixelsTexture';
7
6
  export * from './Texture2D';
8
7
  export * from './VideoTexture';
@@ -1,4 +1,4 @@
1
- import type { WebGLRenderer } from '../../core';
1
+ import type { GlRenderer } from '../../core';
2
2
  import type { Viewport } from '../main';
3
3
  import { Transition } from '../main/Transition';
4
4
  import { Material } from '../resources';
@@ -6,5 +6,5 @@ export declare class KawaseTransition extends Transition {
6
6
  blur: number;
7
7
  quality: number;
8
8
  static material: Material;
9
- apply(renderer: WebGLRenderer, target: Viewport): void;
9
+ apply(renderer: GlRenderer, target: Viewport): void;
10
10
  }
@@ -1,7 +1,7 @@
1
- import type { WebGLRenderer } from '../../core';
1
+ import type { GlRenderer } from '../../core';
2
2
  import { Transition } from '../main/Transition';
3
3
  import { Material } from '../resources';
4
4
  export declare class LeftEraseTransition extends Transition {
5
5
  static material: Material;
6
- apply(renderer: WebGLRenderer): void;
6
+ apply(renderer: GlRenderer): void;
7
7
  }
@@ -1,4 +1,4 @@
1
- import type { WebGLRenderer } from '../../core';
1
+ import type { GlRenderer } from '../../core';
2
2
  import type { Viewport } from '../main';
3
3
  import { Transition } from '../main/Transition';
4
4
  import { Material } from '../resources';
@@ -6,5 +6,5 @@ export declare class TiltShiftTransition extends Transition {
6
6
  blur: number;
7
7
  gradientBlur: number;
8
8
  static material: Material;
9
- apply(renderer: WebGLRenderer, target: Viewport): void;
9
+ apply(renderer: GlRenderer, target: Viewport): void;
10
10
  }
@@ -1,4 +1,4 @@
1
- import type { WebGLRenderer } from '../../core';
1
+ import type { GlRenderer } from '../../core';
2
2
  import type { Viewport } from '../main';
3
3
  import { Transition } from '../main/Transition';
4
4
  import { Material } from '../resources';
@@ -8,5 +8,5 @@ export declare class TwistTransition extends Transition {
8
8
  padding: number;
9
9
  offset?: number;
10
10
  static material: Material;
11
- apply(renderer: WebGLRenderer, source: Viewport): void;
11
+ apply(renderer: GlRenderer, source: Viewport): void;
12
12
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "modern-canvas",
3
3
  "type": "module",
4
- "version": "0.13.6",
4
+ "version": "0.14.0",
5
5
  "packageManager": "pnpm@10.19.0",
6
6
  "description": "A JavaScript WebGL rendering engine. only the ESM.",
7
7
  "author": "wxm",
@@ -64,7 +64,7 @@
64
64
  "colord": "^2.9.3",
65
65
  "earcut": "^3.0.2",
66
66
  "modern-font": "^0.4.4",
67
- "modern-idoc": "^0.10.5",
67
+ "modern-idoc": "^0.10.6",
68
68
  "modern-path2d": "^1.4.11",
69
69
  "modern-text": "^1.10.4"
70
70
  },
@@ -85,20 +85,20 @@
85
85
  }
86
86
  },
87
87
  "devDependencies": {
88
- "@antfu/eslint-config": "^6.2.0",
88
+ "@antfu/eslint-config": "^6.4.2",
89
89
  "@types/earcut": "^3.0.0",
90
90
  "@types/node": "^24.10.1",
91
- "bumpp": "^10.3.1",
91
+ "bumpp": "^10.3.2",
92
92
  "conventional-changelog-cli": "^5.0.0",
93
93
  "eslint": "^9.39.1",
94
- "lint-staged": "^16.2.6",
94
+ "lint-staged": "^16.2.7",
95
95
  "lottie-web": "^5.13.0",
96
96
  "modern-gif": "^2.0.4",
97
97
  "simple-git-hooks": "^2.13.1",
98
98
  "typescript": "^5.9.3",
99
99
  "unbuild": "^3.6.1",
100
- "vite": "^7.2.2",
101
- "vitest": "^4.0.9",
100
+ "vite": "^7.2.6",
101
+ "vitest": "^4.0.15",
102
102
  "yoga-layout": "^3.2.1"
103
103
  },
104
104
  "simple-git-hooks": {
@@ -1,2 +0,0 @@
1
- export * from './Renderer';
2
- export * from './webgl';
@@ -1,52 +0,0 @@
1
- import type { WebGLDrawOptions, WebGLExtensions, WebGLTarget } from './types';
2
- import { Renderer } from '../Renderer';
3
- import { WebGLBatch2DModule, WebGLBufferModule, WebGLFramebufferModule, WebGLMaskModule, WebGLProgramModule, WebGLScissorModule, WebGLStateModule, WebGLStencilModule, WebGLTextureModule, WebGLVertexArrayModule, WebGLViewportModule } from './modules';
4
- export interface WebGLRenderer {
5
- texture: WebGLTextureModule;
6
- buffer: WebGLBufferModule;
7
- framebuffer: WebGLFramebufferModule;
8
- program: WebGLProgramModule;
9
- vertexArray: WebGLVertexArrayModule;
10
- viewport: WebGLViewportModule;
11
- state: WebGLStateModule;
12
- mask: WebGLMaskModule;
13
- scissor: WebGLScissorModule;
14
- stencil: WebGLStencilModule;
15
- batch2D: WebGLBatch2DModule;
16
- }
17
- export declare class WebGLRenderer extends Renderer {
18
- gl: WebGLRenderingContext | WebGL2RenderingContext;
19
- version: 1 | 2;
20
- extensions: WebGLExtensions;
21
- protected _modules: (WebGLTextureModule | WebGLBufferModule | WebGLFramebufferModule | WebGLProgramModule | WebGLVertexArrayModule | WebGLViewportModule | WebGLStateModule | WebGLMaskModule | WebGLScissorModule | WebGLStencilModule | WebGLBatch2DModule)[];
22
- readonly bindPoints: Map<number, WebGLTarget>;
23
- constructor(view?: HTMLCanvasElement | WebGLRenderingContext | WebGL2RenderingContext, options?: WebGLContextAttributes);
24
- protected _setupContext(view: HTMLCanvasElement, options?: WebGLContextAttributes): this;
25
- /**
26
- * Setup extensions
27
- *
28
- * @protected
29
- */
30
- protected _setupExtensions(): this;
31
- /**
32
- * Setup bind points
33
- *
34
- * @protected
35
- */
36
- protected _setupBindPoints(): this;
37
- /**
38
- * Setup polyfill
39
- *
40
- * @protected
41
- */
42
- protected _setupPolyfill(): this;
43
- protected _onContextLost(event: WebGLContextEvent): void;
44
- protected _onContextRestored(): void;
45
- getBindPoint(target: WebGLTarget): number;
46
- clear(mask?: number): void;
47
- draw(options?: WebGLDrawOptions): void;
48
- reset(): void;
49
- flush(): void;
50
- destroy(): void;
51
- toPixels(x?: number, y?: number, width?: number, height?: number): Uint8ClampedArray<ArrayBuffer>;
52
- }
@@ -1,3 +0,0 @@
1
- export * from './modules';
2
- export * from './types';
3
- export * from './WebGLRenderer';
@@ -1,45 +0,0 @@
1
- import type { WebGLDrawOptions, WebGLVertexAttrib } from '../types';
2
- import type { WebGLRenderer } from '../WebGLRenderer';
3
- import { WebGLBlendMode } from './WebGLBlendMode';
4
- import { WebGLModule } from './WebGLModule';
5
- import { WebGLState } from './WebGLStateModule';
6
- export interface Batchable2D {
7
- vertices: Float32Array;
8
- indices: Float32Array;
9
- uvs?: Float32Array;
10
- size?: Float32Array;
11
- texture?: WebGLTexture;
12
- backgroundColor?: number[];
13
- modulate?: number[];
14
- blendMode?: WebGLBlendMode;
15
- disableWrapMode?: boolean;
16
- }
17
- interface Shader {
18
- update: (attributeBuffer: ArrayBuffer, indexBuffer: Uint16Array<ArrayBuffer>) => void;
19
- draw: (options?: WebGLDrawOptions) => void;
20
- }
21
- export declare class WebGLBatch2DModule extends WebGLModule {
22
- install(renderer: WebGLRenderer): void;
23
- protected _state: WebGLState;
24
- protected _batchSize: number;
25
- protected _drawCallUid: number;
26
- protected _defaultModulate: number[];
27
- protected _defaultBackgroundColor: number[];
28
- protected _batchables: Batchable2D[];
29
- protected _vertexCount: number;
30
- protected _indexCount: number;
31
- protected _attributeBuffer: ArrayBuffer[];
32
- protected _indexBuffers: Uint16Array<ArrayBuffer>[];
33
- protected _shaders: Map<number, Shader>;
34
- protected _attributes: Record<string, Partial<WebGLVertexAttrib>>;
35
- protected _vertexSize: number;
36
- protected _getShader(maxTextureUnits: number): Shader;
37
- protected _createShader(maxTextureUnits: number): Shader;
38
- render(batchable: Batchable2D): void;
39
- flush(): void;
40
- protected _getAttributeBuffer(size: number): ArrayBuffer;
41
- protected _getIndexBuffer(size: number): Uint16Array<ArrayBuffer>;
42
- }
43
- export declare function nextPow2(v: number): number;
44
- export declare function log2(v: number): number;
45
- export {};
@@ -1,20 +0,0 @@
1
- export declare enum WebGLBlendMode {
2
- NORMAL = "normal",
3
- ADD = "add",
4
- MULTIPLY = "multiply",
5
- SCREEN = "screen",
6
- NONE = "none",
7
- NORMAL_NPM = "normal_npm",
8
- ADD_NPM = "add_npm",
9
- SCREEN_NPM = "screen_npm",
10
- SRC_IN = "src_in",
11
- SRC_OUT = "src_out",
12
- SRC_ATOP = "src_atop",
13
- DST_OVER = "dst_over",
14
- DST_IN = "dst_in",
15
- DST_OUT = "dst_out",
16
- DST_ATOP = "dst_atop",
17
- XOR = "xor",
18
- SUBTRACT = "subtract"
19
- }
20
- export declare function mapWebGLBlendModes(gl: WebGLRenderingContext): Record<WebGLBlendMode, any>;
@@ -1,18 +0,0 @@
1
- import type { WebGLBufferMeta, WebGLBufferOptions, WebGLBufferTarget } from '../types';
2
- import type { WebGLRenderer } from '../WebGLRenderer';
3
- import { WebGLModule } from './WebGLModule';
4
- export declare class WebGLBufferModule extends WebGLModule {
5
- install(renderer: WebGLRenderer): void;
6
- boundArrayBuffer: WebGLBuffer | null;
7
- boundTarget: WebGLBufferTarget;
8
- create(options?: WebGLBufferOptions): WebGLBuffer;
9
- getMeta(buffer: WebGLBuffer): WebGLBufferMeta;
10
- update(options: WebGLBufferOptions): void;
11
- update(buffer: WebGLBuffer, options: WebGLBufferOptions): void;
12
- bind(options: {
13
- target?: WebGLBufferTarget;
14
- value: WebGLBuffer | null;
15
- }): void;
16
- unbind(target: WebGLBufferTarget): void;
17
- reset(): void;
18
- }
@@ -1,25 +0,0 @@
1
- import type { WebGLFramebufferMeta, WebGLFramebufferOptions } from '../types';
2
- import type { WebGLRenderer } from '../WebGLRenderer';
3
- import { WebGLModule } from './WebGLModule';
4
- export declare class WebGLFramebufferModule extends WebGLModule {
5
- install(renderer: WebGLRenderer): void;
6
- boundFramebuffer: WebGLFramebuffer | null;
7
- protected _msaaSamples: number[];
8
- protected _hasMRT: boolean;
9
- protected _writeDepthTexture: boolean;
10
- onUpdateContext(): void;
11
- create(options?: WebGLFramebufferOptions): WebGLFramebuffer;
12
- getMeta(framebuffer: WebGLFramebuffer): WebGLFramebufferMeta;
13
- update(options: WebGLFramebufferOptions): void;
14
- update(framebuffer: WebGLFramebuffer, options: WebGLFramebufferOptions): void;
15
- protected _getAttachmentAndFormat(meta: WebGLFramebufferMeta): {
16
- attachment: number;
17
- format: number;
18
- };
19
- resize(framebuffer: WebGLFramebuffer, width: number, height: number): void;
20
- finishRenderPass(framebuffer: WebGLFramebuffer): void;
21
- copyToTexture(framebuffer: WebGLFramebuffer, texture: WebGLTexture): void;
22
- bind(framebuffer: WebGLFramebuffer | null): void;
23
- forceStencil(): void;
24
- reset(): void;
25
- }
@@ -1,31 +0,0 @@
1
- import type { WebGLRenderer } from '../WebGLRenderer';
2
- import type { Renderable } from './types';
3
- import { WebGLModule } from './WebGLModule';
4
- export type MaskColor = number;
5
- export interface MaskRect {
6
- x: number;
7
- y: number;
8
- width: number;
9
- height: number;
10
- }
11
- export type MaskObject = Renderable;
12
- export type Maskable = MaskColor | MaskRect | MaskObject;
13
- export interface MaskData {
14
- source: Renderable;
15
- mask: Maskable;
16
- color?: number;
17
- preComputedColor?: number;
18
- scissorCounter?: number;
19
- stencilCounter?: number;
20
- }
21
- export declare class WebGLMaskModule extends WebGLModule {
22
- install(renderer: WebGLRenderer): void;
23
- stack: MaskData[];
24
- get length(): number;
25
- get last(): MaskData;
26
- push(source: Renderable, mask: Maskable): void;
27
- pop(source: Renderable): void;
28
- pushColorMask(data: MaskData): void;
29
- popColorMask(data: MaskData): void;
30
- useColorMask(value: number): void;
31
- }
@@ -1,10 +0,0 @@
1
- import type { WebGLRenderer } from '../WebGLRenderer';
2
- export declare abstract class WebGLModule {
3
- protected _renderer: WebGLRenderer;
4
- get gl(): WebGLRenderingContext | WebGL2RenderingContext;
5
- install(renderer: WebGLRenderer): void;
6
- onUpdateContext(): void;
7
- flush(): void;
8
- reset(): void;
9
- destroy(): void;
10
- }
@@ -1,21 +0,0 @@
1
- import type { WebGLProgramMeta, WebGLProgramOptions } from '../types';
2
- import type { WebGLRenderer } from '../WebGLRenderer';
3
- import { WebGLModule } from './WebGLModule';
4
- export declare class WebGLProgramModule extends WebGLModule {
5
- install(renderer: WebGLRenderer): void;
6
- boundProgram: WebGLProgram | null;
7
- uniforms: {
8
- projectionMatrix: number[];
9
- viewMatrix: number[];
10
- };
11
- create(options?: WebGLProgramOptions): WebGLProgram;
12
- getMeta(program: WebGLProgram): WebGLProgramMeta;
13
- update(options: WebGLProgramOptions): void;
14
- update(program: WebGLProgram, options: WebGLProgramOptions): void;
15
- bind(program: WebGLProgram | null): void;
16
- createShader(source: string, type: 'vertex_shader' | 'fragment_shader'): WebGLShader;
17
- updateUniforms(program: WebGLProgram, uniforms: Record<string, any>): void;
18
- updateUniforms(uniforms: Record<string, any>): void;
19
- reset(): void;
20
- destroy(): void;
21
- }
@@ -1,10 +0,0 @@
1
- import type { WebGLRenderer } from '../WebGLRenderer';
2
- import type { MaskData } from './WebGLMaskModule';
3
- import { WebGLModule } from './WebGLModule';
4
- export declare class WebGLScissorModule extends WebGLModule {
5
- install(renderer: WebGLRenderer): void;
6
- get length(): number;
7
- push(data: MaskData): void;
8
- pop(_data: MaskData): void;
9
- use(): void;
10
- }
@@ -1,10 +0,0 @@
1
- import type { WebGLRenderer } from '../WebGLRenderer';
2
- import type { MaskData } from './WebGLMaskModule';
3
- import { WebGLModule } from './WebGLModule';
4
- export declare class WebGLStencilModule extends WebGLModule {
5
- install(renderer: WebGLRenderer): void;
6
- get length(): number;
7
- push(data: MaskData): void;
8
- pop(data: MaskData): void;
9
- use(): void;
10
- }
@@ -1,26 +0,0 @@
1
- import type { WebGLTextureLocation, WebGLTextureMeta, WebGLTextureOptions, WebGLTextureTarget } from '../types';
2
- import type { WebGLRenderer } from '../WebGLRenderer';
3
- import { WebGLModule } from './WebGLModule';
4
- export declare class WebGLTextureModule extends WebGLModule {
5
- install(renderer: WebGLRenderer): void;
6
- maxTextureSize: number;
7
- maxUnits: number;
8
- boundLocation: WebGLTextureLocation;
9
- boundTarget: WebGLTextureTarget;
10
- boundTextures: Record<WebGLTextureTarget, WebGLTexture | null>[];
11
- emptyTextures: Record<WebGLTextureTarget, WebGLTexture | null>;
12
- onUpdateContext(): void;
13
- create(options?: WebGLTextureOptions): WebGLTexture;
14
- getMeta(texture: WebGLTexture): WebGLTextureMeta;
15
- update(options: WebGLTextureOptions): void;
16
- update(texture: WebGLTexture, options: WebGLTextureOptions): void;
17
- bind(texture: {
18
- location?: WebGLTextureLocation;
19
- forceUpdateLocation?: boolean;
20
- target?: WebGLTextureTarget;
21
- value: WebGLTexture | null;
22
- } | null): void;
23
- unbind(location: number, target?: WebGLTextureTarget): void;
24
- unbind(texture: WebGLTexture): void;
25
- reset(): void;
26
- }
@@ -1,19 +0,0 @@
1
- import type { WebGLVertexArrayObjectMeta, WebGLVertexArrayObjectOptions, WebGLVertexAttrib } from '../types';
2
- import type { WebGLRenderer } from '../WebGLRenderer';
3
- import { WebGLModule } from './WebGLModule';
4
- export declare class WebGLVertexArrayModule extends WebGLModule {
5
- install(renderer: WebGLRenderer): void;
6
- boundVertexArrayNull: WebGLVertexArrayObjectMeta;
7
- boundVertexArrayObject: WebGLVertexArrayObject | null;
8
- boundVertexArray: WebGLVertexArrayObjectMeta;
9
- enableVertexAttrib(key: string, location: number, attrib: WebGLVertexAttrib, dimension?: number): void;
10
- create(options?: WebGLVertexArrayObjectOptions): WebGLVertexArrayObject | null;
11
- create(program?: WebGLProgram, options?: WebGLVertexArrayObjectOptions): WebGLVertexArrayObject | null;
12
- getVertexArrayMeta(vertexArray: WebGLVertexArrayObject): WebGLVertexArrayObjectMeta;
13
- update(options: WebGLVertexArrayObjectOptions): void;
14
- update(vertexArray: WebGLVertexArrayObject, options: WebGLVertexArrayObjectOptions): void;
15
- update(program: WebGLProgram, vertexArray: WebGLVertexArrayObject, options: WebGLVertexArrayObjectOptions): void;
16
- bind(vertexArrayObject: WebGLVertexArrayObject | null | WebGLVertexArrayObjectOptions): void;
17
- unbind(): void;
18
- reset(): void;
19
- }
@@ -1,9 +0,0 @@
1
- import type { WebGLViewport } from '../types';
2
- import type { WebGLRenderer } from '../WebGLRenderer';
3
- import { WebGLModule } from './WebGLModule';
4
- export declare class WebGLViewportModule extends WebGLModule {
5
- install(renderer: WebGLRenderer): void;
6
- boundViewport: WebGLViewport;
7
- bind(viewport: WebGLViewport): void;
8
- reset(): void;
9
- }
@@ -1,14 +0,0 @@
1
- export * from './types';
2
- export * from './WebGLBatch2DModule';
3
- export * from './WebGLBlendMode';
4
- export * from './WebGLBufferModule';
5
- export * from './WebGLFramebufferModule';
6
- export * from './WebGLMaskModule';
7
- export * from './WebGLModule';
8
- export * from './WebGLProgramModule';
9
- export * from './WebGLScissorModule';
10
- export * from './WebGLStateModule';
11
- export * from './WebGLStencilModule';
12
- export * from './WebGLTextureModule';
13
- export * from './WebGLVertexArrayModule';
14
- export * from './WebGLViewportModule';
@@ -1,4 +0,0 @@
1
- import type { WebGLRenderer } from '../WebGLRenderer';
2
- export interface Renderable {
3
- render: (renderer: WebGLRenderer) => void;
4
- }
@@ -1 +0,0 @@
1
- export declare function getChanged(source: Record<string, any>, target: Record<string, any>): Record<string, boolean>;