@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,10 +3,10 @@ import type { ITextureObject } from "../../interface/ITextureObject";
|
|
|
3
3
|
* @description テクスチャをプールに返却
|
|
4
4
|
* Release texture back to pool
|
|
5
5
|
*
|
|
6
|
-
* @param {Map<string, ITextureObject[]>}
|
|
7
|
-
* @param {ITextureObject}
|
|
6
|
+
* @param {Map<string, ITextureObject[]>} texture_pool - テクスチャプール
|
|
7
|
+
* @param {ITextureObject} texture_object - 返却するテクスチャオブジェクト
|
|
8
8
|
* @return {void}
|
|
9
9
|
* @method
|
|
10
10
|
* @protected
|
|
11
11
|
*/
|
|
12
|
-
export declare const execute: (
|
|
12
|
+
export declare const execute: (texture_pool: Map<string, ITextureObject[]>, texture_object: ITextureObject) => void;
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
* @description テクスチャをプールに返却
|
|
3
3
|
* Release texture back to pool
|
|
4
4
|
*
|
|
5
|
-
* @param {Map<string, ITextureObject[]>}
|
|
6
|
-
* @param {ITextureObject}
|
|
5
|
+
* @param {Map<string, ITextureObject[]>} texture_pool - テクスチャプール
|
|
6
|
+
* @param {ITextureObject} texture_object - 返却するテクスチャオブジェクト
|
|
7
7
|
* @return {void}
|
|
8
8
|
* @method
|
|
9
9
|
* @protected
|
|
10
10
|
*/
|
|
11
|
-
export const execute = (
|
|
12
|
-
const key = `${
|
|
13
|
-
if (!
|
|
14
|
-
|
|
11
|
+
export const execute = (texture_pool, texture_object) => {
|
|
12
|
+
const key = `${texture_object.width}x${texture_object.height}_${texture_object.smooth ? "smooth" : "nearest"}`;
|
|
13
|
+
if (!texture_pool.has(key)) {
|
|
14
|
+
texture_pool.set(key, []);
|
|
15
15
|
}
|
|
16
|
-
|
|
16
|
+
texture_pool.get(key).push(texture_object);
|
|
17
17
|
};
|
|
@@ -6,20 +6,20 @@ import type { IStencilBufferObject } from "../../interface/IStencilBufferObject"
|
|
|
6
6
|
* @description アタッチメントオブジェクトを取得
|
|
7
7
|
* Get attachment object
|
|
8
8
|
*
|
|
9
|
-
* @param {GPUDevice} device
|
|
10
|
-
* @param {IAttachmentObject[]}
|
|
11
|
-
* @param {Map<string, ITextureObject[]>}
|
|
12
|
-
* @param {IColorBufferObject[]}
|
|
13
|
-
* @param {IStencilBufferObject[]}
|
|
14
|
-
* @param {number} width
|
|
15
|
-
* @param {number} height
|
|
16
|
-
* @param {boolean} msaa
|
|
17
|
-
* @param {{ attachmentId: number, textureId: number, stencilId: number }}
|
|
9
|
+
* @param {GPUDevice} device - GPUデバイス
|
|
10
|
+
* @param {IAttachmentObject[]} attachment_pool - アタッチメントプール
|
|
11
|
+
* @param {Map<string, ITextureObject[]>} texture_pool - テクスチャプール
|
|
12
|
+
* @param {IColorBufferObject[]} color_buffer_pool - カラーバッファプール
|
|
13
|
+
* @param {IStencilBufferObject[]} stencil_buffer_pool - ステンシルバッファプール
|
|
14
|
+
* @param {number} width - バッファ幅
|
|
15
|
+
* @param {number} height - バッファ高さ
|
|
16
|
+
* @param {boolean} msaa - MSAA有効フラグ
|
|
17
|
+
* @param {{ attachmentId: number, textureId: number, stencilId: number }} id_counter - ID管理カウンタ
|
|
18
18
|
* @return {IAttachmentObject}
|
|
19
19
|
* @method
|
|
20
20
|
* @protected
|
|
21
21
|
*/
|
|
22
|
-
export declare const execute: (device: GPUDevice,
|
|
22
|
+
export declare const execute: (device: GPUDevice, attachment_pool: IAttachmentObject[], texture_pool: Map<string, ITextureObject[]>, color_buffer_pool: IColorBufferObject[], stencil_buffer_pool: IStencilBufferObject[], width: number, height: number, msaa: boolean, id_counter: {
|
|
23
23
|
attachmentId: number;
|
|
24
24
|
textureId: number;
|
|
25
25
|
stencilId: number;
|
|
@@ -6,24 +6,24 @@ import { execute as attachmentManagerGetTextureService } from "../service/Attach
|
|
|
6
6
|
* @description アタッチメントオブジェクトを取得
|
|
7
7
|
* Get attachment object
|
|
8
8
|
*
|
|
9
|
-
* @param {GPUDevice} device
|
|
10
|
-
* @param {IAttachmentObject[]}
|
|
11
|
-
* @param {Map<string, ITextureObject[]>}
|
|
12
|
-
* @param {IColorBufferObject[]}
|
|
13
|
-
* @param {IStencilBufferObject[]}
|
|
14
|
-
* @param {number} width
|
|
15
|
-
* @param {number} height
|
|
16
|
-
* @param {boolean} msaa
|
|
17
|
-
* @param {{ attachmentId: number, textureId: number, stencilId: number }}
|
|
9
|
+
* @param {GPUDevice} device - GPUデバイス
|
|
10
|
+
* @param {IAttachmentObject[]} attachment_pool - アタッチメントプール
|
|
11
|
+
* @param {Map<string, ITextureObject[]>} texture_pool - テクスチャプール
|
|
12
|
+
* @param {IColorBufferObject[]} color_buffer_pool - カラーバッファプール
|
|
13
|
+
* @param {IStencilBufferObject[]} stencil_buffer_pool - ステンシルバッファプール
|
|
14
|
+
* @param {number} width - バッファ幅
|
|
15
|
+
* @param {number} height - バッファ高さ
|
|
16
|
+
* @param {boolean} msaa - MSAA有効フラグ
|
|
17
|
+
* @param {{ attachmentId: number, textureId: number, stencilId: number }} id_counter - ID管理カウンタ
|
|
18
18
|
* @return {IAttachmentObject}
|
|
19
19
|
* @method
|
|
20
20
|
* @protected
|
|
21
21
|
*/
|
|
22
|
-
export const execute = (device,
|
|
22
|
+
export const execute = (device, attachment_pool, texture_pool, color_buffer_pool, stencil_buffer_pool, width, height, msaa, id_counter) => {
|
|
23
23
|
// プールから再利用
|
|
24
|
-
const attachment =
|
|
25
|
-
?
|
|
26
|
-
: attachmentManagerCreateAttachmentObjectService(
|
|
24
|
+
const attachment = attachment_pool.length > 0
|
|
25
|
+
? attachment_pool.pop()
|
|
26
|
+
: attachmentManagerCreateAttachmentObjectService(id_counter);
|
|
27
27
|
// サイズとフラグを更新
|
|
28
28
|
attachment.width = width;
|
|
29
29
|
attachment.height = height;
|
|
@@ -31,13 +31,13 @@ export const execute = (device, attachmentPool, texturePool, colorBufferPool, st
|
|
|
31
31
|
attachment.mask = false;
|
|
32
32
|
attachment.clipLevel = 0;
|
|
33
33
|
// ステンシルバッファを取得または作成
|
|
34
|
-
const stencil = attachmentManagerGetStencilBufferService(device,
|
|
34
|
+
const stencil = attachmentManagerGetStencilBufferService(device, stencil_buffer_pool, width, height, id_counter);
|
|
35
35
|
// カラーバッファを取得または作成(ステンシルを参照)
|
|
36
|
-
const color = attachmentManagerGetColorBufferService(device,
|
|
36
|
+
const color = attachmentManagerGetColorBufferService(device, color_buffer_pool, width, height, stencil);
|
|
37
37
|
attachment.color = color;
|
|
38
38
|
attachment.stencil = stencil;
|
|
39
39
|
// テクスチャを取得
|
|
40
|
-
const texture = attachmentManagerGetTextureService(device,
|
|
40
|
+
const texture = attachmentManagerGetTextureService(device, texture_pool, width, height, true, id_counter);
|
|
41
41
|
attachment.texture = texture;
|
|
42
42
|
return attachment;
|
|
43
43
|
};
|
|
@@ -6,13 +6,13 @@ import type { IStencilBufferObject } from "../../interface/IStencilBufferObject"
|
|
|
6
6
|
* @description アタッチメントを解放してプールに返却
|
|
7
7
|
* Release attachment and return to pool
|
|
8
8
|
*
|
|
9
|
-
* @param {IAttachmentObject[]}
|
|
10
|
-
* @param {Map<string, ITextureObject[]>}
|
|
11
|
-
* @param {IColorBufferObject[]}
|
|
12
|
-
* @param {IStencilBufferObject[]}
|
|
13
|
-
* @param {IAttachmentObject} attachment
|
|
9
|
+
* @param {IAttachmentObject[]} attachment_pool - アタッチメントプール
|
|
10
|
+
* @param {Map<string, ITextureObject[]>} texture_pool - テクスチャプール
|
|
11
|
+
* @param {IColorBufferObject[]} color_buffer_pool - カラーバッファプール
|
|
12
|
+
* @param {IStencilBufferObject[]} stencil_buffer_pool - ステンシルバッファプール
|
|
13
|
+
* @param {IAttachmentObject} attachment - 解放するアタッチメント
|
|
14
14
|
* @return {void}
|
|
15
15
|
* @method
|
|
16
16
|
* @protected
|
|
17
17
|
*/
|
|
18
|
-
export declare const execute: (
|
|
18
|
+
export declare const execute: (attachment_pool: IAttachmentObject[], texture_pool: Map<string, ITextureObject[]>, color_buffer_pool: IColorBufferObject[], stencil_buffer_pool: IStencilBufferObject[], attachment: IAttachmentObject) => void;
|
|
@@ -3,31 +3,31 @@ import { execute as attachmentManagerReleaseTextureService } from "../service/At
|
|
|
3
3
|
* @description アタッチメントを解放してプールに返却
|
|
4
4
|
* Release attachment and return to pool
|
|
5
5
|
*
|
|
6
|
-
* @param {IAttachmentObject[]}
|
|
7
|
-
* @param {Map<string, ITextureObject[]>}
|
|
8
|
-
* @param {IColorBufferObject[]}
|
|
9
|
-
* @param {IStencilBufferObject[]}
|
|
10
|
-
* @param {IAttachmentObject} attachment
|
|
6
|
+
* @param {IAttachmentObject[]} attachment_pool - アタッチメントプール
|
|
7
|
+
* @param {Map<string, ITextureObject[]>} texture_pool - テクスチャプール
|
|
8
|
+
* @param {IColorBufferObject[]} color_buffer_pool - カラーバッファプール
|
|
9
|
+
* @param {IStencilBufferObject[]} stencil_buffer_pool - ステンシルバッファプール
|
|
10
|
+
* @param {IAttachmentObject} attachment - 解放するアタッチメント
|
|
11
11
|
* @return {void}
|
|
12
12
|
* @method
|
|
13
13
|
* @protected
|
|
14
14
|
*/
|
|
15
|
-
export const execute = (
|
|
15
|
+
export const execute = (attachment_pool, texture_pool, color_buffer_pool, stencil_buffer_pool, attachment) => {
|
|
16
16
|
// テクスチャをプールに返却
|
|
17
17
|
if (attachment.texture) {
|
|
18
|
-
attachmentManagerReleaseTextureService(
|
|
18
|
+
attachmentManagerReleaseTextureService(texture_pool, attachment.texture);
|
|
19
19
|
attachment.texture = null;
|
|
20
20
|
}
|
|
21
21
|
// カラーバッファをプールに返却
|
|
22
22
|
if (attachment.color) {
|
|
23
|
-
|
|
23
|
+
color_buffer_pool.push(attachment.color);
|
|
24
24
|
attachment.color = null;
|
|
25
25
|
}
|
|
26
26
|
// ステンシルバッファをプールに返却
|
|
27
27
|
if (attachment.stencil) {
|
|
28
|
-
|
|
28
|
+
stencil_buffer_pool.push(attachment.stencil);
|
|
29
29
|
attachment.stencil = null;
|
|
30
30
|
}
|
|
31
31
|
// アタッチメントをプールに返却
|
|
32
|
-
|
|
32
|
+
attachment_pool.push(attachment);
|
|
33
33
|
};
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import type { IAttachmentObject } from "./interface/IAttachmentObject";
|
|
2
|
+
/**
|
|
3
|
+
* @description アタッチメントリソースのプール管理クラス
|
|
4
|
+
* Pool manager class for attachment resources
|
|
5
|
+
*/
|
|
2
6
|
export declare class AttachmentManager {
|
|
3
7
|
private device;
|
|
4
8
|
private attachmentPool;
|
|
@@ -6,14 +10,32 @@ export declare class AttachmentManager {
|
|
|
6
10
|
private colorBufferPool;
|
|
7
11
|
private stencilBufferPool;
|
|
8
12
|
private idCounter;
|
|
9
|
-
|
|
13
|
+
/**
|
|
14
|
+
* @description AttachmentManagerのコンストラクタ
|
|
15
|
+
* Constructor for AttachmentManager
|
|
16
|
+
* @param {GPUDevice} device - WebGPUデバイス / WebGPU device
|
|
17
|
+
*/
|
|
10
18
|
constructor(device: GPUDevice);
|
|
19
|
+
/**
|
|
20
|
+
* @description プールからアタッチメントオブジェクトを取得する
|
|
21
|
+
* Get an attachment object from the pool
|
|
22
|
+
* @param {number} width - テクスチャの幅 / Texture width
|
|
23
|
+
* @param {number} height - テクスチャの高さ / Texture height
|
|
24
|
+
* @param {boolean} [msaa=false] - MSAAを有効にするか / Whether to enable MSAA
|
|
25
|
+
* @return {IAttachmentObject}
|
|
26
|
+
*/
|
|
11
27
|
getAttachmentObject(width: number, height: number, msaa?: boolean): IAttachmentObject;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
28
|
+
/**
|
|
29
|
+
* @description アタッチメントをプールに返却する
|
|
30
|
+
* Release an attachment back to the pool
|
|
31
|
+
* @param {IAttachmentObject} attachment - 返却するアタッチメント / Attachment to release
|
|
32
|
+
* @return {void}
|
|
33
|
+
*/
|
|
16
34
|
releaseAttachment(attachment: IAttachmentObject): void;
|
|
17
|
-
|
|
35
|
+
/**
|
|
36
|
+
* @description 全リソースを破棄する
|
|
37
|
+
* Dispose all resources
|
|
38
|
+
* @return {void}
|
|
39
|
+
*/
|
|
18
40
|
dispose(): void;
|
|
19
41
|
}
|
package/src/AttachmentManager.js
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
import { execute as attachmentManagerGetAttachmentObjectUseCase } from "./AttachmentManager/usecase/AttachmentManagerGetAttachmentObjectUseCase";
|
|
2
2
|
import { execute as attachmentManagerReleaseAttachmentUseCase } from "./AttachmentManager/usecase/AttachmentManagerReleaseAttachmentUseCase";
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* @description アタッチメントリソースのプール管理クラス
|
|
5
|
+
* Pool manager class for attachment resources
|
|
6
|
+
*/
|
|
4
7
|
export class AttachmentManager {
|
|
8
|
+
/**
|
|
9
|
+
* @description AttachmentManagerのコンストラクタ
|
|
10
|
+
* Constructor for AttachmentManager
|
|
11
|
+
* @param {GPUDevice} device - WebGPUデバイス / WebGPU device
|
|
12
|
+
*/
|
|
5
13
|
constructor(device) {
|
|
6
14
|
Object.defineProperty(this, "device", {
|
|
7
15
|
enumerable: true,
|
|
@@ -39,41 +47,38 @@ export class AttachmentManager {
|
|
|
39
47
|
writable: true,
|
|
40
48
|
value: void 0
|
|
41
49
|
});
|
|
42
|
-
Object.defineProperty(this, "currentAttachment", {
|
|
43
|
-
enumerable: true,
|
|
44
|
-
configurable: true,
|
|
45
|
-
writable: true,
|
|
46
|
-
value: void 0
|
|
47
|
-
});
|
|
48
50
|
this.device = device;
|
|
49
51
|
this.attachmentPool = [];
|
|
50
52
|
this.texturePool = new Map();
|
|
51
53
|
this.colorBufferPool = [];
|
|
52
54
|
this.stencilBufferPool = [];
|
|
53
55
|
this.idCounter = { "attachmentId": 0, "textureId": 0, "stencilId": 0 };
|
|
54
|
-
this.currentAttachment = null;
|
|
55
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* @description プールからアタッチメントオブジェクトを取得する
|
|
59
|
+
* Get an attachment object from the pool
|
|
60
|
+
* @param {number} width - テクスチャの幅 / Texture width
|
|
61
|
+
* @param {number} height - テクスチャの高さ / Texture height
|
|
62
|
+
* @param {boolean} [msaa=false] - MSAAを有効にするか / Whether to enable MSAA
|
|
63
|
+
* @return {IAttachmentObject}
|
|
64
|
+
*/
|
|
56
65
|
getAttachmentObject(width, height, msaa = false) {
|
|
57
66
|
return attachmentManagerGetAttachmentObjectUseCase(this.device, this.attachmentPool, this.texturePool, this.colorBufferPool, this.stencilBufferPool, width, height, msaa, this.idCounter);
|
|
58
67
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
get currentAttachmentObject() {
|
|
66
|
-
return this.currentAttachment;
|
|
67
|
-
}
|
|
68
|
-
unbindAttachment() {
|
|
69
|
-
this.currentAttachment = null;
|
|
70
|
-
}
|
|
68
|
+
/**
|
|
69
|
+
* @description アタッチメントをプールに返却する
|
|
70
|
+
* Release an attachment back to the pool
|
|
71
|
+
* @param {IAttachmentObject} attachment - 返却するアタッチメント / Attachment to release
|
|
72
|
+
* @return {void}
|
|
73
|
+
*/
|
|
71
74
|
releaseAttachment(attachment) {
|
|
72
75
|
attachmentManagerReleaseAttachmentUseCase(this.attachmentPool, this.texturePool, this.colorBufferPool, this.stencilBufferPool, attachment);
|
|
73
76
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
+
/**
|
|
78
|
+
* @description 全リソースを破棄する
|
|
79
|
+
* Dispose all resources
|
|
80
|
+
* @return {void}
|
|
81
|
+
*/
|
|
77
82
|
dispose() {
|
|
78
83
|
for (const pool of this.texturePool.values()) {
|
|
79
84
|
for (const textureObj of pool) {
|
|
@@ -10,7 +10,13 @@
|
|
|
10
10
|
*
|
|
11
11
|
* これにより品質を維持しながら不要な計算を削減。
|
|
12
12
|
*/
|
|
13
|
-
|
|
13
|
+
/**
|
|
14
|
+
* @description 三次ベジェ曲線を適応的に二次ベジェ曲線群に変換する関数
|
|
15
|
+
* Function to adaptively convert cubic bezier to quadratic bezier segments
|
|
16
|
+
*/
|
|
17
|
+
export { execute as adaptiveCubicToQuad } from "./usecase/BezierConverterAdaptiveCubicToQuadUseCase";
|
|
18
|
+
/**
|
|
19
|
+
* @description 二次ベジェ曲線セグメントのインターフェース
|
|
20
|
+
* Interface for quadratic bezier curve segment
|
|
21
|
+
*/
|
|
14
22
|
export type { IQuadraticSegment } from "../interface/IQuadraticSegment";
|
|
15
|
-
export { execute as calculateFlatness } from "./service/BezierConverterCalculateFlatnessService";
|
|
16
|
-
export { execute as splitCubic } from "./service/BezierConverterSplitCubicService";
|
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
*
|
|
11
11
|
* これにより品質を維持しながら不要な計算を削減。
|
|
12
12
|
*/
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
/**
|
|
14
|
+
* @description 三次ベジェ曲線を適応的に二次ベジェ曲線群に変換する関数
|
|
15
|
+
* Function to adaptively convert cubic bezier to quadratic bezier segments
|
|
16
|
+
*/
|
|
17
|
+
export { execute as adaptiveCubicToQuad } from "./usecase/BezierConverterAdaptiveCubicToQuadUseCase";
|
|
@@ -12,18 +12,7 @@ export type { IQuadraticSegment };
|
|
|
12
12
|
* @param {IPoint} p1 - 制御点1
|
|
13
13
|
* @param {IPoint} p2 - 制御点2
|
|
14
14
|
* @param {IPoint} p3 - 終点
|
|
15
|
-
* @param {number}
|
|
15
|
+
* @param {number} flatness_threshold - フラットネス閾値(オプション)
|
|
16
16
|
* @return {IQuadraticSegment[]} 二次ベジェ曲線のセグメント配列
|
|
17
17
|
*/
|
|
18
|
-
export declare const execute: (p0: IPoint, p1: IPoint, p2: IPoint, p3: IPoint,
|
|
19
|
-
/**
|
|
20
|
-
* @description スケールに応じたフラットネス閾値を計算
|
|
21
|
-
* Calculate flatness threshold based on scale
|
|
22
|
-
*
|
|
23
|
-
* ズームレベルが高い場合は高品質な近似が必要。
|
|
24
|
-
* スケール = sqrt(matrix[0]^2 + matrix[1]^2) などで計算可能。
|
|
25
|
-
*
|
|
26
|
-
* @param {number} scale - 現在のスケール
|
|
27
|
-
* @return {number} 調整されたフラットネス閾値
|
|
28
|
-
*/
|
|
29
|
-
export declare const calculateAdaptiveThreshold: (scale: number) => number;
|
|
18
|
+
export declare const execute: (p0: IPoint, p1: IPoint, p2: IPoint, p3: IPoint, flatness_threshold?: number) => IQuadraticSegment[];
|
|
@@ -25,17 +25,26 @@ const MAX_RECURSION_DEPTH = 8;
|
|
|
25
25
|
* @param {IPoint} p1 - 制御点1
|
|
26
26
|
* @param {IPoint} p2 - 制御点2
|
|
27
27
|
* @param {IPoint} p3 - 終点
|
|
28
|
-
* @param {number}
|
|
28
|
+
* @param {number} flatness_threshold - フラットネス閾値(オプション)
|
|
29
29
|
* @return {IQuadraticSegment[]} 二次ベジェ曲線のセグメント配列
|
|
30
30
|
*/
|
|
31
|
-
export const execute = (p0, p1, p2, p3,
|
|
31
|
+
export const execute = (p0, p1, p2, p3, flatness_threshold = DEFAULT_FLATNESS_THRESHOLD) => {
|
|
32
32
|
const result = [];
|
|
33
|
-
|
|
33
|
+
/**
|
|
34
|
+
* @description 再帰的に三次ベジェ曲線を分割し、二次ベジェ曲線に近似する内部関数
|
|
35
|
+
* Internal recursive function that subdivides cubic bezier and approximates with quadratic bezier
|
|
36
|
+
* @param {IPoint} start - 始点
|
|
37
|
+
* @param {IPoint} ctrl1 - 制御点1
|
|
38
|
+
* @param {IPoint} ctrl2 - 制御点2
|
|
39
|
+
* @param {IPoint} end - 終点
|
|
40
|
+
* @param {number} depth - 現在の再帰深度
|
|
41
|
+
* @return {void}
|
|
42
|
+
*/
|
|
34
43
|
const subdivide = (start, ctrl1, ctrl2, end, depth) => {
|
|
35
44
|
// フラットネスを計算
|
|
36
45
|
const flatness = calculateFlatness(start, ctrl1, ctrl2, end);
|
|
37
46
|
// フラットネスが閾値以下、または最大深度に達した場合は近似
|
|
38
|
-
if (flatness <=
|
|
47
|
+
if (flatness <= flatness_threshold || depth >= MAX_RECURSION_DEPTH) {
|
|
39
48
|
// 三次ベジェを二次ベジェに近似
|
|
40
49
|
// WebGL版と同じ: 分割後は単純に2つの制御点の中点を使用
|
|
41
50
|
const ctrl = {
|
|
@@ -57,24 +66,3 @@ export const execute = (p0, p1, p2, p3, flatnessThreshold = DEFAULT_FLATNESS_THR
|
|
|
57
66
|
subdivide(p0, p1, p2, p3, 0);
|
|
58
67
|
return result;
|
|
59
68
|
};
|
|
60
|
-
/**
|
|
61
|
-
* @description スケールに応じたフラットネス閾値を計算
|
|
62
|
-
* Calculate flatness threshold based on scale
|
|
63
|
-
*
|
|
64
|
-
* ズームレベルが高い場合は高品質な近似が必要。
|
|
65
|
-
* スケール = sqrt(matrix[0]^2 + matrix[1]^2) などで計算可能。
|
|
66
|
-
*
|
|
67
|
-
* @param {number} scale - 現在のスケール
|
|
68
|
-
* @return {number} 調整されたフラットネス閾値
|
|
69
|
-
*/
|
|
70
|
-
export const calculateAdaptiveThreshold = (scale) => {
|
|
71
|
-
// スケールが大きい場合は閾値を小さくして高品質に
|
|
72
|
-
// スケールが小さい場合は閾値を大きくしてパフォーマンス優先
|
|
73
|
-
const baseThreshold = DEFAULT_FLATNESS_THRESHOLD;
|
|
74
|
-
// スケールの逆数に比例した閾値
|
|
75
|
-
// 最小値と最大値を設定して極端な値を防ぐ
|
|
76
|
-
const adjustedThreshold = baseThreshold / (scale * scale);
|
|
77
|
-
// 閾値の範囲を制限(0.0625〜4.0)
|
|
78
|
-
// 0.0625 = 0.25px squared, 4.0 = 2px squared
|
|
79
|
-
return Math.max(0.0625, Math.min(4.0, adjustedThreshold));
|
|
80
|
-
};
|
|
@@ -3,33 +3,37 @@ import type { IComplexBlendItem } from "../interface/IComplexBlendItem";
|
|
|
3
3
|
import { ShaderInstancedManager } from "../Shader/ShaderInstancedManager";
|
|
4
4
|
/**
|
|
5
5
|
* @description 複雑なブレンドモードの描画キューを取得
|
|
6
|
+
* Returns the queue of complex blend mode draw items
|
|
6
7
|
* @return {IComplexBlendItem[]}
|
|
7
8
|
*/
|
|
8
9
|
export declare const getComplexBlendQueue: () => IComplexBlendItem[];
|
|
9
10
|
/**
|
|
10
|
-
* @description
|
|
11
|
+
* @description 複雑なブレンドモードの描画キューをクリアし、プールへ返却する
|
|
12
|
+
* Clears the complex blend queue and returns arrays to their pools
|
|
11
13
|
* @return {void}
|
|
12
14
|
*/
|
|
13
15
|
export declare const clearComplexBlendQueue: () => void;
|
|
14
16
|
/**
|
|
15
|
-
* @description
|
|
17
|
+
* @description インスタンスシェーダーマネージャーを取得(なければ生成)
|
|
18
|
+
* Gets or creates the instanced shader manager
|
|
16
19
|
* @return {ShaderInstancedManager}
|
|
17
20
|
*/
|
|
18
21
|
export declare const getInstancedShaderManager: () => ShaderInstancedManager;
|
|
19
22
|
/**
|
|
20
|
-
* @description DisplayObject
|
|
21
|
-
*
|
|
22
|
-
* @param {
|
|
23
|
-
* @param {number}
|
|
24
|
-
* @param {number}
|
|
25
|
-
* @param {number}
|
|
26
|
-
* @param {
|
|
27
|
-
* @param {Float32Array}
|
|
28
|
-
* @param {
|
|
29
|
-
* @param {
|
|
30
|
-
* @param {number}
|
|
31
|
-
* @param {number}
|
|
32
|
-
* @param {number}
|
|
23
|
+
* @description DisplayObject単体の描画をインスタンス配列に追加する
|
|
24
|
+
* Adds a single DisplayObject's draw data to the instanced array
|
|
25
|
+
* @param {Node} node - テクスチャアトラスノード / Texture atlas node
|
|
26
|
+
* @param {number} x_min - バウンディングボックス左端 / Bounding box left edge
|
|
27
|
+
* @param {number} y_min - バウンディングボックス上端 / Bounding box top edge
|
|
28
|
+
* @param {number} x_max - バウンディングボックス右端 / Bounding box right edge
|
|
29
|
+
* @param {number} y_max - バウンディングボックス下端 / Bounding box bottom edge
|
|
30
|
+
* @param {Float32Array} color_transform - カラートランスフォーム配列 / Color transform array
|
|
31
|
+
* @param {Float32Array} matrix - 変換行列配列 / Transformation matrix array
|
|
32
|
+
* @param {string} blend_mode - ブレンドモード名 / Blend mode name
|
|
33
|
+
* @param {number} viewport_width - ビューポート幅 / Viewport width
|
|
34
|
+
* @param {number} viewport_height - ビューポート高さ / Viewport height
|
|
35
|
+
* @param {number} render_max_size - レンダーテクスチャ最大サイズ / Render texture max size
|
|
36
|
+
* @param {number} global_alpha - グローバルアルファ値 / Global alpha value
|
|
33
37
|
* @return {void}
|
|
34
38
|
*/
|
|
35
39
|
export declare const addDisplayObjectToInstanceArray: (node: Node, x_min: number, y_min: number, x_max: number, y_max: number, color_transform: Float32Array, matrix: Float32Array, blend_mode: string, viewport_width: number, viewport_height: number, render_max_size: number, global_alpha: number) => void;
|
|
@@ -5,31 +5,41 @@ import { renderQueue } from "@next2d/render-queue";
|
|
|
5
5
|
import { $context } from "../WebGPUUtil";
|
|
6
6
|
/**
|
|
7
7
|
* @description シンプルなブレンドモード(インスタンス描画可能)
|
|
8
|
+
* Simple blend modes that support instanced rendering
|
|
9
|
+
* @type {ReadonlySet<string>}
|
|
8
10
|
*/
|
|
9
|
-
const SIMPLE_BLEND_MODES = new Set([
|
|
11
|
+
const $SIMPLE_BLEND_MODES = new Set([
|
|
10
12
|
"normal", "layer", "add", "screen", "alpha", "erase", "copy"
|
|
11
13
|
]);
|
|
12
14
|
/**
|
|
13
15
|
* @description 複雑なブレンドモード描画キュー
|
|
16
|
+
* Queue for complex blend mode draw items
|
|
17
|
+
* @type {IComplexBlendItem[]}
|
|
14
18
|
*/
|
|
15
19
|
const $complexBlendQueue = [];
|
|
16
20
|
/**
|
|
17
21
|
* @description Float32Array(8) プール(color_transform 用)
|
|
22
|
+
* Object pool for Float32Array(8) used by color transforms
|
|
23
|
+
* @type {Float32Array[]}
|
|
18
24
|
*/
|
|
19
25
|
const $ct8Pool = [];
|
|
20
26
|
/**
|
|
21
27
|
* @description Float32Array(9) プール(matrix 用)
|
|
28
|
+
* Object pool for Float32Array(9) used by matrices
|
|
29
|
+
* @type {Float32Array[]}
|
|
22
30
|
*/
|
|
23
31
|
const $m9Pool = [];
|
|
24
32
|
/**
|
|
25
33
|
* @description 複雑なブレンドモードの描画キューを取得
|
|
34
|
+
* Returns the queue of complex blend mode draw items
|
|
26
35
|
* @return {IComplexBlendItem[]}
|
|
27
36
|
*/
|
|
28
37
|
export const getComplexBlendQueue = () => {
|
|
29
38
|
return $complexBlendQueue;
|
|
30
39
|
};
|
|
31
40
|
/**
|
|
32
|
-
* @description
|
|
41
|
+
* @description 複雑なブレンドモードの描画キューをクリアし、プールへ返却する
|
|
42
|
+
* Clears the complex blend queue and returns arrays to their pools
|
|
33
43
|
* @return {void}
|
|
34
44
|
*/
|
|
35
45
|
export const clearComplexBlendQueue = () => {
|
|
@@ -43,34 +53,37 @@ export const clearComplexBlendQueue = () => {
|
|
|
43
53
|
};
|
|
44
54
|
/**
|
|
45
55
|
* @description インスタンスシェーダーマネージャーのキャッシュ
|
|
46
|
-
*
|
|
56
|
+
* Cache map for instanced shader managers
|
|
57
|
+
* @type {Map<string, ShaderInstancedManager>}
|
|
47
58
|
*/
|
|
48
|
-
const shaderManagers = new Map();
|
|
59
|
+
const $shaderManagers = new Map();
|
|
49
60
|
/**
|
|
50
|
-
* @description
|
|
61
|
+
* @description インスタンスシェーダーマネージャーを取得(なければ生成)
|
|
62
|
+
* Gets or creates the instanced shader manager
|
|
51
63
|
* @return {ShaderInstancedManager}
|
|
52
64
|
*/
|
|
53
65
|
export const getInstancedShaderManager = () => {
|
|
54
66
|
const key = "blend_instanced";
|
|
55
|
-
if (
|
|
56
|
-
shaderManagers.set(key, new ShaderInstancedManager());
|
|
67
|
+
if (!$shaderManagers.has(key)) {
|
|
68
|
+
$shaderManagers.set(key, new ShaderInstancedManager());
|
|
57
69
|
}
|
|
58
|
-
return shaderManagers.get(key);
|
|
70
|
+
return $shaderManagers.get(key);
|
|
59
71
|
};
|
|
60
72
|
/**
|
|
61
|
-
* @description DisplayObject
|
|
62
|
-
*
|
|
63
|
-
* @param {
|
|
64
|
-
* @param {number}
|
|
65
|
-
* @param {number}
|
|
66
|
-
* @param {number}
|
|
67
|
-
* @param {
|
|
68
|
-
* @param {Float32Array}
|
|
69
|
-
* @param {
|
|
70
|
-
* @param {
|
|
71
|
-
* @param {number}
|
|
72
|
-
* @param {number}
|
|
73
|
-
* @param {number}
|
|
73
|
+
* @description DisplayObject単体の描画をインスタンス配列に追加する
|
|
74
|
+
* Adds a single DisplayObject's draw data to the instanced array
|
|
75
|
+
* @param {Node} node - テクスチャアトラスノード / Texture atlas node
|
|
76
|
+
* @param {number} x_min - バウンディングボックス左端 / Bounding box left edge
|
|
77
|
+
* @param {number} y_min - バウンディングボックス上端 / Bounding box top edge
|
|
78
|
+
* @param {number} x_max - バウンディングボックス右端 / Bounding box right edge
|
|
79
|
+
* @param {number} y_max - バウンディングボックス下端 / Bounding box bottom edge
|
|
80
|
+
* @param {Float32Array} color_transform - カラートランスフォーム配列 / Color transform array
|
|
81
|
+
* @param {Float32Array} matrix - 変換行列配列 / Transformation matrix array
|
|
82
|
+
* @param {string} blend_mode - ブレンドモード名 / Blend mode name
|
|
83
|
+
* @param {number} viewport_width - ビューポート幅 / Viewport width
|
|
84
|
+
* @param {number} viewport_height - ビューポート高さ / Viewport height
|
|
85
|
+
* @param {number} render_max_size - レンダーテクスチャ最大サイズ / Render texture max size
|
|
86
|
+
* @param {number} global_alpha - グローバルアルファ値 / Global alpha value
|
|
74
87
|
* @return {void}
|
|
75
88
|
*/
|
|
76
89
|
export const addDisplayObjectToInstanceArray = (node, x_min, y_min, x_max, y_max, color_transform, matrix, blend_mode, viewport_width, viewport_height, render_max_size, global_alpha) => {
|
|
@@ -83,7 +96,7 @@ export const addDisplayObjectToInstanceArray = (node, x_min, y_min, x_max, y_max
|
|
|
83
96
|
const ct5 = color_transform[5] / 255;
|
|
84
97
|
const ct6 = color_transform[6] / 255;
|
|
85
98
|
const ct7 = 0;
|
|
86
|
-
if (SIMPLE_BLEND_MODES.has(blend_mode)) {
|
|
99
|
+
if ($SIMPLE_BLEND_MODES.has(blend_mode)) {
|
|
87
100
|
// ブレンドモードまたはアトラスインデックスが変わった場合
|
|
88
101
|
if ($currentBlendMode !== blend_mode || $getCurrentAtlasIndex() !== node.index) {
|
|
89
102
|
// 異なるブレンドモード/アトラスになるので、切り替え前にバッチを描画
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import type { IAttachmentObject } from "../../interface/IAttachmentObject";
|
|
2
2
|
import type { IFilterConfig } from "../../interface/IFilterConfig";
|
|
3
3
|
/**
|
|
4
|
-
* @description
|
|
4
|
+
* @description 複雑なブレンドモードを適用し、ブレンド結果のアタッチメントを返す
|
|
5
|
+
* Applies a complex blend mode and returns the resulting attachment
|
|
6
|
+
* @param {IAttachmentObject} src_attachment - ソースアタッチメント / Source attachment
|
|
7
|
+
* @param {IAttachmentObject} dst_attachment - デスティネーションアタッチメント / Destination attachment
|
|
8
|
+
* @param {string} blend_mode - ブレンドモード名 / Blend mode name
|
|
9
|
+
* @param {Float32Array} color_transform - カラートランスフォーム配列 / Color transform array
|
|
10
|
+
* @param {IFilterConfig} config - フィルター設定 / Filter configuration
|
|
11
|
+
* @return {IAttachmentObject}
|
|
5
12
|
*/
|
|
6
|
-
export declare const execute: (
|
|
13
|
+
export declare const execute: (src_attachment: IAttachmentObject, dst_attachment: IAttachmentObject, blend_mode: string, color_transform: Float32Array, config: IFilterConfig) => IAttachmentObject;
|