@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
package/src/BufferManager.js
CHANGED
|
@@ -4,16 +4,20 @@ import { execute as bufferManagerAcquireUniformBufferUseCase } from "./BufferMan
|
|
|
4
4
|
import { execute as bufferManagerReleaseVertexBufferService } from "./BufferManager/service/BufferManagerReleaseVertexBufferService";
|
|
5
5
|
import { execute as bufferManagerReleaseUniformBufferService } from "./BufferManager/service/BufferManagerReleaseUniformBufferService";
|
|
6
6
|
import { execute as bufferManagerAcquireStorageBufferUseCase } from "./BufferManager/usecase/BufferManagerAcquireStorageBufferUseCase";
|
|
7
|
-
import { execute as releaseStorageBufferUseCase } from "./BufferManager/usecase/BufferManagerReleaseStorageBufferUseCase";
|
|
8
7
|
import { execute as cleanupStorageBuffersUseCase } from "./BufferManager/usecase/BufferManagerCleanupStorageBuffersUseCase";
|
|
9
8
|
import { execute as bufferManagerCreateIndirectBufferService } from "./BufferManager/service/BufferManagerCreateIndirectBufferService";
|
|
10
9
|
import { execute as updateIndirectBuffer } from "./BufferManager/service/BufferManagerUpdateIndirectBufferService";
|
|
11
10
|
/**
|
|
12
|
-
* @description
|
|
13
|
-
*
|
|
14
|
-
* BindGroup作成を1回に削減する。
|
|
11
|
+
* @description 動的Uniformバッファアロケータ。1フレーム内の全uniformデータを1本の大バッファにサブアロケートし、BindGroup作成を1回に削減
|
|
12
|
+
* Dynamic Uniform Buffer Allocator. Sub-allocates all uniform data within a frame into a single large buffer, reducing BindGroup creation to once
|
|
15
13
|
*/
|
|
16
14
|
export class DynamicUniformAllocator {
|
|
15
|
+
/**
|
|
16
|
+
* @description コンストラクタ。GPUデバイスとバッファ容量を設定
|
|
17
|
+
* Constructor. Sets up GPU device and buffer capacity
|
|
18
|
+
* @param {GPUDevice} device - WebGPUデバイス
|
|
19
|
+
* @param {number} capacity - 初期バッファ容量(バイト単位、デフォルト: 65536)
|
|
20
|
+
*/
|
|
17
21
|
constructor(device, capacity = 65536) {
|
|
18
22
|
Object.defineProperty(this, "device", {
|
|
19
23
|
enumerable: true,
|
|
@@ -75,8 +79,9 @@ export class DynamicUniformAllocator {
|
|
|
75
79
|
this.stagingFloat32 = new Float32Array(this.stagingBuffer);
|
|
76
80
|
}
|
|
77
81
|
/**
|
|
78
|
-
* @description
|
|
79
|
-
*
|
|
82
|
+
* @description フレーム開始時にオフセットをリセットし、前フレームの旧バッファを安全に破棄
|
|
83
|
+
* Reset offset at frame start and safely destroy old buffers from previous frame
|
|
84
|
+
* @return {void}
|
|
80
85
|
*/
|
|
81
86
|
resetFrame() {
|
|
82
87
|
this.offset = 0;
|
|
@@ -88,6 +93,8 @@ export class DynamicUniformAllocator {
|
|
|
88
93
|
}
|
|
89
94
|
/**
|
|
90
95
|
* @description バッファを取得(遅延生成)
|
|
96
|
+
* Get buffer with lazy initialization
|
|
97
|
+
* @return {GPUBuffer} GPUバッファ
|
|
91
98
|
*/
|
|
92
99
|
getBuffer() {
|
|
93
100
|
if (!this.buffer) {
|
|
@@ -99,10 +106,10 @@ export class DynamicUniformAllocator {
|
|
|
99
106
|
return this.buffer;
|
|
100
107
|
}
|
|
101
108
|
/**
|
|
102
|
-
* @description uniform
|
|
103
|
-
*
|
|
104
|
-
* @param data - 書き込むデータ
|
|
105
|
-
* @return アライメント済みオフセット(バイト単位)
|
|
109
|
+
* @description uniformデータをCPUステージングバッファにコピーし、アライメント済みオフセットを返す。実際のGPU書き込みはflush()で一括実行
|
|
110
|
+
* Copy uniform data to CPU staging buffer and return aligned offset. Actual GPU write is batched in flush()
|
|
111
|
+
* @param {Float32Array} data - 書き込むデータ
|
|
112
|
+
* @return {number} アライメント済みオフセット(バイト単位)
|
|
106
113
|
*/
|
|
107
114
|
allocate(data) {
|
|
108
115
|
// バッファの遅延生成
|
|
@@ -142,8 +149,9 @@ export class DynamicUniformAllocator {
|
|
|
142
149
|
return alignedOffset;
|
|
143
150
|
}
|
|
144
151
|
/**
|
|
145
|
-
* @description ステージングバッファの内容をGPU
|
|
146
|
-
* submit
|
|
152
|
+
* @description ステージングバッファの内容をGPUバッファに一括書き込み。submit前に1回だけ呼び出す
|
|
153
|
+
* Flush staging buffer content to GPU buffer in bulk. Call once before submit
|
|
154
|
+
* @return {void}
|
|
147
155
|
*/
|
|
148
156
|
flush() {
|
|
149
157
|
if (this.dirtyEnd > 0 && this.buffer) {
|
|
@@ -151,6 +159,11 @@ export class DynamicUniformAllocator {
|
|
|
151
159
|
this.dirtyEnd = 0;
|
|
152
160
|
}
|
|
153
161
|
}
|
|
162
|
+
/**
|
|
163
|
+
* @description バッファを破棄してリソースを解放
|
|
164
|
+
* Dispose buffers and release resources
|
|
165
|
+
* @return {void}
|
|
166
|
+
*/
|
|
154
167
|
dispose() {
|
|
155
168
|
if (this.buffer) {
|
|
156
169
|
this.buffer.destroy();
|
|
@@ -162,7 +175,16 @@ export class DynamicUniformAllocator {
|
|
|
162
175
|
this.pendingDestroyBuffers.length = 0;
|
|
163
176
|
}
|
|
164
177
|
}
|
|
178
|
+
/**
|
|
179
|
+
* @description GPUバッファの管理クラス。頂点・ユニフォーム・ストレージ・インダイレクトバッファのプール管理と再利用を提供
|
|
180
|
+
* GPU buffer management class. Provides pooling and reuse for vertex, uniform, storage, and indirect buffers
|
|
181
|
+
*/
|
|
165
182
|
export class BufferManager {
|
|
183
|
+
/**
|
|
184
|
+
* @description コンストラクタ。GPUデバイスを設定し、各種バッファプールを初期化
|
|
185
|
+
* Constructor. Sets up GPU device and initializes buffer pools
|
|
186
|
+
* @param {GPUDevice} device - WebGPUデバイス
|
|
187
|
+
*/
|
|
166
188
|
constructor(device) {
|
|
167
189
|
Object.defineProperty(this, "device", {
|
|
168
190
|
enumerable: true,
|
|
@@ -170,18 +192,6 @@ export class BufferManager {
|
|
|
170
192
|
writable: true,
|
|
171
193
|
value: void 0
|
|
172
194
|
});
|
|
173
|
-
Object.defineProperty(this, "vertexBuffers", {
|
|
174
|
-
enumerable: true,
|
|
175
|
-
configurable: true,
|
|
176
|
-
writable: true,
|
|
177
|
-
value: void 0
|
|
178
|
-
});
|
|
179
|
-
Object.defineProperty(this, "uniformBuffers", {
|
|
180
|
-
enumerable: true,
|
|
181
|
-
configurable: true,
|
|
182
|
-
writable: true,
|
|
183
|
-
value: void 0
|
|
184
|
-
});
|
|
185
195
|
Object.defineProperty(this, "vertexBufferBuckets", {
|
|
186
196
|
enumerable: true,
|
|
187
197
|
configurable: true,
|
|
@@ -200,12 +210,6 @@ export class BufferManager {
|
|
|
200
210
|
writable: true,
|
|
201
211
|
value: void 0
|
|
202
212
|
});
|
|
203
|
-
Object.defineProperty(this, "indirectBuffer", {
|
|
204
|
-
enumerable: true,
|
|
205
|
-
configurable: true,
|
|
206
|
-
writable: true,
|
|
207
|
-
value: void 0
|
|
208
|
-
});
|
|
209
213
|
Object.defineProperty(this, "indirectBufferPool", {
|
|
210
214
|
enumerable: true,
|
|
211
215
|
configurable: true,
|
|
@@ -249,12 +253,9 @@ export class BufferManager {
|
|
|
249
253
|
value: void 0
|
|
250
254
|
});
|
|
251
255
|
this.device = device;
|
|
252
|
-
this.vertexBuffers = new Map();
|
|
253
|
-
this.uniformBuffers = new Map();
|
|
254
256
|
this.vertexBufferBuckets = new Map();
|
|
255
257
|
this.uniformBufferBuckets = new Map();
|
|
256
258
|
this.storageBufferPool = [];
|
|
257
|
-
this.indirectBuffer = null;
|
|
258
259
|
this.indirectBufferPool = [];
|
|
259
260
|
this.frameIndirectBuffers = [];
|
|
260
261
|
this.frameNumber = 0;
|
|
@@ -263,90 +264,60 @@ export class BufferManager {
|
|
|
263
264
|
this.frameUniformPoolBuffers = [];
|
|
264
265
|
this.dynamicUniform = new DynamicUniformAllocator(device);
|
|
265
266
|
}
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
return buffer;
|
|
276
|
-
}
|
|
277
|
-
createUniformBuffer(name, size) {
|
|
278
|
-
const buffer = this.device.createBuffer({
|
|
279
|
-
"size": size,
|
|
280
|
-
"usage": GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST
|
|
281
|
-
});
|
|
282
|
-
this.uniformBuffers.set(name, buffer);
|
|
283
|
-
return buffer;
|
|
284
|
-
}
|
|
285
|
-
updateUniformBuffer(name, data) {
|
|
286
|
-
const buffer = this.uniformBuffers.get(name);
|
|
287
|
-
if (buffer) {
|
|
288
|
-
this.device.queue.writeBuffer(buffer, 0, data.buffer, data.byteOffset, data.byteLength);
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
getVertexBuffer(name) {
|
|
292
|
-
return this.vertexBuffers.get(name);
|
|
293
|
-
}
|
|
294
|
-
getUniformBuffer(name) {
|
|
295
|
-
return this.uniformBuffers.get(name);
|
|
296
|
-
}
|
|
267
|
+
/**
|
|
268
|
+
* @description 矩形の頂点データを作成
|
|
269
|
+
* Create rect vertices data
|
|
270
|
+
* @param {number} x - X座標
|
|
271
|
+
* @param {number} y - Y座標
|
|
272
|
+
* @param {number} width - 幅
|
|
273
|
+
* @param {number} height - 高さ
|
|
274
|
+
* @return {Float32Array} 矩形の頂点データ
|
|
275
|
+
*/
|
|
297
276
|
createRectVertices(x, y, width, height) {
|
|
298
277
|
return bufferManagerCreateRectVerticesService(x, y, width, height);
|
|
299
278
|
}
|
|
300
|
-
|
|
301
|
-
|
|
279
|
+
/**
|
|
280
|
+
* @description プールから頂点バッファを取得(または新規作成)
|
|
281
|
+
* Acquire vertex buffer from pool or create new one
|
|
282
|
+
* @param {number} required_size - 必要なバイトサイズ
|
|
283
|
+
* @param {Float32Array} [data] - 初期データ
|
|
284
|
+
* @return {GPUBuffer} 取得された頂点バッファ
|
|
285
|
+
*/
|
|
286
|
+
acquireVertexBuffer(required_size, data) {
|
|
287
|
+
const buffer = bufferManagerAcquireVertexBufferUseCase(this.device, this.vertexBufferBuckets, required_size, data);
|
|
302
288
|
this.frameVertexPoolBuffers.push(buffer);
|
|
303
289
|
return buffer;
|
|
304
290
|
}
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
291
|
+
/**
|
|
292
|
+
* @description プールからユニフォームバッファを取得(または新規作成)
|
|
293
|
+
* Acquire uniform buffer from pool or create new one
|
|
294
|
+
* @param {number} required_size - 必要なバイトサイズ
|
|
295
|
+
* @return {GPUBuffer} 取得されたユニフォームバッファ
|
|
296
|
+
*/
|
|
297
|
+
acquireUniformBuffer(required_size) {
|
|
298
|
+
const buffer = bufferManagerAcquireUniformBufferUseCase(this.device, this.uniformBufferBuckets, required_size);
|
|
310
299
|
this.frameUniformPoolBuffers.push(buffer);
|
|
311
300
|
return buffer;
|
|
312
301
|
}
|
|
313
302
|
/**
|
|
314
303
|
* @description Uniform Bufferの取得と書き込みを一括で行うヘルパー
|
|
315
|
-
* acquireUniformBuffer + writeBuffer
|
|
316
|
-
* @param data - 書き込むデータ
|
|
317
|
-
* @param
|
|
318
|
-
* @return GPUBuffer
|
|
304
|
+
* Helper to acquire and write uniform buffer in one call, combining acquireUniformBuffer + writeBuffer
|
|
305
|
+
* @param {Float32Array} data - 書き込むデータ
|
|
306
|
+
* @param {number} [byte_length] - 書き込みバイト数(省略時はdata.byteLength)
|
|
307
|
+
* @return {GPUBuffer} 取得されたユニフォームバッファ
|
|
319
308
|
*/
|
|
320
|
-
acquireAndWriteUniformBuffer(data,
|
|
321
|
-
const writeBytes =
|
|
309
|
+
acquireAndWriteUniformBuffer(data, byte_length) {
|
|
310
|
+
const writeBytes = byte_length ?? data.byteLength;
|
|
322
311
|
const buffer = this.acquireUniformBuffer(writeBytes);
|
|
323
312
|
this.device.queue.writeBuffer(buffer, 0, data.buffer, data.byteOffset, writeBytes);
|
|
324
313
|
return buffer;
|
|
325
314
|
}
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
if (vertexBuffer) {
|
|
332
|
-
vertexBuffer.destroy();
|
|
333
|
-
this.vertexBuffers.delete(name);
|
|
334
|
-
}
|
|
335
|
-
const uniformBuffer = this.uniformBuffers.get(name);
|
|
336
|
-
if (uniformBuffer) {
|
|
337
|
-
uniformBuffer.destroy();
|
|
338
|
-
this.uniformBuffers.delete(name);
|
|
339
|
-
}
|
|
340
|
-
}
|
|
315
|
+
/**
|
|
316
|
+
* @description 全バッファを破棄してリソースを解放
|
|
317
|
+
* Dispose all buffers and release resources
|
|
318
|
+
* @return {void}
|
|
319
|
+
*/
|
|
341
320
|
dispose() {
|
|
342
|
-
for (const buffer of this.vertexBuffers.values()) {
|
|
343
|
-
buffer.destroy();
|
|
344
|
-
}
|
|
345
|
-
this.vertexBuffers.clear();
|
|
346
|
-
for (const buffer of this.uniformBuffers.values()) {
|
|
347
|
-
buffer.destroy();
|
|
348
|
-
}
|
|
349
|
-
this.uniformBuffers.clear();
|
|
350
321
|
for (const bucket of this.vertexBufferBuckets.values()) {
|
|
351
322
|
for (const buffer of bucket) {
|
|
352
323
|
buffer.destroy();
|
|
@@ -363,10 +334,6 @@ export class BufferManager {
|
|
|
363
334
|
entry.buffer.destroy();
|
|
364
335
|
}
|
|
365
336
|
this.storageBufferPool = [];
|
|
366
|
-
if (this.indirectBuffer) {
|
|
367
|
-
this.indirectBuffer.destroy();
|
|
368
|
-
this.indirectBuffer = null;
|
|
369
|
-
}
|
|
370
337
|
for (const buffer of this.indirectBufferPool) {
|
|
371
338
|
buffer.destroy();
|
|
372
339
|
}
|
|
@@ -383,29 +350,12 @@ export class BufferManager {
|
|
|
383
350
|
this.frameUniformPoolBuffers.length = 0;
|
|
384
351
|
this.dynamicUniform.dispose();
|
|
385
352
|
}
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
let uniformCount = 0;
|
|
392
|
-
for (const bucket of this.uniformBufferBuckets.values()) {
|
|
393
|
-
uniformCount += bucket.length;
|
|
394
|
-
}
|
|
395
|
-
return {
|
|
396
|
-
"vertexPoolSize": vertexCount,
|
|
397
|
-
"uniformPoolSize": uniformCount
|
|
398
|
-
};
|
|
399
|
-
}
|
|
353
|
+
/**
|
|
354
|
+
* @description フレーム内で使用したバッファをクリアし、プールに返却
|
|
355
|
+
* Clear frame buffers and return them to pool
|
|
356
|
+
* @return {void}
|
|
357
|
+
*/
|
|
400
358
|
clearFrameBuffers() {
|
|
401
|
-
for (const buffer of this.vertexBuffers.values()) {
|
|
402
|
-
buffer.destroy();
|
|
403
|
-
}
|
|
404
|
-
this.vertexBuffers.clear();
|
|
405
|
-
for (const buffer of this.uniformBuffers.values()) {
|
|
406
|
-
buffer.destroy();
|
|
407
|
-
}
|
|
408
|
-
this.uniformBuffers.clear();
|
|
409
359
|
// フレーム内で取得したプールバッファをプールに返却
|
|
410
360
|
for (const buffer of this.frameVertexPoolBuffers) {
|
|
411
361
|
bufferManagerReleaseVertexBufferService(this.vertexBufferBuckets, buffer);
|
|
@@ -427,40 +377,60 @@ export class BufferManager {
|
|
|
427
377
|
cleanupStorageBuffersUseCase(this.storageBufferPool, this.frameNumber);
|
|
428
378
|
}
|
|
429
379
|
}
|
|
380
|
+
/**
|
|
381
|
+
* @description 全てのStorage Bufferを未使用状態に戻す
|
|
382
|
+
* Mark all storage buffers as not in use
|
|
383
|
+
* @return {void}
|
|
384
|
+
*/
|
|
430
385
|
releaseAllStorageBuffers() {
|
|
431
386
|
for (const entry of this.storageBufferPool) {
|
|
432
387
|
entry.inUse = false;
|
|
433
388
|
}
|
|
434
389
|
}
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
390
|
+
/**
|
|
391
|
+
* @description プールからStorage Bufferを取得(または新規作成)
|
|
392
|
+
* Acquire storage buffer from pool or create new one
|
|
393
|
+
* @param {number} required_size - 必要なバイトサイズ
|
|
394
|
+
* @return {GPUBuffer} 取得されたStorage Buffer
|
|
395
|
+
*/
|
|
396
|
+
acquireStorageBuffer(required_size) {
|
|
397
|
+
return bufferManagerAcquireStorageBufferUseCase(this.device, this.storageBufferPool, required_size, this.frameNumber);
|
|
440
398
|
}
|
|
399
|
+
/**
|
|
400
|
+
* @description Storage Bufferにデータを書き込む
|
|
401
|
+
* Write data to storage buffer
|
|
402
|
+
* @param {GPUBuffer} buffer - 書き込み先バッファ
|
|
403
|
+
* @param {Float32Array | Uint32Array} data - 書き込むデータ
|
|
404
|
+
* @return {void}
|
|
405
|
+
*/
|
|
441
406
|
writeStorageBuffer(buffer, data) {
|
|
442
407
|
this.device.queue.writeBuffer(buffer, 0, data.buffer, data.byteOffset, data.byteLength);
|
|
443
408
|
}
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
createIndirectBuffer(
|
|
409
|
+
/**
|
|
410
|
+
* @description 新しいIndirect Bufferを作成(プールから再利用または新規作成)
|
|
411
|
+
* Create new indirect buffer (reuse from pool or create new)
|
|
412
|
+
* @param {number} vertex_count - 頂点数
|
|
413
|
+
* @param {number} instance_count - インスタンス数
|
|
414
|
+
* @param {number} first_vertex - 開始頂点インデックス
|
|
415
|
+
* @param {number} first_instance - 開始インスタンスインデックス
|
|
416
|
+
* @return {GPUBuffer} 作成されたIndirect Buffer
|
|
417
|
+
*/
|
|
418
|
+
createIndirectBuffer(vertex_count, instance_count, first_vertex = 0, first_instance = 0) {
|
|
454
419
|
let buffer = this.indirectBufferPool.pop();
|
|
455
420
|
if (buffer) {
|
|
456
|
-
updateIndirectBuffer(this.device, buffer,
|
|
421
|
+
updateIndirectBuffer(this.device, buffer, vertex_count, instance_count, first_vertex, first_instance);
|
|
457
422
|
}
|
|
458
423
|
else {
|
|
459
|
-
buffer = bufferManagerCreateIndirectBufferService(this.device,
|
|
424
|
+
buffer = bufferManagerCreateIndirectBufferService(this.device, vertex_count, instance_count, first_vertex, first_instance);
|
|
460
425
|
}
|
|
461
426
|
this.frameIndirectBuffers.push(buffer);
|
|
462
427
|
return buffer;
|
|
463
428
|
}
|
|
429
|
+
/**
|
|
430
|
+
* @description 単位矩形(0,0,1,1)の頂点バッファを取得(遅延生成)
|
|
431
|
+
* Get unit rect (0,0,1,1) vertex buffer with lazy creation
|
|
432
|
+
* @return {GPUBuffer} 単位矩形の頂点バッファ
|
|
433
|
+
*/
|
|
464
434
|
getUnitRectBuffer() {
|
|
465
435
|
if (!this.unitRectBuffer) {
|
|
466
436
|
const vertices = this.createRectVertices(0, 0, 1, 1);
|
|
@@ -474,14 +444,4 @@ export class BufferManager {
|
|
|
474
444
|
}
|
|
475
445
|
return this.unitRectBuffer;
|
|
476
446
|
}
|
|
477
|
-
getFrameNumber() {
|
|
478
|
-
return this.frameNumber;
|
|
479
|
-
}
|
|
480
|
-
getStoragePoolStats() {
|
|
481
|
-
const inUse = this.storageBufferPool.filter((e) => e.inUse).length;
|
|
482
|
-
return {
|
|
483
|
-
"storagePoolSize": this.storageBufferPool.length,
|
|
484
|
-
"storagePoolInUse": inUse
|
|
485
|
-
};
|
|
486
|
-
}
|
|
487
447
|
}
|
|
@@ -1 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description ビットマップ行列とコンテキスト行列からテクスチャマッピング用の逆行列を計算する
|
|
3
|
+
* Computes the inverse matrix for texture mapping from bitmap and context matrices
|
|
4
|
+
* @param {Float32Array} bitmap_matrix ビットマップ変換行列 / Bitmap transformation matrix
|
|
5
|
+
* @param {Float32Array} context_matrix コンテキスト変換行列 / Context transformation matrix
|
|
6
|
+
* @return {Float32Array} 列優先形式の3x3逆行列 / Column-major 3x3 inverse matrix
|
|
7
|
+
*/
|
|
1
8
|
export declare const execute: (bitmap_matrix: Float32Array, context_matrix: Float32Array) => Float32Array;
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description ビットマップ行列とコンテキスト行列からテクスチャマッピング用の逆行列を計算する
|
|
3
|
+
* Computes the inverse matrix for texture mapping from bitmap and context matrices
|
|
4
|
+
* @param {Float32Array} bitmap_matrix ビットマップ変換行列 / Bitmap transformation matrix
|
|
5
|
+
* @param {Float32Array} context_matrix コンテキスト変換行列 / Context transformation matrix
|
|
6
|
+
* @return {Float32Array} 列優先形式の3x3逆行列 / Column-major 3x3 inverse matrix
|
|
7
|
+
*/
|
|
1
8
|
export const execute = (bitmap_matrix, context_matrix) => {
|
|
2
9
|
// ビットマップ行列 [a, b, c, d, tx, ty]
|
|
3
10
|
const ba = bitmap_matrix[0];
|
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @description グラデーション行列からグラデーション描画用の逆行列とリニアポイントを計算する
|
|
3
|
+
* Computes inverse matrix and linear points for gradient rendering from gradient matrix
|
|
4
|
+
* @param {Float32Array} gradient_matrix グラデーション変換行列 / Gradient transformation matrix
|
|
5
|
+
* @param {Float32Array} _context_matrix コンテキスト変換行列(未使用) / Context transformation matrix (unused)
|
|
6
|
+
* @param {number} type グラデーションタイプ (0: linear, 1: radial) / Gradient type (0: linear, 1: radial)
|
|
7
|
+
* @return {{ inverseMatrix: Float32Array; linearPoints: Float32Array | null }} 逆行列とリニアポイント / Inverse matrix and linear points
|
|
8
|
+
*/
|
|
9
|
+
export declare const execute: (gradient_matrix: Float32Array, _context_matrix: Float32Array, type: number) => {
|
|
2
10
|
inverseMatrix: Float32Array;
|
|
3
11
|
linearPoints: Float32Array | null;
|
|
4
12
|
};
|
|
@@ -1,11 +1,19 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @description グラデーション行列からグラデーション描画用の逆行列とリニアポイントを計算する
|
|
3
|
+
* Computes inverse matrix and linear points for gradient rendering from gradient matrix
|
|
4
|
+
* @param {Float32Array} gradient_matrix グラデーション変換行列 / Gradient transformation matrix
|
|
5
|
+
* @param {Float32Array} _context_matrix コンテキスト変換行列(未使用) / Context transformation matrix (unused)
|
|
6
|
+
* @param {number} type グラデーションタイプ (0: linear, 1: radial) / Gradient type (0: linear, 1: radial)
|
|
7
|
+
* @return {{ inverseMatrix: Float32Array; linearPoints: Float32Array | null }} 逆行列とリニアポイント / Inverse matrix and linear points
|
|
8
|
+
*/
|
|
9
|
+
export const execute = (gradient_matrix, _context_matrix, type) => {
|
|
2
10
|
// グラデーション行列
|
|
3
|
-
const ga =
|
|
4
|
-
const gb =
|
|
5
|
-
const gc =
|
|
6
|
-
const gd =
|
|
7
|
-
const gtx =
|
|
8
|
-
const gty =
|
|
11
|
+
const ga = gradient_matrix[0];
|
|
12
|
+
const gb = gradient_matrix[1];
|
|
13
|
+
const gc = gradient_matrix[2];
|
|
14
|
+
const gd = gradient_matrix[3];
|
|
15
|
+
const gtx = gradient_matrix[4];
|
|
16
|
+
const gty = gradient_matrix[5];
|
|
9
17
|
if (type === 0) {
|
|
10
18
|
// === Linear gradient ===
|
|
11
19
|
// WebGL版と同じ: $linearGradientXY(matrix)で点a, bを計算
|
|
@@ -1,2 +1,16 @@
|
|
|
1
1
|
import type { PipelineManager } from "../../Shader/PipelineManager";
|
|
2
|
+
/**
|
|
3
|
+
* @description シンプルなフィル描画を実行する
|
|
4
|
+
* Executes simple fill rendering
|
|
5
|
+
* @param {GPURenderPassEncoder} render_pass_encoder レンダーパスエンコーダ / Render pass encoder
|
|
6
|
+
* @param {PipelineManager} pipeline_manager パイプラインマネージャ / Pipeline manager
|
|
7
|
+
* @param {GPUBuffer} vertex_buffer 頂点バッファ / Vertex buffer
|
|
8
|
+
* @param {number} vertex_count 頂点数 / Vertex count
|
|
9
|
+
* @param {GPUBindGroup} bind_group バインドグループ / Bind group
|
|
10
|
+
* @param {number} uniform_offset ユニフォームオフセット / Uniform offset
|
|
11
|
+
* @param {boolean} use_atlas_target アトラスターゲット使用フラグ / Whether to use atlas target
|
|
12
|
+
* @param {boolean} use_stencil_pipeline ステンシルパイプライン使用フラグ / Whether to use stencil pipeline
|
|
13
|
+
* @param {number} _clip_level クリップレベル(未使用) / Clip level (unused)
|
|
14
|
+
* @return {void}
|
|
15
|
+
*/
|
|
2
16
|
export declare const execute: (render_pass_encoder: GPURenderPassEncoder, pipeline_manager: PipelineManager, vertex_buffer: GPUBuffer, vertex_count: number, bind_group: GPUBindGroup, uniform_offset: number, use_atlas_target: boolean, use_stencil_pipeline?: boolean, _clip_level?: number) => void;
|
|
@@ -1,4 +1,18 @@
|
|
|
1
1
|
import { $isMaskDrawing, $getMaskStencilReference } from "../../Mask";
|
|
2
|
+
/**
|
|
3
|
+
* @description シンプルなフィル描画を実行する
|
|
4
|
+
* Executes simple fill rendering
|
|
5
|
+
* @param {GPURenderPassEncoder} render_pass_encoder レンダーパスエンコーダ / Render pass encoder
|
|
6
|
+
* @param {PipelineManager} pipeline_manager パイプラインマネージャ / Pipeline manager
|
|
7
|
+
* @param {GPUBuffer} vertex_buffer 頂点バッファ / Vertex buffer
|
|
8
|
+
* @param {number} vertex_count 頂点数 / Vertex count
|
|
9
|
+
* @param {GPUBindGroup} bind_group バインドグループ / Bind group
|
|
10
|
+
* @param {number} uniform_offset ユニフォームオフセット / Uniform offset
|
|
11
|
+
* @param {boolean} use_atlas_target アトラスターゲット使用フラグ / Whether to use atlas target
|
|
12
|
+
* @param {boolean} use_stencil_pipeline ステンシルパイプライン使用フラグ / Whether to use stencil pipeline
|
|
13
|
+
* @param {number} _clip_level クリップレベル(未使用) / Clip level (unused)
|
|
14
|
+
* @return {void}
|
|
15
|
+
*/
|
|
2
16
|
export const execute = (render_pass_encoder, pipeline_manager, vertex_buffer, vertex_count, bind_group, uniform_offset, use_atlas_target, use_stencil_pipeline = false, _clip_level = 1) => {
|
|
3
17
|
let pipelineName;
|
|
4
18
|
if (use_atlas_target) {
|
|
@@ -1,2 +1,13 @@
|
|
|
1
1
|
import type { PipelineManager } from "../../Shader/PipelineManager";
|
|
2
|
+
/**
|
|
3
|
+
* @description メインキャンバス向けのステンシル書き込みとフィル描画を2パスで実行する
|
|
4
|
+
* Executes two-pass stencil write and fill rendering for the main canvas
|
|
5
|
+
* @param {GPURenderPassEncoder} render_pass_encoder レンダーパスエンコーダ / Render pass encoder
|
|
6
|
+
* @param {PipelineManager} pipeline_manager パイプラインマネージャ / Pipeline manager
|
|
7
|
+
* @param {GPUBuffer} vertex_buffer 頂点バッファ / Vertex buffer
|
|
8
|
+
* @param {number} vertex_count 頂点数 / Vertex count
|
|
9
|
+
* @param {GPUBindGroup} bind_group バインドグループ / Bind group
|
|
10
|
+
* @param {number} uniform_offset ユニフォームオフセット / Uniform offset
|
|
11
|
+
* @return {void}
|
|
12
|
+
*/
|
|
2
13
|
export declare const execute: (render_pass_encoder: GPURenderPassEncoder, pipeline_manager: PipelineManager, vertex_buffer: GPUBuffer, vertex_count: number, bind_group: GPUBindGroup, uniform_offset: number) => void;
|
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description メインキャンバス向けのステンシル書き込みとフィル描画を2パスで実行する
|
|
3
|
+
* Executes two-pass stencil write and fill rendering for the main canvas
|
|
4
|
+
* @param {GPURenderPassEncoder} render_pass_encoder レンダーパスエンコーダ / Render pass encoder
|
|
5
|
+
* @param {PipelineManager} pipeline_manager パイプラインマネージャ / Pipeline manager
|
|
6
|
+
* @param {GPUBuffer} vertex_buffer 頂点バッファ / Vertex buffer
|
|
7
|
+
* @param {number} vertex_count 頂点数 / Vertex count
|
|
8
|
+
* @param {GPUBindGroup} bind_group バインドグループ / Bind group
|
|
9
|
+
* @param {number} uniform_offset ユニフォームオフセット / Uniform offset
|
|
10
|
+
* @return {void}
|
|
11
|
+
*/
|
|
1
12
|
export const execute = (render_pass_encoder, pipeline_manager, vertex_buffer, vertex_count, bind_group, uniform_offset) => {
|
|
2
13
|
// === Pass 1: ステンシル書き込み(両面を1回で処理) ===
|
|
3
14
|
const stencilWritePipeline = pipeline_manager.getPipeline("stencil_write_main");
|
|
@@ -1,2 +1,13 @@
|
|
|
1
1
|
import type { PipelineManager } from "../../Shader/PipelineManager";
|
|
2
|
+
/**
|
|
3
|
+
* @description アトラスターゲット向けのステンシル書き込みとフィル描画を2パスで実行する
|
|
4
|
+
* Executes two-pass stencil write and fill rendering for the atlas target
|
|
5
|
+
* @param {GPURenderPassEncoder} render_pass_encoder レンダーパスエンコーダ / Render pass encoder
|
|
6
|
+
* @param {PipelineManager} pipeline_manager パイプラインマネージャ / Pipeline manager
|
|
7
|
+
* @param {GPUBuffer} vertex_buffer 頂点バッファ / Vertex buffer
|
|
8
|
+
* @param {number} vertex_count 頂点数 / Vertex count
|
|
9
|
+
* @param {GPUBindGroup} bind_group バインドグループ / Bind group
|
|
10
|
+
* @param {number} uniform_offset ユニフォームオフセット / Uniform offset
|
|
11
|
+
* @return {void}
|
|
12
|
+
*/
|
|
2
13
|
export declare const execute: (render_pass_encoder: GPURenderPassEncoder, pipeline_manager: PipelineManager, vertex_buffer: GPUBuffer, vertex_count: number, bind_group: GPUBindGroup, uniform_offset: number) => void;
|
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description アトラスターゲット向けのステンシル書き込みとフィル描画を2パスで実行する
|
|
3
|
+
* Executes two-pass stencil write and fill rendering for the atlas target
|
|
4
|
+
* @param {GPURenderPassEncoder} render_pass_encoder レンダーパスエンコーダ / Render pass encoder
|
|
5
|
+
* @param {PipelineManager} pipeline_manager パイプラインマネージャ / Pipeline manager
|
|
6
|
+
* @param {GPUBuffer} vertex_buffer 頂点バッファ / Vertex buffer
|
|
7
|
+
* @param {number} vertex_count 頂点数 / Vertex count
|
|
8
|
+
* @param {GPUBindGroup} bind_group バインドグループ / Bind group
|
|
9
|
+
* @param {number} uniform_offset ユニフォームオフセット / Uniform offset
|
|
10
|
+
* @return {void}
|
|
11
|
+
*/
|
|
1
12
|
export const execute = (render_pass_encoder, pipeline_manager, vertex_buffer, vertex_count, bind_group, uniform_offset) => {
|
|
2
13
|
// === Pass 1: ステンシル書き込み(両面を1回で処理) ===
|
|
3
14
|
const stencilWritePipeline = pipeline_manager.getPipeline("stencil_write_atlas");
|
|
@@ -2,4 +2,21 @@ import type { Node } from "@next2d/texture-packer";
|
|
|
2
2
|
import type { IBlendMode } from "../../interface/IBlendMode";
|
|
3
3
|
import type { ILocalFilterConfig } from "../../interface/ILocalFilterConfig";
|
|
4
4
|
import type { BufferManager } from "../../BufferManager";
|
|
5
|
+
/**
|
|
6
|
+
* @description フィルターを適用してメインキャンバスに描画する
|
|
7
|
+
* Applies filters and draws the result to the main canvas
|
|
8
|
+
* @param {Node} node テクスチャパッカーノード / Texture packer node
|
|
9
|
+
* @param {number} width 幅 / Width
|
|
10
|
+
* @param {number} height 高さ / Height
|
|
11
|
+
* @param {boolean} is_bitmap ビットマップフラグ / Whether the source is a bitmap
|
|
12
|
+
* @param {Float32Array} matrix 変換行列 / Transformation matrix
|
|
13
|
+
* @param {Float32Array} color_transform カラートランスフォーム配列 / Color transform array
|
|
14
|
+
* @param {IBlendMode} blend_mode ブレンドモード / Blend mode
|
|
15
|
+
* @param {Float32Array} bounds バウンディングボックス / Bounding box
|
|
16
|
+
* @param {Float32Array} params フィルターパラメータ配列 / Filter parameters array
|
|
17
|
+
* @param {ILocalFilterConfig} config フィルター設定 / Filter configuration
|
|
18
|
+
* @param {GPUTextureView} main_texture_view メインテクスチャビュー / Main texture view
|
|
19
|
+
* @param {BufferManager} buffer_manager バッファマネージャ / Buffer manager
|
|
20
|
+
* @return {void}
|
|
21
|
+
*/
|
|
5
22
|
export declare const execute: (node: Node, width: number, height: number, is_bitmap: boolean, matrix: Float32Array, color_transform: Float32Array, blend_mode: IBlendMode, bounds: Float32Array, params: Float32Array, config: ILocalFilterConfig, main_texture_view: GPUTextureView, buffer_manager: BufferManager) => void;
|