@next2d/webgpu 3.0.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/LICENSE +21 -0
- package/README.md +574 -0
- package/package.json +30 -0
- package/src/AtlasManager.d.ts +23 -0
- package/src/AtlasManager.js +123 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateAttachmentObjectService.d.ts +13 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateAttachmentObjectService.js +24 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateColorBufferService.d.ts +15 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateColorBufferService.js +31 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateRenderPassDescriptorService.d.ts +5 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateRenderPassDescriptorService.js +42 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateStencilBufferService.d.ts +16 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateStencilBufferService.js +28 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateTextureObjectService.d.ts +17 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateTextureObjectService.js +33 -0
- package/src/AttachmentManager/service/AttachmentManagerGetColorBufferService.d.ts +16 -0
- package/src/AttachmentManager/service/AttachmentManagerGetColorBufferService.js +28 -0
- package/src/AttachmentManager/service/AttachmentManagerGetStencilBufferService.d.ts +17 -0
- package/src/AttachmentManager/service/AttachmentManagerGetStencilBufferService.js +27 -0
- package/src/AttachmentManager/service/AttachmentManagerGetTextureService.d.ts +18 -0
- package/src/AttachmentManager/service/AttachmentManagerGetTextureService.js +27 -0
- package/src/AttachmentManager/service/AttachmentManagerReleaseTextureService.d.ts +12 -0
- package/src/AttachmentManager/service/AttachmentManagerReleaseTextureService.js +17 -0
- package/src/AttachmentManager/usecase/AttachmentManagerGetAttachmentObjectUseCase.d.ts +26 -0
- package/src/AttachmentManager/usecase/AttachmentManagerGetAttachmentObjectUseCase.js +43 -0
- package/src/AttachmentManager/usecase/AttachmentManagerReleaseAttachmentUseCase.d.ts +18 -0
- package/src/AttachmentManager/usecase/AttachmentManagerReleaseAttachmentUseCase.js +33 -0
- package/src/AttachmentManager.d.ts +19 -0
- package/src/AttachmentManager.js +105 -0
- package/src/BezierConverter/BezierConverter.d.ts +16 -0
- package/src/BezierConverter/BezierConverter.js +15 -0
- package/src/BezierConverter/service/BezierConverterCalculateFlatnessService.d.ts +15 -0
- package/src/BezierConverter/service/BezierConverterCalculateFlatnessService.js +37 -0
- package/src/BezierConverter/service/BezierConverterSplitCubicService.d.ts +15 -0
- package/src/BezierConverter/service/BezierConverterSplitCubicService.js +47 -0
- package/src/BezierConverter/usecase/BezierConverterAdaptiveCubicToQuadUseCase.d.ts +29 -0
- package/src/BezierConverter/usecase/BezierConverterAdaptiveCubicToQuadUseCase.js +80 -0
- package/src/Blend/BlendInstancedManager.d.ts +35 -0
- package/src/Blend/BlendInstancedManager.js +147 -0
- package/src/Blend/service/BlendAddService.d.ts +1 -0
- package/src/Blend/service/BlendAddService.js +8 -0
- package/src/Blend/service/BlendAlphaService.d.ts +1 -0
- package/src/Blend/service/BlendAlphaService.js +8 -0
- package/src/Blend/service/BlendEraseService.d.ts +1 -0
- package/src/Blend/service/BlendEraseService.js +8 -0
- package/src/Blend/service/BlendGetStateService.d.ts +12 -0
- package/src/Blend/service/BlendGetStateService.js +13 -0
- package/src/Blend/service/BlendOneZeroService.d.ts +1 -0
- package/src/Blend/service/BlendOneZeroService.js +8 -0
- package/src/Blend/service/BlendResetService.d.ts +1 -0
- package/src/Blend/service/BlendResetService.js +8 -0
- package/src/Blend/service/BlendScreenService.d.ts +1 -0
- package/src/Blend/service/BlendScreenService.js +8 -0
- package/src/Blend/service/BlendSetModeService.d.ts +2 -0
- package/src/Blend/service/BlendSetModeService.js +4 -0
- package/src/Blend/usecase/BlendApplyComplexBlendUseCase.d.ts +6 -0
- package/src/Blend/usecase/BlendApplyComplexBlendUseCase.js +79 -0
- package/src/Blend/usecase/BlendOperationUseCase.d.ts +11 -0
- package/src/Blend/usecase/BlendOperationUseCase.js +31 -0
- package/src/Blend.d.ts +8 -0
- package/src/Blend.js +91 -0
- package/src/BufferManager/service/BufferManagerCreateIndirectBufferService.d.ts +15 -0
- package/src/BufferManager/service/BufferManagerCreateIndirectBufferService.js +37 -0
- package/src/BufferManager/service/BufferManagerCreateRectVerticesService.d.ts +13 -0
- package/src/BufferManager/service/BufferManagerCreateRectVerticesService.js +23 -0
- package/src/BufferManager/service/BufferManagerCreateStorageBufferService.d.ts +17 -0
- package/src/BufferManager/service/BufferManagerCreateStorageBufferService.js +23 -0
- package/src/BufferManager/service/BufferManagerReleaseUniformBufferService.d.ts +12 -0
- package/src/BufferManager/service/BufferManagerReleaseUniformBufferService.js +32 -0
- package/src/BufferManager/service/BufferManagerReleaseVertexBufferService.d.ts +12 -0
- package/src/BufferManager/service/BufferManagerReleaseVertexBufferService.js +32 -0
- package/src/BufferManager/service/BufferManagerUpdateIndirectBufferService.d.ts +12 -0
- package/src/BufferManager/service/BufferManagerUpdateIndirectBufferService.js +20 -0
- package/src/BufferManager/service/BufferManagerUpperPowerOfTwoService.d.ts +10 -0
- package/src/BufferManager/service/BufferManagerUpperPowerOfTwoService.js +18 -0
- package/src/BufferManager/usecase/BufferManagerAcquireStorageBufferUseCase.d.ts +15 -0
- package/src/BufferManager/usecase/BufferManagerAcquireStorageBufferUseCase.js +51 -0
- package/src/BufferManager/usecase/BufferManagerAcquireUniformBufferUseCase.d.ts +13 -0
- package/src/BufferManager/usecase/BufferManagerAcquireUniformBufferUseCase.js +26 -0
- package/src/BufferManager/usecase/BufferManagerAcquireVertexBufferUseCase.d.ts +14 -0
- package/src/BufferManager/usecase/BufferManagerAcquireVertexBufferUseCase.js +46 -0
- package/src/BufferManager/usecase/BufferManagerCleanupStorageBuffersUseCase.d.ts +12 -0
- package/src/BufferManager/usecase/BufferManagerCleanupStorageBuffersUseCase.js +20 -0
- package/src/BufferManager/usecase/BufferManagerReleaseStorageBufferUseCase.d.ts +9 -0
- package/src/BufferManager/usecase/BufferManagerReleaseStorageBufferUseCase.js +15 -0
- package/src/BufferManager.d.ts +93 -0
- package/src/BufferManager.js +487 -0
- package/src/Compute/ComputePipelineManager.d.ts +61 -0
- package/src/Compute/ComputePipelineManager.js +313 -0
- package/src/Compute/service/ComputeExecuteBlurService.d.ts +21 -0
- package/src/Compute/service/ComputeExecuteBlurService.js +81 -0
- package/src/Context/service/ContextComputeBitmapMatrixService.d.ts +1 -0
- package/src/Context/service/ContextComputeBitmapMatrixService.js +74 -0
- package/src/Context/service/ContextComputeGradientMatrixService.d.ts +4 -0
- package/src/Context/service/ContextComputeGradientMatrixService.js +88 -0
- package/src/Context/service/ContextFillSimpleService.d.ts +2 -0
- package/src/Context/service/ContextFillSimpleService.js +28 -0
- package/src/Context/service/ContextFillWithStencilMainService.d.ts +2 -0
- package/src/Context/service/ContextFillWithStencilMainService.js +19 -0
- package/src/Context/service/ContextFillWithStencilService.d.ts +2 -0
- package/src/Context/service/ContextFillWithStencilService.js +19 -0
- package/src/Context/usecase/ContextApplyFilterUseCase.d.ts +5 -0
- package/src/Context/usecase/ContextApplyFilterUseCase.js +668 -0
- package/src/Context/usecase/ContextBitmapFillUseCase.d.ts +4 -0
- package/src/Context/usecase/ContextBitmapFillUseCase.js +210 -0
- package/src/Context/usecase/ContextBitmapStrokeUseCase.d.ts +4 -0
- package/src/Context/usecase/ContextBitmapStrokeUseCase.js +119 -0
- package/src/Context/usecase/ContextClipUseCase.d.ts +5 -0
- package/src/Context/usecase/ContextClipUseCase.js +101 -0
- package/src/Context/usecase/ContextContainerEndLayerUseCase.d.ts +5 -0
- package/src/Context/usecase/ContextContainerEndLayerUseCase.js +476 -0
- package/src/Context/usecase/ContextDrawArraysInstancedUseCase.d.ts +6 -0
- package/src/Context/usecase/ContextDrawArraysInstancedUseCase.js +135 -0
- package/src/Context/usecase/ContextDrawIndirectUseCase.d.ts +6 -0
- package/src/Context/usecase/ContextDrawIndirectUseCase.js +154 -0
- package/src/Context/usecase/ContextGradientFillUseCase.d.ts +4 -0
- package/src/Context/usecase/ContextGradientFillUseCase.js +230 -0
- package/src/Context/usecase/ContextGradientStrokeUseCase.d.ts +4 -0
- package/src/Context/usecase/ContextGradientStrokeUseCase.js +138 -0
- package/src/Context/usecase/ContextProcessComplexBlendQueueUseCase.d.ts +6 -0
- package/src/Context/usecase/ContextProcessComplexBlendQueueUseCase.js +213 -0
- package/src/Context.d.ts +430 -0
- package/src/Context.js +2453 -0
- package/src/FillTexturePool.d.ts +6 -0
- package/src/FillTexturePool.js +72 -0
- package/src/Filter/BevelFilter/FilterApplyBevelFilterUseCase.d.ts +10 -0
- package/src/Filter/BevelFilter/FilterApplyBevelFilterUseCase.js +214 -0
- package/src/Filter/BevelFilterShader.d.ts +2 -0
- package/src/Filter/BevelFilterShader.js +107 -0
- package/src/Filter/BitmapFilterShader.d.ts +2 -0
- package/src/Filter/BitmapFilterShader.js +207 -0
- package/src/Filter/BlurFilter/FilterApplyBlurFilterUseCase.d.ts +16 -0
- package/src/Filter/BlurFilter/FilterApplyBlurFilterUseCase.js +243 -0
- package/src/Filter/BlurFilter/service/BlurFilterComputeShaderService.d.ts +40 -0
- package/src/Filter/BlurFilter/service/BlurFilterComputeShaderService.js +51 -0
- package/src/Filter/BlurFilter/usecase/FilterApplyBlurComputeUseCase.d.ts +25 -0
- package/src/Filter/BlurFilter/usecase/FilterApplyBlurComputeUseCase.js +180 -0
- package/src/Filter/BlurFilterShader.d.ts +5 -0
- package/src/Filter/BlurFilterShader.js +109 -0
- package/src/Filter/BlurFilterUseCase.d.ts +36 -0
- package/src/Filter/BlurFilterUseCase.js +85 -0
- package/src/Filter/ColorMatrixFilter/FilterApplyColorMatrixFilterUseCase.d.ts +12 -0
- package/src/Filter/ColorMatrixFilter/FilterApplyColorMatrixFilterUseCase.js +90 -0
- package/src/Filter/ColorMatrixFilterShader.d.ts +4 -0
- package/src/Filter/ColorMatrixFilterShader.js +51 -0
- package/src/Filter/ConvolutionFilter/FilterApplyConvolutionFilterUseCase.d.ts +6 -0
- package/src/Filter/ConvolutionFilter/FilterApplyConvolutionFilterUseCase.js +144 -0
- package/src/Filter/ConvolutionFilterShader.d.ts +2 -0
- package/src/Filter/ConvolutionFilterShader.js +115 -0
- package/src/Filter/DisplacementMapFilter/FilterApplyDisplacementMapFilterUseCase.d.ts +6 -0
- package/src/Filter/DisplacementMapFilter/FilterApplyDisplacementMapFilterUseCase.js +172 -0
- package/src/Filter/DisplacementMapFilterShader.d.ts +2 -0
- package/src/Filter/DisplacementMapFilterShader.js +114 -0
- package/src/Filter/DropShadowFilter/FilterApplyDropShadowFilterUseCase.d.ts +24 -0
- package/src/Filter/DropShadowFilter/FilterApplyDropShadowFilterUseCase.js +179 -0
- package/src/Filter/DropShadowFilterShader.d.ts +4 -0
- package/src/Filter/DropShadowFilterShader.js +93 -0
- package/src/Filter/FilterGradientLUTCache.d.ts +29 -0
- package/src/Filter/FilterGradientLUTCache.js +84 -0
- package/src/Filter/FilterOffset.d.ts +8 -0
- package/src/Filter/FilterOffset.js +10 -0
- package/src/Filter/GlowFilter/FilterApplyGlowFilterUseCase.d.ts +24 -0
- package/src/Filter/GlowFilter/FilterApplyGlowFilterUseCase.js +143 -0
- package/src/Filter/GlowFilterShader.d.ts +4 -0
- package/src/Filter/GlowFilterShader.js +66 -0
- package/src/Filter/GradientBevelFilter/FilterApplyGradientBevelFilterUseCase.d.ts +29 -0
- package/src/Filter/GradientBevelFilter/FilterApplyGradientBevelFilterUseCase.js +216 -0
- package/src/Filter/GradientGlowFilter/FilterApplyGradientGlowFilterUseCase.d.ts +29 -0
- package/src/Filter/GradientGlowFilter/FilterApplyGradientGlowFilterUseCase.js +164 -0
- package/src/FrameBufferManager/service/FrameBufferManagerCreateRenderPassDescriptorService.d.ts +4 -0
- package/src/FrameBufferManager/service/FrameBufferManagerCreateRenderPassDescriptorService.js +23 -0
- package/src/FrameBufferManager/service/FrameBufferManagerCreateStencilRenderPassDescriptorService.d.ts +4 -0
- package/src/FrameBufferManager/service/FrameBufferManagerCreateStencilRenderPassDescriptorService.js +28 -0
- package/src/FrameBufferManager/service/FrameBufferManagerFlushPendingReleasesService.d.ts +11 -0
- package/src/FrameBufferManager/service/FrameBufferManagerFlushPendingReleasesService.js +19 -0
- package/src/FrameBufferManager/usecase/FrameBufferManagerCreateAttachmentUseCase.d.ts +23 -0
- package/src/FrameBufferManager/usecase/FrameBufferManagerCreateAttachmentUseCase.js +125 -0
- package/src/FrameBufferManager/usecase/FrameBufferManagerReleaseTemporaryAttachmentUseCase.d.ts +14 -0
- package/src/FrameBufferManager/usecase/FrameBufferManagerReleaseTemporaryAttachmentUseCase.js +23 -0
- package/src/FrameBufferManager.d.ts +24 -0
- package/src/FrameBufferManager.js +161 -0
- package/src/Gradient/GradientLUTCache.d.ts +61 -0
- package/src/Gradient/GradientLUTCache.js +153 -0
- package/src/Gradient/GradientLUTGenerator.d.ts +30 -0
- package/src/Gradient/GradientLUTGenerator.js +202 -0
- package/src/Grid.d.ts +18 -0
- package/src/Grid.js +21 -0
- package/src/Mask/service/MaskBeginMaskService.d.ts +9 -0
- package/src/Mask/service/MaskBeginMaskService.js +22 -0
- package/src/Mask/service/MaskEndMaskService.d.ts +15 -0
- package/src/Mask/service/MaskEndMaskService.js +36 -0
- package/src/Mask/service/MaskSetMaskBoundsService.d.ts +13 -0
- package/src/Mask/service/MaskSetMaskBoundsService.js +36 -0
- package/src/Mask/service/MaskUnionMaskService.d.ts +4 -0
- package/src/Mask/service/MaskUnionMaskService.js +74 -0
- package/src/Mask/usecase/MaskBindUseCase.d.ts +10 -0
- package/src/Mask/usecase/MaskBindUseCase.js +20 -0
- package/src/Mask/usecase/MaskLeaveMaskUseCase.d.ts +13 -0
- package/src/Mask/usecase/MaskLeaveMaskUseCase.js +51 -0
- package/src/Mask.d.ts +12 -0
- package/src/Mask.js +41 -0
- package/src/Mesh/service/MeshFillGenerateService.d.ts +19 -0
- package/src/Mesh/service/MeshFillGenerateService.js +76 -0
- package/src/Mesh/service/MeshLerpService.d.ts +13 -0
- package/src/Mesh/service/MeshLerpService.js +17 -0
- package/src/Mesh/service/MeshStrokeFillGenerateService.d.ts +19 -0
- package/src/Mesh/service/MeshStrokeFillGenerateService.js +76 -0
- package/src/Mesh/usecase/MeshBitmapStrokeGenerateUseCase.d.ts +13 -0
- package/src/Mesh/usecase/MeshBitmapStrokeGenerateUseCase.js +65 -0
- package/src/Mesh/usecase/MeshFillGenerateUseCase.d.ts +12 -0
- package/src/Mesh/usecase/MeshFillGenerateUseCase.js +48 -0
- package/src/Mesh/usecase/MeshGradientStrokeGenerateUseCase.d.ts +13 -0
- package/src/Mesh/usecase/MeshGradientStrokeGenerateUseCase.js +65 -0
- package/src/Mesh/usecase/MeshSplitQuadraticBezierUseCase.d.ts +14 -0
- package/src/Mesh/usecase/MeshSplitQuadraticBezierUseCase.js +28 -0
- package/src/Mesh/usecase/MeshStrokeFillGenerateUseCase.d.ts +18 -0
- package/src/Mesh/usecase/MeshStrokeFillGenerateUseCase.js +54 -0
- package/src/Mesh/usecase/MeshStrokeGenerateUseCase.d.ts +25 -0
- package/src/Mesh/usecase/MeshStrokeGenerateUseCase.js +608 -0
- package/src/PathCommand.d.ts +123 -0
- package/src/PathCommand.js +317 -0
- package/src/SamplerCache/service/SamplerCacheCreateCommonSamplersService.d.ts +11 -0
- package/src/SamplerCache/service/SamplerCacheCreateCommonSamplersService.js +35 -0
- package/src/SamplerCache/service/SamplerCacheGenerateKeyService.d.ts +13 -0
- package/src/SamplerCache/service/SamplerCacheGenerateKeyService.js +15 -0
- package/src/SamplerCache/service/SamplerCacheGetOrCreateService.d.ts +15 -0
- package/src/SamplerCache/service/SamplerCacheGetOrCreateService.js +30 -0
- package/src/SamplerCache.d.ts +18 -0
- package/src/SamplerCache.js +61 -0
- package/src/Shader/BlendModeShader.d.ts +51 -0
- package/src/Shader/BlendModeShader.js +71 -0
- package/src/Shader/GradientLUTGenerator/service/GradientLUTCalculateResolutionService.d.ts +12 -0
- package/src/Shader/GradientLUTGenerator/service/GradientLUTCalculateResolutionService.js +28 -0
- package/src/Shader/GradientLUTGenerator/service/GradientLUTGeneratePixelsService.d.ts +13 -0
- package/src/Shader/GradientLUTGenerator/service/GradientLUTGeneratePixelsService.js +61 -0
- package/src/Shader/GradientLUTGenerator/service/GradientLUTInterpolateColorService.d.ts +19 -0
- package/src/Shader/GradientLUTGenerator/service/GradientLUTInterpolateColorService.js +37 -0
- package/src/Shader/GradientLUTGenerator/service/GradientLUTParseStopsService.d.ts +11 -0
- package/src/Shader/GradientLUTGenerator/service/GradientLUTParseStopsService.js +24 -0
- package/src/Shader/GradientLUTGenerator/usecase/GradientLUTGenerateDataUseCase.d.ts +14 -0
- package/src/Shader/GradientLUTGenerator/usecase/GradientLUTGenerateDataUseCase.js +24 -0
- package/src/Shader/PipelineManager.d.ts +57 -0
- package/src/Shader/PipelineManager.js +2868 -0
- package/src/Shader/ShaderInstancedManager.d.ts +8 -0
- package/src/Shader/ShaderInstancedManager.js +18 -0
- package/src/Shader/ShaderSource.d.ts +60 -0
- package/src/Shader/ShaderSource.js +518 -0
- package/src/Shader/wgsl/common/SharedWgsl.d.ts +5 -0
- package/src/Shader/wgsl/common/SharedWgsl.js +37 -0
- package/src/Shader/wgsl/fragment/BasicFragment.d.ts +2 -0
- package/src/Shader/wgsl/fragment/BasicFragment.js +28 -0
- package/src/Shader/wgsl/fragment/BitmapFragment.d.ts +1 -0
- package/src/Shader/wgsl/fragment/BitmapFragment.js +43 -0
- package/src/Shader/wgsl/fragment/BlendFragment.d.ts +8 -0
- package/src/Shader/wgsl/fragment/BlendFragment.js +63 -0
- package/src/Shader/wgsl/fragment/EffectFragment.d.ts +6 -0
- package/src/Shader/wgsl/fragment/EffectFragment.js +324 -0
- package/src/Shader/wgsl/fragment/FillFragment.d.ts +1 -0
- package/src/Shader/wgsl/fragment/FillFragment.js +28 -0
- package/src/Shader/wgsl/fragment/FilterFragment.d.ts +10 -0
- package/src/Shader/wgsl/fragment/FilterFragment.js +212 -0
- package/src/Shader/wgsl/fragment/GradientFragment.d.ts +3 -0
- package/src/Shader/wgsl/fragment/GradientFragment.js +118 -0
- package/src/Shader/wgsl/fragment/InstancedFragment.d.ts +1 -0
- package/src/Shader/wgsl/fragment/InstancedFragment.js +20 -0
- package/src/Shader/wgsl/fragment/MaskFragment.d.ts +1 -0
- package/src/Shader/wgsl/fragment/MaskFragment.js +17 -0
- package/src/Shader/wgsl/fragment/StencilFragment.d.ts +2 -0
- package/src/Shader/wgsl/fragment/StencilFragment.js +33 -0
- package/src/Shader/wgsl/vertex/BasicVertex.d.ts +1 -0
- package/src/Shader/wgsl/vertex/BasicVertex.js +37 -0
- package/src/Shader/wgsl/vertex/BitmapVertex.d.ts +1 -0
- package/src/Shader/wgsl/vertex/BitmapVertex.js +43 -0
- package/src/Shader/wgsl/vertex/FillVertex.d.ts +1 -0
- package/src/Shader/wgsl/vertex/FillVertex.js +35 -0
- package/src/Shader/wgsl/vertex/FilterVertex.d.ts +12 -0
- package/src/Shader/wgsl/vertex/FilterVertex.js +193 -0
- package/src/Shader/wgsl/vertex/GradientVertex.d.ts +1 -0
- package/src/Shader/wgsl/vertex/GradientVertex.js +44 -0
- package/src/Shader/wgsl/vertex/InstancedVertex.d.ts +1 -0
- package/src/Shader/wgsl/vertex/InstancedVertex.js +48 -0
- package/src/Shader/wgsl/vertex/MaskVertex.d.ts +1 -0
- package/src/Shader/wgsl/vertex/MaskVertex.js +36 -0
- package/src/Shader/wgsl/vertex/StencilVertex.d.ts +2 -0
- package/src/Shader/wgsl/vertex/StencilVertex.js +66 -0
- package/src/TextureManager/service/TextureManagerInitializeSamplersService.d.ts +11 -0
- package/src/TextureManager/service/TextureManagerInitializeSamplersService.js +48 -0
- package/src/TextureManager/usecase/TextureManagerCreateTextureFromImageBitmapUseCase.d.ts +13 -0
- package/src/TextureManager/usecase/TextureManagerCreateTextureFromImageBitmapUseCase.js +30 -0
- package/src/TextureManager/usecase/TextureManagerCreateTextureFromPixelsUseCase.d.ts +15 -0
- package/src/TextureManager/usecase/TextureManagerCreateTextureFromPixelsUseCase.js +26 -0
- package/src/TextureManager.d.ts +15 -0
- package/src/TextureManager.js +87 -0
- package/src/TexturePool/service/TexturePoolCleanupService.d.ts +14 -0
- package/src/TexturePool/service/TexturePoolCleanupService.js +28 -0
- package/src/TexturePool/service/TexturePoolEvictOldestService.d.ts +11 -0
- package/src/TexturePool/service/TexturePoolEvictOldestService.js +24 -0
- package/src/TexturePool/service/TexturePoolReleaseService.d.ts +13 -0
- package/src/TexturePool/service/TexturePoolReleaseService.js +22 -0
- package/src/TexturePool/usecase/TexturePoolAcquireUseCase.d.ts +19 -0
- package/src/TexturePool/usecase/TexturePoolAcquireUseCase.js +90 -0
- package/src/TexturePool.d.ts +69 -0
- package/src/TexturePool.js +151 -0
- package/src/WebGPUUtil.d.ts +102 -0
- package/src/WebGPUUtil.js +157 -0
- package/src/index.d.ts +1 -0
- package/src/index.js +1 -0
- package/src/interface/IAttachmentObject.d.ts +41 -0
- package/src/interface/IAttachmentObject.js +1 -0
- package/src/interface/IBlendMode.d.ts +1 -0
- package/src/interface/IBlendMode.js +1 -0
- package/src/interface/IBlendState.d.ts +8 -0
- package/src/interface/IBlendState.js +1 -0
- package/src/interface/IBounds.d.ts +6 -0
- package/src/interface/IBounds.js +1 -0
- package/src/interface/ICachedBindGroup.d.ts +8 -0
- package/src/interface/ICachedBindGroup.js +1 -0
- package/src/interface/IColorBufferObject.d.ts +17 -0
- package/src/interface/IColorBufferObject.js +1 -0
- package/src/interface/IComplexBlendItem.d.ts +19 -0
- package/src/interface/IComplexBlendItem.js +1 -0
- package/src/interface/IFilterConfig.d.ts +29 -0
- package/src/interface/IFilterConfig.js +1 -0
- package/src/interface/IGradientLUTData.d.ts +8 -0
- package/src/interface/IGradientLUTData.js +1 -0
- package/src/interface/IGradientStop.d.ts +11 -0
- package/src/interface/IGradientStop.js +1 -0
- package/src/interface/ILocalFilterConfig.d.ts +21 -0
- package/src/interface/ILocalFilterConfig.js +1 -0
- package/src/interface/IMeshResult.d.ts +8 -0
- package/src/interface/IMeshResult.js +1 -0
- package/src/interface/IPath.d.ts +8 -0
- package/src/interface/IPath.js +1 -0
- package/src/interface/IPoint.d.ts +4 -0
- package/src/interface/IPoint.js +1 -0
- package/src/interface/IPooledBuffer.d.ts +8 -0
- package/src/interface/IPooledBuffer.js +1 -0
- package/src/interface/IPooledTexture.d.ts +17 -0
- package/src/interface/IPooledTexture.js +1 -0
- package/src/interface/IQuadraticSegment.d.ts +9 -0
- package/src/interface/IQuadraticSegment.js +1 -0
- package/src/interface/IRectangleInfo.d.ts +13 -0
- package/src/interface/IRectangleInfo.js +1 -0
- package/src/interface/IStencilBufferObject.d.ts +16 -0
- package/src/interface/IStencilBufferObject.js +1 -0
- package/src/interface/IStorageBufferConfig.d.ts +40 -0
- package/src/interface/IStorageBufferConfig.js +1 -0
- package/src/interface/ITextureObject.d.ts +16 -0
- package/src/interface/ITextureObject.js +1 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2021 Next2D
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,574 @@
|
|
|
1
|
+
# @next2d/webgpu
|
|
2
|
+
|
|
3
|
+
WebGPU-based rendering engine for Next2D (Experimental / Work in Progress)
|
|
4
|
+
|
|
5
|
+
WebGPU ベースのレンダリングエンジン(実験的 / 開発中)
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## ⚠️ Warning / 警告
|
|
10
|
+
|
|
11
|
+
**This package is currently under development and NOT production-ready.**
|
|
12
|
+
|
|
13
|
+
**本パッケージは現在開発中であり、本番環境での使用には対応していません。**
|
|
14
|
+
|
|
15
|
+
- Many features are incomplete or placeholder implementations
|
|
16
|
+
- APIs may change without notice
|
|
17
|
+
- Performance has not been optimized
|
|
18
|
+
- Testing is incomplete
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Overview / 概要
|
|
23
|
+
|
|
24
|
+
This package provides a WebGPU-based rendering backend for Next2D Player, designed as an alternative to the existing WebGL implementation. WebGPU is a modern graphics API that offers better performance and more control over GPU resources.
|
|
25
|
+
|
|
26
|
+
本パッケージは Next2D Player 向けの WebGPU ベースのレンダリングバックエンドを提供します。既存の WebGL 実装の代替として設計されており、WebGPU は優れたパフォーマンスと GPU リソースに対するより細かい制御を提供する最新のグラフィックス API です。
|
|
27
|
+
|
|
28
|
+
### Key Features / 主な機能
|
|
29
|
+
|
|
30
|
+
- WGSL (WebGPU Shading Language) shader implementations
|
|
31
|
+
- Texture atlas management for efficient rendering
|
|
32
|
+
- Instance-based batch rendering
|
|
33
|
+
- Blend mode support
|
|
34
|
+
- Mask rendering capabilities
|
|
35
|
+
- Filter effects (Blur, Glow, Drop Shadow, Color Matrix)
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Directory Structure / ディレクトリ構造
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
src/
|
|
43
|
+
├── Context.ts # Main rendering context (WebGPU版のメインコンテキスト)
|
|
44
|
+
├── WebGPUUtil.ts # Utility functions and global state management
|
|
45
|
+
│
|
|
46
|
+
├── Managers / マネージャー
|
|
47
|
+
│ ├── AtlasManager.ts # Atlas texture management (アトラステクスチャ管理)
|
|
48
|
+
│ ├── AttachmentManager.ts # Offscreen attachment/FBO management (オフスクリーンアタッチメント管理)
|
|
49
|
+
│ ├── BufferManager.ts # Vertex/Uniform buffer management (バッファ管理)
|
|
50
|
+
│ ├── DrawManager.ts # Drawing operations helper (描画操作ヘルパー)
|
|
51
|
+
│ ├── FrameBufferManager.ts # Framebuffer management (フレームバッファ管理)
|
|
52
|
+
│ └── TextureManager.ts # Texture and sampler management (テクスチャ/サンプラー管理)
|
|
53
|
+
│
|
|
54
|
+
├── Core Components / コアコンポーネント
|
|
55
|
+
│ ├── PathCommand.ts # Path drawing commands (moveTo, lineTo, bezierCurveTo, etc.)
|
|
56
|
+
│ │ ├── PathCommandState.ts # Path command state management
|
|
57
|
+
│ │ ├── service/
|
|
58
|
+
│ │ │ ├── PathCommandBeginPathService.ts
|
|
59
|
+
│ │ │ ├── PathCommandEqualsToLastPointService.ts
|
|
60
|
+
│ │ │ ├── PathCommandPushCurrentPathToVerticesService.ts
|
|
61
|
+
│ │ │ └── PathCommandPushPointToCurrentPathService.ts
|
|
62
|
+
│ │ └── usecase/
|
|
63
|
+
│ │ ├── PathCommandArcUseCase.ts
|
|
64
|
+
│ │ ├── PathCommandBezierCurveToUseCase.ts
|
|
65
|
+
│ │ ├── PathCommandClosePathUseCase.ts
|
|
66
|
+
│ │ ├── PathCommandLineToUseCase.ts
|
|
67
|
+
│ │ ├── PathCommandMoveToUseCase.ts
|
|
68
|
+
│ │ └── PathCommandQuadraticCurveToUseCase.ts
|
|
69
|
+
│ ├── Mesh.ts # Mesh data structures and utilities
|
|
70
|
+
│ │ ├── service/
|
|
71
|
+
│ │ │ ├── MeshCalculateNormalVectorService.ts
|
|
72
|
+
│ │ │ ├── MeshFillGenerateService.ts
|
|
73
|
+
│ │ │ ├── MeshGetQuadraticBezierPointService.ts
|
|
74
|
+
│ │ │ ├── MeshGetQuadraticBezierTangentService.ts
|
|
75
|
+
│ │ │ └── MeshLerpService.ts
|
|
76
|
+
│ │ └── usecase/
|
|
77
|
+
│ │ ├── MeshBitmapStrokeGenerateUseCase.ts
|
|
78
|
+
│ │ ├── MeshFillGenerateUseCase.ts
|
|
79
|
+
│ │ ├── MeshGradientStrokeGenerateUseCase.ts
|
|
80
|
+
│ │ ├── MeshSplitQuadraticBezierUseCase.ts
|
|
81
|
+
│ │ └── MeshStrokeGenerateUseCase.ts
|
|
82
|
+
│ ├── BezierConverter.ts # Bezier curve conversion utilities
|
|
83
|
+
│ │ ├── service/
|
|
84
|
+
│ │ │ ├── BezierConverterCubicToQuadService.ts
|
|
85
|
+
│ │ │ └── BezierConverterSplitCubicService.ts
|
|
86
|
+
│ │ └── usecase/
|
|
87
|
+
│ │ └── BezierConverterAdaptiveCubicToQuadUseCase.ts
|
|
88
|
+
│ ├── Blend.ts # Blend mode state management
|
|
89
|
+
│ ├── Mask.ts # Mask rendering state management
|
|
90
|
+
│ └── Grid.ts # Grid/9-slice system
|
|
91
|
+
│
|
|
92
|
+
├── Shader/ シェーダー関連
|
|
93
|
+
│ ├── ShaderSource.ts # WGSL shader source code
|
|
94
|
+
│ ├── PipelineManager.ts # Render pipeline management
|
|
95
|
+
│ ├── ShaderInstancedManager.ts # Instance rendering shader management
|
|
96
|
+
│ ├── BlendModeShader.ts # Blend mode shader implementations
|
|
97
|
+
│ └── GradientLUTGenerator.ts # Gradient lookup table generation
|
|
98
|
+
│ ├── service/
|
|
99
|
+
│ │ ├── GradientLUTCalculateResolutionService.ts
|
|
100
|
+
│ │ ├── GradientLUTGeneratePixelsService.ts
|
|
101
|
+
│ │ ├── GradientLUTInterpolateColorService.ts
|
|
102
|
+
│ │ └── GradientLUTParseStopsService.ts
|
|
103
|
+
│ └── usecase/
|
|
104
|
+
│ └── GradientLUTGenerateDataUseCase.ts
|
|
105
|
+
│
|
|
106
|
+
├── Gradient/ グラデーション関連
|
|
107
|
+
│ ├── GradientLUTCache.ts # Gradient LUT cache management
|
|
108
|
+
│ └── GradientLUTGenerator.ts # Gradient LUT generation
|
|
109
|
+
│
|
|
110
|
+
├── Filter/ フィルター実装
|
|
111
|
+
│ ├── index.ts # Filter exports
|
|
112
|
+
│ ├── BlurFilterShader.ts # Blur filter implementation
|
|
113
|
+
│ ├── BlurFilterUseCase.ts # Blur filter use case
|
|
114
|
+
│ ├── GlowFilterShader.ts # Glow filter implementation
|
|
115
|
+
│ ├── DropShadowFilterShader.ts # Drop shadow filter implementation
|
|
116
|
+
│ ├── ColorMatrixFilterShader.ts # Color matrix filter implementation
|
|
117
|
+
│ ├── BevelFilter/
|
|
118
|
+
│ │ └── FilterApplyBevelFilterUseCase.ts
|
|
119
|
+
│ ├── BlurFilter/
|
|
120
|
+
│ │ └── FilterApplyBlurFilterUseCase.ts
|
|
121
|
+
│ ├── ColorMatrixFilter/
|
|
122
|
+
│ │ └── FilterApplyColorMatrixFilterUseCase.ts
|
|
123
|
+
│ ├── ConvolutionFilter/
|
|
124
|
+
│ │ └── FilterApplyConvolutionFilterUseCase.ts
|
|
125
|
+
│ ├── DisplacementMapFilter/
|
|
126
|
+
│ │ └── FilterApplyDisplacementMapFilterUseCase.ts
|
|
127
|
+
│ ├── DropShadowFilter/
|
|
128
|
+
│ │ └── FilterApplyDropShadowFilterUseCase.ts
|
|
129
|
+
│ ├── GlowFilter/
|
|
130
|
+
│ │ └── FilterApplyGlowFilterUseCase.ts
|
|
131
|
+
│ ├── GradientBevelFilter/
|
|
132
|
+
│ │ └── FilterApplyGradientBevelFilterUseCase.ts
|
|
133
|
+
│ └── GradientGlowFilter/
|
|
134
|
+
│ └── FilterApplyGradientGlowFilterUseCase.ts
|
|
135
|
+
│
|
|
136
|
+
├── Blend/ ブレンド関連
|
|
137
|
+
│ ├── BlendInstancedManager.ts # Instance-based blend rendering
|
|
138
|
+
│ ├── service/
|
|
139
|
+
│ │ ├── BlendAddService.ts
|
|
140
|
+
│ │ ├── BlendAlphaService.ts
|
|
141
|
+
│ │ ├── BlendEraseService.ts
|
|
142
|
+
│ │ ├── BlendGetStateService.ts
|
|
143
|
+
│ │ ├── BlendOneZeroService.ts
|
|
144
|
+
│ │ ├── BlendResetService.ts
|
|
145
|
+
│ │ ├── BlendScreenService.ts
|
|
146
|
+
│ │ └── BlendSetModeService.ts
|
|
147
|
+
│ └── usecase/
|
|
148
|
+
│ ├── BlendApplyComplexBlendUseCase.ts
|
|
149
|
+
│ └── BlendOperationUseCase.ts
|
|
150
|
+
│
|
|
151
|
+
├── Mask/ マスク関連
|
|
152
|
+
│ ├── service/
|
|
153
|
+
│ │ ├── MaskBeginMaskService.ts
|
|
154
|
+
│ │ ├── MaskEndMaskService.ts
|
|
155
|
+
│ │ ├── MaskSetMaskBoundsService.ts
|
|
156
|
+
│ │ └── MaskUnionMaskService.ts
|
|
157
|
+
│ └── usecase/
|
|
158
|
+
│ ├── MaskLeaveMaskUseCase.ts
|
|
159
|
+
│ └── MaskBindUseCase.ts
|
|
160
|
+
│
|
|
161
|
+
└── interface/ 型定義
|
|
162
|
+
├── IAttachmentObject.ts # Attachment object interface
|
|
163
|
+
├── IBlendMode.ts # Blend mode types
|
|
164
|
+
├── IBounds.ts # Bounds rectangle interface
|
|
165
|
+
├── IFillType.ts # Fill type definitions
|
|
166
|
+
├── IPath.ts # Path interface
|
|
167
|
+
├── IPoint.ts # Point interface
|
|
168
|
+
└── ITextureObject.ts # Texture object interface
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Implementation Status / 実装状況
|
|
174
|
+
|
|
175
|
+
### ✅ Implemented / 実装済み
|
|
176
|
+
|
|
177
|
+
#### Core Rendering / コア描画機能
|
|
178
|
+
- ✅ Basic initialization and device setup (基本的な初期化とデバイスセットアップ)
|
|
179
|
+
- ✅ Canvas context configuration (キャンバスコンテキストの設定)
|
|
180
|
+
- ✅ Frame lifecycle management (beginFrame/endFrame) (フレームライフサイクル管理)
|
|
181
|
+
- ✅ Transform matrix operations (save/restore/setTransform/transform) (変換行列操作)
|
|
182
|
+
- ✅ Background color fill (背景色の塗りつぶし)
|
|
183
|
+
- ✅ Resize handling (リサイズ処理)
|
|
184
|
+
|
|
185
|
+
#### Path Drawing / パス描画
|
|
186
|
+
- ✅ Path commands (beginPath, moveTo, lineTo, closePath) (パスコマンド)
|
|
187
|
+
- ✅ Bezier curves (quadraticCurveTo, bezierCurveTo) (ベジェ曲線)
|
|
188
|
+
- ✅ Arc drawing (円弧描画)
|
|
189
|
+
- ✅ Fill operations with solid colors (単色塗りつぶし)
|
|
190
|
+
- ✅ Stroke operations with mesh generation (ストローク描画とメッシュ生成)
|
|
191
|
+
- ✅ Vertex triangulation for path filling (パス塗りつぶし用の頂点三角形分割)
|
|
192
|
+
|
|
193
|
+
#### Texture & Atlas Management / テクスチャ・アトラス管理
|
|
194
|
+
- ✅ Atlas texture creation (4096x4096) (アトラステクスチャ作成)
|
|
195
|
+
- ✅ Node allocation in texture atlas (テクスチャアトラスのノード割り当て)
|
|
196
|
+
- ✅ Texture from pixels/ImageBitmap (ピクセル/ImageBitmapからのテクスチャ作成)
|
|
197
|
+
- ✅ Sampler creation (linear, nearest, repeat) (サンプラー作成)
|
|
198
|
+
- ✅ Texture pool management (テクスチャプール管理)
|
|
199
|
+
|
|
200
|
+
#### Buffer Management / バッファ管理
|
|
201
|
+
- ✅ Vertex buffer creation and management (頂点バッファ作成と管理)
|
|
202
|
+
- ✅ Uniform buffer creation and updates (Uniformバッファ作成と更新)
|
|
203
|
+
- ✅ Rectangle vertex generation (矩形頂点生成)
|
|
204
|
+
|
|
205
|
+
#### Offscreen Rendering / オフスクリーンレンダリング
|
|
206
|
+
- ✅ Attachment object pool (アタッチメントオブジェクトプール)
|
|
207
|
+
- ✅ Bind/unbind attachment operations (アタッチメントのバインド/アンバインド)
|
|
208
|
+
- ✅ Render target switching (レンダーターゲットの切り替え)
|
|
209
|
+
- ✅ Stencil texture creation (ステンシルテクスチャ作成)
|
|
210
|
+
|
|
211
|
+
#### Shader Pipelines / シェーダーパイプライン
|
|
212
|
+
- ✅ Fill pipeline (solid color) (単色塗りつぶしパイプライン)
|
|
213
|
+
- ✅ Mask pipeline (Bezier curve anti-aliasing) (マスクパイプライン - ベジェ曲線アンチエイリアス)
|
|
214
|
+
- ✅ Basic pipeline (基本パイプライン)
|
|
215
|
+
- ✅ Texture pipeline (テクスチャパイプライン)
|
|
216
|
+
- ✅ Instanced rendering pipeline (インスタンス描画パイプライン)
|
|
217
|
+
- ✅ Gradient pipeline structure (グラデーションパイプライン構造)
|
|
218
|
+
- ✅ Blend mode pipeline structure (ブレンドモードパイプライン構造)
|
|
219
|
+
|
|
220
|
+
#### Instance Rendering / インスタンス描画
|
|
221
|
+
- ✅ Instance data management (インスタンスデータ管理)
|
|
222
|
+
- ✅ Display object to instance array conversion (表示オブジェクトのインスタンス配列変換)
|
|
223
|
+
- ✅ Batch rendering with instancing (インスタンシングによるバッチ描画)
|
|
224
|
+
- ✅ Color transform (multiply/add) (カラー変換 - 乗算/加算)
|
|
225
|
+
|
|
226
|
+
#### Image Operations / 画像操作
|
|
227
|
+
- ✅ Draw pixels to atlas node (アトラスノードへのピクセル描画)
|
|
228
|
+
- ✅ Draw OffscreenCanvas/ImageBitmap to atlas (OffscreenCanvas/ImageBitmapのアトラス描画)
|
|
229
|
+
- ✅ Create ImageBitmap from GPU texture (GPUテクスチャからのImageBitmap作成)
|
|
230
|
+
- ✅ Premultiplied alpha conversion (プリマルチプライドアルファ変換)
|
|
231
|
+
|
|
232
|
+
### 🚧 Partially Implemented / 部分的に実装
|
|
233
|
+
|
|
234
|
+
#### Drawing Operations / 描画操作
|
|
235
|
+
- 🚧 Gradient fill (gradientFill) - Placeholder, falls back to solid fill
|
|
236
|
+
- グラデーション塗りつぶし - プレースホルダー実装、単色塗りつぶしにフォールバック
|
|
237
|
+
- 🚧 Bitmap fill (bitmapFill) - Texture creation works, shader integration pending
|
|
238
|
+
- ビットマップ塗りつぶし - テクスチャ作成は動作、シェーダー統合は保留
|
|
239
|
+
- 🚧 Gradient stroke (gradientStroke) - Placeholder
|
|
240
|
+
- グラデーションストローク - プレースホルダー実装
|
|
241
|
+
- 🚧 Bitmap stroke (bitmapStroke) - Placeholder
|
|
242
|
+
- ビットマップストローク - プレースホルダー実装
|
|
243
|
+
|
|
244
|
+
#### Masking / マスク処理
|
|
245
|
+
- 🚧 Clip operations (clip) - Basic structure, stencil buffer integration needed
|
|
246
|
+
- クリッピング操作 - 基本構造はあるが、ステンシルバッファ統合が必要
|
|
247
|
+
- 🚧 Mask begin/end (beginMask, endMask, setMaskBounds, leaveMask) - Service layer exists
|
|
248
|
+
- マスク開始/終了 - サービス層は存在
|
|
249
|
+
|
|
250
|
+
#### Filters / フィルター
|
|
251
|
+
- 🚧 applyFilter - Framework exists, filter shaders created but not integrated
|
|
252
|
+
- フィルター適用 - フレームワークは存在、フィルターシェーダーは作成済みだが統合されていない
|
|
253
|
+
- BlurFilterShader, GlowFilterShader, DropShadowFilterShader, ColorMatrixFilterShader
|
|
254
|
+
|
|
255
|
+
### ❌ TODO / 未実装
|
|
256
|
+
|
|
257
|
+
#### Core Features / コア機能
|
|
258
|
+
- ❌ Cache clearing implementation (resize時のキャッシュクリア)
|
|
259
|
+
- ❌ clearRect with scissor/clear operations (シザー/クリア操作によるclearRect)
|
|
260
|
+
- ❌ 9-slice grid transformation (useGrid) (9スライスグリッド変換)
|
|
261
|
+
|
|
262
|
+
#### Advanced Rendering / 高度なレンダリング
|
|
263
|
+
- ❌ Complete gradient LUT texture generation (完全なグラデーションLUTテクスチャ生成)
|
|
264
|
+
- ❌ Gradient shader parameter passing (グラデーションシェーダーのパラメータ渡し)
|
|
265
|
+
- ❌ Bitmap fill/stroke shader integration (ビットマップ塗りつぶし/ストロークシェーダー統合)
|
|
266
|
+
- ❌ Stencil buffer-based clipping (ステンシルバッファベースのクリッピング)
|
|
267
|
+
- ❌ Two-pass rendering for masks (マスク用の2パスレンダリング)
|
|
268
|
+
|
|
269
|
+
#### Blend Modes / ブレンドモード
|
|
270
|
+
- ❌ Full blend mode integration (multiply, screen, add, etc.)
|
|
271
|
+
- 完全なブレンドモード統合(乗算、スクリーン、加算など)
|
|
272
|
+
- ❌ Advanced blend modes (overlay, hard-light, soft-light, etc.)
|
|
273
|
+
- 高度なブレンドモード(オーバーレイ、ハードライト、ソフトライトなど)
|
|
274
|
+
|
|
275
|
+
#### Filters / フィルター
|
|
276
|
+
- ❌ Filter parameter binding and execution (フィルターパラメータバインディングと実行)
|
|
277
|
+
- ❌ Multi-pass filter rendering (複数パスフィルターレンダリング)
|
|
278
|
+
- ❌ Convolution filter (コンボリューションフィルター)
|
|
279
|
+
- ❌ Displacement map filter (ディスプレイスメントマップフィルター)
|
|
280
|
+
|
|
281
|
+
#### Optimization / 最適化
|
|
282
|
+
- ❌ Buffer reuse and pooling optimization (バッファ再利用とプール最適化)
|
|
283
|
+
- ❌ Command encoder reuse (コマンドエンコーダー再利用)
|
|
284
|
+
- ❌ Pipeline state caching (パイプライン状態キャッシング)
|
|
285
|
+
- ❌ Batch draw call optimization (バッチ描画コール最適化)
|
|
286
|
+
|
|
287
|
+
#### Testing & Documentation / テストとドキュメント
|
|
288
|
+
- ❌ Unit tests (ユニットテスト)
|
|
289
|
+
- ❌ Integration tests (統合テスト)
|
|
290
|
+
- ❌ Performance benchmarks (パフォーマンスベンチマーク)
|
|
291
|
+
- ❌ API documentation (API ドキュメント)
|
|
292
|
+
|
|
293
|
+
---
|
|
294
|
+
|
|
295
|
+
## Context.ts - Implementation Analysis / Context.ts 実装分析
|
|
296
|
+
|
|
297
|
+
The `Context.ts` file is the main entry point for the WebGPU rendering engine. Here's a detailed breakdown of its implementation status:
|
|
298
|
+
|
|
299
|
+
`Context.ts` ファイルは WebGPU レンダリングエンジンのメインエントリーポイントです。実装状況の詳細な内訳は以下の通りです:
|
|
300
|
+
|
|
301
|
+
### Fully Implemented Methods / 完全実装済みメソッド
|
|
302
|
+
|
|
303
|
+
| Method | Status | Notes |
|
|
304
|
+
|--------|--------|-------|
|
|
305
|
+
| `constructor` | ✅ Complete | Device, context, format initialization |
|
|
306
|
+
| `save` / `restore` | ✅ Complete | Matrix stack operations |
|
|
307
|
+
| `setTransform` / `transform` | ✅ Complete | 2D transformation matrix |
|
|
308
|
+
| `reset` | ✅ Complete | Reset context state |
|
|
309
|
+
| `beginPath` / `moveTo` / `lineTo` | ✅ Complete | Path command delegation |
|
|
310
|
+
| `quadraticCurveTo` / `bezierCurveTo` | ✅ Complete | Bezier curve support |
|
|
311
|
+
| `arc` / `closePath` | ✅ Complete | Path operations |
|
|
312
|
+
| `fillStyle` / `strokeStyle` | ✅ Complete | Color style setters |
|
|
313
|
+
| `fill` | ✅ Complete | Solid color fill with pipeline |
|
|
314
|
+
| `stroke` | ✅ Complete | Stroke with mesh generation |
|
|
315
|
+
| `updateBackgroundColor` | ✅ Complete | Background color update |
|
|
316
|
+
| `fillBackgroundColor` | ✅ Complete | Clear with background color |
|
|
317
|
+
| `resize` | ✅ Complete | Canvas resize (cache clear TODO) |
|
|
318
|
+
| `beginFrame` / `endFrame` | ✅ Complete | Frame lifecycle management |
|
|
319
|
+
| `bindAttachment` / `unbindAttachment` | ✅ Complete | Offscreen rendering |
|
|
320
|
+
| `getAttachmentObject` / `releaseAttachment` | ✅ Complete | Attachment management |
|
|
321
|
+
| `createNode` / `removeNode` | ✅ Complete | Atlas node management |
|
|
322
|
+
| `drawPixels` / `drawElement` | ✅ Complete | Pixel/element to atlas |
|
|
323
|
+
| `drawDisplayObject` | ✅ Complete | Instance array addition |
|
|
324
|
+
| `drawArraysInstanced` | ✅ Complete | Batch instance rendering |
|
|
325
|
+
| `clearArraysInstanced` | ✅ Complete | Clear instance data |
|
|
326
|
+
| `createImageBitmap` | ✅ Complete | GPU→ImageBitmap conversion |
|
|
327
|
+
| `beginMask` / `setMaskBounds` / `endMask` / `leaveMask` | ✅ Complete | Mask service delegation |
|
|
328
|
+
|
|
329
|
+
### Placeholder / Incomplete Methods / プレースホルダー/不完全なメソッド
|
|
330
|
+
|
|
331
|
+
| Method | Status | Notes |
|
|
332
|
+
|--------|--------|-------|
|
|
333
|
+
| `clearRect` | 🚧 Partial | Has console.log, needs scissor+clear implementation |
|
|
334
|
+
| `gradientFill` | 🚧 Placeholder | console.log + falls back to fill() |
|
|
335
|
+
| `bitmapFill` | 🚧 Partial | Creates texture but falls back to fill() |
|
|
336
|
+
| `gradientStroke` | 🚧 Placeholder | console.log + falls back to stroke() |
|
|
337
|
+
| `bitmapStroke` | 🚧 Placeholder | console.log + falls back to stroke() |
|
|
338
|
+
| `clip` | 🚧 Placeholder | console.log + falls back to fill() |
|
|
339
|
+
| `useGrid` | 🚧 Placeholder | console.log, 9-slice not implemented |
|
|
340
|
+
| `applyFilter` | 🚧 Placeholder | console.log, filter shaders not integrated |
|
|
341
|
+
|
|
342
|
+
### Debug Markers / デバッグマーカー
|
|
343
|
+
|
|
344
|
+
The code contains multiple `console.log` statements indicating work-in-progress areas:
|
|
345
|
+
|
|
346
|
+
コードには開発中の領域を示す複数の `console.log` 文が含まれています:
|
|
347
|
+
|
|
348
|
+
- Line 250: `clearRect()` - "TODO: シザーとクリアを使用した実装"
|
|
349
|
+
- Line 228: `resize()` - "TODO: キャッシュクリア実装"
|
|
350
|
+
- Line 270: `clearRect()` - "TODO: シザーとクリアを使用した実装"
|
|
351
|
+
- Line 781: `gradientFill()` - "TODO: グラデーションLUTテクスチャを生成"
|
|
352
|
+
- Line 790: `gradientFill()` - "TODO: グラデーション用のシェーダーを使用"
|
|
353
|
+
- Line 847: `bitmapFill()` - "TODO: ビットマップ塗りつぶし用のシェーダーを使用"
|
|
354
|
+
- Line 876: `gradientStroke()` - "TODO: グラデーションストローク実装"
|
|
355
|
+
- Line 901: `bitmapStroke()` - "TODO: ビットマップストローク実装"
|
|
356
|
+
- Line 918: `clip()` - "TODO: ステンシルバッファを使用したクリッピング実装"
|
|
357
|
+
- Line 962: `useGrid()` - "TODO: Grid/9-slice transformation implementation"
|
|
358
|
+
- Line 1312-1320: `applyFilter()` - Multiple filter TODOs
|
|
359
|
+
- Line 1660: `leaveMask()` - "TODO: WebGPU版のインスタンス描画を実装後に追加"
|
|
360
|
+
|
|
361
|
+
---
|
|
362
|
+
|
|
363
|
+
## Shader Implementation / シェーダー実装
|
|
364
|
+
|
|
365
|
+
### WGSL Shaders in ShaderSource.ts / ShaderSource.ts の WGSL シェーダー
|
|
366
|
+
|
|
367
|
+
The package includes complete WGSL shader implementations for:
|
|
368
|
+
|
|
369
|
+
パッケージには以下の完全な WGSL シェーダー実装が含まれています:
|
|
370
|
+
|
|
371
|
+
1. **Fill Shader** (単色塗りつぶし)
|
|
372
|
+
- WebGL-compatible vertex transformation
|
|
373
|
+
- Premultiplied alpha blending
|
|
374
|
+
- Viewport normalization
|
|
375
|
+
|
|
376
|
+
2. **Mask Shader** (マスク)
|
|
377
|
+
- Bezier curve rendering with anti-aliasing
|
|
378
|
+
- Partial derivative-based edge smoothing
|
|
379
|
+
|
|
380
|
+
3. **Texture Shader** (テクスチャ)
|
|
381
|
+
- Sampled texture rendering
|
|
382
|
+
- Color modulation
|
|
383
|
+
|
|
384
|
+
4. **Instanced Shader** (インスタンス描画)
|
|
385
|
+
- Per-instance transformation matrices
|
|
386
|
+
- Color transform (multiply + add)
|
|
387
|
+
- Atlas texture sampling
|
|
388
|
+
- Unpremultiply → transform → premultiply workflow
|
|
389
|
+
|
|
390
|
+
5. **Gradient Shader** (グラデーション) - Structure only
|
|
391
|
+
- Linear/Radial gradient support
|
|
392
|
+
- LUT-based color lookup
|
|
393
|
+
|
|
394
|
+
6. **Blend Shader** (ブレンド) - Structure only
|
|
395
|
+
- Normal, Multiply, Screen, Add modes
|
|
396
|
+
- Dual texture sampling
|
|
397
|
+
|
|
398
|
+
---
|
|
399
|
+
|
|
400
|
+
## Pipeline Architecture / パイプラインアーキテクチャ
|
|
401
|
+
|
|
402
|
+
The `PipelineManager` creates and manages 6 render pipelines:
|
|
403
|
+
|
|
404
|
+
`PipelineManager` は 6 つのレンダーパイプラインを作成・管理します:
|
|
405
|
+
|
|
406
|
+
1. **fill** - Solid color fill (単色塗りつぶし)
|
|
407
|
+
2. **mask** - Stencil/clip operations (ステンシル/クリップ操作)
|
|
408
|
+
3. **basic** - Simple color rendering (シンプルカラーレンダリング)
|
|
409
|
+
4. **texture** - Textured quad rendering (テクスチャ付き矩形レンダリング)
|
|
410
|
+
5. **instanced** - Batch instance rendering (バッチインスタンス描画)
|
|
411
|
+
6. **gradient** - Gradient fill (グラデーション塗りつぶし) - Not yet integrated
|
|
412
|
+
7. **blend** - Blend mode operations (ブレンドモード操作) - Not yet integrated
|
|
413
|
+
|
|
414
|
+
All pipelines use:
|
|
415
|
+
- Premultiplied alpha blending
|
|
416
|
+
- Triangle list topology
|
|
417
|
+
- No backface culling
|
|
418
|
+
|
|
419
|
+
すべてのパイプラインは以下を使用:
|
|
420
|
+
- プリマルチプライドアルファブレンディング
|
|
421
|
+
- トライアングルリストトポロジー
|
|
422
|
+
- バックフェースカリング無効
|
|
423
|
+
|
|
424
|
+
---
|
|
425
|
+
|
|
426
|
+
## Known Limitations / 既知の制限事項
|
|
427
|
+
|
|
428
|
+
1. **Stencil Operations** - Depth-stencil attachment configuration incomplete
|
|
429
|
+
- ステンシル操作 - Depth-stencilアタッチメント設定が不完全
|
|
430
|
+
|
|
431
|
+
2. **Filter Effects** - Shader code exists but parameter passing not implemented
|
|
432
|
+
- フィルター効果 - シェーダーコードは存在するがパラメータ渡しが未実装
|
|
433
|
+
|
|
434
|
+
3. **Blend Modes** - Only normal blend mode fully functional
|
|
435
|
+
- ブレンドモード - ノーマルブレンドモードのみ完全に機能
|
|
436
|
+
|
|
437
|
+
4. **Gradient Rendering** - LUT generation incomplete
|
|
438
|
+
- グラデーションレンダリング - LUT生成が不完全
|
|
439
|
+
|
|
440
|
+
5. **Performance** - No optimization for buffer reuse, pipeline caching
|
|
441
|
+
- パフォーマンス - バッファ再利用、パイプラインキャッシングの最適化なし
|
|
442
|
+
|
|
443
|
+
6. **Error Handling** - Limited validation and error recovery
|
|
444
|
+
- エラーハンドリング - 検証とエラー回復が制限的
|
|
445
|
+
|
|
446
|
+
---
|
|
447
|
+
|
|
448
|
+
## Development Notes / 開発ノート
|
|
449
|
+
|
|
450
|
+
### Architecture / アーキテクチャ
|
|
451
|
+
|
|
452
|
+
The package follows a manager-based architecture similar to the WebGL implementation:
|
|
453
|
+
|
|
454
|
+
パッケージは WebGL 実装と同様のマネージャーベースアーキテクチャに従います:
|
|
455
|
+
|
|
456
|
+
- **Context**: Main rendering interface (メインレンダリングインターフェース)
|
|
457
|
+
- **Managers**: Resource lifecycle management (リソースライフサイクル管理)
|
|
458
|
+
- **Services/UseCases**: Business logic separation (ビジネスロジック分離)
|
|
459
|
+
- **Shaders**: WGSL source and pipeline configuration (WGSL ソースとパイプライン設定)
|
|
460
|
+
|
|
461
|
+
### Frame Lifecycle / フレームライフサイクル
|
|
462
|
+
|
|
463
|
+
```
|
|
464
|
+
clearTransferBounds()
|
|
465
|
+
→ beginFrame()
|
|
466
|
+
→ [drawing operations]
|
|
467
|
+
→ endFrame()/transferMainCanvas()
|
|
468
|
+
```
|
|
469
|
+
|
|
470
|
+
### Rendering Flow / レンダリングフロー
|
|
471
|
+
|
|
472
|
+
1. Acquire canvas texture (once per frame) (キャンバステクスチャ取得 - フレーム毎に1回)
|
|
473
|
+
2. Create command encoder (コマンドエンコーダー作成)
|
|
474
|
+
3. Begin render pass with load/clear (ロード/クリアでレンダーパス開始)
|
|
475
|
+
4. Set pipeline and bind resources (パイプライン設定とリソースバインド)
|
|
476
|
+
5. Draw commands (描画コマンド)
|
|
477
|
+
6. End render pass (レンダーパス終了)
|
|
478
|
+
7. Submit commands to queue (コマンドをキューに送信)
|
|
479
|
+
|
|
480
|
+
---
|
|
481
|
+
|
|
482
|
+
## Browser Compatibility / ブラウザ互換性
|
|
483
|
+
|
|
484
|
+
WebGPU support is required. As of 2024:
|
|
485
|
+
|
|
486
|
+
WebGPU サポートが必要です。2024年時点:
|
|
487
|
+
|
|
488
|
+
- ✅ Chrome/Edge 113+
|
|
489
|
+
- ✅ Firefox 131+ (experimental)
|
|
490
|
+
- ✅ Safari 18+ (experimental)
|
|
491
|
+
- ❌ Older browsers (need WebGL fallback)
|
|
492
|
+
|
|
493
|
+
---
|
|
494
|
+
|
|
495
|
+
## Usage / 使用方法
|
|
496
|
+
|
|
497
|
+
```typescript
|
|
498
|
+
import { Context } from "@next2d/webgpu";
|
|
499
|
+
|
|
500
|
+
// Get WebGPU adapter and device
|
|
501
|
+
const adapter = await navigator.gpu.requestAdapter();
|
|
502
|
+
const device = await adapter.requestDevice();
|
|
503
|
+
|
|
504
|
+
// Get canvas context
|
|
505
|
+
const canvas = document.getElementById("canvas") as HTMLCanvasElement;
|
|
506
|
+
const context = canvas.getContext("webgpu") as GPUCanvasContext;
|
|
507
|
+
|
|
508
|
+
// Get preferred format
|
|
509
|
+
const format = navigator.gpu.getPreferredCanvasFormat();
|
|
510
|
+
|
|
511
|
+
// Create rendering context
|
|
512
|
+
const ctx = new Context(device, context, format);
|
|
513
|
+
|
|
514
|
+
// Rendering
|
|
515
|
+
ctx.clearTransferBounds(); // Begin frame
|
|
516
|
+
ctx.fillStyle(1, 0, 0, 1); // Red
|
|
517
|
+
ctx.beginPath();
|
|
518
|
+
ctx.arc(100, 100, 50);
|
|
519
|
+
ctx.fill();
|
|
520
|
+
ctx.transferMainCanvas(); // End frame and submit
|
|
521
|
+
```
|
|
522
|
+
|
|
523
|
+
---
|
|
524
|
+
|
|
525
|
+
## Contributing / 貢献
|
|
526
|
+
|
|
527
|
+
As this package is work in progress, contributions are welcome! Priority areas:
|
|
528
|
+
|
|
529
|
+
このパッケージは開発中のため、貢献を歓迎します!優先領域:
|
|
530
|
+
|
|
531
|
+
1. Completing gradient and bitmap fill/stroke shaders
|
|
532
|
+
2. Implementing filter parameter binding
|
|
533
|
+
3. Stencil-based masking operations
|
|
534
|
+
4. Performance optimization (buffer pooling, pipeline caching)
|
|
535
|
+
5. Comprehensive testing
|
|
536
|
+
|
|
537
|
+
---
|
|
538
|
+
|
|
539
|
+
## License / ライセンス
|
|
540
|
+
|
|
541
|
+
MIT License
|
|
542
|
+
|
|
543
|
+
Copyright (c) 2021 Next2D
|
|
544
|
+
|
|
545
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
546
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
547
|
+
in the Software without restriction, including without limitation the rights
|
|
548
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
549
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
550
|
+
furnished to do so, subject to the following conditions:
|
|
551
|
+
|
|
552
|
+
The above copyright notice and this permission notice shall be included in all
|
|
553
|
+
copies or substantial portions of the Software.
|
|
554
|
+
|
|
555
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
556
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
557
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
558
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
559
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
560
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
561
|
+
SOFTWARE.
|
|
562
|
+
|
|
563
|
+
---
|
|
564
|
+
|
|
565
|
+
## Related Packages / 関連パッケージ
|
|
566
|
+
|
|
567
|
+
- `@next2d/texture-packer` - Texture atlas management
|
|
568
|
+
- `@next2d/render-queue` - Render queue for batch operations
|
|
569
|
+
|
|
570
|
+
---
|
|
571
|
+
|
|
572
|
+
**Last Updated**: 2024-12-08
|
|
573
|
+
|
|
574
|
+
**Status**: 🚧 Experimental - Active Development
|
package/package.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@next2d/webgpu",
|
|
3
|
+
"version": "3.0.0",
|
|
4
|
+
"description": "Next2D WebGPU Package",
|
|
5
|
+
"author": "Toshiyuki Ienaga<ienaga@next2d.app> (https://github.com/ienaga/)",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"homepage": "https://next2d.app",
|
|
8
|
+
"bugs": "https://github.com/Next2D/Player/issues",
|
|
9
|
+
"main": "src/index.js",
|
|
10
|
+
"types": "src/index.d.ts",
|
|
11
|
+
"type": "module",
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"import": "./src/index.js",
|
|
15
|
+
"require": "./src/index.js"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"keywords": [
|
|
19
|
+
"Next2D",
|
|
20
|
+
"Next2D WebGPU"
|
|
21
|
+
],
|
|
22
|
+
"repository": {
|
|
23
|
+
"type": "git",
|
|
24
|
+
"url": "git+https://github.com/Next2D/Player.git"
|
|
25
|
+
},
|
|
26
|
+
"dependencies": {
|
|
27
|
+
"@next2d/texture-packer": "3.0.0",
|
|
28
|
+
"@next2d/render-queue": "3.0.0"
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { IAttachmentObject } from "./interface/IAttachmentObject";
|
|
2
|
+
import type { ITextureObject } from "./interface/ITextureObject";
|
|
3
|
+
import type { TexturePacker } from "@next2d/texture-packer";
|
|
4
|
+
export declare const $setActiveAtlasIndex: (index: number) => void;
|
|
5
|
+
export declare const $getActiveAtlasIndex: () => number;
|
|
6
|
+
export declare const $getAtlasAttachmentObjects: () => IAttachmentObject[];
|
|
7
|
+
export declare const $setAtlasAttachmentObject: (attachment_object: IAttachmentObject) => void;
|
|
8
|
+
type AtlasCreator = (index: number) => IAttachmentObject;
|
|
9
|
+
export declare const $setAtlasCreator: (creator: AtlasCreator) => void;
|
|
10
|
+
export declare const $getAtlasAttachmentObject: () => IAttachmentObject | null;
|
|
11
|
+
export declare const $getAtlasAttachmentObjectByIndex: (index: number) => IAttachmentObject | null;
|
|
12
|
+
export declare const $hasAtlasAttachmentObject: () => boolean;
|
|
13
|
+
export declare const $rootNodes: TexturePacker[];
|
|
14
|
+
export declare let $atlasTexture: ITextureObject | null;
|
|
15
|
+
export declare const $setAtlasTexture: (texture_object: ITextureObject | null) => void;
|
|
16
|
+
export declare const $getAtlasTexture: () => ITextureObject | null;
|
|
17
|
+
export declare const $getActiveTransferBounds: (index: number) => Float32Array;
|
|
18
|
+
export declare const $getActiveAllTransferBounds: (index: number) => Float32Array;
|
|
19
|
+
export declare const $clearTransferBounds: () => void;
|
|
20
|
+
export declare const $setCurrentAtlasIndex: (index: number) => void;
|
|
21
|
+
export declare const $getCurrentAtlasIndex: () => number;
|
|
22
|
+
export declare const $resetAtlas: () => void;
|
|
23
|
+
export {};
|