@next2d/webgpu 3.0.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 (349) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +574 -0
  3. package/package.json +30 -0
  4. package/src/AtlasManager.d.ts +23 -0
  5. package/src/AtlasManager.js +123 -0
  6. package/src/AttachmentManager/service/AttachmentManagerCreateAttachmentObjectService.d.ts +13 -0
  7. package/src/AttachmentManager/service/AttachmentManagerCreateAttachmentObjectService.js +24 -0
  8. package/src/AttachmentManager/service/AttachmentManagerCreateColorBufferService.d.ts +15 -0
  9. package/src/AttachmentManager/service/AttachmentManagerCreateColorBufferService.js +31 -0
  10. package/src/AttachmentManager/service/AttachmentManagerCreateRenderPassDescriptorService.d.ts +5 -0
  11. package/src/AttachmentManager/service/AttachmentManagerCreateRenderPassDescriptorService.js +42 -0
  12. package/src/AttachmentManager/service/AttachmentManagerCreateStencilBufferService.d.ts +16 -0
  13. package/src/AttachmentManager/service/AttachmentManagerCreateStencilBufferService.js +28 -0
  14. package/src/AttachmentManager/service/AttachmentManagerCreateTextureObjectService.d.ts +17 -0
  15. package/src/AttachmentManager/service/AttachmentManagerCreateTextureObjectService.js +33 -0
  16. package/src/AttachmentManager/service/AttachmentManagerGetColorBufferService.d.ts +16 -0
  17. package/src/AttachmentManager/service/AttachmentManagerGetColorBufferService.js +28 -0
  18. package/src/AttachmentManager/service/AttachmentManagerGetStencilBufferService.d.ts +17 -0
  19. package/src/AttachmentManager/service/AttachmentManagerGetStencilBufferService.js +27 -0
  20. package/src/AttachmentManager/service/AttachmentManagerGetTextureService.d.ts +18 -0
  21. package/src/AttachmentManager/service/AttachmentManagerGetTextureService.js +27 -0
  22. package/src/AttachmentManager/service/AttachmentManagerReleaseTextureService.d.ts +12 -0
  23. package/src/AttachmentManager/service/AttachmentManagerReleaseTextureService.js +17 -0
  24. package/src/AttachmentManager/usecase/AttachmentManagerGetAttachmentObjectUseCase.d.ts +26 -0
  25. package/src/AttachmentManager/usecase/AttachmentManagerGetAttachmentObjectUseCase.js +43 -0
  26. package/src/AttachmentManager/usecase/AttachmentManagerReleaseAttachmentUseCase.d.ts +18 -0
  27. package/src/AttachmentManager/usecase/AttachmentManagerReleaseAttachmentUseCase.js +33 -0
  28. package/src/AttachmentManager.d.ts +19 -0
  29. package/src/AttachmentManager.js +105 -0
  30. package/src/BezierConverter/BezierConverter.d.ts +16 -0
  31. package/src/BezierConverter/BezierConverter.js +15 -0
  32. package/src/BezierConverter/service/BezierConverterCalculateFlatnessService.d.ts +15 -0
  33. package/src/BezierConverter/service/BezierConverterCalculateFlatnessService.js +37 -0
  34. package/src/BezierConverter/service/BezierConverterSplitCubicService.d.ts +15 -0
  35. package/src/BezierConverter/service/BezierConverterSplitCubicService.js +47 -0
  36. package/src/BezierConverter/usecase/BezierConverterAdaptiveCubicToQuadUseCase.d.ts +29 -0
  37. package/src/BezierConverter/usecase/BezierConverterAdaptiveCubicToQuadUseCase.js +80 -0
  38. package/src/Blend/BlendInstancedManager.d.ts +35 -0
  39. package/src/Blend/BlendInstancedManager.js +147 -0
  40. package/src/Blend/service/BlendAddService.d.ts +1 -0
  41. package/src/Blend/service/BlendAddService.js +8 -0
  42. package/src/Blend/service/BlendAlphaService.d.ts +1 -0
  43. package/src/Blend/service/BlendAlphaService.js +8 -0
  44. package/src/Blend/service/BlendEraseService.d.ts +1 -0
  45. package/src/Blend/service/BlendEraseService.js +8 -0
  46. package/src/Blend/service/BlendGetStateService.d.ts +12 -0
  47. package/src/Blend/service/BlendGetStateService.js +13 -0
  48. package/src/Blend/service/BlendOneZeroService.d.ts +1 -0
  49. package/src/Blend/service/BlendOneZeroService.js +8 -0
  50. package/src/Blend/service/BlendResetService.d.ts +1 -0
  51. package/src/Blend/service/BlendResetService.js +8 -0
  52. package/src/Blend/service/BlendScreenService.d.ts +1 -0
  53. package/src/Blend/service/BlendScreenService.js +8 -0
  54. package/src/Blend/service/BlendSetModeService.d.ts +2 -0
  55. package/src/Blend/service/BlendSetModeService.js +4 -0
  56. package/src/Blend/usecase/BlendApplyComplexBlendUseCase.d.ts +6 -0
  57. package/src/Blend/usecase/BlendApplyComplexBlendUseCase.js +79 -0
  58. package/src/Blend/usecase/BlendOperationUseCase.d.ts +11 -0
  59. package/src/Blend/usecase/BlendOperationUseCase.js +31 -0
  60. package/src/Blend.d.ts +8 -0
  61. package/src/Blend.js +91 -0
  62. package/src/BufferManager/service/BufferManagerCreateIndirectBufferService.d.ts +15 -0
  63. package/src/BufferManager/service/BufferManagerCreateIndirectBufferService.js +37 -0
  64. package/src/BufferManager/service/BufferManagerCreateRectVerticesService.d.ts +13 -0
  65. package/src/BufferManager/service/BufferManagerCreateRectVerticesService.js +23 -0
  66. package/src/BufferManager/service/BufferManagerCreateStorageBufferService.d.ts +17 -0
  67. package/src/BufferManager/service/BufferManagerCreateStorageBufferService.js +23 -0
  68. package/src/BufferManager/service/BufferManagerReleaseUniformBufferService.d.ts +12 -0
  69. package/src/BufferManager/service/BufferManagerReleaseUniformBufferService.js +32 -0
  70. package/src/BufferManager/service/BufferManagerReleaseVertexBufferService.d.ts +12 -0
  71. package/src/BufferManager/service/BufferManagerReleaseVertexBufferService.js +32 -0
  72. package/src/BufferManager/service/BufferManagerUpdateIndirectBufferService.d.ts +12 -0
  73. package/src/BufferManager/service/BufferManagerUpdateIndirectBufferService.js +20 -0
  74. package/src/BufferManager/service/BufferManagerUpperPowerOfTwoService.d.ts +10 -0
  75. package/src/BufferManager/service/BufferManagerUpperPowerOfTwoService.js +18 -0
  76. package/src/BufferManager/usecase/BufferManagerAcquireStorageBufferUseCase.d.ts +15 -0
  77. package/src/BufferManager/usecase/BufferManagerAcquireStorageBufferUseCase.js +51 -0
  78. package/src/BufferManager/usecase/BufferManagerAcquireUniformBufferUseCase.d.ts +13 -0
  79. package/src/BufferManager/usecase/BufferManagerAcquireUniformBufferUseCase.js +26 -0
  80. package/src/BufferManager/usecase/BufferManagerAcquireVertexBufferUseCase.d.ts +14 -0
  81. package/src/BufferManager/usecase/BufferManagerAcquireVertexBufferUseCase.js +46 -0
  82. package/src/BufferManager/usecase/BufferManagerCleanupStorageBuffersUseCase.d.ts +12 -0
  83. package/src/BufferManager/usecase/BufferManagerCleanupStorageBuffersUseCase.js +20 -0
  84. package/src/BufferManager/usecase/BufferManagerReleaseStorageBufferUseCase.d.ts +9 -0
  85. package/src/BufferManager/usecase/BufferManagerReleaseStorageBufferUseCase.js +15 -0
  86. package/src/BufferManager.d.ts +93 -0
  87. package/src/BufferManager.js +487 -0
  88. package/src/Compute/ComputePipelineManager.d.ts +61 -0
  89. package/src/Compute/ComputePipelineManager.js +313 -0
  90. package/src/Compute/service/ComputeExecuteBlurService.d.ts +21 -0
  91. package/src/Compute/service/ComputeExecuteBlurService.js +81 -0
  92. package/src/Context/service/ContextComputeBitmapMatrixService.d.ts +1 -0
  93. package/src/Context/service/ContextComputeBitmapMatrixService.js +74 -0
  94. package/src/Context/service/ContextComputeGradientMatrixService.d.ts +4 -0
  95. package/src/Context/service/ContextComputeGradientMatrixService.js +88 -0
  96. package/src/Context/service/ContextFillSimpleService.d.ts +2 -0
  97. package/src/Context/service/ContextFillSimpleService.js +28 -0
  98. package/src/Context/service/ContextFillWithStencilMainService.d.ts +2 -0
  99. package/src/Context/service/ContextFillWithStencilMainService.js +19 -0
  100. package/src/Context/service/ContextFillWithStencilService.d.ts +2 -0
  101. package/src/Context/service/ContextFillWithStencilService.js +19 -0
  102. package/src/Context/usecase/ContextApplyFilterUseCase.d.ts +5 -0
  103. package/src/Context/usecase/ContextApplyFilterUseCase.js +668 -0
  104. package/src/Context/usecase/ContextBitmapFillUseCase.d.ts +4 -0
  105. package/src/Context/usecase/ContextBitmapFillUseCase.js +210 -0
  106. package/src/Context/usecase/ContextBitmapStrokeUseCase.d.ts +4 -0
  107. package/src/Context/usecase/ContextBitmapStrokeUseCase.js +119 -0
  108. package/src/Context/usecase/ContextClipUseCase.d.ts +5 -0
  109. package/src/Context/usecase/ContextClipUseCase.js +101 -0
  110. package/src/Context/usecase/ContextContainerEndLayerUseCase.d.ts +5 -0
  111. package/src/Context/usecase/ContextContainerEndLayerUseCase.js +476 -0
  112. package/src/Context/usecase/ContextDrawArraysInstancedUseCase.d.ts +6 -0
  113. package/src/Context/usecase/ContextDrawArraysInstancedUseCase.js +135 -0
  114. package/src/Context/usecase/ContextDrawIndirectUseCase.d.ts +6 -0
  115. package/src/Context/usecase/ContextDrawIndirectUseCase.js +154 -0
  116. package/src/Context/usecase/ContextGradientFillUseCase.d.ts +4 -0
  117. package/src/Context/usecase/ContextGradientFillUseCase.js +230 -0
  118. package/src/Context/usecase/ContextGradientStrokeUseCase.d.ts +4 -0
  119. package/src/Context/usecase/ContextGradientStrokeUseCase.js +138 -0
  120. package/src/Context/usecase/ContextProcessComplexBlendQueueUseCase.d.ts +6 -0
  121. package/src/Context/usecase/ContextProcessComplexBlendQueueUseCase.js +213 -0
  122. package/src/Context.d.ts +430 -0
  123. package/src/Context.js +2453 -0
  124. package/src/FillTexturePool.d.ts +6 -0
  125. package/src/FillTexturePool.js +72 -0
  126. package/src/Filter/BevelFilter/FilterApplyBevelFilterUseCase.d.ts +10 -0
  127. package/src/Filter/BevelFilter/FilterApplyBevelFilterUseCase.js +214 -0
  128. package/src/Filter/BevelFilterShader.d.ts +2 -0
  129. package/src/Filter/BevelFilterShader.js +107 -0
  130. package/src/Filter/BitmapFilterShader.d.ts +2 -0
  131. package/src/Filter/BitmapFilterShader.js +207 -0
  132. package/src/Filter/BlurFilter/FilterApplyBlurFilterUseCase.d.ts +16 -0
  133. package/src/Filter/BlurFilter/FilterApplyBlurFilterUseCase.js +243 -0
  134. package/src/Filter/BlurFilter/service/BlurFilterComputeShaderService.d.ts +40 -0
  135. package/src/Filter/BlurFilter/service/BlurFilterComputeShaderService.js +51 -0
  136. package/src/Filter/BlurFilter/usecase/FilterApplyBlurComputeUseCase.d.ts +25 -0
  137. package/src/Filter/BlurFilter/usecase/FilterApplyBlurComputeUseCase.js +180 -0
  138. package/src/Filter/BlurFilterShader.d.ts +5 -0
  139. package/src/Filter/BlurFilterShader.js +109 -0
  140. package/src/Filter/BlurFilterUseCase.d.ts +36 -0
  141. package/src/Filter/BlurFilterUseCase.js +85 -0
  142. package/src/Filter/ColorMatrixFilter/FilterApplyColorMatrixFilterUseCase.d.ts +12 -0
  143. package/src/Filter/ColorMatrixFilter/FilterApplyColorMatrixFilterUseCase.js +90 -0
  144. package/src/Filter/ColorMatrixFilterShader.d.ts +4 -0
  145. package/src/Filter/ColorMatrixFilterShader.js +51 -0
  146. package/src/Filter/ConvolutionFilter/FilterApplyConvolutionFilterUseCase.d.ts +6 -0
  147. package/src/Filter/ConvolutionFilter/FilterApplyConvolutionFilterUseCase.js +144 -0
  148. package/src/Filter/ConvolutionFilterShader.d.ts +2 -0
  149. package/src/Filter/ConvolutionFilterShader.js +115 -0
  150. package/src/Filter/DisplacementMapFilter/FilterApplyDisplacementMapFilterUseCase.d.ts +6 -0
  151. package/src/Filter/DisplacementMapFilter/FilterApplyDisplacementMapFilterUseCase.js +172 -0
  152. package/src/Filter/DisplacementMapFilterShader.d.ts +2 -0
  153. package/src/Filter/DisplacementMapFilterShader.js +114 -0
  154. package/src/Filter/DropShadowFilter/FilterApplyDropShadowFilterUseCase.d.ts +24 -0
  155. package/src/Filter/DropShadowFilter/FilterApplyDropShadowFilterUseCase.js +179 -0
  156. package/src/Filter/DropShadowFilterShader.d.ts +4 -0
  157. package/src/Filter/DropShadowFilterShader.js +93 -0
  158. package/src/Filter/FilterGradientLUTCache.d.ts +29 -0
  159. package/src/Filter/FilterGradientLUTCache.js +84 -0
  160. package/src/Filter/FilterOffset.d.ts +8 -0
  161. package/src/Filter/FilterOffset.js +10 -0
  162. package/src/Filter/GlowFilter/FilterApplyGlowFilterUseCase.d.ts +24 -0
  163. package/src/Filter/GlowFilter/FilterApplyGlowFilterUseCase.js +143 -0
  164. package/src/Filter/GlowFilterShader.d.ts +4 -0
  165. package/src/Filter/GlowFilterShader.js +66 -0
  166. package/src/Filter/GradientBevelFilter/FilterApplyGradientBevelFilterUseCase.d.ts +29 -0
  167. package/src/Filter/GradientBevelFilter/FilterApplyGradientBevelFilterUseCase.js +216 -0
  168. package/src/Filter/GradientGlowFilter/FilterApplyGradientGlowFilterUseCase.d.ts +29 -0
  169. package/src/Filter/GradientGlowFilter/FilterApplyGradientGlowFilterUseCase.js +164 -0
  170. package/src/FrameBufferManager/service/FrameBufferManagerCreateRenderPassDescriptorService.d.ts +4 -0
  171. package/src/FrameBufferManager/service/FrameBufferManagerCreateRenderPassDescriptorService.js +23 -0
  172. package/src/FrameBufferManager/service/FrameBufferManagerCreateStencilRenderPassDescriptorService.d.ts +4 -0
  173. package/src/FrameBufferManager/service/FrameBufferManagerCreateStencilRenderPassDescriptorService.js +28 -0
  174. package/src/FrameBufferManager/service/FrameBufferManagerFlushPendingReleasesService.d.ts +11 -0
  175. package/src/FrameBufferManager/service/FrameBufferManagerFlushPendingReleasesService.js +19 -0
  176. package/src/FrameBufferManager/usecase/FrameBufferManagerCreateAttachmentUseCase.d.ts +23 -0
  177. package/src/FrameBufferManager/usecase/FrameBufferManagerCreateAttachmentUseCase.js +125 -0
  178. package/src/FrameBufferManager/usecase/FrameBufferManagerReleaseTemporaryAttachmentUseCase.d.ts +14 -0
  179. package/src/FrameBufferManager/usecase/FrameBufferManagerReleaseTemporaryAttachmentUseCase.js +23 -0
  180. package/src/FrameBufferManager.d.ts +24 -0
  181. package/src/FrameBufferManager.js +161 -0
  182. package/src/Gradient/GradientLUTCache.d.ts +61 -0
  183. package/src/Gradient/GradientLUTCache.js +153 -0
  184. package/src/Gradient/GradientLUTGenerator.d.ts +30 -0
  185. package/src/Gradient/GradientLUTGenerator.js +202 -0
  186. package/src/Grid.d.ts +18 -0
  187. package/src/Grid.js +21 -0
  188. package/src/Mask/service/MaskBeginMaskService.d.ts +9 -0
  189. package/src/Mask/service/MaskBeginMaskService.js +22 -0
  190. package/src/Mask/service/MaskEndMaskService.d.ts +15 -0
  191. package/src/Mask/service/MaskEndMaskService.js +36 -0
  192. package/src/Mask/service/MaskSetMaskBoundsService.d.ts +13 -0
  193. package/src/Mask/service/MaskSetMaskBoundsService.js +36 -0
  194. package/src/Mask/service/MaskUnionMaskService.d.ts +4 -0
  195. package/src/Mask/service/MaskUnionMaskService.js +74 -0
  196. package/src/Mask/usecase/MaskBindUseCase.d.ts +10 -0
  197. package/src/Mask/usecase/MaskBindUseCase.js +20 -0
  198. package/src/Mask/usecase/MaskLeaveMaskUseCase.d.ts +13 -0
  199. package/src/Mask/usecase/MaskLeaveMaskUseCase.js +51 -0
  200. package/src/Mask.d.ts +12 -0
  201. package/src/Mask.js +41 -0
  202. package/src/Mesh/service/MeshFillGenerateService.d.ts +19 -0
  203. package/src/Mesh/service/MeshFillGenerateService.js +76 -0
  204. package/src/Mesh/service/MeshLerpService.d.ts +13 -0
  205. package/src/Mesh/service/MeshLerpService.js +17 -0
  206. package/src/Mesh/service/MeshStrokeFillGenerateService.d.ts +19 -0
  207. package/src/Mesh/service/MeshStrokeFillGenerateService.js +76 -0
  208. package/src/Mesh/usecase/MeshBitmapStrokeGenerateUseCase.d.ts +13 -0
  209. package/src/Mesh/usecase/MeshBitmapStrokeGenerateUseCase.js +65 -0
  210. package/src/Mesh/usecase/MeshFillGenerateUseCase.d.ts +12 -0
  211. package/src/Mesh/usecase/MeshFillGenerateUseCase.js +48 -0
  212. package/src/Mesh/usecase/MeshGradientStrokeGenerateUseCase.d.ts +13 -0
  213. package/src/Mesh/usecase/MeshGradientStrokeGenerateUseCase.js +65 -0
  214. package/src/Mesh/usecase/MeshSplitQuadraticBezierUseCase.d.ts +14 -0
  215. package/src/Mesh/usecase/MeshSplitQuadraticBezierUseCase.js +28 -0
  216. package/src/Mesh/usecase/MeshStrokeFillGenerateUseCase.d.ts +18 -0
  217. package/src/Mesh/usecase/MeshStrokeFillGenerateUseCase.js +54 -0
  218. package/src/Mesh/usecase/MeshStrokeGenerateUseCase.d.ts +25 -0
  219. package/src/Mesh/usecase/MeshStrokeGenerateUseCase.js +608 -0
  220. package/src/PathCommand.d.ts +123 -0
  221. package/src/PathCommand.js +317 -0
  222. package/src/SamplerCache/service/SamplerCacheCreateCommonSamplersService.d.ts +11 -0
  223. package/src/SamplerCache/service/SamplerCacheCreateCommonSamplersService.js +35 -0
  224. package/src/SamplerCache/service/SamplerCacheGenerateKeyService.d.ts +13 -0
  225. package/src/SamplerCache/service/SamplerCacheGenerateKeyService.js +15 -0
  226. package/src/SamplerCache/service/SamplerCacheGetOrCreateService.d.ts +15 -0
  227. package/src/SamplerCache/service/SamplerCacheGetOrCreateService.js +30 -0
  228. package/src/SamplerCache.d.ts +18 -0
  229. package/src/SamplerCache.js +61 -0
  230. package/src/Shader/BlendModeShader.d.ts +51 -0
  231. package/src/Shader/BlendModeShader.js +71 -0
  232. package/src/Shader/GradientLUTGenerator/service/GradientLUTCalculateResolutionService.d.ts +12 -0
  233. package/src/Shader/GradientLUTGenerator/service/GradientLUTCalculateResolutionService.js +28 -0
  234. package/src/Shader/GradientLUTGenerator/service/GradientLUTGeneratePixelsService.d.ts +13 -0
  235. package/src/Shader/GradientLUTGenerator/service/GradientLUTGeneratePixelsService.js +61 -0
  236. package/src/Shader/GradientLUTGenerator/service/GradientLUTInterpolateColorService.d.ts +19 -0
  237. package/src/Shader/GradientLUTGenerator/service/GradientLUTInterpolateColorService.js +37 -0
  238. package/src/Shader/GradientLUTGenerator/service/GradientLUTParseStopsService.d.ts +11 -0
  239. package/src/Shader/GradientLUTGenerator/service/GradientLUTParseStopsService.js +24 -0
  240. package/src/Shader/GradientLUTGenerator/usecase/GradientLUTGenerateDataUseCase.d.ts +14 -0
  241. package/src/Shader/GradientLUTGenerator/usecase/GradientLUTGenerateDataUseCase.js +24 -0
  242. package/src/Shader/PipelineManager.d.ts +57 -0
  243. package/src/Shader/PipelineManager.js +2868 -0
  244. package/src/Shader/ShaderInstancedManager.d.ts +8 -0
  245. package/src/Shader/ShaderInstancedManager.js +18 -0
  246. package/src/Shader/ShaderSource.d.ts +60 -0
  247. package/src/Shader/ShaderSource.js +518 -0
  248. package/src/Shader/wgsl/common/SharedWgsl.d.ts +5 -0
  249. package/src/Shader/wgsl/common/SharedWgsl.js +37 -0
  250. package/src/Shader/wgsl/fragment/BasicFragment.d.ts +2 -0
  251. package/src/Shader/wgsl/fragment/BasicFragment.js +28 -0
  252. package/src/Shader/wgsl/fragment/BitmapFragment.d.ts +1 -0
  253. package/src/Shader/wgsl/fragment/BitmapFragment.js +43 -0
  254. package/src/Shader/wgsl/fragment/BlendFragment.d.ts +8 -0
  255. package/src/Shader/wgsl/fragment/BlendFragment.js +63 -0
  256. package/src/Shader/wgsl/fragment/EffectFragment.d.ts +6 -0
  257. package/src/Shader/wgsl/fragment/EffectFragment.js +324 -0
  258. package/src/Shader/wgsl/fragment/FillFragment.d.ts +1 -0
  259. package/src/Shader/wgsl/fragment/FillFragment.js +28 -0
  260. package/src/Shader/wgsl/fragment/FilterFragment.d.ts +10 -0
  261. package/src/Shader/wgsl/fragment/FilterFragment.js +212 -0
  262. package/src/Shader/wgsl/fragment/GradientFragment.d.ts +3 -0
  263. package/src/Shader/wgsl/fragment/GradientFragment.js +118 -0
  264. package/src/Shader/wgsl/fragment/InstancedFragment.d.ts +1 -0
  265. package/src/Shader/wgsl/fragment/InstancedFragment.js +20 -0
  266. package/src/Shader/wgsl/fragment/MaskFragment.d.ts +1 -0
  267. package/src/Shader/wgsl/fragment/MaskFragment.js +17 -0
  268. package/src/Shader/wgsl/fragment/StencilFragment.d.ts +2 -0
  269. package/src/Shader/wgsl/fragment/StencilFragment.js +33 -0
  270. package/src/Shader/wgsl/vertex/BasicVertex.d.ts +1 -0
  271. package/src/Shader/wgsl/vertex/BasicVertex.js +37 -0
  272. package/src/Shader/wgsl/vertex/BitmapVertex.d.ts +1 -0
  273. package/src/Shader/wgsl/vertex/BitmapVertex.js +43 -0
  274. package/src/Shader/wgsl/vertex/FillVertex.d.ts +1 -0
  275. package/src/Shader/wgsl/vertex/FillVertex.js +35 -0
  276. package/src/Shader/wgsl/vertex/FilterVertex.d.ts +12 -0
  277. package/src/Shader/wgsl/vertex/FilterVertex.js +193 -0
  278. package/src/Shader/wgsl/vertex/GradientVertex.d.ts +1 -0
  279. package/src/Shader/wgsl/vertex/GradientVertex.js +44 -0
  280. package/src/Shader/wgsl/vertex/InstancedVertex.d.ts +1 -0
  281. package/src/Shader/wgsl/vertex/InstancedVertex.js +48 -0
  282. package/src/Shader/wgsl/vertex/MaskVertex.d.ts +1 -0
  283. package/src/Shader/wgsl/vertex/MaskVertex.js +36 -0
  284. package/src/Shader/wgsl/vertex/StencilVertex.d.ts +2 -0
  285. package/src/Shader/wgsl/vertex/StencilVertex.js +66 -0
  286. package/src/TextureManager/service/TextureManagerInitializeSamplersService.d.ts +11 -0
  287. package/src/TextureManager/service/TextureManagerInitializeSamplersService.js +48 -0
  288. package/src/TextureManager/usecase/TextureManagerCreateTextureFromImageBitmapUseCase.d.ts +13 -0
  289. package/src/TextureManager/usecase/TextureManagerCreateTextureFromImageBitmapUseCase.js +30 -0
  290. package/src/TextureManager/usecase/TextureManagerCreateTextureFromPixelsUseCase.d.ts +15 -0
  291. package/src/TextureManager/usecase/TextureManagerCreateTextureFromPixelsUseCase.js +26 -0
  292. package/src/TextureManager.d.ts +15 -0
  293. package/src/TextureManager.js +87 -0
  294. package/src/TexturePool/service/TexturePoolCleanupService.d.ts +14 -0
  295. package/src/TexturePool/service/TexturePoolCleanupService.js +28 -0
  296. package/src/TexturePool/service/TexturePoolEvictOldestService.d.ts +11 -0
  297. package/src/TexturePool/service/TexturePoolEvictOldestService.js +24 -0
  298. package/src/TexturePool/service/TexturePoolReleaseService.d.ts +13 -0
  299. package/src/TexturePool/service/TexturePoolReleaseService.js +22 -0
  300. package/src/TexturePool/usecase/TexturePoolAcquireUseCase.d.ts +19 -0
  301. package/src/TexturePool/usecase/TexturePoolAcquireUseCase.js +90 -0
  302. package/src/TexturePool.d.ts +69 -0
  303. package/src/TexturePool.js +151 -0
  304. package/src/WebGPUUtil.d.ts +102 -0
  305. package/src/WebGPUUtil.js +157 -0
  306. package/src/index.d.ts +1 -0
  307. package/src/index.js +1 -0
  308. package/src/interface/IAttachmentObject.d.ts +41 -0
  309. package/src/interface/IAttachmentObject.js +1 -0
  310. package/src/interface/IBlendMode.d.ts +1 -0
  311. package/src/interface/IBlendMode.js +1 -0
  312. package/src/interface/IBlendState.d.ts +8 -0
  313. package/src/interface/IBlendState.js +1 -0
  314. package/src/interface/IBounds.d.ts +6 -0
  315. package/src/interface/IBounds.js +1 -0
  316. package/src/interface/ICachedBindGroup.d.ts +8 -0
  317. package/src/interface/ICachedBindGroup.js +1 -0
  318. package/src/interface/IColorBufferObject.d.ts +17 -0
  319. package/src/interface/IColorBufferObject.js +1 -0
  320. package/src/interface/IComplexBlendItem.d.ts +19 -0
  321. package/src/interface/IComplexBlendItem.js +1 -0
  322. package/src/interface/IFilterConfig.d.ts +29 -0
  323. package/src/interface/IFilterConfig.js +1 -0
  324. package/src/interface/IGradientLUTData.d.ts +8 -0
  325. package/src/interface/IGradientLUTData.js +1 -0
  326. package/src/interface/IGradientStop.d.ts +11 -0
  327. package/src/interface/IGradientStop.js +1 -0
  328. package/src/interface/ILocalFilterConfig.d.ts +21 -0
  329. package/src/interface/ILocalFilterConfig.js +1 -0
  330. package/src/interface/IMeshResult.d.ts +8 -0
  331. package/src/interface/IMeshResult.js +1 -0
  332. package/src/interface/IPath.d.ts +8 -0
  333. package/src/interface/IPath.js +1 -0
  334. package/src/interface/IPoint.d.ts +4 -0
  335. package/src/interface/IPoint.js +1 -0
  336. package/src/interface/IPooledBuffer.d.ts +8 -0
  337. package/src/interface/IPooledBuffer.js +1 -0
  338. package/src/interface/IPooledTexture.d.ts +17 -0
  339. package/src/interface/IPooledTexture.js +1 -0
  340. package/src/interface/IQuadraticSegment.d.ts +9 -0
  341. package/src/interface/IQuadraticSegment.js +1 -0
  342. package/src/interface/IRectangleInfo.d.ts +13 -0
  343. package/src/interface/IRectangleInfo.js +1 -0
  344. package/src/interface/IStencilBufferObject.d.ts +16 -0
  345. package/src/interface/IStencilBufferObject.js +1 -0
  346. package/src/interface/IStorageBufferConfig.d.ts +40 -0
  347. package/src/interface/IStorageBufferConfig.js +1 -0
  348. package/src/interface/ITextureObject.d.ts +16 -0
  349. package/src/interface/ITextureObject.js +1 -0
