@next2d/webgpu 3.0.5 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (296) hide show
  1. package/package.json +3 -3
  2. package/src/AtlasManager.d.ts +75 -6
  3. package/src/AtlasManager.js +106 -30
  4. package/src/AttachmentManager/service/AttachmentManagerCreateAttachmentObjectService.d.ts +2 -2
  5. package/src/AttachmentManager/service/AttachmentManagerCreateAttachmentObjectService.js +3 -3
  6. package/src/AttachmentManager/service/AttachmentManagerCreateColorBufferService.d.ts +4 -4
  7. package/src/AttachmentManager/service/AttachmentManagerCreateColorBufferService.js +4 -4
  8. package/src/AttachmentManager/service/AttachmentManagerCreateStencilBufferService.d.ts +5 -5
  9. package/src/AttachmentManager/service/AttachmentManagerCreateStencilBufferService.js +6 -6
  10. package/src/AttachmentManager/service/AttachmentManagerCreateTextureObjectService.d.ts +6 -6
  11. package/src/AttachmentManager/service/AttachmentManagerCreateTextureObjectService.js +7 -7
  12. package/src/AttachmentManager/service/AttachmentManagerGetColorBufferService.d.ts +6 -6
  13. package/src/AttachmentManager/service/AttachmentManagerGetColorBufferService.js +9 -9
  14. package/src/AttachmentManager/service/AttachmentManagerGetStencilBufferService.d.ts +6 -6
  15. package/src/AttachmentManager/service/AttachmentManagerGetStencilBufferService.js +10 -10
  16. package/src/AttachmentManager/service/AttachmentManagerGetTextureService.d.ts +7 -7
  17. package/src/AttachmentManager/service/AttachmentManagerGetTextureService.js +10 -10
  18. package/src/AttachmentManager/service/AttachmentManagerReleaseTextureService.d.ts +3 -3
  19. package/src/AttachmentManager/service/AttachmentManagerReleaseTextureService.js +7 -7
  20. package/src/AttachmentManager/usecase/AttachmentManagerGetAttachmentObjectUseCase.d.ts +10 -10
  21. package/src/AttachmentManager/usecase/AttachmentManagerGetAttachmentObjectUseCase.js +16 -16
  22. package/src/AttachmentManager/usecase/AttachmentManagerReleaseAttachmentUseCase.d.ts +6 -6
  23. package/src/AttachmentManager/usecase/AttachmentManagerReleaseAttachmentUseCase.js +10 -10
  24. package/src/AttachmentManager.d.ts +28 -6
  25. package/src/AttachmentManager.js +28 -23
  26. package/src/BezierConverter/BezierConverter.d.ts +9 -3
  27. package/src/BezierConverter/BezierConverter.js +5 -3
  28. package/src/BezierConverter/usecase/BezierConverterAdaptiveCubicToQuadUseCase.d.ts +2 -13
  29. package/src/BezierConverter/usecase/BezierConverterAdaptiveCubicToQuadUseCase.js +13 -25
  30. package/src/Blend/BlendInstancedManager.d.ts +19 -15
  31. package/src/Blend/BlendInstancedManager.js +35 -22
  32. package/src/Blend/usecase/BlendApplyComplexBlendUseCase.d.ts +9 -2
  33. package/src/Blend/usecase/BlendApplyComplexBlendUseCase.js +28 -17
  34. package/src/Blend.d.ts +20 -2
  35. package/src/Blend.js +20 -4
  36. package/src/BufferManager/service/BufferManagerReleaseUniformBufferService.js +2 -2
  37. package/src/BufferManager/service/BufferManagerReleaseVertexBufferService.js +2 -2
  38. package/src/BufferManager/service/BufferManagerUpdateIndirectBufferService.d.ts +1 -0
  39. package/src/BufferManager/service/BufferManagerUpdateIndirectBufferService.js +1 -0
  40. package/src/BufferManager/usecase/BufferManagerCleanupStorageBuffersUseCase.d.ts +1 -0
  41. package/src/BufferManager/usecase/BufferManagerCleanupStorageBuffersUseCase.js +1 -0
  42. package/src/BufferManager.d.ts +108 -43
  43. package/src/BufferManager.js +113 -153
  44. package/src/Context/service/ContextComputeBitmapMatrixService.d.ts +7 -0
  45. package/src/Context/service/ContextComputeBitmapMatrixService.js +7 -0
  46. package/src/Context/service/ContextComputeGradientMatrixService.d.ts +9 -1
  47. package/src/Context/service/ContextComputeGradientMatrixService.js +15 -7
  48. package/src/Context/service/ContextFillSimpleService.d.ts +14 -0
  49. package/src/Context/service/ContextFillSimpleService.js +14 -0
  50. package/src/Context/service/ContextFillWithStencilMainService.d.ts +11 -0
  51. package/src/Context/service/ContextFillWithStencilMainService.js +11 -0
  52. package/src/Context/service/ContextFillWithStencilService.d.ts +11 -0
  53. package/src/Context/service/ContextFillWithStencilService.js +11 -0
  54. package/src/Context/usecase/ContextApplyFilterUseCase.d.ts +17 -0
  55. package/src/Context/usecase/ContextApplyFilterUseCase.js +201 -62
  56. package/src/Context/usecase/ContextBitmapFillUseCase.d.ts +23 -0
  57. package/src/Context/usecase/ContextBitmapFillUseCase.js +47 -0
  58. package/src/Context/usecase/ContextBitmapStrokeUseCase.d.ts +23 -0
  59. package/src/Context/usecase/ContextBitmapStrokeUseCase.js +35 -0
  60. package/src/Context/usecase/ContextClipUseCase.d.ts +15 -0
  61. package/src/Context/usecase/ContextClipUseCase.js +19 -0
  62. package/src/Context/usecase/ContextContainerEndLayerUseCase.d.ts +21 -1
  63. package/src/Context/usecase/ContextContainerEndLayerUseCase.js +195 -104
  64. package/src/Context/usecase/ContextDrawArraysInstancedUseCase.d.ts +13 -0
  65. package/src/Context/usecase/ContextDrawArraysInstancedUseCase.js +41 -20
  66. package/src/Context/usecase/ContextDrawIndirectUseCase.d.ts +16 -1
  67. package/src/Context/usecase/ContextDrawIndirectUseCase.js +53 -30
  68. package/src/Context/usecase/ContextGradientFillUseCase.d.ts +23 -0
  69. package/src/Context/usecase/ContextGradientFillUseCase.js +47 -0
  70. package/src/Context/usecase/ContextGradientStrokeUseCase.d.ts +23 -0
  71. package/src/Context/usecase/ContextGradientStrokeUseCase.js +35 -0
  72. package/src/Context/usecase/ContextProcessComplexBlendQueueUseCase.d.ts +13 -1
  73. package/src/Context/usecase/ContextProcessComplexBlendQueueUseCase.js +126 -60
  74. package/src/Context.d.ts +445 -63
  75. package/src/Context.js +566 -144
  76. package/src/FillTexturePool.d.ts +39 -0
  77. package/src/FillTexturePool.js +70 -7
  78. package/src/Filter/BevelFilter/FilterApplyBevelFilterUseCase.d.ts +21 -2
  79. package/src/Filter/BevelFilter/FilterApplyBevelFilterUseCase.js +33 -26
  80. package/src/Filter/BlurFilter/FilterApplyBlurFilterUseCase.d.ts +5 -5
  81. package/src/Filter/BlurFilter/FilterApplyBlurFilterUseCase.js +81 -64
  82. package/src/Filter/BlurFilterUseCase.d.ts +15 -11
  83. package/src/Filter/BlurFilterUseCase.js +22 -17
  84. package/src/Filter/ColorMatrixFilter/FilterApplyColorMatrixFilterUseCase.d.ts +2 -2
  85. package/src/Filter/ColorMatrixFilter/FilterApplyColorMatrixFilterUseCase.js +5 -5
  86. package/src/Filter/ConvolutionFilter/FilterApplyConvolutionFilterUseCase.d.ts +15 -1
  87. package/src/Filter/ConvolutionFilter/FilterApplyConvolutionFilterUseCase.js +23 -17
  88. package/src/Filter/DisplacementMapFilter/FilterApplyDisplacementMapFilterUseCase.d.ts +20 -1
  89. package/src/Filter/DisplacementMapFilter/FilterApplyDisplacementMapFilterUseCase.js +37 -26
  90. package/src/Filter/DropShadowFilter/FilterApplyDropShadowFilterUseCase.d.ts +7 -7
  91. package/src/Filter/DropShadowFilter/FilterApplyDropShadowFilterUseCase.js +19 -31
  92. package/src/Filter/FilterGradientLUTCache.js +2 -0
  93. package/src/Filter/FilterUtil.d.ts +23 -0
  94. package/src/Filter/FilterUtil.js +33 -0
  95. package/src/Filter/GlowFilter/FilterApplyGlowFilterUseCase.d.ts +5 -5
  96. package/src/Filter/GlowFilter/FilterApplyGlowFilterUseCase.js +12 -21
  97. package/src/Filter/GradientBevelFilter/FilterApplyGradientBevelFilterUseCase.d.ts +6 -6
  98. package/src/Filter/GradientBevelFilter/FilterApplyGradientBevelFilterUseCase.js +16 -19
  99. package/src/Filter/GradientGlowFilter/FilterApplyGradientGlowFilterUseCase.d.ts +5 -5
  100. package/src/Filter/GradientGlowFilter/FilterApplyGradientGlowFilterUseCase.js +13 -16
  101. package/src/FrameBufferManager/service/FrameBufferManagerCreateRenderPassDescriptorService.d.ts +13 -1
  102. package/src/FrameBufferManager/service/FrameBufferManagerCreateRenderPassDescriptorService.js +30 -3
  103. package/src/FrameBufferManager/service/FrameBufferManagerCreateStencilRenderPassDescriptorService.d.ts +11 -1
  104. package/src/FrameBufferManager/service/FrameBufferManagerCreateStencilRenderPassDescriptorService.js +36 -6
  105. package/src/FrameBufferManager/usecase/FrameBufferManagerCreateAttachmentUseCase.d.ts +10 -10
  106. package/src/FrameBufferManager/usecase/FrameBufferManagerCreateAttachmentUseCase.js +15 -15
  107. package/src/FrameBufferManager/usecase/FrameBufferManagerReleaseTemporaryAttachmentUseCase.d.ts +4 -4
  108. package/src/FrameBufferManager/usecase/FrameBufferManagerReleaseTemporaryAttachmentUseCase.js +5 -5
  109. package/src/FrameBufferManager.d.ts +95 -3
  110. package/src/FrameBufferManager.js +97 -8
  111. package/src/Gradient/GradientLUTCache.d.ts +36 -4
  112. package/src/Gradient/GradientLUTCache.js +61 -5
  113. package/src/Gradient/GradientLUTGenerator.d.ts +26 -14
  114. package/src/Gradient/GradientLUTGenerator.js +74 -43
  115. package/src/Mask/service/MaskUnionMaskService.d.ts +16 -1
  116. package/src/Mask/service/MaskUnionMaskService.js +45 -31
  117. package/src/Mask.d.ts +57 -3
  118. package/src/Mask.js +75 -11
  119. package/src/Mesh/service/MeshFillGenerateService.d.ts +4 -4
  120. package/src/Mesh/service/MeshFillGenerateService.js +4 -4
  121. package/src/Mesh/service/MeshStrokeFillGenerateService.d.ts +4 -4
  122. package/src/Mesh/service/MeshStrokeFillGenerateService.js +4 -4
  123. package/src/Mesh/usecase/MeshBitmapStrokeGenerateUseCase.d.ts +3 -3
  124. package/src/Mesh/usecase/MeshBitmapStrokeGenerateUseCase.js +10 -3
  125. package/src/Mesh/usecase/MeshFillGenerateUseCase.d.ts +2 -2
  126. package/src/Mesh/usecase/MeshFillGenerateUseCase.js +9 -2
  127. package/src/Mesh/usecase/MeshGradientStrokeGenerateUseCase.d.ts +3 -3
  128. package/src/Mesh/usecase/MeshGradientStrokeGenerateUseCase.js +10 -3
  129. package/src/Mesh/usecase/MeshStrokeGenerateUseCase.d.ts +8 -14
  130. package/src/Mesh/usecase/MeshStrokeGenerateUseCase.js +214 -129
  131. package/src/PathCommand.d.ts +24 -23
  132. package/src/PathCommand.js +25 -79
  133. package/src/Shader/PipelineManager.d.ts +223 -6
  134. package/src/Shader/PipelineManager.js +308 -66
  135. package/src/Shader/ShaderInstancedManager.d.ts +17 -0
  136. package/src/Shader/ShaderInstancedManager.js +17 -0
  137. package/src/Shader/ShaderSource.d.ts +317 -12
  138. package/src/Shader/ShaderSource.js +328 -39
  139. package/src/Shader/wgsl/common/SharedWgsl.d.ts +28 -1
  140. package/src/Shader/wgsl/common/SharedWgsl.js +28 -9
  141. package/src/Shader/wgsl/fragment/BasicFragment.d.ts +14 -0
  142. package/src/Shader/wgsl/fragment/BasicFragment.js +14 -0
  143. package/src/Shader/wgsl/fragment/BitmapFragment.d.ts +7 -0
  144. package/src/Shader/wgsl/fragment/BitmapFragment.js +7 -0
  145. package/src/Shader/wgsl/fragment/EffectFragment.d.ts +42 -0
  146. package/src/Shader/wgsl/fragment/EffectFragment.js +42 -0
  147. package/src/Shader/wgsl/fragment/FillFragment.d.ts +7 -0
  148. package/src/Shader/wgsl/fragment/FillFragment.js +7 -0
  149. package/src/Shader/wgsl/fragment/FilterFragment.d.ts +70 -0
  150. package/src/Shader/wgsl/fragment/FilterFragment.js +70 -0
  151. package/src/Shader/wgsl/fragment/GradientFragment.d.ts +21 -0
  152. package/src/Shader/wgsl/fragment/GradientFragment.js +43 -8
  153. package/src/Shader/wgsl/fragment/InstancedFragment.d.ts +7 -0
  154. package/src/Shader/wgsl/fragment/InstancedFragment.js +7 -0
  155. package/src/Shader/wgsl/fragment/MaskFragment.d.ts +7 -0
  156. package/src/Shader/wgsl/fragment/MaskFragment.js +7 -0
  157. package/src/Shader/wgsl/fragment/StencilFragment.d.ts +14 -0
  158. package/src/Shader/wgsl/fragment/StencilFragment.js +14 -0
  159. package/src/Shader/wgsl/vertex/BasicVertex.d.ts +7 -0
  160. package/src/Shader/wgsl/vertex/BasicVertex.js +7 -0
  161. package/src/Shader/wgsl/vertex/BitmapVertex.d.ts +7 -0
  162. package/src/Shader/wgsl/vertex/BitmapVertex.js +7 -0
  163. package/src/Shader/wgsl/vertex/FillVertex.d.ts +7 -0
  164. package/src/Shader/wgsl/vertex/FillVertex.js +7 -0
  165. package/src/Shader/wgsl/vertex/FilterVertex.d.ts +77 -1
  166. package/src/Shader/wgsl/vertex/FilterVertex.js +135 -42
  167. package/src/Shader/wgsl/vertex/GradientVertex.d.ts +7 -0
  168. package/src/Shader/wgsl/vertex/GradientVertex.js +7 -0
  169. package/src/Shader/wgsl/vertex/InstancedVertex.d.ts +7 -0
  170. package/src/Shader/wgsl/vertex/InstancedVertex.js +7 -0
  171. package/src/Shader/wgsl/vertex/MaskVertex.d.ts +7 -0
  172. package/src/Shader/wgsl/vertex/MaskVertex.js +7 -0
  173. package/src/Shader/wgsl/vertex/StencilVertex.d.ts +14 -0
  174. package/src/Shader/wgsl/vertex/StencilVertex.js +14 -0
  175. package/src/TextureManager/service/TextureManagerInitializeSamplersService.d.ts +2 -2
  176. package/src/TextureManager/service/TextureManagerInitializeSamplersService.js +2 -2
  177. package/src/TextureManager.d.ts +36 -5
  178. package/src/TextureManager.js +36 -24
  179. package/src/TexturePool/service/TexturePoolCleanupService.d.ts +4 -4
  180. package/src/TexturePool/service/TexturePoolCleanupService.js +6 -6
  181. package/src/TexturePool/service/TexturePoolReleaseService.d.ts +4 -4
  182. package/src/TexturePool/service/TexturePoolReleaseService.js +5 -5
  183. package/src/TexturePool/usecase/TexturePoolAcquireUseCase.d.ts +10 -10
  184. package/src/TexturePool/usecase/TexturePoolAcquireUseCase.js +19 -18
  185. package/src/TexturePool.d.ts +36 -35
  186. package/src/TexturePool.js +44 -65
  187. package/src/WebGPUUtil.d.ts +79 -34
  188. package/src/WebGPUUtil.js +79 -36
  189. package/src/interface/IAttachmentObject.d.ts +36 -0
  190. package/src/interface/IBlendMode.d.ts +7 -0
  191. package/src/interface/IBlendState.d.ts +8 -0
  192. package/src/interface/IBounds.d.ts +23 -0
  193. package/src/interface/IColorBufferObject.d.ts +28 -0
  194. package/src/interface/IComplexBlendItem.d.ts +48 -0
  195. package/src/interface/IFilterConfig.d.ts +28 -2
  196. package/src/interface/IGradientStop.d.ts +20 -0
  197. package/src/interface/ILocalFilterConfig.d.ts +32 -2
  198. package/src/interface/IMeshResult.d.ts +8 -0
  199. package/src/interface/IPoint.d.ts +12 -0
  200. package/src/interface/IPooledTexture.d.ts +24 -0
  201. package/src/interface/IQuadraticSegment.d.ts +8 -0
  202. package/src/interface/IStencilBufferObject.d.ts +28 -0
  203. package/src/interface/IStorageBufferConfig.d.ts +8 -1
  204. package/src/interface/ITextureObject.d.ts +28 -0
  205. package/src/AttachmentManager/service/AttachmentManagerCreateRenderPassDescriptorService.d.ts +0 -5
  206. package/src/AttachmentManager/service/AttachmentManagerCreateRenderPassDescriptorService.js +0 -42
  207. package/src/Blend/service/BlendAddService.d.ts +0 -1
  208. package/src/Blend/service/BlendAddService.js +0 -8
  209. package/src/Blend/service/BlendAlphaService.d.ts +0 -1
  210. package/src/Blend/service/BlendAlphaService.js +0 -8
  211. package/src/Blend/service/BlendEraseService.d.ts +0 -1
  212. package/src/Blend/service/BlendEraseService.js +0 -8
  213. package/src/Blend/service/BlendGetStateService.d.ts +0 -12
  214. package/src/Blend/service/BlendGetStateService.js +0 -13
  215. package/src/Blend/service/BlendOneZeroService.d.ts +0 -1
  216. package/src/Blend/service/BlendOneZeroService.js +0 -8
  217. package/src/Blend/service/BlendResetService.d.ts +0 -1
  218. package/src/Blend/service/BlendResetService.js +0 -8
  219. package/src/Blend/service/BlendScreenService.d.ts +0 -1
  220. package/src/Blend/service/BlendScreenService.js +0 -8
  221. package/src/Blend/service/BlendSetModeService.d.ts +0 -2
  222. package/src/Blend/service/BlendSetModeService.js +0 -4
  223. package/src/Blend/usecase/BlendOperationUseCase.d.ts +0 -11
  224. package/src/Blend/usecase/BlendOperationUseCase.js +0 -31
  225. package/src/BufferManager/usecase/BufferManagerReleaseStorageBufferUseCase.d.ts +0 -9
  226. package/src/BufferManager/usecase/BufferManagerReleaseStorageBufferUseCase.js +0 -15
  227. package/src/Compute/ComputePipelineManager.d.ts +0 -61
  228. package/src/Compute/ComputePipelineManager.js +0 -313
  229. package/src/Compute/service/ComputeExecuteBlurService.d.ts +0 -21
  230. package/src/Compute/service/ComputeExecuteBlurService.js +0 -81
  231. package/src/Filter/BevelFilterShader.d.ts +0 -2
  232. package/src/Filter/BevelFilterShader.js +0 -107
  233. package/src/Filter/BitmapFilterShader.d.ts +0 -2
  234. package/src/Filter/BitmapFilterShader.js +0 -207
  235. package/src/Filter/BlurFilter/service/BlurFilterComputeShaderService.d.ts +0 -40
  236. package/src/Filter/BlurFilter/service/BlurFilterComputeShaderService.js +0 -51
  237. package/src/Filter/BlurFilter/usecase/FilterApplyBlurComputeUseCase.d.ts +0 -25
  238. package/src/Filter/BlurFilter/usecase/FilterApplyBlurComputeUseCase.js +0 -180
  239. package/src/Filter/BlurFilterShader.d.ts +0 -5
  240. package/src/Filter/BlurFilterShader.js +0 -109
  241. package/src/Filter/ColorMatrixFilterShader.d.ts +0 -4
  242. package/src/Filter/ColorMatrixFilterShader.js +0 -51
  243. package/src/Filter/ConvolutionFilterShader.d.ts +0 -2
  244. package/src/Filter/ConvolutionFilterShader.js +0 -115
  245. package/src/Filter/DisplacementMapFilterShader.d.ts +0 -2
  246. package/src/Filter/DisplacementMapFilterShader.js +0 -114
  247. package/src/Filter/DropShadowFilterShader.d.ts +0 -4
  248. package/src/Filter/DropShadowFilterShader.js +0 -93
  249. package/src/Filter/GlowFilterShader.d.ts +0 -4
  250. package/src/Filter/GlowFilterShader.js +0 -66
  251. package/src/FrameBufferManager/service/FrameBufferManagerFlushPendingReleasesService.d.ts +0 -11
  252. package/src/FrameBufferManager/service/FrameBufferManagerFlushPendingReleasesService.js +0 -19
  253. package/src/Mask/usecase/MaskBindUseCase.d.ts +0 -10
  254. package/src/Mask/usecase/MaskBindUseCase.js +0 -20
  255. package/src/Mesh/service/MeshLerpService.d.ts +0 -13
  256. package/src/Mesh/service/MeshLerpService.js +0 -17
  257. package/src/Mesh/usecase/MeshSplitQuadraticBezierUseCase.d.ts +0 -14
  258. package/src/Mesh/usecase/MeshSplitQuadraticBezierUseCase.js +0 -28
  259. package/src/Mesh/usecase/MeshStrokeFillGenerateUseCase.d.ts +0 -18
  260. package/src/Mesh/usecase/MeshStrokeFillGenerateUseCase.js +0 -54
  261. package/src/SamplerCache/service/SamplerCacheCreateCommonSamplersService.d.ts +0 -11
  262. package/src/SamplerCache/service/SamplerCacheCreateCommonSamplersService.js +0 -35
  263. package/src/SamplerCache/service/SamplerCacheGenerateKeyService.d.ts +0 -13
  264. package/src/SamplerCache/service/SamplerCacheGenerateKeyService.js +0 -15
  265. package/src/SamplerCache/service/SamplerCacheGetOrCreateService.d.ts +0 -15
  266. package/src/SamplerCache/service/SamplerCacheGetOrCreateService.js +0 -30
  267. package/src/SamplerCache.d.ts +0 -18
  268. package/src/SamplerCache.js +0 -61
  269. package/src/Shader/BlendModeShader.d.ts +0 -51
  270. package/src/Shader/BlendModeShader.js +0 -71
  271. package/src/Shader/GradientLUTGenerator/service/GradientLUTCalculateResolutionService.d.ts +0 -12
  272. package/src/Shader/GradientLUTGenerator/service/GradientLUTCalculateResolutionService.js +0 -28
  273. package/src/Shader/GradientLUTGenerator/service/GradientLUTGeneratePixelsService.d.ts +0 -13
  274. package/src/Shader/GradientLUTGenerator/service/GradientLUTGeneratePixelsService.js +0 -61
  275. package/src/Shader/GradientLUTGenerator/service/GradientLUTInterpolateColorService.d.ts +0 -19
  276. package/src/Shader/GradientLUTGenerator/service/GradientLUTInterpolateColorService.js +0 -37
  277. package/src/Shader/GradientLUTGenerator/service/GradientLUTParseStopsService.d.ts +0 -11
  278. package/src/Shader/GradientLUTGenerator/service/GradientLUTParseStopsService.js +0 -24
  279. package/src/Shader/GradientLUTGenerator/usecase/GradientLUTGenerateDataUseCase.d.ts +0 -14
  280. package/src/Shader/GradientLUTGenerator/usecase/GradientLUTGenerateDataUseCase.js +0 -24
  281. package/src/Shader/wgsl/fragment/BlendFragment.d.ts +0 -8
  282. package/src/Shader/wgsl/fragment/BlendFragment.js +0 -63
  283. package/src/TextureManager/usecase/TextureManagerCreateTextureFromImageBitmapUseCase.d.ts +0 -13
  284. package/src/TextureManager/usecase/TextureManagerCreateTextureFromImageBitmapUseCase.js +0 -30
  285. package/src/TextureManager/usecase/TextureManagerCreateTextureFromPixelsUseCase.d.ts +0 -15
  286. package/src/TextureManager/usecase/TextureManagerCreateTextureFromPixelsUseCase.js +0 -26
  287. package/src/TexturePool/service/TexturePoolEvictOldestService.d.ts +0 -11
  288. package/src/TexturePool/service/TexturePoolEvictOldestService.js +0 -24
  289. package/src/interface/ICachedBindGroup.d.ts +0 -8
  290. package/src/interface/ICachedBindGroup.js +0 -1
  291. package/src/interface/IGradientLUTData.d.ts +0 -8
  292. package/src/interface/IGradientLUTData.js +0 -1
  293. package/src/interface/IPooledBuffer.d.ts +0 -8
  294. package/src/interface/IPooledBuffer.js +0 -1
  295. package/src/interface/IRectangleInfo.d.ts +0 -13
  296. package/src/interface/IRectangleInfo.js +0 -1
