@next2d/webgpu 3.0.4 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +3 -3
- package/src/AtlasManager.d.ts +75 -6
- package/src/AtlasManager.js +106 -30
- package/src/AttachmentManager/service/AttachmentManagerCreateAttachmentObjectService.d.ts +2 -2
- package/src/AttachmentManager/service/AttachmentManagerCreateAttachmentObjectService.js +3 -3
- package/src/AttachmentManager/service/AttachmentManagerCreateColorBufferService.d.ts +4 -4
- package/src/AttachmentManager/service/AttachmentManagerCreateColorBufferService.js +4 -4
- package/src/AttachmentManager/service/AttachmentManagerCreateStencilBufferService.d.ts +5 -5
- package/src/AttachmentManager/service/AttachmentManagerCreateStencilBufferService.js +6 -6
- package/src/AttachmentManager/service/AttachmentManagerCreateTextureObjectService.d.ts +6 -6
- package/src/AttachmentManager/service/AttachmentManagerCreateTextureObjectService.js +7 -7
- package/src/AttachmentManager/service/AttachmentManagerGetColorBufferService.d.ts +6 -6
- package/src/AttachmentManager/service/AttachmentManagerGetColorBufferService.js +9 -9
- package/src/AttachmentManager/service/AttachmentManagerGetStencilBufferService.d.ts +6 -6
- package/src/AttachmentManager/service/AttachmentManagerGetStencilBufferService.js +10 -10
- package/src/AttachmentManager/service/AttachmentManagerGetTextureService.d.ts +7 -7
- package/src/AttachmentManager/service/AttachmentManagerGetTextureService.js +10 -10
- package/src/AttachmentManager/service/AttachmentManagerReleaseTextureService.d.ts +3 -3
- package/src/AttachmentManager/service/AttachmentManagerReleaseTextureService.js +7 -7
- package/src/AttachmentManager/usecase/AttachmentManagerGetAttachmentObjectUseCase.d.ts +10 -10
- package/src/AttachmentManager/usecase/AttachmentManagerGetAttachmentObjectUseCase.js +16 -16
- package/src/AttachmentManager/usecase/AttachmentManagerReleaseAttachmentUseCase.d.ts +6 -6
- package/src/AttachmentManager/usecase/AttachmentManagerReleaseAttachmentUseCase.js +10 -10
- package/src/AttachmentManager.d.ts +28 -6
- package/src/AttachmentManager.js +28 -23
- package/src/BezierConverter/BezierConverter.d.ts +9 -3
- package/src/BezierConverter/BezierConverter.js +5 -3
- package/src/BezierConverter/usecase/BezierConverterAdaptiveCubicToQuadUseCase.d.ts +2 -13
- package/src/BezierConverter/usecase/BezierConverterAdaptiveCubicToQuadUseCase.js +13 -25
- package/src/Blend/BlendInstancedManager.d.ts +19 -15
- package/src/Blend/BlendInstancedManager.js +35 -22
- package/src/Blend/usecase/BlendApplyComplexBlendUseCase.d.ts +9 -2
- package/src/Blend/usecase/BlendApplyComplexBlendUseCase.js +28 -17
- package/src/Blend.d.ts +20 -2
- package/src/Blend.js +20 -4
- package/src/BufferManager/service/BufferManagerReleaseUniformBufferService.js +2 -2
- package/src/BufferManager/service/BufferManagerReleaseVertexBufferService.js +2 -2
- package/src/BufferManager/service/BufferManagerUpdateIndirectBufferService.d.ts +1 -0
- package/src/BufferManager/service/BufferManagerUpdateIndirectBufferService.js +1 -0
- package/src/BufferManager/usecase/BufferManagerCleanupStorageBuffersUseCase.d.ts +1 -0
- package/src/BufferManager/usecase/BufferManagerCleanupStorageBuffersUseCase.js +1 -0
- package/src/BufferManager.d.ts +108 -43
- package/src/BufferManager.js +113 -153
- package/src/Context/service/ContextComputeBitmapMatrixService.d.ts +7 -0
- package/src/Context/service/ContextComputeBitmapMatrixService.js +7 -0
- package/src/Context/service/ContextComputeGradientMatrixService.d.ts +9 -1
- package/src/Context/service/ContextComputeGradientMatrixService.js +15 -7
- package/src/Context/service/ContextFillSimpleService.d.ts +14 -0
- package/src/Context/service/ContextFillSimpleService.js +14 -0
- package/src/Context/service/ContextFillWithStencilMainService.d.ts +11 -0
- package/src/Context/service/ContextFillWithStencilMainService.js +11 -0
- package/src/Context/service/ContextFillWithStencilService.d.ts +11 -0
- package/src/Context/service/ContextFillWithStencilService.js +11 -0
- package/src/Context/usecase/ContextApplyFilterUseCase.d.ts +17 -0
- package/src/Context/usecase/ContextApplyFilterUseCase.js +201 -62
- package/src/Context/usecase/ContextBitmapFillUseCase.d.ts +23 -0
- package/src/Context/usecase/ContextBitmapFillUseCase.js +47 -0
- package/src/Context/usecase/ContextBitmapStrokeUseCase.d.ts +23 -0
- package/src/Context/usecase/ContextBitmapStrokeUseCase.js +35 -0
- package/src/Context/usecase/ContextClipUseCase.d.ts +15 -0
- package/src/Context/usecase/ContextClipUseCase.js +19 -0
- package/src/Context/usecase/ContextContainerEndLayerUseCase.d.ts +21 -1
- package/src/Context/usecase/ContextContainerEndLayerUseCase.js +195 -104
- package/src/Context/usecase/ContextDrawArraysInstancedUseCase.d.ts +13 -0
- package/src/Context/usecase/ContextDrawArraysInstancedUseCase.js +41 -20
- package/src/Context/usecase/ContextDrawIndirectUseCase.d.ts +16 -1
- package/src/Context/usecase/ContextDrawIndirectUseCase.js +53 -30
- package/src/Context/usecase/ContextGradientFillUseCase.d.ts +23 -0
- package/src/Context/usecase/ContextGradientFillUseCase.js +47 -0
- package/src/Context/usecase/ContextGradientStrokeUseCase.d.ts +23 -0
- package/src/Context/usecase/ContextGradientStrokeUseCase.js +35 -0
- package/src/Context/usecase/ContextProcessComplexBlendQueueUseCase.d.ts +13 -1
- package/src/Context/usecase/ContextProcessComplexBlendQueueUseCase.js +126 -60
- package/src/Context.d.ts +445 -63
- package/src/Context.js +566 -144
- package/src/FillTexturePool.d.ts +39 -0
- package/src/FillTexturePool.js +70 -7
- package/src/Filter/BevelFilter/FilterApplyBevelFilterUseCase.d.ts +21 -2
- package/src/Filter/BevelFilter/FilterApplyBevelFilterUseCase.js +33 -26
- package/src/Filter/BlurFilter/FilterApplyBlurFilterUseCase.d.ts +5 -5
- package/src/Filter/BlurFilter/FilterApplyBlurFilterUseCase.js +81 -64
- package/src/Filter/BlurFilterUseCase.d.ts +15 -11
- package/src/Filter/BlurFilterUseCase.js +22 -17
- package/src/Filter/ColorMatrixFilter/FilterApplyColorMatrixFilterUseCase.d.ts +2 -2
- package/src/Filter/ColorMatrixFilter/FilterApplyColorMatrixFilterUseCase.js +5 -5
- package/src/Filter/ConvolutionFilter/FilterApplyConvolutionFilterUseCase.d.ts +15 -1
- package/src/Filter/ConvolutionFilter/FilterApplyConvolutionFilterUseCase.js +23 -17
- package/src/Filter/DisplacementMapFilter/FilterApplyDisplacementMapFilterUseCase.d.ts +20 -1
- package/src/Filter/DisplacementMapFilter/FilterApplyDisplacementMapFilterUseCase.js +37 -26
- package/src/Filter/DropShadowFilter/FilterApplyDropShadowFilterUseCase.d.ts +7 -7
- package/src/Filter/DropShadowFilter/FilterApplyDropShadowFilterUseCase.js +19 -31
- package/src/Filter/FilterGradientLUTCache.js +2 -0
- package/src/Filter/FilterUtil.d.ts +23 -0
- package/src/Filter/FilterUtil.js +33 -0
- package/src/Filter/GlowFilter/FilterApplyGlowFilterUseCase.d.ts +5 -5
- package/src/Filter/GlowFilter/FilterApplyGlowFilterUseCase.js +12 -21
- package/src/Filter/GradientBevelFilter/FilterApplyGradientBevelFilterUseCase.d.ts +6 -6
- package/src/Filter/GradientBevelFilter/FilterApplyGradientBevelFilterUseCase.js +16 -19
- package/src/Filter/GradientGlowFilter/FilterApplyGradientGlowFilterUseCase.d.ts +5 -5
- package/src/Filter/GradientGlowFilter/FilterApplyGradientGlowFilterUseCase.js +13 -16
- package/src/FrameBufferManager/service/FrameBufferManagerCreateRenderPassDescriptorService.d.ts +13 -1
- package/src/FrameBufferManager/service/FrameBufferManagerCreateRenderPassDescriptorService.js +30 -3
- package/src/FrameBufferManager/service/FrameBufferManagerCreateStencilRenderPassDescriptorService.d.ts +11 -1
- package/src/FrameBufferManager/service/FrameBufferManagerCreateStencilRenderPassDescriptorService.js +36 -6
- package/src/FrameBufferManager/usecase/FrameBufferManagerCreateAttachmentUseCase.d.ts +10 -10
- package/src/FrameBufferManager/usecase/FrameBufferManagerCreateAttachmentUseCase.js +15 -15
- package/src/FrameBufferManager/usecase/FrameBufferManagerReleaseTemporaryAttachmentUseCase.d.ts +4 -4
- package/src/FrameBufferManager/usecase/FrameBufferManagerReleaseTemporaryAttachmentUseCase.js +5 -5
- package/src/FrameBufferManager.d.ts +95 -3
- package/src/FrameBufferManager.js +97 -8
- package/src/Gradient/GradientLUTCache.d.ts +36 -4
- package/src/Gradient/GradientLUTCache.js +61 -5
- package/src/Gradient/GradientLUTGenerator.d.ts +26 -14
- package/src/Gradient/GradientLUTGenerator.js +74 -43
- package/src/Mask/service/MaskUnionMaskService.d.ts +16 -1
- package/src/Mask/service/MaskUnionMaskService.js +45 -31
- package/src/Mask.d.ts +57 -3
- package/src/Mask.js +75 -11
- package/src/Mesh/service/MeshFillGenerateService.d.ts +4 -4
- package/src/Mesh/service/MeshFillGenerateService.js +4 -4
- package/src/Mesh/service/MeshStrokeFillGenerateService.d.ts +4 -4
- package/src/Mesh/service/MeshStrokeFillGenerateService.js +4 -4
- package/src/Mesh/usecase/MeshBitmapStrokeGenerateUseCase.d.ts +3 -3
- package/src/Mesh/usecase/MeshBitmapStrokeGenerateUseCase.js +10 -3
- package/src/Mesh/usecase/MeshFillGenerateUseCase.d.ts +2 -2
- package/src/Mesh/usecase/MeshFillGenerateUseCase.js +9 -2
- package/src/Mesh/usecase/MeshGradientStrokeGenerateUseCase.d.ts +3 -3
- package/src/Mesh/usecase/MeshGradientStrokeGenerateUseCase.js +10 -3
- package/src/Mesh/usecase/MeshStrokeGenerateUseCase.d.ts +8 -14
- package/src/Mesh/usecase/MeshStrokeGenerateUseCase.js +214 -129
- package/src/PathCommand.d.ts +24 -23
- package/src/PathCommand.js +25 -79
- package/src/Shader/PipelineManager.d.ts +223 -6
- package/src/Shader/PipelineManager.js +308 -66
- package/src/Shader/ShaderInstancedManager.d.ts +17 -0
- package/src/Shader/ShaderInstancedManager.js +17 -0
- package/src/Shader/ShaderSource.d.ts +317 -12
- package/src/Shader/ShaderSource.js +328 -39
- package/src/Shader/wgsl/common/SharedWgsl.d.ts +28 -1
- package/src/Shader/wgsl/common/SharedWgsl.js +28 -9
- package/src/Shader/wgsl/fragment/BasicFragment.d.ts +14 -0
- package/src/Shader/wgsl/fragment/BasicFragment.js +14 -0
- package/src/Shader/wgsl/fragment/BitmapFragment.d.ts +7 -0
- package/src/Shader/wgsl/fragment/BitmapFragment.js +7 -0
- package/src/Shader/wgsl/fragment/EffectFragment.d.ts +42 -0
- package/src/Shader/wgsl/fragment/EffectFragment.js +42 -0
- package/src/Shader/wgsl/fragment/FillFragment.d.ts +7 -0
- package/src/Shader/wgsl/fragment/FillFragment.js +7 -0
- package/src/Shader/wgsl/fragment/FilterFragment.d.ts +70 -0
- package/src/Shader/wgsl/fragment/FilterFragment.js +70 -0
- package/src/Shader/wgsl/fragment/GradientFragment.d.ts +21 -0
- package/src/Shader/wgsl/fragment/GradientFragment.js +43 -8
- package/src/Shader/wgsl/fragment/InstancedFragment.d.ts +7 -0
- package/src/Shader/wgsl/fragment/InstancedFragment.js +7 -0
- package/src/Shader/wgsl/fragment/MaskFragment.d.ts +7 -0
- package/src/Shader/wgsl/fragment/MaskFragment.js +7 -0
- package/src/Shader/wgsl/fragment/StencilFragment.d.ts +14 -0
- package/src/Shader/wgsl/fragment/StencilFragment.js +14 -0
- package/src/Shader/wgsl/vertex/BasicVertex.d.ts +7 -0
- package/src/Shader/wgsl/vertex/BasicVertex.js +7 -0
- package/src/Shader/wgsl/vertex/BitmapVertex.d.ts +7 -0
- package/src/Shader/wgsl/vertex/BitmapVertex.js +7 -0
- package/src/Shader/wgsl/vertex/FillVertex.d.ts +7 -0
- package/src/Shader/wgsl/vertex/FillVertex.js +7 -0
- package/src/Shader/wgsl/vertex/FilterVertex.d.ts +77 -1
- package/src/Shader/wgsl/vertex/FilterVertex.js +135 -42
- package/src/Shader/wgsl/vertex/GradientVertex.d.ts +7 -0
- package/src/Shader/wgsl/vertex/GradientVertex.js +7 -0
- package/src/Shader/wgsl/vertex/InstancedVertex.d.ts +7 -0
- package/src/Shader/wgsl/vertex/InstancedVertex.js +7 -0
- package/src/Shader/wgsl/vertex/MaskVertex.d.ts +7 -0
- package/src/Shader/wgsl/vertex/MaskVertex.js +7 -0
- package/src/Shader/wgsl/vertex/StencilVertex.d.ts +14 -0
- package/src/Shader/wgsl/vertex/StencilVertex.js +14 -0
- package/src/TextureManager/service/TextureManagerInitializeSamplersService.d.ts +2 -2
- package/src/TextureManager/service/TextureManagerInitializeSamplersService.js +2 -2
- package/src/TextureManager.d.ts +36 -5
- package/src/TextureManager.js +36 -24
- package/src/TexturePool/service/TexturePoolCleanupService.d.ts +4 -4
- package/src/TexturePool/service/TexturePoolCleanupService.js +6 -6
- package/src/TexturePool/service/TexturePoolReleaseService.d.ts +4 -4
- package/src/TexturePool/service/TexturePoolReleaseService.js +5 -5
- package/src/TexturePool/usecase/TexturePoolAcquireUseCase.d.ts +10 -10
- package/src/TexturePool/usecase/TexturePoolAcquireUseCase.js +19 -18
- package/src/TexturePool.d.ts +36 -35
- package/src/TexturePool.js +44 -65
- package/src/WebGPUUtil.d.ts +79 -34
- package/src/WebGPUUtil.js +79 -36
- package/src/interface/IAttachmentObject.d.ts +36 -0
- package/src/interface/IBlendMode.d.ts +7 -0
- package/src/interface/IBlendState.d.ts +8 -0
- package/src/interface/IBounds.d.ts +23 -0
- package/src/interface/IColorBufferObject.d.ts +28 -0
- package/src/interface/IComplexBlendItem.d.ts +48 -0
- package/src/interface/IFilterConfig.d.ts +28 -2
- package/src/interface/IGradientStop.d.ts +20 -0
- package/src/interface/ILocalFilterConfig.d.ts +32 -2
- package/src/interface/IMeshResult.d.ts +8 -0
- package/src/interface/IPoint.d.ts +12 -0
- package/src/interface/IPooledTexture.d.ts +24 -0
- package/src/interface/IQuadraticSegment.d.ts +8 -0
- package/src/interface/IStencilBufferObject.d.ts +28 -0
- package/src/interface/IStorageBufferConfig.d.ts +8 -1
- package/src/interface/ITextureObject.d.ts +28 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateRenderPassDescriptorService.d.ts +0 -5
- package/src/AttachmentManager/service/AttachmentManagerCreateRenderPassDescriptorService.js +0 -42
- package/src/Blend/service/BlendAddService.d.ts +0 -1
- package/src/Blend/service/BlendAddService.js +0 -8
- package/src/Blend/service/BlendAlphaService.d.ts +0 -1
- package/src/Blend/service/BlendAlphaService.js +0 -8
- package/src/Blend/service/BlendEraseService.d.ts +0 -1
- package/src/Blend/service/BlendEraseService.js +0 -8
- package/src/Blend/service/BlendGetStateService.d.ts +0 -12
- package/src/Blend/service/BlendGetStateService.js +0 -13
- package/src/Blend/service/BlendOneZeroService.d.ts +0 -1
- package/src/Blend/service/BlendOneZeroService.js +0 -8
- package/src/Blend/service/BlendResetService.d.ts +0 -1
- package/src/Blend/service/BlendResetService.js +0 -8
- package/src/Blend/service/BlendScreenService.d.ts +0 -1
- package/src/Blend/service/BlendScreenService.js +0 -8
- package/src/Blend/service/BlendSetModeService.d.ts +0 -2
- package/src/Blend/service/BlendSetModeService.js +0 -4
- package/src/Blend/usecase/BlendOperationUseCase.d.ts +0 -11
- package/src/Blend/usecase/BlendOperationUseCase.js +0 -31
- package/src/BufferManager/usecase/BufferManagerReleaseStorageBufferUseCase.d.ts +0 -9
- package/src/BufferManager/usecase/BufferManagerReleaseStorageBufferUseCase.js +0 -15
- package/src/Compute/ComputePipelineManager.d.ts +0 -61
- package/src/Compute/ComputePipelineManager.js +0 -313
- package/src/Compute/service/ComputeExecuteBlurService.d.ts +0 -21
- package/src/Compute/service/ComputeExecuteBlurService.js +0 -81
- package/src/Filter/BevelFilterShader.d.ts +0 -2
- package/src/Filter/BevelFilterShader.js +0 -107
- package/src/Filter/BitmapFilterShader.d.ts +0 -2
- package/src/Filter/BitmapFilterShader.js +0 -207
- package/src/Filter/BlurFilter/service/BlurFilterComputeShaderService.d.ts +0 -40
- package/src/Filter/BlurFilter/service/BlurFilterComputeShaderService.js +0 -51
- package/src/Filter/BlurFilter/usecase/FilterApplyBlurComputeUseCase.d.ts +0 -25
- package/src/Filter/BlurFilter/usecase/FilterApplyBlurComputeUseCase.js +0 -180
- package/src/Filter/BlurFilterShader.d.ts +0 -5
- package/src/Filter/BlurFilterShader.js +0 -109
- package/src/Filter/ColorMatrixFilterShader.d.ts +0 -4
- package/src/Filter/ColorMatrixFilterShader.js +0 -51
- package/src/Filter/ConvolutionFilterShader.d.ts +0 -2
- package/src/Filter/ConvolutionFilterShader.js +0 -115
- package/src/Filter/DisplacementMapFilterShader.d.ts +0 -2
- package/src/Filter/DisplacementMapFilterShader.js +0 -114
- package/src/Filter/DropShadowFilterShader.d.ts +0 -4
- package/src/Filter/DropShadowFilterShader.js +0 -93
- package/src/Filter/GlowFilterShader.d.ts +0 -4
- package/src/Filter/GlowFilterShader.js +0 -66
- package/src/FrameBufferManager/service/FrameBufferManagerFlushPendingReleasesService.d.ts +0 -11
- package/src/FrameBufferManager/service/FrameBufferManagerFlushPendingReleasesService.js +0 -19
- package/src/Mask/usecase/MaskBindUseCase.d.ts +0 -10
- package/src/Mask/usecase/MaskBindUseCase.js +0 -20
- package/src/Mesh/service/MeshLerpService.d.ts +0 -13
- package/src/Mesh/service/MeshLerpService.js +0 -17
- package/src/Mesh/usecase/MeshSplitQuadraticBezierUseCase.d.ts +0 -14
- package/src/Mesh/usecase/MeshSplitQuadraticBezierUseCase.js +0 -28
- package/src/Mesh/usecase/MeshStrokeFillGenerateUseCase.d.ts +0 -18
- package/src/Mesh/usecase/MeshStrokeFillGenerateUseCase.js +0 -54
- package/src/SamplerCache/service/SamplerCacheCreateCommonSamplersService.d.ts +0 -11
- package/src/SamplerCache/service/SamplerCacheCreateCommonSamplersService.js +0 -35
- package/src/SamplerCache/service/SamplerCacheGenerateKeyService.d.ts +0 -13
- package/src/SamplerCache/service/SamplerCacheGenerateKeyService.js +0 -15
- package/src/SamplerCache/service/SamplerCacheGetOrCreateService.d.ts +0 -15
- package/src/SamplerCache/service/SamplerCacheGetOrCreateService.js +0 -30
- package/src/SamplerCache.d.ts +0 -18
- package/src/SamplerCache.js +0 -61
- package/src/Shader/BlendModeShader.d.ts +0 -51
- package/src/Shader/BlendModeShader.js +0 -71
- package/src/Shader/GradientLUTGenerator/service/GradientLUTCalculateResolutionService.d.ts +0 -12
- package/src/Shader/GradientLUTGenerator/service/GradientLUTCalculateResolutionService.js +0 -28
- package/src/Shader/GradientLUTGenerator/service/GradientLUTGeneratePixelsService.d.ts +0 -13
- package/src/Shader/GradientLUTGenerator/service/GradientLUTGeneratePixelsService.js +0 -61
- package/src/Shader/GradientLUTGenerator/service/GradientLUTInterpolateColorService.d.ts +0 -19
- package/src/Shader/GradientLUTGenerator/service/GradientLUTInterpolateColorService.js +0 -37
- package/src/Shader/GradientLUTGenerator/service/GradientLUTParseStopsService.d.ts +0 -11
- package/src/Shader/GradientLUTGenerator/service/GradientLUTParseStopsService.js +0 -24
- package/src/Shader/GradientLUTGenerator/usecase/GradientLUTGenerateDataUseCase.d.ts +0 -14
- package/src/Shader/GradientLUTGenerator/usecase/GradientLUTGenerateDataUseCase.js +0 -24
- package/src/Shader/wgsl/fragment/BlendFragment.d.ts +0 -8
- package/src/Shader/wgsl/fragment/BlendFragment.js +0 -63
- package/src/TextureManager/usecase/TextureManagerCreateTextureFromImageBitmapUseCase.d.ts +0 -13
- package/src/TextureManager/usecase/TextureManagerCreateTextureFromImageBitmapUseCase.js +0 -30
- package/src/TextureManager/usecase/TextureManagerCreateTextureFromPixelsUseCase.d.ts +0 -15
- package/src/TextureManager/usecase/TextureManagerCreateTextureFromPixelsUseCase.js +0 -26
- package/src/TexturePool/service/TexturePoolEvictOldestService.d.ts +0 -11
- package/src/TexturePool/service/TexturePoolEvictOldestService.js +0 -24
- package/src/interface/ICachedBindGroup.d.ts +0 -8
- package/src/interface/ICachedBindGroup.js +0 -1
- package/src/interface/IGradientLUTData.d.ts +0 -8
- package/src/interface/IGradientLUTData.js +0 -1
- package/src/interface/IPooledBuffer.d.ts +0 -8
- package/src/interface/IPooledBuffer.js +0 -1
- package/src/interface/IRectangleInfo.d.ts +0 -13
- package/src/interface/IRectangleInfo.js +0 -1
|
@@ -2,86 +2,152 @@ import { getComplexBlendQueue, clearComplexBlendQueue } from "../../Blend/BlendI
|
|
|
2
2
|
import { execute as blendApplyComplexBlendUseCase } from "../../Blend/usecase/BlendApplyComplexBlendUseCase";
|
|
3
3
|
import { $getAtlasAttachmentObject } from "../../AtlasManager";
|
|
4
4
|
// プリアロケート配列
|
|
5
|
+
/**
|
|
6
|
+
* @description ユニフォームデータの事前確保配列(4要素)
|
|
7
|
+
* Pre-allocated uniform data array (4 elements)
|
|
8
|
+
*/
|
|
5
9
|
const $uniform4 = new Float32Array(4);
|
|
10
|
+
/**
|
|
11
|
+
* @description ユニフォームデータの事前確保配列(6要素)
|
|
12
|
+
* Pre-allocated uniform data array (6 elements)
|
|
13
|
+
*/
|
|
6
14
|
const $uniform6 = new Float32Array(6);
|
|
15
|
+
/**
|
|
16
|
+
* @description ユニフォームデータの事前確保配列(8要素)
|
|
17
|
+
* Pre-allocated uniform data array (8 elements)
|
|
18
|
+
*/
|
|
7
19
|
const $uniform8 = new Float32Array(8);
|
|
20
|
+
/**
|
|
21
|
+
* @description ユニフォームデータの事前確保配列(12要素)
|
|
22
|
+
* Pre-allocated uniform data array (12 elements)
|
|
23
|
+
*/
|
|
8
24
|
const $uniform12 = new Float32Array(12);
|
|
9
25
|
// プリアロケート BindGroup Entry 配列
|
|
26
|
+
/**
|
|
27
|
+
* @description バインドグループエントリの事前確保配列
|
|
28
|
+
* Pre-allocated bind group entry array
|
|
29
|
+
*/
|
|
10
30
|
const $entries3 = [
|
|
11
31
|
{ "binding": 0, "resource": { "buffer": null } },
|
|
12
32
|
{ "binding": 1, "resource": null },
|
|
13
33
|
{ "binding": 2, "resource": null }
|
|
14
34
|
];
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
35
|
+
/**
|
|
36
|
+
* @description レンダーパスを使用してテクスチャ領域をコピーする
|
|
37
|
+
* Copies a texture region via render pass
|
|
38
|
+
* @param {GPUDevice} device GPUデバイス / GPU device
|
|
39
|
+
* @param {GPUCommandEncoder} command_encoder コマンドエンコーダ / Command encoder
|
|
40
|
+
* @param {GPUTextureView} src_view ソーステクスチャビュー / Source texture view
|
|
41
|
+
* @param {IAttachmentObject} dst_attachment デスティネーションアタッチメント / Destination attachment
|
|
42
|
+
* @param {number} src_x ソースX座標 / Source X coordinate
|
|
43
|
+
* @param {number} src_y ソースY座標 / Source Y coordinate
|
|
44
|
+
* @param {number} src_width ソース幅 / Source width
|
|
45
|
+
* @param {number} src_height ソース高さ / Source height
|
|
46
|
+
* @param {number} copy_width コピー幅 / Copy width
|
|
47
|
+
* @param {number} copy_height コピー高さ / Copy height
|
|
48
|
+
* @param {FrameBufferManager} frame_buffer_manager フレームバッファマネージャ / Frame buffer manager
|
|
49
|
+
* @param {TextureManager} texture_manager テクスチャマネージャ / Texture manager
|
|
50
|
+
* @param {PipelineManager} pipeline_manager パイプラインマネージャ / Pipeline manager
|
|
51
|
+
* @param {BufferManager} buffer_manager バッファマネージャ / Buffer manager
|
|
52
|
+
* @return {void}
|
|
53
|
+
*/
|
|
54
|
+
const $copyTextureRegionViaRenderPass = (device, command_encoder, src_view, dst_attachment, src_x, src_y, src_width, src_height, copy_width, copy_height, frame_buffer_manager, texture_manager, pipeline_manager, buffer_manager) => {
|
|
55
|
+
const pipeline = pipeline_manager.getPipeline("complex_blend_copy");
|
|
56
|
+
const bindGroupLayout = pipeline_manager.getBindGroupLayout("texture_copy");
|
|
18
57
|
if (!pipeline || !bindGroupLayout) {
|
|
19
58
|
return;
|
|
20
59
|
}
|
|
21
|
-
$uniform4[0] =
|
|
22
|
-
$uniform4[1] =
|
|
23
|
-
$uniform4[2] =
|
|
24
|
-
$uniform4[3] =
|
|
25
|
-
const uniformBuffer =
|
|
26
|
-
const sampler =
|
|
60
|
+
$uniform4[0] = copy_width / src_width;
|
|
61
|
+
$uniform4[1] = copy_height / src_height;
|
|
62
|
+
$uniform4[2] = src_x / src_width;
|
|
63
|
+
$uniform4[3] = src_y / src_height;
|
|
64
|
+
const uniformBuffer = buffer_manager.acquireAndWriteUniformBuffer($uniform4);
|
|
65
|
+
const sampler = texture_manager.createSampler("complex_blend_copy_sampler", false);
|
|
27
66
|
$entries3[0].resource.buffer = uniformBuffer;
|
|
28
67
|
$entries3[1].resource = sampler;
|
|
29
|
-
$entries3[2].resource =
|
|
68
|
+
$entries3[2].resource = src_view;
|
|
30
69
|
const bindGroup = device.createBindGroup({
|
|
31
70
|
"layout": bindGroupLayout,
|
|
32
71
|
"entries": $entries3
|
|
33
72
|
});
|
|
34
|
-
const renderPassDescriptor =
|
|
35
|
-
const passEncoder =
|
|
73
|
+
const renderPassDescriptor = frame_buffer_manager.createRenderPassDescriptor(dst_attachment.texture.view, 0, 0, 0, 0, "clear");
|
|
74
|
+
const passEncoder = command_encoder.beginRenderPass(renderPassDescriptor);
|
|
36
75
|
passEncoder.setPipeline(pipeline);
|
|
37
76
|
passEncoder.setBindGroup(0, bindGroup);
|
|
38
77
|
passEncoder.draw(6, 1, 0, 0);
|
|
39
78
|
passEncoder.end();
|
|
40
79
|
};
|
|
41
|
-
|
|
42
|
-
|
|
80
|
+
/**
|
|
81
|
+
* @description ブレンド結果をメインアタッチメントに描画する
|
|
82
|
+
* Draws blend result to the main attachment
|
|
83
|
+
* @param {GPUDevice} device GPUデバイス / GPU device
|
|
84
|
+
* @param {GPUCommandEncoder} command_encoder コマンドエンコーダ / Command encoder
|
|
85
|
+
* @param {IAttachmentObject} src_attachment ソースアタッチメント / Source attachment
|
|
86
|
+
* @param {IAttachmentObject} main_attachment メインアタッチメント / Main attachment
|
|
87
|
+
* @param {number} dst_x デスティネーションX座標 / Destination X coordinate
|
|
88
|
+
* @param {number} dst_y デスティネーションY座標 / Destination Y coordinate
|
|
89
|
+
* @param {FrameBufferManager} frame_buffer_manager フレームバッファマネージャ / Frame buffer manager
|
|
90
|
+
* @param {TextureManager} texture_manager テクスチャマネージャ / Texture manager
|
|
91
|
+
* @param {PipelineManager} pipeline_manager パイプラインマネージャ / Pipeline manager
|
|
92
|
+
* @param {BufferManager} buffer_manager バッファマネージャ / Buffer manager
|
|
93
|
+
* @return {void}
|
|
94
|
+
*/
|
|
95
|
+
const $drawToMainAttachment = (device, command_encoder, src_attachment, main_attachment, dst_x, dst_y, frame_buffer_manager, texture_manager, pipeline_manager, buffer_manager) => {
|
|
96
|
+
const useMsaa = main_attachment.msaa && main_attachment.msaaTexture?.view;
|
|
43
97
|
const pipelineName = useMsaa ? "complex_blend_output_msaa" : "complex_blend_output";
|
|
44
|
-
const pipeline =
|
|
45
|
-
const bindGroupLayout =
|
|
98
|
+
const pipeline = pipeline_manager.getPipeline(pipelineName);
|
|
99
|
+
const bindGroupLayout = pipeline_manager.getBindGroupLayout("positioned_texture");
|
|
46
100
|
if (!pipeline || !bindGroupLayout) {
|
|
47
101
|
return;
|
|
48
102
|
}
|
|
49
|
-
$uniform8[0] =
|
|
50
|
-
$uniform8[1] =
|
|
51
|
-
$uniform8[2] =
|
|
52
|
-
$uniform8[3] =
|
|
53
|
-
$uniform8[4] =
|
|
54
|
-
$uniform8[5] =
|
|
103
|
+
$uniform8[0] = dst_x;
|
|
104
|
+
$uniform8[1] = dst_y;
|
|
105
|
+
$uniform8[2] = src_attachment.width;
|
|
106
|
+
$uniform8[3] = src_attachment.height;
|
|
107
|
+
$uniform8[4] = main_attachment.width;
|
|
108
|
+
$uniform8[5] = main_attachment.height;
|
|
55
109
|
$uniform8[6] = 0;
|
|
56
110
|
$uniform8[7] = 0;
|
|
57
|
-
const uniformBuffer =
|
|
58
|
-
const sampler =
|
|
111
|
+
const uniformBuffer = buffer_manager.acquireAndWriteUniformBuffer($uniform8);
|
|
112
|
+
const sampler = texture_manager.createSampler("complex_blend_output_sampler", false);
|
|
59
113
|
$entries3[0].resource.buffer = uniformBuffer;
|
|
60
114
|
$entries3[1].resource = sampler;
|
|
61
|
-
$entries3[2].resource =
|
|
115
|
+
$entries3[2].resource = src_attachment.texture.view;
|
|
62
116
|
const bindGroup = device.createBindGroup({
|
|
63
117
|
"layout": bindGroupLayout,
|
|
64
118
|
"entries": $entries3
|
|
65
119
|
});
|
|
66
|
-
const colorView = useMsaa ?
|
|
67
|
-
const resolveTarget = useMsaa ?
|
|
68
|
-
const renderPassDescriptor =
|
|
69
|
-
const passEncoder =
|
|
120
|
+
const colorView = useMsaa ? main_attachment.msaaTexture.view : main_attachment.texture.view;
|
|
121
|
+
const resolveTarget = useMsaa ? main_attachment.texture.view : null;
|
|
122
|
+
const renderPassDescriptor = frame_buffer_manager.createRenderPassDescriptor(colorView, 0, 0, 0, 0, "load", resolveTarget);
|
|
123
|
+
const passEncoder = command_encoder.beginRenderPass(renderPassDescriptor);
|
|
70
124
|
passEncoder.setPipeline(pipeline);
|
|
71
125
|
passEncoder.setBindGroup(0, bindGroup);
|
|
72
126
|
passEncoder.draw(6, 1, 0, 0);
|
|
73
127
|
passEncoder.end();
|
|
74
128
|
};
|
|
75
|
-
|
|
129
|
+
/**
|
|
130
|
+
* @description 複雑なブレンドモードキューを処理する
|
|
131
|
+
* Processes the complex blend mode queue
|
|
132
|
+
* @param {GPUDevice} device GPUデバイス / GPU device
|
|
133
|
+
* @param {GPUCommandEncoder} command_encoder コマンドエンコーダ / Command encoder
|
|
134
|
+
* @param {IAttachmentObject | null} main_attachment メインアタッチメント / Main attachment
|
|
135
|
+
* @param {FrameBufferManager} frame_buffer_manager フレームバッファマネージャ / Frame buffer manager
|
|
136
|
+
* @param {TextureManager} texture_manager テクスチャマネージャ / Texture manager
|
|
137
|
+
* @param {PipelineManager} pipeline_manager パイプラインマネージャ / Pipeline manager
|
|
138
|
+
* @param {BufferManager} buffer_manager バッファマネージャ / Buffer manager
|
|
139
|
+
* @return {void}
|
|
140
|
+
*/
|
|
141
|
+
export const execute = (device, command_encoder, main_attachment, frame_buffer_manager, texture_manager, pipeline_manager, buffer_manager) => {
|
|
76
142
|
const queue = getComplexBlendQueue();
|
|
77
143
|
if (queue.length === 0) {
|
|
78
144
|
return;
|
|
79
145
|
}
|
|
80
|
-
if (!
|
|
146
|
+
if (!main_attachment || !main_attachment.texture) {
|
|
81
147
|
clearComplexBlendQueue();
|
|
82
148
|
return;
|
|
83
149
|
}
|
|
84
|
-
const atlasAttachment = $getAtlasAttachmentObject() ||
|
|
150
|
+
const atlasAttachment = $getAtlasAttachmentObject() || frame_buffer_manager.getAttachment("atlas");
|
|
85
151
|
if (!atlasAttachment || !atlasAttachment.texture) {
|
|
86
152
|
clearComplexBlendQueue();
|
|
87
153
|
return;
|
|
@@ -95,23 +161,23 @@ export const execute = (device, commandEncoder, mainAttachment, frameBufferManag
|
|
|
95
161
|
}
|
|
96
162
|
const dstX = Math.max(0, Math.floor(matrix[6]));
|
|
97
163
|
const dstY = Math.max(0, Math.floor(matrix[7]));
|
|
98
|
-
if (dstX >=
|
|
164
|
+
if (dstX >= main_attachment.width || dstY >= main_attachment.height) {
|
|
99
165
|
continue;
|
|
100
166
|
}
|
|
101
167
|
const hasScale = matrix[0] !== 1 || matrix[1] !== 0 || matrix[3] !== 0 || matrix[4] !== 1;
|
|
102
168
|
const blendWidth = hasScale ? width : node.w;
|
|
103
169
|
const blendHeight = hasScale ? height : node.h;
|
|
104
|
-
const clippedWidth = Math.min(blendWidth,
|
|
105
|
-
const clippedHeight = Math.min(blendHeight,
|
|
170
|
+
const clippedWidth = Math.min(blendWidth, main_attachment.width - dstX);
|
|
171
|
+
const clippedHeight = Math.min(blendHeight, main_attachment.height - dstY);
|
|
106
172
|
if (clippedWidth <= 0 || clippedHeight <= 0) {
|
|
107
173
|
continue;
|
|
108
174
|
}
|
|
109
175
|
// 1. ソーステクスチャを作成
|
|
110
176
|
let srcAttachment;
|
|
111
177
|
if (hasScale) {
|
|
112
|
-
srcAttachment =
|
|
113
|
-
const scalePipeline =
|
|
114
|
-
const scaleBindGroupLayout =
|
|
178
|
+
srcAttachment = frame_buffer_manager.createTemporaryAttachment(blendWidth, blendHeight);
|
|
179
|
+
const scalePipeline = pipeline_manager.getPipeline("complex_blend_scale");
|
|
180
|
+
const scaleBindGroupLayout = pipeline_manager.getBindGroupLayout("texture_scale");
|
|
115
181
|
if (scalePipeline && scaleBindGroupLayout) {
|
|
116
182
|
const halfW = blendWidth / 2;
|
|
117
183
|
const halfH = blendHeight / 2;
|
|
@@ -123,8 +189,8 @@ export const execute = (device, commandEncoder, mainAttachment, frameBufferManag
|
|
|
123
189
|
$uniform6[3] = matrix[4];
|
|
124
190
|
$uniform6[4] = -halfNodeW * matrix[0] - halfNodeH * matrix[3] + halfW;
|
|
125
191
|
$uniform6[5] = -halfNodeW * matrix[1] - halfNodeH * matrix[4] + halfH;
|
|
126
|
-
const originalAttachment =
|
|
127
|
-
|
|
192
|
+
const originalAttachment = frame_buffer_manager.createTemporaryAttachment(node.w, node.h);
|
|
193
|
+
command_encoder.copyTextureToTexture({
|
|
128
194
|
"texture": atlasAttachment.texture.resource,
|
|
129
195
|
"origin": { "x": node.x, "y": node.y, "z": 0 }
|
|
130
196
|
}, {
|
|
@@ -143,8 +209,8 @@ export const execute = (device, commandEncoder, mainAttachment, frameBufferManag
|
|
|
143
209
|
$uniform12[9] = blendHeight;
|
|
144
210
|
$uniform12[10] = 0;
|
|
145
211
|
$uniform12[11] = 0;
|
|
146
|
-
const uniformBuffer =
|
|
147
|
-
const sampler =
|
|
212
|
+
const uniformBuffer = buffer_manager.acquireAndWriteUniformBuffer($uniform12, 48);
|
|
213
|
+
const sampler = texture_manager.createSampler("scale_sampler", true);
|
|
148
214
|
$entries3[0].resource.buffer = uniformBuffer;
|
|
149
215
|
$entries3[1].resource = sampler;
|
|
150
216
|
$entries3[2].resource = originalAttachment.texture.view;
|
|
@@ -152,16 +218,16 @@ export const execute = (device, commandEncoder, mainAttachment, frameBufferManag
|
|
|
152
218
|
"layout": scaleBindGroupLayout,
|
|
153
219
|
"entries": $entries3
|
|
154
220
|
});
|
|
155
|
-
const renderPassDescriptor =
|
|
156
|
-
const passEncoder =
|
|
221
|
+
const renderPassDescriptor = frame_buffer_manager.createRenderPassDescriptor(srcAttachment.texture.view, 0, 0, 0, 0, "clear");
|
|
222
|
+
const passEncoder = command_encoder.beginRenderPass(renderPassDescriptor);
|
|
157
223
|
passEncoder.setPipeline(scalePipeline);
|
|
158
224
|
passEncoder.setBindGroup(0, bindGroup);
|
|
159
225
|
passEncoder.draw(6, 1, 0, 0);
|
|
160
226
|
passEncoder.end();
|
|
161
|
-
|
|
227
|
+
frame_buffer_manager.releaseTemporaryAttachment(originalAttachment);
|
|
162
228
|
}
|
|
163
229
|
else {
|
|
164
|
-
|
|
230
|
+
command_encoder.copyTextureToTexture({
|
|
165
231
|
"texture": atlasAttachment.texture.resource,
|
|
166
232
|
"origin": { "x": node.x, "y": node.y, "z": 0 }
|
|
167
233
|
}, {
|
|
@@ -171,8 +237,8 @@ export const execute = (device, commandEncoder, mainAttachment, frameBufferManag
|
|
|
171
237
|
}
|
|
172
238
|
}
|
|
173
239
|
else {
|
|
174
|
-
srcAttachment =
|
|
175
|
-
|
|
240
|
+
srcAttachment = frame_buffer_manager.createTemporaryAttachment(blendWidth, blendHeight);
|
|
241
|
+
command_encoder.copyTextureToTexture({
|
|
176
242
|
"texture": atlasAttachment.texture.resource,
|
|
177
243
|
"origin": { "x": node.x, "y": node.y, "z": 0 }
|
|
178
244
|
}, {
|
|
@@ -181,8 +247,8 @@ export const execute = (device, commandEncoder, mainAttachment, frameBufferManag
|
|
|
181
247
|
}, { "width": blendWidth, "height": blendHeight });
|
|
182
248
|
}
|
|
183
249
|
// 2. デスティネーションテクスチャを作成(メインからレンダーパスでコピー)
|
|
184
|
-
const dstAttachment =
|
|
185
|
-
copyTextureRegionViaRenderPass(device,
|
|
250
|
+
const dstAttachment = frame_buffer_manager.createTemporaryAttachment(blendWidth, blendHeight);
|
|
251
|
+
$copyTextureRegionViaRenderPass(device, command_encoder, main_attachment.texture.view, dstAttachment, dstX, dstY, main_attachment.width, main_attachment.height, blendWidth, blendHeight, frame_buffer_manager, texture_manager, pipeline_manager, buffer_manager);
|
|
186
252
|
// 3. カラートランスフォームを準備(add値は生値)
|
|
187
253
|
$uniform8[0] = color_transform[0];
|
|
188
254
|
$uniform8[1] = color_transform[1];
|
|
@@ -194,20 +260,20 @@ export const execute = (device, commandEncoder, mainAttachment, frameBufferManag
|
|
|
194
260
|
$uniform8[7] = 0;
|
|
195
261
|
// 4. 複雑なブレンドを適用
|
|
196
262
|
const blendedAttachment = blendApplyComplexBlendUseCase(srcAttachment, dstAttachment, blend_mode, $uniform8, {
|
|
197
|
-
device,
|
|
198
|
-
commandEncoder,
|
|
199
|
-
bufferManager,
|
|
200
|
-
frameBufferManager,
|
|
201
|
-
pipelineManager,
|
|
202
|
-
textureManager,
|
|
263
|
+
"device": device,
|
|
264
|
+
"commandEncoder": command_encoder,
|
|
265
|
+
"bufferManager": buffer_manager,
|
|
266
|
+
"frameBufferManager": frame_buffer_manager,
|
|
267
|
+
"pipelineManager": pipeline_manager,
|
|
268
|
+
"textureManager": texture_manager,
|
|
203
269
|
"frameTextures": []
|
|
204
270
|
});
|
|
205
271
|
// 5. 結果をメインアタッチメントに描画
|
|
206
|
-
drawToMainAttachment(device,
|
|
272
|
+
$drawToMainAttachment(device, command_encoder, blendedAttachment, main_attachment, dstX, dstY, frame_buffer_manager, texture_manager, pipeline_manager, buffer_manager);
|
|
207
273
|
// 6. 一時テクスチャを解放
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
274
|
+
frame_buffer_manager.releaseTemporaryAttachment(srcAttachment);
|
|
275
|
+
frame_buffer_manager.releaseTemporaryAttachment(dstAttachment);
|
|
276
|
+
frame_buffer_manager.releaseTemporaryAttachment(blendedAttachment);
|
|
211
277
|
}
|
|
212
278
|
clearComplexBlendQueue();
|
|
213
279
|
};
|