@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
|
@@ -7,18 +7,18 @@ import type { IFilterConfig } from "../../interface/IFilterConfig";
|
|
|
7
7
|
* UV変換方式で元テクスチャとブラーテクスチャを直接サンプリング。
|
|
8
8
|
* copyTextureToTextureと一時テクスチャを使用しない最適化版。
|
|
9
9
|
*
|
|
10
|
-
* @param {IAttachmentObject}
|
|
10
|
+
* @param {IAttachmentObject} source_attachment - 入力テクスチャ
|
|
11
11
|
* @param {Float32Array} matrix - 変換行列
|
|
12
12
|
* @param {number} color - グロー色 (32bit整数)
|
|
13
13
|
* @param {number} alpha - アルファ
|
|
14
|
-
* @param {number}
|
|
15
|
-
* @param {number}
|
|
14
|
+
* @param {number} blur_x - X方向ブラー量
|
|
15
|
+
* @param {number} blur_y - Y方向ブラー量
|
|
16
16
|
* @param {number} strength - グロー強度
|
|
17
17
|
* @param {number} quality - クオリティ
|
|
18
18
|
* @param {boolean} inner - インナーグロー
|
|
19
19
|
* @param {boolean} knockout - ノックアウトモード
|
|
20
|
-
* @param {number}
|
|
20
|
+
* @param {number} device_pixel_ratio - デバイスピクセル比
|
|
21
21
|
* @param {IFilterConfig} config - WebGPUリソース設定
|
|
22
22
|
* @return {IAttachmentObject} - フィルター適用後のアタッチメント
|
|
23
23
|
*/
|
|
24
|
-
export declare const execute: (
|
|
24
|
+
export declare const execute: (source_attachment: IAttachmentObject, matrix: Float32Array, color: number, alpha: number, blur_x: number, blur_y: number, strength: number, quality: number, inner: boolean, knockout: boolean, device_pixel_ratio: number, config: IFilterConfig) => IAttachmentObject;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { $offset } from "../FilterOffset";
|
|
2
|
+
import { intToPremultipliedRGBA } from "../FilterUtil";
|
|
2
3
|
import { execute as filterApplyBlurFilterUseCase } from "../BlurFilter/FilterApplyBlurFilterUseCase";
|
|
3
4
|
/**
|
|
4
5
|
* @description プリアロケートされたFloat32Array (サイズ16)
|
|
@@ -13,15 +14,6 @@ const $entries4 = [
|
|
|
13
14
|
{ "binding": 2, "resource": null },
|
|
14
15
|
{ "binding": 3, "resource": null }
|
|
15
16
|
];
|
|
16
|
-
/**
|
|
17
|
-
* @description 32bit整数からRGB値を抽出(プリマルチプライドアルファ対応)
|
|
18
|
-
*/
|
|
19
|
-
const intToRGBA = (color, alpha) => {
|
|
20
|
-
const r = (color >> 16 & 0xFF) / 255 * alpha;
|
|
21
|
-
const g = (color >> 8 & 0xFF) / 255 * alpha;
|
|
22
|
-
const b = (color & 0xFF) / 255 * alpha;
|
|
23
|
-
return [r, g, b, alpha];
|
|
24
|
-
};
|
|
25
17
|
/**
|
|
26
18
|
* @description グローフィルターを適用
|
|
27
19
|
* Apply glow filter
|
|
@@ -29,29 +21,28 @@ const intToRGBA = (color, alpha) => {
|
|
|
29
21
|
* UV変換方式で元テクスチャとブラーテクスチャを直接サンプリング。
|
|
30
22
|
* copyTextureToTextureと一時テクスチャを使用しない最適化版。
|
|
31
23
|
*
|
|
32
|
-
* @param {IAttachmentObject}
|
|
24
|
+
* @param {IAttachmentObject} source_attachment - 入力テクスチャ
|
|
33
25
|
* @param {Float32Array} matrix - 変換行列
|
|
34
26
|
* @param {number} color - グロー色 (32bit整数)
|
|
35
27
|
* @param {number} alpha - アルファ
|
|
36
|
-
* @param {number}
|
|
37
|
-
* @param {number}
|
|
28
|
+
* @param {number} blur_x - X方向ブラー量
|
|
29
|
+
* @param {number} blur_y - Y方向ブラー量
|
|
38
30
|
* @param {number} strength - グロー強度
|
|
39
31
|
* @param {number} quality - クオリティ
|
|
40
32
|
* @param {boolean} inner - インナーグロー
|
|
41
33
|
* @param {boolean} knockout - ノックアウトモード
|
|
42
|
-
* @param {number}
|
|
34
|
+
* @param {number} device_pixel_ratio - デバイスピクセル比
|
|
43
35
|
* @param {IFilterConfig} config - WebGPUリソース設定
|
|
44
36
|
* @return {IAttachmentObject} - フィルター適用後のアタッチメント
|
|
45
37
|
*/
|
|
46
|
-
export const execute = (
|
|
38
|
+
export const execute = (source_attachment, matrix, color, alpha, blur_x, blur_y, strength, quality, inner, knockout, device_pixel_ratio, config) => {
|
|
47
39
|
const { device, commandEncoder, frameBufferManager, pipelineManager, textureManager } = config;
|
|
48
40
|
// 元のオフセットを保存
|
|
49
41
|
const baseOffsetX = $offset.x;
|
|
50
42
|
const baseOffsetY = $offset.y;
|
|
51
|
-
const baseWidth =
|
|
52
|
-
const baseHeight =
|
|
53
|
-
|
|
54
|
-
const blurAttachment = filterApplyBlurFilterUseCase(sourceAttachment, matrix, blurX, blurY, quality, devicePixelRatio, config);
|
|
43
|
+
const baseWidth = source_attachment.width;
|
|
44
|
+
const baseHeight = source_attachment.height;
|
|
45
|
+
const blurAttachment = filterApplyBlurFilterUseCase(source_attachment, matrix, blur_x, blur_y, quality, device_pixel_ratio, config);
|
|
55
46
|
const blurWidth = blurAttachment.width;
|
|
56
47
|
const blurHeight = blurAttachment.height;
|
|
57
48
|
const blurOffsetX = $offset.x;
|
|
@@ -85,7 +76,7 @@ export const execute = (sourceAttachment, matrix, color, alpha, blurX, blurY, st
|
|
|
85
76
|
if (!pipeline || !bindGroupLayout) {
|
|
86
77
|
console.error("[WebGPU GlowFilter] Pipeline not found");
|
|
87
78
|
frameBufferManager.releaseTemporaryAttachment(blurAttachment);
|
|
88
|
-
return
|
|
79
|
+
return source_attachment;
|
|
89
80
|
}
|
|
90
81
|
// サンプラーを作成
|
|
91
82
|
const sampler = textureManager.createSampler("glow_sampler", true);
|
|
@@ -95,7 +86,7 @@ export const execute = (sourceAttachment, matrix, color, alpha, blurX, blurY, st
|
|
|
95
86
|
// blurScale: vec2<f32>, blurOffset: vec2<f32> (16 bytes)
|
|
96
87
|
// strength: f32, inner: f32, knockout: f32, _padding: f32 (16 bytes)
|
|
97
88
|
// Total: 64 bytes
|
|
98
|
-
const [r, g, b, a] =
|
|
89
|
+
const [r, g, b, a] = intToPremultipliedRGBA(color, alpha);
|
|
99
90
|
$uniform16[0] = r;
|
|
100
91
|
$uniform16[1] = g;
|
|
101
92
|
$uniform16[2] = b;
|
|
@@ -125,7 +116,7 @@ export const execute = (sourceAttachment, matrix, color, alpha, blurX, blurY, st
|
|
|
125
116
|
$entries4[0].resource.buffer = uniformBuffer;
|
|
126
117
|
$entries4[1].resource = sampler;
|
|
127
118
|
$entries4[2].resource = blurAttachment.texture.view;
|
|
128
|
-
$entries4[3].resource =
|
|
119
|
+
$entries4[3].resource = source_attachment.texture.view;
|
|
129
120
|
const bindGroup = device.createBindGroup({
|
|
130
121
|
"layout": bindGroupLayout,
|
|
131
122
|
"entries": $entries4
|
|
@@ -9,21 +9,21 @@ import type { IFilterConfig } from "../../interface/IFilterConfig";
|
|
|
9
9
|
* 2. ベベルベースにブラー適用
|
|
10
10
|
* 3. UV変換方式で最終合成(isInsideでハード境界クリッピング)
|
|
11
11
|
*
|
|
12
|
-
* @param {IAttachmentObject}
|
|
12
|
+
* @param {IAttachmentObject} source_attachment - 入力テクスチャ
|
|
13
13
|
* @param {Float32Array} matrix - 変換行列
|
|
14
14
|
* @param {number} distance - ベベルの距離
|
|
15
15
|
* @param {number} angle - ベベルの角度(度)
|
|
16
16
|
* @param {Float32Array} colors - 色配列
|
|
17
17
|
* @param {Float32Array} alphas - アルファ配列
|
|
18
18
|
* @param {Float32Array} ratios - 比率配列
|
|
19
|
-
* @param {number}
|
|
20
|
-
* @param {number}
|
|
19
|
+
* @param {number} blur_x - X方向ブラー量
|
|
20
|
+
* @param {number} blur_y - Y方向ブラー量
|
|
21
21
|
* @param {number} strength - ベベル強度
|
|
22
22
|
* @param {number} quality - クオリティ
|
|
23
23
|
* @param {number} type - タイプ (0: full, 1: inner, 2: outer)
|
|
24
24
|
* @param {boolean} knockout - ノックアウトモード
|
|
25
|
-
* @param {number}
|
|
26
|
-
* @param {
|
|
25
|
+
* @param {number} device_pixel_ratio - デバイスピクセル比
|
|
26
|
+
* @param {IFilterConfig} config - WebGPUリソース設定
|
|
27
27
|
* @return {IAttachmentObject} - フィルター適用後のアタッチメント
|
|
28
28
|
*/
|
|
29
|
-
export declare const execute: (
|
|
29
|
+
export declare const execute: (source_attachment: IAttachmentObject, matrix: Float32Array, distance: number, angle: number, colors: Float32Array, alphas: Float32Array, ratios: Float32Array, blur_x: number, blur_y: number, strength: number, quality: number, type: number, knockout: boolean, device_pixel_ratio: number, config: IFilterConfig) => IAttachmentObject;
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import { $offset } from "../FilterOffset";
|
|
2
2
|
import { execute as filterApplyBlurFilterUseCase } from "../BlurFilter/FilterApplyBlurFilterUseCase";
|
|
3
3
|
import { generateFilterGradientLUT } from "../../Gradient/GradientLUTGenerator";
|
|
4
|
-
|
|
5
|
-
* @description 度からラジアンへの変換係数
|
|
6
|
-
*/
|
|
7
|
-
const DEG_TO_RAD = Math.PI / 180;
|
|
4
|
+
import { DEG_TO_RAD } from "../FilterUtil";
|
|
8
5
|
/**
|
|
9
6
|
* @description プリアロケートされたFloat32Array
|
|
10
7
|
*/
|
|
@@ -37,37 +34,37 @@ const $entries5 = [
|
|
|
37
34
|
* 2. ベベルベースにブラー適用
|
|
38
35
|
* 3. UV変換方式で最終合成(isInsideでハード境界クリッピング)
|
|
39
36
|
*
|
|
40
|
-
* @param {IAttachmentObject}
|
|
37
|
+
* @param {IAttachmentObject} source_attachment - 入力テクスチャ
|
|
41
38
|
* @param {Float32Array} matrix - 変換行列
|
|
42
39
|
* @param {number} distance - ベベルの距離
|
|
43
40
|
* @param {number} angle - ベベルの角度(度)
|
|
44
41
|
* @param {Float32Array} colors - 色配列
|
|
45
42
|
* @param {Float32Array} alphas - アルファ配列
|
|
46
43
|
* @param {Float32Array} ratios - 比率配列
|
|
47
|
-
* @param {number}
|
|
48
|
-
* @param {number}
|
|
44
|
+
* @param {number} blur_x - X方向ブラー量
|
|
45
|
+
* @param {number} blur_y - Y方向ブラー量
|
|
49
46
|
* @param {number} strength - ベベル強度
|
|
50
47
|
* @param {number} quality - クオリティ
|
|
51
48
|
* @param {number} type - タイプ (0: full, 1: inner, 2: outer)
|
|
52
49
|
* @param {boolean} knockout - ノックアウトモード
|
|
53
|
-
* @param {number}
|
|
54
|
-
* @param {
|
|
50
|
+
* @param {number} device_pixel_ratio - デバイスピクセル比
|
|
51
|
+
* @param {IFilterConfig} config - WebGPUリソース設定
|
|
55
52
|
* @return {IAttachmentObject} - フィルター適用後のアタッチメント
|
|
56
53
|
*/
|
|
57
|
-
export const execute = (
|
|
54
|
+
export const execute = (source_attachment, matrix, distance, angle, colors, alphas, ratios, blur_x, blur_y, strength, quality, type, knockout, device_pixel_ratio, config) => {
|
|
58
55
|
const { device, commandEncoder, frameBufferManager, pipelineManager, textureManager } = config;
|
|
59
56
|
// 元のオフセットを保存
|
|
60
57
|
const baseOffsetX = $offset.x;
|
|
61
58
|
const baseOffsetY = $offset.y;
|
|
62
|
-
const baseWidth =
|
|
63
|
-
const baseHeight =
|
|
59
|
+
const baseWidth = source_attachment.width;
|
|
60
|
+
const baseHeight = source_attachment.height;
|
|
64
61
|
// 変換行列からスケールを取得
|
|
65
62
|
const xScale = Math.sqrt(matrix[0] * matrix[0] + matrix[1] * matrix[1]);
|
|
66
63
|
const yScale = Math.sqrt(matrix[2] * matrix[2] + matrix[3] * matrix[3]);
|
|
67
64
|
// ベベルのオフセットを計算
|
|
68
65
|
const radian = angle * DEG_TO_RAD;
|
|
69
|
-
const x = Math.cos(radian) * distance * (xScale /
|
|
70
|
-
const y = Math.sin(radian) * distance * (yScale /
|
|
66
|
+
const x = Math.cos(radian) * distance * (xScale / device_pixel_ratio);
|
|
67
|
+
const y = Math.sin(radian) * distance * (yScale / device_pixel_ratio);
|
|
71
68
|
// ===== Step 1: ベベルベーステクスチャ作成 =====
|
|
72
69
|
// WebGL版と同じ: original * (1 - shifted_original.a)
|
|
73
70
|
// shifted = original を (2x, 2y) ピクセル分シフトしたもの
|
|
@@ -75,7 +72,7 @@ export const execute = (sourceAttachment, matrix, distance, angle, colors, alpha
|
|
|
75
72
|
const bevelBaseLayout = pipelineManager.getBindGroupLayout("bevel_base");
|
|
76
73
|
if (!bevelBasePipeline || !bevelBaseLayout) {
|
|
77
74
|
console.error("[WebGPU GradientBevelFilter] bevel_base pipeline not found");
|
|
78
|
-
return
|
|
75
|
+
return source_attachment;
|
|
79
76
|
}
|
|
80
77
|
const bevelBaseAttachment = frameBufferManager.createTemporaryAttachment(baseWidth, baseHeight);
|
|
81
78
|
const bevelBaseSampler = textureManager.createSampler("bevel_base_sampler", true);
|
|
@@ -95,7 +92,7 @@ export const execute = (sourceAttachment, matrix, distance, angle, colors, alpha
|
|
|
95
92
|
}
|
|
96
93
|
$entries3[0].resource.buffer = bevelBaseUniformBuffer;
|
|
97
94
|
$entries3[1].resource = bevelBaseSampler;
|
|
98
|
-
$entries3[2].resource =
|
|
95
|
+
$entries3[2].resource = source_attachment.texture.view;
|
|
99
96
|
const bevelBaseBindGroup = device.createBindGroup({
|
|
100
97
|
"layout": bevelBaseLayout,
|
|
101
98
|
"entries": $entries3
|
|
@@ -108,7 +105,7 @@ export const execute = (sourceAttachment, matrix, distance, angle, colors, alpha
|
|
|
108
105
|
bevelBaseEncoder.end();
|
|
109
106
|
// ===== Step 2: ベベルベースにブラー適用 =====
|
|
110
107
|
// WebGL版と同じ: bevelBaseをブラーする(元テクスチャではなく)
|
|
111
|
-
const blurAttachment = filterApplyBlurFilterUseCase(bevelBaseAttachment, matrix,
|
|
108
|
+
const blurAttachment = filterApplyBlurFilterUseCase(bevelBaseAttachment, matrix, blur_x, blur_y, quality, device_pixel_ratio, config);
|
|
112
109
|
// ベベルベースは不要になったので解放
|
|
113
110
|
frameBufferManager.releaseTemporaryAttachment(bevelBaseAttachment);
|
|
114
111
|
const blurWidth = blurAttachment.width;
|
|
@@ -164,7 +161,7 @@ export const execute = (sourceAttachment, matrix, distance, angle, colors, alpha
|
|
|
164
161
|
if (!pipeline || !bindGroupLayout) {
|
|
165
162
|
console.error("[WebGPU GradientBevelFilter] Pipeline not found");
|
|
166
163
|
frameBufferManager.releaseTemporaryAttachment(blurAttachment);
|
|
167
|
-
return
|
|
164
|
+
return source_attachment;
|
|
168
165
|
}
|
|
169
166
|
const sampler = textureManager.createSampler("gradient_bevel_sampler", true);
|
|
170
167
|
// ユニフォームバッファ: 12 floats = 48 bytes
|
|
@@ -193,7 +190,7 @@ export const execute = (sourceAttachment, matrix, distance, angle, colors, alpha
|
|
|
193
190
|
$entries5[0].resource.buffer = uniformBuffer;
|
|
194
191
|
$entries5[1].resource = sampler;
|
|
195
192
|
$entries5[2].resource = blurAttachment.texture.view;
|
|
196
|
-
$entries5[3].resource =
|
|
193
|
+
$entries5[3].resource = source_attachment.texture.view;
|
|
197
194
|
$entries5[4].resource = lutView;
|
|
198
195
|
const bindGroup = device.createBindGroup({
|
|
199
196
|
"layout": bindGroupLayout,
|
|
@@ -9,21 +9,21 @@ import type { IFilterConfig } from "../../interface/IFilterConfig";
|
|
|
9
9
|
* 2. グラデーションLUT生成(専用テクスチャ)
|
|
10
10
|
* 3. UV変換方式で最終合成(isInsideでハード境界クリッピング)
|
|
11
11
|
*
|
|
12
|
-
* @param {IAttachmentObject}
|
|
12
|
+
* @param {IAttachmentObject} source_attachment - 入力テクスチャ
|
|
13
13
|
* @param {Float32Array} matrix - 変換行列
|
|
14
14
|
* @param {number} distance - グローの距離
|
|
15
15
|
* @param {number} angle - グローの角度(度)
|
|
16
16
|
* @param {Float32Array} colors - 色配列
|
|
17
17
|
* @param {Float32Array} alphas - アルファ配列
|
|
18
18
|
* @param {Float32Array} ratios - 比率配列
|
|
19
|
-
* @param {number}
|
|
20
|
-
* @param {number}
|
|
19
|
+
* @param {number} blur_x - X方向ブラー量
|
|
20
|
+
* @param {number} blur_y - Y方向ブラー量
|
|
21
21
|
* @param {number} strength - グロー強度
|
|
22
22
|
* @param {number} quality - クオリティ
|
|
23
23
|
* @param {number} type - タイプ (0: full, 1: inner, 2: outer)
|
|
24
24
|
* @param {boolean} knockout - ノックアウトモード
|
|
25
|
-
* @param {number}
|
|
25
|
+
* @param {number} device_pixel_ratio - デバイスピクセル比
|
|
26
26
|
* @param {IFilterConfig} config - WebGPUリソース設定
|
|
27
27
|
* @return {IAttachmentObject} - フィルター適用後のアタッチメント
|
|
28
28
|
*/
|
|
29
|
-
export declare const execute: (
|
|
29
|
+
export declare const execute: (source_attachment: IAttachmentObject, matrix: Float32Array, distance: number, angle: number, colors: Float32Array, alphas: Float32Array, ratios: Float32Array, blur_x: number, blur_y: number, strength: number, quality: number, type: number, knockout: boolean, device_pixel_ratio: number, config: IFilterConfig) => IAttachmentObject;
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import { $offset } from "../FilterOffset";
|
|
2
2
|
import { execute as filterApplyBlurFilterUseCase } from "../BlurFilter/FilterApplyBlurFilterUseCase";
|
|
3
3
|
import { generateFilterGradientLUT } from "../../Gradient/GradientLUTGenerator";
|
|
4
|
-
|
|
5
|
-
* @description 度からラジアンへの変換係数
|
|
6
|
-
*/
|
|
7
|
-
const DEG_TO_RAD = Math.PI / 180;
|
|
4
|
+
import { DEG_TO_RAD } from "../FilterUtil";
|
|
8
5
|
/**
|
|
9
6
|
* @description プリアロケートされたFloat32Array (サイズ12)
|
|
10
7
|
*/
|
|
@@ -28,32 +25,32 @@ const $entries5 = [
|
|
|
28
25
|
* 2. グラデーションLUT生成(専用テクスチャ)
|
|
29
26
|
* 3. UV変換方式で最終合成(isInsideでハード境界クリッピング)
|
|
30
27
|
*
|
|
31
|
-
* @param {IAttachmentObject}
|
|
28
|
+
* @param {IAttachmentObject} source_attachment - 入力テクスチャ
|
|
32
29
|
* @param {Float32Array} matrix - 変換行列
|
|
33
30
|
* @param {number} distance - グローの距離
|
|
34
31
|
* @param {number} angle - グローの角度(度)
|
|
35
32
|
* @param {Float32Array} colors - 色配列
|
|
36
33
|
* @param {Float32Array} alphas - アルファ配列
|
|
37
34
|
* @param {Float32Array} ratios - 比率配列
|
|
38
|
-
* @param {number}
|
|
39
|
-
* @param {number}
|
|
35
|
+
* @param {number} blur_x - X方向ブラー量
|
|
36
|
+
* @param {number} blur_y - Y方向ブラー量
|
|
40
37
|
* @param {number} strength - グロー強度
|
|
41
38
|
* @param {number} quality - クオリティ
|
|
42
39
|
* @param {number} type - タイプ (0: full, 1: inner, 2: outer)
|
|
43
40
|
* @param {boolean} knockout - ノックアウトモード
|
|
44
|
-
* @param {number}
|
|
41
|
+
* @param {number} device_pixel_ratio - デバイスピクセル比
|
|
45
42
|
* @param {IFilterConfig} config - WebGPUリソース設定
|
|
46
43
|
* @return {IAttachmentObject} - フィルター適用後のアタッチメント
|
|
47
44
|
*/
|
|
48
|
-
export const execute = (
|
|
45
|
+
export const execute = (source_attachment, matrix, distance, angle, colors, alphas, ratios, blur_x, blur_y, strength, quality, type, knockout, device_pixel_ratio, config) => {
|
|
49
46
|
const { device, commandEncoder, frameBufferManager, pipelineManager, textureManager } = config;
|
|
50
47
|
// 元のオフセットを保存
|
|
51
48
|
const baseOffsetX = $offset.x;
|
|
52
49
|
const baseOffsetY = $offset.y;
|
|
53
|
-
const baseWidth =
|
|
54
|
-
const baseHeight =
|
|
50
|
+
const baseWidth = source_attachment.width;
|
|
51
|
+
const baseHeight = source_attachment.height;
|
|
55
52
|
// ブラーフィルターを適用
|
|
56
|
-
const blurAttachment = filterApplyBlurFilterUseCase(
|
|
53
|
+
const blurAttachment = filterApplyBlurFilterUseCase(source_attachment, matrix, blur_x, blur_y, quality, device_pixel_ratio, config);
|
|
57
54
|
const blurWidth = blurAttachment.width;
|
|
58
55
|
const blurHeight = blurAttachment.height;
|
|
59
56
|
const blurOffsetX = $offset.x;
|
|
@@ -65,8 +62,8 @@ export const execute = (sourceAttachment, matrix, distance, angle, colors, alpha
|
|
|
65
62
|
const yScale = Math.sqrt(matrix[2] * matrix[2] + matrix[3] * matrix[3]);
|
|
66
63
|
// グローのオフセットを計算
|
|
67
64
|
const radian = angle * DEG_TO_RAD;
|
|
68
|
-
const x = Math.cos(radian) * distance * (xScale /
|
|
69
|
-
const y = Math.sin(radian) * distance * (yScale /
|
|
65
|
+
const x = Math.cos(radian) * distance * (xScale / device_pixel_ratio);
|
|
66
|
+
const y = Math.sin(radian) * distance * (yScale / device_pixel_ratio);
|
|
70
67
|
// ===== WebGL版と同じサイズ・位置計算 =====
|
|
71
68
|
const isInner = type === 1;
|
|
72
69
|
const w = isInner ? baseWidth : blurWidth + Math.max(0, Math.abs(x) - offsetDiffX);
|
|
@@ -112,7 +109,7 @@ export const execute = (sourceAttachment, matrix, distance, angle, colors, alpha
|
|
|
112
109
|
if (!pipeline || !bindGroupLayout) {
|
|
113
110
|
console.error("[WebGPU GradientGlowFilter] Pipeline not found");
|
|
114
111
|
frameBufferManager.releaseTemporaryAttachment(blurAttachment);
|
|
115
|
-
return
|
|
112
|
+
return source_attachment;
|
|
116
113
|
}
|
|
117
114
|
const sampler = textureManager.createSampler("gradient_glow_sampler", true);
|
|
118
115
|
// ユニフォームバッファ: 12 floats = 48 bytes
|
|
@@ -141,7 +138,7 @@ export const execute = (sourceAttachment, matrix, distance, angle, colors, alpha
|
|
|
141
138
|
$entries5[0].resource.buffer = uniformBuffer;
|
|
142
139
|
$entries5[1].resource = sampler;
|
|
143
140
|
$entries5[2].resource = blurAttachment.texture.view;
|
|
144
|
-
$entries5[3].resource =
|
|
141
|
+
$entries5[3].resource = source_attachment.texture.view;
|
|
145
142
|
$entries5[4].resource = lutView;
|
|
146
143
|
const bindGroup = device.createBindGroup({
|
|
147
144
|
"layout": bindGroupLayout,
|
package/src/FrameBufferManager/service/FrameBufferManagerCreateRenderPassDescriptorService.d.ts
CHANGED
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @description レンダーパス記述子を作成(プリアロケート再利用)
|
|
3
|
+
* Create render pass descriptor (pre-allocated reuse)
|
|
4
|
+
*
|
|
5
|
+
* @param {GPUTextureView} view - レンダーターゲットのテクスチャビュー
|
|
6
|
+
* @param {number} r - クリアカラーの赤成分
|
|
7
|
+
* @param {number} g - クリアカラーの緑成分
|
|
8
|
+
* @param {number} b - クリアカラーの青成分
|
|
9
|
+
* @param {number} a - クリアカラーのアルファ成分
|
|
10
|
+
* @param {GPULoadOp} load_op - ロード操作
|
|
11
|
+
* @param {GPUTextureView | null} resolve_target - MSAAリゾルブターゲット
|
|
12
|
+
* @return {GPURenderPassDescriptor}
|
|
13
|
+
* @method
|
|
14
|
+
* @protected
|
|
3
15
|
*/
|
|
4
|
-
export declare const execute: (view: GPUTextureView, r?: number, g?: number, b?: number, a?: number,
|
|
16
|
+
export declare const execute: (view: GPUTextureView, r?: number, g?: number, b?: number, a?: number, load_op?: GPULoadOp, resolve_target?: GPUTextureView | null) => GPURenderPassDescriptor;
|
package/src/FrameBufferManager/service/FrameBufferManagerCreateRenderPassDescriptorService.js
CHANGED
|
@@ -1,23 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description クリアカラー値のプリアロケートオブジェクト
|
|
3
|
+
* Pre-allocated clear color value object
|
|
4
|
+
* @type {GPUColorDict}
|
|
5
|
+
*/
|
|
1
6
|
const $clearValue = { "r": 0, "g": 0, "b": 0, "a": 0 };
|
|
7
|
+
/**
|
|
8
|
+
* @description カラーアタッチメントのプリアロケートオブジェクト
|
|
9
|
+
* Pre-allocated color attachment object
|
|
10
|
+
* @type {GPURenderPassColorAttachment}
|
|
11
|
+
*/
|
|
2
12
|
const $colorAttachment = {
|
|
3
13
|
"view": null,
|
|
4
14
|
"clearValue": $clearValue,
|
|
5
15
|
"loadOp": "clear",
|
|
6
16
|
"storeOp": "store"
|
|
7
17
|
};
|
|
18
|
+
/**
|
|
19
|
+
* @description レンダーパス記述子のプリアロケートオブジェクト
|
|
20
|
+
* Pre-allocated render pass descriptor object
|
|
21
|
+
* @type {GPURenderPassDescriptor}
|
|
22
|
+
*/
|
|
8
23
|
const $descriptor = {
|
|
9
24
|
"colorAttachments": [$colorAttachment]
|
|
10
25
|
};
|
|
11
26
|
/**
|
|
12
27
|
* @description レンダーパス記述子を作成(プリアロケート再利用)
|
|
28
|
+
* Create render pass descriptor (pre-allocated reuse)
|
|
29
|
+
*
|
|
30
|
+
* @param {GPUTextureView} view - レンダーターゲットのテクスチャビュー
|
|
31
|
+
* @param {number} r - クリアカラーの赤成分
|
|
32
|
+
* @param {number} g - クリアカラーの緑成分
|
|
33
|
+
* @param {number} b - クリアカラーの青成分
|
|
34
|
+
* @param {number} a - クリアカラーのアルファ成分
|
|
35
|
+
* @param {GPULoadOp} load_op - ロード操作
|
|
36
|
+
* @param {GPUTextureView | null} resolve_target - MSAAリゾルブターゲット
|
|
37
|
+
* @return {GPURenderPassDescriptor}
|
|
38
|
+
* @method
|
|
39
|
+
* @protected
|
|
13
40
|
*/
|
|
14
|
-
export const execute = (view, r = 0, g = 0, b = 0, a = 0,
|
|
41
|
+
export const execute = (view, r = 0, g = 0, b = 0, a = 0, load_op = "clear", resolve_target = null) => {
|
|
15
42
|
$colorAttachment.view = view;
|
|
16
43
|
$clearValue.r = r;
|
|
17
44
|
$clearValue.g = g;
|
|
18
45
|
$clearValue.b = b;
|
|
19
46
|
$clearValue.a = a;
|
|
20
|
-
$colorAttachment.loadOp =
|
|
21
|
-
$colorAttachment.resolveTarget =
|
|
47
|
+
$colorAttachment.loadOp = load_op;
|
|
48
|
+
$colorAttachment.resolveTarget = resolve_target ?? undefined;
|
|
22
49
|
return $descriptor;
|
|
23
50
|
};
|
|
@@ -1,4 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @description ステンシル付きレンダーパス記述子を作成(プリアロケート再利用)
|
|
3
|
+
* Create render pass descriptor with stencil (pre-allocated reuse)
|
|
4
|
+
*
|
|
5
|
+
* @param {GPUTextureView} color_view - カラーアタッチメントのテクスチャビュー
|
|
6
|
+
* @param {GPUTextureView} stencil_view - ステンシルアタッチメントのテクスチャビュー
|
|
7
|
+
* @param {GPULoadOp} color_load_op - カラーのロード操作
|
|
8
|
+
* @param {GPULoadOp} stencil_load_op - ステンシルのロード操作
|
|
9
|
+
* @param {GPUTextureView | null} resolve_target - MSAAリゾルブターゲット
|
|
10
|
+
* @return {GPURenderPassDescriptor}
|
|
11
|
+
* @method
|
|
12
|
+
* @protected
|
|
3
13
|
*/
|
|
4
|
-
export declare const execute: (
|
|
14
|
+
export declare const execute: (color_view: GPUTextureView, stencil_view: GPUTextureView, color_load_op?: GPULoadOp, stencil_load_op?: GPULoadOp, resolve_target?: GPUTextureView | null) => GPURenderPassDescriptor;
|
package/src/FrameBufferManager/service/FrameBufferManagerCreateStencilRenderPassDescriptorService.js
CHANGED
|
@@ -1,28 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description クリアカラー値のプリアロケートオブジェクト
|
|
3
|
+
* Pre-allocated clear color value object
|
|
4
|
+
* @type {GPUColorDict}
|
|
5
|
+
*/
|
|
1
6
|
const $clearValue = { "r": 0, "g": 0, "b": 0, "a": 0 };
|
|
7
|
+
/**
|
|
8
|
+
* @description カラーアタッチメントのプリアロケートオブジェクト
|
|
9
|
+
* Pre-allocated color attachment object
|
|
10
|
+
* @type {GPURenderPassColorAttachment}
|
|
11
|
+
*/
|
|
2
12
|
const $colorAttachment = {
|
|
3
13
|
"view": null,
|
|
4
14
|
"clearValue": $clearValue,
|
|
5
15
|
"loadOp": "load",
|
|
6
16
|
"storeOp": "store"
|
|
7
17
|
};
|
|
18
|
+
/**
|
|
19
|
+
* @description 深度ステンシルアタッチメントのプリアロケートオブジェクト
|
|
20
|
+
* Pre-allocated depth stencil attachment object
|
|
21
|
+
* @type {GPURenderPassDepthStencilAttachment}
|
|
22
|
+
*/
|
|
8
23
|
const $depthStencilAttachment = {
|
|
9
24
|
"view": null,
|
|
10
25
|
"stencilClearValue": 0,
|
|
11
26
|
"stencilLoadOp": "clear",
|
|
12
27
|
"stencilStoreOp": "store"
|
|
13
28
|
};
|
|
29
|
+
/**
|
|
30
|
+
* @description ステンシル付きレンダーパス記述子のプリアロケートオブジェクト
|
|
31
|
+
* Pre-allocated render pass descriptor with stencil
|
|
32
|
+
* @type {GPURenderPassDescriptor}
|
|
33
|
+
*/
|
|
14
34
|
const $descriptor = {
|
|
15
35
|
"colorAttachments": [$colorAttachment],
|
|
16
36
|
"depthStencilAttachment": $depthStencilAttachment
|
|
17
37
|
};
|
|
18
38
|
/**
|
|
19
39
|
* @description ステンシル付きレンダーパス記述子を作成(プリアロケート再利用)
|
|
40
|
+
* Create render pass descriptor with stencil (pre-allocated reuse)
|
|
41
|
+
*
|
|
42
|
+
* @param {GPUTextureView} color_view - カラーアタッチメントのテクスチャビュー
|
|
43
|
+
* @param {GPUTextureView} stencil_view - ステンシルアタッチメントのテクスチャビュー
|
|
44
|
+
* @param {GPULoadOp} color_load_op - カラーのロード操作
|
|
45
|
+
* @param {GPULoadOp} stencil_load_op - ステンシルのロード操作
|
|
46
|
+
* @param {GPUTextureView | null} resolve_target - MSAAリゾルブターゲット
|
|
47
|
+
* @return {GPURenderPassDescriptor}
|
|
48
|
+
* @method
|
|
49
|
+
* @protected
|
|
20
50
|
*/
|
|
21
|
-
export const execute = (
|
|
22
|
-
$colorAttachment.view =
|
|
23
|
-
$colorAttachment.loadOp =
|
|
24
|
-
$colorAttachment.resolveTarget =
|
|
25
|
-
$depthStencilAttachment.view =
|
|
26
|
-
$depthStencilAttachment.stencilLoadOp =
|
|
51
|
+
export const execute = (color_view, stencil_view, color_load_op = "load", stencil_load_op = "clear", resolve_target = null) => {
|
|
52
|
+
$colorAttachment.view = color_view;
|
|
53
|
+
$colorAttachment.loadOp = color_load_op;
|
|
54
|
+
$colorAttachment.resolveTarget = resolve_target ?? undefined;
|
|
55
|
+
$depthStencilAttachment.view = stencil_view;
|
|
56
|
+
$depthStencilAttachment.stencilLoadOp = stencil_load_op;
|
|
27
57
|
return $descriptor;
|
|
28
58
|
};
|
|
@@ -3,20 +3,20 @@ import type { IAttachmentObject } from "../../interface/IAttachmentObject";
|
|
|
3
3
|
* @description アタッチメントオブジェクトを作成
|
|
4
4
|
* Create attachment object
|
|
5
5
|
*
|
|
6
|
-
* @param {GPUDevice} device
|
|
7
|
-
* @param {GPUTextureFormat} format
|
|
8
|
-
* @param {Map<string, IAttachmentObject>} attachments
|
|
9
|
-
* @param {string} name
|
|
10
|
-
* @param {number} width
|
|
11
|
-
* @param {number} height
|
|
12
|
-
* @param {boolean} msaa
|
|
13
|
-
* @param {boolean} mask
|
|
14
|
-
* @param {{ nextId: number, textureId: number, stencilId: number }}
|
|
6
|
+
* @param {GPUDevice} device - GPUデバイス
|
|
7
|
+
* @param {GPUTextureFormat} format - テクスチャフォーマット
|
|
8
|
+
* @param {Map<string, IAttachmentObject>} attachments - アタッチメント管理マップ
|
|
9
|
+
* @param {string} name - アタッチメント名
|
|
10
|
+
* @param {number} width - テクスチャ幅
|
|
11
|
+
* @param {number} height - テクスチャ高さ
|
|
12
|
+
* @param {boolean} msaa - MSAA有効フラグ
|
|
13
|
+
* @param {boolean} mask - マスク有効フラグ
|
|
14
|
+
* @param {{ nextId: number, textureId: number, stencilId: number }} id_counter - ID管理カウンタ
|
|
15
15
|
* @return {IAttachmentObject}
|
|
16
16
|
* @method
|
|
17
17
|
* @protected
|
|
18
18
|
*/
|
|
19
|
-
export declare const execute: (device: GPUDevice, format: GPUTextureFormat, attachments: Map<string, IAttachmentObject>, name: string, width: number, height: number, msaa: boolean, mask: boolean,
|
|
19
|
+
export declare const execute: (device: GPUDevice, format: GPUTextureFormat, attachments: Map<string, IAttachmentObject>, name: string, width: number, height: number, msaa: boolean, mask: boolean, id_counter: {
|
|
20
20
|
nextId: number;
|
|
21
21
|
textureId: number;
|
|
22
22
|
stencilId: number;
|
|
@@ -3,20 +3,20 @@ import { $samples } from "../../WebGPUUtil";
|
|
|
3
3
|
* @description アタッチメントオブジェクトを作成
|
|
4
4
|
* Create attachment object
|
|
5
5
|
*
|
|
6
|
-
* @param {GPUDevice} device
|
|
7
|
-
* @param {GPUTextureFormat} format
|
|
8
|
-
* @param {Map<string, IAttachmentObject>} attachments
|
|
9
|
-
* @param {string} name
|
|
10
|
-
* @param {number} width
|
|
11
|
-
* @param {number} height
|
|
12
|
-
* @param {boolean} msaa
|
|
13
|
-
* @param {boolean} mask
|
|
14
|
-
* @param {{ nextId: number, textureId: number, stencilId: number }}
|
|
6
|
+
* @param {GPUDevice} device - GPUデバイス
|
|
7
|
+
* @param {GPUTextureFormat} format - テクスチャフォーマット
|
|
8
|
+
* @param {Map<string, IAttachmentObject>} attachments - アタッチメント管理マップ
|
|
9
|
+
* @param {string} name - アタッチメント名
|
|
10
|
+
* @param {number} width - テクスチャ幅
|
|
11
|
+
* @param {number} height - テクスチャ高さ
|
|
12
|
+
* @param {boolean} msaa - MSAA有効フラグ
|
|
13
|
+
* @param {boolean} mask - マスク有効フラグ
|
|
14
|
+
* @param {{ nextId: number, textureId: number, stencilId: number }} id_counter - ID管理カウンタ
|
|
15
15
|
* @return {IAttachmentObject}
|
|
16
16
|
* @method
|
|
17
17
|
* @protected
|
|
18
18
|
*/
|
|
19
|
-
export const execute = (device, format, attachments, name, width, height, msaa, mask,
|
|
19
|
+
export const execute = (device, format, attachments, name, width, height, msaa, mask, id_counter) => {
|
|
20
20
|
// アトラスかどうか判定(atlas, atlas_0, atlas_1, ...)
|
|
21
21
|
const isAtlas = name === "atlas" || name.startsWith("atlas_");
|
|
22
22
|
// アトラステクスチャと一時アタッチメントはRGBA8フォーマットを使用
|
|
@@ -38,7 +38,7 @@ export const execute = (device, format, attachments, name, width, height, msaa,
|
|
|
38
38
|
const textureView = gpuTexture.createView();
|
|
39
39
|
// ITextureObject形式で格納(解決先テクスチャ)
|
|
40
40
|
const texture = {
|
|
41
|
-
"id":
|
|
41
|
+
"id": id_counter.textureId++,
|
|
42
42
|
"resource": gpuTexture,
|
|
43
43
|
"view": textureView,
|
|
44
44
|
width,
|
|
@@ -57,7 +57,7 @@ export const execute = (device, format, attachments, name, width, height, msaa,
|
|
|
57
57
|
});
|
|
58
58
|
const msaaTextureView = msaaGpuTexture.createView();
|
|
59
59
|
msaaTexture = {
|
|
60
|
-
"id":
|
|
60
|
+
"id": id_counter.textureId++,
|
|
61
61
|
"resource": msaaGpuTexture,
|
|
62
62
|
"view": msaaTextureView,
|
|
63
63
|
width,
|
|
@@ -79,7 +79,7 @@ export const execute = (device, format, attachments, name, width, height, msaa,
|
|
|
79
79
|
});
|
|
80
80
|
const stencilView = stencilTexture.createView();
|
|
81
81
|
stencil = {
|
|
82
|
-
"id":
|
|
82
|
+
"id": id_counter.stencilId++,
|
|
83
83
|
"resource": stencilTexture,
|
|
84
84
|
"view": stencilView,
|
|
85
85
|
width,
|
|
@@ -97,7 +97,7 @@ export const execute = (device, format, attachments, name, width, height, msaa,
|
|
|
97
97
|
});
|
|
98
98
|
const msaaStencilView = msaaStencilTexture.createView();
|
|
99
99
|
msaaStencil = {
|
|
100
|
-
"id":
|
|
100
|
+
"id": id_counter.stencilId++,
|
|
101
101
|
"resource": msaaStencilTexture,
|
|
102
102
|
"view": msaaStencilView,
|
|
103
103
|
width,
|
|
@@ -108,7 +108,7 @@ export const execute = (device, format, attachments, name, width, height, msaa,
|
|
|
108
108
|
}
|
|
109
109
|
}
|
|
110
110
|
const attachment = {
|
|
111
|
-
"id":
|
|
111
|
+
"id": id_counter.nextId++,
|
|
112
112
|
width,
|
|
113
113
|
height,
|
|
114
114
|
"clipLevel": 0,
|
package/src/FrameBufferManager/usecase/FrameBufferManagerReleaseTemporaryAttachmentUseCase.d.ts
CHANGED
|
@@ -4,11 +4,11 @@ import type { IAttachmentObject } from "../../interface/IAttachmentObject";
|
|
|
4
4
|
* Releases a temporary attachment after filter processing
|
|
5
5
|
* テクスチャは即座に破棄せず、フレーム終了時に遅延解放します
|
|
6
6
|
*
|
|
7
|
-
* @param {Map<string, IAttachmentObject>} attachments
|
|
8
|
-
* @param {IAttachmentObject[]}
|
|
9
|
-
* @param {IAttachmentObject} attachment
|
|
7
|
+
* @param {Map<string, IAttachmentObject>} attachments - アタッチメント管理マップ
|
|
8
|
+
* @param {IAttachmentObject[]} pending_releases - 遅延解放キュー
|
|
9
|
+
* @param {IAttachmentObject} attachment - 解放するアタッチメント
|
|
10
10
|
* @return {void}
|
|
11
11
|
* @method
|
|
12
12
|
* @protected
|
|
13
13
|
*/
|
|
14
|
-
export declare const execute: (attachments: Map<string, IAttachmentObject>,
|
|
14
|
+
export declare const execute: (attachments: Map<string, IAttachmentObject>, pending_releases: IAttachmentObject[], attachment: IAttachmentObject) => void;
|