@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.
- package/README.md +206 -5
- package/package.json +3 -3
- package/src/AtlasManager/service/AtlasManagerCreateNodeService.js +20 -6
- package/src/AtlasManager.d.ts +2 -118
- package/src/AtlasManager.js +10 -179
- package/src/BezierConverter/usecase/BezierConverterAdaptiveCubicToQuadUseCase.d.ts +18 -0
- package/src/BezierConverter/usecase/BezierConverterAdaptiveCubicToQuadUseCase.js +193 -0
- package/src/BezierConverter.d.ts +88 -0
- package/src/BezierConverter.js +158 -0
- package/src/Blend/service/BlendAddService.js +2 -2
- package/src/Blend/service/BlendAlphaService.js +2 -2
- package/src/Blend/service/BlendEraseService.js +2 -2
- package/src/Blend/service/BlendOneZeroService.js +2 -2
- package/src/Blend/service/BlendResetService.js +2 -2
- package/src/Blend/service/BlendScreenService.js +2 -2
- package/src/Blend/service/BlendSourceAtopService.js +2 -2
- package/src/Blend/service/BlendSourceInService.js +2 -2
- package/src/Blend/usecase/BlnedDrawArraysInstancedUseCase.js +2 -2
- package/src/Blend/usecase/BlnedDrawDisplayObjectUseCase.js +10 -20
- package/src/Blend.d.ts +2 -36
- package/src/Blend.js +2 -58
- package/src/Context/service/ContextBeginNodeRenderingService.js +3 -3
- package/src/Context/service/ContextCreateImageBitmapService.js +30 -10
- package/src/Context/service/ContextEndNodeRenderingService.js +2 -2
- package/src/Context/service/ContextUpdateTransferBoundsService.js +2 -2
- package/src/Context/usecase/ContextApplyFilterUseCase.js +16 -10
- package/src/Context/usecase/ContextBindUseCase.js +3 -3
- package/src/Context/usecase/ContextClearRectUseCase.js +3 -3
- package/src/Context/usecase/ContextClipUseCase.js +3 -3
- package/src/Context/usecase/ContextContainerBeginLayerUseCase.d.ts +18 -0
- package/src/Context/usecase/ContextContainerBeginLayerUseCase.js +31 -0
- package/src/Context/usecase/ContextContainerDrawCachedFilterUseCase.d.ts +16 -0
- package/src/Context/usecase/ContextContainerDrawCachedFilterUseCase.js +36 -0
- package/src/Context/usecase/ContextContainerEndLayerUseCase.d.ts +18 -0
- package/src/Context/usecase/ContextContainerEndLayerUseCase.js +171 -0
- package/src/Context/usecase/ContextDrawFillUseCase.js +9 -5
- package/src/Context/usecase/ContextGradientStrokeUseCase.js +1 -1
- package/src/Context/usecase/ContextLinearGradientFillUseCase.js +16 -14
- package/src/Context/usecase/ContextNormalFillUseCase.js +10 -12
- package/src/Context/usecase/ContextPatternBitmapFillUseCase.d.ts +2 -2
- package/src/Context/usecase/ContextPatternBitmapFillUseCase.js +13 -14
- package/src/Context/usecase/ContextRadialGradientFillUseCase.js +16 -14
- package/src/Context.d.ts +5 -626
- package/src/Context.js +31 -636
- package/src/Filter/BevelFilter/usecase/FilterApplyBevelFilterUseCase.js +2 -2
- package/src/Filter/BlurFilter/usecase/FilterApplyBlurFilterUseCase.js +2 -2
- package/src/Filter/DisplacementMapFilter/usecase/FilterApplyDisplacementMapFilterUseCase.d.ts +1 -2
- package/src/Filter/DisplacementMapFilter/usecase/FilterApplyDisplacementMapFilterUseCase.js +3 -9
- package/src/Filter/DropShadowFilter/usecase/FilterApplyDropShadowFilterUseCase.js +2 -2
- package/src/Filter/GradientBevelFilter/usecase/FilterApplyGradientBevelFilterUseCase.js +2 -2
- package/src/Filter/GradientGlowFilter/usecase/FilterApplyGradientGlowFilterUseCase.js +2 -2
- package/src/FrameBufferManager/service/FrameBufferManagerBindAttachmentObjectService.js +8 -2
- package/src/FrameBufferManager/service/FrameBufferManagerTransferAtlasTextureService.js +12 -25
- package/src/FrameBufferManager/service/FrameBufferManagerUnBindAttachmentObjectService.js +2 -2
- package/src/FrameBufferManager/usecase/FrameBufferManagerGetAttachmentObjectUseCase.js +2 -2
- package/src/FrameBufferManager/usecase/FrameBufferManagerGetTextureFromNodeUseCase.js +7 -9
- package/src/FrameBufferManager.d.ts +8 -137
- package/src/FrameBufferManager.js +8 -199
- package/src/Mask/service/MaskBeginMaskService.js +2 -2
- package/src/Mask/service/MaskEndMaskService.js +2 -2
- package/src/Mask/service/MaskSetMaskBoundsService.js +2 -2
- package/src/Mask/usecase/MaskBindUseCase.js +4 -4
- package/src/Mask/usecase/MaskLeaveMaskUseCase.js +4 -4
- package/src/Mesh/service/MeshFindOverlappingPathsService.d.ts +2 -1
- package/src/Mesh/service/MeshFindOverlappingPathsService.js +7 -3
- package/src/Mesh/service/MeshIsPointInsideRectangleService.js +14 -11
- package/src/Mesh/usecase/MeshFillGenerateUseCase.js +7 -5
- package/src/Mesh/usecase/MeshGenerateCalculateBevelJoinUseCase.js +15 -3
- package/src/Mesh/usecase/MeshGenerateCalculateMiterJoinUseCase.js +17 -3
- package/src/Mesh/usecase/MeshGenerateCalculateRoundJoinUseCase.js +14 -2
- package/src/Mesh/usecase/MeshGenerateStrokeOutlineUseCase.js +39 -23
- package/src/Mesh/usecase/MeshStrokeGenerateUseCase.js +12 -4
- package/src/Mesh.d.ts +10 -0
- package/src/Mesh.js +23 -0
- package/src/PathCommand/service/PathCommandPushCurrentPathToVerticesService.d.ts +1 -2
- package/src/PathCommand/service/PathCommandPushCurrentPathToVerticesService.js +3 -4
- package/src/PathCommand/usecase/PathCommandBezierCurveToUseCase.d.ts +2 -2
- package/src/PathCommand/usecase/PathCommandBezierCurveToUseCase.js +9 -5
- package/src/PathCommand.js +18 -3
- package/src/Shader/Fragment/Filter/FragmentShaderSourceBlurFilter.d.ts +0 -6
- package/src/Shader/Fragment/Filter/FragmentShaderSourceBlurFilter.js +0 -6
- package/src/Shader/Fragment/Filter/FragmentShaderSourceColorMatrixFilter.d.ts +0 -5
- package/src/Shader/Fragment/Filter/FragmentShaderSourceColorMatrixFilter.js +0 -5
- package/src/Shader/Fragment/Filter/FragmentShaderSourceConvolutionFilter.d.ts +0 -10
- package/src/Shader/Fragment/Filter/FragmentShaderSourceConvolutionFilter.js +0 -10
- package/src/Shader/Fragment/Filter/FragmentShaderSourceDisplacementMapFilter.d.ts +0 -9
- package/src/Shader/Fragment/Filter/FragmentShaderSourceDisplacementMapFilter.js +8 -18
- package/src/Shader/Fragment/Filter/FragmentShaderSourceFilter.d.ts +0 -14
- package/src/Shader/Fragment/Filter/FragmentShaderSourceFilter.js +0 -99
- package/src/Shader/Fragment/FragmentShaderLibrary.d.ts +0 -17
- package/src/Shader/Fragment/FragmentShaderLibrary.js +9 -23
- package/src/Shader/Fragment/FragmentShaderSource.d.ts +0 -40
- package/src/Shader/Fragment/FragmentShaderSource.js +9 -47
- package/src/Shader/Fragment/FragmentShaderSourceBlend.d.ts +0 -7
- package/src/Shader/Fragment/FragmentShaderSourceBlend.js +0 -87
- package/src/Shader/Fragment/FragmentShaderSourceGradient.d.ts +0 -10
- package/src/Shader/Fragment/FragmentShaderSourceGradient.js +7 -41
- package/src/Shader/Fragment/FragmentShaderSourceGradientLUT.d.ts +0 -11
- package/src/Shader/Fragment/FragmentShaderSourceGradientLUT.js +0 -11
- package/src/Shader/Fragment/FragmentShaderSourceTexture.d.ts +0 -11
- package/src/Shader/Fragment/FragmentShaderSourceTexture.js +2 -13
- package/src/Shader/GradientLUTGenerator/usecase/GradientLUTGenerateShapeTextureUseCase.d.ts +4 -0
- package/src/Shader/GradientLUTGenerator/usecase/GradientLUTGenerateShapeTextureUseCase.js +14 -7
- package/src/Shader/GradientLUTGenerator.d.ts +23 -0
- package/src/Shader/GradientLUTGenerator.js +43 -6
- package/src/Shader/ShaderInstancedManager.d.ts +0 -26
- package/src/Shader/ShaderInstancedManager.js +0 -26
- package/src/Shader/ShaderManager/service/ShaderManagerSetBitmapFillUniformService.js +3 -3
- package/src/Shader/ShaderManager/service/ShaderManagerSetFillUniformService.js +3 -3
- package/src/Shader/ShaderManager/service/ShaderManagerSetGradientFillUniformService.js +3 -3
- package/src/Shader/ShaderManager/service/ShaderManagerSetMaskUniformService.js +3 -3
- package/src/Shader/ShaderManager/service/ShaderManagerSetMatrixTextureUniformService.js +3 -3
- package/src/Shader/ShaderManager/service/ShaderManagerSetMatrixTextureWithColorTransformUniformService.js +3 -3
- package/src/Shader/ShaderManager/service/ShaderManagerSetTextureUniformService.js +3 -3
- package/src/Shader/ShaderManager.d.ts +3 -71
- package/src/Shader/ShaderManager.js +22 -80
- package/src/Shader/Variants/Filter/service/VariantsBitmapFilterShaderService.js +2 -1
- package/src/Shader/Variants/GradientLUT/service/VariantsGradientLUTShaderService.d.ts +2 -2
- package/src/Shader/Variants/GradientLUT/service/VariantsGradientLUTShaderService.js +9 -6
- package/src/Shader/Variants/GradientLUTVariants.d.ts +21 -0
- package/src/Shader/Variants/GradientLUTVariants.js +63 -0
- package/src/Shader/Vertex/VertexShaderLibrary.d.ts +0 -17
- package/src/Shader/Vertex/VertexShaderLibrary.js +1 -18
- package/src/Shader/Vertex/VertexShaderSource.d.ts +0 -25
- package/src/Shader/Vertex/VertexShaderSource.js +0 -25
- package/src/Shader/Vertex/VertexShaderSourceFill.d.ts +0 -65
- package/src/Shader/Vertex/VertexShaderSourceFill.js +0 -65
- package/src/Stencil/service/StencilDisableSampleAlphaToCoverageService.d.ts +1 -0
- package/src/Stencil/service/StencilDisableSampleAlphaToCoverageService.js +8 -0
- package/src/Stencil/service/StencilEnableSampleAlphaToCoverageService.d.ts +1 -0
- package/src/Stencil/service/StencilEnableSampleAlphaToCoverageService.js +8 -0
- package/src/Stencil/service/StencilResetService.d.ts +9 -0
- package/src/Stencil/service/StencilResetService.js +14 -0
- package/src/Stencil/service/StencilSetFillModeService.d.ts +1 -0
- package/src/Stencil/service/StencilSetFillModeService.js +13 -0
- package/src/Stencil/service/StencilSetMaskModeService.d.ts +1 -0
- package/src/Stencil/service/StencilSetMaskModeService.js +14 -0
- package/src/Stencil.d.ts +9 -0
- package/src/Stencil.js +17 -0
- package/src/StencilBufferObject/usecase/StencilBufferObjectAcquireObjectUseCase.js +15 -7
- package/src/TextureManager/usecase/TextureManagerGetMainTextureFromBoundsUseCase.js +6 -7
- package/src/VertexArrayObject/service/VertexArrayObjectCreateFillObjectService.js +2 -3
- package/src/VertexArrayObject/usecase/VertexArrayObjectBindAttributeUseCase.js +4 -2
- package/src/VertexArrayObject/usecase/VertexArrayObjectBindFillMeshUseCase.js +3 -1
- package/src/VertexArrayObject/usecase/VertexArrayObjectCreateInstancedVertexArrayObjectUseCase.js +5 -3
- package/src/VertexArrayObject/usecase/VertexArrayObjectCreateRectVertexArrayObjectUseCase.js +2 -2
- package/src/VertexArrayObject.d.ts +0 -9
- package/src/VertexArrayObject.js +0 -16
- package/src/WebGLUtil.d.ts +10 -262
- package/src/WebGLUtil.js +45 -316
- package/src/interface/ICubicConverterReturnObject.d.ts +4 -0
- package/src/interface/ICubicConverterReturnObject.js +1 -0
- package/src/interface/IVertexArrayObject.d.ts +1 -1
- package/src/Context/service/ContextUpdateAllTransferBoundsService.d.ts +0 -11
- package/src/Context/service/ContextUpdateAllTransferBoundsService.js +0 -21
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @return {string}
|
|
3
|
-
* @method
|
|
4
|
-
* @static
|
|
5
|
-
*/
|
|
6
1
|
export const TEXTURE_TEMPLATE = () => {
|
|
7
2
|
return `#version 300 es
|
|
8
3
|
|
|
@@ -17,11 +12,6 @@ void main() {
|
|
|
17
12
|
gl_Position = vec4(position, 0.0, 1.0);
|
|
18
13
|
}`;
|
|
19
14
|
};
|
|
20
|
-
/**
|
|
21
|
-
* @return {string}
|
|
22
|
-
* @method
|
|
23
|
-
* @static
|
|
24
|
-
*/
|
|
25
15
|
export const VECTOR_TEMPLATE = () => {
|
|
26
16
|
return `#version 300 es
|
|
27
17
|
|
|
@@ -36,11 +26,6 @@ void main() {
|
|
|
36
26
|
gl_Position = vec4(position.x, -position.y, 0.0, 1.0);
|
|
37
27
|
}`;
|
|
38
28
|
};
|
|
39
|
-
/**
|
|
40
|
-
* @return {string}
|
|
41
|
-
* @method
|
|
42
|
-
* @static
|
|
43
|
-
*/
|
|
44
29
|
export const BLEND_MATRIX_TEMPLATE = () => {
|
|
45
30
|
return `#version 300 es
|
|
46
31
|
|
|
@@ -70,11 +55,6 @@ void main() {
|
|
|
70
55
|
gl_Position = vec4(position.x, -position.y, 0.0, 1.0);
|
|
71
56
|
}`;
|
|
72
57
|
};
|
|
73
|
-
/**
|
|
74
|
-
* @return {string}
|
|
75
|
-
* @method
|
|
76
|
-
* @static
|
|
77
|
-
*/
|
|
78
58
|
export const BLEND_TEMPLATE = () => {
|
|
79
59
|
return `#version 300 es
|
|
80
60
|
|
|
@@ -98,11 +78,6 @@ void main() {
|
|
|
98
78
|
gl_Position = vec4(position.x, -position.y, 0.0, 1.0);
|
|
99
79
|
}`;
|
|
100
80
|
};
|
|
101
|
-
/**
|
|
102
|
-
* @return {string}
|
|
103
|
-
* @method
|
|
104
|
-
* @static
|
|
105
|
-
*/
|
|
106
81
|
export const INSTANCE_TEMPLATE = () => {
|
|
107
82
|
return `#version 300 es
|
|
108
83
|
|
|
@@ -1,76 +1,11 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @return {string}
|
|
3
|
-
* @method
|
|
4
|
-
* @static
|
|
5
|
-
*/
|
|
6
1
|
export declare const ATTRIBUTE_BEZIER_ON: () => string;
|
|
7
|
-
/**
|
|
8
|
-
* @returns {string}
|
|
9
|
-
* @method
|
|
10
|
-
* @static
|
|
11
|
-
*/
|
|
12
2
|
export declare const ATTRIBUTE_MATRIX_ON: () => string;
|
|
13
|
-
/**
|
|
14
|
-
* @return {string}
|
|
15
|
-
* @method
|
|
16
|
-
* @static
|
|
17
|
-
*/
|
|
18
3
|
export declare const VARYING_UV_ON: () => string;
|
|
19
|
-
/**
|
|
20
|
-
* @return {string}
|
|
21
|
-
* @method
|
|
22
|
-
* @static
|
|
23
|
-
*/
|
|
24
4
|
export declare const VARYING_BEZIER_ON: () => string;
|
|
25
|
-
/**
|
|
26
|
-
* @return {string}
|
|
27
|
-
* @method
|
|
28
|
-
* @static
|
|
29
|
-
*/
|
|
30
5
|
export declare const STATEMENT_UV_ON: () => string;
|
|
31
|
-
/**
|
|
32
|
-
* @return {string}
|
|
33
|
-
* @method
|
|
34
|
-
* @static
|
|
35
|
-
*/
|
|
36
6
|
export declare const STATEMENT_BEZIER_ON: () => string;
|
|
37
|
-
/**
|
|
38
|
-
* @return {string}
|
|
39
|
-
* @method
|
|
40
|
-
* @static
|
|
41
|
-
*/
|
|
42
7
|
export declare const ATTRIBUTE_COLOR_ON: () => string;
|
|
43
|
-
/**
|
|
44
|
-
* @return {string}
|
|
45
|
-
* @method
|
|
46
|
-
* @static
|
|
47
|
-
*/
|
|
48
8
|
export declare const VARYING_COLOR_ON: () => string;
|
|
49
|
-
/**
|
|
50
|
-
* @return {string}
|
|
51
|
-
* @method
|
|
52
|
-
* @static
|
|
53
|
-
*/
|
|
54
9
|
export declare const STATEMENT_COLOR_ON: () => string;
|
|
55
|
-
/**
|
|
56
|
-
* @description 各種、塗りのシェーダのテンプレートを返却
|
|
57
|
-
* Returns a template for various fill shaders
|
|
58
|
-
*
|
|
59
|
-
* @param {number} highp_length
|
|
60
|
-
* @param {boolean} with_uv
|
|
61
|
-
* @param {boolean} for_mask
|
|
62
|
-
* @param {boolean} is_grid_enabled
|
|
63
|
-
* @return {string}
|
|
64
|
-
* @method
|
|
65
|
-
* @static
|
|
66
|
-
*/
|
|
67
10
|
export declare const FILL_TEMPLATE: (highp_length: number, with_uv: boolean, for_mask: boolean, is_grid_enabled: boolean) => string;
|
|
68
|
-
/**
|
|
69
|
-
* @description 矩形の塗りのシェーダのテンプレートを返却
|
|
70
|
-
* Returns a template for filling rectangles
|
|
71
|
-
*
|
|
72
|
-
* @return {string}
|
|
73
|
-
* @method
|
|
74
|
-
* @static
|
|
75
|
-
*/
|
|
76
11
|
export declare const FILL_RECT_TEMPLATE: () => string;
|
|
@@ -1,43 +1,18 @@
|
|
|
1
1
|
import { FUNCTION_GRID_OFF, FUNCTION_GRID_ON } from "./VertexShaderLibrary";
|
|
2
|
-
/**
|
|
3
|
-
* @return {string}
|
|
4
|
-
* @method
|
|
5
|
-
* @static
|
|
6
|
-
*/
|
|
7
2
|
export const ATTRIBUTE_BEZIER_ON = () => {
|
|
8
3
|
return "layout (location = 1) in vec2 a_bezier;";
|
|
9
4
|
};
|
|
10
|
-
/**
|
|
11
|
-
* @returns {string}
|
|
12
|
-
* @method
|
|
13
|
-
* @static
|
|
14
|
-
*/
|
|
15
5
|
export const ATTRIBUTE_MATRIX_ON = () => {
|
|
16
6
|
return `layout (location = 3) in vec3 a_matrix0;
|
|
17
7
|
layout (location = 4) in vec3 a_matrix1;
|
|
18
8
|
layout (location = 5) in vec3 a_matrix2;`;
|
|
19
9
|
};
|
|
20
|
-
/**
|
|
21
|
-
* @return {string}
|
|
22
|
-
* @method
|
|
23
|
-
* @static
|
|
24
|
-
*/
|
|
25
10
|
export const VARYING_UV_ON = () => {
|
|
26
11
|
return "out vec2 v_uv;";
|
|
27
12
|
};
|
|
28
|
-
/**
|
|
29
|
-
* @return {string}
|
|
30
|
-
* @method
|
|
31
|
-
* @static
|
|
32
|
-
*/
|
|
33
13
|
export const VARYING_BEZIER_ON = () => {
|
|
34
14
|
return "out vec2 v_bezier;";
|
|
35
15
|
};
|
|
36
|
-
/**
|
|
37
|
-
* @return {string}
|
|
38
|
-
* @method
|
|
39
|
-
* @static
|
|
40
|
-
*/
|
|
41
16
|
export const STATEMENT_UV_ON = () => {
|
|
42
17
|
return `
|
|
43
18
|
mat3 uv_matrix = mat3(
|
|
@@ -52,50 +27,18 @@ export const STATEMENT_UV_ON = () => {
|
|
|
52
27
|
);
|
|
53
28
|
v_uv = (inverse_matrix * uv_matrix * vec3(a_vertex, 1.0)).xy;`;
|
|
54
29
|
};
|
|
55
|
-
/**
|
|
56
|
-
* @return {string}
|
|
57
|
-
* @method
|
|
58
|
-
* @static
|
|
59
|
-
*/
|
|
60
30
|
export const STATEMENT_BEZIER_ON = () => {
|
|
61
31
|
return "v_bezier = a_bezier;";
|
|
62
32
|
};
|
|
63
|
-
/**
|
|
64
|
-
* @return {string}
|
|
65
|
-
* @method
|
|
66
|
-
* @static
|
|
67
|
-
*/
|
|
68
33
|
export const ATTRIBUTE_COLOR_ON = () => {
|
|
69
34
|
return "layout (location = 2) in vec4 a_color;";
|
|
70
35
|
};
|
|
71
|
-
/**
|
|
72
|
-
* @return {string}
|
|
73
|
-
* @method
|
|
74
|
-
* @static
|
|
75
|
-
*/
|
|
76
36
|
export const VARYING_COLOR_ON = () => {
|
|
77
37
|
return "out vec4 v_color;";
|
|
78
38
|
};
|
|
79
|
-
/**
|
|
80
|
-
* @return {string}
|
|
81
|
-
* @method
|
|
82
|
-
* @static
|
|
83
|
-
*/
|
|
84
39
|
export const STATEMENT_COLOR_ON = () => {
|
|
85
40
|
return "v_color = a_color;";
|
|
86
41
|
};
|
|
87
|
-
/**
|
|
88
|
-
* @description 各種、塗りのシェーダのテンプレートを返却
|
|
89
|
-
* Returns a template for various fill shaders
|
|
90
|
-
*
|
|
91
|
-
* @param {number} highp_length
|
|
92
|
-
* @param {boolean} with_uv
|
|
93
|
-
* @param {boolean} for_mask
|
|
94
|
-
* @param {boolean} is_grid_enabled
|
|
95
|
-
* @return {string}
|
|
96
|
-
* @method
|
|
97
|
-
* @static
|
|
98
|
-
*/
|
|
99
42
|
export const FILL_TEMPLATE = (highp_length, with_uv, for_mask, is_grid_enabled) => {
|
|
100
43
|
const bezierAttribute = for_mask
|
|
101
44
|
? ATTRIBUTE_BEZIER_ON()
|
|
@@ -148,14 +91,6 @@ void main() {
|
|
|
148
91
|
gl_Position = vec4(pos.x, -pos.y, 0.0, 1.0);
|
|
149
92
|
}`;
|
|
150
93
|
};
|
|
151
|
-
/**
|
|
152
|
-
* @description 矩形の塗りのシェーダのテンプレートを返却
|
|
153
|
-
* Returns a template for filling rectangles
|
|
154
|
-
*
|
|
155
|
-
* @return {string}
|
|
156
|
-
* @method
|
|
157
|
-
* @static
|
|
158
|
-
*/
|
|
159
94
|
export const FILL_RECT_TEMPLATE = () => {
|
|
160
95
|
return `#version 300 es
|
|
161
96
|
layout (location = 0) in vec2 a_vertex;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const execute: () => void;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { $gl } from "../../WebGLUtil";
|
|
2
|
+
import { $sampleAlphaToCoverageEnabled, $setSampleAlphaToCoverageEnabled } from "../../Stencil";
|
|
3
|
+
export const execute = () => {
|
|
4
|
+
if ($sampleAlphaToCoverageEnabled) {
|
|
5
|
+
$setSampleAlphaToCoverageEnabled(false);
|
|
6
|
+
$gl.disable($gl.SAMPLE_ALPHA_TO_COVERAGE);
|
|
7
|
+
}
|
|
8
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const execute: () => void;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { $gl } from "../../WebGLUtil";
|
|
2
|
+
import { $sampleAlphaToCoverageEnabled, $setSampleAlphaToCoverageEnabled } from "../../Stencil";
|
|
3
|
+
export const execute = () => {
|
|
4
|
+
if (!$sampleAlphaToCoverageEnabled) {
|
|
5
|
+
$setSampleAlphaToCoverageEnabled(true);
|
|
6
|
+
$gl.enable($gl.SAMPLE_ALPHA_TO_COVERAGE);
|
|
7
|
+
}
|
|
8
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { $resetStencilMode, $setColorMaskEnabled, $setSampleAlphaToCoverageEnabled } from "../../Stencil";
|
|
2
|
+
/**
|
|
3
|
+
* @description ステンシル状態キャッシュをリセット
|
|
4
|
+
* Reset stencil state cache
|
|
5
|
+
*
|
|
6
|
+
* @return {void}
|
|
7
|
+
* @method
|
|
8
|
+
* @protected
|
|
9
|
+
*/
|
|
10
|
+
export const execute = () => {
|
|
11
|
+
$resetStencilMode();
|
|
12
|
+
$setColorMaskEnabled(true);
|
|
13
|
+
$setSampleAlphaToCoverageEnabled(false);
|
|
14
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const execute: () => void;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { $gl } from "../../WebGLUtil";
|
|
2
|
+
import { $currentStencilMode, $setStencilMode, $colorMaskEnabled, $setColorMaskEnabled, STENCIL_MODE_FILL } from "../../Stencil";
|
|
3
|
+
export const execute = () => {
|
|
4
|
+
if ($currentStencilMode !== STENCIL_MODE_FILL) {
|
|
5
|
+
$setStencilMode(STENCIL_MODE_FILL);
|
|
6
|
+
$gl.stencilFunc($gl.NOTEQUAL, 0, 0xff);
|
|
7
|
+
$gl.stencilOp($gl.KEEP, $gl.ZERO, $gl.ZERO);
|
|
8
|
+
}
|
|
9
|
+
if (!$colorMaskEnabled) {
|
|
10
|
+
$setColorMaskEnabled(true);
|
|
11
|
+
$gl.colorMask(true, true, true, true);
|
|
12
|
+
}
|
|
13
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const execute: () => void;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { $gl } from "../../WebGLUtil";
|
|
2
|
+
import { $currentStencilMode, $setStencilMode, $colorMaskEnabled, $setColorMaskEnabled, STENCIL_MODE_MASK } from "../../Stencil";
|
|
3
|
+
export const execute = () => {
|
|
4
|
+
if ($currentStencilMode !== STENCIL_MODE_MASK) {
|
|
5
|
+
$setStencilMode(STENCIL_MODE_MASK);
|
|
6
|
+
$gl.stencilFunc($gl.ALWAYS, 0, 0xff);
|
|
7
|
+
$gl.stencilOpSeparate($gl.FRONT, $gl.KEEP, $gl.KEEP, $gl.INCR_WRAP);
|
|
8
|
+
$gl.stencilOpSeparate($gl.BACK, $gl.KEEP, $gl.KEEP, $gl.DECR_WRAP);
|
|
9
|
+
}
|
|
10
|
+
if ($colorMaskEnabled) {
|
|
11
|
+
$setColorMaskEnabled(false);
|
|
12
|
+
$gl.colorMask(false, false, false, false);
|
|
13
|
+
}
|
|
14
|
+
};
|
package/src/Stencil.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare let $currentStencilMode: number;
|
|
2
|
+
export declare const STENCIL_MODE_MASK: number;
|
|
3
|
+
export declare const STENCIL_MODE_FILL: number;
|
|
4
|
+
export declare const $setStencilMode: (mode: number) => void;
|
|
5
|
+
export declare const $resetStencilMode: () => void;
|
|
6
|
+
export declare let $colorMaskEnabled: boolean;
|
|
7
|
+
export declare const $setColorMaskEnabled: (enabled: boolean) => void;
|
|
8
|
+
export declare let $sampleAlphaToCoverageEnabled: boolean;
|
|
9
|
+
export declare const $setSampleAlphaToCoverageEnabled: (enabled: boolean) => void;
|
package/src/Stencil.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export let $currentStencilMode = 0;
|
|
2
|
+
export const STENCIL_MODE_MASK = 1;
|
|
3
|
+
export const STENCIL_MODE_FILL = 2;
|
|
4
|
+
export const $setStencilMode = (mode) => {
|
|
5
|
+
$currentStencilMode = mode;
|
|
6
|
+
};
|
|
7
|
+
export const $resetStencilMode = () => {
|
|
8
|
+
$currentStencilMode = 0;
|
|
9
|
+
};
|
|
10
|
+
export let $colorMaskEnabled = true;
|
|
11
|
+
export const $setColorMaskEnabled = (enabled) => {
|
|
12
|
+
$colorMaskEnabled = enabled;
|
|
13
|
+
};
|
|
14
|
+
export let $sampleAlphaToCoverageEnabled = false;
|
|
15
|
+
export const $setSampleAlphaToCoverageEnabled = (enabled) => {
|
|
16
|
+
$sampleAlphaToCoverageEnabled = enabled;
|
|
17
|
+
};
|
|
@@ -15,14 +15,22 @@ export const execute = (width, height) => {
|
|
|
15
15
|
if (!$objectPool.length) {
|
|
16
16
|
return stencilBufferObjectCreateService();
|
|
17
17
|
}
|
|
18
|
+
let bestIdx = -1;
|
|
19
|
+
let bestArea = Infinity;
|
|
18
20
|
for (let idx = 0; idx < $objectPool.length; ++idx) {
|
|
19
|
-
const
|
|
20
|
-
if (
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
const obj = $objectPool[idx];
|
|
22
|
+
if (obj.width >= width && obj.height >= height) {
|
|
23
|
+
if (obj.area < bestArea) {
|
|
24
|
+
bestArea = obj.area;
|
|
25
|
+
bestIdx = idx;
|
|
26
|
+
}
|
|
23
27
|
}
|
|
24
|
-
$objectPool.splice(idx, 1);
|
|
25
|
-
return stencilBufferObject;
|
|
26
28
|
}
|
|
27
|
-
|
|
29
|
+
if (bestIdx !== -1) {
|
|
30
|
+
const obj = $objectPool[bestIdx];
|
|
31
|
+
$objectPool[bestIdx] = $objectPool[$objectPool.length - 1];
|
|
32
|
+
$objectPool.pop();
|
|
33
|
+
return obj;
|
|
34
|
+
}
|
|
35
|
+
return $objectPool.pop();
|
|
28
36
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { execute as textureManagerGetTextureUseCase } from "./TextureManagerGetTextureUseCase";
|
|
2
2
|
import { execute as textureManagerBind0UseCase } from "./TextureManagerBind0UseCase";
|
|
3
|
-
import { $context, $gl } from "../../WebGLUtil";
|
|
4
|
-
import { $
|
|
3
|
+
import { $context, $gl, $enableScissorTest, $disableScissorTest } from "../../WebGLUtil";
|
|
4
|
+
import { $drawBitmapFramebuffer, $readFrameBuffer } from "../../FrameBufferManager";
|
|
5
5
|
/**
|
|
6
6
|
* @type {ITextureObject}
|
|
7
7
|
* @private
|
|
@@ -24,8 +24,7 @@ export const execute = (x, y, width, height) => {
|
|
|
24
24
|
// メインのアタッチメントオブジェクトをセット
|
|
25
25
|
const mainAttachmentObject = $context.$mainAttachmentObject;
|
|
26
26
|
$context.bind(mainAttachmentObject);
|
|
27
|
-
|
|
28
|
-
$gl.bindFramebuffer($gl.FRAMEBUFFER, drawBitmapFrameBuffer);
|
|
27
|
+
$gl.bindFramebuffer($gl.FRAMEBUFFER, $drawBitmapFramebuffer);
|
|
29
28
|
// 描画先のテクスチャを更新
|
|
30
29
|
if (!$mainTextureObject
|
|
31
30
|
|| $mainTextureObject.width !== mainAttachmentObject.width
|
|
@@ -36,12 +35,12 @@ export const execute = (x, y, width, height) => {
|
|
|
36
35
|
$gl.framebufferTexture2D($gl.FRAMEBUFFER, $gl.COLOR_ATTACHMENT0, $gl.TEXTURE_2D, $mainTextureObject.resource, 0);
|
|
37
36
|
$gl.bindFramebuffer($gl.FRAMEBUFFER, null);
|
|
38
37
|
$gl.bindFramebuffer($gl.READ_FRAMEBUFFER, $readFrameBuffer);
|
|
39
|
-
$gl.bindFramebuffer($gl.DRAW_FRAMEBUFFER,
|
|
40
|
-
$
|
|
38
|
+
$gl.bindFramebuffer($gl.DRAW_FRAMEBUFFER, $drawBitmapFramebuffer);
|
|
39
|
+
$enableScissorTest();
|
|
41
40
|
$gl.scissor(x, mainAttachmentObject.height - y - height, width + 1, height + 1);
|
|
42
41
|
// execute
|
|
43
42
|
$gl.blitFramebuffer(0, 0, mainAttachmentObject.width, mainAttachmentObject.height, 0, 0, mainAttachmentObject.width, mainAttachmentObject.height, $gl.COLOR_BUFFER_BIT, $gl.NEAREST);
|
|
44
|
-
$
|
|
43
|
+
$disableScissorTest();
|
|
45
44
|
$gl.bindFramebuffer($gl.FRAMEBUFFER, $readFrameBuffer);
|
|
46
45
|
if (currentAttachmentObject) {
|
|
47
46
|
$context.bind(currentAttachmentObject);
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { $gl } from "../../WebGLUtil";
|
|
2
|
-
import { $getId } from "../../VertexArrayObject";
|
|
1
|
+
import { $gl, $getUUID } from "../../WebGLUtil";
|
|
3
2
|
/**
|
|
4
3
|
* @description 新規のVertexArrayObjectを生成する
|
|
5
4
|
* Create a new VertexArrayObject
|
|
@@ -10,7 +9,7 @@ import { $getId } from "../../VertexArrayObject";
|
|
|
10
9
|
*/
|
|
11
10
|
export const execute = () => {
|
|
12
11
|
return {
|
|
13
|
-
"id": $
|
|
12
|
+
"id": $getUUID(),
|
|
14
13
|
"resource": $gl.createVertexArray(),
|
|
15
14
|
"vertexBuffer": $gl.createBuffer(),
|
|
16
15
|
"vertexLength": 0
|
|
@@ -20,8 +20,10 @@ export const execute = () => {
|
|
|
20
20
|
$gl.bindBuffer($gl.ARRAY_BUFFER, $attributeWebGLBuffer);
|
|
21
21
|
if (renderQueue.buffer.length > $attributeBufferLength) {
|
|
22
22
|
$attributeBufferLength = renderQueue.buffer.length;
|
|
23
|
+
// STREAM_DRAW: 毎フレーム更新されるデータに最適
|
|
24
|
+
// STREAM_DRAW: Optimal for data updated every frame
|
|
23
25
|
$gl.bufferData($gl.ARRAY_BUFFER, $attributeBufferLength * 4, // renderQueue.buffer.byteLength
|
|
24
|
-
$gl.
|
|
26
|
+
$gl.STREAM_DRAW);
|
|
25
27
|
}
|
|
26
|
-
$gl.bufferSubData($gl.ARRAY_BUFFER, 0, renderQueue.buffer
|
|
28
|
+
$gl.bufferSubData($gl.ARRAY_BUFFER, 0, renderQueue.buffer, 0, renderQueue.offset);
|
|
27
29
|
};
|
|
@@ -18,7 +18,9 @@ export const execute = () => {
|
|
|
18
18
|
$gl.bindBuffer($gl.ARRAY_BUFFER, vertexArrayObject.vertexBuffer);
|
|
19
19
|
if (vertexArrayObject.vertexLength < buffer.length) {
|
|
20
20
|
vertexArrayObject.vertexLength = $upperPowerOfTwo(buffer.length);
|
|
21
|
-
|
|
21
|
+
// STREAM_DRAW: 毎フレーム更新されるデータに最適
|
|
22
|
+
// STREAM_DRAW: Optimal for data updated every frame
|
|
23
|
+
$gl.bufferData($gl.ARRAY_BUFFER, vertexArrayObject.vertexLength * 4, $gl.STREAM_DRAW);
|
|
22
24
|
}
|
|
23
25
|
$gl.bufferSubData($gl.ARRAY_BUFFER, 0, buffer.subarray(0, offset));
|
|
24
26
|
return vertexArrayObject;
|
package/src/VertexArrayObject/usecase/VertexArrayObjectCreateInstancedVertexArrayObjectUseCase.js
CHANGED
|
@@ -16,13 +16,15 @@ export const execute = () => {
|
|
|
16
16
|
vertexArrayObjectBindService(vertexArrayObject);
|
|
17
17
|
$gl.bindBuffer($gl.ARRAY_BUFFER, vertexArrayObject.vertexBuffer);
|
|
18
18
|
$gl.bufferData($gl.ARRAY_BUFFER, new Float32Array([
|
|
19
|
-
0, 0, 1, 0,
|
|
20
|
-
|
|
19
|
+
0, 0, 1, 0, 1, 1,
|
|
20
|
+
0, 0, 1, 1, 0, 1
|
|
21
21
|
]), $gl.STATIC_DRAW);
|
|
22
22
|
$gl.enableVertexAttribArray(0);
|
|
23
23
|
$gl.vertexAttribPointer(0, 2, $gl.FLOAT, false, 0, 0);
|
|
24
24
|
$gl.bindBuffer($gl.ARRAY_BUFFER, $attributeWebGLBuffer);
|
|
25
|
-
|
|
25
|
+
// STREAM_DRAW: 毎フレーム更新されるインスタンスデータに最適
|
|
26
|
+
// STREAM_DRAW: Optimal for instance data updated every frame
|
|
27
|
+
$gl.bufferData($gl.ARRAY_BUFFER, renderQueue.buffer.length, $gl.STREAM_DRAW);
|
|
26
28
|
// texture rectangle
|
|
27
29
|
$gl.enableVertexAttribArray(1);
|
|
28
30
|
$gl.vertexAttribPointer(1, 4, $gl.FLOAT, false, 88, 0);
|
package/src/VertexArrayObject/usecase/VertexArrayObjectCreateRectVertexArrayObjectUseCase.js
CHANGED
|
@@ -14,8 +14,8 @@ export const execute = () => {
|
|
|
14
14
|
vertexArrayObjectBindService(vertexArrayObject);
|
|
15
15
|
$gl.bindBuffer($gl.ARRAY_BUFFER, vertexArrayObject.vertexBuffer);
|
|
16
16
|
const vertexBufferData = new Float32Array([
|
|
17
|
-
0, 0, 1, 0,
|
|
18
|
-
|
|
17
|
+
0, 0, 1, 0, 1, 1,
|
|
18
|
+
0, 0, 1, 1, 0, 1
|
|
19
19
|
]);
|
|
20
20
|
$gl.bufferData($gl.ARRAY_BUFFER, vertexBufferData, $gl.STATIC_DRAW);
|
|
21
21
|
$gl.enableVertexAttribArray(0);
|
|
@@ -1,14 +1,5 @@
|
|
|
1
1
|
import type { IVertexArrayObject } from "./interface/IVertexArrayObject";
|
|
2
2
|
import type { IStrokeVertexArrayObject } from "./interface/IStrokeVertexArrayObject";
|
|
3
|
-
/**
|
|
4
|
-
* @description VertexArrayObject管理用のユニークIDを返却
|
|
5
|
-
* Returns a unique ID for managing VertexArrayObject
|
|
6
|
-
*
|
|
7
|
-
* @return {number}
|
|
8
|
-
* @method
|
|
9
|
-
* @protected
|
|
10
|
-
*/
|
|
11
|
-
export declare const $getId: () => number;
|
|
12
3
|
/**
|
|
13
4
|
* @description VertexArrayObjectの再利用のための配列のオブジェクトプール
|
|
14
5
|
* Object pool of array for reusing VertexArrayObject
|
package/src/VertexArrayObject.js
CHANGED
|
@@ -1,20 +1,4 @@
|
|
|
1
1
|
import { execute as vertexArrayObjectCreateRectVertexArrayObjectUseCase } from "./VertexArrayObject/usecase/VertexArrayObjectCreateRectVertexArrayObjectUseCase";
|
|
2
|
-
/**
|
|
3
|
-
* @type {number}
|
|
4
|
-
* @private
|
|
5
|
-
*/
|
|
6
|
-
let $id = 0;
|
|
7
|
-
/**
|
|
8
|
-
* @description VertexArrayObject管理用のユニークIDを返却
|
|
9
|
-
* Returns a unique ID for managing VertexArrayObject
|
|
10
|
-
*
|
|
11
|
-
* @return {number}
|
|
12
|
-
* @method
|
|
13
|
-
* @protected
|
|
14
|
-
*/
|
|
15
|
-
export const $getId = () => {
|
|
16
|
-
return $id++;
|
|
17
|
-
};
|
|
18
2
|
/**
|
|
19
3
|
* @description VertexArrayObjectの再利用のための配列のオブジェクトプール
|
|
20
4
|
* Object pool of array for reusing VertexArrayObject
|