@@ -1,6 +1,45 @@
1
+ /**
2
+ * @description キャッシュからビューを取得、なければ生成してキャッシュに保存
3
+ * Get view from cache, or create and cache a new one
4
+ * @param {GPUTexture} texture
5
+ * @return {GPUTextureView}
6
+ */
1
7
  export declare const $getOrCreateView: (texture: GPUTexture) => GPUTextureView;
8
+ /**
9
+ * @description プールから塗りテクスチャを取得、なければ新規作成
10
+ * Acquire a fill texture from the pool, or create a new one
11
+ * @param {GPUDevice} device
12
+ * @param {number} width
13
+ * @param {number} height
14
+ * @return {GPUTexture}
15
+ */
2
16
  export declare const $acquireFillTexture: (device: GPUDevice, width: number, height: number) => GPUTexture;
17
+ /**
18
+ * @description 塗りテクスチャをプールに返却
19
+ * Release a fill texture back to the pool
20
+ * @param {GPUTexture} texture
21
+ * @return {void}
22
+ */
3
23
  export declare const $releaseFillTexture: (texture: GPUTexture) => void;
24
+ /**
25
+ * @description プールからレンダーテクスチャを取得、なければ新規作成
26
+ * Acquire a render texture from the pool, or create a new one
27
+ * @param {GPUDevice} device
28
+ * @param {number} width
29
+ * @param {number} height
30
+ * @return {GPUTexture}
31
+ */
4
32
  export declare const $acquireRenderTexture: (device: GPUDevice, width: number, height: number) => GPUTexture;
