@next2d/webgl 1.14.20

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 (113) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +11 -0
  3. package/dist/BezierConverter.d.ts +59 -0
  4. package/dist/BezierConverter.js +106 -0
  5. package/dist/CanvasGradientToWebGL.d.ts +96 -0
  6. package/dist/CanvasGradientToWebGL.js +181 -0
  7. package/dist/CanvasPatternToWebGL.d.ts +39 -0
  8. package/dist/CanvasPatternToWebGL.js +66 -0
  9. package/dist/CanvasToWebGLContext.d.ts +591 -0
  10. package/dist/CanvasToWebGLContext.js +1427 -0
  11. package/dist/CanvasToWebGLContextBlend.d.ts +97 -0
  12. package/dist/CanvasToWebGLContextBlend.js +299 -0
  13. package/dist/CanvasToWebGLContextGrid.d.ts +74 -0
  14. package/dist/CanvasToWebGLContextGrid.js +283 -0
  15. package/dist/CanvasToWebGLContextMask.d.ts +113 -0
  16. package/dist/CanvasToWebGLContextMask.js +436 -0
  17. package/dist/CanvasToWebGLContextPath.d.ts +111 -0
  18. package/dist/CanvasToWebGLContextPath.js +210 -0
  19. package/dist/CanvasToWebGLContextStyle.d.ts +78 -0
  20. package/dist/CanvasToWebGLContextStyle.js +139 -0
  21. package/dist/ColorBufferPool.d.ts +58 -0
  22. package/dist/ColorBufferPool.js +134 -0
  23. package/dist/FrameBufferManager.d.ts +135 -0
  24. package/dist/FrameBufferManager.js +358 -0
  25. package/dist/StencilBufferPool.d.ts +56 -0
  26. package/dist/StencilBufferPool.js +142 -0
  27. package/dist/TextureManager.d.ts +130 -0
  28. package/dist/TextureManager.js +296 -0
  29. package/dist/VertexArrayObjectManager.d.ts +96 -0
  30. package/dist/VertexArrayObjectManager.js +277 -0
  31. package/dist/WebGLFillMeshGenerator.d.ts +31 -0
  32. package/dist/WebGLFillMeshGenerator.js +101 -0
  33. package/dist/WebGLStrokeMeshGenerator.d.ts +183 -0
  34. package/dist/WebGLStrokeMeshGenerator.js +504 -0
  35. package/dist/index.d.ts +6 -0
  36. package/dist/index.js +6 -0
  37. package/dist/interface/AttachmentImpl.d.ts +11 -0
  38. package/dist/interface/AttachmentImpl.js +1 -0
  39. package/dist/interface/BoundsImpl.d.ts +6 -0
  40. package/dist/interface/BoundsImpl.js +1 -0
  41. package/dist/interface/CapsStyleImpl.d.ts +1 -0
  42. package/dist/interface/CapsStyleImpl.js +1 -0
  43. package/dist/interface/ClipObjectImpl.d.ts +14 -0
  44. package/dist/interface/ClipObjectImpl.js +1 -0
  45. package/dist/interface/FillMeshImpl.d.ts +5 -0
  46. package/dist/interface/FillMeshImpl.js +1 -0
  47. package/dist/interface/GradientTypeImpl.d.ts +1 -0
  48. package/dist/interface/GradientTypeImpl.js +1 -0
  49. package/dist/interface/GridImpl.d.ts +6 -0
  50. package/dist/interface/GridImpl.js +1 -0
  51. package/dist/interface/IndexRangeImpl.d.ts +4 -0
  52. package/dist/interface/IndexRangeImpl.js +1 -0
  53. package/dist/interface/InterpolationMethodImpl.d.ts +1 -0
  54. package/dist/interface/InterpolationMethodImpl.js +1 -0
  55. package/dist/interface/JointStyleImpl.d.ts +1 -0
  56. package/dist/interface/JointStyleImpl.js +1 -0
  57. package/dist/interface/SpreadMethodImpl.d.ts +1 -0
  58. package/dist/interface/SpreadMethodImpl.js +1 -0
  59. package/dist/interface/StrokeMethImpl.d.ts +4 -0
  60. package/dist/interface/StrokeMethImpl.js +1 -0
  61. package/dist/interface/UniformDataImpl.d.ts +5 -0
  62. package/dist/interface/UniformDataImpl.js +1 -0
  63. package/dist/interface/VerticesImpl.d.ts +1 -0
  64. package/dist/interface/VerticesImpl.js +1 -0
  65. package/dist/shader/CanvasToWebGLShader.d.ts +85 -0
  66. package/dist/shader/CanvasToWebGLShader.js +192 -0
  67. package/dist/shader/CanvasToWebGLShaderList.d.ts +70 -0
  68. package/dist/shader/CanvasToWebGLShaderList.js +109 -0
  69. package/dist/shader/GradientLUTGenerator.d.ts +36 -0
  70. package/dist/shader/GradientLUTGenerator.js +123 -0
  71. package/dist/shader/WebGLShaderUniform.d.ts +52 -0
  72. package/dist/shader/WebGLShaderUniform.js +165 -0
  73. package/dist/shader/fragment/FragmentShaderLibrary.d.ts +18 -0
  74. package/dist/shader/fragment/FragmentShaderLibrary.js +35 -0
  75. package/dist/shader/fragment/FragmentShaderSource.d.ts +29 -0
  76. package/dist/shader/fragment/FragmentShaderSource.js +99 -0
  77. package/dist/shader/fragment/FragmentShaderSourceBlend.d.ts +67 -0
  78. package/dist/shader/fragment/FragmentShaderSourceBlend.js +319 -0
  79. package/dist/shader/fragment/FragmentShaderSourceGradient.d.ts +44 -0
  80. package/dist/shader/fragment/FragmentShaderSourceGradient.js +114 -0
  81. package/dist/shader/fragment/FragmentShaderSourceGradientLUT.d.ts +14 -0
  82. package/dist/shader/fragment/FragmentShaderSourceGradientLUT.js +58 -0
  83. package/dist/shader/fragment/FragmentShaderSourceTexture.d.ts +12 -0
  84. package/dist/shader/fragment/FragmentShaderSourceTexture.js +36 -0
  85. package/dist/shader/fragment/filter/FragmentShaderSourceBlurFilter.d.ts +12 -0
  86. package/dist/shader/fragment/filter/FragmentShaderSourceBlurFilter.js +42 -0
  87. package/dist/shader/fragment/filter/FragmentShaderSourceColorMatrixFilter.d.ts +11 -0
  88. package/dist/shader/fragment/filter/FragmentShaderSourceColorMatrixFilter.js +35 -0
  89. package/dist/shader/fragment/filter/FragmentShaderSourceConvolutionFilter.d.ts +16 -0
  90. package/dist/shader/fragment/filter/FragmentShaderSourceConvolutionFilter.js +80 -0
  91. package/dist/shader/fragment/filter/FragmentShaderSourceDisplacementMapFilter.d.ts +15 -0
  92. package/dist/shader/fragment/filter/FragmentShaderSourceDisplacementMapFilter.js +106 -0
  93. package/dist/shader/fragment/filter/FragmentShaderSourceFilter.d.ts +112 -0
  94. package/dist/shader/fragment/filter/FragmentShaderSourceFilter.js +275 -0
  95. package/dist/shader/variants/BlendShaderVariantCollection.d.ts +99 -0
  96. package/dist/shader/variants/BlendShaderVariantCollection.js +239 -0
  97. package/dist/shader/variants/FilterShaderVariantCollection.d.ts +150 -0
  98. package/dist/shader/variants/FilterShaderVariantCollection.js +395 -0
  99. package/dist/shader/variants/GradientLUTShaderVariantCollection.d.ts +49 -0
  100. package/dist/shader/variants/GradientLUTShaderVariantCollection.js +107 -0
  101. package/dist/shader/variants/GradientShapeShaderVariantCollection.d.ts +61 -0
  102. package/dist/shader/variants/GradientShapeShaderVariantCollection.js +196 -0
  103. package/dist/shader/variants/ShapeShaderVariantCollection.d.ts +117 -0
  104. package/dist/shader/variants/ShapeShaderVariantCollection.js +427 -0
  105. package/dist/shader/vertex/VertexShaderLibrary.d.ts +18 -0
  106. package/dist/shader/vertex/VertexShaderLibrary.js +75 -0
  107. package/dist/shader/vertex/VertexShaderSource.d.ts +23 -0
  108. package/dist/shader/vertex/VertexShaderSource.js +92 -0
  109. package/dist/shader/vertex/VertexShaderSourceFill.d.ts +45 -0
  110. package/dist/shader/vertex/VertexShaderSourceFill.js +112 -0
  111. package/dist/shader/vertex/VertexShaderSourceStroke.d.ts +27 -0
  112. package/dist/shader/vertex/VertexShaderSourceStroke.js +149 -0
  113. package/package.json +37 -0
