@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
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { getComplexBlendQueue, clearComplexBlendQueue } from "../../Blend/BlendInstancedManager";
|
|
2
|
+
import { execute as blendApplyComplexBlendUseCase } from "../../Blend/usecase/BlendApplyComplexBlendUseCase";
|
|
3
|
+
import { $getAtlasAttachmentObject } from "../../AtlasManager";
|
|
4
|
+
// プリアロケート配列
|
|
5
|
+
const $uniform4 = new Float32Array(4);
|
|
6
|
+
const $uniform6 = new Float32Array(6);
|
|
7
|
+
const $uniform8 = new Float32Array(8);
|
|
8
|
+
const $uniform12 = new Float32Array(12);
|
|
9
|
+
// プリアロケート BindGroup Entry 配列
|
|
10
|
+
const $entries3 = [
|
|
11
|
+
{ "binding": 0, "resource": { "buffer": null } },
|
|
12
|
+
{ "binding": 1, "resource": null },
|
|
13
|
+
{ "binding": 2, "resource": null }
|
|
14
|
+
];
|
|
15
|
+
const copyTextureRegionViaRenderPass = (device, commandEncoder, srcView, dstAttachment, srcX, srcY, srcWidth, srcHeight, copyWidth, copyHeight, frameBufferManager, textureManager, pipelineManager, bufferManager) => {
|
|
16
|
+
const pipeline = pipelineManager.getPipeline("complex_blend_copy");
|
|
17
|
+
const bindGroupLayout = pipelineManager.getBindGroupLayout("texture_copy");
|
|
18
|
+
if (!pipeline || !bindGroupLayout) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
$uniform4[0] = copyWidth / srcWidth;
|
|
22
|
+
$uniform4[1] = copyHeight / srcHeight;
|
|
23
|
+
$uniform4[2] = srcX / srcWidth;
|
|
24
|
+
$uniform4[3] = srcY / srcHeight;
|
|
25
|
+
const uniformBuffer = bufferManager.acquireAndWriteUniformBuffer($uniform4);
|
|
26
|
+
const sampler = textureManager.createSampler("complex_blend_copy_sampler", false);
|
|
27
|
+
$entries3[0].resource.buffer = uniformBuffer;
|
|
28
|
+
$entries3[1].resource = sampler;
|
|
29
|
+
$entries3[2].resource = srcView;
|
|
30
|
+
const bindGroup = device.createBindGroup({
|
|
31
|
+
"layout": bindGroupLayout,
|
|
32
|
+
"entries": $entries3
|
|
33
|
+
});
|
|
34
|
+
const renderPassDescriptor = frameBufferManager.createRenderPassDescriptor(dstAttachment.texture.view, 0, 0, 0, 0, "clear");
|
|
35
|
+
const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);
|
|
36
|
+
passEncoder.setPipeline(pipeline);
|
|
37
|
+
passEncoder.setBindGroup(0, bindGroup);
|
|
38
|
+
passEncoder.draw(6, 1, 0, 0);
|
|
39
|
+
passEncoder.end();
|
|
40
|
+
};
|
|
41
|
+
const drawToMainAttachment = (device, commandEncoder, srcAttachment, mainAttachment, dstX, dstY, frameBufferManager, textureManager, pipelineManager, bufferManager) => {
|
|
42
|
+
const useMsaa = mainAttachment.msaa && mainAttachment.msaaTexture?.view;
|
|
43
|
+
const pipelineName = useMsaa ? "complex_blend_output_msaa" : "complex_blend_output";
|
|
44
|
+
const pipeline = pipelineManager.getPipeline(pipelineName);
|
|
45
|
+
const bindGroupLayout = pipelineManager.getBindGroupLayout("positioned_texture");
|
|
46
|
+
if (!pipeline || !bindGroupLayout) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
$uniform8[0] = dstX;
|
|
50
|
+
$uniform8[1] = dstY;
|
|
51
|
+
$uniform8[2] = srcAttachment.width;
|
|
52
|
+
$uniform8[3] = srcAttachment.height;
|
|
53
|
+
$uniform8[4] = mainAttachment.width;
|
|
54
|
+
$uniform8[5] = mainAttachment.height;
|
|
55
|
+
$uniform8[6] = 0;
|
|
56
|
+
$uniform8[7] = 0;
|
|
57
|
+
const uniformBuffer = bufferManager.acquireAndWriteUniformBuffer($uniform8);
|
|
58
|
+
const sampler = textureManager.createSampler("complex_blend_output_sampler", false);
|
|
59
|
+
$entries3[0].resource.buffer = uniformBuffer;
|
|
60
|
+
$entries3[1].resource = sampler;
|
|
61
|
+
$entries3[2].resource = srcAttachment.texture.view;
|
|
62
|
+
const bindGroup = device.createBindGroup({
|
|
63
|
+
"layout": bindGroupLayout,
|
|
64
|
+
"entries": $entries3
|
|
65
|
+
});
|
|
66
|
+
const colorView = useMsaa ? mainAttachment.msaaTexture.view : mainAttachment.texture.view;
|
|
67
|
+
const resolveTarget = useMsaa ? mainAttachment.texture.view : null;
|
|
68
|
+
const renderPassDescriptor = frameBufferManager.createRenderPassDescriptor(colorView, 0, 0, 0, 0, "load", resolveTarget);
|
|
69
|
+
const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);
|
|
70
|
+
passEncoder.setPipeline(pipeline);
|
|
71
|
+
passEncoder.setBindGroup(0, bindGroup);
|
|
72
|
+
passEncoder.draw(6, 1, 0, 0);
|
|
73
|
+
passEncoder.end();
|
|
74
|
+
};
|
|
75
|
+
export const execute = (device, commandEncoder, mainAttachment, frameBufferManager, textureManager, pipelineManager, bufferManager) => {
|
|
76
|
+
const queue = getComplexBlendQueue();
|
|
77
|
+
if (queue.length === 0) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
if (!mainAttachment || !mainAttachment.texture) {
|
|
81
|
+
clearComplexBlendQueue();
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
const atlasAttachment = $getAtlasAttachmentObject() || frameBufferManager.getAttachment("atlas");
|
|
85
|
+
if (!atlasAttachment || !atlasAttachment.texture) {
|
|
86
|
+
clearComplexBlendQueue();
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
for (const item of queue) {
|
|
90
|
+
const { node, x_min, y_min, x_max, y_max, color_transform, matrix, blend_mode, global_alpha } = item;
|
|
91
|
+
const width = Math.ceil(Math.abs(x_max - x_min));
|
|
92
|
+
const height = Math.ceil(Math.abs(y_max - y_min));
|
|
93
|
+
if (width <= 0 || height <= 0) {
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
const dstX = Math.max(0, Math.floor(matrix[6]));
|
|
97
|
+
const dstY = Math.max(0, Math.floor(matrix[7]));
|
|
98
|
+
if (dstX >= mainAttachment.width || dstY >= mainAttachment.height) {
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
const hasScale = matrix[0] !== 1 || matrix[1] !== 0 || matrix[3] !== 0 || matrix[4] !== 1;
|
|
102
|
+
const blendWidth = hasScale ? width : node.w;
|
|
103
|
+
const blendHeight = hasScale ? height : node.h;
|
|
104
|
+
const clippedWidth = Math.min(blendWidth, mainAttachment.width - dstX);
|
|
105
|
+
const clippedHeight = Math.min(blendHeight, mainAttachment.height - dstY);
|
|
106
|
+
if (clippedWidth <= 0 || clippedHeight <= 0) {
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
// 1. ソーステクスチャを作成
|
|
110
|
+
let srcAttachment;
|
|
111
|
+
if (hasScale) {
|
|
112
|
+
srcAttachment = frameBufferManager.createTemporaryAttachment(blendWidth, blendHeight);
|
|
113
|
+
const scalePipeline = pipelineManager.getPipeline("complex_blend_scale");
|
|
114
|
+
const scaleBindGroupLayout = pipelineManager.getBindGroupLayout("texture_scale");
|
|
115
|
+
if (scalePipeline && scaleBindGroupLayout) {
|
|
116
|
+
const halfW = blendWidth / 2;
|
|
117
|
+
const halfH = blendHeight / 2;
|
|
118
|
+
const halfNodeW = node.w / 2;
|
|
119
|
+
const halfNodeH = node.h / 2;
|
|
120
|
+
$uniform6[0] = matrix[0];
|
|
121
|
+
$uniform6[1] = matrix[1];
|
|
122
|
+
$uniform6[2] = matrix[3];
|
|
123
|
+
$uniform6[3] = matrix[4];
|
|
124
|
+
$uniform6[4] = -halfNodeW * matrix[0] - halfNodeH * matrix[3] + halfW;
|
|
125
|
+
$uniform6[5] = -halfNodeW * matrix[1] - halfNodeH * matrix[4] + halfH;
|
|
126
|
+
const originalAttachment = frameBufferManager.createTemporaryAttachment(node.w, node.h);
|
|
127
|
+
commandEncoder.copyTextureToTexture({
|
|
128
|
+
"texture": atlasAttachment.texture.resource,
|
|
129
|
+
"origin": { "x": node.x, "y": node.y, "z": 0 }
|
|
130
|
+
}, {
|
|
131
|
+
"texture": originalAttachment.texture.resource,
|
|
132
|
+
"origin": { "x": 0, "y": 0, "z": 0 }
|
|
133
|
+
}, { "width": node.w, "height": node.h });
|
|
134
|
+
$uniform12[0] = $uniform6[0];
|
|
135
|
+
$uniform12[1] = $uniform6[1];
|
|
136
|
+
$uniform12[2] = $uniform6[2];
|
|
137
|
+
$uniform12[3] = $uniform6[3];
|
|
138
|
+
$uniform12[4] = $uniform6[4];
|
|
139
|
+
$uniform12[5] = $uniform6[5];
|
|
140
|
+
$uniform12[6] = node.w;
|
|
141
|
+
$uniform12[7] = node.h;
|
|
142
|
+
$uniform12[8] = blendWidth;
|
|
143
|
+
$uniform12[9] = blendHeight;
|
|
144
|
+
$uniform12[10] = 0;
|
|
145
|
+
$uniform12[11] = 0;
|
|
146
|
+
const uniformBuffer = bufferManager.acquireAndWriteUniformBuffer($uniform12, 48);
|
|
147
|
+
const sampler = textureManager.createSampler("scale_sampler", true);
|
|
148
|
+
$entries3[0].resource.buffer = uniformBuffer;
|
|
149
|
+
$entries3[1].resource = sampler;
|
|
150
|
+
$entries3[2].resource = originalAttachment.texture.view;
|
|
151
|
+
const bindGroup = device.createBindGroup({
|
|
152
|
+
"layout": scaleBindGroupLayout,
|
|
153
|
+
"entries": $entries3
|
|
154
|
+
});
|
|
155
|
+
const renderPassDescriptor = frameBufferManager.createRenderPassDescriptor(srcAttachment.texture.view, 0, 0, 0, 0, "clear");
|
|
156
|
+
const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);
|
|
157
|
+
passEncoder.setPipeline(scalePipeline);
|
|
158
|
+
passEncoder.setBindGroup(0, bindGroup);
|
|
159
|
+
passEncoder.draw(6, 1, 0, 0);
|
|
160
|
+
passEncoder.end();
|
|
161
|
+
frameBufferManager.releaseTemporaryAttachment(originalAttachment);
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
commandEncoder.copyTextureToTexture({
|
|
165
|
+
"texture": atlasAttachment.texture.resource,
|
|
166
|
+
"origin": { "x": node.x, "y": node.y, "z": 0 }
|
|
167
|
+
}, {
|
|
168
|
+
"texture": srcAttachment.texture.resource,
|
|
169
|
+
"origin": { "x": 0, "y": 0, "z": 0 }
|
|
170
|
+
}, { "width": Math.min(node.w, blendWidth), "height": Math.min(node.h, blendHeight) });
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
srcAttachment = frameBufferManager.createTemporaryAttachment(blendWidth, blendHeight);
|
|
175
|
+
commandEncoder.copyTextureToTexture({
|
|
176
|
+
"texture": atlasAttachment.texture.resource,
|
|
177
|
+
"origin": { "x": node.x, "y": node.y, "z": 0 }
|
|
178
|
+
}, {
|
|
179
|
+
"texture": srcAttachment.texture.resource,
|
|
180
|
+
"origin": { "x": 0, "y": 0, "z": 0 }
|
|
181
|
+
}, { "width": blendWidth, "height": blendHeight });
|
|
182
|
+
}
|
|
183
|
+
// 2. デスティネーションテクスチャを作成(メインからレンダーパスでコピー)
|
|
184
|
+
const dstAttachment = frameBufferManager.createTemporaryAttachment(blendWidth, blendHeight);
|
|
185
|
+
copyTextureRegionViaRenderPass(device, commandEncoder, mainAttachment.texture.view, dstAttachment, dstX, dstY, mainAttachment.width, mainAttachment.height, blendWidth, blendHeight, frameBufferManager, textureManager, pipelineManager, bufferManager);
|
|
186
|
+
// 3. カラートランスフォームを準備(add値は生値)
|
|
187
|
+
$uniform8[0] = color_transform[0];
|
|
188
|
+
$uniform8[1] = color_transform[1];
|
|
189
|
+
$uniform8[2] = color_transform[2];
|
|
190
|
+
$uniform8[3] = global_alpha;
|
|
191
|
+
$uniform8[4] = color_transform[4];
|
|
192
|
+
$uniform8[5] = color_transform[5];
|
|
193
|
+
$uniform8[6] = color_transform[6];
|
|
194
|
+
$uniform8[7] = 0;
|
|
195
|
+
// 4. 複雑なブレンドを適用
|
|
196
|
+
const blendedAttachment = blendApplyComplexBlendUseCase(srcAttachment, dstAttachment, blend_mode, $uniform8, {
|
|
197
|
+
device,
|
|
198
|
+
commandEncoder,
|
|
199
|
+
bufferManager,
|
|
200
|
+
frameBufferManager,
|
|
201
|
+
pipelineManager,
|
|
202
|
+
textureManager,
|
|
203
|
+
"frameTextures": []
|
|
204
|
+
});
|
|
205
|
+
// 5. 結果をメインアタッチメントに描画
|
|
206
|
+
drawToMainAttachment(device, commandEncoder, blendedAttachment, mainAttachment, dstX, dstY, frameBufferManager, textureManager, pipelineManager, bufferManager);
|
|
207
|
+
// 6. 一時テクスチャを解放
|
|
208
|
+
frameBufferManager.releaseTemporaryAttachment(srcAttachment);
|
|
209
|
+
frameBufferManager.releaseTemporaryAttachment(dstAttachment);
|
|
210
|
+
frameBufferManager.releaseTemporaryAttachment(blendedAttachment);
|
|
211
|
+
}
|
|
212
|
+
clearComplexBlendQueue();
|
|
213
|
+
};
|
package/src/Context.d.ts
ADDED
|
@@ -0,0 +1,430 @@
|
|
|
1
|
+
import type { IAttachmentObject } from "./interface/IAttachmentObject";
|
|
2
|
+
import type { IBlendMode } from "./interface/IBlendMode";
|
|
3
|
+
import type { IBounds } from "./interface/IBounds";
|
|
4
|
+
import type { Node } from "@next2d/texture-packer";
|
|
5
|
+
/**
|
|
6
|
+
* @description WebGPU版、Next2Dのコンテキスト
|
|
7
|
+
* WebGPU version, Next2D context
|
|
8
|
+
*
|
|
9
|
+
* @class
|
|
10
|
+
*/
|
|
11
|
+
export declare class Context {
|
|
12
|
+
readonly $stack: Float32Array[];
|
|
13
|
+
readonly $matrix: Float32Array;
|
|
14
|
+
$clearColorR: number;
|
|
15
|
+
$clearColorG: number;
|
|
16
|
+
$clearColorB: number;
|
|
17
|
+
$clearColorA: number;
|
|
18
|
+
$mainAttachmentObject: IAttachmentObject | null;
|
|
19
|
+
readonly $stackAttachmentObject: IAttachmentObject[];
|
|
20
|
+
globalAlpha: number;
|
|
21
|
+
globalCompositeOperation: IBlendMode;
|
|
22
|
+
imageSmoothingEnabled: boolean;
|
|
23
|
+
$fillStyle: Float32Array;
|
|
24
|
+
$strokeStyle: Float32Array;
|
|
25
|
+
readonly maskBounds: IBounds;
|
|
26
|
+
thickness: number;
|
|
27
|
+
caps: number;
|
|
28
|
+
joints: number;
|
|
29
|
+
miterLimit: number;
|
|
30
|
+
private device;
|
|
31
|
+
private canvasContext;
|
|
32
|
+
private preferredFormat;
|
|
33
|
+
private commandEncoder;
|
|
34
|
+
private renderPassEncoder;
|
|
35
|
+
private mainTexture;
|
|
36
|
+
private mainTextureView;
|
|
37
|
+
private frameStarted;
|
|
38
|
+
private frameTextures;
|
|
39
|
+
private pooledTextures;
|
|
40
|
+
private pooledRenderTextures;
|
|
41
|
+
private currentRenderTarget;
|
|
42
|
+
private viewportWidth;
|
|
43
|
+
private viewportHeight;
|
|
44
|
+
private pathCommand;
|
|
45
|
+
private bufferManager;
|
|
46
|
+
private textureManager;
|
|
47
|
+
private frameBufferManager;
|
|
48
|
+
private pipelineManager;
|
|
49
|
+
private computePipelineManager;
|
|
50
|
+
private attachmentManager;
|
|
51
|
+
newDrawState: boolean;
|
|
52
|
+
private readonly $containerLayerStack;
|
|
53
|
+
private containerLayerContentSizes;
|
|
54
|
+
private inMaskMode;
|
|
55
|
+
private nodeAreaCleared;
|
|
56
|
+
private currentNodeScissor;
|
|
57
|
+
private nodeRenderPassAtlasIndex;
|
|
58
|
+
private fillDynamicBindGroup;
|
|
59
|
+
private fillDynamicBindGroupBuffer;
|
|
60
|
+
private nodeClearQuadBuffer;
|
|
61
|
+
private useOptimizedInstancing;
|
|
62
|
+
private readonly $uniformData8;
|
|
63
|
+
private readonly $scissorRect;
|
|
64
|
+
private readonly $filterConfig;
|
|
65
|
+
constructor(device: GPUDevice, canvas_context: GPUCanvasContext, preferred_format: GPUTextureFormat, device_pixel_ratio?: number);
|
|
66
|
+
/**
|
|
67
|
+
* @description 転送範囲をリセット(フレーム開始)
|
|
68
|
+
*/
|
|
69
|
+
clearTransferBounds(): void;
|
|
70
|
+
/**
|
|
71
|
+
* @description 背景色を更新
|
|
72
|
+
*/
|
|
73
|
+
updateBackgroundColor(red: number, green: number, blue: number, alpha: number): void;
|
|
74
|
+
/**
|
|
75
|
+
* @description 背景色で塗りつぶす(メインアタッチメント)
|
|
76
|
+
*/
|
|
77
|
+
fillBackgroundColor(): void;
|
|
78
|
+
/**
|
|
79
|
+
* @description メインcanvasのサイズを変更
|
|
80
|
+
*/
|
|
81
|
+
resize(width: number, height: number, cache_clear?: boolean): void;
|
|
82
|
+
/**
|
|
83
|
+
* @description 指定範囲をクリアする
|
|
84
|
+
*/
|
|
85
|
+
clearRect(_x: number, _y: number, _w: number, _h: number): void;
|
|
86
|
+
/**
|
|
87
|
+
* @description 現在の2D変換行列を保存
|
|
88
|
+
*/
|
|
89
|
+
save(): void;
|
|
90
|
+
/**
|
|
91
|
+
* @description 2D変換行列を復元
|
|
92
|
+
*/
|
|
93
|
+
restore(): void;
|
|
94
|
+
/**
|
|
95
|
+
* @description 2D変換行列を設定
|
|
96
|
+
*/
|
|
97
|
+
setTransform(a: number, b: number, c: number, d: number, e: number, f: number): void;
|
|
98
|
+
/**
|
|
99
|
+
* @description 現在の2D変換行列に対して乗算を行います
|
|
100
|
+
*/
|
|
101
|
+
transform(a: number, b: number, c: number, d: number, e: number, f: number): void;
|
|
102
|
+
/**
|
|
103
|
+
* @description コンテキストの値を初期化する
|
|
104
|
+
*/
|
|
105
|
+
reset(): void;
|
|
106
|
+
/**
|
|
107
|
+
* @description パスを開始
|
|
108
|
+
*/
|
|
109
|
+
beginPath(): void;
|
|
110
|
+
/**
|
|
111
|
+
* @description パスを移動
|
|
112
|
+
*/
|
|
113
|
+
moveTo(x: number, y: number): void;
|
|
114
|
+
/**
|
|
115
|
+
* @description パスを線で結ぶ
|
|
116
|
+
*/
|
|
117
|
+
lineTo(x: number, y: number): void;
|
|
118
|
+
/**
|
|
119
|
+
* @description 二次ベジェ曲線を描画
|
|
120
|
+
*/
|
|
121
|
+
quadraticCurveTo(cx: number, cy: number, x: number, y: number): void;
|
|
122
|
+
/**
|
|
123
|
+
* @description 塗りつぶしスタイルを設定
|
|
124
|
+
*/
|
|
125
|
+
fillStyle(red: number, green: number, blue: number, alpha: number): void;
|
|
126
|
+
/**
|
|
127
|
+
* @description 線のスタイルを設定
|
|
128
|
+
*/
|
|
129
|
+
strokeStyle(red: number, green: number, blue: number, alpha: number): void;
|
|
130
|
+
/**
|
|
131
|
+
* @description パスを閉じる
|
|
132
|
+
*/
|
|
133
|
+
closePath(): void;
|
|
134
|
+
/**
|
|
135
|
+
* @description 円弧を描画
|
|
136
|
+
*/
|
|
137
|
+
arc(x: number, y: number, radius: number): void;
|
|
138
|
+
/**
|
|
139
|
+
* @description 3次ベジェ曲線を描画
|
|
140
|
+
*/
|
|
141
|
+
bezierCurveTo(cx1: number, cy1: number, cx2: number, cy2: number, x: number, y: number): void;
|
|
142
|
+
/**
|
|
143
|
+
* @description 描画メソッド共通: レンダーパスの確保とノード領域クリア
|
|
144
|
+
* fill(), stroke(), gradientFill(), bitmapFill(), gradientStroke(), bitmapStroke() で使用
|
|
145
|
+
*/
|
|
146
|
+
private ensureFillRenderPass;
|
|
147
|
+
/**
|
|
148
|
+
* @description 塗りつぶしを実行(Loop-Blinn方式対応)
|
|
149
|
+
*/
|
|
150
|
+
fill(): void;
|
|
151
|
+
/**
|
|
152
|
+
* @description Dynamic Uniform BindGroupを取得(フレーム内で初回呼び出し時に作成)
|
|
153
|
+
*/
|
|
154
|
+
private getOrCreateFillDynamicBindGroup;
|
|
155
|
+
/**
|
|
156
|
+
* @description fill/stroke用のcolor/matrix uniformを書き込む
|
|
157
|
+
* FillUniforms構造体: color(vec4) + matrix0(vec4) + matrix1(vec4) + matrix2(vec4) = 64 bytes
|
|
158
|
+
* @return Dynamic Uniform Buffer内のアライメント済みオフセット
|
|
159
|
+
*/
|
|
160
|
+
private writeFillUniform;
|
|
161
|
+
/**
|
|
162
|
+
* @description 2パスステンシルフィル(アトラス用)
|
|
163
|
+
*/
|
|
164
|
+
private fillWithStencil;
|
|
165
|
+
/**
|
|
166
|
+
* @description 2パスステンシルフィル(メインキャンバス用)
|
|
167
|
+
*/
|
|
168
|
+
private fillWithStencilMain;
|
|
169
|
+
/**
|
|
170
|
+
* @description 単純なフィル(ステンシルなし、キャンバス描画用)
|
|
171
|
+
*/
|
|
172
|
+
private fillSimple;
|
|
173
|
+
/**
|
|
174
|
+
* @description オフスクリーンアタッチメントにバインド
|
|
175
|
+
* WebGL: FrameBufferManagerBindAttachmentObjectService
|
|
176
|
+
*/
|
|
177
|
+
bindAttachment(attachment: IAttachmentObject): void;
|
|
178
|
+
/**
|
|
179
|
+
* @description メインキャンバスにバインド
|
|
180
|
+
* WebGL: FrameBufferManagerUnBindAttachmentObjectService
|
|
181
|
+
*/
|
|
182
|
+
unbindAttachment(): void;
|
|
183
|
+
/**
|
|
184
|
+
* @description アタッチメントオブジェクトを取得
|
|
185
|
+
* WebGL: FrameBufferManagerGetAttachmentObjectUseCase
|
|
186
|
+
*/
|
|
187
|
+
getAttachmentObject(width: number, height: number, msaa?: boolean): IAttachmentObject;
|
|
188
|
+
/**
|
|
189
|
+
* @description アタッチメントオブジェクトを解放
|
|
190
|
+
* WebGL: FrameBufferManagerReleaseAttachmentObjectUseCase
|
|
191
|
+
*/
|
|
192
|
+
releaseAttachment(attachment: IAttachmentObject): void;
|
|
193
|
+
/**
|
|
194
|
+
* @description 線の描画を実行(WebGL版と同じ仕様)
|
|
195
|
+
* WebGL版と同様に、ストロークを塗りとして描画する
|
|
196
|
+
*/
|
|
197
|
+
stroke(): void;
|
|
198
|
+
/**
|
|
199
|
+
* @description グラデーションの塗りつぶしを実行
|
|
200
|
+
*/
|
|
201
|
+
gradientFill(type: number, stops: number[], matrix: Float32Array, spread: number, interpolation: number, focal: number): void;
|
|
202
|
+
/**
|
|
203
|
+
* @description ビットマップの塗りつぶしを実行
|
|
204
|
+
*/
|
|
205
|
+
bitmapFill(pixels: Uint8Array, matrix: Float32Array, width: number, height: number, repeat: boolean, smooth: boolean): void;
|
|
206
|
+
/**
|
|
207
|
+
* @description グラデーション線の描画を実行
|
|
208
|
+
*/
|
|
209
|
+
gradientStroke(type: number, stops: number[], matrix: Float32Array, spread: number, interpolation: number, focal: number): void;
|
|
210
|
+
/**
|
|
211
|
+
* @description ビットマップ線の描画を実行
|
|
212
|
+
*/
|
|
213
|
+
bitmapStroke(pixels: Uint8Array, matrix: Float32Array, width: number, height: number, repeat: boolean, smooth: boolean): void;
|
|
214
|
+
/**
|
|
215
|
+
* @description マスク処理を実行
|
|
216
|
+
* WebGL版と同様にステンシルバッファを使用したクリッピング
|
|
217
|
+
* メインアタッチメントとアトラス両方でマスク処理をサポート
|
|
218
|
+
*/
|
|
219
|
+
clip(): void;
|
|
220
|
+
/**
|
|
221
|
+
* @description アタッチメントオブジェクトをバインド
|
|
222
|
+
*/
|
|
223
|
+
bind(attachment_object: IAttachmentObject): void;
|
|
224
|
+
/**
|
|
225
|
+
* @description 現在のアタッチメントオブジェクトを取得
|
|
226
|
+
* アトラスがバインドされていない場合はメインアタッチメントを返す
|
|
227
|
+
* When no atlas is bound, returns the main attachment
|
|
228
|
+
*/
|
|
229
|
+
get currentAttachmentObject(): IAttachmentObject | null;
|
|
230
|
+
/**
|
|
231
|
+
* @description アトラス専用のアタッチメントオブジェクトを取得
|
|
232
|
+
*/
|
|
233
|
+
get atlasAttachmentObject(): IAttachmentObject | null;
|
|
234
|
+
/**
|
|
235
|
+
* @description グリッドの描画データをセット
|
|
236
|
+
*/
|
|
237
|
+
useGrid(grid_data: Float32Array | null): void;
|
|
238
|
+
/**
|
|
239
|
+
* @description 指定のノード範囲で描画を開始(アトラステクスチャへの描画)
|
|
240
|
+
* 2パスステンシルフィル対応: ステンシルバッファ付きレンダーパスを使用
|
|
241
|
+
*/
|
|
242
|
+
beginNodeRendering(node: Node): void;
|
|
243
|
+
/**
|
|
244
|
+
* @description ノード領域がまだクリアされていない場合にクリアを実行
|
|
245
|
+
* 最初の描画操作(fill, gradientFill, gradientStroke等)で呼び出される
|
|
246
|
+
*/
|
|
247
|
+
private ensureNodeAreaCleared;
|
|
248
|
+
/**
|
|
249
|
+
* @description ノード領域をクリア(透明色 + ステンシル=0)
|
|
250
|
+
* WebGL版の gl.clear(COLOR_BUFFER_BIT | STENCIL_BUFFER_BIT) と同等
|
|
251
|
+
*/
|
|
252
|
+
private clearNodeArea;
|
|
253
|
+
/**
|
|
254
|
+
* @description 指定のノード範囲で描画を終了
|
|
255
|
+
* レンダーパスは終了しない(次のbeginNodeRenderingで再利用するため)
|
|
256
|
+
*/
|
|
257
|
+
endNodeRendering(): void;
|
|
258
|
+
/**
|
|
259
|
+
* @description 塗りの描画を実行
|
|
260
|
+
*/
|
|
261
|
+
drawFill(): void;
|
|
262
|
+
/**
|
|
263
|
+
* @description インスタンスを描画
|
|
264
|
+
*/
|
|
265
|
+
drawDisplayObject(node: Node, x_min: number, y_min: number, x_max: number, y_max: number, color_transform: Float32Array): void;
|
|
266
|
+
/**
|
|
267
|
+
* @description インスタンス配列を描画
|
|
268
|
+
* Draw instanced arrays
|
|
269
|
+
*
|
|
270
|
+
* useOptimizedInstancingがtrueの場合、Storage BufferとIndirect Drawingを使用。
|
|
271
|
+
* - Storage Buffer: メモリアロケーション削減、CPU負荷15-25%軽減
|
|
272
|
+
* - Indirect Drawing: CPU-GPUオーバーヘッド5-15%削減
|
|
273
|
+
*
|
|
274
|
+
*/
|
|
275
|
+
drawArraysInstanced(): void;
|
|
276
|
+
/**
|
|
277
|
+
* @description 最適化インスタンス描画の有効/無効を設定
|
|
278
|
+
* Enable or disable optimized instancing
|
|
279
|
+
*
|
|
280
|
+
*/
|
|
281
|
+
setOptimizedInstancing(enabled: boolean): void;
|
|
282
|
+
/**
|
|
283
|
+
* @description 最適化インスタンス描画が有効かどうか
|
|
284
|
+
* Whether optimized instancing is enabled
|
|
285
|
+
*
|
|
286
|
+
*/
|
|
287
|
+
isOptimizedInstancingEnabled(): boolean;
|
|
288
|
+
/**
|
|
289
|
+
* @description 複雑なブレンドモードのキューを処理
|
|
290
|
+
*/
|
|
291
|
+
private processComplexBlendQueue;
|
|
292
|
+
/**
|
|
293
|
+
* @description インスタンス配列をクリア
|
|
294
|
+
*/
|
|
295
|
+
clearArraysInstanced(): void;
|
|
296
|
+
/**
|
|
297
|
+
* @description ピクセルバッファをNodeの指定箇所に転送
|
|
298
|
+
* WebGPUでは、Shapeのシェーダーが-ndc.yでY軸反転しているため、
|
|
299
|
+
* Bitmapも同じ方向になるよう画像を上下反転して書き込む
|
|
300
|
+
*/
|
|
301
|
+
drawPixels(node: Node, pixels: Uint8Array): void;
|
|
302
|
+
/**
|
|
303
|
+
* @description 一時テクスチャ経由でピクセルデータをMSAAテクスチャに描画
|
|
304
|
+
*/
|
|
305
|
+
private drawPixelsToMsaa;
|
|
306
|
+
/**
|
|
307
|
+
* @description OffscreenCanvasをNodeの指定箇所に転送
|
|
308
|
+
* WebGPUでは、Shapeのシェーダーが-ndc.yでY軸反転しているため、
|
|
309
|
+
* Bitmapも同じ方向になるよう画像を上下反転して書き込む
|
|
310
|
+
*/
|
|
311
|
+
drawElement(node: Node, element: OffscreenCanvas | ImageBitmap, flipY?: boolean): void;
|
|
312
|
+
/**
|
|
313
|
+
* @description 一時テクスチャ経由でMSAAテクスチャに直接描画
|
|
314
|
+
*/
|
|
315
|
+
private drawElementToMsaa;
|
|
316
|
+
/**
|
|
317
|
+
* @description 一時テクスチャ経由で通常テクスチャに描画(非MSAA版)
|
|
318
|
+
*/
|
|
319
|
+
private drawElementToTexture;
|
|
320
|
+
/**
|
|
321
|
+
* @description フィルターを適用
|
|
322
|
+
*/
|
|
323
|
+
applyFilter(node: Node, _unique_key: string, _updated: boolean, width: number, height: number, _is_bitmap: boolean, matrix: Float32Array, color_transform: Float32Array, blend_mode: IBlendMode, bounds: Float32Array, params: Float32Array): void;
|
|
324
|
+
/**
|
|
325
|
+
* @description コンテナのフィルター/ブレンド用のレイヤーを開始
|
|
326
|
+
* Begin a container layer for filter/blend processing
|
|
327
|
+
*
|
|
328
|
+
*/
|
|
329
|
+
containerBeginLayer(width: number, height: number): void;
|
|
330
|
+
/**
|
|
331
|
+
* @description コンテナのフィルター/ブレンド用レイヤーを終了し、結果を元のメインに合成
|
|
332
|
+
* End the container layer and composite the result back to the original main
|
|
333
|
+
*
|
|
334
|
+
* @param {IBlendMode} blend_mode
|
|
335
|
+
* @param {Float32Array} matrix
|
|
336
|
+
* @param {Float32Array | null} color_transform
|
|
337
|
+
* @param {boolean} use_filter
|
|
338
|
+
* @param {Float32Array | null} filter_bounds
|
|
339
|
+
* @param {Float32Array | null} filter_params
|
|
340
|
+
* @param {string} unique_key
|
|
341
|
+
* @param {string} filter_key
|
|
342
|
+
*/
|
|
343
|
+
containerEndLayer(blend_mode: IBlendMode, matrix: Float32Array, color_transform: Float32Array | null, use_filter: boolean, filter_bounds: Float32Array | null, filter_params: Float32Array | null, unique_key: string, filter_key: string): void;
|
|
344
|
+
/**
|
|
345
|
+
* @description キャッシュされたコンテナフィルターテクスチャをメインに描画
|
|
346
|
+
* Draw a cached container filter texture to the main attachment
|
|
347
|
+
*
|
|
348
|
+
* @param {IBlendMode} blend_mode
|
|
349
|
+
* @param {Float32Array} matrix
|
|
350
|
+
* @param {Float32Array} color_transform
|
|
351
|
+
* @param {Float32Array} filter_bounds
|
|
352
|
+
* @param {string} unique_key
|
|
353
|
+
* @param {string} filter_key
|
|
354
|
+
*/
|
|
355
|
+
containerDrawCachedFilter(blend_mode: IBlendMode, matrix: Float32Array, color_transform: Float32Array, filter_bounds: Float32Array, unique_key: string, filter_key: string): void;
|
|
356
|
+
/**
|
|
357
|
+
* @description メインテクスチャを確保(フレーム開始時に一度だけgetCurrentTexture呼び出し)
|
|
358
|
+
*/
|
|
359
|
+
private ensureMainTexture;
|
|
360
|
+
/**
|
|
361
|
+
* @description 現在の描画ターゲットのテクスチャビューを取得
|
|
362
|
+
*/
|
|
363
|
+
private getCurrentTextureView;
|
|
364
|
+
/**
|
|
365
|
+
* @description コマンドエンコーダーが存在することを保証
|
|
366
|
+
*/
|
|
367
|
+
private ensureCommandEncoder;
|
|
368
|
+
/**
|
|
369
|
+
* @description フレーム開始(レンダリング開始前に呼ぶ)
|
|
370
|
+
*/
|
|
371
|
+
beginFrame(): void;
|
|
372
|
+
/**
|
|
373
|
+
* @description フレームごとのプール管理テクスチャを追加(endFrame()でプールに返却)
|
|
374
|
+
*/
|
|
375
|
+
addFrameTexture(texture: GPUTexture): void;
|
|
376
|
+
/**
|
|
377
|
+
* @description フレーム終了とコマンド送信(レンダリング完了後に呼ぶ)
|
|
378
|
+
*/
|
|
379
|
+
endFrame(): void;
|
|
380
|
+
/**
|
|
381
|
+
* @description コマンドを送信(後方互換性のため残す)
|
|
382
|
+
*/
|
|
383
|
+
submit(): void;
|
|
384
|
+
/**
|
|
385
|
+
* @description ノードを作成
|
|
386
|
+
* アトラスがいっぱいの場合は新しいアトラスを作成して再試行
|
|
387
|
+
*/
|
|
388
|
+
createNode(width: number, height: number): Node;
|
|
389
|
+
/**
|
|
390
|
+
* @description ノードを削除
|
|
391
|
+
*/
|
|
392
|
+
removeNode(node: Node): void;
|
|
393
|
+
/**
|
|
394
|
+
* @description フレームバッファの描画情報をキャンバスに転送
|
|
395
|
+
* スワップチェーンはCopyDstをサポートしないため、レンダーパスでブリット
|
|
396
|
+
*/
|
|
397
|
+
transferMainCanvas(): void;
|
|
398
|
+
/**
|
|
399
|
+
* @description ImageBitmapを生成
|
|
400
|
+
*/
|
|
401
|
+
createImageBitmap(width: number, height: number): Promise<ImageBitmap>;
|
|
402
|
+
/**
|
|
403
|
+
* @description マスク描画の開始準備
|
|
404
|
+
* Prepare to start drawing the mask
|
|
405
|
+
*
|
|
406
|
+
*/
|
|
407
|
+
beginMask(): void;
|
|
408
|
+
/**
|
|
409
|
+
* @description マスクの描画範囲を設定
|
|
410
|
+
* Set the mask drawing bounds
|
|
411
|
+
*
|
|
412
|
+
* @param {number} x_min
|
|
413
|
+
* @param {number} y_min
|
|
414
|
+
* @param {number} x_max
|
|
415
|
+
* @param {number} y_max
|
|
416
|
+
*/
|
|
417
|
+
setMaskBounds(x_min: number, y_min: number, x_max: number, y_max: number): void;
|
|
418
|
+
/**
|
|
419
|
+
* @description マスクの描画を終了
|
|
420
|
+
* End mask drawing
|
|
421
|
+
*
|
|
422
|
+
*/
|
|
423
|
+
endMask(): void;
|
|
424
|
+
/**
|
|
425
|
+
* @description マスクの終了処理
|
|
426
|
+
* Mask end processing
|
|
427
|
+
*
|
|
428
|
+
*/
|
|
429
|
+
leaveMask(): void;
|
|
430
|
+
}
|