@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,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, $
|
|
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] = $
|
|
40
|
-
highp[7] = $
|
|
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 { $
|
|
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] = $
|
|
36
|
-
highp[7] = $
|
|
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 { $
|
|
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] = $
|
|
41
|
-
highp[7] = $
|
|
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 { $
|
|
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] = $
|
|
35
|
-
highp[7] = $
|
|
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, $
|
|
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] = $
|
|
28
|
-
highp[9] = $
|
|
27
|
+
highp[8] = $viewportWidth;
|
|
28
|
+
highp[9] = $viewportHeight;
|
|
29
29
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $context, $
|
|
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] = $
|
|
28
|
-
highp[9] = $
|
|
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, $
|
|
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] = $
|
|
24
|
-
highp[5] = $
|
|
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
|
-
|
|
27
|
-
|
|
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
|
|
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 { $
|
|
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
|
-
|
|
20
|
-
|
|
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
|
-
|
|
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;
|