@next2d/webgl 2.0.0 → 3.0.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 (155) hide show
  1. package/README.md +206 -5
  2. package/package.json +3 -3
  3. package/src/AtlasManager/service/AtlasManagerCreateNodeService.js +20 -6
  4. package/src/AtlasManager.d.ts +2 -118
  5. package/src/AtlasManager.js +10 -179
  6. package/src/BezierConverter/usecase/BezierConverterAdaptiveCubicToQuadUseCase.d.ts +18 -0
  7. package/src/BezierConverter/usecase/BezierConverterAdaptiveCubicToQuadUseCase.js +193 -0
  8. package/src/BezierConverter.d.ts +88 -0
  9. package/src/BezierConverter.js +158 -0
  10. package/src/Blend/service/BlendAddService.js +2 -2
  11. package/src/Blend/service/BlendAlphaService.js +2 -2
  12. package/src/Blend/service/BlendEraseService.js +2 -2
  13. package/src/Blend/service/BlendOneZeroService.js +2 -2
  14. package/src/Blend/service/BlendResetService.js +2 -2
  15. package/src/Blend/service/BlendScreenService.js +2 -2
  16. package/src/Blend/service/BlendSourceAtopService.js +2 -2
  17. package/src/Blend/service/BlendSourceInService.js +2 -2
  18. package/src/Blend/usecase/BlnedDrawArraysInstancedUseCase.js +2 -2
  19. package/src/Blend/usecase/BlnedDrawDisplayObjectUseCase.js +10 -20
  20. package/src/Blend.d.ts +2 -36
  21. package/src/Blend.js +2 -58
  22. package/src/Context/service/ContextBeginNodeRenderingService.js +3 -3
  23. package/src/Context/service/ContextCreateImageBitmapService.js +30 -10
  24. package/src/Context/service/ContextEndNodeRenderingService.js +2 -2
  25. package/src/Context/service/ContextUpdateTransferBoundsService.js +2 -2
  26. package/src/Context/usecase/ContextApplyFilterUseCase.js +16 -10
  27. package/src/Context/usecase/ContextBindUseCase.js +3 -3
  28. package/src/Context/usecase/ContextClearRectUseCase.js +3 -3
  29. package/src/Context/usecase/ContextClipUseCase.js +3 -3
  30. package/src/Context/usecase/ContextContainerBeginLayerUseCase.d.ts +18 -0
  31. package/src/Context/usecase/ContextContainerBeginLayerUseCase.js +31 -0
  32. package/src/Context/usecase/ContextContainerDrawCachedFilterUseCase.d.ts +16 -0
  33. package/src/Context/usecase/ContextContainerDrawCachedFilterUseCase.js +36 -0
  34. package/src/Context/usecase/ContextContainerEndLayerUseCase.d.ts +18 -0
  35. package/src/Context/usecase/ContextContainerEndLayerUseCase.js +171 -0
  36. package/src/Context/usecase/ContextDrawFillUseCase.js +9 -5
  37. package/src/Context/usecase/ContextGradientStrokeUseCase.js +1 -1
  38. package/src/Context/usecase/ContextLinearGradientFillUseCase.js +16 -14
  39. package/src/Context/usecase/ContextNormalFillUseCase.js +10 -12
  40. package/src/Context/usecase/ContextPatternBitmapFillUseCase.d.ts +2 -2
  41. package/src/Context/usecase/ContextPatternBitmapFillUseCase.js +13 -14
  42. package/src/Context/usecase/ContextRadialGradientFillUseCase.js +16 -14
  43. package/src/Context.d.ts +5 -626
  44. package/src/Context.js +31 -636
  45. package/src/Filter/BevelFilter/usecase/FilterApplyBevelFilterUseCase.js +2 -2
  46. package/src/Filter/BlurFilter/usecase/FilterApplyBlurFilterUseCase.js +2 -2
  47. package/src/Filter/DisplacementMapFilter/usecase/FilterApplyDisplacementMapFilterUseCase.d.ts +1 -2
  48. package/src/Filter/DisplacementMapFilter/usecase/FilterApplyDisplacementMapFilterUseCase.js +3 -9
  49. package/src/Filter/DropShadowFilter/usecase/FilterApplyDropShadowFilterUseCase.js +2 -2
  50. package/src/Filter/GradientBevelFilter/usecase/FilterApplyGradientBevelFilterUseCase.js +2 -2
  51. package/src/Filter/GradientGlowFilter/usecase/FilterApplyGradientGlowFilterUseCase.js +2 -2
  52. package/src/FrameBufferManager/service/FrameBufferManagerBindAttachmentObjectService.js +8 -2
  53. package/src/FrameBufferManager/service/FrameBufferManagerTransferAtlasTextureService.js +12 -25
  54. package/src/FrameBufferManager/service/FrameBufferManagerUnBindAttachmentObjectService.js +2 -2
  55. package/src/FrameBufferManager/usecase/FrameBufferManagerGetAttachmentObjectUseCase.js +2 -2
  56. package/src/FrameBufferManager/usecase/FrameBufferManagerGetTextureFromNodeUseCase.js +7 -9
  57. package/src/FrameBufferManager.d.ts +8 -137
  58. package/src/FrameBufferManager.js +8 -199
  59. package/src/Mask/service/MaskBeginMaskService.js +2 -2
  60. package/src/Mask/service/MaskEndMaskService.js +2 -2
  61. package/src/Mask/service/MaskSetMaskBoundsService.js +2 -2
  62. package/src/Mask/usecase/MaskBindUseCase.js +4 -4
  63. package/src/Mask/usecase/MaskLeaveMaskUseCase.js +4 -4
  64. package/src/Mesh/service/MeshFindOverlappingPathsService.d.ts +2 -1
  65. package/src/Mesh/service/MeshFindOverlappingPathsService.js +7 -3
  66. package/src/Mesh/service/MeshIsPointInsideRectangleService.js +14 -11
  67. package/src/Mesh/usecase/MeshFillGenerateUseCase.js +7 -5
  68. package/src/Mesh/usecase/MeshGenerateCalculateBevelJoinUseCase.js +15 -3
  69. package/src/Mesh/usecase/MeshGenerateCalculateMiterJoinUseCase.js +17 -3
  70. package/src/Mesh/usecase/MeshGenerateCalculateRoundJoinUseCase.js +14 -2
  71. package/src/Mesh/usecase/MeshGenerateStrokeOutlineUseCase.js +39 -23
  72. package/src/Mesh/usecase/MeshStrokeGenerateUseCase.js +12 -4
  73. package/src/Mesh.d.ts +10 -0
  74. package/src/Mesh.js +23 -0
  75. package/src/PathCommand/service/PathCommandPushCurrentPathToVerticesService.d.ts +1 -2
  76. package/src/PathCommand/service/PathCommandPushCurrentPathToVerticesService.js +3 -4
  77. package/src/PathCommand/usecase/PathCommandBezierCurveToUseCase.d.ts +2 -2
  78. package/src/PathCommand/usecase/PathCommandBezierCurveToUseCase.js +9 -5
  79. package/src/PathCommand.js +18 -3
  80. package/src/Shader/Fragment/Filter/FragmentShaderSourceBlurFilter.d.ts +0 -6
  81. package/src/Shader/Fragment/Filter/FragmentShaderSourceBlurFilter.js +0 -6
  82. package/src/Shader/Fragment/Filter/FragmentShaderSourceColorMatrixFilter.d.ts +0 -5
  83. package/src/Shader/Fragment/Filter/FragmentShaderSourceColorMatrixFilter.js +0 -5
  84. package/src/Shader/Fragment/Filter/FragmentShaderSourceConvolutionFilter.d.ts +0 -10
  85. package/src/Shader/Fragment/Filter/FragmentShaderSourceConvolutionFilter.js +0 -10
  86. package/src/Shader/Fragment/Filter/FragmentShaderSourceDisplacementMapFilter.d.ts +0 -9
  87. package/src/Shader/Fragment/Filter/FragmentShaderSourceDisplacementMapFilter.js +8 -18
  88. package/src/Shader/Fragment/Filter/FragmentShaderSourceFilter.d.ts +0 -14
  89. package/src/Shader/Fragment/Filter/FragmentShaderSourceFilter.js +0 -99
  90. package/src/Shader/Fragment/FragmentShaderLibrary.d.ts +0 -17
  91. package/src/Shader/Fragment/FragmentShaderLibrary.js +9 -23
  92. package/src/Shader/Fragment/FragmentShaderSource.d.ts +0 -40
  93. package/src/Shader/Fragment/FragmentShaderSource.js +9 -47
  94. package/src/Shader/Fragment/FragmentShaderSourceBlend.d.ts +0 -7
  95. package/src/Shader/Fragment/FragmentShaderSourceBlend.js +0 -87
  96. package/src/Shader/Fragment/FragmentShaderSourceGradient.d.ts +0 -10
  97. package/src/Shader/Fragment/FragmentShaderSourceGradient.js +7 -41
  98. package/src/Shader/Fragment/FragmentShaderSourceGradientLUT.d.ts +0 -11
  99. package/src/Shader/Fragment/FragmentShaderSourceGradientLUT.js +0 -11
  100. package/src/Shader/Fragment/FragmentShaderSourceTexture.d.ts +0 -11
  101. package/src/Shader/Fragment/FragmentShaderSourceTexture.js +2 -13
  102. package/src/Shader/GradientLUTGenerator/usecase/GradientLUTGenerateShapeTextureUseCase.d.ts +4 -0
  103. package/src/Shader/GradientLUTGenerator/usecase/GradientLUTGenerateShapeTextureUseCase.js +14 -7
  104. package/src/Shader/GradientLUTGenerator.d.ts +23 -0
  105. package/src/Shader/GradientLUTGenerator.js +43 -6
  106. package/src/Shader/ShaderInstancedManager.d.ts +0 -26
  107. package/src/Shader/ShaderInstancedManager.js +0 -26
  108. package/src/Shader/ShaderManager/service/ShaderManagerSetBitmapFillUniformService.js +3 -3
  109. package/src/Shader/ShaderManager/service/ShaderManagerSetFillUniformService.js +3 -3
  110. package/src/Shader/ShaderManager/service/ShaderManagerSetGradientFillUniformService.js +3 -3
  111. package/src/Shader/ShaderManager/service/ShaderManagerSetMaskUniformService.js +3 -3
  112. package/src/Shader/ShaderManager/service/ShaderManagerSetMatrixTextureUniformService.js +3 -3
  113. package/src/Shader/ShaderManager/service/ShaderManagerSetMatrixTextureWithColorTransformUniformService.js +3 -3
  114. package/src/Shader/ShaderManager/service/ShaderManagerSetTextureUniformService.js +3 -3
  115. package/src/Shader/ShaderManager.d.ts +3 -71
  116. package/src/Shader/ShaderManager.js +22 -80
  117. package/src/Shader/Variants/Filter/service/VariantsBitmapFilterShaderService.js +2 -1
  118. package/src/Shader/Variants/GradientLUT/service/VariantsGradientLUTShaderService.d.ts +2 -2
  119. package/src/Shader/Variants/GradientLUT/service/VariantsGradientLUTShaderService.js +9 -6
  120. package/src/Shader/Variants/GradientLUTVariants.d.ts +21 -0
  121. package/src/Shader/Variants/GradientLUTVariants.js +63 -0
  122. package/src/Shader/Vertex/VertexShaderLibrary.d.ts +0 -17
  123. package/src/Shader/Vertex/VertexShaderLibrary.js +1 -18
  124. package/src/Shader/Vertex/VertexShaderSource.d.ts +0 -25
  125. package/src/Shader/Vertex/VertexShaderSource.js +0 -25
  126. package/src/Shader/Vertex/VertexShaderSourceFill.d.ts +0 -65
  127. package/src/Shader/Vertex/VertexShaderSourceFill.js +0 -65
  128. package/src/Stencil/service/StencilDisableSampleAlphaToCoverageService.d.ts +1 -0
  129. package/src/Stencil/service/StencilDisableSampleAlphaToCoverageService.js +8 -0
  130. package/src/Stencil/service/StencilEnableSampleAlphaToCoverageService.d.ts +1 -0
  131. package/src/Stencil/service/StencilEnableSampleAlphaToCoverageService.js +8 -0
  132. package/src/Stencil/service/StencilResetService.d.ts +9 -0
  133. package/src/Stencil/service/StencilResetService.js +14 -0
  134. package/src/Stencil/service/StencilSetFillModeService.d.ts +1 -0
  135. package/src/Stencil/service/StencilSetFillModeService.js +13 -0
  136. package/src/Stencil/service/StencilSetMaskModeService.d.ts +1 -0
  137. package/src/Stencil/service/StencilSetMaskModeService.js +14 -0
  138. package/src/Stencil.d.ts +9 -0
  139. package/src/Stencil.js +17 -0
  140. package/src/StencilBufferObject/usecase/StencilBufferObjectAcquireObjectUseCase.js +15 -7
  141. package/src/TextureManager/usecase/TextureManagerGetMainTextureFromBoundsUseCase.js +6 -7
  142. package/src/VertexArrayObject/service/VertexArrayObjectCreateFillObjectService.js +2 -3
  143. package/src/VertexArrayObject/usecase/VertexArrayObjectBindAttributeUseCase.js +4 -2
  144. package/src/VertexArrayObject/usecase/VertexArrayObjectBindFillMeshUseCase.js +3 -1
  145. package/src/VertexArrayObject/usecase/VertexArrayObjectCreateInstancedVertexArrayObjectUseCase.js +5 -3
  146. package/src/VertexArrayObject/usecase/VertexArrayObjectCreateRectVertexArrayObjectUseCase.js +2 -2
  147. package/src/VertexArrayObject.d.ts +0 -9
  148. package/src/VertexArrayObject.js +0 -16
  149. package/src/WebGLUtil.d.ts +10 -262
  150. package/src/WebGLUtil.js +45 -316
  151. package/src/interface/ICubicConverterReturnObject.d.ts +4 -0
  152. package/src/interface/ICubicConverterReturnObject.js +1 -0
  153. package/src/interface/IVertexArrayObject.d.ts +1 -1
  154. package/src/Context/service/ContextUpdateAllTransferBoundsService.d.ts +0 -11
  155. package/src/Context/service/ContextUpdateAllTransferBoundsService.js +0 -21
