@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
@@ -4,14 +4,16 @@
4
4
  */
5
5
  /**
6
6
  * @description ブラーフィルターパラメータを計算
7
- * @param {Float32Array} matrix - 変換行列
8
- * @param {number} blurX - X方向のブラー量
9
- * @param {number} blurY - Y方向のブラー量
10
- * @param {number} quality - クオリティ (1-15)
11
- * @param {number} devicePixelRatio - デバイスピクセル比
7
+ * Calculate blur filter parameters
8
+ *
9
+ * @param {Float32Array} matrix - 変換行列
10
+ * @param {number} blur_x - X方向のブラー量
11
+ * @param {number} blur_y - Y方向のブラー量
12
+ * @param {number} quality - クオリティ (1-15)
13
+ * @param {number} device_pixel_ratio - デバイスピクセル比
12
14
  * @return {object}
13
15
  */
14
- export declare const calculateBlurParams: (matrix: Float32Array, blurX: number, blurY: number, quality: number, devicePixelRatio: number) => {
16
+ export declare const calculateBlurParams: (matrix: Float32Array, blur_x: number, blur_y: number, quality: number, device_pixel_ratio: number) => {
15
17
  baseBlurX: number;
16
18
  baseBlurY: number;
17
19
  offsetX: number;
@@ -21,13 +23,15 @@ export declare const calculateBlurParams: (matrix: Float32Array, blurX: number,
21
23
  };
22
24
  /**
23
25
  * @description 方向ブラーのパラメータを計算
24
- * @param {boolean} isHorizontal - 水平方向かどうか
25
- * @param {number} blur - ブラー量
26
- * @param {number} textureWidth - テクスチャ幅
27
- * @param {number} textureHeight - テクスチャ高さ
26
+ * Calculate directional blur parameters
27
+ *
28
+ * @param {boolean} is_horizontal - 水平方向かどうか
29
+ * @param {number} blur - ブラー量
30
+ * @param {number} texture_width - テクスチャ幅
31
+ * @param {number} texture_height - テクスチャ高さ
28
32
  * @return {object}
29
33
  */
30
- export declare const calculateDirectionalBlurParams: (isHorizontal: boolean, blur: number, textureWidth: number, textureHeight: number) => {
34
+ export declare const calculateDirectionalBlurParams: (is_horizontal: boolean, blur: number, texture_width: number, texture_height: number) => {
31
35
  offsetX: number;
32
36
  offsetY: number;
33
37
  fraction: number;
@@ -5,23 +5,26 @@
5
5
  /**
6
6
  * @description ブラー計算用のステップ値
7
7
  * Step values for blur calculation
8
+ * @type {number[]}
8
9
  */
9
- const BLUR_STEP = [0.5, 1.05, 1.4, 1.55, 1.75, 1.9, 2, 2.15, 2.2, 2.3, 2.5, 3, 3, 3.5, 3.5];
10
+ const $BLUR_STEP = [0.5, 1.05, 1.4, 1.55, 1.75, 1.9, 2, 2.15, 2.2, 2.3, 2.5, 3, 3, 3.5, 3.5];
10
11
  /**
11
12
  * @description ブラーフィルターパラメータを計算
12
- * @param {Float32Array} matrix - 変換行列
13
- * @param {number} blurX - X方向のブラー量
14
- * @param {number} blurY - Y方向のブラー量
15
- * @param {number} quality - クオリティ (1-15)
16
- * @param {number} devicePixelRatio - デバイスピクセル比
13
+ * Calculate blur filter parameters
14
+ *
15
+ * @param {Float32Array} matrix - 変換行列
16
+ * @param {number} blur_x - X方向のブラー量
17
+ * @param {number} blur_y - Y方向のブラー量
18
+ * @param {number} quality - クオリティ (1-15)
19
+ * @param {number} device_pixel_ratio - デバイスピクセル比
17
20
  * @return {object}
18
21
  */
19
- export const calculateBlurParams = (matrix, blurX, blurY, quality, devicePixelRatio) => {
22
+ export const calculateBlurParams = (matrix, blur_x, blur_y, quality, device_pixel_ratio) => {
20
23
  const xScale = Math.sqrt(matrix[0] * matrix[0] + matrix[1] * matrix[1]);
21
24
  const yScale = Math.sqrt(matrix[2] * matrix[2] + matrix[3] * matrix[3]);
22
- const baseBlurX = blurX * (xScale / devicePixelRatio);
23
- const baseBlurY = blurY * (yScale / devicePixelRatio);
24
- const step = BLUR_STEP[Math.min(quality - 1, BLUR_STEP.length - 1)];
25
+ const baseBlurX = blur_x * (xScale / device_pixel_ratio);
26
+ const baseBlurY = blur_y * (yScale / device_pixel_ratio);
27
+ const step = $BLUR_STEP[Math.min(quality - 1, $BLUR_STEP.length - 1)];
25
28
  const offsetX = Math.round(baseBlurX * step);
26
29
  const offsetY = Math.round(baseBlurY * step);
27
30
  // バッファスケールを計算(大きなブラーの場合はダウンスケール)
@@ -62,19 +65,21 @@ export const calculateBlurParams = (matrix, blurX, blurY, quality, devicePixelRa
62
65
  };
63
66
  /**
64
67
  * @description 方向ブラーのパラメータを計算
65
- * @param {boolean} isHorizontal - 水平方向かどうか
66
- * @param {number} blur - ブラー量
67
- * @param {number} textureWidth - テクスチャ幅
68
- * @param {number} textureHeight - テクスチャ高さ
68
+ * Calculate directional blur parameters
69
+ *
70
+ * @param {boolean} is_horizontal - 水平方向かどうか
71
+ * @param {number} blur - ブラー量
72
+ * @param {number} texture_width - テクスチャ幅
73
+ * @param {number} texture_height - テクスチャ高さ
69
74
  * @return {object}
70
75
  */
71
- export const calculateDirectionalBlurParams = (isHorizontal, blur, textureWidth, textureHeight) => {
76
+ export const calculateDirectionalBlurParams = (is_horizontal, blur, texture_width, texture_height) => {
72
77
  const halfBlur = Math.ceil(blur * 0.5);
73
78
  const fraction = 1 - (halfBlur - blur * 0.5);
74
79
  const samples = 1 + blur;
75
80
  // テクセルオフセットを計算
76
- const offsetX = isHorizontal ? 1 / textureWidth : 0;
77
- const offsetY = isHorizontal ? 0 : 1 / textureHeight;
81
+ const offsetX = is_horizontal ? 1 / texture_width : 0;
82
+ const offsetY = is_horizontal ? 0 : 1 / texture_height;
78
83
  return {
79
84
  offsetX,
80
85
  offsetY,
@@ -4,9 +4,9 @@ import type { IFilterConfig } from "../../interface/IFilterConfig";
4
4
  * @description カラーマトリックスフィルターを適用
5
5
  * Apply color matrix filter
6
6
  *
7
- * @param {IAttachmentObject} sourceAttachment - 入力テクスチャ(アタッチメント)
7
+ * @param {IAttachmentObject} source_attachment - 入力テクスチャ(アタッチメント)
8
8
  * @param {Float32Array} matrix - 4x5カラーマトリックス (20 floats)
9
9
  * @param {IFilterConfig} config - WebGPUリソース設定
10
10
  * @return {IAttachmentObject} - フィルター適用後のアタッチメント
11
11
  */
12
- export declare const execute: (sourceAttachment: IAttachmentObject, matrix: Float32Array, config: IFilterConfig) => IAttachmentObject;
12
+ export declare const execute: (source_attachment: IAttachmentObject, matrix: Float32Array, config: IFilterConfig) => IAttachmentObject;
@@ -14,20 +14,20 @@ const $entries3 = [
14
14
  * @description カラーマトリックスフィルターを適用
15
15
  * Apply color matrix filter
16
16
  *
17
- * @param {IAttachmentObject} sourceAttachment - 入力テクスチャ(アタッチメント)
17
+ * @param {IAttachmentObject} source_attachment - 入力テクスチャ(アタッチメント)
18
18
  * @param {Float32Array} matrix - 4x5カラーマトリックス (20 floats)
19
19
  * @param {IFilterConfig} config - WebGPUリソース設定
20
20
  * @return {IAttachmentObject} - フィルター適用後のアタッチメント
21
21
  */
22
- export const execute = (sourceAttachment, matrix, config) => {
22
+ export const execute = (source_attachment, matrix, config) => {
23
23
  const { device, commandEncoder, frameBufferManager, pipelineManager, textureManager } = config;
24
24
  // 出力アタッチメントを作成
25
- const destAttachment = frameBufferManager.createTemporaryAttachment(sourceAttachment.width, sourceAttachment.height);
25
+ const destAttachment = frameBufferManager.createTemporaryAttachment(source_attachment.width, source_attachment.height);
26
26
  const pipeline = pipelineManager.getPipeline("color_matrix_filter");
27
27
  const bindGroupLayout = pipelineManager.getBindGroupLayout("color_matrix_filter");
28
28
  if (!pipeline || !bindGroupLayout) {
29
29
  console.error("[WebGPU ColorMatrixFilter] Pipeline not found");
30
- return sourceAttachment;
30
+ return source_attachment;
31
31
  }
32
32
  // サンプラーを作成
33
33
  const sampler = textureManager.createSampler("color_matrix_sampler", true);
@@ -73,7 +73,7 @@ export const execute = (sourceAttachment, matrix, config) => {
73
73
  // バインドグループを作成
74
74
  $entries3[0].resource.buffer = uniformBuffer;
75
75
  $entries3[1].resource = sampler;
76
- $entries3[2].resource = sourceAttachment.texture.view;
76
+ $entries3[2].resource = source_attachment.texture.view;
77
77
  const bindGroup = device.createBindGroup({
78
78
  "layout": bindGroupLayout,
79
79
  "entries": $entries3
@@ -2,5 +2,19 @@ import type { IAttachmentObject } from "../../interface/IAttachmentObject";
2
2
  import type { IFilterConfig } from "../../interface/IFilterConfig";
3
3
  /**
4
4
  * @description コンボリューションフィルターを適用
5
+ * Apply convolution filter
6
+ *
7
+ * @param {IAttachmentObject} source_attachment - 入力テクスチャ(アタッチメント)
8
+ * @param {number} matrix_x - マトリックスのX方向サイズ
9
+ * @param {number} matrix_y - マトリックスのY方向サイズ
10
+ * @param {Float32Array} matrix - コンボリューションマトリックス
11
+ * @param {number} divisor - 除算値
12
+ * @param {number} bias - バイアス値
13
+ * @param {boolean} preserve_alpha - アルファ値を保持するか
14
+ * @param {boolean} clamp - クランプするか
15
+ * @param {number} color - 代替色 (32bit整数)
16
+ * @param {number} alpha - アルファ値
17
+ * @param {IFilterConfig} config - WebGPUリソース設定
18
+ * @return {IAttachmentObject} - フィルター適用後のアタッチメント
5
19
  */
6
- export declare const execute: (sourceAttachment: IAttachmentObject, matrixX: number, matrixY: number, matrix: Float32Array, divisor: number, bias: number, preserveAlpha: boolean, clamp: boolean, color: number, alpha: number, config: IFilterConfig) => IAttachmentObject;
20
+ export declare const execute: (source_attachment: IAttachmentObject, matrix_x: number, matrix_y: number, matrix: Float32Array, divisor: number, bias: number, preserve_alpha: boolean, clamp: boolean, color: number, alpha: number, config: IFilterConfig) => IAttachmentObject;
@@ -1,4 +1,5 @@
1
1
  import { ShaderSource } from "../../Shader/ShaderSource";
2
+ import { intToStraightRGBA } from "../FilterUtil";
2
3
  /**
3
4
  * @description プリアロケートされたBindGroupEntry配列 (バインディング3つ)
4
5
  */
@@ -7,33 +8,38 @@ const $entries3 = [
7
8
  { "binding": 1, "resource": null },
8
9
  { "binding": 2, "resource": null }
9
10
  ];
10
- /**
11
- * @description 32bit整数からRGB値を抽出
12
- */
13
- const intToRGBA = (color, alpha) => {
14
- const r = (color >> 16 & 0xFF) / 255;
15
- const g = (color >> 8 & 0xFF) / 255;
16
- const b = (color & 0xFF) / 255;
17
- return [r, g, b, alpha];
18
- };
19
11
  /**
20
12
  * @description パイプラインキャッシュ(キー: matrixX,matrixY,preserveAlpha,clamp)
21
13
  */
22
14
  const $pipelineCache = new Map();
23
15
  /**
24
16
  * @description コンボリューションフィルターを適用
17
+ * Apply convolution filter
18
+ *
19
+ * @param {IAttachmentObject} source_attachment - 入力テクスチャ(アタッチメント)
20
+ * @param {number} matrix_x - マトリックスのX方向サイズ
21
+ * @param {number} matrix_y - マトリックスのY方向サイズ
22
+ * @param {Float32Array} matrix - コンボリューションマトリックス
23
+ * @param {number} divisor - 除算値
24
+ * @param {number} bias - バイアス値
25
+ * @param {boolean} preserve_alpha - アルファ値を保持するか
26
+ * @param {boolean} clamp - クランプするか
27
+ * @param {number} color - 代替色 (32bit整数)
28
+ * @param {number} alpha - アルファ値
29
+ * @param {IFilterConfig} config - WebGPUリソース設定
30
+ * @return {IAttachmentObject} - フィルター適用後のアタッチメント
25
31
  */
26
- export const execute = (sourceAttachment, matrixX, matrixY, matrix, divisor, bias, preserveAlpha, clamp, color, alpha, config) => {
32
+ export const execute = (source_attachment, matrix_x, matrix_y, matrix, divisor, bias, preserve_alpha, clamp, color, alpha, config) => {
27
33
  const { device, commandEncoder, frameBufferManager, textureManager } = config;
28
- const width = sourceAttachment.width;
29
- const height = sourceAttachment.height;
34
+ const width = source_attachment.width;
35
+ const height = source_attachment.height;
30
36
  // 出力アタッチメントを作成
31
37
  const destAttachment = frameBufferManager.createTemporaryAttachment(width, height);
32
38
  // パイプラインをキャッシュから取得または作成
33
- const cacheKey = `${matrixX},${matrixY},${preserveAlpha},${clamp}`;
39
+ const cacheKey = `${matrix_x},${matrix_y},${preserve_alpha},${clamp}`;
34
40
  let cached = $pipelineCache.get(cacheKey);
35
41
  if (!cached) {
36
- const shaderCode = ShaderSource.getConvolutionFilterFragmentShader(matrixX, matrixY, preserveAlpha, clamp);
42
+ const shaderCode = ShaderSource.getConvolutionFilterFragmentShader(matrix_x, matrix_y, preserve_alpha, clamp);
37
43
  const shaderModule = device.createShaderModule({ "code": shaderCode });
38
44
  const bindGroupLayout = device.createBindGroupLayout({
39
45
  "entries": [
@@ -94,9 +100,9 @@ export const execute = (sourceAttachment, matrixX, matrixY, matrix, divisor, bia
94
100
  // サンプラーを作成
95
101
  const sampler = textureManager.createSampler("convolution_sampler", true);
96
102
  // ユニフォームバッファを作成
97
- const matrixSize = matrixX * matrixY;
103
+ const matrixSize = matrix_x * matrix_y;
98
104
  const matrixArraySize = Math.ceil(matrixSize / 4);
99
- const [r, g, b, a] = intToRGBA(color, alpha);
105
+ const [r, g, b, a] = intToStraightRGBA(color, alpha);
100
106
  // マトリクスを4要素ごとにまとめる
101
107
  const paddedMatrix = new Float32Array(matrixArraySize * 4);
102
108
  for (let i = 0; i < matrixSize; i++) {
@@ -128,7 +134,7 @@ export const execute = (sourceAttachment, matrixX, matrixY, matrix, divisor, bia
128
134
  // バインドグループを作成
129
135
  $entries3[0].resource.buffer = uniformBuffer;
130
136
  $entries3[1].resource = sampler;
131
- $entries3[2].resource = sourceAttachment.texture.view;
137
+ $entries3[2].resource = source_attachment.texture.view;
132
138
  const bindGroup = device.createBindGroup({
133
139
  "layout": cached.bindGroupLayout,
134
140
  "entries": $entries3
@@ -2,5 +2,24 @@ import type { IAttachmentObject } from "../../interface/IAttachmentObject";
2
2
  import type { IFilterConfig } from "../../interface/IFilterConfig";
3
3
  /**
4
4
  * @description ディスプレイスメントマップフィルターを適用
5
+ * Apply displacement map filter
6
+ *
7
+ * @param {IAttachmentObject} source_attachment - 入力テクスチャ(アタッチメント)
8
+ * @param {Float32Array} _matrix - 変換行列(未使用)
9
+ * @param {Uint8Array} bitmap_buffer - ビットマップバッファ
10
+ * @param {number} bitmap_width - ビットマップ幅
11
+ * @param {number} bitmap_height - ビットマップ高さ
12
+ * @param {number} map_point_x - マップポイントX座標
13
+ * @param {number} map_point_y - マップポイントY座標
14
+ * @param {number} component_x - X方向コンポーネント
15
+ * @param {number} component_y - Y方向コンポーネント
16
+ * @param {number} scale_x - X方向スケール
17
+ * @param {number} scale_y - Y方向スケール
18
+ * @param {number} mode - ディスプレイスメントモード
19
+ * @param {number} color - 代替色 (32bit整数)
20
+ * @param {number} alpha - アルファ値
21
+ * @param {number} _device_pixel_ratio - デバイスピクセル比(未使用)
22
+ * @param {IFilterConfig} config - WebGPUリソース設定
23
+ * @return {IAttachmentObject} - フィルター適用後のアタッチメント
5
24
  */
6
- export declare const execute: (sourceAttachment: IAttachmentObject, _matrix: Float32Array, bitmapBuffer: Uint8Array, bitmapWidth: number, bitmapHeight: number, mapPointX: number, mapPointY: number, componentX: number, componentY: number, scaleX: number, scaleY: number, mode: number, color: number, alpha: number, _devicePixelRatio: number, config: IFilterConfig) => IAttachmentObject;
25
+ export declare const execute: (source_attachment: IAttachmentObject, _matrix: Float32Array, bitmap_buffer: Uint8Array, bitmap_width: number, bitmap_height: number, map_point_x: number, map_point_y: number, component_x: number, component_y: number, scale_x: number, scale_y: number, mode: number, color: number, alpha: number, _device_pixel_ratio: number, config: IFilterConfig) => IAttachmentObject;
@@ -1,4 +1,5 @@
1
1
  import { ShaderSource } from "../../Shader/ShaderSource";
2
+ import { intToPremultipliedRGBA } from "../FilterUtil";
2
3
  /**
3
4
  * @description プリアロケートされたFloat32Array (サイズ12: 最大48バイト)
4
5
  */
@@ -12,43 +13,53 @@ const $entries4 = [
12
13
  { "binding": 2, "resource": null },
13
14
  { "binding": 3, "resource": null }
14
15
  ];
15
- /**
16
- * @description 32bit整数からRGB値を抽出(プリマルチプライドアルファ)
17
- */
18
- const intToRGBA = (color, alpha) => {
19
- const r = (color >> 16 & 0xFF) / 255 * alpha;
20
- const g = (color >> 8 & 0xFF) / 255 * alpha;
21
- const b = (color & 0xFF) / 255 * alpha;
22
- return [r, g, b, alpha];
23
- };
24
16
  /**
25
17
  * @description パイプラインキャッシュ(キー: componentX,componentY,mode)
26
18
  */
27
19
  const $pipelineCache = new Map();
28
20
  /**
29
21
  * @description ディスプレイスメントマップフィルターを適用
22
+ * Apply displacement map filter
23
+ *
24
+ * @param {IAttachmentObject} source_attachment - 入力テクスチャ(アタッチメント)
25
+ * @param {Float32Array} _matrix - 変換行列(未使用)
26
+ * @param {Uint8Array} bitmap_buffer - ビットマップバッファ
27
+ * @param {number} bitmap_width - ビットマップ幅
28
+ * @param {number} bitmap_height - ビットマップ高さ
29
+ * @param {number} map_point_x - マップポイントX座標
30
+ * @param {number} map_point_y - マップポイントY座標
31
+ * @param {number} component_x - X方向コンポーネント
32
+ * @param {number} component_y - Y方向コンポーネント
33
+ * @param {number} scale_x - X方向スケール
34
+ * @param {number} scale_y - Y方向スケール
35
+ * @param {number} mode - ディスプレイスメントモード
36
+ * @param {number} color - 代替色 (32bit整数)
37
+ * @param {number} alpha - アルファ値
38
+ * @param {number} _device_pixel_ratio - デバイスピクセル比(未使用)
39
+ * @param {IFilterConfig} config - WebGPUリソース設定
40
+ * @return {IAttachmentObject} - フィルター適用後のアタッチメント
30
41
  */
31
- export const execute = (sourceAttachment, _matrix, bitmapBuffer, bitmapWidth, bitmapHeight, mapPointX, mapPointY, componentX, componentY, scaleX, scaleY, mode, color, alpha, _devicePixelRatio, config) => {
42
+ export const execute = (source_attachment, _matrix, bitmap_buffer, bitmap_width, bitmap_height, map_point_x, map_point_y, component_x, component_y, scale_x, scale_y, mode, color, alpha, _device_pixel_ratio, config) => {
32
43
  const { device, commandEncoder, frameBufferManager, textureManager } = config;
33
- const width = sourceAttachment.width;
34
- const height = sourceAttachment.height;
44
+ const width = source_attachment.width;
45
+ const height = source_attachment.height;
35
46
  // WebGL版と同じ: baseWidth/baseHeightはビットマップサイズを使用
36
- const baseWidth = bitmapWidth;
37
- const baseHeight = bitmapHeight;
47
+ const baseWidth = bitmap_width;
48
+ const baseHeight = bitmap_height;
38
49
  // 出力アタッチメントを作成
39
50
  const destAttachment = frameBufferManager.createTemporaryAttachment(width, height);
40
51
  // マップテクスチャを作成
41
52
  const mapTexture = device.createTexture({
42
- "size": { "width": bitmapWidth, "height": bitmapHeight },
53
+ "size": { "width": bitmap_width, "height": bitmap_height },
43
54
  "format": "rgba8unorm",
44
55
  "usage": GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST
45
56
  });
46
- device.queue.writeTexture({ "texture": mapTexture }, bitmapBuffer.buffer, { "bytesPerRow": bitmapWidth * 4, "offset": bitmapBuffer.byteOffset }, { "width": bitmapWidth, "height": bitmapHeight });
57
+ device.queue.writeTexture({ "texture": mapTexture }, bitmap_buffer.buffer, { "bytesPerRow": bitmap_width * 4, "offset": bitmap_buffer.byteOffset }, { "width": bitmap_width, "height": bitmap_height });
47
58
  // パイプラインをキャッシュから取得または作成
48
- const cacheKey = `${componentX},${componentY},${mode}`;
59
+ const cacheKey = `${component_x},${component_y},${mode}`;
49
60
  let cached = $pipelineCache.get(cacheKey);
50
61
  if (!cached) {
51
- const fragmentShaderCode = ShaderSource.getDisplacementMapFilterFragmentShader(componentX, componentY, mode);
62
+ const fragmentShaderCode = ShaderSource.getDisplacementMapFilterFragmentShader(component_x, component_y, mode);
52
63
  const vertexShaderModule = device.createShaderModule({
53
64
  "code": ShaderSource.getBlurFilterVertexShader()
54
65
  });
@@ -122,20 +133,20 @@ export const execute = (sourceAttachment, _matrix, bitmapBuffer, bitmapWidth, bi
122
133
  const needsSubstituteColor = mode === 1;
123
134
  const uniformSize = needsSubstituteColor ? 48 : 32;
124
135
  // uvToStScale
125
- $uniform12[0] = baseWidth / bitmapWidth;
126
- $uniform12[1] = baseHeight / bitmapHeight;
136
+ $uniform12[0] = baseWidth / bitmap_width;
137
+ $uniform12[1] = baseHeight / bitmap_height;
127
138
  // uvToStOffset
128
- $uniform12[2] = mapPointX / bitmapWidth;
129
- $uniform12[3] = (baseHeight - bitmapHeight - mapPointY) / bitmapHeight;
139
+ $uniform12[2] = map_point_x / bitmap_width;
140
+ $uniform12[3] = (baseHeight - bitmap_height - map_point_y) / bitmap_height;
130
141
  // scale
131
- $uniform12[4] = scaleX / baseWidth;
132
- $uniform12[5] = scaleY / baseHeight;
142
+ $uniform12[4] = scale_x / baseWidth;
143
+ $uniform12[5] = scale_y / baseHeight;
133
144
  // padding
134
145
  $uniform12[6] = 0;
135
146
  $uniform12[7] = 0;
136
147
  // substituteColor (mode === 1 の場合)
137
148
  if (needsSubstituteColor) {
138
- const [r, g, b, a] = intToRGBA(color, alpha);
149
+ const [r, g, b, a] = intToPremultipliedRGBA(color, alpha);
139
150
  $uniform12[8] = r;
140
151
  $uniform12[9] = g;
141
152
  $uniform12[10] = b;
@@ -153,7 +164,7 @@ export const execute = (sourceAttachment, _matrix, bitmapBuffer, bitmapWidth, bi
153
164
  // バインドグループを作成
154
165
  $entries4[0].resource.buffer = uniformBuffer;
155
166
  $entries4[1].resource = sampler;
156
- $entries4[2].resource = sourceAttachment.texture.view;
167
+ $entries4[2].resource = source_attachment.texture.view;
157
168
  $entries4[3].resource = mapTexture.createView();
158
169
  const bindGroup = device.createBindGroup({
159
170
  "layout": cached.bindGroupLayout,
@@ -4,21 +4,21 @@ import type { IFilterConfig } from "../../interface/IFilterConfig";
4
4
  * @description ドロップシャドウフィルターを適用
5
5
  * Apply drop shadow filter
6
6
  *
7
- * @param {IAttachmentObject} sourceAttachment - 入力テクスチャ
7
+ * @param {IAttachmentObject} source_attachment - 入力テクスチャ
8
8
  * @param {Float32Array} matrix - 変換行列
9
9
  * @param {number} distance - シャドウの距離
10
10
  * @param {number} angle - シャドウの角度(度)
11
11
  * @param {number} color - シャドウ色 (32bit整数)
12
12
  * @param {number} alpha - アルファ
13
- * @param {number} blurX - X方向ブラー量
14
- * @param {number} blurY - Y方向ブラー量
13
+ * @param {number} blur_x - X方向ブラー量
14
+ * @param {number} blur_y - Y方向ブラー量
15
15
  * @param {number} strength - シャドウ強度
16
16
  * @param {number} quality - クオリティ
17
17
  * @param {boolean} inner - インナーシャドウ
18
18
  * @param {boolean} knockout - ノックアウトモード
19
- * @param {boolean} hideObject - 元オブジェクトを隠す
20
- * @param {number} devicePixelRatio - デバイスピクセル比
21
- * @param {IDropShadowConfig} config - WebGPUリソース設定
19
+ * @param {boolean} hide_object - 元オブジェクトを隠す
20
+ * @param {number} device_pixel_ratio - デバイスピクセル比
21
+ * @param {IFilterConfig} config - WebGPUリソース設定
22
22
  * @return {IAttachmentObject} - フィルター適用後のアタッチメント
23
23
  */
24
- export declare const execute: (sourceAttachment: IAttachmentObject, matrix: Float32Array, distance: number, angle: number, color: number, alpha: number, blurX: number, blurY: number, strength: number, quality: number, inner: boolean, knockout: boolean, hideObject: boolean, devicePixelRatio: number, config: IFilterConfig) => IAttachmentObject;
24
+ export declare const execute: (source_attachment: IAttachmentObject, matrix: Float32Array, distance: number, angle: number, color: number, alpha: number, blur_x: number, blur_y: number, strength: number, quality: number, inner: boolean, knockout: boolean, hide_object: 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 (サイズ16)
9
6
  */
@@ -17,45 +14,36 @@ const $entries4 = [
17
14
  { "binding": 2, "resource": null },
18
15
  { "binding": 3, "resource": null }
19
16
  ];
20
- /**
21
- * @description 32bit整数からRGB値を抽出(プリマルチプライドアルファ対応)
22
- */
23
- const intToRGBA = (color, alpha) => {
24
- const r = (color >> 16 & 0xFF) / 255 * alpha;
25
- const g = (color >> 8 & 0xFF) / 255 * alpha;
26
- const b = (color & 0xFF) / 255 * alpha;
27
- return [r, g, b, alpha];
28
- };
29
17
  /**
30
18
  * @description ドロップシャドウフィルターを適用
31
19
  * Apply drop shadow filter
32
20
  *
33
- * @param {IAttachmentObject} sourceAttachment - 入力テクスチャ
21
+ * @param {IAttachmentObject} source_attachment - 入力テクスチャ
34
22
  * @param {Float32Array} matrix - 変換行列
35
23
  * @param {number} distance - シャドウの距離
36
24
  * @param {number} angle - シャドウの角度(度)
37
25
  * @param {number} color - シャドウ色 (32bit整数)
38
26
  * @param {number} alpha - アルファ
39
- * @param {number} blurX - X方向ブラー量
40
- * @param {number} blurY - Y方向ブラー量
27
+ * @param {number} blur_x - X方向ブラー量
28
+ * @param {number} blur_y - Y方向ブラー量
41
29
  * @param {number} strength - シャドウ強度
42
30
  * @param {number} quality - クオリティ
43
31
  * @param {boolean} inner - インナーシャドウ
44
32
  * @param {boolean} knockout - ノックアウトモード
45
- * @param {boolean} hideObject - 元オブジェクトを隠す
46
- * @param {number} devicePixelRatio - デバイスピクセル比
47
- * @param {IDropShadowConfig} config - WebGPUリソース設定
33
+ * @param {boolean} hide_object - 元オブジェクトを隠す
34
+ * @param {number} device_pixel_ratio - デバイスピクセル比
35
+ * @param {IFilterConfig} config - WebGPUリソース設定
48
36
  * @return {IAttachmentObject} - フィルター適用後のアタッチメント
49
37
  */
50
- export const execute = (sourceAttachment, matrix, distance, angle, color, alpha, blurX, blurY, strength, quality, inner, knockout, hideObject, devicePixelRatio, config) => {
38
+ export const execute = (source_attachment, matrix, distance, angle, color, alpha, blur_x, blur_y, strength, quality, inner, knockout, hide_object, device_pixel_ratio, config) => {
51
39
  const { device, commandEncoder, frameBufferManager, pipelineManager, textureManager } = config;
52
40
  // 元のオフセットを保存
53
41
  const baseOffsetX = $offset.x;
54
42
  const baseOffsetY = $offset.y;
55
- const baseWidth = sourceAttachment.width;
56
- const baseHeight = sourceAttachment.height;
43
+ const baseWidth = source_attachment.width;
44
+ const baseHeight = source_attachment.height;
57
45
  // ブラーフィルターを適用
58
- const blurAttachment = filterApplyBlurFilterUseCase(sourceAttachment, matrix, blurX, blurY, quality, devicePixelRatio, config);
46
+ const blurAttachment = filterApplyBlurFilterUseCase(source_attachment, matrix, blur_x, blur_y, quality, device_pixel_ratio, config);
59
47
  const blurWidth = blurAttachment.width;
60
48
  const blurHeight = blurAttachment.height;
61
49
  const blurOffsetX = $offset.x;
@@ -67,8 +55,8 @@ export const execute = (sourceAttachment, matrix, distance, angle, color, alpha,
67
55
  const yScale = Math.sqrt(matrix[2] * matrix[2] + matrix[3] * matrix[3]);
68
56
  // シャドウのオフセットを計算
69
57
  const radian = angle * DEG_TO_RAD;
70
- const shadowX = Math.cos(radian) * distance * (xScale / devicePixelRatio);
71
- const shadowY = Math.sin(radian) * distance * (yScale / devicePixelRatio);
58
+ const shadowX = Math.cos(radian) * distance * (xScale / device_pixel_ratio);
59
+ const shadowY = Math.sin(radian) * distance * (yScale / device_pixel_ratio);
72
60
  // 出力キャンバスのサイズを計算
73
61
  const w = inner ? baseWidth : blurWidth + Math.max(0, Math.abs(shadowX) - offsetDiffX);
74
62
  const h = inner ? baseHeight : blurHeight + Math.max(0, Math.abs(shadowY) - offsetDiffY);
@@ -86,11 +74,11 @@ export const execute = (sourceAttachment, matrix, distance, angle, color, alpha,
86
74
  // タイプとノックアウト状態を決定
87
75
  const isInner = inner;
88
76
  let isKnockout = knockout;
89
- let isHideObject = hideObject;
77
+ let isHideObject = hide_object;
90
78
  if (inner) {
91
- isKnockout = knockout || hideObject;
79
+ isKnockout = knockout || hide_object;
92
80
  }
93
- else if (!knockout && hideObject) {
81
+ else if (!knockout && hide_object) {
94
82
  // フルモード(シャドウのみ表示)
95
83
  isKnockout = true;
96
84
  isHideObject = true;
@@ -104,7 +92,7 @@ export const execute = (sourceAttachment, matrix, distance, angle, color, alpha,
104
92
  if (!pipeline || !bindGroupLayout) {
105
93
  console.error("[WebGPU DropShadowFilter] Pipeline not found");
106
94
  frameBufferManager.releaseTemporaryAttachment(blurAttachment);
107
- return sourceAttachment;
95
+ return source_attachment;
108
96
  }
109
97
  // サンプラーを作成
110
98
  const sampler = textureManager.createSampler("drop_shadow_sampler", true);
@@ -119,7 +107,7 @@ export const execute = (sourceAttachment, matrix, distance, angle, color, alpha,
119
107
  // knockout: f32 (4 bytes)
120
108
  // hideObject: f32 (4 bytes)
121
109
  // Total: 64 bytes
122
- const [r, g, b, a] = intToRGBA(color, alpha);
110
+ const [r, g, b, a] = intToPremultipliedRGBA(color, alpha);
123
111
  // WebGL版と同じUV変換方式:
124
112
  // uv = texCoord * scale - offset
125
113
  // WebGPU: texCoord.y=0がトップ、テクスチャY=0がトップ(Y-flip補正済み)
@@ -161,7 +149,7 @@ export const execute = (sourceAttachment, matrix, distance, angle, color, alpha,
161
149
  $entries4[0].resource.buffer = uniformBuffer;
162
150
  $entries4[1].resource = sampler;
163
151
  $entries4[2].resource = blurAttachment.texture.view;
164
- $entries4[3].resource = sourceAttachment.texture.view;
152
+ $entries4[3].resource = source_attachment.texture.view;
165
153
  const bindGroup = device.createBindGroup({
166
154
  "layout": bindGroupLayout,
167
155
  "entries": $entries4
@@ -12,6 +12,8 @@
12
12
  let $filterGradientAttachment = null;
13
13
  /**
14
14
  * @description GPUDeviceの参照
15
+ * Reference to GPUDevice
16
+ * @type {GPUDevice | null}
15
17
  * @private
16
18
  */
17
19
  let $device = null;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @description 度数法からラジアンへの変換係数
3
+ * Conversion factor from degrees to radians
4
+ */
5
+ export declare const DEG_TO_RAD: number;
6
+ /**
7
+ * @description 32bit整数カラーからプリマルチプライドアルファRGBA値を抽出
8
+ * Extract premultiplied alpha RGBA values from 32bit integer color
9
+ *
10
+ * @param {number} color - 32bit整数カラー値
11
+ * @param {number} alpha - アルファ値 (0-1)
12
+ * @return {[number, number, number, number]} - [r, g, b, a] (プリマルチプライドアルファ)
13
+ */
14
+ export declare const intToPremultipliedRGBA: (color: number, alpha: number) => [number, number, number, number];
15
+ /**
16
+ * @description 32bit整数カラーからストレートRGBA値を抽出
17
+ * Extract straight (non-premultiplied) RGBA values from 32bit integer color
18
+ *
19
+ * @param {number} color - 32bit整数カラー値
20
+ * @param {number} alpha - アルファ値 (0-1)
21
+ * @return {[number, number, number, number]} - [r, g, b, a] (ストレート)
22
+ */
23
+ export declare const intToStraightRGBA: (color: number, alpha: number) => [number, number, number, number];
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @description 度数法からラジアンへの変換係数
3
+ * Conversion factor from degrees to radians
4
+ */
5
+ export const DEG_TO_RAD = Math.PI / 180;
6
+ /**
7
+ * @description 32bit整数カラーからプリマルチプライドアルファRGBA値を抽出
8
+ * Extract premultiplied alpha RGBA values from 32bit integer color
9
+ *
10
+ * @param {number} color - 32bit整数カラー値
11
+ * @param {number} alpha - アルファ値 (0-1)
12
+ * @return {[number, number, number, number]} - [r, g, b, a] (プリマルチプライドアルファ)
13
+ */
14
+ export const intToPremultipliedRGBA = (color, alpha) => {
15
+ const r = (color >> 16 & 0xFF) / 255 * alpha;
16
+ const g = (color >> 8 & 0xFF) / 255 * alpha;
17
+ const b = (color & 0xFF) / 255 * alpha;
18
+ return [r, g, b, alpha];
19
+ };
20
+ /**
21
+ * @description 32bit整数カラーからストレートRGBA値を抽出
22
+ * Extract straight (non-premultiplied) RGBA values from 32bit integer color
23
+ *
24
+ * @param {number} color - 32bit整数カラー値
25
+ * @param {number} alpha - アルファ値 (0-1)
26
+ * @return {[number, number, number, number]} - [r, g, b, a] (ストレート)
27
+ */
28
+ export const intToStraightRGBA = (color, alpha) => {
29
+ const r = (color >> 16 & 0xFF) / 255;
30
+ const g = (color >> 8 & 0xFF) / 255;
31
+ const b = (color & 0xFF) / 255;
32
+ return [r, g, b, alpha];
33
+ };