33
+ /**
34
+ * @description レンダーテクスチャをプールに返却
35
+ * Release a render texture back to the pool
36
+ * @param {GPUTexture} texture
37
+ * @return {void}
38
+ */
5
39
  export declare const $releaseRenderTexture: (texture: GPUTexture) => void;
40
+ /**
41
+ * @description 全テクスチャプールを破棄してクリア
42
+ * Destroy and clear all texture pools
43
+ * @return {void}
44
+ */
6
45
  export declare const $clearFillTexturePool: () => void;
@@ -1,5 +1,15 @@
1
- // GPUTexture → GPUTextureView キャッシュ(createView()呼び出し削減)
1
+ /**
2
+ * @description GPUTexture → GPUTextureView キャッシュ(createView()呼び出し削減)
3
+ * GPUTexture to GPUTextureView cache to reduce createView() calls
4
+ * @type {WeakMap<GPUTexture, GPUTextureView>}
5
+ */
2
6
  const $viewCache = new WeakMap();
7
+ /**
8
+ * @description キャッシュからビューを取得、なければ生成してキャッシュに保存
9
+ * Get view from cache, or create and cache a new one
10
+ * @param {GPUTexture} texture
11
+ * @return {GPUTextureView}
12
+ */
3
13
  export const $getOrCreateView = (texture) => {
4
14
  let view = $viewCache.get(texture);
5
15
  if (!view) {
@@ -8,12 +18,40 @@ export const $getOrCreateView = (texture) => {
8
18
  }
9
19
  return view;
10
20
  };
11
- // GPUTextureUsage.TEXTURE_BINDING(0x04) | GPUTextureUsage.COPY_DST(0x02) = 0x06
12
- const FILL_TEXTURE_USAGE = 0x06;
13
- // GPUTextureUsage.TEXTURE_BINDING(0x04) | GPUTextureUsage.COPY_DST(0x02) | GPUTextureUsage.RENDER_ATTACHMENT(0x10) = 0x16
14
- const RENDER_TEXTURE_USAGE = 0x16;
21
+ /**
22
+ * @description 塗りテクスチャ用のGPUTextureUsageフラグ
23
+ * GPUTextureUsage flags for fill textures
24
+ * TEXTURE_BINDING(0x04) | COPY_DST(0x02) = 0x06
25
+ * @type {number}
26
+ */
27
+ const $FILL_TEXTURE_USAGE = 0x06;
28
+ /**
29
+ * @description レンダーテクスチャ用のGPUTextureUsageフラグ
30
+ * GPUTextureUsage flags for render textures
31
+ * TEXTURE_BINDING(0x04) | COPY_DST(0x02) | RENDER_ATTACHMENT(0x10) = 0x16
32
+ * @type {number}
33
+ */
34
+ const $RENDER_TEXTURE_USAGE = 0x16;
35
+ /**
36
+ * @description 塗りテクスチャのオブジェクトプール
37
+ * Object pool for fill textures
38
+ * @type {Map<string, GPUTexture[]>}
39
+ */
15
40
  const $pool = new Map();
41
+ /**
42
+ * @description レンダーテクスチャのオブジェクトプール
43
+ * Object pool for render textures
44
+ * @type {Map<string, GPUTexture[]>}
45
+ */
16
46
  const $renderPool = new Map();
47
+ /**
48
+ * @description プールから塗りテクスチャを取得、なければ新規作成
49
+ * Acquire a fill texture from the pool, or create a new one
50
+ * @param {GPUDevice} device
51
+ * @param {number} width
52
+ * @param {number} height
53
+ * @return {GPUTexture}
54
+ */
17
55
  export const $acquireFillTexture = (device, width, height) => {
18
56
  const key = `${width}_${height}`;
19
57
  const list = $pool.get(key);
@@ -23,9 +61,15 @@ export const $acquireFillTexture = (device, width, height) => {
23
61
  return device.createTexture({
24
62
  "size": { width, height },
25
63
  "format": "rgba8unorm",
26
- "usage": FILL_TEXTURE_USAGE
64
+ "usage": $FILL_TEXTURE_USAGE
27
65
  });
28
66
  };
67
+ /**
68
+ * @description 塗りテクスチャをプールに返却
69
+ * Release a fill texture back to the pool
70
+ * @param {GPUTexture} texture
71
+ * @return {void}
72
+ */
29
73
  export const $releaseFillTexture = (texture) => {
30
74
  const key = `${texture.width}_${texture.height}`;
31
75
  let list = $pool.get(key);
@@ -35,6 +79,14 @@ export const $releaseFillTexture = (texture) => {
35
79
  }
36
80
  list.push(texture);
37
81
  };
82
+ /**
83
+ * @description プールからレンダーテクスチャを取得、なければ新規作成
84
+ * Acquire a render texture from the pool, or create a new one
85
+ * @param {GPUDevice} device
86
+ * @param {number} width
87
+ * @param {number} height
88
+ * @return {GPUTexture}
89
+ */
38
90
  export const $acquireRenderTexture = (device, width, height) => {
39
91
  const key = `${width}_${height}`;
40
92
  const list = $renderPool.get(key);
@@ -44,9 +96,15 @@ export const $acquireRenderTexture = (device, width, height) => {
44
96
  return device.createTexture({
45
97
  "size": { width, height },
46
98
  "format": "rgba8unorm",
47
- "usage": RENDER_TEXTURE_USAGE
99
+ "usage": $RENDER_TEXTURE_USAGE
48
100
  });
49
101
  };
102
+ /**
103
+ * @description レンダーテクスチャをプールに返却
104
+ * Release a render texture back to the pool
105
+ * @param {GPUTexture} texture
106
+ * @return {void}
107
+ */
50
108
  export const $releaseRenderTexture = (texture) => {
51
109
  const key = `${texture.width}_${texture.height}`;
52
110
  let list = $renderPool.get(key);
@@ -56,6 +114,11 @@ export const $releaseRenderTexture = (texture) => {
56
114
  }
57
115
  list.push(texture);
58
116
  };
117
+ /**
118
+ * @description 全テクスチャプールを破棄してクリア
119
+ * Destroy and clear all texture pools
120
+ * @return {void}
121
+ */
59
122
  export const $clearFillTexturePool = () => {
60
123
  for (const [, list] of $pool) {
61
124
  for (const texture of list) {
@@ -2,9 +2,28 @@ import type { IAttachmentObject } from "../../interface/IAttachmentObject";
2
2
  import type { IFilterConfig } from "../../interface/IFilterConfig";
3
3
  /**
4
4
  * @description ベベルフィルターを適用
5
- * WebGL版と同様に、erase前処理で差分テクスチャを作成してからブラーを適用
5
+ * Apply bevel filter
6
6
  *
7
+ * WebGL版と同様に、erase前処理で差分テクスチャを作成してからブラーを適用
7
8
  * UV変換方式で元テクスチャとブラーテクスチャを直接サンプリング。
8
9
  * 合成時のcopyTextureToTextureと一時テクスチャを使用しない最適化版。
10
+ *
11
+ * @param {IAttachmentObject} source_attachment - 入力テクスチャ
12
+ * @param {Float32Array} matrix - 変換行列
13
+ * @param {number} distance - ベベルの距離
14
+ * @param {number} angle - ベベルの角度(度)
15
+ * @param {number} highlight_color - ハイライト色 (32bit整数)
16
+ * @param {number} highlight_alpha - ハイライトアルファ
17
+ * @param {number} shadow_color - シャドウ色 (32bit整数)
18
+ * @param {number} shadow_alpha - シャドウアルファ
19
+ * @param {number} blur_x - X方向ブラー量
20
+ * @param {number} blur_y - Y方向ブラー量
21
+ * @param {number} strength - ベベル強度
22
+ * @param {number} quality - クオリティ
23
+ * @param {number} type - タイプ (0: full, 1: inner, 2: outer)
24
+ * @param {boolean} knockout - ノックアウトモード
25
+ * @param {number} device_pixel_ratio - デバイスピクセル比
26
+ * @param {IFilterConfig} config - WebGPUリソース設定
27
+ * @return {IAttachmentObject} - フィルター適用後のアタッチメント
9
28
  */
10
- export declare const execute: (sourceAttachment: IAttachmentObject, matrix: Float32Array, distance: number, angle: number, highlightColor: number, highlightAlpha: number, shadowColor: number, shadowAlpha: number, blurX: number, blurY: number, strength: number, quality: number, type: number, knockout: boolean, devicePixelRatio: number, config: IFilterConfig) => IAttachmentObject;
29
+ export declare const execute: (source_attachment: IAttachmentObject, matrix: Float32Array, distance: number, angle: number, highlight_color: number, highlight_alpha: number, shadow_color: number, shadow_alpha: number, blur_x: number, blur_y: number, strength: number, quality: number, type: number, knockout: boolean, device_pixel_ratio: number, config: IFilterConfig) => IAttachmentObject;
@@ -1,9 +1,6 @@
1
1
  import { $offset } from "../FilterOffset";
2
+ import { DEG_TO_RAD, intToPremultipliedRGBA } from "../FilterUtil";
2
3
  import { execute as filterApplyBlurFilterUseCase } from "../BlurFilter/FilterApplyBlurFilterUseCase";
3
- /**
4
- * @description 度からラジアンへの変換係数
5
- */
6
- const DEG_TO_RAD = Math.PI / 180;
7
4
  /**
8
5
  * @description プリアロケートされたFloat32Array
9
6
  */
@@ -26,41 +23,51 @@ const $entries4 = [
26
23
  { "binding": 2, "resource": null },
27
24
  { "binding": 3, "resource": null }
28
25
  ];
29
- /**
30
- * @description 32bit整数からRGB値を抽出(プリマルチプライドアルファ対応)
31
- */
32
- const intToRGBA = (color, alpha) => {
33
- const r = (color >> 16 & 0xFF) / 255 * alpha;
34
- const g = (color >> 8 & 0xFF) / 255 * alpha;
35
- const b = (color & 0xFF) / 255 * alpha;
36
- return [r, g, b, alpha];
37
- };
38
26
  /**
39
27
  * @description ベベルフィルターを適用
40
- * WebGL版と同様に、erase前処理で差分テクスチャを作成してからブラーを適用
28
+ * Apply bevel filter
41
29
  *
30
+ * WebGL版と同様に、erase前処理で差分テクスチャを作成してからブラーを適用
42
31
  * UV変換方式で元テクスチャとブラーテクスチャを直接サンプリング。
43
32
  * 合成時のcopyTextureToTextureと一時テクスチャを使用しない最適化版。
33
+ *
34
+ * @param {IAttachmentObject} source_attachment - 入力テクスチャ
35
+ * @param {Float32Array} matrix - 変換行列
36
+ * @param {number} distance - ベベルの距離
37
+ * @param {number} angle - ベベルの角度(度)
38
+ * @param {number} highlight_color - ハイライト色 (32bit整数)
39
+ * @param {number} highlight_alpha - ハイライトアルファ
40
+ * @param {number} shadow_color - シャドウ色 (32bit整数)
41
+ * @param {number} shadow_alpha - シャドウアルファ
42
+ * @param {number} blur_x - X方向ブラー量
43
+ * @param {number} blur_y - Y方向ブラー量
44
+ * @param {number} strength - ベベル強度
45
+ * @param {number} quality - クオリティ
46
+ * @param {number} type - タイプ (0: full, 1: inner, 2: outer)
47
+ * @param {boolean} knockout - ノックアウトモード
48
+ * @param {number} device_pixel_ratio - デバイスピクセル比
49
+ * @param {IFilterConfig} config - WebGPUリソース設定
50
+ * @return {IAttachmentObject} - フィルター適用後のアタッチメント
44
51
  */
45
- export const execute = (sourceAttachment, matrix, distance, angle, highlightColor, highlightAlpha, shadowColor, shadowAlpha, blurX, blurY, strength, quality, type, knockout, devicePixelRatio, config) => {
52
+ export const execute = (source_attachment, matrix, distance, angle, highlight_color, highlight_alpha, shadow_color, shadow_alpha, blur_x, blur_y, strength, quality, type, knockout, device_pixel_ratio, config) => {
46
53
  const { device, commandEncoder, frameBufferManager, pipelineManager, textureManager } = config;
47
54
  // 元のオフセットを保存
48
55
  const baseOffsetX = $offset.x;
49
56
  const baseOffsetY = $offset.y;
50
- const baseWidth = sourceAttachment.width;
51
- const baseHeight = sourceAttachment.height;
57
+ const baseWidth = source_attachment.width;
58
+ const baseHeight = source_attachment.height;
52
59
  // スケールを計算
53
60
  const xScale = Math.sqrt(matrix[0] * matrix[0] + matrix[1] * matrix[1]);
54
61
  const yScale = Math.sqrt(matrix[2] * matrix[2] + matrix[3] * matrix[3]);
55
62
  // オフセットを計算(WebGL版と同じ)
56
63
  const radian = angle * DEG_TO_RAD;
57
- const x = Math.cos(radian) * distance * (xScale / devicePixelRatio);
58
- const y = Math.sin(radian) * distance * (yScale / devicePixelRatio);
64
+ const x = Math.cos(radian) * distance * (xScale / device_pixel_ratio);
65
+ const y = Math.sin(radian) * distance * (yScale / device_pixel_ratio);
59
66
  // === Erase前処理:差分テクスチャを作成 ===
60
67
  const eraseAttachment = frameBufferManager.createTemporaryAttachment(baseWidth, baseHeight);
61
68
  // Step 1: ソーステクスチャを元の位置にコピー(erase前処理のcopyTextureToTextureは残す)
62
69
  commandEncoder.copyTextureToTexture({
63
- "texture": sourceAttachment.texture.resource,
70
+ "texture": source_attachment.texture.resource,
64
71
  "origin": { "x": 0, "y": 0, "z": 0 }
65
72
  }, {
66
73
  "texture": eraseAttachment.texture.resource,
@@ -95,7 +102,7 @@ export const execute = (sourceAttachment, matrix, distance, angle, highlightColo
95
102
  }
96
103
  $entries3[0].resource.buffer = eraseUniformBuffer;
97
104
  $entries3[1].resource = eraseSampler;
98
- $entries3[2].resource = sourceAttachment.texture.view;
105
+ $entries3[2].resource = source_attachment.texture.view;
99
106
  const eraseBindGroup = device.createBindGroup({
100
107
  "layout": eraseBindGroupLayout,
101
108
  "entries": $entries3
@@ -108,7 +115,7 @@ export const execute = (sourceAttachment, matrix, distance, angle, highlightColo
108
115
  erasePassEncoder.end();
109
116
  }
110
117
  // === 差分テクスチャにブラーを適用 ===
111
- const blurAttachment = filterApplyBlurFilterUseCase(eraseAttachment, matrix, blurX, blurY, quality, devicePixelRatio, config);
118
+ const blurAttachment = filterApplyBlurFilterUseCase(eraseAttachment, matrix, blur_x, blur_y, quality, device_pixel_ratio, config);
112
119
  // eraseアタッチメントを解放
113
120
  frameBufferManager.releaseTemporaryAttachment(eraseAttachment);
114
121
  const blurWidth = blurAttachment.width;
@@ -147,7 +154,7 @@ export const execute = (sourceAttachment, matrix, distance, angle, highlightColo
147
154
  if (!pipeline || !bindGroupLayout) {
148
155
  console.error("[WebGPU BevelFilter] Pipeline not found");
149
156
  frameBufferManager.releaseTemporaryAttachment(blurAttachment);
150
- return sourceAttachment;
157
+ return source_attachment;
151
158
  }
152
159
  // サンプラーを作成
153
160
  const sampler = textureManager.createSampler("bevel_sampler", true);
@@ -158,8 +165,8 @@ export const execute = (sourceAttachment, matrix, distance, angle, highlightColo
158
165
  // baseScale, baseOffset (16 bytes)
159
166
  // blurScale, blurOffset (16 bytes)
160
167
  // Total: 80 bytes → 16 floats + 4 floats = 20 floats (80 bytes)
161
- const [hr, hg, hb, ha] = intToRGBA(highlightColor, highlightAlpha);
162
- const [sr, sg, sb, sa] = intToRGBA(shadowColor, shadowAlpha);
168
+ const [hr, hg, hb, ha] = intToPremultipliedRGBA(highlight_color, highlight_alpha);
169
+ const [sr, sg, sb, sa] = intToPremultipliedRGBA(shadow_color, shadow_alpha);
163
170
  $uniform20[0] = hr;
164
171
  $uniform20[1] = hg;
165
172
  $uniform20[2] = hb;
@@ -193,7 +200,7 @@ export const execute = (sourceAttachment, matrix, distance, angle, highlightColo
193
200
  $entries4[0].resource.buffer = uniformBuffer;
194
201
  $entries4[1].resource = sampler;
195
202
  $entries4[2].resource = blurAttachment.texture.view;
196
- $entries4[3].resource = sourceAttachment.texture.view;
203
+ $entries4[3].resource = source_attachment.texture.view;
197
204
  const bindGroup = device.createBindGroup({
198
205
  "layout": bindGroupLayout,
199
206
  "entries": $entries4
@@ -4,13 +4,13 @@ import type { IFilterConfig } from "../../interface/IFilterConfig";
4
4
  * @description ブラーフィルターを適用
5
5
  * Apply blur filter
6
6
  *
7
- * @param {IAttachmentObject} sourceAttachment - 入力テクスチャ(アタッチメント)
7
+ * @param {IAttachmentObject} source_attachment - 入力テクスチャ(アタッチメント)
8
8
  * @param {Float32Array} matrix - 変換行列
9
- * @param {number} blurX - X方向のブラー量
10
- * @param {number} blurY - Y方向のブラー量
9
+ * @param {number} blur_x - X方向のブラー量
10
+ * @param {number} blur_y - Y方向のブラー量
11
11
  * @param {number} quality - クオリティ (1-15)
12
- * @param {number} devicePixelRatio - デバイスピクセル比
12
+ * @param {number} device_pixel_ratio - デバイスピクセル比
13
13
  * @param {IFilterConfig} config - WebGPUリソース設定
14
14
  * @return {IAttachmentObject} - フィルター適用後のアタッチメント
15
15
  */
16
- export declare const execute: (sourceAttachment: IAttachmentObject, matrix: Float32Array, blurX: number, blurY: number, quality: number, devicePixelRatio: number, config: IFilterConfig) => IAttachmentObject;
16
+ export declare const execute: (source_attachment: IAttachmentObject, matrix: Float32Array, blur_x: number, blur_y: number, quality: number, device_pixel_ratio: number, config: IFilterConfig) => IAttachmentObject;
@@ -1,7 +1,5 @@
1
1
  import { $offset } from "../FilterOffset";
2
2
  import { calculateBlurParams, calculateDirectionalBlurParams } from "../BlurFilterUseCase";
3
- import { shouldUseComputeShader } from "./service/BlurFilterComputeShaderService";
4
- import { execute as executeBlurCompute } from "../../Compute/service/ComputeExecuteBlurService";
5
3
  /**
6
4
  * @description プリアロケートされたFloat32Array (サイズ4)
7
5
  */
@@ -18,26 +16,26 @@ const $entries3 = [
18
16
  * @description ブラーフィルターを適用
19
17
  * Apply blur filter
20
18
  *
21
- * @param {IAttachmentObject} sourceAttachment - 入力テクスチャ(アタッチメント)
19
+ * @param {IAttachmentObject} source_attachment - 入力テクスチャ(アタッチメント)
22
20
  * @param {Float32Array} matrix - 変換行列
23
- * @param {number} blurX - X方向のブラー量
24
- * @param {number} blurY - Y方向のブラー量
21
+ * @param {number} blur_x - X方向のブラー量
22
+ * @param {number} blur_y - Y方向のブラー量
25
23
  * @param {number} quality - クオリティ (1-15)
26
- * @param {number} devicePixelRatio - デバイスピクセル比
24
+ * @param {number} device_pixel_ratio - デバイスピクセル比
27
25
  * @param {IFilterConfig} config - WebGPUリソース設定
28
26
  * @return {IAttachmentObject} - フィルター適用後のアタッチメント
29
27
  */
30
- export const execute = (sourceAttachment, matrix, blurX, blurY, quality, devicePixelRatio, config) => {
28
+ export const execute = (source_attachment, matrix, blur_x, blur_y, quality, device_pixel_ratio, config) => {
31
29
  const { device, commandEncoder, frameBufferManager, pipelineManager, textureManager } = config;
32
30
  // ブラーパラメータを計算
33
- const blurParams = calculateBlurParams(matrix, blurX, blurY, quality, devicePixelRatio);
31
+ const blurParams = calculateBlurParams(matrix, blur_x, blur_y, quality, device_pixel_ratio);
34
32
  const { baseBlurX, baseBlurY, offsetX, offsetY, bufferScaleX, bufferScaleY } = blurParams;
35
33
  // オフセットを更新
36
34
  $offset.x += offsetX;
37
35
  $offset.y += offsetY;
38
36
  // ブラー用バッファサイズを計算
39
- const width = sourceAttachment.width + offsetX * 2;
40
- const height = sourceAttachment.height + offsetY * 2;
37
+ const width = source_attachment.width + offsetX * 2;
38
+ const height = source_attachment.height + offsetY * 2;
41
39
  const bufferWidth = Math.ceil(width * bufferScaleX);
42
40
  const bufferHeight = Math.ceil(height * bufferScaleY);
43
41
  // ピンポンバッファ用の一時アタッチメントを作成
@@ -46,38 +44,25 @@ export const execute = (sourceAttachment, matrix, blurX, blurY, quality, deviceP
46
44
  // サンプラーを作成(線形補間)
47
45
  const sampler = textureManager.createSampler("blur_sampler", true);
48
46
  // ソーステクスチャをattachment0にコピー(スケーリング付き)
49
- copyTextureToAttachment(device, commandEncoder, frameBufferManager, pipelineManager, sourceAttachment, attachment0, sampler, bufferScaleX, bufferScaleY, offsetX * bufferScaleX, offsetY * bufferScaleY, config.bufferManager);
47
+ copyTextureToAttachment(device, commandEncoder, frameBufferManager, pipelineManager, source_attachment, attachment0, sampler, bufferScaleX, bufferScaleY, offsetX * bufferScaleX, offsetY * bufferScaleY, config.bufferManager);
50
48
  // バッファスケールを考慮したブラー値
51
49
  const bufferBlurX = baseBlurX * bufferScaleX;
52
50
  const bufferBlurY = baseBlurY * bufferScaleY;
53
- // Compute Shaderを使用すべきか判定
54
- const useCompute = config.computePipelineManager
55
- && shouldUseComputeShader(baseBlurX, baseBlurY, bufferWidth, bufferHeight);
56
51
  // ブラーパスを実行
57
52
  const attachments = [attachment0, attachment1];
58
53
  let attachmentIndex = 0;
59
54
  for (let q = 0; q < quality; ++q) {
60
55
  // 水平ブラー
61
- if (blurX > 0) {
56
+ if (blur_x > 0) {
62
57
  const srcIndex = attachmentIndex;
63
58
  attachmentIndex = (attachmentIndex + 1) % 2;
64
- if (useCompute) {
65
- executeBlurCompute(device, commandEncoder, config.computePipelineManager, attachments[srcIndex], attachments[attachmentIndex], true, bufferBlurX, config.bufferManager);
66
- }
67
- else {
68
- applyDirectionalBlur(device, commandEncoder, frameBufferManager, pipelineManager, attachments[srcIndex], attachments[attachmentIndex], sampler, true, bufferBlurX, config.bufferManager);
69
- }
59
+ applyDirectionalBlur(device, commandEncoder, frameBufferManager, pipelineManager, attachments[srcIndex], attachments[attachmentIndex], sampler, true, bufferBlurX, config.bufferManager);
70
60
  }
71
61
  // 垂直ブラー
72
- if (blurY > 0) {
62
+ if (blur_y > 0) {
73
63
  const srcIndex = attachmentIndex;
74
64
  attachmentIndex = (attachmentIndex + 1) % 2;
75
- if (useCompute) {
76
- executeBlurCompute(device, commandEncoder, config.computePipelineManager, attachments[srcIndex], attachments[attachmentIndex], false, bufferBlurY, config.bufferManager);
77
- }
78
- else {
79
- applyDirectionalBlur(device, commandEncoder, frameBufferManager, pipelineManager, attachments[srcIndex], attachments[attachmentIndex], sampler, false, bufferBlurY, config.bufferManager);
80
- }
65
+ applyDirectionalBlur(device, commandEncoder, frameBufferManager, pipelineManager, attachments[srcIndex], attachments[attachmentIndex], sampler, false, bufferBlurY, config.bufferManager);
81
66
  }
82
67
  }
83
68
  // 結果のアタッチメント
@@ -85,7 +70,7 @@ export const execute = (sourceAttachment, matrix, blurX, blurY, quality, deviceP
85
70
  // バッファスケールが1でない場合は元のサイズにアップスケール
86
71
  if (bufferScaleX !== 1 || bufferScaleY !== 1) {
87
72
  const finalAttachment = frameBufferManager.createTemporaryAttachment(width, height);
88
- upscaleTexture(device, commandEncoder, frameBufferManager, pipelineManager, resultAttachment, finalAttachment, sampler, 1 / bufferScaleX, 1 / bufferScaleY, config.bufferManager);
73
+ upscaleTexture(device, commandEncoder, frameBufferManager, pipelineManager, resultAttachment, finalAttachment, sampler, config.bufferManager);
89
74
  // ピンポンバッファを解放
90
75
  frameBufferManager.releaseTemporaryAttachment(attachment0);
91
76
  frameBufferManager.releaseTemporaryAttachment(attachment1);
@@ -100,25 +85,33 @@ export const execute = (sourceAttachment, matrix, blurX, blurY, quality, deviceP
100
85
  };
101
86
  /**
102
87
  * @description テクスチャをアタッチメントにコピー(オフセット位置に配置、スケーリング対応)
88
+ * Copy texture to attachment with offset placement and scaling support
103
89
  *
104
- * @param source - ソーステクスチャ
105
- * @param dest - デストテクスチャ(ソースより大きい)
106
- * @param bufferScaleX - X方向のバッファスケール
107
- * @param bufferScaleY - Y方向のバッファスケール
108
- * @param pixelOffsetX - デスト内でのX方向オフセット(ピクセル単位、スケーリング済み)
109
- * @param pixelOffsetY - デスト内でのY方向オフセット(ピクセル単位、スケーリング済み)
90
+ * @param {GPUDevice} device - GPUデバイス
91
+ * @param {GPUCommandEncoder} command_encoder - コマンドエンコーダー
92
+ * @param {IFilterConfig["frameBufferManager"]} frame_buffer_manager - フレームバッファマネージャー
93
+ * @param {IFilterConfig["pipelineManager"]} pipeline_manager - パイプラインマネージャー
94
+ * @param {IAttachmentObject} source - ソーステクスチャ
95
+ * @param {IAttachmentObject} dest - デストテクスチャ(ソースより大きい)
96
+ * @param {GPUSampler} sampler - サンプラー
97
+ * @param {number} buffer_scale_x - X方向のバッファスケール
98
+ * @param {number} buffer_scale_y - Y方向のバッファスケール
99
+ * @param {number} pixel_offset_x - デスト内でのX方向オフセット(ピクセル単位、スケーリング済み)
100
+ * @param {number} pixel_offset_y - デスト内でのY方向オフセット(ピクセル単位、スケーリング済み)
101
+ * @param {IFilterConfig["bufferManager"]} [buffer_manager] - バッファマネージャー
102
+ * @return {void}
110
103
  */
111
- const copyTextureToAttachment = (device, commandEncoder, frameBufferManager, pipelineManager, source, dest, sampler, bufferScaleX, bufferScaleY, pixelOffsetX, pixelOffsetY, bufferManager) => {
104
+ const copyTextureToAttachment = (device, command_encoder, frame_buffer_manager, pipeline_manager, source, dest, sampler, buffer_scale_x, buffer_scale_y, pixel_offset_x, pixel_offset_y, buffer_manager) => {
112
105
  // texture_copy_rgba8を使用し、ビューポートでオフセットを制御
113
- const pipeline = pipelineManager.getPipeline("texture_copy_rgba8");
114
- const bindGroupLayout = pipelineManager.getBindGroupLayout("texture_copy");
106
+ const pipeline = pipeline_manager.getPipeline("texture_copy_rgba8");
107
+ const bindGroupLayout = pipeline_manager.getBindGroupLayout("texture_copy");
115
108
  if (!pipeline || !bindGroupLayout) {
116
109
  console.error("[WebGPU BlurFilter] texture_copy_rgba8 pipeline not found");
117
110
  return;
118
111
  }
119
112
  // デスト内でのソース描画サイズ(スケーリング後)
120
- const scaledSourceWidth = source.width * bufferScaleX;
121
- const scaledSourceHeight = source.height * bufferScaleY;
113
+ const scaledSourceWidth = source.width * buffer_scale_x;
114
+ const scaledSourceHeight = source.height * buffer_scale_y;
122
115
  // シェーダー: uv = texCoord * scale + offset
123
116
  // ソース全体をサンプリングするので scale = 1, offset = 0
124
117
  const scaleX = 1;
@@ -130,13 +123,13 @@ const copyTextureToAttachment = (device, commandEncoder, frameBufferManager, pip
130
123
  $uniform4[1] = scaleY;
131
124
  $uniform4[2] = offsetX;
132
125
  $uniform4[3] = offsetY;
133
- const uniformBuffer = bufferManager
134
- ? bufferManager.acquireAndWriteUniformBuffer($uniform4)
126
+ const uniformBuffer = buffer_manager
127
+ ? buffer_manager.acquireAndWriteUniformBuffer($uniform4)
135
128
  : device.createBuffer({
136
129
  "size": $uniform4.byteLength,
137
130
  "usage": GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST
138
131
  });
139
- if (!bufferManager) {
132
+ if (!buffer_manager) {
140
133
  device.queue.writeBuffer(uniformBuffer, 0, $uniform4);
141
134
  }
142
135
  $entries3[0].resource.buffer = uniformBuffer;
@@ -146,27 +139,40 @@ const copyTextureToAttachment = (device, commandEncoder, frameBufferManager, pip
146
139
  "layout": bindGroupLayout,
147
140
  "entries": $entries3
148
141
  });
149
- const renderPassDescriptor = frameBufferManager.createRenderPassDescriptor(dest.texture.view, 0, 0, 0, 0, "clear");
150
- const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);
142
+ const renderPassDescriptor = frame_buffer_manager.createRenderPassDescriptor(dest.texture.view, 0, 0, 0, 0, "clear");
143
+ const passEncoder = command_encoder.beginRenderPass(renderPassDescriptor);
151
144
  passEncoder.setPipeline(pipeline);
152
145
  passEncoder.setBindGroup(0, bindGroup);
153
146
  // ビューポートを設定してオフセット位置に描画
154
- passEncoder.setViewport(pixelOffsetX, pixelOffsetY, scaledSourceWidth, scaledSourceHeight, 0, 1);
155
- passEncoder.setScissorRect(Math.floor(pixelOffsetX), Math.floor(pixelOffsetY), Math.ceil(scaledSourceWidth), Math.ceil(scaledSourceHeight));
147
+ passEncoder.setViewport(pixel_offset_x, pixel_offset_y, scaledSourceWidth, scaledSourceHeight, 0, 1);
148
+ passEncoder.setScissorRect(Math.floor(pixel_offset_x), Math.floor(pixel_offset_y), Math.ceil(scaledSourceWidth), Math.ceil(scaledSourceHeight));
156
149
  passEncoder.draw(6, 1, 0, 0);
157
150
  passEncoder.end();
158
151
  // Note: uniformBuffer is not destroyed here - it will be garbage collected after GPU submission
159
152
  };
160
153
  /**
161
154
  * @description 方向ブラーを適用
155
+ * Apply directional blur pass
156
+ *
157
+ * @param {GPUDevice} device - GPUデバイス
158
+ * @param {GPUCommandEncoder} command_encoder - コマンドエンコーダー
159
+ * @param {IFilterConfig["frameBufferManager"]} frame_buffer_manager - フレームバッファマネージャー
160
+ * @param {IFilterConfig["pipelineManager"]} pipeline_manager - パイプラインマネージャー
161
+ * @param {IAttachmentObject} source - ソーステクスチャ
162
+ * @param {IAttachmentObject} dest - デストテクスチャ
163
+ * @param {GPUSampler} sampler - サンプラー
164
+ * @param {boolean} is_horizontal - 水平方向かどうか
165
+ * @param {number} blur - ブラー量
166
+ * @param {IFilterConfig["bufferManager"]} [buffer_manager] - バッファマネージャー
167
+ * @return {void}
162
168
  */
163
- const applyDirectionalBlur = (device, commandEncoder, frameBufferManager, pipelineManager, source, dest, sampler, isHorizontal, blur, bufferManager) => {
164
- const params = calculateDirectionalBlurParams(isHorizontal, blur, source.width, source.height);
169
+ const applyDirectionalBlur = (device, command_encoder, frame_buffer_manager, pipeline_manager, source, dest, sampler, is_horizontal, blur, buffer_manager) => {
170
+ const params = calculateDirectionalBlurParams(is_horizontal, blur, source.width, source.height);
165
171
  const { offsetX, offsetY, fraction, samples, halfBlur } = params;
166
172
  // halfBlurに対応するパイプラインを取得(1〜16の範囲でクランプ)
167
173
  const clampedHalfBlur = Math.max(1, Math.min(16, halfBlur));
168
- const pipeline = pipelineManager.getPipeline(`blur_filter_${clampedHalfBlur}`);
169
- const bindGroupLayout = pipelineManager.getBindGroupLayout("blur_filter");
174
+ const pipeline = pipeline_manager.getPipeline(`blur_filter_${clampedHalfBlur}`);
175
+ const bindGroupLayout = pipeline_manager.getBindGroupLayout("blur_filter");
170
176
  if (!pipeline || !bindGroupLayout) {
171
177
  console.error(`[WebGPU BlurFilter] blur_filter_${clampedHalfBlur} pipeline not found`);
172
178
  return;
@@ -176,13 +182,13 @@ const applyDirectionalBlur = (device, commandEncoder, frameBufferManager, pipeli
176
182
  $uniform4[1] = offsetY;
177
183
  $uniform4[2] = fraction;
178
184
  $uniform4[3] = samples;
179
- const uniformBuffer = bufferManager
180
- ? bufferManager.acquireAndWriteUniformBuffer($uniform4)
185
+ const uniformBuffer = buffer_manager
186
+ ? buffer_manager.acquireAndWriteUniformBuffer($uniform4)
181
187
  : device.createBuffer({
182
188
  "size": $uniform4.byteLength,
183
189
  "usage": GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST
184
190
  });
185
- if (!bufferManager) {
191
+ if (!buffer_manager) {
186
192
  device.queue.writeBuffer(uniformBuffer, 0, $uniform4);
187
193
  }
188
194
  $entries3[0].resource.buffer = uniformBuffer;
@@ -192,8 +198,8 @@ const applyDirectionalBlur = (device, commandEncoder, frameBufferManager, pipeli
192
198
  "layout": bindGroupLayout,
193
199
  "entries": $entries3
194
200
  });
195
- const renderPassDescriptor = frameBufferManager.createRenderPassDescriptor(dest.texture.view, 0, 0, 0, 0, "clear");
196
- const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);
201
+ const renderPassDescriptor = frame_buffer_manager.createRenderPassDescriptor(dest.texture.view, 0, 0, 0, 0, "clear");
202
+ const passEncoder = command_encoder.beginRenderPass(renderPassDescriptor);
197
203
  passEncoder.setPipeline(pipeline);
198
204
  passEncoder.setBindGroup(0, bindGroup);
199
205
  passEncoder.draw(6, 1, 0, 0);
@@ -202,11 +208,22 @@ const applyDirectionalBlur = (device, commandEncoder, frameBufferManager, pipeli
202
208
  };
203
209
  /**
204
210
  * @description テクスチャをアップスケール(ソース全体をデスト全体にマッピング)
211
+ * Upscale texture by mapping entire source to entire destination
212
+ *
213
+ * @param {GPUDevice} device - GPUデバイス
214
+ * @param {GPUCommandEncoder} command_encoder - コマンドエンコーダー
215
+ * @param {IFilterConfig["frameBufferManager"]} frame_buffer_manager - フレームバッファマネージャー
216
+ * @param {IFilterConfig["pipelineManager"]} pipeline_manager - パイプラインマネージャー
217
+ * @param {IAttachmentObject} source - ソーステクスチャ
218
+ * @param {IAttachmentObject} dest - デストテクスチャ
219
+ * @param {GPUSampler} sampler - サンプラー
220
+ * @param {IFilterConfig["bufferManager"]} [buffer_manager] - バッファマネージャー
221
+ * @return {void}
205
222
  */
206
- const upscaleTexture = (device, commandEncoder, frameBufferManager, pipelineManager, source, dest, sampler, _scaleX, _scaleY, bufferManager) => {
223
+ const upscaleTexture = (device, command_encoder, frame_buffer_manager, pipeline_manager, source, dest, sampler, buffer_manager) => {
207
224
  // temp_アタッチメントはrgba8unormフォーマットなので、texture_copy_rgba8パイプラインを使用
208
- const pipeline = pipelineManager.getPipeline("texture_copy_rgba8");
209
- const bindGroupLayout = pipelineManager.getBindGroupLayout("texture_copy");
225
+ const pipeline = pipeline_manager.getPipeline("texture_copy_rgba8");
226
+ const bindGroupLayout = pipeline_manager.getBindGroupLayout("texture_copy");
210
227
  if (!pipeline || !bindGroupLayout) {
211
228
  console.error("[WebGPU BlurFilter] texture_copy_rgba8 pipeline not found");
212
229
  return;
@@ -218,13 +235,13 @@ const upscaleTexture = (device, commandEncoder, frameBufferManager, pipelineMana
218
235
  $uniform4[1] = 1;
219
236
  $uniform4[2] = 0;
220
237
  $uniform4[3] = 0;
221
- const uniformBuffer = bufferManager
222
- ? bufferManager.acquireAndWriteUniformBuffer($uniform4)
238
+ const uniformBuffer = buffer_manager
239
+ ? buffer_manager.acquireAndWriteUniformBuffer($uniform4)
223
240
  : device.createBuffer({
224
241
  "size": $uniform4.byteLength,
225
242
  "usage": GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST
226
243
  });
227
- if (!bufferManager) {
244
+ if (!buffer_manager) {
228
245
  device.queue.writeBuffer(uniformBuffer, 0, $uniform4);
229
246
  }
230
247
  $entries3[0].resource.buffer = uniformBuffer;
@@ -234,8 +251,8 @@ const upscaleTexture = (device, commandEncoder, frameBufferManager, pipelineMana
234
251
  "layout": bindGroupLayout,
235
252
  "entries": $entries3
236
253
  });
237
- const renderPassDescriptor = frameBufferManager.createRenderPassDescriptor(dest.texture.view, 0, 0, 0, 0, "clear");
238
- const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);
254
+ const renderPassDescriptor = frame_buffer_manager.createRenderPassDescriptor(dest.texture.view, 0, 0, 0, 0, "clear");
255
+ const passEncoder = command_encoder.beginRenderPass(renderPassDescriptor);
239
256
  passEncoder.setPipeline(pipeline);
240
257
  passEncoder.setBindGroup(0, bindGroup);
241
258
  passEncoder.draw(6, 1, 0, 0);