@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
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2021 Next2D
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,574 @@
1
+ # @next2d/webgpu
2
+
3
+ WebGPU-based rendering engine for Next2D (Experimental / Work in Progress)
4
+
5
+ WebGPU ベースのレンダリングエンジン(実験的 / 開発中)
6
+
7
+ ---
8
+
9
+ ## ⚠️ Warning / 警告
10
+
11
+ **This package is currently under development and NOT production-ready.**
12
+
13
+ **本パッケージは現在開発中であり、本番環境での使用には対応していません。**
14
+
15
+ - Many features are incomplete or placeholder implementations
16
+ - APIs may change without notice
17
+ - Performance has not been optimized
18
+ - Testing is incomplete
19
+
20
+ ---
21
+
22
+ ## Overview / 概要
23
+
24
+ This package provides a WebGPU-based rendering backend for Next2D Player, designed as an alternative to the existing WebGL implementation. WebGPU is a modern graphics API that offers better performance and more control over GPU resources.
25
+
26
+ 本パッケージは Next2D Player 向けの WebGPU ベースのレンダリングバックエンドを提供します。既存の WebGL 実装の代替として設計されており、WebGPU は優れたパフォーマンスと GPU リソースに対するより細かい制御を提供する最新のグラフィックス API です。
27
+
28
+ ### Key Features / 主な機能
29
+
30
+ - WGSL (WebGPU Shading Language) shader implementations
31
+ - Texture atlas management for efficient rendering
32
+ - Instance-based batch rendering
33
+ - Blend mode support
34
+ - Mask rendering capabilities
35
+ - Filter effects (Blur, Glow, Drop Shadow, Color Matrix)
36
+
37
+ ---
38
+
39
+ ## Directory Structure / ディレクトリ構造
40
+
41
+ ```
42
+ src/
43
+ ├── Context.ts # Main rendering context (WebGPU版のメインコンテキスト)
44
+ ├── WebGPUUtil.ts # Utility functions and global state management
45
+
46
+ ├── Managers / マネージャー
47
+ │ ├── AtlasManager.ts # Atlas texture management (アトラステクスチャ管理)
48
+ │ ├── AttachmentManager.ts # Offscreen attachment/FBO management (オフスクリーンアタッチメント管理)
49
+ │ ├── BufferManager.ts # Vertex/Uniform buffer management (バッファ管理)
50
+ │ ├── DrawManager.ts # Drawing operations helper (描画操作ヘルパー)
51
+ │ ├── FrameBufferManager.ts # Framebuffer management (フレームバッファ管理)
52
+ │ └── TextureManager.ts # Texture and sampler management (テクスチャ/サンプラー管理)
53
+
54
+ ├── Core Components / コアコンポーネント
55
+ │ ├── PathCommand.ts # Path drawing commands (moveTo, lineTo, bezierCurveTo, etc.)
56
+ │ │ ├── PathCommandState.ts # Path command state management
57
+ │ │ ├── service/
58
+ │ │ │ ├── PathCommandBeginPathService.ts
59
+ │ │ │ ├── PathCommandEqualsToLastPointService.ts
60
+ │ │ │ ├── PathCommandPushCurrentPathToVerticesService.ts
61
+ │ │ │ └── PathCommandPushPointToCurrentPathService.ts
62
+ │ │ └── usecase/
63
+ │ │ ├── PathCommandArcUseCase.ts
64
+ │ │ ├── PathCommandBezierCurveToUseCase.ts
65
+ │ │ ├── PathCommandClosePathUseCase.ts
66
+ │ │ ├── PathCommandLineToUseCase.ts
67
+ │ │ ├── PathCommandMoveToUseCase.ts
68
+ │ │ └── PathCommandQuadraticCurveToUseCase.ts
69
+ │ ├── Mesh.ts # Mesh data structures and utilities
70
+ │ │ ├── service/
71
+ │ │ │ ├── MeshCalculateNormalVectorService.ts
72
+ │ │ │ ├── MeshFillGenerateService.ts
73
+ │ │ │ ├── MeshGetQuadraticBezierPointService.ts
74
+ │ │ │ ├── MeshGetQuadraticBezierTangentService.ts
75
+ │ │ │ └── MeshLerpService.ts
76
+ │ │ └── usecase/
77
+ │ │ ├── MeshBitmapStrokeGenerateUseCase.ts
78
+ │ │ ├── MeshFillGenerateUseCase.ts
79
+ │ │ ├── MeshGradientStrokeGenerateUseCase.ts
80
+ │ │ ├── MeshSplitQuadraticBezierUseCase.ts
81
+ │ │ └── MeshStrokeGenerateUseCase.ts
82
+ │ ├── BezierConverter.ts # Bezier curve conversion utilities
83
+ │ │ ├── service/
84
+ │ │ │ ├── BezierConverterCubicToQuadService.ts
85
+ │ │ │ └── BezierConverterSplitCubicService.ts
86
+ │ │ └── usecase/
87
+ │ │ └── BezierConverterAdaptiveCubicToQuadUseCase.ts
88
+ │ ├── Blend.ts # Blend mode state management
89
+ │ ├── Mask.ts # Mask rendering state management
90
+ │ └── Grid.ts # Grid/9-slice system
91
+
92
+ ├── Shader/ シェーダー関連
93
+ │ ├── ShaderSource.ts # WGSL shader source code
94
+ │ ├── PipelineManager.ts # Render pipeline management
95
+ │ ├── ShaderInstancedManager.ts # Instance rendering shader management
96
+ │ ├── BlendModeShader.ts # Blend mode shader implementations
97
+ │ └── GradientLUTGenerator.ts # Gradient lookup table generation
98
+ │ ├── service/
99
+ │ │ ├── GradientLUTCalculateResolutionService.ts
100
+ │ │ ├── GradientLUTGeneratePixelsService.ts
101
+ │ │ ├── GradientLUTInterpolateColorService.ts
102
+ │ │ └── GradientLUTParseStopsService.ts
103
+ │ └── usecase/
104
+ │ └── GradientLUTGenerateDataUseCase.ts
105
+
106
+ ├── Gradient/ グラデーション関連
107
+ │ ├── GradientLUTCache.ts # Gradient LUT cache management
108
+ │ └── GradientLUTGenerator.ts # Gradient LUT generation
109
+
110
+ ├── Filter/ フィルター実装
111
+ │ ├── index.ts # Filter exports
112
+ │ ├── BlurFilterShader.ts # Blur filter implementation
113
+ │ ├── BlurFilterUseCase.ts # Blur filter use case
114
+ │ ├── GlowFilterShader.ts # Glow filter implementation
115
+ │ ├── DropShadowFilterShader.ts # Drop shadow filter implementation
116
+ │ ├── ColorMatrixFilterShader.ts # Color matrix filter implementation
117
+ │ ├── BevelFilter/
118
+ │ │ └── FilterApplyBevelFilterUseCase.ts
119
+ │ ├── BlurFilter/
120
+ │ │ └── FilterApplyBlurFilterUseCase.ts
121
+ │ ├── ColorMatrixFilter/
122
+ │ │ └── FilterApplyColorMatrixFilterUseCase.ts
123
+ │ ├── ConvolutionFilter/
124
+ │ │ └── FilterApplyConvolutionFilterUseCase.ts
125
+ │ ├── DisplacementMapFilter/
126
+ │ │ └── FilterApplyDisplacementMapFilterUseCase.ts
127
+ │ ├── DropShadowFilter/
128
+ │ │ └── FilterApplyDropShadowFilterUseCase.ts
129
+ │ ├── GlowFilter/
130
+ │ │ └── FilterApplyGlowFilterUseCase.ts
131
+ │ ├── GradientBevelFilter/
132
+ │ │ └── FilterApplyGradientBevelFilterUseCase.ts
133
+ │ └── GradientGlowFilter/
134
+ │ └── FilterApplyGradientGlowFilterUseCase.ts
135
+
136
+ ├── Blend/ ブレンド関連
137
+ │ ├── BlendInstancedManager.ts # Instance-based blend rendering
138
+ │ ├── service/
139
+ │ │ ├── BlendAddService.ts
140
+ │ │ ├── BlendAlphaService.ts
141
+ │ │ ├── BlendEraseService.ts
142
+ │ │ ├── BlendGetStateService.ts
143
+ │ │ ├── BlendOneZeroService.ts
144
+ │ │ ├── BlendResetService.ts
145
+ │ │ ├── BlendScreenService.ts
146
+ │ │ └── BlendSetModeService.ts
147
+ │ └── usecase/
148
+ │ ├── BlendApplyComplexBlendUseCase.ts
149
+ │ └── BlendOperationUseCase.ts
150
+
151
+ ├── Mask/ マスク関連
152
+ │ ├── service/
153
+ │ │ ├── MaskBeginMaskService.ts
154
+ │ │ ├── MaskEndMaskService.ts
155
+ │ │ ├── MaskSetMaskBoundsService.ts
156
+ │ │ └── MaskUnionMaskService.ts
157
+ │ └── usecase/
158
+ │ ├── MaskLeaveMaskUseCase.ts
159
+ │ └── MaskBindUseCase.ts
160
+
161
+ └── interface/ 型定義
162
+ ├── IAttachmentObject.ts # Attachment object interface
163
+ ├── IBlendMode.ts # Blend mode types
164
+ ├── IBounds.ts # Bounds rectangle interface
165
+ ├── IFillType.ts # Fill type definitions
166
+ ├── IPath.ts # Path interface
167
+ ├── IPoint.ts # Point interface
168
+ └── ITextureObject.ts # Texture object interface
169
+ ```
170
+
171
+ ---
172
+
173
+ ## Implementation Status / 実装状況
174
+
175
+ ### ✅ Implemented / 実装済み
176
+
177
+ #### Core Rendering / コア描画機能
178
+ - ✅ Basic initialization and device setup (基本的な初期化とデバイスセットアップ)
179
+ - ✅ Canvas context configuration (キャンバスコンテキストの設定)
180
+ - ✅ Frame lifecycle management (beginFrame/endFrame) (フレームライフサイクル管理)
181
+ - ✅ Transform matrix operations (save/restore/setTransform/transform) (変換行列操作)
182
+ - ✅ Background color fill (背景色の塗りつぶし)
183
+ - ✅ Resize handling (リサイズ処理)
184
+
185
+ #### Path Drawing / パス描画
186
+ - ✅ Path commands (beginPath, moveTo, lineTo, closePath) (パスコマンド)
187
+ - ✅ Bezier curves (quadraticCurveTo, bezierCurveTo) (ベジェ曲線)
188
+ - ✅ Arc drawing (円弧描画)
189
+ - ✅ Fill operations with solid colors (単色塗りつぶし)
190
+ - ✅ Stroke operations with mesh generation (ストローク描画とメッシュ生成)
191
+ - ✅ Vertex triangulation for path filling (パス塗りつぶし用の頂点三角形分割)
192
+
193
+ #### Texture & Atlas Management / テクスチャ・アトラス管理
194
+ - ✅ Atlas texture creation (4096x4096) (アトラステクスチャ作成)
195
+ - ✅ Node allocation in texture atlas (テクスチャアトラスのノード割り当て)
196
+ - ✅ Texture from pixels/ImageBitmap (ピクセル/ImageBitmapからのテクスチャ作成)
197
+ - ✅ Sampler creation (linear, nearest, repeat) (サンプラー作成)
198
+ - ✅ Texture pool management (テクスチャプール管理)
199
+
200
+ #### Buffer Management / バッファ管理
201
+ - ✅ Vertex buffer creation and management (頂点バッファ作成と管理)
202
+ - ✅ Uniform buffer creation and updates (Uniformバッファ作成と更新)
203
+ - ✅ Rectangle vertex generation (矩形頂点生成)
204
+
205
+ #### Offscreen Rendering / オフスクリーンレンダリング
206
+ - ✅ Attachment object pool (アタッチメントオブジェクトプール)
207
+ - ✅ Bind/unbind attachment operations (アタッチメントのバインド/アンバインド)
208
+ - ✅ Render target switching (レンダーターゲットの切り替え)
209
+ - ✅ Stencil texture creation (ステンシルテクスチャ作成)
210
+
211
+ #### Shader Pipelines / シェーダーパイプライン
212
+ - ✅ Fill pipeline (solid color) (単色塗りつぶしパイプライン)
213
+ - ✅ Mask pipeline (Bezier curve anti-aliasing) (マスクパイプライン - ベジェ曲線アンチエイリアス)
214
+ - ✅ Basic pipeline (基本パイプライン)
215
+ - ✅ Texture pipeline (テクスチャパイプライン)
216
+ - ✅ Instanced rendering pipeline (インスタンス描画パイプライン)
217
+ - ✅ Gradient pipeline structure (グラデーションパイプライン構造)
218
+ - ✅ Blend mode pipeline structure (ブレンドモードパイプライン構造)
219
+
220
+ #### Instance Rendering / インスタンス描画
221
+ - ✅ Instance data management (インスタンスデータ管理)
222
+ - ✅ Display object to instance array conversion (表示オブジェクトのインスタンス配列変換)
223
+ - ✅ Batch rendering with instancing (インスタンシングによるバッチ描画)
224
+ - ✅ Color transform (multiply/add) (カラー変換 - 乗算/加算)
225
+
226
+ #### Image Operations / 画像操作
227
+ - ✅ Draw pixels to atlas node (アトラスノードへのピクセル描画)
228
+ - ✅ Draw OffscreenCanvas/ImageBitmap to atlas (OffscreenCanvas/ImageBitmapのアトラス描画)
229
+ - ✅ Create ImageBitmap from GPU texture (GPUテクスチャからのImageBitmap作成)
230
+ - ✅ Premultiplied alpha conversion (プリマルチプライドアルファ変換)
231
+
232
+ ### 🚧 Partially Implemented / 部分的に実装
233
+
234
+ #### Drawing Operations / 描画操作
235
+ - 🚧 Gradient fill (gradientFill) - Placeholder, falls back to solid fill
236
+ - グラデーション塗りつぶし - プレースホルダー実装、単色塗りつぶしにフォールバック
237
+ - 🚧 Bitmap fill (bitmapFill) - Texture creation works, shader integration pending
238
+ - ビットマップ塗りつぶし - テクスチャ作成は動作、シェーダー統合は保留
239
+ - 🚧 Gradient stroke (gradientStroke) - Placeholder
240
+ - グラデーションストローク - プレースホルダー実装
241
+ - 🚧 Bitmap stroke (bitmapStroke) - Placeholder
242
+ - ビットマップストローク - プレースホルダー実装
243
+
244
+ #### Masking / マスク処理
245
+ - 🚧 Clip operations (clip) - Basic structure, stencil buffer integration needed
246
+ - クリッピング操作 - 基本構造はあるが、ステンシルバッファ統合が必要
247
+ - 🚧 Mask begin/end (beginMask, endMask, setMaskBounds, leaveMask) - Service layer exists
248
+ - マスク開始/終了 - サービス層は存在
249
+
250
+ #### Filters / フィルター
251
+ - 🚧 applyFilter - Framework exists, filter shaders created but not integrated
252
+ - フィルター適用 - フレームワークは存在、フィルターシェーダーは作成済みだが統合されていない
253
+ - BlurFilterShader, GlowFilterShader, DropShadowFilterShader, ColorMatrixFilterShader
254
+
255
+ ### ❌ TODO / 未実装
256
+
257
+ #### Core Features / コア機能
258
+ - ❌ Cache clearing implementation (resize時のキャッシュクリア)
259
+ - ❌ clearRect with scissor/clear operations (シザー/クリア操作によるclearRect)
260
+ - ❌ 9-slice grid transformation (useGrid) (9スライスグリッド変換)
261
+
262
+ #### Advanced Rendering / 高度なレンダリング
263
+ - ❌ Complete gradient LUT texture generation (完全なグラデーションLUTテクスチャ生成)
264
+ - ❌ Gradient shader parameter passing (グラデーションシェーダーのパラメータ渡し)
265
+ - ❌ Bitmap fill/stroke shader integration (ビットマップ塗りつぶし/ストロークシェーダー統合)
266
+ - ❌ Stencil buffer-based clipping (ステンシルバッファベースのクリッピング)
267
+ - ❌ Two-pass rendering for masks (マスク用の2パスレンダリング)
268
+
269
+ #### Blend Modes / ブレンドモード
270
+ - ❌ Full blend mode integration (multiply, screen, add, etc.)
271
+ - 完全なブレンドモード統合(乗算、スクリーン、加算など)
272
+ - ❌ Advanced blend modes (overlay, hard-light, soft-light, etc.)
273
+ - 高度なブレンドモード(オーバーレイ、ハードライト、ソフトライトなど)
274
+
275
+ #### Filters / フィルター
276
+ - ❌ Filter parameter binding and execution (フィルターパラメータバインディングと実行)
277
+ - ❌ Multi-pass filter rendering (複数パスフィルターレンダリング)
278
+ - ❌ Convolution filter (コンボリューションフィルター)
279
+ - ❌ Displacement map filter (ディスプレイスメントマップフィルター)
280
+
281
+ #### Optimization / 最適化
282
+ - ❌ Buffer reuse and pooling optimization (バッファ再利用とプール最適化)
283
+ - ❌ Command encoder reuse (コマンドエンコーダー再利用)
284
+ - ❌ Pipeline state caching (パイプライン状態キャッシング)
285
+ - ❌ Batch draw call optimization (バッチ描画コール最適化)
286
+
287
+ #### Testing & Documentation / テストとドキュメント
288
+ - ❌ Unit tests (ユニットテスト)
289
+ - ❌ Integration tests (統合テスト)
290
+ - ❌ Performance benchmarks (パフォーマンスベンチマーク)
291
+ - ❌ API documentation (API ドキュメント)
292
+
293
+ ---
294
+
295
+ ## Context.ts - Implementation Analysis / Context.ts 実装分析
296
+
297
+ The `Context.ts` file is the main entry point for the WebGPU rendering engine. Here's a detailed breakdown of its implementation status:
298
+
299
+ `Context.ts` ファイルは WebGPU レンダリングエンジンのメインエントリーポイントです。実装状況の詳細な内訳は以下の通りです:
300
+
301
+ ### Fully Implemented Methods / 完全実装済みメソッド
302
+
303
+ | Method | Status | Notes |
304
+ |--------|--------|-------|
305
+ | `constructor` | ✅ Complete | Device, context, format initialization |
306
+ | `save` / `restore` | ✅ Complete | Matrix stack operations |
307
+ | `setTransform` / `transform` | ✅ Complete | 2D transformation matrix |
308
+ | `reset` | ✅ Complete | Reset context state |
309
+ | `beginPath` / `moveTo` / `lineTo` | ✅ Complete | Path command delegation |
310
+ | `quadraticCurveTo` / `bezierCurveTo` | ✅ Complete | Bezier curve support |
311
+ | `arc` / `closePath` | ✅ Complete | Path operations |
312
+ | `fillStyle` / `strokeStyle` | ✅ Complete | Color style setters |
313
+ | `fill` | ✅ Complete | Solid color fill with pipeline |
314
+ | `stroke` | ✅ Complete | Stroke with mesh generation |
315
+ | `updateBackgroundColor` | ✅ Complete | Background color update |
316
+ | `fillBackgroundColor` | ✅ Complete | Clear with background color |
317
+ | `resize` | ✅ Complete | Canvas resize (cache clear TODO) |
318
+ | `beginFrame` / `endFrame` | ✅ Complete | Frame lifecycle management |
319
+ | `bindAttachment` / `unbindAttachment` | ✅ Complete | Offscreen rendering |
320
+ | `getAttachmentObject` / `releaseAttachment` | ✅ Complete | Attachment management |
321
+ | `createNode` / `removeNode` | ✅ Complete | Atlas node management |
322
+ | `drawPixels` / `drawElement` | ✅ Complete | Pixel/element to atlas |
323
+ | `drawDisplayObject` | ✅ Complete | Instance array addition |
324
+ | `drawArraysInstanced` | ✅ Complete | Batch instance rendering |
325
+ | `clearArraysInstanced` | ✅ Complete | Clear instance data |
326
+ | `createImageBitmap` | ✅ Complete | GPU→ImageBitmap conversion |
327
+ | `beginMask` / `setMaskBounds` / `endMask` / `leaveMask` | ✅ Complete | Mask service delegation |
328
+
329
+ ### Placeholder / Incomplete Methods / プレースホルダー/不完全なメソッド
330
+
331
+ | Method | Status | Notes |
332
+ |--------|--------|-------|
333
+ | `clearRect` | 🚧 Partial | Has console.log, needs scissor+clear implementation |
334
+ | `gradientFill` | 🚧 Placeholder | console.log + falls back to fill() |
335
+ | `bitmapFill` | 🚧 Partial | Creates texture but falls back to fill() |
336
+ | `gradientStroke` | 🚧 Placeholder | console.log + falls back to stroke() |
337
+ | `bitmapStroke` | 🚧 Placeholder | console.log + falls back to stroke() |
338
+ | `clip` | 🚧 Placeholder | console.log + falls back to fill() |
339
+ | `useGrid` | 🚧 Placeholder | console.log, 9-slice not implemented |
340
+ | `applyFilter` | 🚧 Placeholder | console.log, filter shaders not integrated |
341
+
342
+ ### Debug Markers / デバッグマーカー
343
+
344
+ The code contains multiple `console.log` statements indicating work-in-progress areas:
345
+
346
+ コードには開発中の領域を示す複数の `console.log` 文が含まれています:
347
+
348
+ - Line 250: `clearRect()` - "TODO: シザーとクリアを使用した実装"
349
+ - Line 228: `resize()` - "TODO: キャッシュクリア実装"
350
+ - Line 270: `clearRect()` - "TODO: シザーとクリアを使用した実装"
351
+ - Line 781: `gradientFill()` - "TODO: グラデーションLUTテクスチャを生成"
352
+ - Line 790: `gradientFill()` - "TODO: グラデーション用のシェーダーを使用"
353
+ - Line 847: `bitmapFill()` - "TODO: ビットマップ塗りつぶし用のシェーダーを使用"
354
+ - Line 876: `gradientStroke()` - "TODO: グラデーションストローク実装"
355
+ - Line 901: `bitmapStroke()` - "TODO: ビットマップストローク実装"
356
+ - Line 918: `clip()` - "TODO: ステンシルバッファを使用したクリッピング実装"
357
+ - Line 962: `useGrid()` - "TODO: Grid/9-slice transformation implementation"
358
+ - Line 1312-1320: `applyFilter()` - Multiple filter TODOs
359
+ - Line 1660: `leaveMask()` - "TODO: WebGPU版のインスタンス描画を実装後に追加"
360
+
361
+ ---
362
+
363
+ ## Shader Implementation / シェーダー実装
364
+
365
+ ### WGSL Shaders in ShaderSource.ts / ShaderSource.ts の WGSL シェーダー
366
+
367
+ The package includes complete WGSL shader implementations for:
368
+
369
+ パッケージには以下の完全な WGSL シェーダー実装が含まれています:
370
+
371
+ 1. **Fill Shader** (単色塗りつぶし)
372
+ - WebGL-compatible vertex transformation
373
+ - Premultiplied alpha blending
374
+ - Viewport normalization
375
+
376
+ 2. **Mask Shader** (マスク)
377
+ - Bezier curve rendering with anti-aliasing
378
+ - Partial derivative-based edge smoothing
379
+
380
+ 3. **Texture Shader** (テクスチャ)
381
+ - Sampled texture rendering
382
+ - Color modulation
383
+
384
+ 4. **Instanced Shader** (インスタンス描画)
385
+ - Per-instance transformation matrices
386
+ - Color transform (multiply + add)
387
+ - Atlas texture sampling
388
+ - Unpremultiply → transform → premultiply workflow
389
+
390
+ 5. **Gradient Shader** (グラデーション) - Structure only
391
+ - Linear/Radial gradient support
392
+ - LUT-based color lookup
393
+
394
+ 6. **Blend Shader** (ブレンド) - Structure only
395
+ - Normal, Multiply, Screen, Add modes
396
+ - Dual texture sampling
397
+
398
+ ---
399
+
400
+ ## Pipeline Architecture / パイプラインアーキテクチャ
401
+
402
+ The `PipelineManager` creates and manages 6 render pipelines:
403
+
404
+ `PipelineManager` は 6 つのレンダーパイプラインを作成・管理します:
405
+
406
+ 1. **fill** - Solid color fill (単色塗りつぶし)
407
+ 2. **mask** - Stencil/clip operations (ステンシル/クリップ操作)
408
+ 3. **basic** - Simple color rendering (シンプルカラーレンダリング)
409
+ 4. **texture** - Textured quad rendering (テクスチャ付き矩形レンダリング)
410
+ 5. **instanced** - Batch instance rendering (バッチインスタンス描画)
411
+ 6. **gradient** - Gradient fill (グラデーション塗りつぶし) - Not yet integrated
412
+ 7. **blend** - Blend mode operations (ブレンドモード操作) - Not yet integrated
413
+
414
+ All pipelines use:
415
+ - Premultiplied alpha blending
416
+ - Triangle list topology
417
+ - No backface culling
418
+
419
+ すべてのパイプラインは以下を使用:
420
+ - プリマルチプライドアルファブレンディング
421
+ - トライアングルリストトポロジー
422
+ - バックフェースカリング無効
423
+
424
+ ---
425
+
426
+ ## Known Limitations / 既知の制限事項
427
+
428
+ 1. **Stencil Operations** - Depth-stencil attachment configuration incomplete
429
+ - ステンシル操作 - Depth-stencilアタッチメント設定が不完全
430
+
431
+ 2. **Filter Effects** - Shader code exists but parameter passing not implemented
432
+ - フィルター効果 - シェーダーコードは存在するがパラメータ渡しが未実装
433
+
434
+ 3. **Blend Modes** - Only normal blend mode fully functional
435
+ - ブレンドモード - ノーマルブレンドモードのみ完全に機能
436
+
437
+ 4. **Gradient Rendering** - LUT generation incomplete
438
+ - グラデーションレンダリング - LUT生成が不完全
439
+
440
+ 5. **Performance** - No optimization for buffer reuse, pipeline caching
441
+ - パフォーマンス - バッファ再利用、パイプラインキャッシングの最適化なし
442
+
443
+ 6. **Error Handling** - Limited validation and error recovery
444
+ - エラーハンドリング - 検証とエラー回復が制限的
445
+
446
+ ---
447
+
448
+ ## Development Notes / 開発ノート
449
+
450
+ ### Architecture / アーキテクチャ
451
+
452
+ The package follows a manager-based architecture similar to the WebGL implementation:
453
+
454
+ パッケージは WebGL 実装と同様のマネージャーベースアーキテクチャに従います:
455
+
456
+ - **Context**: Main rendering interface (メインレンダリングインターフェース)
457
+ - **Managers**: Resource lifecycle management (リソースライフサイクル管理)
458
+ - **Services/UseCases**: Business logic separation (ビジネスロジック分離)
459
+ - **Shaders**: WGSL source and pipeline configuration (WGSL ソースとパイプライン設定)
460
+
461
+ ### Frame Lifecycle / フレームライフサイクル
462
+
463
+ ```
464
+ clearTransferBounds()
465
+ → beginFrame()
466
+ → [drawing operations]
467
+ → endFrame()/transferMainCanvas()
468
+ ```
469
+
470
+ ### Rendering Flow / レンダリングフロー
471
+
472
+ 1. Acquire canvas texture (once per frame) (キャンバステクスチャ取得 - フレーム毎に1回)
473
+ 2. Create command encoder (コマンドエンコーダー作成)
474
+ 3. Begin render pass with load/clear (ロード/クリアでレンダーパス開始)
475
+ 4. Set pipeline and bind resources (パイプライン設定とリソースバインド)
476
+ 5. Draw commands (描画コマンド)
477
+ 6. End render pass (レンダーパス終了)
478
+ 7. Submit commands to queue (コマンドをキューに送信)
479
+
480
+ ---
481
+
482
+ ## Browser Compatibility / ブラウザ互換性
483
+
484
+ WebGPU support is required. As of 2024:
485
+
486
+ WebGPU サポートが必要です。2024年時点:
487
+
488
+ - ✅ Chrome/Edge 113+
489
+ - ✅ Firefox 131+ (experimental)
490
+ - ✅ Safari 18+ (experimental)
491
+ - ❌ Older browsers (need WebGL fallback)
492
+
493
+ ---
494
+
495
+ ## Usage / 使用方法
496
+
497
+ ```typescript
498
+ import { Context } from "@next2d/webgpu";
499
+
500
+ // Get WebGPU adapter and device
501
+ const adapter = await navigator.gpu.requestAdapter();
502
+ const device = await adapter.requestDevice();
503
+
504
+ // Get canvas context
505
+ const canvas = document.getElementById("canvas") as HTMLCanvasElement;
506
+ const context = canvas.getContext("webgpu") as GPUCanvasContext;
507
+
508
+ // Get preferred format
509
+ const format = navigator.gpu.getPreferredCanvasFormat();
510
+
511
+ // Create rendering context
512
+ const ctx = new Context(device, context, format);
513
+
514
+ // Rendering
515
+ ctx.clearTransferBounds(); // Begin frame
516
+ ctx.fillStyle(1, 0, 0, 1); // Red
517
+ ctx.beginPath();
518
+ ctx.arc(100, 100, 50);
519
+ ctx.fill();
520
+ ctx.transferMainCanvas(); // End frame and submit
521
+ ```
522
+
523
+ ---
524
+
525
+ ## Contributing / 貢献
526
+
527
+ As this package is work in progress, contributions are welcome! Priority areas:
528
+
529
+ このパッケージは開発中のため、貢献を歓迎します!優先領域:
530
+
531
+ 1. Completing gradient and bitmap fill/stroke shaders
532
+ 2. Implementing filter parameter binding
533
+ 3. Stencil-based masking operations
534
+ 4. Performance optimization (buffer pooling, pipeline caching)
535
+ 5. Comprehensive testing
536
+
537
+ ---
538
+
539
+ ## License / ライセンス
540
+
541
+ MIT License
542
+
543
+ Copyright (c) 2021 Next2D
544
+
545
+ Permission is hereby granted, free of charge, to any person obtaining a copy
546
+ of this software and associated documentation files (the "Software"), to deal
547
+ in the Software without restriction, including without limitation the rights
548
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
549
+ copies of the Software, and to permit persons to whom the Software is
550
+ furnished to do so, subject to the following conditions:
551
+
552
+ The above copyright notice and this permission notice shall be included in all
553
+ copies or substantial portions of the Software.
554
+
555
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
556
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
557
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
558
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
559
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
560
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
561
+ SOFTWARE.
562
+
563
+ ---
564
+
565
+ ## Related Packages / 関連パッケージ
566
+
567
+ - `@next2d/texture-packer` - Texture atlas management
568
+ - `@next2d/render-queue` - Render queue for batch operations
569
+
570
+ ---
571
+
572
+ **Last Updated**: 2024-12-08
573
+
574
+ **Status**: 🚧 Experimental - Active Development
package/package.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "@next2d/webgpu",
3
+ "version": "3.0.0",
4
+ "description": "Next2D WebGPU Package",
5
+ "author": "Toshiyuki Ienaga<ienaga@next2d.app> (https://github.com/ienaga/)",
6
+ "license": "MIT",
7
+ "homepage": "https://next2d.app",
8
+ "bugs": "https://github.com/Next2D/Player/issues",
9
+ "main": "src/index.js",
10
+ "types": "src/index.d.ts",
11
+ "type": "module",
12
+ "exports": {
13
+ ".": {
14
+ "import": "./src/index.js",
15
+ "require": "./src/index.js"
16
+ }
17
+ },
18
+ "keywords": [
19
+ "Next2D",
20
+ "Next2D WebGPU"
21
+ ],
22
+ "repository": {
23
+ "type": "git",
24
+ "url": "git+https://github.com/Next2D/Player.git"
25
+ },
26
+ "dependencies": {
27
+ "@next2d/texture-packer": "3.0.0",
28
+ "@next2d/render-queue": "3.0.0"
29
+ }
30
+ }
@@ -0,0 +1,23 @@
1
+ import type { IAttachmentObject } from "./interface/IAttachmentObject";
2
+ import type { ITextureObject } from "./interface/ITextureObject";
3
+ import type { TexturePacker } from "@next2d/texture-packer";
4
+ export declare const $setActiveAtlasIndex: (index: number) => void;
5
+ export declare const $getActiveAtlasIndex: () => number;
6
+ export declare const $getAtlasAttachmentObjects: () => IAttachmentObject[];
7
+ export declare const $setAtlasAttachmentObject: (attachment_object: IAttachmentObject) => void;
8
+ type AtlasCreator = (index: number) => IAttachmentObject;
9
+ export declare const $setAtlasCreator: (creator: AtlasCreator) => void;
10
+ export declare const $getAtlasAttachmentObject: () => IAttachmentObject | null;
11
+ export declare const $getAtlasAttachmentObjectByIndex: (index: number) => IAttachmentObject | null;
12
+ export declare const $hasAtlasAttachmentObject: () => boolean;
13
+ export declare const $rootNodes: TexturePacker[];
14
+ export declare let $atlasTexture: ITextureObject | null;
15
+ export declare const $setAtlasTexture: (texture_object: ITextureObject | null) => void;
16
+ export declare const $getAtlasTexture: () => ITextureObject | null;
17
+ export declare const $getActiveTransferBounds: (index: number) => Float32Array;
18
+ export declare const $getActiveAllTransferBounds: (index: number) => Float32Array;
19
+ export declare const $clearTransferBounds: () => void;
20
+ export declare const $setCurrentAtlasIndex: (index: number) => void;
21
+ export declare const $getCurrentAtlasIndex: () => number;
22
+ export declare const $resetAtlas: () => void;
23
+ export {};