@@ -1,32 +1,6 @@
1
1
  import { ShaderManager } from "./ShaderManager";
2
- /**
3
- * @class
4
- * @extends ShaderManager
5
- */
6
2
  export declare class ShaderInstancedManager extends ShaderManager {
7
- /**
8
- * @description attribute変数の数
9
- * Number of attribute variables
10
- *
11
- * @type {number}
12
- * @public
13
- */
14
3
  count: number;
15
- /**
16
- * @param {string} vertex_source
17
- * @param {string} fragment_source
18
- * @param {boolean} [atlas=true]
19
- * @constructor
20
- * @public
21
- */
22
4
  constructor(vertex_source: string, fragment_source: string, atlas?: boolean);
23
- /**
24
- * @description attributeの配列を初期化します。
25
- * Initialize the array of attributes.
26
- *
27
- * @return {void}
28
- * @method
29
- * @public
30
- */
31
5
  clear(): void;
32
6
  }
@@ -1,26 +1,8 @@
1
1
  import { ShaderManager } from "./ShaderManager";
2
2
  import { renderQueue } from "@next2d/render-queue";
3
- /**
4
- * @class
5
- * @extends ShaderManager
6
- */
7
3
  export class ShaderInstancedManager extends ShaderManager {
8
- /**
9
- * @param {string} vertex_source
10
- * @param {string} fragment_source
11
- * @param {boolean} [atlas=true]
12
- * @constructor
13
- * @public
14
- */
15
4
  constructor(vertex_source, fragment_source, atlas = true) {
16
5
  super(vertex_source, fragment_source, atlas);
17
- /**
18
- * @description attribute変数の数
19
- * Number of attribute variables
20
- *
21
- * @type {number}
22
- * @public
23
- */
24
6
  Object.defineProperty(this, "count", {
25
7
  enumerable: true,
26
8
  configurable: true,
@@ -29,14 +11,6 @@ export class ShaderInstancedManager extends ShaderManager {
29
11
  });
30
12
  this.count = 0;
31
13
  }
32
- /**
33
- * @description attributeの配列を初期化します。
34
- * Initialize the array of attributes.
35
- *
36
- * @return {void}
37
- * @method
38
- * @public
39
- */
40
14
  clear() {
41
15
  this.count = renderQueue.offset = 0;
42
16
  }
@@ -1,4 +1,4 @@
1
- import { $context, $inverseMatrix, $getViewportWidth, $getViewportHeight } from "../../../WebGLUtil";
1
+ import { $context, $inverseMatrix, $viewportWidth, $viewportHeight } from "../../../WebGLUtil";
2
2
  /**
3
3
  * @description ShaderManagerのBitmapの塗りのuniform変数を設定します。
4
4
  * Set the fill uniform variables of the ShaderManager.
@@ -36,8 +36,8 @@ export const execute = (shader_manager, width, height, grid_data) => {
36
36
  highp[15] = inverseMatrix[7];
37
37
  highp[19] = inverseMatrix[8];
38
38
  // vertex: u_viewport
39
- highp[3] = $getViewportWidth();
40
- highp[7] = $getViewportHeight();
39
+ highp[3] = $viewportWidth;
40
+ highp[7] = $viewportHeight;
41
41
  if (grid_data) {
42
42
  // vertex: u_parent_matrix
43
43
  highp[20] = grid_data[0];
@@ -1,4 +1,4 @@
1
- import { $getViewportWidth, $getViewportHeight } from "../../../WebGLUtil";
1
+ import { $viewportWidth, $viewportHeight } from "../../../WebGLUtil";
2
2
  /**
3
3
  * @description ShaderManagerの塗りのuniform変数を設定します。
4
4
  * Set the fill uniform variables of the ShaderManager.
@@ -32,8 +32,8 @@ export const execute = (shader_manager, grid_data) => {
32
32
  highp[21] = grid_data[11];
33
33
  highp[22] = 1;
34
34
  // vertex: u_viewport
35
- highp[3] = $getViewportWidth();
36
- highp[7] = $getViewportHeight();
35
+ highp[3] = $viewportWidth;
36
+ highp[7] = $viewportHeight;
37
37
  // vertex: u_parent_viewport
38
38
  highp[11] = grid_data[12];
39
39
  highp[15] = grid_data[13];
@@ -1,4 +1,4 @@
1
- import { $getViewportWidth, $getViewportHeight, $clamp } from "../../../WebGLUtil";
1
+ import { $viewportWidth, $viewportHeight, $clamp } from "../../../WebGLUtil";
2
2
  /**
3
3
  * @description 塗りのグラデーションのuniformを設定
4
4
  * Set fill gradient uniform
@@ -37,8 +37,8 @@ export const execute = (shader_manager, type, matrix, inverse_matrix, focal_poin
37
37
  highp[15] = inverse_matrix[7];
38
38
  highp[19] = inverse_matrix[8];
39
39
  // vertex: u_viewport
40
- highp[3] = $getViewportWidth();
41
- highp[7] = $getViewportHeight();
40
+ highp[3] = $viewportWidth;
41
+ highp[7] = $viewportHeight;
42
42
  let index = 20;
43
43
  if (grid_data) {
44
44
  // vertex: u_parent_matrix
@@ -1,4 +1,4 @@
1
- import { $getViewportWidth, $getViewportHeight } from "../../../WebGLUtil";
1
+ import { $viewportWidth, $viewportHeight } from "../../../WebGLUtil";
2
2
  /**
3
3
  * @description ShaderManagerのマスクのuniform変数を設定します。
4
4
  * Set the mask uniform variables of the ShaderManager.
@@ -31,8 +31,8 @@ export const execute = (shader_manager, grid_data) => {
31
31
  highp[21] = grid_data[11];
32
32
  highp[22] = 1;
33
33
  // vertex: u_viewport
34
- highp[3] = $getViewportWidth();
35
- highp[7] = $getViewportHeight();
34
+ highp[3] = $viewportWidth;
35
+ highp[7] = $viewportHeight;
36
36
  // vertex: u_parent_viewport
37
37
  highp[11] = grid_data[12];
38
38
  highp[15] = grid_data[13];
@@ -1,4 +1,4 @@
1
- import { $context, $getViewportHeight, $getViewportWidth } from "../../../WebGLUtil";
1
+ import { $context, $viewportHeight, $viewportWidth } from "../../../WebGLUtil";
2
2
  /**
3
3
  * @description ShaderManagerのTextureのuniform変数を設定します。
4
4
  * Set the Texture uniform variables of the ShaderManager.
@@ -24,6 +24,6 @@ export const execute = (shader_manager, width, height) => {
24
24
  highp[6] = width;
25
25
  highp[7] = height;
26
26
  // vertex: u_viewport
27
- highp[8] = $getViewportWidth();
28
- highp[9] = $getViewportHeight();
27
+ highp[8] = $viewportWidth;
28
+ highp[9] = $viewportHeight;
29
29
  };
@@ -1,4 +1,4 @@
1
- import { $context, $getViewportHeight, $getViewportWidth } from "../../../WebGLUtil";
1
+ import { $context, $viewportHeight, $viewportWidth } from "../../../WebGLUtil";
2
2
  /**
3
3
  * @description ShaderManagerのTextureのuniform変数を設定します。
4
4
  * Set the Texture uniform variables of the ShaderManager.
@@ -24,8 +24,8 @@ export const execute = (shader_manager, color_transform, width, height) => {
24
24
  highp[6] = width;
25
25
  highp[7] = height;
26
26
  // vertex: u_viewport
27
- highp[8] = $getViewportWidth();
28
- highp[9] = $getViewportHeight();
27
+ highp[8] = $viewportWidth;
28
+ highp[9] = $viewportHeight;
29
29
  const mediump = shader_manager.mediump;
30
30
  mediump[0] = color_transform[0];
31
31
  mediump[1] = color_transform[1];
@@ -1,4 +1,4 @@
1
- import { $context, $getViewportHeight, $getViewportWidth } from "../../../WebGLUtil";
1
+ import { $context, $viewportHeight, $viewportWidth } from "../../../WebGLUtil";
2
2
  /**
3
3
  * @description ShaderManagerのTextureのuniform変数を設定します。
4
4
  * Set the Texture uniform variables of the ShaderManager.
@@ -20,6 +20,6 @@ export const execute = (shader_manager, width, height) => {
20
20
  highp[2] = width;
21
21
  highp[3] = height;
22
22
  // vertex: u_viewport
23
- highp[4] = $getViewportWidth();
24
- highp[5] = $getViewportHeight();
23
+ highp[4] = $viewportWidth;
24
+ highp[5] = $viewportHeight;
25
25
  };
@@ -1,78 +1,10 @@
1
- /**
2
- * @description 利用用途に合わせたシェーダークラス
3
- * Shader class tailored to the intended use
4
- *
5
- * @class
6
- * @public
7
- */
8
1
  export declare class ShaderManager {
9
- /**
10
- * @description WebGLプログラムオブジェクト
11
- * WebGL program object
12
- *
13
- * @type {IProgramObject}
14
- * @public
15
- */
16
2
  private readonly _$programObject;
17
- /**
18
- * @description uniform変数のマップ
19
- * Map of uniform variables
20
- *
21
- * @type {Map<string, IUniformData>}
22
- * @private
23
- */
24
3
  private readonly _$uniformMap;
25
- /**
26
- * @param {string} vertex_source
27
- * @param {string} fragment_source
28
- * @param {boolean} [atlas=false]
29
- * @constructor
30
- * @public
31
- */
4
+ readonly highp: Int32Array | Float32Array;
5
+ readonly mediump: Int32Array | Float32Array;
6
+ readonly textures: Int32Array | Float32Array;
32
7
  constructor(vertex_source: string, fragment_source: string, atlas?: boolean);
33
- /**
34
- * @description 生成したプログラムを利用します。
35
- * Use the generated program.
36
- *
37
- * @return {void}
38
- * @method
39
- * @public
40
- */
41
8
  useProgram(): void;
42
- /**
43
- * @description uniform変数をバインドします。
44
- * Bind uniform variables.
45
- *
46
- * @return {void}
47
- * @method
48
- * @public
49
- */
50
9
  bindUniform(): void;
51
- /**
52
- * @description highp uniform変数
53
- * highp uniform variable
54
- *
55
- * @type {Int32Array | Float32Array}
56
- * @readonly
57
- * @public
58
- */
59
- get highp(): Int32Array | Float32Array;
60
- /**
61
- * @description mediump uniform変数
62
- * mediump uniform variable
63
- *
64
- * @type {Int32Array | Float32Array}
65
- * @readonly
66
- * @public
67
- */
68
- get mediump(): Int32Array | Float32Array;
69
- /**
70
- * @description texture uniform変数
71
- * texture uniform variable
72
- *
73
- * @type {Int32Array | Float32Array}
74
- * @readonly
75
- * @public
76
- */
77
- get textures(): Int32Array | Float32Array;
78
10
  }
@@ -2,108 +2,50 @@ import { execute as shaderManagerCreateProgramService } from "./ShaderManager/se
2
2
  import { execute as shaderManagerInitializeUniformService } from "./ShaderManager/service/ShaderManagerInitializeUniformService";
3
3
  import { execute as shaderManagerUseProgramService } from "./ShaderManager/service/ShaderManagerUseProgramService";
4
4
  import { execute as shaderManagerBindUniformService } from "./ShaderManager/service/ShaderManagerBindUniformService";
5
- /**
6
- * @description 利用用途に合わせたシェーダークラス
7
- * Shader class tailored to the intended use
8
- *
9
- * @class
10
- * @public
11
- */
12
5
  export class ShaderManager {
13
- /**
14
- * @param {string} vertex_source
15
- * @param {string} fragment_source
16
- * @param {boolean} [atlas=false]
17
- * @constructor
18
- * @public
19
- */
20
6
  constructor(vertex_source, fragment_source, atlas = false) {
21
- /**
22
- * @description WebGLプログラムオブジェクト
23
- * WebGL program object
24
- *
25
- * @type {IProgramObject}
26
- * @public
27
- */
28
7
  Object.defineProperty(this, "_$programObject", {
29
8
  enumerable: true,
30
9
  configurable: true,
31
10
  writable: true,
32
11
  value: void 0
33
12
  });
34
- /**
35
- * @description uniform変数のマップ
36
- * Map of uniform variables
37
- *
38
- * @type {Map<string, IUniformData>}
39
- * @private
40
- */
41
13
  Object.defineProperty(this, "_$uniformMap", {
42
14
  enumerable: true,
43
15
  configurable: true,
44
16
  writable: true,
45
17
  value: void 0
46
18
  });
19
+ Object.defineProperty(this, "highp", {
20
+ enumerable: true,
21
+ configurable: true,
22
+ writable: true,
23
+ value: void 0
24
+ });
25
+ Object.defineProperty(this, "mediump", {
26
+ enumerable: true,
27
+ configurable: true,
28
+ writable: true,
29
+ value: void 0
30
+ });
31
+ Object.defineProperty(this, "textures", {
32
+ enumerable: true,
33
+ configurable: true,
34
+ writable: true,
35
+ value: void 0
36
+ });
47
37
  this._$programObject = shaderManagerCreateProgramService(vertex_source, fragment_source);
48
38
  this._$uniformMap = new Map();
49
39
  shaderManagerInitializeUniformService(this._$programObject.resource, this._$uniformMap, atlas);
40
+ const emptyArray = new Float32Array(0);
41
+ this.highp = this._$uniformMap.get("u_highp")?.array ?? emptyArray;
42
+ this.mediump = this._$uniformMap.get("u_mediump")?.array ?? emptyArray;
43
+ this.textures = this._$uniformMap.get("u_textures")?.array ?? emptyArray;
50
44
  }
51
- /**
52
- * @description 生成したプログラムを利用します。
53
- * Use the generated program.
54
- *
55
- * @return {void}
56
- * @method
57
- * @public
58
- */
59
45
  useProgram() {
60
46
  shaderManagerUseProgramService(this._$programObject);
61
47
  }
62
- /**
63
- * @description uniform変数をバインドします。
64
- * Bind uniform variables.
65
- *
66
- * @return {void}
67
- * @method
68
- * @public
69
- */
70
48
  bindUniform() {
71
49
  shaderManagerBindUniformService(this._$uniformMap);
72
50
  }
73
- /**
74
- * @description highp uniform変数
75
- * highp uniform variable
76
- *
77
- * @type {Int32Array | Float32Array}
78
- * @readonly
79
- * @public
80
- */
81
- get highp() {
82
- const data = this._$uniformMap.get("u_highp");
83
- return data.array;
84
- }
85
- /**
86
- * @description mediump uniform変数
87
- * mediump uniform variable
88
- *
89
- * @type {Int32Array | Float32Array}
90
- * @readonly
91
- * @public
92
- */
93
- get mediump() {
94
- const data = this._$uniformMap.get("u_mediump");
95
- return data.array;
96
- }
97
- /**
98
- * @description texture uniform変数
99
- * texture uniform variable
100
- *
101
- * @type {Int32Array | Float32Array}
102
- * @readonly
103
- * @public
104
- */
105
- get textures() {
106
- const data = this._$uniformMap.get("u_textures");
107
- return data.array;
108
- }
109
51
  }
@@ -24,7 +24,8 @@ export const execute = (transforms_base, transforms_blur, is_glow, type, knockou
24
24
  const key3 = is_glow ? "y" : "n";
25
25
  const key4 = knockout ? "y" : "n";
26
26
  const key5 = applies_strength ? "y" : "n";
27
- const key = `f${key1}${key2}${key3}${type}${key4}${key5}`;
27
+ const key6 = is_gradient ? "y" : "n";
28
+ const key = `f${key1}${key2}${key3}${type}${key4}${key5}${key6}`;
28
29
  if ($collection.has(key)) {
29
30
  return $collection.get(key);
30
31
  }
@@ -1,7 +1,7 @@
1
1
  import { ShaderManager } from "../../../ShaderManager";
2
2
  /**
3
- * @description グラデーションLUTのシェーダーを返却
4
- * Returns the shader of the gradient LUT
3
+ * @description グラデーションLUTのシェーダーを返却(LRUキャッシュ使用)
4
+ * Returns the shader of the gradient LUT (using LRU cache)
5
5
  *
6
6
  * @param {number} stops_length
7
7
  * @param {boolean} is_linear_space
@@ -1,10 +1,10 @@
1
- import { $collection } from "../../GradientLUTVariants";
1
+ import { $getFromCache, $addToCache } from "../../GradientLUTVariants";
2
2
  import { ShaderManager } from "../../../ShaderManager";
3
3
  import { TEXTURE_TEMPLATE } from "../../../Vertex/VertexShaderSource";
4
4
  import { GRADIENT_LUT_TEMPLATE } from "../../../Fragment/FragmentShaderSourceGradientLUT";
5
5
  /**
6
- * @description グラデーションLUTのシェーダーを返却
7
- * Returns the shader of the gradient LUT
6
+ * @description グラデーションLUTのシェーダーを返却(LRUキャッシュ使用)
7
+ * Returns the shader of the gradient LUT (using LRU cache)
8
8
  *
9
9
  * @param {number} stops_length
10
10
  * @param {boolean} is_linear_space
@@ -16,11 +16,14 @@ export const execute = (stops_length, is_linear_space) => {
16
16
  const key1 = ("00" + stops_length).slice(-3);
17
17
  const key2 = is_linear_space ? "y" : "n";
18
18
  const key = `l${key1}${key2}`;
19
- if ($collection.has(key)) {
20
- return $collection.get(key);
19
+ // LRUキャッシュから取得を試みる
20
+ const cachedShader = $getFromCache(key);
21
+ if (cachedShader) {
22
+ return cachedShader;
21
23
  }
22
24
  const mediumpLength = Math.ceil(stops_length * 5 / 4);
23
25
  const shader = new ShaderManager(TEXTURE_TEMPLATE(), GRADIENT_LUT_TEMPLATE(mediumpLength, stops_length, is_linear_space));
24
- $collection.set(key, shader);
26
+ // LRUキャッシュに追加
27
+ $addToCache(key, shader);
25
28
  return shader;
26
29
  };
@@ -7,3 +7,24 @@ import type { ShaderManager } from "../ShaderManager";
7
7
  * @public
8
8
  */
9
9
  export declare const $collection: Map<string, ShaderManager>;
10
+ /**
11
+ * @description シェーダーをキャッシュに追加(LRU方式)
12
+ * Add shader to cache (LRU method)
13
+ *
14
+ * @param {string} key
15
+ * @param {ShaderManager} shader
16
+ * @return {void}
17
+ * @method
18
+ * @protected
19
+ */
20
+ export declare const $addToCache: (key: string, shader: ShaderManager) => void;
21
+ /**
22
+ * @description キャッシュからシェーダーを取得(使用順序を更新)
23
+ * Get shader from cache (update usage order)
24
+ *
25
+ * @param {string} key
26
+ * @return {ShaderManager | undefined}
27
+ * @method
28
+ * @protected
29
+ */
30
+ export declare const $getFromCache: (key: string) => ShaderManager | undefined;
@@ -1,3 +1,11 @@
1
+ /**
2
+ * @description シェーダーキャッシュの最大サイズ
3
+ * Maximum shader cache size
4
+ *
5
+ * @type {number}
6
+ * @const
7
+ */
8
+ const MAX_SHADER_CACHE_SIZE = 16;
1
9
  /**
2
10
  * @description グラデーションLUTのシェーダー管理クラスのコレクション
3
11
  * Collection of gradient LUT shader management classes
@@ -6,3 +14,58 @@
6
14
  * @public
7
15
  */
8
16
  export const $collection = new Map();
17
+ /**
18
+ * @description 使用順序を追跡するためのキュー
19
+ * Queue for tracking usage order (LRU)
20
+ *
21
+ * @type {string[]}
22
+ * @private
23
+ */
24
+ const $usageOrder = [];
25
+ /**
26
+ * @description シェーダーをキャッシュに追加(LRU方式)
27
+ * Add shader to cache (LRU method)
28
+ *
29
+ * @param {string} key
30
+ * @param {ShaderManager} shader
31
+ * @return {void}
32
+ * @method
33
+ * @protected
34
+ */
35
+ export const $addToCache = (key, shader) => {
36
+ // すでに存在する場合は使用順序を更新
37
+ const existingIndex = $usageOrder.indexOf(key);
38
+ if (existingIndex !== -1) {
39
+ $usageOrder.splice(existingIndex, 1);
40
+ }
41
+ // キャッシュサイズ制限を超える場合、最も古いエントリを削除
42
+ while ($collection.size >= MAX_SHADER_CACHE_SIZE && $usageOrder.length > 0) {
43
+ const oldestKey = $usageOrder.shift();
44
+ if (oldestKey) {
45
+ $collection.delete(oldestKey);
46
+ }
47
+ }
48
+ $collection.set(key, shader);
49
+ $usageOrder.push(key);
50
+ };
51
+ /**
52
+ * @description キャッシュからシェーダーを取得(使用順序を更新)
53
+ * Get shader from cache (update usage order)
54
+ *
55
+ * @param {string} key
56
+ * @return {ShaderManager | undefined}
57
+ * @method
58
+ * @protected
59
+ */
60
+ export const $getFromCache = (key) => {
61
+ const shader = $collection.get(key);
62
+ if (shader) {
63
+ // 使用順序を更新
64
+ const index = $usageOrder.indexOf(key);
65
+ if (index !== -1) {
66
+ $usageOrder.splice(index, 1);
67
+ $usageOrder.push(key);
68
+ }
69
+ }
70
+ return shader;
71
+ };
@@ -1,19 +1,2 @@
1
- /**
2
- * @description グリッドがオフの場合の頂点シェーダー
3
- * Vertex shader when grid is off
4
- *
5
- * @return {string}
6
- * @method
7
- * @static
8
- */
9
1
  export declare const FUNCTION_GRID_OFF: () => string;
10
- /**
11
- * @description グリッドがオンの場合の頂点シェーダー
12
- * Vertex shader when grid is on
13
- *
14
- * @param {number} index
15
- * @return {STRing}
16
- * @method
17
- * @static
18
- */
19
2
  export declare const FUNCTION_GRID_ON: (index: number) => string;
@@ -1,11 +1,3 @@
1
- /**
2
- * @description グリッドがオフの場合の頂点シェーダー
3
- * Vertex shader when grid is off
4
- *
5
- * @return {string}
6
- * @method
7
- * @static
8
- */
9
1
  export const FUNCTION_GRID_OFF = () => {
10
2
  return `
11
3
  vec2 applyMatrix(in vec2 vertex) {
@@ -13,15 +5,6 @@ vec2 applyMatrix(in vec2 vertex) {
13
5
  return (matrix * vec3(vertex, 1.0)).xy;
14
6
  }`;
15
7
  };
16
- /**
17
- * @description グリッドがオンの場合の頂点シェーダー
18
- * Vertex shader when grid is on
19
- *
20
- * @param {number} index
21
- * @return {STRing}
22
- * @method
23
- * @static
24
- */
25
8
  export const FUNCTION_GRID_ON = (index) => {
26
9
  return `
27
10
  vec2 applyMatrix(in vec2 vertex) {
@@ -40,7 +23,7 @@ vec2 applyMatrix(in vec2 vertex) {
40
23
  vec2 parent_size = vec2(u_highp[${index + 4}].w, u_highp[${index + 5}].w);
41
24
  vec4 grid_min = u_highp[${index + 6}];
42
25
  vec4 grid_max = u_highp[${index + 7}];
43
-
26
+
44
27
  vec2 position = (parent_matrix * vec3(vertex, 1.0)).xy;
45
28
  position = (position - parent_offset) / parent_size;
46
29
 
@@ -1,30 +1,5 @@
1
- /**
2
- * @return {string}
3
- * @method
4
- * @static
5
- */
6
1
  export declare const TEXTURE_TEMPLATE: () => string;
7
- /**
8
- * @return {string}
9
- * @method
10
- * @static
11
- */
12
2
  export declare const VECTOR_TEMPLATE: () => string;
13
- /**
14
- * @return {string}
15
- * @method
16
- * @static
17
- */
18
3
  export declare const BLEND_MATRIX_TEMPLATE: () => string;
19
- /**
20
- * @return {string}
21
- * @method
22
- * @static
23
- */
24
4
  export declare const BLEND_TEMPLATE: () => string;
25
- /**
26
- * @return {string}
27
- * @method
28
- * @static
29
- */
30
5
  export declare const INSTANCE_TEMPLATE: () => string;