@next2d/webgpu 3.0.4 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,7 +1,26 @@
1
1
  import { execute as meshFillGenerateUseCase } from "../../Mesh/usecase/MeshFillGenerateUseCase";
2
2
  import { execute as maskUnionMaskService } from "../../Mask/service/MaskUnionMaskService";
3
3
  import { $clipLevels } from "../../Mask";
4
+ /**
5
+ * @description クリップ用ユニフォームデータの事前確保配列(16要素)
6
+ * Pre-allocated uniform data array for clipping (16 elements)
7
+ */
4
8
  const $clipUniform16 = new Float32Array(16);
9
+ /**
10
+ * @description クリップ(マスク)描画を実行する
11
+ * Executes clip (mask) rendering
12
+ * @param {GPUDevice} device GPUデバイス / GPU device
13
+ * @param {GPURenderPassEncoder} render_pass_encoder レンダーパスエンコーダ / Render pass encoder
14
+ * @param {BufferManager} buffer_manager バッファマネージャ / Buffer manager
15
+ * @param {PipelineManager} pipeline_manager パイプラインマネージャ / Pipeline manager
16
+ * @param {IAttachmentObject} current_attachment 現在のアタッチメント / Current attachment
17
+ * @param {IPath[]} path_vertices パス頂点配列 / Path vertices array
18
+ * @param {Float32Array} context_matrix コンテキスト変換行列 / Context transformation matrix
19
+ * @param {Float32Array} fill_style フィルスタイル(RGBA) / Fill style (RGBA)
20
+ * @param {number} global_alpha グローバルアルファ値 / Global alpha value
21
+ * @param {boolean} is_main_attachment メインアタッチメントフラグ / Whether this is the main attachment
22
+ * @return {void}
23
+ */
5
24
  export const execute = (device, render_pass_encoder, buffer_manager, pipeline_manager, current_attachment, path_vertices, context_matrix, fill_style, global_alpha, is_main_attachment = false) => {
6
25
  // クリップ境界を取得
7
26
  const clipLevel = current_attachment.clipLevel;
@@ -2,4 +2,24 @@ import type { IAttachmentObject } from "../../interface/IAttachmentObject";
2
2
  import type { IBlendMode } from "../../interface/IBlendMode";
3
3
  import type { ILocalFilterConfig } from "../../interface/ILocalFilterConfig";
4
4
  import type { BufferManager } from "../../BufferManager";
5
- export declare const execute: (tempAttachment: IAttachmentObject, mainAttachment: IAttachmentObject, _tempName: string, blendMode: IBlendMode, matrix: Float32Array, colorTransform: Float32Array | null, useFilter: boolean, filterBounds: Float32Array | null, params: Float32Array | null, uniqueKey: string, filterKey: string, _contentWidth: number, _contentHeight: number, config: ILocalFilterConfig, bufferManager: BufferManager) => void;
5
+ /**
6
+ * @description コンテナレイヤーの終了処理を実行する(フィルター適用+ブレンド+メインへの描画)
7
+ * Executes container layer end processing (filter application + blending + drawing to main)
8
+ * @param {IAttachmentObject} temp_attachment 一時アタッチメント / Temporary attachment
9
+ * @param {IAttachmentObject} main_attachment メインアタッチメント / Main attachment
10
+ * @param {string} _temp_name 一時名(未使用) / Temporary name (unused)
11
+ * @param {IBlendMode} blend_mode ブレンドモード / Blend mode
12
+ * @param {Float32Array} matrix 変換行列 / Transformation matrix
13
+ * @param {Float32Array | null} color_transform カラートランスフォーム配列 / Color transform array
14
+ * @param {boolean} use_filter フィルター使用フラグ / Whether to use filter
15
+ * @param {Float32Array | null} filter_bounds フィルターバウンディングボックス / Filter bounding box
16
+ * @param {Float32Array | null} params フィルターパラメータ配列 / Filter parameters array
17
+ * @param {string} unique_key ユニークキー / Unique key
18
+ * @param {string} filter_key フィルターキー / Filter key
19
+ * @param {number} _content_width コンテンツ幅(未使用) / Content width (unused)
20
+ * @param {number} _content_height コンテンツ高さ(未使用) / Content height (unused)
21
+ * @param {ILocalFilterConfig} config フィルター設定 / Filter configuration
22
+ * @param {BufferManager} buffer_manager バッファマネージャ / Buffer manager
23
+ * @return {void}
24
+ */
25
+ export declare const execute: (temp_attachment: IAttachmentObject, main_attachment: IAttachmentObject, _temp_name: string, blend_mode: IBlendMode, matrix: Float32Array, color_transform: Float32Array | null, use_filter: boolean, filter_bounds: Float32Array | null, params: Float32Array | null, unique_key: string, filter_key: string, _content_width: number, _content_height: number, config: ILocalFilterConfig, buffer_manager: BufferManager) => void;
@@ -11,40 +11,78 @@ import { execute as filterApplyGradientBevelFilterUseCase } from "../../Filter/G
11
11
  import { execute as filterApplyGradientGlowFilterUseCase } from "../../Filter/GradientGlowFilter/FilterApplyGradientGlowFilterUseCase";
12
12
  import { execute as filterApplyDisplacementMapFilterUseCase } from "../../Filter/DisplacementMapFilter/FilterApplyDisplacementMapFilterUseCase";
13
13
  import { execute as blendApplyComplexBlendUseCase } from "../../Blend/usecase/BlendApplyComplexBlendUseCase";
14
+ /**
15
+ * @description ユニフォームデータの事前確保配列(4要素)
16
+ * Pre-allocated uniform data array (4 elements)
17
+ */
14
18
  const $uniform4 = new Float32Array(4);
19
+ /**
20
+ * @description ユニフォームデータの事前確保配列(8要素)
21
+ * Pre-allocated uniform data array (8 elements)
22
+ */
15
23
  const $uniform8 = new Float32Array(8);
24
+ /**
25
+ * @description ユニフォームデータの事前確保配列(20要素)
26
+ * Pre-allocated uniform data array (20 elements)
27
+ */
16
28
  const $uniform20 = new Float32Array(20);
17
29
  // プリアロケート BindGroup Entry 配列
30
+ /**
31
+ * @description バインドグループエントリの事前確保配列
32
+ * Pre-allocated bind group entry array
33
+ */
18
34
  const $entries3 = [
19
35
  { "binding": 0, "resource": { "buffer": null } },
20
36
  { "binding": 1, "resource": null },
21
37
  { "binding": 2, "resource": null }
22
38
  ];
23
- const SIMPLE_BLEND_MODES = new Set([
39
+ /**
40
+ * @description シンプルなブレンドモードのセット
41
+ * Set of simple blend modes
42
+ */
43
+ const $SIMPLE_BLEND_MODES = new Set([
24
44
  "normal", "layer", "add", "screen", "alpha", "erase", "copy"
25
45
  ]);
46
+ /**
47
+ * @description 恒等カラートランスフォーム
48
+ * Identity color transform
49
+ */
26
50
  const $identityColorTransform = new Float32Array([1, 1, 1, 1, 0, 0, 0, 0]);
27
- const isIdentityColorTransform = (ct) => {
51
+ /**
52
+ * @description カラートランスフォームが恒等変換かどうかを判定する
53
+ * Checks whether the color transform is an identity transform
54
+ * @param {Float32Array | null} ct カラートランスフォーム配列 / Color transform array
55
+ * @return {boolean} 恒等変換の場合true / True if identity transform
56
+ */
57
+ const $isIdentityColorTransform = (ct) => {
28
58
  if (!ct) {
29
59
  return true;
30
60
  }
31
61
  return ct[0] === 1 && ct[1] === 1 && ct[2] === 1 && ct[3] === 1
32
62
  && ct[4] === 0 && ct[5] === 0 && ct[6] === 0 && ct[7] === 0;
33
63
  };
34
- const applyColorTransform = (config, attachment, colorTransform) => {
64
+ /**
65
+ * @description アタッチメントにカラートランスフォームを適用する
66
+ * Applies color transform to an attachment
67
+ * @param {ILocalFilterConfig} config フィルター設定 / Filter configuration
68
+ * @param {IAttachmentObject} attachment ソースアタッチメント / Source attachment
69
+ * @param {Float32Array} color_transform カラートランスフォーム配列 / Color transform array
70
+ * @return {IAttachmentObject} カラートランスフォーム適用後のアタッチメント / Attachment with color transform applied
71
+ */
72
+ const $applyColorTransform = (config, attachment, color_transform) => {
35
73
  const ctAttachment = config.frameBufferManager.createTemporaryAttachment(attachment.width, attachment.height);
36
74
  const pipeline = config.pipelineManager.getPipeline("color_transform");
37
75
  const bindGroupLayout = config.pipelineManager.getBindGroupLayout("texture_copy");
38
76
  if (!pipeline || !bindGroupLayout || !attachment.texture || !ctAttachment.texture) {
39
77
  return attachment;
40
78
  }
41
- $uniform8[0] = colorTransform[0];
42
- $uniform8[1] = colorTransform[1];
43
- $uniform8[2] = colorTransform[2];
44
- $uniform8[3] = colorTransform[3];
45
- $uniform8[4] = colorTransform[4];
46
- $uniform8[5] = colorTransform[5];
47
- $uniform8[6] = colorTransform[6];
79
+ $uniform8[0] = color_transform[0];
80
+ $uniform8[1] = color_transform[1];
81
+ $uniform8[2] = color_transform[2];
82
+ $uniform8[3] = color_transform[3];
83
+ $uniform8[4] = color_transform[4];
84
+ $uniform8[5] = color_transform[5];
85
+ $uniform8[6] = color_transform[6];
48
86
  $uniform8[7] = 0;
49
87
  const uniformBuffer = config.bufferManager.acquireAndWriteUniformBuffer($uniform8);
50
88
  const sampler = config.textureManager.createSampler("container_ct_sampler", false);
@@ -63,20 +101,31 @@ const applyColorTransform = (config, attachment, colorTransform) => {
63
101
  passEncoder.end();
64
102
  return ctAttachment;
65
103
  };
66
- const copyRegionToFilterAttachment = (config, srcAttachment, x, y, width, height) => {
104
+ /**
105
+ * @description ソースアタッチメントの領域をフィルター用アタッチメントにコピーする
106
+ * Copies a region from source attachment to a filter attachment
107
+ * @param {ILocalFilterConfig} config フィルター設定 / Filter configuration
108
+ * @param {IAttachmentObject} src_attachment ソースアタッチメント / Source attachment
109
+ * @param {number} x X座標 / X coordinate
110
+ * @param {number} y Y座標 / Y coordinate
111
+ * @param {number} width 幅 / Width
112
+ * @param {number} height 高さ / Height
113
+ * @return {IAttachmentObject} コピーされたアタッチメント / Copied attachment
114
+ */
115
+ const $copyRegionToFilterAttachment = (config, src_attachment, x, y, width, height) => {
67
116
  const dstAttachment = config.frameBufferManager.createTemporaryAttachment(width, height);
68
- const pipeline = config.pipelineManager.getPipeline("complex_blend_copy");
117
+ // texture_copy_rgba8 (BlurFilterVertex, yFlipTexCoord=true) を使用
118
+ const pipeline = config.pipelineManager.getPipeline("texture_copy_rgba8");
69
119
  const bindGroupLayout = config.pipelineManager.getBindGroupLayout("texture_copy");
70
- if (!pipeline || !bindGroupLayout || !srcAttachment.texture || !dstAttachment.texture) {
120
+ if (!pipeline || !bindGroupLayout || !src_attachment.texture || !dstAttachment.texture) {
71
121
  return dstAttachment;
72
122
  }
73
- const scaleX = width / srcAttachment.width;
74
- const offsetX = x / srcAttachment.width;
75
- // ComplexBlendCopyVertexはOpenGL座標系のtexCoord(Y軸反転)を使用するため、
76
- // UV uniformでY反転を補正して正しい向きの出力を得る
77
- // texCoord.y=1(fb上端) uv.y=y/H(ソース上端), texCoord.y=0(fb下端) → uv.y=(y+h)/H(ソース下端)
78
- const scaleY = -(height / srcAttachment.height);
79
- const offsetY = (y + height) / srcAttachment.height;
123
+ // BlurFilterVertex (yFlipTexCoord=true):
124
+ // texCoord.y=0(fb上端) uv.y=y/H, texCoord.y=1(fb下端) → uv.y=(y+h)/H
125
+ const scaleX = width / src_attachment.width;
126
+ const scaleY = height / src_attachment.height;
127
+ const offsetX = x / src_attachment.width;
128
+ const offsetY = y / src_attachment.height;
80
129
  $uniform4[0] = scaleX;
81
130
  $uniform4[1] = scaleY;
82
131
  $uniform4[2] = offsetX;
@@ -85,7 +134,7 @@ const copyRegionToFilterAttachment = (config, srcAttachment, x, y, width, height
85
134
  const sampler = config.textureManager.createSampler("container_copy_sampler", false);
86
135
  $entries3[0].resource.buffer = uniformBuffer;
87
136
  $entries3[1].resource = sampler;
88
- $entries3[2].resource = srcAttachment.texture.view;
137
+ $entries3[2].resource = src_attachment.texture.view;
89
138
  const bindGroup = config.device.createBindGroup({
90
139
  "layout": bindGroupLayout,
91
140
  "entries": $entries3
@@ -98,42 +147,54 @@ const copyRegionToFilterAttachment = (config, srcAttachment, x, y, width, height
98
147
  passEncoder.end();
99
148
  return dstAttachment;
100
149
  };
101
- const drawFilterResultToMain = (config, filterAttachment, mainAttachment, blendMode, x, y, bufferManager) => {
102
- if (!mainAttachment.texture || !filterAttachment.texture) {
150
+ /**
151
+ * @description フィルター結果をメインアタッチメントに描画する
152
+ * Draws filter result to the main attachment
153
+ * @param {ILocalFilterConfig} config フィルター設定 / Filter configuration
154
+ * @param {IAttachmentObject} filter_attachment フィルターアタッチメント / Filter attachment
155
+ * @param {IAttachmentObject} main_attachment メインアタッチメント / Main attachment
156
+ * @param {IBlendMode} blend_mode ブレンドモード / Blend mode
157
+ * @param {number} x X座標 / X coordinate
158
+ * @param {number} y Y座標 / Y coordinate
159
+ * @param {BufferManager} buffer_manager バッファマネージャ / Buffer manager
160
+ * @return {void}
161
+ */
162
+ const $drawFilterResultToMain = (config, filter_attachment, main_attachment, blend_mode, x, y, buffer_manager) => {
163
+ if (!main_attachment.texture || !filter_attachment.texture) {
103
164
  return;
104
165
  }
105
166
  // WebGLと同じサブピクセル精度を維持するため、Math.floorを使用しない
106
167
  let drawX = x;
107
168
  let drawY = y;
108
- let drawWidth = filterAttachment.width;
109
- let drawHeight = filterAttachment.height;
169
+ let drawWidth = filter_attachment.width;
170
+ let drawHeight = filter_attachment.height;
110
171
  let uvOffsetX = 0;
111
172
  let uvOffsetY = 0;
112
173
  if (drawX < 0) {
113
- uvOffsetX = -drawX / filterAttachment.width;
174
+ uvOffsetX = -drawX / filter_attachment.width;
114
175
  drawWidth += drawX;
115
176
  drawX = 0;
116
177
  }
117
178
  if (drawY < 0) {
118
- uvOffsetY = -drawY / filterAttachment.height;
179
+ uvOffsetY = -drawY / filter_attachment.height;
119
180
  drawHeight += drawY;
120
181
  drawY = 0;
121
182
  }
122
183
  if (drawWidth <= 0 || drawHeight <= 0) {
123
184
  return;
124
185
  }
125
- const mainWidth = mainAttachment.width;
126
- const mainHeight = mainAttachment.height;
186
+ const mainWidth = main_attachment.width;
187
+ const mainHeight = main_attachment.height;
127
188
  if (drawX + drawWidth > mainWidth) {
128
189
  drawWidth = mainWidth - drawX;
129
190
  }
130
191
  if (drawY + drawHeight > mainHeight) {
131
192
  drawHeight = mainHeight - drawY;
132
193
  }
133
- if (SIMPLE_BLEND_MODES.has(blendMode)) {
134
- const useMsaa = mainAttachment.msaa && mainAttachment.msaaTexture?.view;
194
+ if ($SIMPLE_BLEND_MODES.has(blend_mode)) {
195
+ const useMsaa = main_attachment.msaa && main_attachment.msaaTexture?.view;
135
196
  let pipelineName;
136
- switch (blendMode) {
197
+ switch (blend_mode) {
137
198
  case "add":
138
199
  pipelineName = useMsaa ? "filter_output_add_msaa" : "filter_output_add";
139
200
  break;
@@ -159,22 +220,22 @@ const drawFilterResultToMain = (config, filterAttachment, mainAttachment, blendM
159
220
  return;
160
221
  }
161
222
  const sampler = config.textureManager.createSampler("container_output_sampler", true);
162
- const uvScaleX = drawWidth / filterAttachment.width;
163
- const uvScaleY = drawHeight / filterAttachment.height;
223
+ const uvScaleX = drawWidth / filter_attachment.width;
224
+ const uvScaleY = drawHeight / filter_attachment.height;
164
225
  $uniform4[0] = uvScaleX;
165
226
  $uniform4[1] = uvScaleY;
166
227
  $uniform4[2] = uvOffsetX;
167
228
  $uniform4[3] = uvOffsetY;
168
- const uniformBuffer = bufferManager.acquireAndWriteUniformBuffer($uniform4);
229
+ const uniformBuffer = buffer_manager.acquireAndWriteUniformBuffer($uniform4);
169
230
  $entries3[0].resource.buffer = uniformBuffer;
170
231
  $entries3[1].resource = sampler;
171
- $entries3[2].resource = filterAttachment.texture.view;
232
+ $entries3[2].resource = filter_attachment.texture.view;
172
233
  const bindGroup = config.device.createBindGroup({
173
234
  "layout": bindGroupLayout,
174
235
  "entries": $entries3
175
236
  });
176
- const colorView = useMsaa ? mainAttachment.msaaTexture.view : mainAttachment.texture.view;
177
- const resolveTarget = useMsaa ? mainAttachment.texture.view : null;
237
+ const colorView = useMsaa ? main_attachment.msaaTexture.view : main_attachment.texture.view;
238
+ const resolveTarget = useMsaa ? main_attachment.texture.view : null;
178
239
  const renderPassDescriptor = config.frameBufferManager.createRenderPassDescriptor(colorView, 0, 0, 0, 0, "load", resolveTarget);
179
240
  // Viewportはfloat値でサブピクセル精度を維持(WebGLのsetTransform相当)
180
241
  const vpX = Math.max(0, drawX);
@@ -198,7 +259,7 @@ const drawFilterResultToMain = (config, filterAttachment, mainAttachment, blendM
198
259
  }
199
260
  else {
200
261
  // 複雑なブレンドモード
201
- const dstAttachment = copyRegionToFilterAttachment(config, mainAttachment, drawX, drawY, drawWidth, drawHeight);
262
+ const dstAttachment = $copyRegionToFilterAttachment(config, main_attachment, drawX, drawY, drawWidth, drawHeight);
202
263
  $uniform8[0] = $identityColorTransform[0];
203
264
  $uniform8[1] = $identityColorTransform[1];
204
265
  $uniform8[2] = $identityColorTransform[2];
@@ -207,7 +268,7 @@ const drawFilterResultToMain = (config, filterAttachment, mainAttachment, blendM
207
268
  $uniform8[5] = $identityColorTransform[5] / 255;
208
269
  $uniform8[6] = $identityColorTransform[6] / 255;
209
270
  $uniform8[7] = 0;
210
- const blendedAttachment = blendApplyComplexBlendUseCase(filterAttachment, dstAttachment, blendMode, $uniform8, {
271
+ const blendedAttachment = blendApplyComplexBlendUseCase(filter_attachment, dstAttachment, blend_mode, $uniform8, {
211
272
  "device": config.device,
212
273
  "commandEncoder": config.commandEncoder,
213
274
  "bufferManager": config.bufferManager,
@@ -217,20 +278,20 @@ const drawFilterResultToMain = (config, filterAttachment, mainAttachment, blendM
217
278
  "frameTextures": config.frameTextures
218
279
  });
219
280
  // 結果をメインに描画
220
- const useMsaa = mainAttachment.msaa && mainAttachment.msaaTexture?.view;
281
+ const useMsaa = main_attachment.msaa && main_attachment.msaaTexture?.view;
221
282
  const resultPipelineName = useMsaa ? "filter_complex_blend_output_msaa" : "filter_complex_blend_output";
222
283
  const resultPipeline = config.pipelineManager.getPipeline(resultPipelineName);
223
284
  const resultLayout = config.pipelineManager.getBindGroupLayout("positioned_texture");
224
- if (resultPipeline && resultLayout && blendedAttachment.texture && mainAttachment.texture) {
285
+ if (resultPipeline && resultLayout && blendedAttachment.texture && main_attachment.texture) {
225
286
  $uniform8[0] = drawX;
226
287
  $uniform8[1] = drawY;
227
288
  $uniform8[2] = blendedAttachment.width;
228
289
  $uniform8[3] = blendedAttachment.height;
229
- $uniform8[4] = mainAttachment.width;
230
- $uniform8[5] = mainAttachment.height;
290
+ $uniform8[4] = main_attachment.width;
291
+ $uniform8[5] = main_attachment.height;
231
292
  $uniform8[6] = 0;
232
293
  $uniform8[7] = 0;
233
- const uniformBuffer = bufferManager.acquireAndWriteUniformBuffer($uniform8);
294
+ const uniformBuffer = buffer_manager.acquireAndWriteUniformBuffer($uniform8);
234
295
  const sampler = config.textureManager.createSampler("container_blend_output_sampler", false);
235
296
  $entries3[0].resource.buffer = uniformBuffer;
236
297
  $entries3[1].resource = sampler;
@@ -239,8 +300,8 @@ const drawFilterResultToMain = (config, filterAttachment, mainAttachment, blendM
239
300
  "layout": resultLayout,
240
301
  "entries": $entries3
241
302
  });
242
- const colorView = useMsaa ? mainAttachment.msaaTexture.view : mainAttachment.texture.view;
243
- const resolveTarget = useMsaa ? mainAttachment.texture.view : null;
303
+ const colorView = useMsaa ? main_attachment.msaaTexture.view : main_attachment.texture.view;
304
+ const resolveTarget = useMsaa ? main_attachment.texture.view : null;
244
305
  const renderPassDescriptor = config.frameBufferManager.createRenderPassDescriptor(colorView, 0, 0, 0, 0, "load", resolveTarget);
245
306
  const passEncoder = config.commandEncoder.beginRenderPass(renderPassDescriptor);
246
307
  passEncoder.setPipeline(resultPipeline);
@@ -252,7 +313,17 @@ const drawFilterResultToMain = (config, filterAttachment, mainAttachment, blendM
252
313
  config.frameBufferManager.releaseTemporaryAttachment(blendedAttachment);
253
314
  }
254
315
  };
255
- const applyFilterChain = (filterAttachment, matrix, params, devicePixelRatio, config) => {
316
+ /**
317
+ * @description フィルターチェーンをアタッチメントに適用する
318
+ * Applies a chain of filters to an attachment
319
+ * @param {IAttachmentObject} filter_attachment フィルターアタッチメント / Filter attachment
320
+ * @param {Float32Array} matrix 変換行列 / Transformation matrix
321
+ * @param {Float32Array} params フィルターパラメータ配列 / Filter parameters array
322
+ * @param {number} device_pixel_ratio デバイスピクセル比 / Device pixel ratio
323
+ * @param {ILocalFilterConfig} config フィルター設定 / Filter configuration
324
+ * @return {IAttachmentObject} フィルター適用後のアタッチメント / Attachment with filters applied
325
+ */
326
+ const $applyFilterChain = (filter_attachment, matrix, params, device_pixel_ratio, config) => {
256
327
  $offset.x = 0;
257
328
  $offset.y = 0;
258
329
  for (let idx = 0; params.length > idx;) {
@@ -260,20 +331,20 @@ const applyFilterChain = (filterAttachment, matrix, params, devicePixelRatio, co
260
331
  switch (type) {
261
332
  case 0: // BevelFilter
262
333
  {
263
- const newAtt = filterApplyBevelFilterUseCase(filterAttachment, matrix, params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], Boolean(params[idx++]), devicePixelRatio, config);
264
- if (filterAttachment !== newAtt) {
265
- config.frameBufferManager.releaseTemporaryAttachment(filterAttachment);
334
+ const newAtt = filterApplyBevelFilterUseCase(filter_attachment, matrix, params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], Boolean(params[idx++]), device_pixel_ratio, config);
335
+ if (filter_attachment !== newAtt) {
336
+ config.frameBufferManager.releaseTemporaryAttachment(filter_attachment);
266
337
  }
267
- filterAttachment = newAtt;
338
+ filter_attachment = newAtt;
268
339
  }
269
340
  break;
270
341
  case 1: // BlurFilter
271
342
  {
272
- const newAtt = filterApplyBlurFilterUseCase(filterAttachment, matrix, params[idx++], params[idx++], params[idx++], devicePixelRatio, config);
273
- if (filterAttachment !== newAtt) {
274
- config.frameBufferManager.releaseTemporaryAttachment(filterAttachment);
343
+ const newAtt = filterApplyBlurFilterUseCase(filter_attachment, matrix, params[idx++], params[idx++], params[idx++], device_pixel_ratio, config);
344
+ if (filter_attachment !== newAtt) {
345
+ config.frameBufferManager.releaseTemporaryAttachment(filter_attachment);
275
346
  }
276
- filterAttachment = newAtt;
347
+ filter_attachment = newAtt;
277
348
  }
278
349
  break;
279
350
  case 2: // ColorMatrixFilter
@@ -298,11 +369,11 @@ const applyFilterChain = (filterAttachment, matrix, params, devicePixelRatio, co
298
369
  $uniform20[17] = params[idx++];
299
370
  $uniform20[18] = params[idx++];
300
371
  $uniform20[19] = params[idx++];
301
- const newAtt = filterApplyColorMatrixFilterUseCase(filterAttachment, $uniform20, config);
302
- if (filterAttachment !== newAtt) {
303
- config.frameBufferManager.releaseTemporaryAttachment(filterAttachment);
372
+ const newAtt = filterApplyColorMatrixFilterUseCase(filter_attachment, $uniform20, config);
373
+ if (filter_attachment !== newAtt) {
374
+ config.frameBufferManager.releaseTemporaryAttachment(filter_attachment);
304
375
  }
305
- filterAttachment = newAtt;
376
+ filter_attachment = newAtt;
306
377
  }
307
378
  break;
308
379
  case 3: // ConvolutionFilter
@@ -314,11 +385,11 @@ const applyFilterChain = (filterAttachment, matrix, params, devicePixelRatio, co
314
385
  for (let i = 0; i < length; i++) {
315
386
  convMatrix[i] = params[idx++];
316
387
  }
317
- const newAtt = filterApplyConvolutionFilterUseCase(filterAttachment, matrixX, matrixY, convMatrix, params[idx++], params[idx++], Boolean(params[idx++]), Boolean(params[idx++]), params[idx++], params[idx++], config);
318
- if (filterAttachment !== newAtt) {
319
- config.frameBufferManager.releaseTemporaryAttachment(filterAttachment);
388
+ const newAtt = filterApplyConvolutionFilterUseCase(filter_attachment, matrixX, matrixY, convMatrix, params[idx++], params[idx++], Boolean(params[idx++]), Boolean(params[idx++]), params[idx++], params[idx++], config);
389
+ if (filter_attachment !== newAtt) {
390
+ config.frameBufferManager.releaseTemporaryAttachment(filter_attachment);
320
391
  }
321
- filterAttachment = newAtt;
392
+ filter_attachment = newAtt;
322
393
  }
323
394
  break;
324
395
  case 4: // DisplacementMapFilter
@@ -328,29 +399,29 @@ const applyFilterChain = (filterAttachment, matrix, params, devicePixelRatio, co
328
399
  for (let i = 0; i < dmLen; i++) {
329
400
  dmBuffer[i] = params[idx++];
330
401
  }
331
- const newAtt = filterApplyDisplacementMapFilterUseCase(filterAttachment, matrix, dmBuffer, params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], devicePixelRatio, config);
332
- if (filterAttachment !== newAtt) {
333
- config.frameBufferManager.releaseTemporaryAttachment(filterAttachment);
402
+ const newAtt = filterApplyDisplacementMapFilterUseCase(filter_attachment, matrix, dmBuffer, params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], device_pixel_ratio, config);
403
+ if (filter_attachment !== newAtt) {
404
+ config.frameBufferManager.releaseTemporaryAttachment(filter_attachment);
334
405
  }
335
- filterAttachment = newAtt;
406
+ filter_attachment = newAtt;
336
407
  }
337
408
  break;
338
409
  case 5: // DropShadowFilter
339
410
  {
340
- const newAtt = filterApplyDropShadowFilterUseCase(filterAttachment, matrix, params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], Boolean(params[idx++]), Boolean(params[idx++]), Boolean(params[idx++]), devicePixelRatio, config);
341
- if (filterAttachment !== newAtt) {
342
- config.frameBufferManager.releaseTemporaryAttachment(filterAttachment);
411
+ const newAtt = filterApplyDropShadowFilterUseCase(filter_attachment, matrix, params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], Boolean(params[idx++]), Boolean(params[idx++]), Boolean(params[idx++]), device_pixel_ratio, config);
412
+ if (filter_attachment !== newAtt) {
413
+ config.frameBufferManager.releaseTemporaryAttachment(filter_attachment);
343
414
  }
344
- filterAttachment = newAtt;
415
+ filter_attachment = newAtt;
345
416
  }
346
417
  break;
347
418
  case 6: // GlowFilter
348
419
  {
349
- const newAtt = filterApplyGlowFilterUseCase(filterAttachment, matrix, params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], Boolean(params[idx++]), Boolean(params[idx++]), devicePixelRatio, config);
350
- if (filterAttachment !== newAtt) {
351
- config.frameBufferManager.releaseTemporaryAttachment(filterAttachment);
420
+ const newAtt = filterApplyGlowFilterUseCase(filter_attachment, matrix, params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], Boolean(params[idx++]), Boolean(params[idx++]), device_pixel_ratio, config);
421
+ if (filter_attachment !== newAtt) {
422
+ config.frameBufferManager.releaseTemporaryAttachment(filter_attachment);
352
423
  }
353
- filterAttachment = newAtt;
424
+ filter_attachment = newAtt;
354
425
  }
355
426
  break;
356
427
  case 7: // GradientBevelFilter
@@ -372,11 +443,11 @@ const applyFilterChain = (filterAttachment, matrix, params, devicePixelRatio, co
372
443
  for (let i = 0; i < gbRatiosLen; i++) {
373
444
  gbRatios[i] = params[idx++];
374
445
  }
375
- const newAtt = filterApplyGradientBevelFilterUseCase(filterAttachment, matrix, gbDist, gbAngle, gbColors, gbAlphas, gbRatios, params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], Boolean(params[idx++]), devicePixelRatio, config);
376
- if (filterAttachment !== newAtt) {
377
- config.frameBufferManager.releaseTemporaryAttachment(filterAttachment);
446
+ const newAtt = filterApplyGradientBevelFilterUseCase(filter_attachment, matrix, gbDist, gbAngle, gbColors, gbAlphas, gbRatios, params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], Boolean(params[idx++]), device_pixel_ratio, config);
447
+ if (filter_attachment !== newAtt) {
448
+ config.frameBufferManager.releaseTemporaryAttachment(filter_attachment);
378
449
  }
379
- filterAttachment = newAtt;
450
+ filter_attachment = newAtt;
380
451
  }
381
452
  break;
382
453
  case 8: // GradientGlowFilter
@@ -398,37 +469,57 @@ const applyFilterChain = (filterAttachment, matrix, params, devicePixelRatio, co
398
469
  for (let i = 0; i < ggRatiosLen; i++) {
399
470
  ggRatios[i] = params[idx++];
400
471
  }
401
- const newAtt = filterApplyGradientGlowFilterUseCase(filterAttachment, matrix, ggDist, ggAngle, ggColors, ggAlphas, ggRatios, params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], Boolean(params[idx++]), devicePixelRatio, config);
402
- if (filterAttachment !== newAtt) {
403
- config.frameBufferManager.releaseTemporaryAttachment(filterAttachment);
472
+ const newAtt = filterApplyGradientGlowFilterUseCase(filter_attachment, matrix, ggDist, ggAngle, ggColors, ggAlphas, ggRatios, params[idx++], params[idx++], params[idx++], params[idx++], params[idx++], Boolean(params[idx++]), device_pixel_ratio, config);
473
+ if (filter_attachment !== newAtt) {
474
+ config.frameBufferManager.releaseTemporaryAttachment(filter_attachment);
404
475
  }
405
- filterAttachment = newAtt;
476
+ filter_attachment = newAtt;
406
477
  }
407
478
  break;
408
479
  }
409
480
  }
410
- return filterAttachment;
481
+ return filter_attachment;
411
482
  };
412
- export const execute = (tempAttachment, mainAttachment, _tempName, blendMode, matrix, colorTransform, useFilter, filterBounds, params, uniqueKey, filterKey, _contentWidth, _contentHeight, config, bufferManager) => {
413
- if (useFilter && matrix && filterBounds && params) {
483
+ /**
484
+ * @description コンテナレイヤーの終了処理を実行する(フィルター適用+ブレンド+メインへの描画)
485
+ * Executes container layer end processing (filter application + blending + drawing to main)
486
+ * @param {IAttachmentObject} temp_attachment 一時アタッチメント / Temporary attachment
487
+ * @param {IAttachmentObject} main_attachment メインアタッチメント / Main attachment
488
+ * @param {string} _temp_name 一時名(未使用) / Temporary name (unused)
489
+ * @param {IBlendMode} blend_mode ブレンドモード / Blend mode
490
+ * @param {Float32Array} matrix 変換行列 / Transformation matrix
491
+ * @param {Float32Array | null} color_transform カラートランスフォーム配列 / Color transform array
492
+ * @param {boolean} use_filter フィルター使用フラグ / Whether to use filter
493
+ * @param {Float32Array | null} filter_bounds フィルターバウンディングボックス / Filter bounding box
494
+ * @param {Float32Array | null} params フィルターパラメータ配列 / Filter parameters array
495
+ * @param {string} unique_key ユニークキー / Unique key
496
+ * @param {string} filter_key フィルターキー / Filter key
497
+ * @param {number} _content_width コンテンツ幅(未使用) / Content width (unused)
498
+ * @param {number} _content_height コンテンツ高さ(未使用) / Content height (unused)
499
+ * @param {ILocalFilterConfig} config フィルター設定 / Filter configuration
500
+ * @param {BufferManager} buffer_manager バッファマネージャ / Buffer manager
501
+ * @return {void}
502
+ */
503
+ export const execute = (temp_attachment, main_attachment, _temp_name, blend_mode, matrix, color_transform, use_filter, filter_bounds, params, unique_key, filter_key, _content_width, _content_height, config, buffer_manager) => {
504
+ if (use_filter && matrix && filter_bounds && params) {
414
505
  // containerEndLayerが呼ばれる=ディスプレイレイヤーがコンテンツ変更を検出して再レンダリングを要求
415
506
  // 常に新鮮なテクスチャを抽出してフィルターを適用する
416
507
  // (キャッシュはディスプレイレイヤーのcontainerDrawCachedFilterで管理)
417
508
  // WebGL版と同じ: レイヤー全体をフィルター用にコピー
418
509
  // レイヤーはコンテンツサイズで作成され、childrenは相対座標で描画されているため
419
510
  // (0, 0, layerWidth, layerHeight) = コンテンツ全体
420
- let filterAttachment = copyRegionToFilterAttachment(config, tempAttachment, 0, 0, tempAttachment.width, tempAttachment.height);
511
+ let filterAttachment = $copyRegionToFilterAttachment(config, temp_attachment, 0, 0, temp_attachment.width, temp_attachment.height);
421
512
  // 一時アタッチメントを遅延解放(コマンドバッファsubmit後に解放)
422
513
  // destroyAttachmentは即座にGPUテクスチャを破棄するため、
423
514
  // コマンドエンコーダに記録済みのレンダーパスが参照するテクスチャが無効になる
424
- config.frameBufferManager.releaseTemporaryAttachment(tempAttachment);
515
+ config.frameBufferManager.releaseTemporaryAttachment(temp_attachment);
425
516
  // フィルターチェーンを適用
426
517
  const devicePixelRatio = WebGPUUtil.getDevicePixelRatio();
427
- filterAttachment = applyFilterChain(filterAttachment, matrix, params, devicePixelRatio, config);
518
+ filterAttachment = $applyFilterChain(filterAttachment, matrix, params, devicePixelRatio, config);
428
519
  // キャッシュに保存
429
- if (uniqueKey) {
430
- $cacheStore.set(uniqueKey, "fKey", filterKey);
431
- $cacheStore.set(uniqueKey, "fTexture", filterAttachment);
520
+ if (unique_key) {
521
+ $cacheStore.set(unique_key, "fKey", filter_key);
522
+ $cacheStore.set(unique_key, "fTexture", filterAttachment);
432
523
  }
433
524
  // フィルター結果をメインに描画
434
525
  if (filterAttachment) {
@@ -436,41 +527,41 @@ export const execute = (tempAttachment, mainAttachment, _tempName, blendMode, ma
436
527
  // キャッシュにはフィルター結果のみ保存(CTは毎フレーム適用する)
437
528
  let drawAttachment = filterAttachment;
438
529
  let ctAttachment = null;
439
- if (!isIdentityColorTransform(colorTransform)) {
440
- ctAttachment = applyColorTransform(config, filterAttachment, colorTransform);
530
+ if (!$isIdentityColorTransform(color_transform)) {
531
+ ctAttachment = $applyColorTransform(config, filterAttachment, color_transform);
441
532
  drawAttachment = ctAttachment;
442
533
  }
443
534
  const scaleX = Math.sqrt(matrix[0] * matrix[0] + matrix[1] * matrix[1]);
444
535
  const scaleY = Math.sqrt(matrix[2] * matrix[2] + matrix[3] * matrix[3]);
445
- const boundsXMin = filterBounds[0] * (scaleX / devicePixelRatio);
446
- const boundsYMin = filterBounds[1] * (scaleY / devicePixelRatio);
536
+ const boundsXMin = filter_bounds[0] * (scaleX / devicePixelRatio);
537
+ const boundsYMin = filter_bounds[1] * (scaleY / devicePixelRatio);
447
538
  // WebGL版と同じ: boundsXMin + matrix[4] で絶対位置
448
539
  const drawX = boundsXMin + matrix[4];
449
540
  const drawY = boundsYMin + matrix[5];
450
- drawFilterResultToMain(config, drawAttachment, mainAttachment, blendMode, drawX, drawY, bufferManager);
541
+ $drawFilterResultToMain(config, drawAttachment, main_attachment, blend_mode, drawX, drawY, buffer_manager);
451
542
  // CT一時アタッチメントを解放
452
543
  if (ctAttachment) {
453
544
  config.frameBufferManager.releaseTemporaryAttachment(ctAttachment);
454
545
  }
455
546
  // キャッシュされていないフィルター結果のみ解放
456
- if (!uniqueKey) {
547
+ if (!unique_key) {
457
548
  config.frameBufferManager.releaseTemporaryAttachment(filterAttachment);
458
549
  }
459
550
  }
460
551
  }
461
552
  else {
462
553
  // ブレンドのみ:レイヤー全体をフィルター用にコピーしてメインに描画
463
- let fullAttachment = copyRegionToFilterAttachment(config, tempAttachment, 0, 0, tempAttachment.width, tempAttachment.height);
554
+ let fullAttachment = $copyRegionToFilterAttachment(config, temp_attachment, 0, 0, temp_attachment.width, temp_attachment.height);
464
555
  // 一時アタッチメントを遅延解放(コマンドバッファsubmit後に解放)
465
- config.frameBufferManager.releaseTemporaryAttachment(tempAttachment);
556
+ config.frameBufferManager.releaseTemporaryAttachment(temp_attachment);
466
557
  // ColorTransformが恒等変換でない場合、適用
467
- if (!isIdentityColorTransform(colorTransform)) {
468
- const ctAttachment = applyColorTransform(config, fullAttachment, colorTransform);
558
+ if (!$isIdentityColorTransform(color_transform)) {
559
+ const ctAttachment = $applyColorTransform(config, fullAttachment, color_transform);
469
560
  config.frameBufferManager.releaseTemporaryAttachment(fullAttachment);
470
561
  fullAttachment = ctAttachment;
471
562
  }
472
563
  // WebGL版と同じ: matrix[4], matrix[5] = layerBounds の絶対位置に描画
473
- drawFilterResultToMain(config, fullAttachment, mainAttachment, blendMode, matrix[4], matrix[5], bufferManager);
564
+ $drawFilterResultToMain(config, fullAttachment, main_attachment, blend_mode, matrix[4], matrix[5], buffer_manager);
474
565
  config.frameBufferManager.releaseTemporaryAttachment(fullAttachment);
475
566
  }
476
567
  };
@@ -3,4 +3,17 @@ import type { BufferManager } from "../../BufferManager";
3
3
  import type { FrameBufferManager } from "../../FrameBufferManager";
4
4
  import type { TextureManager } from "../../TextureManager";
5
5
  import type { PipelineManager } from "../../Shader/PipelineManager";
6
+ /**
7
+ * @description インスタンス描画を実行する
8
+ * Executes instanced array drawing
9
+ * @param {GPUDevice} device GPUデバイス / GPU device
10
+ * @param {GPUCommandEncoder} command_encoder コマンドエンコーダ / Command encoder
11
+ * @param {GPURenderPassEncoder | null} render_pass_encoder レンダーパスエンコーダ / Render pass encoder
12
+ * @param {IAttachmentObject} main_attachment メインアタッチメント / Main attachment
13
+ * @param {BufferManager} buffer_manager バッファマネージャ / Buffer manager
14
+ * @param {FrameBufferManager} frame_buffer_manager フレームバッファマネージャ / Frame buffer manager
15
+ * @param {TextureManager} texture_manager テクスチャマネージャ / Texture manager
16
+ * @param {PipelineManager} pipeline_manager パイプラインマネージャ / Pipeline manager
17
+ * @return {GPURenderPassEncoder | null} レンダーパスエンコーダまたはnull / Render pass encoder or null
18
+ */
6
19
  export declare const execute: (device: GPUDevice, command_encoder: GPUCommandEncoder, render_pass_encoder: GPURenderPassEncoder | null, main_attachment: IAttachmentObject, buffer_manager: BufferManager, frame_buffer_manager: FrameBufferManager, texture_manager: TextureManager, pipeline_manager: PipelineManager) => GPURenderPassEncoder | null;