@@ -0,0 +1,196 @@
1
+ import { CanvasToWebGLShader } from "../CanvasToWebGLShader";
2
+ import { VertexShaderSourceStroke } from "../vertex/VertexShaderSourceStroke";
3
+ import { VertexShaderSourceFill } from "../vertex/VertexShaderSourceFill";
4
+ import { FragmentShaderSourceGradient } from "../fragment/FragmentShaderSourceGradient";
5
+ import { $getMap } from "@next2d/share";
6
+ /**
7
+ * @class
8
+ */
9
+ export class GradientShapeShaderVariantCollection {
10
+ /**
11
+ * @param {CanvasToWebGLContext} context
12
+ * @param {WebGL2RenderingContext} gl
13
+ * @constructor
14
+ * @public
15
+ */
16
+ constructor(context, gl) {
17
+ /**
18
+ * @type {CanvasToWebGLContext}
19
+ * @private
20
+ */
21
+ this._$context = context;
22
+ /**
23
+ * @type {WebGL2RenderingContext}
24
+ * @private
25
+ */
26
+ this._$gl = gl;
27
+ /**
28
+ * @type {Map}
29
+ * @private
30
+ */
31
+ this._$collection = $getMap();
32
+ }
33
+ /**
34
+ * @param {boolean} is_stroke
35
+ * @param {boolean} has_grid
36
+ * @param {boolean} is_radial
37
+ * @param {boolean} has_focal_point
38
+ * @param {string} spread_method
39
+ * @return {CanvasToWebGLShader}
40
+ * @method
41
+ * @public
42
+ */
43
+ getGradientShapeShader(is_stroke, has_grid, is_radial, has_focal_point, spread_method) {
44
+ const key = this.createCollectionKey(is_stroke, has_grid, is_radial, has_focal_point, spread_method);
45
+ if (this._$collection.has(key)) {
46
+ const shader = this._$collection.get(key);
47
+ if (shader) {
48
+ return shader;
49
+ }
50
+ }
51
+ const highpLength = (has_grid ? 13 : 5) + (is_stroke ? 1 : 0) + 1;
52
+ const fragmentIndex = highpLength - 1;
53
+ let vertexShaderSource;
54
+ if (is_stroke) {
55
+ vertexShaderSource = VertexShaderSourceStroke.TEMPLATE(highpLength, fragmentIndex, true, has_grid);
56
+ }
57
+ else {
58
+ vertexShaderSource = VertexShaderSourceFill.TEMPLATE(highpLength, true, false, has_grid);
59
+ }
60
+ const shader = new CanvasToWebGLShader(this._$gl, this._$context, vertexShaderSource, FragmentShaderSourceGradient.TEMPLATE(highpLength, fragmentIndex, is_radial, has_focal_point, spread_method));
61
+ this._$collection.set(key, shader);
62
+ return shader;
63
+ }
64
+ /**
65
+ * @param {boolean} is_stroke
66
+ * @param {boolean} has_grid
67
+ * @param {boolean} is_radial
68
+ * @param {boolean} has_focal_point
69
+ * @param {string} spread_method
70
+ * @return {string}
71
+ * @method
72
+ * @private
73
+ */
74
+ createCollectionKey(is_stroke, has_grid, is_radial, has_focal_point, spread_method) {
75
+ const key1 = is_stroke ? "y" : "n";
76
+ const key2 = has_grid ? "y" : "n";
77
+ const key3 = is_radial ? "y" : "n";
78
+ const key4 = is_radial && has_focal_point ? "y" : "n";
79
+ let key5 = 0;
80
+ switch (spread_method) {
81
+ case "reflect":
82
+ key5 = 1;
83
+ break;
84
+ case "repeat":
85
+ key5 = 2;
86
+ break;
87
+ }
88
+ return `${key1}${key2}${key3}${key4}${key5}`;
89
+ }
90
+ /**
91
+ * @param {WebGLShaderUniform} uniform
92
+ * @param {boolean} is_stroke
93
+ * @param {number} half_width
94
+ * @param {number} face
95
+ * @param {number} miter_limit
96
+ * @param {boolean} has_grid
97
+ * @param {Float32Array} matrix
98
+ * @param {Float32Array} inverse_matrix
99
+ * @param {number} viewport_width
100
+ * @param {number} viewport_height
101
+ * @param {CanvasToWebGLContextGrid} grid
102
+ * @param {boolean} is_radial
103
+ * @param {Float32Array} points
104
+ * @param {number} focal_point_ratio
105
+ * @return {void}
106
+ * @method
107
+ * @public
108
+ */
109
+ setGradientShapeUniform(uniform, is_stroke, half_width, face, miter_limit, has_grid, matrix, inverse_matrix, viewport_width, viewport_height, grid, is_radial, points, focal_point_ratio) {
110
+ const highp = uniform.highp;
111
+ // vertex: u_matrix
112
+ highp[0] = matrix[0];
113
+ highp[1] = matrix[1];
114
+ highp[2] = matrix[2];
115
+ highp[4] = matrix[3];
116
+ highp[5] = matrix[4];
117
+ highp[6] = matrix[5];
118
+ highp[8] = matrix[6];
119
+ highp[9] = matrix[7];
120
+ highp[10] = matrix[8];
121
+ // vertex: u_inverse_matrix
122
+ highp[12] = inverse_matrix[0];
123
+ highp[13] = inverse_matrix[1];
124
+ highp[14] = inverse_matrix[2];
125
+ highp[16] = inverse_matrix[3];
126
+ highp[17] = inverse_matrix[4];
127
+ highp[18] = inverse_matrix[5];
128
+ highp[11] = inverse_matrix[6];
129
+ highp[15] = inverse_matrix[7];
130
+ highp[19] = inverse_matrix[8];
131
+ // vertex: u_viewport
132
+ highp[3] = viewport_width;
133
+ highp[7] = viewport_height;
134
+ let i = 20;
135
+ if (has_grid) {
136
+ // vertex: u_parent_matrix
137
+ highp[i] = grid.parentMatrixA;
138
+ highp[i + 1] = grid.parentMatrixB;
139
+ highp[i + 2] = grid.parentMatrixC;
140
+ highp[i + 4] = grid.parentMatrixD;
141
+ highp[i + 5] = grid.parentMatrixE;
142
+ highp[i + 6] = grid.parentMatrixF;
143
+ highp[i + 8] = grid.parentMatrixG;
144
+ highp[i + 9] = grid.parentMatrixH;
145
+ highp[i + 10] = grid.parentMatrixI;
146
+ // vertex: u_ancestor_matrix
147
+ highp[i + 12] = grid.ancestorMatrixA;
148
+ highp[i + 13] = grid.ancestorMatrixB;
149
+ highp[i + 14] = grid.ancestorMatrixC;
150
+ highp[i + 16] = grid.ancestorMatrixD;
151
+ highp[i + 17] = grid.ancestorMatrixE;
152
+ highp[i + 18] = grid.ancestorMatrixF;
153
+ highp[i + 20] = grid.ancestorMatrixG;
154
+ highp[i + 21] = grid.ancestorMatrixH;
155
+ highp[i + 22] = grid.ancestorMatrixI;
156
+ // vertex: u_parent_viewport
157
+ highp[i + 11] = grid.parentViewportX;
158
+ highp[i + 15] = grid.parentViewportY;
159
+ highp[i + 19] = grid.parentViewportW;
160
+ highp[i + 23] = grid.parentViewportH;
161
+ // vertex: u_grid_min
162
+ highp[i + 24] = grid.minXST;
163
+ highp[i + 25] = grid.minYST;
164
+ highp[i + 26] = grid.minXPQ;
165
+ highp[i + 27] = grid.minYPQ;
166
+ // vertex: u_grid_max
167
+ highp[i + 28] = grid.maxXST;
168
+ highp[i + 29] = grid.maxYST;
169
+ highp[i + 30] = grid.maxXPQ;
170
+ highp[i + 31] = grid.maxYPQ;
171
+ i = 52;
172
+ }
173
+ if (is_stroke) {
174
+ // vertex: u_half_width
175
+ highp[i] = half_width;
176
+ // vertex: u_face
177
+ highp[i + 1] = face;
178
+ // vertex: u_miter_limit
179
+ highp[i + 2] = miter_limit;
180
+ i += 4;
181
+ }
182
+ if (is_radial) {
183
+ // fragment: u_radial_point
184
+ highp[i] = points[5];
185
+ // fragment: u_focal_point_ratio
186
+ highp[i + 1] = focal_point_ratio;
187
+ }
188
+ else {
189
+ // fragment: u_linear_points
190
+ highp[i] = points[0];
191
+ highp[i + 1] = points[1];
192
+ highp[i + 2] = points[2];
193
+ highp[i + 3] = points[3];
194
+ }
195
+ }
196
+ }
@@ -0,0 +1,117 @@
1
+ import { CanvasToWebGLShader } from "../CanvasToWebGLShader";
2
+ import type { WebGLShaderUniform } from "../WebGLShaderUniform";
3
+ import type { CanvasToWebGLContext } from "../../CanvasToWebGLContext";
4
+ import type { CanvasToWebGLContextGrid } from "../../CanvasToWebGLContextGrid";
5
+ /**
6
+ * @class
7
+ */
8
+ export declare class ShapeShaderVariantCollection {
9
+ private readonly _$context;
10
+ private readonly _$gl;
11
+ private readonly _$collection;
12
+ /**
13
+ * @param {CanvasToWebGLContext} context
14
+ * @param {WebGL2RenderingContext} gl
15
+ * @constructor
16
+ * @public
17
+ */
18
+ constructor(context: CanvasToWebGLContext, gl: WebGL2RenderingContext);
19
+ /**
20
+ * @param {boolean} is_stroke
21
+ * @param {boolean} has_grid
22
+ * @return {CanvasToWebGLShader}
23
+ * @method
24
+ * @public
25
+ */
26
+ getSolidColorShapeShader(is_stroke: boolean, has_grid: boolean): CanvasToWebGLShader;
27
+ /**
28
+ * @param {boolean} is_stroke
29
+ * @param {boolean} repeat
30
+ * @param {boolean} has_grid
31
+ * @return {CanvasToWebGLShader}
32
+ * @method
33
+ * @public
34
+ */
35
+ getBitmapShapeShader(is_stroke: boolean, repeat: boolean, has_grid: boolean): CanvasToWebGLShader;
36
+ /**
37
+ * @param {boolean} is_stroke
38
+ * @param {boolean} has_grid
39
+ * @return {CanvasToWebGLShader}
40
+ * @method
41
+ * @public
42
+ */
43
+ getMaskShapeShader(is_stroke: boolean, has_grid: boolean): CanvasToWebGLShader;
44
+ /**
45
+ * @param {WebGLShaderUniform} uniform
46
+ * @param {boolean} is_stroke
47
+ * @param {number} half_width
48
+ * @param {number} face
49
+ * @param {number} miter_limit
50
+ * @param {boolean} has_grid
51
+ * @param {array} matrix
52
+ * @param {number} viewport_width
53
+ * @param {number} viewport_height
54
+ * @param {CanvasToWebGLContextGrid} [grid = null]
55
+ * @param {array} color
56
+ * @param {number} alpha
57
+ * @method
58
+ * @public
59
+ */
60
+ setSolidColorShapeUniform(uniform: WebGLShaderUniform, is_stroke: boolean, half_width: number, face: number, miter_limit: number, has_grid: boolean, matrix: Float32Array, viewport_width: number, viewport_height: number, grid: CanvasToWebGLContextGrid, color: Float32Array, alpha: number): void;
61
+ /**
62
+ * @param {WebGLShaderUniform} uniform
63
+ * @param {boolean} is_stroke
64
+ * @param {number} half_width
65
+ * @param {number} face
66
+ * @param {number} miter_limit
67
+ * @param {boolean} has_grid
68
+ * @param {Float32Array} matrix
69
+ * @param {array} inverse_matrix
70
+ * @param {number} viewport_width
71
+ * @param {number} viewport_height
72
+ * @param {CanvasToWebGLContextGrid} grid
73
+ * @param {number} texture_width
74
+ * @param {number} texture_height
75
+ * @param {number} mul1
76
+ * @param {number} mul2
77
+ * @param {number} mul3
78
+ * @param {number} mul4
79
+ * @param {number} add1
80
+ * @param {number} add2
81
+ * @param {number} add3
82
+ * @param {number} add4
83
+ * @return {void}
84
+ * @method
85
+ * @public
86
+ */
87
+ setBitmapShapeUniform(uniform: WebGLShaderUniform, is_stroke: boolean, half_width: number, face: number, miter_limit: number, has_grid: boolean, matrix: Float32Array, inverse_matrix: Float32Array, viewport_width: number, viewport_height: number, grid: CanvasToWebGLContextGrid, texture_width: number, texture_height: number, mul1: number, mul2: number, mul3: number, mul4: number, add1: number, add2: number, add3: number, add4: number): void;
88
+ /**
89
+ * @param {WebGLShaderUniform} uniform
90
+ * @param {boolean} has_grid
91
+ * @param {number} matrix_a
92
+ * @param {number} matrix_b
93
+ * @param {number} matrix_c
94
+ * @param {number} matrix_d
95
+ * @param {number} matrix_e
96
+ * @param {number} matrix_f
97
+ * @param {number} matrix_g
98
+ * @param {number} matrix_h
99
+ * @param {number} matrix_i
100
+ * @param {number} viewport_width
101
+ * @param {number} viewport_height
102
+ * @param {CanvasToWebGLContextGrid} grid
103
+ * @return {void}
104
+ * @method
105
+ * @public
106
+ */
107
+ setMaskShapeUniform(uniform: WebGLShaderUniform, has_grid: boolean, matrix_a: number, matrix_b: number, matrix_c: number, matrix_d: number, matrix_e: number, matrix_f: number, matrix_g: number, matrix_h: number, matrix_i: number, viewport_width: number, viewport_height: number, grid?: CanvasToWebGLContextGrid | null): void;
108
+ /**
109
+ * @param {WebGLShaderUniform} uniform
110
+ * @param {number} width
111
+ * @param {number} height
112
+ * @return {void}
113
+ * @method
114
+ * @public
115
+ */
116
+ setMaskShapeUniformIdentity(uniform: WebGLShaderUniform, width: number, height: number): void;
117
+ }