@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,165 @@
1
+ import { $getMap, $Float32Array, $Int32Array } from "@next2d/share";
2
+ /**
3
+ * @class
4
+ */
5
+ export class WebGLShaderUniform {
6
+ /**
7
+ * @param {WebGL2RenderingContext} gl
8
+ * @param {WebGLProgram} program
9
+ * @constructor
10
+ * @public
11
+ */
12
+ constructor(gl, program) {
13
+ /**
14
+ * @type {WebGL2RenderingContext}
15
+ * @private
16
+ */
17
+ this._$gl = gl;
18
+ /**
19
+ * @type {array}
20
+ * @private
21
+ */
22
+ this._$array = [];
23
+ /**
24
+ * @type {Map}
25
+ * @private
26
+ */
27
+ this._$map = $getMap();
28
+ const activeUniforms = this._$gl.getProgramParameter(program, this._$gl.ACTIVE_UNIFORMS);
29
+ for (let i = 0; i < activeUniforms; i++) {
30
+ const info = this._$gl.getActiveUniform(program, i);
31
+ if (!info) {
32
+ throw new Error("the WebGLActiveInfo is null.");
33
+ }
34
+ const name = info.name.endsWith("[0]")
35
+ ? info.name.slice(0, -3)
36
+ : info.name;
37
+ const location = this._$gl.getUniformLocation(program, name);
38
+ if (!location) {
39
+ throw new Error("the WebGLUniformLocation is null.");
40
+ }
41
+ // WebGLの仕様でuniformのint型のデフォルト値は0に設定されるため、
42
+ // sampler2D(size=1)の値の更新は不要
43
+ if (info.type === this._$gl.SAMPLER_2D && info.size === 1) {
44
+ continue;
45
+ }
46
+ const data = {};
47
+ switch (info.type) {
48
+ // uniformの値の設定は、gl.uniform4[fi]v()が最速のため、
49
+ // 可能な限りFloat32Arrayに値をパックして転送するようにする
50
+ case this._$gl.FLOAT_VEC4:
51
+ data.method = this._$gl.uniform4fv.bind(this._$gl, location);
52
+ data.array = new $Float32Array(4 * info.size);
53
+ data.assign = -1;
54
+ break;
55
+ case this._$gl.INT_VEC4:
56
+ data.method = this._$gl.uniform4iv.bind(this._$gl, location);
57
+ data.array = new $Int32Array(4 * info.size);
58
+ data.assign = -1;
59
+ break;
60
+ // uniformの値の設定は、programに保持されるため、
61
+ // sampler2Dは一度だけ設定するようにする
62
+ case this._$gl.SAMPLER_2D:
63
+ data.method = this._$gl.uniform1iv.bind(this._$gl, location);
64
+ data.array = new $Int32Array(info.size);
65
+ data.assign = 1;
66
+ break;
67
+ case this._$gl.FLOAT:
68
+ case this._$gl.FLOAT_VEC2:
69
+ case this._$gl.FLOAT_VEC3:
70
+ case this._$gl.FLOAT_MAT2:
71
+ case this._$gl.FLOAT_MAT3:
72
+ case this._$gl.FLOAT_MAT4:
73
+ case this._$gl.INT:
74
+ case this._$gl.INT_VEC2:
75
+ case this._$gl.INT_VEC3:
76
+ default:
77
+ throw new Error("Use gl.FLOAT_VEC4 or gl.INT_VEC4 instead");
78
+ }
79
+ this._$array.push(data);
80
+ this._$map.set(name, data);
81
+ }
82
+ }
83
+ /**
84
+ * @param {string} name
85
+ * @return {Int32Array|Float32Array}
86
+ * @method
87
+ * @public
88
+ */
89
+ getArray(name) {
90
+ const data = this._$map.get(name);
91
+ if (!data || !data.array) {
92
+ throw new Error("the UniformData is null.");
93
+ }
94
+ return data.array;
95
+ }
96
+ /**
97
+ * @member {Int32Array|Float32Array}
98
+ * @readonly
99
+ * @public
100
+ */
101
+ get textures() {
102
+ const data = this._$map.get("u_textures");
103
+ if (!data || !data.array) {
104
+ throw new Error("the UniformData is null.");
105
+ }
106
+ return data.array;
107
+ }
108
+ /**
109
+ * @member {Int32Array|Float32Array}
110
+ * @readonly
111
+ * @public
112
+ */
113
+ get highp() {
114
+ const data = this._$map.get("u_highp");
115
+ if (!data || !data.array) {
116
+ throw new Error("the UniformData is null.");
117
+ }
118
+ return data.array;
119
+ }
120
+ /**
121
+ * @member {Int32Array|Float32Array}
122
+ * @readonly
123
+ * @public
124
+ */
125
+ get mediump() {
126
+ const data = this._$map.get("u_mediump");
127
+ if (!data || !data.array) {
128
+ throw new Error("the UniformData is null.");
129
+ }
130
+ return data.array;
131
+ }
132
+ /**
133
+ * @member {Int32Array|Float32Array}
134
+ * @readonly
135
+ * @public
136
+ */
137
+ get integer() {
138
+ const data = this._$map.get("u_integer");
139
+ if (!data || !data.array) {
140
+ throw new Error("the UniformData is null.");
141
+ }
142
+ return data.array;
143
+ }
144
+ /**
145
+ * @return {void}
146
+ * @method
147
+ * @public
148
+ */
149
+ bindUniforms() {
150
+ const length = this._$array.length;
151
+ for (let i = 0; i < length; i++) {
152
+ const data = this._$array[i];
153
+ if (data.method === undefined || data.assign === undefined) {
154
+ continue;
155
+ }
156
+ if (data.assign < 0) {
157
+ data.method(data.array);
158
+ }
159
+ else if (data.assign > 0) {
160
+ data.assign--;
161
+ data.method(data.array);
162
+ }
163
+ }
164
+ }
165
+ }
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @class
3
+ */
4
+ export declare class FragmentShaderLibrary {
5
+ /**
6
+ * @return {string}
7
+ * @method
8
+ * @static
9
+ */
10
+ static FUNCTION_IS_INSIDE(): string;
11
+ /**
12
+ * @param {number} mediump_index
13
+ * @return {string}
14
+ * @method
15
+ * @static
16
+ */
17
+ static STATEMENT_COLOR_TRANSFORM_ON(mediump_index: number): string;
18
+ }
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @class
3
+ */
4
+ export class FragmentShaderLibrary {
5
+ /**
6
+ * @return {string}
7
+ * @method
8
+ * @static
9
+ */
10
+ static FUNCTION_IS_INSIDE() {
11
+ return `
12
+
13
+ float isInside(in vec2 uv) {
14
+ return step(4.0, dot(step(vec4(0.0, uv.x, 0.0, uv.y), vec4(uv.x, 1.0, uv.y, 1.0)), vec4(1.0)));
15
+ }
16
+
17
+ `;
18
+ }
19
+ /**
20
+ * @param {number} mediump_index
21
+ * @return {string}
22
+ * @method
23
+ * @static
24
+ */
25
+ static STATEMENT_COLOR_TRANSFORM_ON(mediump_index) {
26
+ return `
27
+ vec4 mul = u_mediump[${mediump_index}];
28
+ vec4 add = u_mediump[${mediump_index + 1}];
29
+
30
+ src.rgb /= max(0.0001, src.a);
31
+ src = clamp(src * mul + add, 0.0, 1.0);
32
+ src.rgb *= src.a;
33
+ `;
34
+ }
35
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @class
3
+ */
4
+ export declare class FragmentShaderSource {
5
+ /**
6
+ * @return {string}
7
+ * @method
8
+ * @static
9
+ */
10
+ static SOLID_COLOR(): string;
11
+ /**
12
+ * @return {string}
13
+ * @method
14
+ * @static
15
+ */
16
+ static BITMAP_CLIPPED(): string;
17
+ /**
18
+ * @return {string}
19
+ * @method
20
+ * @static
21
+ */
22
+ static BITMAP_PATTERN(): string;
23
+ /**
24
+ * @return {string}
25
+ * @method
26
+ * @static
27
+ */
28
+ static MASK(): string;
29
+ }
@@ -0,0 +1,99 @@
1
+ import { FragmentShaderLibrary } from "./FragmentShaderLibrary";
2
+ /**
3
+ * @class
4
+ */
5
+ export class FragmentShaderSource {
6
+ /**
7
+ * @return {string}
8
+ * @method
9
+ * @static
10
+ */
11
+ static SOLID_COLOR() {
12
+ return `#version 300 es
13
+ precision mediump float;
14
+
15
+ uniform vec4 u_mediump;
16
+
17
+ out vec4 o_color;
18
+
19
+ void main() {
20
+ o_color = vec4(u_mediump.rgb * u_mediump.a, u_mediump.a);
21
+ }
22
+
23
+ `;
24
+ }
25
+ /**
26
+ * @return {string}
27
+ * @method
28
+ * @static
29
+ */
30
+ static BITMAP_CLIPPED() {
31
+ return `#version 300 es
32
+ precision mediump float;
33
+
34
+ uniform sampler2D u_texture;
35
+ uniform vec4 u_mediump[3];
36
+
37
+ in vec2 v_uv;
38
+ out vec4 o_color;
39
+
40
+ void main() {
41
+ vec2 uv = vec2(v_uv.x, u_mediump[0].y - v_uv.y) / u_mediump[0].xy;
42
+
43
+ vec4 src = texture(u_texture, uv);
44
+ ${FragmentShaderLibrary.STATEMENT_COLOR_TRANSFORM_ON(1)}
45
+ o_color = src;
46
+ }`;
47
+ }
48
+ /**
49
+ * @return {string}
50
+ * @method
51
+ * @static
52
+ */
53
+ static BITMAP_PATTERN() {
54
+ return `#version 300 es
55
+ precision mediump float;
56
+
57
+ uniform sampler2D u_texture;
58
+ uniform vec4 u_mediump[3];
59
+
60
+ in vec2 v_uv;
61
+ out vec4 o_color;
62
+
63
+ void main() {
64
+ vec2 uv = fract(vec2(v_uv.x, -v_uv.y) / u_mediump[0].xy);
65
+
66
+ vec4 src = texture(u_texture, uv);
67
+ ${FragmentShaderLibrary.STATEMENT_COLOR_TRANSFORM_ON(1)}
68
+ o_color = src;
69
+ }`;
70
+ }
71
+ /**
72
+ * @return {string}
73
+ * @method
74
+ * @static
75
+ */
76
+ static MASK() {
77
+ return `#version 300 es
78
+ precision mediump float;
79
+
80
+ in vec2 v_bezier;
81
+ out vec4 o_color;
82
+
83
+ void main() {
84
+ vec2 px = dFdx(v_bezier);
85
+ vec2 py = dFdy(v_bezier);
86
+
87
+ vec2 f = (2.0 * v_bezier.x) * vec2(px.x, py.x) - vec2(px.y, py.y);
88
+ float alpha = 0.5 - (v_bezier.x * v_bezier.x - v_bezier.y) / length(f);
89
+
90
+ if (alpha > 0.0) {
91
+ o_color = vec4(min(alpha, 1.0));
92
+ } else {
93
+ discard;
94
+ }
95
+ }
96
+
97
+ `;
98
+ }
99
+ }
@@ -0,0 +1,67 @@
1
+ /**
2
+ * @class
3
+ */
4
+ export declare class FragmentShaderSourceBlend {
5
+ /**
6
+ * @param {string} operation
7
+ * @param {boolean} with_color_transform
8
+ * @return {string}
9
+ * @method
10
+ * @static
11
+ */
12
+ static TEMPLATE(operation: string, with_color_transform: boolean): string;
13
+ /**
14
+ * @return {string}
15
+ * @method
16
+ * @static
17
+ */
18
+ static FUNCTION_NORMAL(): string;
19
+ /**
20
+ * @return {string}
21
+ * @method
22
+ * @static
23
+ */
24
+ static FUNCTION_SUBTRACT(): string;
25
+ /**
26
+ * @return {string}
27
+ * @method
28
+ * @static
29
+ */
30
+ static FUNCTION_MULTIPLY(): string;
31
+ /**
32
+ * @return {string}
33
+ * @method
34
+ * @static
35
+ */
36
+ static FUNCTION_LIGHTEN(): string;
37
+ /**
38
+ * @return {string}
39
+ * @method
40
+ * @static
41
+ */
42
+ static FUNCTION_DARKEN(): string;
43
+ /**
44
+ * @return {string}
45
+ * @method
46
+ * @static
47
+ */
48
+ static FUNCTION_OVERLAY(): string;
49
+ /**
50
+ * @return {string}
51
+ * @method
52
+ * @static
53
+ */
54
+ static FUNCTION_HARDLIGHT(): string;
55
+ /**
56
+ * @return {string}
57
+ * @method
58
+ * @static
59
+ */
60
+ static FUNCTION_DIFFERENCE(): string;
61
+ /**
62
+ * @return {string}
63
+ * @method
64
+ * @static
65
+ */
66
+ static FUNCTION_INVERT(): string;
67
+ }