@next2d/webgpu 3.0.5 → 3.1.0
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/package.json +3 -3
- package/src/AtlasManager.d.ts +75 -6
- package/src/AtlasManager.js +106 -30
- package/src/AttachmentManager/service/AttachmentManagerCreateAttachmentObjectService.d.ts +2 -2
- package/src/AttachmentManager/service/AttachmentManagerCreateAttachmentObjectService.js +3 -3
- package/src/AttachmentManager/service/AttachmentManagerCreateColorBufferService.d.ts +4 -4
- package/src/AttachmentManager/service/AttachmentManagerCreateColorBufferService.js +4 -4
- package/src/AttachmentManager/service/AttachmentManagerCreateStencilBufferService.d.ts +5 -5
- package/src/AttachmentManager/service/AttachmentManagerCreateStencilBufferService.js +6 -6
- package/src/AttachmentManager/service/AttachmentManagerCreateTextureObjectService.d.ts +6 -6
- package/src/AttachmentManager/service/AttachmentManagerCreateTextureObjectService.js +7 -7
- package/src/AttachmentManager/service/AttachmentManagerGetColorBufferService.d.ts +6 -6
- package/src/AttachmentManager/service/AttachmentManagerGetColorBufferService.js +9 -9
- package/src/AttachmentManager/service/AttachmentManagerGetStencilBufferService.d.ts +6 -6
- package/src/AttachmentManager/service/AttachmentManagerGetStencilBufferService.js +10 -10
- package/src/AttachmentManager/service/AttachmentManagerGetTextureService.d.ts +7 -7
- package/src/AttachmentManager/service/AttachmentManagerGetTextureService.js +10 -10
- package/src/AttachmentManager/service/AttachmentManagerReleaseTextureService.d.ts +3 -3
- package/src/AttachmentManager/service/AttachmentManagerReleaseTextureService.js +7 -7
- package/src/AttachmentManager/usecase/AttachmentManagerGetAttachmentObjectUseCase.d.ts +10 -10
- package/src/AttachmentManager/usecase/AttachmentManagerGetAttachmentObjectUseCase.js +16 -16
- package/src/AttachmentManager/usecase/AttachmentManagerReleaseAttachmentUseCase.d.ts +6 -6
- package/src/AttachmentManager/usecase/AttachmentManagerReleaseAttachmentUseCase.js +10 -10
- package/src/AttachmentManager.d.ts +28 -6
- package/src/AttachmentManager.js +28 -23
- package/src/BezierConverter/BezierConverter.d.ts +9 -3
- package/src/BezierConverter/BezierConverter.js +5 -3
- package/src/BezierConverter/usecase/BezierConverterAdaptiveCubicToQuadUseCase.d.ts +2 -13
- package/src/BezierConverter/usecase/BezierConverterAdaptiveCubicToQuadUseCase.js +13 -25
- package/src/Blend/BlendInstancedManager.d.ts +19 -15
- package/src/Blend/BlendInstancedManager.js +35 -22
- package/src/Blend/usecase/BlendApplyComplexBlendUseCase.d.ts +9 -2
- package/src/Blend/usecase/BlendApplyComplexBlendUseCase.js +28 -17
- package/src/Blend.d.ts +20 -2
- package/src/Blend.js +20 -4
- package/src/BufferManager/service/BufferManagerReleaseUniformBufferService.js +2 -2
- package/src/BufferManager/service/BufferManagerReleaseVertexBufferService.js +2 -2
- package/src/BufferManager/service/BufferManagerUpdateIndirectBufferService.d.ts +1 -0
- package/src/BufferManager/service/BufferManagerUpdateIndirectBufferService.js +1 -0
- package/src/BufferManager/usecase/BufferManagerCleanupStorageBuffersUseCase.d.ts +1 -0
- package/src/BufferManager/usecase/BufferManagerCleanupStorageBuffersUseCase.js +1 -0
- package/src/BufferManager.d.ts +108 -43
- package/src/BufferManager.js +113 -153
- package/src/Context/service/ContextComputeBitmapMatrixService.d.ts +7 -0
- package/src/Context/service/ContextComputeBitmapMatrixService.js +7 -0
- package/src/Context/service/ContextComputeGradientMatrixService.d.ts +9 -1
- package/src/Context/service/ContextComputeGradientMatrixService.js +15 -7
- package/src/Context/service/ContextFillSimpleService.d.ts +14 -0
- package/src/Context/service/ContextFillSimpleService.js +14 -0
- package/src/Context/service/ContextFillWithStencilMainService.d.ts +11 -0
- package/src/Context/service/ContextFillWithStencilMainService.js +11 -0
- package/src/Context/service/ContextFillWithStencilService.d.ts +11 -0
- package/src/Context/service/ContextFillWithStencilService.js +11 -0
- package/src/Context/usecase/ContextApplyFilterUseCase.d.ts +17 -0
- package/src/Context/usecase/ContextApplyFilterUseCase.js +201 -62
- package/src/Context/usecase/ContextBitmapFillUseCase.d.ts +23 -0
- package/src/Context/usecase/ContextBitmapFillUseCase.js +47 -0
- package/src/Context/usecase/ContextBitmapStrokeUseCase.d.ts +23 -0
- package/src/Context/usecase/ContextBitmapStrokeUseCase.js +35 -0
- package/src/Context/usecase/ContextClipUseCase.d.ts +15 -0
- package/src/Context/usecase/ContextClipUseCase.js +19 -0
- package/src/Context/usecase/ContextContainerEndLayerUseCase.d.ts +21 -1
- package/src/Context/usecase/ContextContainerEndLayerUseCase.js +195 -104
- package/src/Context/usecase/ContextDrawArraysInstancedUseCase.d.ts +13 -0
- package/src/Context/usecase/ContextDrawArraysInstancedUseCase.js +41 -20
- package/src/Context/usecase/ContextDrawIndirectUseCase.d.ts +16 -1
- package/src/Context/usecase/ContextDrawIndirectUseCase.js +53 -30
- package/src/Context/usecase/ContextGradientFillUseCase.d.ts +23 -0
- package/src/Context/usecase/ContextGradientFillUseCase.js +47 -0
- package/src/Context/usecase/ContextGradientStrokeUseCase.d.ts +23 -0
- package/src/Context/usecase/ContextGradientStrokeUseCase.js +35 -0
- package/src/Context/usecase/ContextProcessComplexBlendQueueUseCase.d.ts +13 -1
- package/src/Context/usecase/ContextProcessComplexBlendQueueUseCase.js +126 -60
- package/src/Context.d.ts +445 -63
- package/src/Context.js +566 -144
- package/src/FillTexturePool.d.ts +39 -0
- package/src/FillTexturePool.js +70 -7
- package/src/Filter/BevelFilter/FilterApplyBevelFilterUseCase.d.ts +21 -2
- package/src/Filter/BevelFilter/FilterApplyBevelFilterUseCase.js +33 -26
- package/src/Filter/BlurFilter/FilterApplyBlurFilterUseCase.d.ts +5 -5
- package/src/Filter/BlurFilter/FilterApplyBlurFilterUseCase.js +81 -64
- package/src/Filter/BlurFilterUseCase.d.ts +15 -11
- package/src/Filter/BlurFilterUseCase.js +22 -17
- package/src/Filter/ColorMatrixFilter/FilterApplyColorMatrixFilterUseCase.d.ts +2 -2
- package/src/Filter/ColorMatrixFilter/FilterApplyColorMatrixFilterUseCase.js +5 -5
- package/src/Filter/ConvolutionFilter/FilterApplyConvolutionFilterUseCase.d.ts +15 -1
- package/src/Filter/ConvolutionFilter/FilterApplyConvolutionFilterUseCase.js +23 -17
- package/src/Filter/DisplacementMapFilter/FilterApplyDisplacementMapFilterUseCase.d.ts +20 -1
- package/src/Filter/DisplacementMapFilter/FilterApplyDisplacementMapFilterUseCase.js +37 -26
- package/src/Filter/DropShadowFilter/FilterApplyDropShadowFilterUseCase.d.ts +7 -7
- package/src/Filter/DropShadowFilter/FilterApplyDropShadowFilterUseCase.js +19 -31
- package/src/Filter/FilterGradientLUTCache.js +2 -0
- package/src/Filter/FilterUtil.d.ts +23 -0
- package/src/Filter/FilterUtil.js +33 -0
- package/src/Filter/GlowFilter/FilterApplyGlowFilterUseCase.d.ts +5 -5
- package/src/Filter/GlowFilter/FilterApplyGlowFilterUseCase.js +12 -21
- package/src/Filter/GradientBevelFilter/FilterApplyGradientBevelFilterUseCase.d.ts +6 -6
- package/src/Filter/GradientBevelFilter/FilterApplyGradientBevelFilterUseCase.js +16 -19
- package/src/Filter/GradientGlowFilter/FilterApplyGradientGlowFilterUseCase.d.ts +5 -5
- package/src/Filter/GradientGlowFilter/FilterApplyGradientGlowFilterUseCase.js +13 -16
- package/src/FrameBufferManager/service/FrameBufferManagerCreateRenderPassDescriptorService.d.ts +13 -1
- package/src/FrameBufferManager/service/FrameBufferManagerCreateRenderPassDescriptorService.js +30 -3
- package/src/FrameBufferManager/service/FrameBufferManagerCreateStencilRenderPassDescriptorService.d.ts +11 -1
- package/src/FrameBufferManager/service/FrameBufferManagerCreateStencilRenderPassDescriptorService.js +36 -6
- package/src/FrameBufferManager/usecase/FrameBufferManagerCreateAttachmentUseCase.d.ts +10 -10
- package/src/FrameBufferManager/usecase/FrameBufferManagerCreateAttachmentUseCase.js +15 -15
- package/src/FrameBufferManager/usecase/FrameBufferManagerReleaseTemporaryAttachmentUseCase.d.ts +4 -4
- package/src/FrameBufferManager/usecase/FrameBufferManagerReleaseTemporaryAttachmentUseCase.js +5 -5
- package/src/FrameBufferManager.d.ts +95 -3
- package/src/FrameBufferManager.js +97 -8
- package/src/Gradient/GradientLUTCache.d.ts +36 -4
- package/src/Gradient/GradientLUTCache.js +61 -5
- package/src/Gradient/GradientLUTGenerator.d.ts +26 -14
- package/src/Gradient/GradientLUTGenerator.js +74 -43
- package/src/Mask/service/MaskUnionMaskService.d.ts +16 -1
- package/src/Mask/service/MaskUnionMaskService.js +45 -31
- package/src/Mask.d.ts +57 -3
- package/src/Mask.js +75 -11
- package/src/Mesh/service/MeshFillGenerateService.d.ts +4 -4
- package/src/Mesh/service/MeshFillGenerateService.js +4 -4
- package/src/Mesh/service/MeshStrokeFillGenerateService.d.ts +4 -4
- package/src/Mesh/service/MeshStrokeFillGenerateService.js +4 -4
- package/src/Mesh/usecase/MeshBitmapStrokeGenerateUseCase.d.ts +3 -3
- package/src/Mesh/usecase/MeshBitmapStrokeGenerateUseCase.js +10 -3
- package/src/Mesh/usecase/MeshFillGenerateUseCase.d.ts +2 -2
- package/src/Mesh/usecase/MeshFillGenerateUseCase.js +9 -2
- package/src/Mesh/usecase/MeshGradientStrokeGenerateUseCase.d.ts +3 -3
- package/src/Mesh/usecase/MeshGradientStrokeGenerateUseCase.js +10 -3
- package/src/Mesh/usecase/MeshStrokeGenerateUseCase.d.ts +8 -14
- package/src/Mesh/usecase/MeshStrokeGenerateUseCase.js +214 -129
- package/src/PathCommand.d.ts +24 -23
- package/src/PathCommand.js +25 -79
- package/src/Shader/PipelineManager.d.ts +223 -6
- package/src/Shader/PipelineManager.js +308 -66
- package/src/Shader/ShaderInstancedManager.d.ts +17 -0
- package/src/Shader/ShaderInstancedManager.js +17 -0
- package/src/Shader/ShaderSource.d.ts +317 -12
- package/src/Shader/ShaderSource.js +328 -39
- package/src/Shader/wgsl/common/SharedWgsl.d.ts +28 -1
- package/src/Shader/wgsl/common/SharedWgsl.js +28 -9
- package/src/Shader/wgsl/fragment/BasicFragment.d.ts +14 -0
- package/src/Shader/wgsl/fragment/BasicFragment.js +14 -0
- package/src/Shader/wgsl/fragment/BitmapFragment.d.ts +7 -0
- package/src/Shader/wgsl/fragment/BitmapFragment.js +7 -0
- package/src/Shader/wgsl/fragment/EffectFragment.d.ts +42 -0
- package/src/Shader/wgsl/fragment/EffectFragment.js +42 -0
- package/src/Shader/wgsl/fragment/FillFragment.d.ts +7 -0
- package/src/Shader/wgsl/fragment/FillFragment.js +7 -0
- package/src/Shader/wgsl/fragment/FilterFragment.d.ts +70 -0
- package/src/Shader/wgsl/fragment/FilterFragment.js +70 -0
- package/src/Shader/wgsl/fragment/GradientFragment.d.ts +21 -0
- package/src/Shader/wgsl/fragment/GradientFragment.js +43 -8
- package/src/Shader/wgsl/fragment/InstancedFragment.d.ts +7 -0
- package/src/Shader/wgsl/fragment/InstancedFragment.js +7 -0
- package/src/Shader/wgsl/fragment/MaskFragment.d.ts +7 -0
- package/src/Shader/wgsl/fragment/MaskFragment.js +7 -0
- package/src/Shader/wgsl/fragment/StencilFragment.d.ts +14 -0
- package/src/Shader/wgsl/fragment/StencilFragment.js +14 -0
- package/src/Shader/wgsl/vertex/BasicVertex.d.ts +7 -0
- package/src/Shader/wgsl/vertex/BasicVertex.js +7 -0
- package/src/Shader/wgsl/vertex/BitmapVertex.d.ts +7 -0
- package/src/Shader/wgsl/vertex/BitmapVertex.js +7 -0
- package/src/Shader/wgsl/vertex/FillVertex.d.ts +7 -0
- package/src/Shader/wgsl/vertex/FillVertex.js +7 -0
- package/src/Shader/wgsl/vertex/FilterVertex.d.ts +77 -1
- package/src/Shader/wgsl/vertex/FilterVertex.js +135 -42
- package/src/Shader/wgsl/vertex/GradientVertex.d.ts +7 -0
- package/src/Shader/wgsl/vertex/GradientVertex.js +7 -0
- package/src/Shader/wgsl/vertex/InstancedVertex.d.ts +7 -0
- package/src/Shader/wgsl/vertex/InstancedVertex.js +7 -0
- package/src/Shader/wgsl/vertex/MaskVertex.d.ts +7 -0
- package/src/Shader/wgsl/vertex/MaskVertex.js +7 -0
- package/src/Shader/wgsl/vertex/StencilVertex.d.ts +14 -0
- package/src/Shader/wgsl/vertex/StencilVertex.js +14 -0
- package/src/TextureManager/service/TextureManagerInitializeSamplersService.d.ts +2 -2
- package/src/TextureManager/service/TextureManagerInitializeSamplersService.js +2 -2
- package/src/TextureManager.d.ts +36 -5
- package/src/TextureManager.js +36 -24
- package/src/TexturePool/service/TexturePoolCleanupService.d.ts +4 -4
- package/src/TexturePool/service/TexturePoolCleanupService.js +6 -6
- package/src/TexturePool/service/TexturePoolReleaseService.d.ts +4 -4
- package/src/TexturePool/service/TexturePoolReleaseService.js +5 -5
- package/src/TexturePool/usecase/TexturePoolAcquireUseCase.d.ts +10 -10
- package/src/TexturePool/usecase/TexturePoolAcquireUseCase.js +19 -18
- package/src/TexturePool.d.ts +36 -35
- package/src/TexturePool.js +44 -65
- package/src/WebGPUUtil.d.ts +79 -34
- package/src/WebGPUUtil.js +79 -36
- package/src/interface/IAttachmentObject.d.ts +36 -0
- package/src/interface/IBlendMode.d.ts +7 -0
- package/src/interface/IBlendState.d.ts +8 -0
- package/src/interface/IBounds.d.ts +23 -0
- package/src/interface/IColorBufferObject.d.ts +28 -0
- package/src/interface/IComplexBlendItem.d.ts +48 -0
- package/src/interface/IFilterConfig.d.ts +28 -2
- package/src/interface/IGradientStop.d.ts +20 -0
- package/src/interface/ILocalFilterConfig.d.ts +32 -2
- package/src/interface/IMeshResult.d.ts +8 -0
- package/src/interface/IPoint.d.ts +12 -0
- package/src/interface/IPooledTexture.d.ts +24 -0
- package/src/interface/IQuadraticSegment.d.ts +8 -0
- package/src/interface/IStencilBufferObject.d.ts +28 -0
- package/src/interface/IStorageBufferConfig.d.ts +8 -1
- package/src/interface/ITextureObject.d.ts +28 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateRenderPassDescriptorService.d.ts +0 -5
- package/src/AttachmentManager/service/AttachmentManagerCreateRenderPassDescriptorService.js +0 -42
- package/src/Blend/service/BlendAddService.d.ts +0 -1
- package/src/Blend/service/BlendAddService.js +0 -8
- package/src/Blend/service/BlendAlphaService.d.ts +0 -1
- package/src/Blend/service/BlendAlphaService.js +0 -8
- package/src/Blend/service/BlendEraseService.d.ts +0 -1
- package/src/Blend/service/BlendEraseService.js +0 -8
- package/src/Blend/service/BlendGetStateService.d.ts +0 -12
- package/src/Blend/service/BlendGetStateService.js +0 -13
- package/src/Blend/service/BlendOneZeroService.d.ts +0 -1
- package/src/Blend/service/BlendOneZeroService.js +0 -8
- package/src/Blend/service/BlendResetService.d.ts +0 -1
- package/src/Blend/service/BlendResetService.js +0 -8
- package/src/Blend/service/BlendScreenService.d.ts +0 -1
- package/src/Blend/service/BlendScreenService.js +0 -8
- package/src/Blend/service/BlendSetModeService.d.ts +0 -2
- package/src/Blend/service/BlendSetModeService.js +0 -4
- package/src/Blend/usecase/BlendOperationUseCase.d.ts +0 -11
- package/src/Blend/usecase/BlendOperationUseCase.js +0 -31
- package/src/BufferManager/usecase/BufferManagerReleaseStorageBufferUseCase.d.ts +0 -9
- package/src/BufferManager/usecase/BufferManagerReleaseStorageBufferUseCase.js +0 -15
- package/src/Compute/ComputePipelineManager.d.ts +0 -61
- package/src/Compute/ComputePipelineManager.js +0 -313
- package/src/Compute/service/ComputeExecuteBlurService.d.ts +0 -21
- package/src/Compute/service/ComputeExecuteBlurService.js +0 -81
- package/src/Filter/BevelFilterShader.d.ts +0 -2
- package/src/Filter/BevelFilterShader.js +0 -107
- package/src/Filter/BitmapFilterShader.d.ts +0 -2
- package/src/Filter/BitmapFilterShader.js +0 -207
- package/src/Filter/BlurFilter/service/BlurFilterComputeShaderService.d.ts +0 -40
- package/src/Filter/BlurFilter/service/BlurFilterComputeShaderService.js +0 -51
- package/src/Filter/BlurFilter/usecase/FilterApplyBlurComputeUseCase.d.ts +0 -25
- package/src/Filter/BlurFilter/usecase/FilterApplyBlurComputeUseCase.js +0 -180
- package/src/Filter/BlurFilterShader.d.ts +0 -5
- package/src/Filter/BlurFilterShader.js +0 -109
- package/src/Filter/ColorMatrixFilterShader.d.ts +0 -4
- package/src/Filter/ColorMatrixFilterShader.js +0 -51
- package/src/Filter/ConvolutionFilterShader.d.ts +0 -2
- package/src/Filter/ConvolutionFilterShader.js +0 -115
- package/src/Filter/DisplacementMapFilterShader.d.ts +0 -2
- package/src/Filter/DisplacementMapFilterShader.js +0 -114
- package/src/Filter/DropShadowFilterShader.d.ts +0 -4
- package/src/Filter/DropShadowFilterShader.js +0 -93
- package/src/Filter/GlowFilterShader.d.ts +0 -4
- package/src/Filter/GlowFilterShader.js +0 -66
- package/src/FrameBufferManager/service/FrameBufferManagerFlushPendingReleasesService.d.ts +0 -11
- package/src/FrameBufferManager/service/FrameBufferManagerFlushPendingReleasesService.js +0 -19
- package/src/Mask/usecase/MaskBindUseCase.d.ts +0 -10
- package/src/Mask/usecase/MaskBindUseCase.js +0 -20
- package/src/Mesh/service/MeshLerpService.d.ts +0 -13
- package/src/Mesh/service/MeshLerpService.js +0 -17
- package/src/Mesh/usecase/MeshSplitQuadraticBezierUseCase.d.ts +0 -14
- package/src/Mesh/usecase/MeshSplitQuadraticBezierUseCase.js +0 -28
- package/src/Mesh/usecase/MeshStrokeFillGenerateUseCase.d.ts +0 -18
- package/src/Mesh/usecase/MeshStrokeFillGenerateUseCase.js +0 -54
- package/src/SamplerCache/service/SamplerCacheCreateCommonSamplersService.d.ts +0 -11
- package/src/SamplerCache/service/SamplerCacheCreateCommonSamplersService.js +0 -35
- package/src/SamplerCache/service/SamplerCacheGenerateKeyService.d.ts +0 -13
- package/src/SamplerCache/service/SamplerCacheGenerateKeyService.js +0 -15
- package/src/SamplerCache/service/SamplerCacheGetOrCreateService.d.ts +0 -15
- package/src/SamplerCache/service/SamplerCacheGetOrCreateService.js +0 -30
- package/src/SamplerCache.d.ts +0 -18
- package/src/SamplerCache.js +0 -61
- package/src/Shader/BlendModeShader.d.ts +0 -51
- package/src/Shader/BlendModeShader.js +0 -71
- package/src/Shader/GradientLUTGenerator/service/GradientLUTCalculateResolutionService.d.ts +0 -12
- package/src/Shader/GradientLUTGenerator/service/GradientLUTCalculateResolutionService.js +0 -28
- package/src/Shader/GradientLUTGenerator/service/GradientLUTGeneratePixelsService.d.ts +0 -13
- package/src/Shader/GradientLUTGenerator/service/GradientLUTGeneratePixelsService.js +0 -61
- package/src/Shader/GradientLUTGenerator/service/GradientLUTInterpolateColorService.d.ts +0 -19
- package/src/Shader/GradientLUTGenerator/service/GradientLUTInterpolateColorService.js +0 -37
- package/src/Shader/GradientLUTGenerator/service/GradientLUTParseStopsService.d.ts +0 -11
- package/src/Shader/GradientLUTGenerator/service/GradientLUTParseStopsService.js +0 -24
- package/src/Shader/GradientLUTGenerator/usecase/GradientLUTGenerateDataUseCase.d.ts +0 -14
- package/src/Shader/GradientLUTGenerator/usecase/GradientLUTGenerateDataUseCase.js +0 -24
- package/src/Shader/wgsl/fragment/BlendFragment.d.ts +0 -8
- package/src/Shader/wgsl/fragment/BlendFragment.js +0 -63
- package/src/TextureManager/usecase/TextureManagerCreateTextureFromImageBitmapUseCase.d.ts +0 -13
- package/src/TextureManager/usecase/TextureManagerCreateTextureFromImageBitmapUseCase.js +0 -30
- package/src/TextureManager/usecase/TextureManagerCreateTextureFromPixelsUseCase.d.ts +0 -15
- package/src/TextureManager/usecase/TextureManagerCreateTextureFromPixelsUseCase.js +0 -26
- package/src/TexturePool/service/TexturePoolEvictOldestService.d.ts +0 -11
- package/src/TexturePool/service/TexturePoolEvictOldestService.js +0 -24
- package/src/interface/ICachedBindGroup.d.ts +0 -8
- package/src/interface/ICachedBindGroup.js +0 -1
- package/src/interface/IGradientLUTData.d.ts +0 -8
- package/src/interface/IGradientLUTData.js +0 -1
- package/src/interface/IPooledBuffer.d.ts +0 -8
- package/src/interface/IPooledBuffer.js +0 -1
- package/src/interface/IRectangleInfo.d.ts +0 -13
- package/src/interface/IRectangleInfo.js +0 -1
|
@@ -3,28 +3,36 @@
|
|
|
3
3
|
* Gradient LUT texture generator
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
|
-
* @description
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* @description ストップ数に応じた適応解像度を取得する
|
|
7
|
+
* Get adaptive resolution based on the number of gradient stops
|
|
8
|
+
*
|
|
9
|
+
* @param {number} stops_length - ストップ数 / Number of gradient stops
|
|
10
|
+
* @return {number} 解像度 (256, 512, or 1024) / Resolution
|
|
11
|
+
* @method
|
|
12
|
+
* @protected
|
|
9
13
|
*/
|
|
10
|
-
export const getAdaptiveResolution = (
|
|
11
|
-
if (
|
|
14
|
+
export const getAdaptiveResolution = (stops_length) => {
|
|
15
|
+
if (stops_length <= 4) {
|
|
12
16
|
return 256;
|
|
13
17
|
}
|
|
14
|
-
if (
|
|
18
|
+
if (stops_length <= 8) {
|
|
15
19
|
return 512;
|
|
16
20
|
}
|
|
17
21
|
return 1024;
|
|
18
22
|
};
|
|
19
23
|
/**
|
|
20
|
-
* @description グラデーションLUT
|
|
24
|
+
* @description グラデーションLUTテクスチャデータを生成する
|
|
25
|
+
* Generate gradient LUT texture data.
|
|
21
26
|
* stops配列: [offset, R, G, B, A, offset, R, G, B, A, ...]
|
|
22
27
|
* 注意: R, G, B, A は 0-255 範囲
|
|
23
28
|
* LUTは0-1の範囲の色を生成し、spread処理はシェーダー側で行う
|
|
24
|
-
*
|
|
25
|
-
* @param
|
|
26
|
-
* @param
|
|
27
|
-
* @
|
|
29
|
+
*
|
|
30
|
+
* @param {number[]} stops - グラデーションストップ配列 / Gradient stop array
|
|
31
|
+
* @param {number} _spread - スプレッドメソッド(未使用、シェーダー側で処理)/ Spread method (unused, handled by shader)
|
|
32
|
+
* @param {number} interpolation - 補間方法 (0: linearRGB, 1: RGB) / Interpolation method (WebGL compatible)
|
|
33
|
+
* @return {Uint8Array} LUTテクスチャデータ / LUT texture data
|
|
34
|
+
* @method
|
|
35
|
+
* @protected
|
|
28
36
|
*/
|
|
29
37
|
export const generateGradientLUT = (stops, _spread, interpolation) => {
|
|
30
38
|
// ストップ数を計算(5要素ずつ: offset, R, G, B, A)
|
|
@@ -37,7 +45,7 @@ export const generateGradientLUT = (stops, _spread, interpolation) => {
|
|
|
37
45
|
for (let i = 0; i < resolution; i++) {
|
|
38
46
|
const t = i / (resolution - 1);
|
|
39
47
|
// 色を補間(色は0-255範囲で返される)
|
|
40
|
-
const color = interpolateColor(stops, t, interpolation);
|
|
48
|
+
const color = $interpolateColor(stops, t, interpolation);
|
|
41
49
|
// WebGL版と同じ: プリマルチプライドアルファは適用しない
|
|
42
50
|
// LUTにはストレート(非プリマルチプライド)の色を格納
|
|
43
51
|
// プリマルチプライドはシェーダー側でサンプリング後に行う
|
|
@@ -52,14 +60,18 @@ export const generateGradientLUT = (stops, _spread, interpolation) => {
|
|
|
52
60
|
return lutData;
|
|
53
61
|
};
|
|
54
62
|
/**
|
|
55
|
-
* @description
|
|
63
|
+
* @description 色を補間する
|
|
64
|
+
* Interpolate color between gradient stops.
|
|
56
65
|
* 色は0-255範囲で入力され、0-255範囲で出力される
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
* @param
|
|
60
|
-
* @
|
|
66
|
+
* Colors are input in 0-255 range and output in 0-255 range.
|
|
67
|
+
*
|
|
68
|
+
* @param {number[]} stops - グラデーションストップ配列 / Gradient stop array
|
|
69
|
+
* @param {number} t - 補間位置 (0-1) / Interpolation position (0-1)
|
|
70
|
+
* @param {number} interpolation - 補間方法 (0: linearRGB, 1: RGB) / Interpolation method (WebGL compatible)
|
|
71
|
+
* @return {{ r: number, g: number, b: number, a: number }} 補間された色 / Interpolated color
|
|
72
|
+
* @private
|
|
61
73
|
*/
|
|
62
|
-
const interpolateColor = (stops, t, interpolation) => {
|
|
74
|
+
const $interpolateColor = (stops, t, interpolation) => {
|
|
63
75
|
const stopsLength = stops.length / 5;
|
|
64
76
|
// 最初と最後のストップを見つける
|
|
65
77
|
let startIdx = 0;
|
|
@@ -107,49 +119,68 @@ const interpolateColor = (stops, t, interpolation) => {
|
|
|
107
119
|
// linearRGB補間(ガンマ補正)
|
|
108
120
|
// 0-255 → 0-1に正規化してからリニア変換
|
|
109
121
|
return {
|
|
110
|
-
"r": linearToSRGB(lerp(sRGBToLinear(startR / 255), sRGBToLinear(endR / 255), localT)) * 255,
|
|
111
|
-
"g": linearToSRGB(lerp(sRGBToLinear(startG / 255), sRGBToLinear(endG / 255), localT)) * 255,
|
|
112
|
-
"b": linearToSRGB(lerp(sRGBToLinear(startB / 255), sRGBToLinear(endB / 255), localT)) * 255,
|
|
113
|
-
"a": lerp(startA, endA, localT)
|
|
122
|
+
"r": $linearToSRGB($lerp($sRGBToLinear(startR / 255), $sRGBToLinear(endR / 255), localT)) * 255,
|
|
123
|
+
"g": $linearToSRGB($lerp($sRGBToLinear(startG / 255), $sRGBToLinear(endG / 255), localT)) * 255,
|
|
124
|
+
"b": $linearToSRGB($lerp($sRGBToLinear(startB / 255), $sRGBToLinear(endB / 255), localT)) * 255,
|
|
125
|
+
"a": $lerp(startA, endA, localT)
|
|
114
126
|
};
|
|
115
127
|
}
|
|
116
128
|
// RGB補間(リニア、デフォルト)- 0-255範囲でそのまま補間
|
|
117
129
|
return {
|
|
118
|
-
"r": lerp(startR, endR, localT),
|
|
119
|
-
"g": lerp(startG, endG, localT),
|
|
120
|
-
"b": lerp(startB, endB, localT),
|
|
121
|
-
"a": lerp(startA, endA, localT)
|
|
130
|
+
"r": $lerp(startR, endR, localT),
|
|
131
|
+
"g": $lerp(startG, endG, localT),
|
|
132
|
+
"b": $lerp(startB, endB, localT),
|
|
133
|
+
"a": $lerp(startA, endA, localT)
|
|
122
134
|
};
|
|
123
135
|
};
|
|
124
136
|
/**
|
|
125
|
-
* @description
|
|
137
|
+
* @description 線形補間を行う
|
|
138
|
+
* Perform linear interpolation between two values
|
|
139
|
+
*
|
|
140
|
+
* @param {number} a - 開始値 / Start value
|
|
141
|
+
* @param {number} b - 終了値 / End value
|
|
142
|
+
* @param {number} t - 補間係数 (0-1) / Interpolation factor (0-1)
|
|
143
|
+
* @return {number} 補間結果 / Interpolated result
|
|
144
|
+
* @private
|
|
126
145
|
*/
|
|
127
|
-
const lerp = (a, b, t) => {
|
|
146
|
+
const $lerp = (a, b, t) => {
|
|
128
147
|
return a + (b - a) * t;
|
|
129
148
|
};
|
|
130
149
|
/**
|
|
131
|
-
* @description sRGB
|
|
150
|
+
* @description sRGBからリニア色空間へ変換する(入力: 0-1正規化値)
|
|
151
|
+
* Convert from sRGB to linear color space (input: 0-1 normalized value).
|
|
132
152
|
* WebGL版と同じガンマ値 2.23333333 を使用
|
|
153
|
+
*
|
|
154
|
+
* @param {number} value - sRGB色空間の正規化値 (0-1) / Normalized value in sRGB color space
|
|
155
|
+
* @return {number} リニア色空間の値 / Value in linear color space
|
|
156
|
+
* @private
|
|
133
157
|
*/
|
|
134
|
-
const sRGBToLinear = (value) => {
|
|
135
|
-
// WebGL版と同じ簡易ガンマ補正
|
|
158
|
+
const $sRGBToLinear = (value) => {
|
|
136
159
|
return Math.pow(value, 2.23333333);
|
|
137
160
|
};
|
|
138
161
|
/**
|
|
139
|
-
* @description
|
|
162
|
+
* @description リニア色空間からsRGBへ変換する(出力: 0-1正規化値)
|
|
163
|
+
* Convert from linear color space to sRGB (output: 0-1 normalized value).
|
|
140
164
|
* WebGL版と同じガンマ値 0.45454545 (= 1/2.2) を使用
|
|
165
|
+
*
|
|
166
|
+
* @param {number} value - リニア色空間の値 / Value in linear color space
|
|
167
|
+
* @return {number} sRGB色空間の正規化値 / Normalized value in sRGB color space
|
|
168
|
+
* @private
|
|
141
169
|
*/
|
|
142
|
-
const linearToSRGB = (value) => {
|
|
143
|
-
// WebGL版と同じ簡易ガンマ補正
|
|
170
|
+
const $linearToSRGB = (value) => {
|
|
144
171
|
return Math.pow(value, 0.45454545);
|
|
145
172
|
};
|
|
146
173
|
/**
|
|
147
|
-
* @description フィルター用グラデーションLUT
|
|
174
|
+
* @description フィルター用グラデーションLUTテクスチャデータを生成する
|
|
175
|
+
* Generate gradient LUT texture data for filters.
|
|
148
176
|
* ratios, colors, alphas配列から1D LUTを生成
|
|
149
|
-
*
|
|
150
|
-
* @param
|
|
151
|
-
* @param
|
|
152
|
-
* @
|
|
177
|
+
*
|
|
178
|
+
* @param {Float32Array} ratios - 比率配列 (0-255) / Ratio array (0-255)
|
|
179
|
+
* @param {Float32Array} colors - 色配列 (32bit整数) / Color array (32-bit integers)
|
|
180
|
+
* @param {Float32Array} alphas - アルファ配列 (0-1) / Alpha array (0-1)
|
|
181
|
+
* @return {Uint8Array} LUTテクスチャデータ / LUT texture data
|
|
182
|
+
* @method
|
|
183
|
+
* @protected
|
|
153
184
|
*/
|
|
154
185
|
export const generateFilterGradientLUT = (ratios, colors, alphas) => {
|
|
155
186
|
const resolution = 256;
|
|
@@ -187,10 +218,10 @@ export const generateFilterGradientLUT = (ratios, colors, alphas) => {
|
|
|
187
218
|
if (end.offset !== start.offset) {
|
|
188
219
|
localT = (t - start.offset) / (end.offset - start.offset);
|
|
189
220
|
}
|
|
190
|
-
const r = lerp(start.r, end.r, localT);
|
|
191
|
-
const g = lerp(start.g, end.g, localT);
|
|
192
|
-
const b = lerp(start.b, end.b, localT);
|
|
193
|
-
const a = lerp(start.a, end.a, localT);
|
|
221
|
+
const r = $lerp(start.r, end.r, localT);
|
|
222
|
+
const g = $lerp(start.g, end.g, localT);
|
|
223
|
+
const b = $lerp(start.b, end.b, localT);
|
|
224
|
+
const a = $lerp(start.a, end.a, localT);
|
|
194
225
|
// プリマルチプライドアルファで書き込み
|
|
195
226
|
const offset = i * 4;
|
|
196
227
|
lutData[offset + 0] = Math.round(r * a * 255);
|
|
@@ -1,4 +1,19 @@
|
|
|
1
1
|
import type { BufferManager } from "../../BufferManager";
|
|
2
2
|
import type { PipelineManager } from "../../Shader/PipelineManager";
|
|
3
3
|
import type { IAttachmentObject } from "../../interface/IAttachmentObject";
|
|
4
|
-
|
|
4
|
+
/**
|
|
5
|
+
* @description マスクの合成処理(ネストされたマスク対応)
|
|
6
|
+
* Union mask processing for nested masks.
|
|
7
|
+
* WebGL版と同様に、レベル7を超えたステンシルビットをマージする
|
|
8
|
+
* Merges stencil bits exceeding level 7, same as WebGL version.
|
|
9
|
+
*
|
|
10
|
+
* @param {GPUDevice} device - GPUデバイス / GPU device
|
|
11
|
+
* @param {GPURenderPassEncoder} render_pass_encoder - レンダーパスエンコーダ / Render pass encoder
|
|
12
|
+
* @param {BufferManager} buffer_manager - バッファマネージャ / Buffer manager
|
|
13
|
+
* @param {PipelineManager} pipeline_manager - パイプラインマネージャ / Pipeline manager
|
|
14
|
+
* @param {IAttachmentObject} current_attachment - 現在のアタッチメントオブジェクト / Current attachment object
|
|
15
|
+
* @return {void}
|
|
16
|
+
* @method
|
|
17
|
+
* @protected
|
|
18
|
+
*/
|
|
19
|
+
export declare const execute: (device: GPUDevice, render_pass_encoder: GPURenderPassEncoder, buffer_manager: BufferManager, pipeline_manager: PipelineManager, current_attachment: IAttachmentObject) => void;
|
|
@@ -1,17 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @description
|
|
3
|
-
*
|
|
2
|
+
* @description フルスクリーン矩形の頂点データ(4 floats/vertex: position + bezier)
|
|
3
|
+
* Full-screen rectangle vertex data (4 floats/vertex: position + bezier)
|
|
4
4
|
*
|
|
5
|
-
* @
|
|
6
|
-
* @
|
|
7
|
-
* @param {BufferManager} bufferManager
|
|
8
|
-
* @param {PipelineManager} pipelineManager
|
|
9
|
-
* @param {IAttachmentObject} currentAttachment
|
|
10
|
-
* @return {void}
|
|
11
|
-
* @method
|
|
12
|
-
* @protected
|
|
5
|
+
* @type {Float32Array}
|
|
6
|
+
* @constant
|
|
13
7
|
*/
|
|
14
|
-
// フルスクリーン矩形(4 floats/vertex: position + bezier)
|
|
15
8
|
const $rectVertices = new Float32Array([
|
|
16
9
|
// Triangle 1
|
|
17
10
|
-1, -1, 0.5, 0.5,
|
|
@@ -22,24 +15,45 @@ const $rectVertices = new Float32Array([
|
|
|
22
15
|
1, -1, 0.5, 0.5,
|
|
23
16
|
1, 1, 0.5, 0.5
|
|
24
17
|
]);
|
|
25
|
-
|
|
18
|
+
/**
|
|
19
|
+
* @description FillUniformsデータ: 恒等行列と白色(NDC座標なので変換不要)
|
|
20
|
+
* FillUniforms data: identity matrix + white color (no transform needed for NDC coordinates)
|
|
21
|
+
*
|
|
22
|
+
* @type {Float32Array}
|
|
23
|
+
* @constant
|
|
24
|
+
*/
|
|
26
25
|
const $uniformData16 = new Float32Array([
|
|
27
26
|
1, 1, 1, 1, // color: white
|
|
28
27
|
0.5, 0, 0, 0, // matrix0: (0.5, 0, 0, pad) → identity-like for NDC passthrough
|
|
29
28
|
0, 0.5, 0, 0, // matrix1: (0, 0.5, 0, pad)
|
|
30
29
|
0.5, 0.5, 1, 0 // matrix2: (0.5, 0.5, 1, pad)
|
|
31
30
|
]);
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
/**
|
|
32
|
+
* @description マスクの合成処理(ネストされたマスク対応)
|
|
33
|
+
* Union mask processing for nested masks.
|
|
34
|
+
* WebGL版と同様に、レベル7を超えたステンシルビットをマージする
|
|
35
|
+
* Merges stencil bits exceeding level 7, same as WebGL version.
|
|
36
|
+
*
|
|
37
|
+
* @param {GPUDevice} device - GPUデバイス / GPU device
|
|
38
|
+
* @param {GPURenderPassEncoder} render_pass_encoder - レンダーパスエンコーダ / Render pass encoder
|
|
39
|
+
* @param {BufferManager} buffer_manager - バッファマネージャ / Buffer manager
|
|
40
|
+
* @param {PipelineManager} pipeline_manager - パイプラインマネージャ / Pipeline manager
|
|
41
|
+
* @param {IAttachmentObject} current_attachment - 現在のアタッチメントオブジェクト / Current attachment object
|
|
42
|
+
* @return {void}
|
|
43
|
+
* @method
|
|
44
|
+
* @protected
|
|
45
|
+
*/
|
|
46
|
+
export const execute = (device, render_pass_encoder, buffer_manager, pipeline_manager, current_attachment) => {
|
|
47
|
+
if (!current_attachment) {
|
|
34
48
|
return;
|
|
35
49
|
}
|
|
36
|
-
const clipLevel =
|
|
50
|
+
const clipLevel = current_attachment.clipLevel;
|
|
37
51
|
const mask = 1 << clipLevel - 1;
|
|
38
|
-
const vertexBuffer =
|
|
52
|
+
const vertexBuffer = buffer_manager.acquireVertexBuffer($rectVertices.byteLength, $rectVertices);
|
|
39
53
|
// Dynamic Uniform Bufferにデータを書き込み
|
|
40
|
-
const uniformOffset =
|
|
54
|
+
const uniformOffset = buffer_manager.dynamicUniform.allocate($uniformData16);
|
|
41
55
|
// Dynamic BindGroupを取得
|
|
42
|
-
const layout =
|
|
56
|
+
const layout = pipeline_manager.getBindGroupLayout("fill_dynamic");
|
|
43
57
|
if (!layout) {
|
|
44
58
|
return;
|
|
45
59
|
}
|
|
@@ -48,27 +62,27 @@ export const execute = (device, renderPassEncoder, bufferManager, pipelineManage
|
|
|
48
62
|
"entries": [{
|
|
49
63
|
"binding": 0,
|
|
50
64
|
"resource": {
|
|
51
|
-
"buffer":
|
|
65
|
+
"buffer": buffer_manager.dynamicUniform.getBuffer(),
|
|
52
66
|
"size": 256
|
|
53
67
|
}
|
|
54
68
|
}]
|
|
55
69
|
});
|
|
56
70
|
// === Pass 1: ステンシルビットのマージ ===
|
|
57
|
-
const mergePipeline =
|
|
71
|
+
const mergePipeline = pipeline_manager.getPipeline(`mask_union_merge_${clipLevel}`);
|
|
58
72
|
if (mergePipeline) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
73
|
+
render_pass_encoder.setPipeline(mergePipeline);
|
|
74
|
+
render_pass_encoder.setStencilReference(mask);
|
|
75
|
+
render_pass_encoder.setVertexBuffer(0, vertexBuffer);
|
|
76
|
+
render_pass_encoder.setBindGroup(0, bindGroup, [uniformOffset]);
|
|
77
|
+
render_pass_encoder.draw(6, 1, 0, 0);
|
|
64
78
|
}
|
|
65
79
|
// === Pass 2: 上位ビットのクリア ===
|
|
66
|
-
const clearPipeline =
|
|
80
|
+
const clearPipeline = pipeline_manager.getPipeline(`mask_union_clear_${clipLevel}`);
|
|
67
81
|
if (clearPipeline) {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
82
|
+
render_pass_encoder.setPipeline(clearPipeline);
|
|
83
|
+
render_pass_encoder.setStencilReference(0);
|
|
84
|
+
render_pass_encoder.setVertexBuffer(0, vertexBuffer);
|
|
85
|
+
render_pass_encoder.setBindGroup(0, bindGroup, [uniformOffset]);
|
|
86
|
+
render_pass_encoder.draw(6, 1, 0, 0);
|
|
73
87
|
}
|
|
74
88
|
};
|
package/src/Mask.d.ts
CHANGED
|
@@ -1,12 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description マスク描画状態を設定する
|
|
3
|
+
* Set the mask drawing state
|
|
4
|
+
*
|
|
5
|
+
* @param {boolean} state - マスク描画中かどうか / whether mask drawing is active
|
|
6
|
+
* @return {void}
|
|
7
|
+
*/
|
|
1
8
|
export declare const $setMaskDrawing: (state: boolean) => void;
|
|
9
|
+
/**
|
|
10
|
+
* @description マスク描画中かどうかを返す
|
|
11
|
+
* Returns whether mask drawing is currently active
|
|
12
|
+
*
|
|
13
|
+
* @return {boolean}
|
|
14
|
+
*/
|
|
2
15
|
export declare const $isMaskDrawing: () => boolean;
|
|
16
|
+
/**
|
|
17
|
+
* @description マスクテストの有効/無効を設定する
|
|
18
|
+
* Enable or disable mask (stencil) testing
|
|
19
|
+
*
|
|
20
|
+
* @param {boolean} enabled - 有効にするかどうか / whether to enable
|
|
21
|
+
* @return {void}
|
|
22
|
+
*/
|
|
3
23
|
export declare const $setMaskTestEnabled: (enabled: boolean) => void;
|
|
24
|
+
/**
|
|
25
|
+
* @description マスクテストが有効かどうかを返す
|
|
26
|
+
* Returns whether mask (stencil) testing is enabled
|
|
27
|
+
*
|
|
28
|
+
* @return {boolean}
|
|
29
|
+
*/
|
|
4
30
|
export declare const $isMaskTestEnabled: () => boolean;
|
|
31
|
+
/**
|
|
32
|
+
* @description マスクステンシル参照値を設定する
|
|
33
|
+
* Set the mask stencil reference value
|
|
34
|
+
*
|
|
35
|
+
* @param {number} value - ステンシル参照値 / stencil reference value
|
|
36
|
+
* @return {void}
|
|
37
|
+
*/
|
|
5
38
|
export declare const $setMaskStencilReference: (value: number) => void;
|
|
39
|
+
/**
|
|
40
|
+
* @description マスクステンシル参照値を取得する
|
|
41
|
+
* Get the current mask stencil reference value
|
|
42
|
+
*
|
|
43
|
+
* @return {number}
|
|
44
|
+
*/
|
|
6
45
|
export declare const $getMaskStencilReference: () => number;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
46
|
+
/**
|
|
47
|
+
* @description クリップ境界のマップ(キー: ID、値: バウンディングボックス)
|
|
48
|
+
* Map of clip bounds (key: ID, value: bounding box as Float32Array)
|
|
49
|
+
*
|
|
50
|
+
* @type {Map<number, Float32Array>}
|
|
51
|
+
*/
|
|
10
52
|
export declare const $clipBounds: Map<number, Float32Array>;
|
|
53
|
+
/**
|
|
54
|
+
* @description クリップレベルのマップ(キー: ID、値: クリップ深度)
|
|
55
|
+
* Map of clip levels (key: ID, value: clip depth)
|
|
56
|
+
*
|
|
57
|
+
* @type {Map<number, number>}
|
|
58
|
+
*/
|
|
11
59
|
export declare const $clipLevels: Map<number, number>;
|
|
60
|
+
/**
|
|
61
|
+
* @description マスク関連の全状態をリセットする
|
|
62
|
+
* Reset all mask-related state to initial values
|
|
63
|
+
*
|
|
64
|
+
* @return {void}
|
|
65
|
+
*/
|
|
12
66
|
export declare const $resetMaskState: () => void;
|
package/src/Mask.js
CHANGED
|
@@ -1,41 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description マスク描画中かどうかの状態フラグ
|
|
3
|
+
* Flag indicating whether mask drawing is in progress
|
|
4
|
+
*
|
|
5
|
+
* @type {boolean}
|
|
6
|
+
*/
|
|
1
7
|
let $maskDrawingState = false;
|
|
8
|
+
/**
|
|
9
|
+
* @description マスク描画状態を設定する
|
|
10
|
+
* Set the mask drawing state
|
|
11
|
+
*
|
|
12
|
+
* @param {boolean} state - マスク描画中かどうか / whether mask drawing is active
|
|
13
|
+
* @return {void}
|
|
14
|
+
*/
|
|
2
15
|
export const $setMaskDrawing = (state) => {
|
|
3
16
|
$maskDrawingState = state;
|
|
4
17
|
};
|
|
18
|
+
/**
|
|
19
|
+
* @description マスク描画中かどうかを返す
|
|
20
|
+
* Returns whether mask drawing is currently active
|
|
21
|
+
*
|
|
22
|
+
* @return {boolean}
|
|
23
|
+
*/
|
|
5
24
|
export const $isMaskDrawing = () => {
|
|
6
25
|
return $maskDrawingState;
|
|
7
26
|
};
|
|
27
|
+
/**
|
|
28
|
+
* @description マスクテストが有効かどうかのフラグ
|
|
29
|
+
* Flag indicating whether mask (stencil) testing is enabled
|
|
30
|
+
*
|
|
31
|
+
* @type {boolean}
|
|
32
|
+
*/
|
|
8
33
|
let $maskTestEnabled = false;
|
|
34
|
+
/**
|
|
35
|
+
* @description マスクステンシル参照値
|
|
36
|
+
* Mask stencil reference value used for stencil comparison
|
|
37
|
+
*
|
|
38
|
+
* @type {number}
|
|
39
|
+
*/
|
|
9
40
|
let $maskStencilReference = 0;
|
|
41
|
+
/**
|
|
42
|
+
* @description マスクテストの有効/無効を設定する
|
|
43
|
+
* Enable or disable mask (stencil) testing
|
|
44
|
+
*
|
|
45
|
+
* @param {boolean} enabled - 有効にするかどうか / whether to enable
|
|
46
|
+
* @return {void}
|
|
47
|
+
*/
|
|
10
48
|
export const $setMaskTestEnabled = (enabled) => {
|
|
11
49
|
$maskTestEnabled = enabled;
|
|
12
50
|
};
|
|
51
|
+
/**
|
|
52
|
+
* @description マスクテストが有効かどうかを返す
|
|
53
|
+
* Returns whether mask (stencil) testing is enabled
|
|
54
|
+
*
|
|
55
|
+
* @return {boolean}
|
|
56
|
+
*/
|
|
13
57
|
export const $isMaskTestEnabled = () => {
|
|
14
58
|
return $maskTestEnabled;
|
|
15
59
|
};
|
|
60
|
+
/**
|
|
61
|
+
* @description マスクステンシル参照値を設定する
|
|
62
|
+
* Set the mask stencil reference value
|
|
63
|
+
*
|
|
64
|
+
* @param {number} value - ステンシル参照値 / stencil reference value
|
|
65
|
+
* @return {void}
|
|
66
|
+
*/
|
|
16
67
|
export const $setMaskStencilReference = (value) => {
|
|
17
68
|
$maskStencilReference = value;
|
|
18
69
|
};
|
|
70
|
+
/**
|
|
71
|
+
* @description マスクステンシル参照値を取得する
|
|
72
|
+
* Get the current mask stencil reference value
|
|
73
|
+
*
|
|
74
|
+
* @return {number}
|
|
75
|
+
*/
|
|
19
76
|
export const $getMaskStencilReference = () => {
|
|
20
77
|
return $maskStencilReference;
|
|
21
78
|
};
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
};
|
|
29
|
-
export const $hasMaskAttachment = () => {
|
|
30
|
-
return $maskAttachmentStack.length > 0;
|
|
31
|
-
};
|
|
79
|
+
/**
|
|
80
|
+
* @description クリップ境界のマップ(キー: ID、値: バウンディングボックス)
|
|
81
|
+
* Map of clip bounds (key: ID, value: bounding box as Float32Array)
|
|
82
|
+
*
|
|
83
|
+
* @type {Map<number, Float32Array>}
|
|
84
|
+
*/
|
|
32
85
|
export const $clipBounds = new Map();
|
|
86
|
+
/**
|
|
87
|
+
* @description クリップレベルのマップ(キー: ID、値: クリップ深度)
|
|
88
|
+
* Map of clip levels (key: ID, value: clip depth)
|
|
89
|
+
*
|
|
90
|
+
* @type {Map<number, number>}
|
|
91
|
+
*/
|
|
33
92
|
export const $clipLevels = new Map();
|
|
93
|
+
/**
|
|
94
|
+
* @description マスク関連の全状態をリセットする
|
|
95
|
+
* Reset all mask-related state to initial values
|
|
96
|
+
*
|
|
97
|
+
* @return {void}
|
|
98
|
+
*/
|
|
34
99
|
export const $resetMaskState = () => {
|
|
35
100
|
$maskDrawingState = false;
|
|
36
101
|
$maskTestEnabled = false;
|
|
37
102
|
$maskStencilReference = 0;
|
|
38
|
-
$maskAttachmentStack.length = 0;
|
|
39
103
|
$clipBounds.clear();
|
|
40
104
|
$clipLevels.clear();
|
|
41
105
|
};
|
|
@@ -9,10 +9,10 @@ import type { IPath } from "../../interface/IPath";
|
|
|
9
9
|
*
|
|
10
10
|
* color/matrixはuniform bufferで供給される
|
|
11
11
|
*
|
|
12
|
-
* @param {IPath} vertex
|
|
13
|
-
* @param {Float32Array} buffer
|
|
14
|
-
* @param {number} index - 現在の頂点インデックス
|
|
15
|
-
* @return {number} 新しい頂点インデックス
|
|
12
|
+
* @param {IPath} vertex - 頂点パスデータ / Vertex path data
|
|
13
|
+
* @param {Float32Array} buffer - 出力先バッファ / Output buffer
|
|
14
|
+
* @param {number} index - 現在の頂点インデックス / Current vertex index
|
|
15
|
+
* @return {number} 新しい頂点インデックス / New vertex index
|
|
16
16
|
* @method
|
|
17
17
|
* @protected
|
|
18
18
|
*/
|
|
@@ -8,10 +8,10 @@
|
|
|
8
8
|
*
|
|
9
9
|
* color/matrixはuniform bufferで供給される
|
|
10
10
|
*
|
|
11
|
-
* @param {IPath} vertex
|
|
12
|
-
* @param {Float32Array} buffer
|
|
13
|
-
* @param {number} index - 現在の頂点インデックス
|
|
14
|
-
* @return {number} 新しい頂点インデックス
|
|
11
|
+
* @param {IPath} vertex - 頂点パスデータ / Vertex path data
|
|
12
|
+
* @param {Float32Array} buffer - 出力先バッファ / Output buffer
|
|
13
|
+
* @param {number} index - 現在の頂点インデックス / Current vertex index
|
|
14
|
+
* @return {number} 新しい頂点インデックス / New vertex index
|
|
15
15
|
* @method
|
|
16
16
|
* @protected
|
|
17
17
|
*/
|
|
@@ -9,10 +9,10 @@ import type { IPath } from "../../interface/IPath";
|
|
|
9
9
|
*
|
|
10
10
|
* color/matrixはuniform bufferで供給される
|
|
11
11
|
*
|
|
12
|
-
* @param {IPath} vertex
|
|
13
|
-
* @param {Float32Array} buffer
|
|
14
|
-
* @param {number} index - 現在の頂点インデックス
|
|
15
|
-
* @return {number} 新しい頂点インデックス
|
|
12
|
+
* @param {IPath} vertex - 頂点パスデータ / Vertex path data
|
|
13
|
+
* @param {Float32Array} buffer - 出力先バッファ / Output buffer
|
|
14
|
+
* @param {number} index - 現在の頂点インデックス / Current vertex index
|
|
15
|
+
* @return {number} 新しい頂点インデックス / New vertex index
|
|
16
16
|
* @method
|
|
17
17
|
* @protected
|
|
18
18
|
*/
|
|
@@ -8,10 +8,10 @@
|
|
|
8
8
|
*
|
|
9
9
|
* color/matrixはuniform bufferで供給される
|
|
10
10
|
*
|
|
11
|
-
* @param {IPath} vertex
|
|
12
|
-
* @param {Float32Array} buffer
|
|
13
|
-
* @param {number} index - 現在の頂点インデックス
|
|
14
|
-
* @return {number} 新しい頂点インデックス
|
|
11
|
+
* @param {IPath} vertex - 頂点パスデータ / Vertex path data
|
|
12
|
+
* @param {Float32Array} buffer - 出力先バッファ / Output buffer
|
|
13
|
+
* @param {number} index - 現在の頂点インデックス / Current vertex index
|
|
14
|
+
* @return {number} 新しい頂点インデックス / New vertex index
|
|
15
15
|
* @method
|
|
16
16
|
* @protected
|
|
17
17
|
*/
|
|
@@ -4,9 +4,9 @@ import type { IMeshResult } from "../../interface/IMeshResult";
|
|
|
4
4
|
* @description ビットマップストローク用のメッシュを生成する
|
|
5
5
|
* Generate a mesh for bitmap stroke
|
|
6
6
|
*
|
|
7
|
-
* @param {IPath[]} vertices
|
|
8
|
-
* @param {number} thickness
|
|
9
|
-
* @return {IMeshResult}
|
|
7
|
+
* @param {IPath[]} vertices - パス頂点配列 / Array of path vertices
|
|
8
|
+
* @param {number} thickness - 線の太さ / Line thickness
|
|
9
|
+
* @return {IMeshResult} メッシュ結果 / Mesh result
|
|
10
10
|
* @method
|
|
11
11
|
* @protected
|
|
12
12
|
*/
|
|
@@ -4,6 +4,13 @@ import { execute as meshStrokeFillGenerateService } from "../service/MeshStrokeF
|
|
|
4
4
|
* @description メッシュ生成用の再利用可能な一時バッファ(GC回避)
|
|
5
5
|
*/
|
|
6
6
|
let $meshTempBuffer = new Float32Array(32);
|
|
7
|
+
/**
|
|
8
|
+
* @description 2のべき乗に切り上げる
|
|
9
|
+
* Round up to the next power of two
|
|
10
|
+
*
|
|
11
|
+
* @param {number} v - 切り上げ対象の値 / Value to round up
|
|
12
|
+
* @return {number} 2のべき乗の値 / Next power of two
|
|
13
|
+
*/
|
|
7
14
|
const $upperPowerOfTwo = (v) => {
|
|
8
15
|
v--;
|
|
9
16
|
v |= v >> 1;
|
|
@@ -18,9 +25,9 @@ const $upperPowerOfTwo = (v) => {
|
|
|
18
25
|
* @description ビットマップストローク用のメッシュを生成する
|
|
19
26
|
* Generate a mesh for bitmap stroke
|
|
20
27
|
*
|
|
21
|
-
* @param {IPath[]} vertices
|
|
22
|
-
* @param {number} thickness
|
|
23
|
-
* @return {IMeshResult}
|
|
28
|
+
* @param {IPath[]} vertices - パス頂点配列 / Array of path vertices
|
|
29
|
+
* @param {number} thickness - 線の太さ / Line thickness
|
|
30
|
+
* @return {IMeshResult} メッシュ結果 / Mesh result
|
|
24
31
|
* @method
|
|
25
32
|
* @protected
|
|
26
33
|
*/
|
|
@@ -4,8 +4,8 @@ import type { IMeshResult } from "../../interface/IMeshResult";
|
|
|
4
4
|
* @description 塗りのメッシュを生成する
|
|
5
5
|
* Generate a fill mesh
|
|
6
6
|
*
|
|
7
|
-
* @param {IPath[]} vertices
|
|
8
|
-
* @return {IMeshResult}
|
|
7
|
+
* @param {IPath[]} vertices - パス頂点配列 / Array of path vertices
|
|
8
|
+
* @return {IMeshResult} メッシュ結果 / Mesh result
|
|
9
9
|
* @method
|
|
10
10
|
* @protected
|
|
11
11
|
*/
|
|
@@ -3,6 +3,13 @@ import { execute as meshFillGenerateService } from "../service/MeshFillGenerateS
|
|
|
3
3
|
* @description メッシュ生成用の再利用可能な一時バッファ(GC回避)
|
|
4
4
|
*/
|
|
5
5
|
let $meshTempBuffer = new Float32Array(32);
|
|
6
|
+
/**
|
|
7
|
+
* @description 2のべき乗に切り上げる
|
|
8
|
+
* Round up to the next power of two
|
|
9
|
+
*
|
|
10
|
+
* @param {number} v - 切り上げ対象の値 / Value to round up
|
|
11
|
+
* @return {number} 2のべき乗の値 / Next power of two
|
|
12
|
+
*/
|
|
6
13
|
const $upperPowerOfTwo = (v) => {
|
|
7
14
|
v--;
|
|
8
15
|
v |= v >> 1;
|
|
@@ -17,8 +24,8 @@ const $upperPowerOfTwo = (v) => {
|
|
|
17
24
|
* @description 塗りのメッシュを生成する
|
|
18
25
|
* Generate a fill mesh
|
|
19
26
|
*
|
|
20
|
-
* @param {IPath[]} vertices
|
|
21
|
-
* @return {IMeshResult}
|
|
27
|
+
* @param {IPath[]} vertices - パス頂点配列 / Array of path vertices
|
|
28
|
+
* @return {IMeshResult} メッシュ結果 / Mesh result
|
|
22
29
|
* @method
|
|
23
30
|
* @protected
|
|
24
31
|
*/
|