@@ -0,0 +1,487 @@
1
+ import { execute as bufferManagerCreateRectVerticesService } from "./BufferManager/service/BufferManagerCreateRectVerticesService";
2
+ import { execute as bufferManagerAcquireVertexBufferUseCase } from "./BufferManager/usecase/BufferManagerAcquireVertexBufferUseCase";
3
+ import { execute as bufferManagerAcquireUniformBufferUseCase } from "./BufferManager/usecase/BufferManagerAcquireUniformBufferUseCase";
4
+ import { execute as bufferManagerReleaseVertexBufferService } from "./BufferManager/service/BufferManagerReleaseVertexBufferService";
5
+ import { execute as bufferManagerReleaseUniformBufferService } from "./BufferManager/service/BufferManagerReleaseUniformBufferService";
6
+ import { execute as bufferManagerAcquireStorageBufferUseCase } from "./BufferManager/usecase/BufferManagerAcquireStorageBufferUseCase";
7
+ import { execute as releaseStorageBufferUseCase } from "./BufferManager/usecase/BufferManagerReleaseStorageBufferUseCase";
8
+ import { execute as cleanupStorageBuffersUseCase } from "./BufferManager/usecase/BufferManagerCleanupStorageBuffersUseCase";
9
+ import { execute as bufferManagerCreateIndirectBufferService } from "./BufferManager/service/BufferManagerCreateIndirectBufferService";
10
+ import { execute as updateIndirectBuffer } from "./BufferManager/service/BufferManagerUpdateIndirectBufferService";
11
+ /**
12
+ * @description Dynamic Uniform Buffer Allocator
13
+ * 1フレーム内の全fill uniform データを1本の大バッファにサブアロケートし、
14
+ * BindGroup作成を1回に削減する。
15
+ */
16
+ export class DynamicUniformAllocator {
17
+ constructor(device, capacity = 65536) {
18
+ Object.defineProperty(this, "device", {
19
+ enumerable: true,
20
+ configurable: true,
21
+ writable: true,
22
+ value: void 0
23
+ });
24
+ Object.defineProperty(this, "buffer", {
25
+ enumerable: true,
26
+ configurable: true,
27
+ writable: true,
28
+ value: null
29
+ });
30
+ Object.defineProperty(this, "offset", {
31
+ enumerable: true,
32
+ configurable: true,
33
+ writable: true,
34
+ value: 0
35
+ });
36
+ Object.defineProperty(this, "capacity", {
37
+ enumerable: true,
38
+ configurable: true,
39
+ writable: true,
40
+ value: void 0
41
+ });
42
+ Object.defineProperty(this, "alignment", {
43
+ enumerable: true,
44
+ configurable: true,
45
+ writable: true,
46
+ value: 256
47
+ });
48
+ Object.defineProperty(this, "pendingDestroyBuffers", {
49
+ enumerable: true,
50
+ configurable: true,
51
+ writable: true,
52
+ value: []
53
+ });
54
+ Object.defineProperty(this, "stagingBuffer", {
55
+ enumerable: true,
56
+ configurable: true,
57
+ writable: true,
58
+ value: void 0
59
+ });
60
+ Object.defineProperty(this, "stagingFloat32", {
61
+ enumerable: true,
62
+ configurable: true,
63
+ writable: true,
64
+ value: void 0
65
+ });
66
+ Object.defineProperty(this, "dirtyEnd", {
67
+ enumerable: true,
68
+ configurable: true,
69
+ writable: true,
70
+ value: 0
71
+ });
72
+ this.device = device;
73
+ this.capacity = capacity;
74
+ this.stagingBuffer = new ArrayBuffer(capacity);
75
+ this.stagingFloat32 = new Float32Array(this.stagingBuffer);
76
+ }
77
+ /**
78
+ * @description フレーム開始時にオフセットをリセット
79
+ * 前フレームの旧バッファを安全に破棄(submit済みのため)
80
+ */
81
+ resetFrame() {
82
+ this.offset = 0;
83
+ this.dirtyEnd = 0;
84
+ for (const buf of this.pendingDestroyBuffers) {
85
+ buf.destroy();
86
+ }
87
+ this.pendingDestroyBuffers.length = 0;
88
+ }
89
+ /**
90
+ * @description バッファを取得(遅延生成)
91
+ */
92
+ getBuffer() {
93
+ if (!this.buffer) {
94
+ this.buffer = this.device.createBuffer({
95
+ "size": this.capacity,
96
+ "usage": GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST
97
+ });
98
+ }
99
+ return this.buffer;
100
+ }
101
+ /**
102
+ * @description uniform データをCPUステージングバッファにコピーし、アライメント済みオフセットを返す
103
+ * 実際のGPU書き込みはflush()で一括実行される
104
+ * @param data - 書き込むデータ
105
+ * @return アライメント済みオフセット(バイト単位)
106
+ */
107
+ allocate(data) {
108
+ // バッファの遅延生成
109
+ if (!this.buffer) {
110
+ this.getBuffer();
111
+ }
112
+ const alignedOffset = this.offset;
113
+ const dataSize = data.byteLength;
114
+ if (alignedOffset + dataSize > this.capacity) {
115
+ // 旧バッファにステージングデータをフラッシュ
116
+ this.flush();
117
+ // バッファが足りない場合は容量を倍増して再作成
118
+ this.capacity *= 2;
119
+ const oldBuffer = this.buffer;
120
+ this.buffer = this.device.createBuffer({
121
+ "size": this.capacity,
122
+ "usage": GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST
123
+ });
124
+ if (oldBuffer) {
125
+ // 旧バッファは即座に破棄しない — コマンドエンコーダーに記録済みの
126
+ // コマンドが旧バッファを参照している可能性があるため、
127
+ // フレーム終了後のresetFrame()で安全に破棄する
128
+ this.pendingDestroyBuffers.push(oldBuffer);
129
+ }
130
+ // ステージングバッファも拡張
131
+ this.stagingBuffer = new ArrayBuffer(this.capacity);
132
+ this.stagingFloat32 = new Float32Array(this.stagingBuffer);
133
+ }
134
+ // CPUステージングバッファにコピー(writeBuffer呼ばない)
135
+ this.stagingFloat32.set(data, alignedOffset / 4);
136
+ const end = alignedOffset + dataSize;
137
+ if (end > this.dirtyEnd) {
138
+ this.dirtyEnd = end;
139
+ }
140
+ // 次のアロケーションは256バイトアライメント
141
+ this.offset = alignedOffset + Math.ceil(dataSize / this.alignment) * this.alignment;
142
+ return alignedOffset;
143
+ }
144
+ /**
145
+ * @description ステージングバッファの内容をGPUバッファに一括書き込み
146
+ * submit前に1回だけ呼び出す
147
+ */
148
+ flush() {
149
+ if (this.dirtyEnd > 0 && this.buffer) {
150
+ this.device.queue.writeBuffer(this.buffer, 0, this.stagingBuffer, 0, this.dirtyEnd);
151
+ this.dirtyEnd = 0;
152
+ }
153
+ }
154
+ dispose() {
155
+ if (this.buffer) {
156
+ this.buffer.destroy();
157
+ this.buffer = null;
158
+ }
159
+ for (const buf of this.pendingDestroyBuffers) {
160
+ buf.destroy();
161
+ }
162
+ this.pendingDestroyBuffers.length = 0;
163
+ }
164
+ }
165
+ export class BufferManager {
166
+ constructor(device) {
167
+ Object.defineProperty(this, "device", {
168
+ enumerable: true,
169
+ configurable: true,
170
+ writable: true,
171
+ value: void 0
172
+ });
173
+ Object.defineProperty(this, "vertexBuffers", {
174
+ enumerable: true,
175
+ configurable: true,
176
+ writable: true,
177
+ value: void 0
178
+ });
179
+ Object.defineProperty(this, "uniformBuffers", {
180
+ enumerable: true,
181
+ configurable: true,
182
+ writable: true,
183
+ value: void 0
184
+ });
185
+ Object.defineProperty(this, "vertexBufferBuckets", {
186
+ enumerable: true,
187
+ configurable: true,
188
+ writable: true,
189
+ value: void 0
190
+ });
191
+ Object.defineProperty(this, "uniformBufferBuckets", {
192
+ enumerable: true,
193
+ configurable: true,
194
+ writable: true,
195
+ value: void 0
196
+ });
197
+ Object.defineProperty(this, "storageBufferPool", {
198
+ enumerable: true,
199
+ configurable: true,
200
+ writable: true,
201
+ value: void 0
202
+ });
203
+ Object.defineProperty(this, "indirectBuffer", {
204
+ enumerable: true,
205
+ configurable: true,
206
+ writable: true,
207
+ value: void 0
208
+ });
209
+ Object.defineProperty(this, "indirectBufferPool", {
210
+ enumerable: true,
211
+ configurable: true,
212
+ writable: true,
213
+ value: void 0
214
+ });
215
+ Object.defineProperty(this, "frameIndirectBuffers", {
216
+ enumerable: true,
217
+ configurable: true,
218
+ writable: true,
219
+ value: void 0
220
+ });
221
+ Object.defineProperty(this, "frameNumber", {
222
+ enumerable: true,
223
+ configurable: true,
224
+ writable: true,
225
+ value: void 0
226
+ });
227
+ Object.defineProperty(this, "unitRectBuffer", {
228
+ enumerable: true,
229
+ configurable: true,
230
+ writable: true,
231
+ value: void 0
232
+ });
233
+ Object.defineProperty(this, "frameVertexPoolBuffers", {
234
+ enumerable: true,
235
+ configurable: true,
236
+ writable: true,
237
+ value: void 0
238
+ });
239
+ Object.defineProperty(this, "frameUniformPoolBuffers", {
240
+ enumerable: true,
241
+ configurable: true,
242
+ writable: true,
243
+ value: void 0
244
+ });
245
+ Object.defineProperty(this, "dynamicUniform", {
246
+ enumerable: true,
247
+ configurable: true,
248
+ writable: true,
249
+ value: void 0
250
+ });
251
+ this.device = device;
252
+ this.vertexBuffers = new Map();
253
+ this.uniformBuffers = new Map();
254
+ this.vertexBufferBuckets = new Map();
255
+ this.uniformBufferBuckets = new Map();
256
+ this.storageBufferPool = [];
257
+ this.indirectBuffer = null;
258
+ this.indirectBufferPool = [];
259
+ this.frameIndirectBuffers = [];
260
+ this.frameNumber = 0;
261
+ this.unitRectBuffer = null;
262
+ this.frameVertexPoolBuffers = [];
263
+ this.frameUniformPoolBuffers = [];
264
+ this.dynamicUniform = new DynamicUniformAllocator(device);
265
+ }
266
+ createVertexBuffer(name, data) {
267
+ const buffer = this.device.createBuffer({
268
+ "size": data.byteLength,
269
+ "usage": GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,
270
+ "mappedAtCreation": true
271
+ });
272
+ new Float32Array(buffer.getMappedRange()).set(data);
273
+ buffer.unmap();
274
+ this.vertexBuffers.set(name, buffer);
275
+ return buffer;
276
+ }
277
+ createUniformBuffer(name, size) {
278
+ const buffer = this.device.createBuffer({
279
+ "size": size,
280
+ "usage": GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST
281
+ });
282
+ this.uniformBuffers.set(name, buffer);
283
+ return buffer;
284
+ }
285
+ updateUniformBuffer(name, data) {
286
+ const buffer = this.uniformBuffers.get(name);
287
+ if (buffer) {
288
+ this.device.queue.writeBuffer(buffer, 0, data.buffer, data.byteOffset, data.byteLength);
289
+ }
290
+ }
291
+ getVertexBuffer(name) {
292
+ return this.vertexBuffers.get(name);
293
+ }
294
+ getUniformBuffer(name) {
295
+ return this.uniformBuffers.get(name);
296
+ }
297
+ createRectVertices(x, y, width, height) {
298
+ return bufferManagerCreateRectVerticesService(x, y, width, height);
299
+ }
300
+ acquireVertexBuffer(requiredSize, data) {
301
+ const buffer = bufferManagerAcquireVertexBufferUseCase(this.device, this.vertexBufferBuckets, requiredSize, data);
302
+ this.frameVertexPoolBuffers.push(buffer);
303
+ return buffer;
304
+ }
305
+ releaseVertexBuffer(buffer) {
306
+ bufferManagerReleaseVertexBufferService(this.vertexBufferBuckets, buffer);
307
+ }
308
+ acquireUniformBuffer(requiredSize) {
309
+ const buffer = bufferManagerAcquireUniformBufferUseCase(this.device, this.uniformBufferBuckets, requiredSize);
310
+ this.frameUniformPoolBuffers.push(buffer);
311
+ return buffer;
312
+ }
313
+ /**
314
+ * @description Uniform Bufferの取得と書き込みを一括で行うヘルパー
315
+ * acquireUniformBuffer + writeBuffer の2ステップを1呼び出しに統合
316
+ * @param data - 書き込むデータ
317
+ * @param byteLength - 書き込みバイト数(省略時はdata.byteLength)
318
+ * @return GPUBuffer
319
+ */
320
+ acquireAndWriteUniformBuffer(data, byteLength) {
321
+ const writeBytes = byteLength ?? data.byteLength;
322
+ const buffer = this.acquireUniformBuffer(writeBytes);
323
+ this.device.queue.writeBuffer(buffer, 0, data.buffer, data.byteOffset, writeBytes);
324
+ return buffer;
325
+ }
326
+ releaseUniformBuffer(buffer) {
327
+ bufferManagerReleaseUniformBufferService(this.uniformBufferBuckets, buffer);
328
+ }
329
+ destroyBuffer(name) {
330
+ const vertexBuffer = this.vertexBuffers.get(name);
331
+ if (vertexBuffer) {
332
+ vertexBuffer.destroy();
333
+ this.vertexBuffers.delete(name);
334
+ }
335
+ const uniformBuffer = this.uniformBuffers.get(name);
336
+ if (uniformBuffer) {
337
+ uniformBuffer.destroy();
338
+ this.uniformBuffers.delete(name);
339
+ }
340
+ }
341
+ dispose() {
342
+ for (const buffer of this.vertexBuffers.values()) {
343
+ buffer.destroy();
344
+ }
345
+ this.vertexBuffers.clear();
346
+ for (const buffer of this.uniformBuffers.values()) {
347
+ buffer.destroy();
348
+ }
349
+ this.uniformBuffers.clear();
350
+ for (const bucket of this.vertexBufferBuckets.values()) {
351
+ for (const buffer of bucket) {
352
+ buffer.destroy();
353
+ }
354
+ }
355
+ this.vertexBufferBuckets.clear();
356
+ for (const bucket of this.uniformBufferBuckets.values()) {
357
+ for (const buffer of bucket) {
358
+ buffer.destroy();
359
+ }
360
+ }
361
+ this.uniformBufferBuckets.clear();
362
+ for (const entry of this.storageBufferPool) {
363
+ entry.buffer.destroy();
364
+ }
365
+ this.storageBufferPool = [];
366
+ if (this.indirectBuffer) {
367
+ this.indirectBuffer.destroy();
368
+ this.indirectBuffer = null;
369
+ }
370
+ for (const buffer of this.indirectBufferPool) {
371
+ buffer.destroy();
372
+ }
373
+ this.indirectBufferPool = [];
374
+ for (const buffer of this.frameIndirectBuffers) {
375
+ buffer.destroy();
376
+ }
377
+ this.frameIndirectBuffers = [];
378
+ if (this.unitRectBuffer) {
379
+ this.unitRectBuffer.destroy();
380
+ this.unitRectBuffer = null;
381
+ }
382
+ this.frameVertexPoolBuffers.length = 0;
383
+ this.frameUniformPoolBuffers.length = 0;
384
+ this.dynamicUniform.dispose();
385
+ }
386
+ getPoolStats() {
387
+ let vertexCount = 0;
388
+ for (const bucket of this.vertexBufferBuckets.values()) {
389
+ vertexCount += bucket.length;
390
+ }
391
+ let uniformCount = 0;
392
+ for (const bucket of this.uniformBufferBuckets.values()) {
393
+ uniformCount += bucket.length;
394
+ }
395
+ return {
396
+ "vertexPoolSize": vertexCount,
397
+ "uniformPoolSize": uniformCount
398
+ };
399
+ }
400
+ clearFrameBuffers() {
401
+ for (const buffer of this.vertexBuffers.values()) {
402
+ buffer.destroy();
403
+ }
404
+ this.vertexBuffers.clear();
405
+ for (const buffer of this.uniformBuffers.values()) {
406
+ buffer.destroy();
407
+ }
408
+ this.uniformBuffers.clear();
409
+ // フレーム内で取得したプールバッファをプールに返却
410
+ for (const buffer of this.frameVertexPoolBuffers) {
411
+ bufferManagerReleaseVertexBufferService(this.vertexBufferBuckets, buffer);
412
+ }
413
+ this.frameVertexPoolBuffers.length = 0;
414
+ for (const buffer of this.frameUniformPoolBuffers) {
415
+ bufferManagerReleaseUniformBufferService(this.uniformBufferBuckets, buffer);
416
+ }
417
+ this.frameUniformPoolBuffers.length = 0;
418
+ // フレーム内で使用したIndirect Bufferをプールに返却
419
+ for (const buffer of this.frameIndirectBuffers) {
420
+ this.indirectBufferPool.push(buffer);
421
+ }
422
+ this.frameIndirectBuffers.length = 0;
423
+ this.releaseAllStorageBuffers();
424
+ this.dynamicUniform.resetFrame();
425
+ this.frameNumber++;
426
+ if (this.frameNumber % 60 === 0) {
427
+ cleanupStorageBuffersUseCase(this.storageBufferPool, this.frameNumber);
428
+ }
429
+ }
430
+ releaseAllStorageBuffers() {
431
+ for (const entry of this.storageBufferPool) {
432
+ entry.inUse = false;
433
+ }
434
+ }
435
+ acquireStorageBuffer(requiredSize) {
436
+ return bufferManagerAcquireStorageBufferUseCase(this.device, this.storageBufferPool, requiredSize, this.frameNumber);
437
+ }
438
+ releaseStorageBuffer(buffer) {
439
+ releaseStorageBufferUseCase(this.storageBufferPool, buffer);
440
+ }
441
+ writeStorageBuffer(buffer, data) {
442
+ this.device.queue.writeBuffer(buffer, 0, data.buffer, data.byteOffset, data.byteLength);
443
+ }
444
+ getOrCreateIndirectBuffer(vertexCount, instanceCount, firstVertex = 0, firstInstance = 0) {
445
+ if (!this.indirectBuffer) {
446
+ this.indirectBuffer = bufferManagerCreateIndirectBufferService(this.device, vertexCount, instanceCount, firstVertex, firstInstance);
447
+ }
448
+ else {
449
+ updateIndirectBuffer(this.device, this.indirectBuffer, vertexCount, instanceCount, firstVertex, firstInstance);
450
+ }
451
+ return this.indirectBuffer;
452
+ }
453
+ createIndirectBuffer(vertexCount, instanceCount, firstVertex = 0, firstInstance = 0) {
454
+ let buffer = this.indirectBufferPool.pop();
455
+ if (buffer) {
456
+ updateIndirectBuffer(this.device, buffer, vertexCount, instanceCount, firstVertex, firstInstance);
457
+ }
458
+ else {
459
+ buffer = bufferManagerCreateIndirectBufferService(this.device, vertexCount, instanceCount, firstVertex, firstInstance);
460
+ }
461
+ this.frameIndirectBuffers.push(buffer);
462
+ return buffer;
463
+ }
464
+ getUnitRectBuffer() {
465
+ if (!this.unitRectBuffer) {
466
+ const vertices = this.createRectVertices(0, 0, 1, 1);
467
+ this.unitRectBuffer = this.device.createBuffer({
468
+ "size": vertices.byteLength,
469
+ "usage": GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,
470
+ "mappedAtCreation": true
471
+ });
472
+ new Float32Array(this.unitRectBuffer.getMappedRange()).set(vertices);
473
+ this.unitRectBuffer.unmap();
474
+ }
475
+ return this.unitRectBuffer;
476
+ }
477
+ getFrameNumber() {
478
+ return this.frameNumber;
479
+ }
480
+ getStoragePoolStats() {
481
+ const inUse = this.storageBufferPool.filter((e) => e.inUse).length;
482
+ return {
483
+ "storagePoolSize": this.storageBufferPool.length,
484
+ "storagePoolInUse": inUse
485
+ };
486
+ }
487
+ }
@@ -0,0 +1,61 @@
1
+ /**
2
+ * @description Compute Pipeline Manager
3
+ * Compute Shaderパイプラインの管理
4
+ *
5
+ * Compute Shaderは並列処理に最適で、フィルター処理を高速化。
6
+ * 特に大きなブラー半径(64+)の場合、20-35%の高速化が期待できる。
7
+ *
8
+ * @class
9
+ */
10
+ export declare class ComputePipelineManager {
11
+ private device;
12
+ private pipelines;
13
+ private bindGroupLayouts;
14
+ /**
15
+ * @constructor
16
+ * @param {GPUDevice} device - WebGPU device
17
+ */
18
+ constructor(device: GPUDevice);
19
+ /**
20
+ * @description ブラー用Compute Pipelineを初期化
21
+ * @private
22
+ */
23
+ private initializeBlurPipelines;
24
+ /**
25
+ * @description ブラーCompute Pipelineを作成
26
+ * @param {string} name - パイプライン名
27
+ * @private
28
+ */
29
+ private createBlurComputePipeline;
30
+ /**
31
+ * @description ブラーCompute Shaderコードを生成
32
+ * ボックスブラー(均一加重平均)を使用。Fragment Shaderと同一出力。
33
+ * @return {string} WGSLシェーダーコード
34
+ * @private
35
+ */
36
+ private getBlurComputeShaderCode;
37
+ /**
38
+ * @description 共有メモリ版ブラーCompute Shaderコードを生成
39
+ * ワークグループ共有メモリでテクスチャ読み込みの重複を排除。
40
+ * radius >= 8 で通常版より高速。
41
+ * @return {string} WGSLシェーダーコード
42
+ * @private
43
+ */
44
+ private getSharedBlurComputeShaderCode;
45
+ /**
46
+ * @description パイプラインを取得
47
+ * @param {string} name - パイプライン名
48
+ * @return {GPUComputePipeline | undefined}
49
+ */
50
+ getPipeline(name: string): GPUComputePipeline | undefined;
51
+ /**
52
+ * @description BindGroupLayoutを取得
53
+ * @param {string} name - レイアウト名
54
+ * @return {GPUBindGroupLayout | undefined}
55
+ */
56
+ getBindGroupLayout(name: string): GPUBindGroupLayout | undefined;
57
+ /**
58
+ * @description リソースを破棄
59
+ */
60
+ destroy(): void;
61
+ }