@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,19 @@
1
+ import type { IAttachmentObject } from "./interface/IAttachmentObject";
2
+ export declare class AttachmentManager {
3
+ private device;
4
+ private attachmentPool;
5
+ private texturePool;
6
+ private colorBufferPool;
7
+ private stencilBufferPool;
8
+ private idCounter;
9
+ private currentAttachment;
10
+ constructor(device: GPUDevice);
11
+ getAttachmentObject(width: number, height: number, msaa?: boolean): IAttachmentObject;
12
+ bindAttachment(attachment: IAttachmentObject): void;
13
+ getCurrentAttachment(): IAttachmentObject | null;
14
+ get currentAttachmentObject(): IAttachmentObject | null;
15
+ unbindAttachment(): void;
16
+ releaseAttachment(attachment: IAttachmentObject): void;
17
+ createRenderPassDescriptor(attachment: IAttachmentObject, r: number, g: number, b: number, a: number, loadOp?: GPULoadOp): GPURenderPassDescriptor;
18
+ dispose(): void;
19
+ }
@@ -0,0 +1,105 @@
1
+ import { execute as attachmentManagerGetAttachmentObjectUseCase } from "./AttachmentManager/usecase/AttachmentManagerGetAttachmentObjectUseCase";
2
+ import { execute as attachmentManagerReleaseAttachmentUseCase } from "./AttachmentManager/usecase/AttachmentManagerReleaseAttachmentUseCase";
3
+ import { execute as attachmentManagerCreateRenderPassDescriptorService } from "./AttachmentManager/service/AttachmentManagerCreateRenderPassDescriptorService";
4
+ export class AttachmentManager {
5
+ constructor(device) {
6
+ Object.defineProperty(this, "device", {
7
+ enumerable: true,
8
+ configurable: true,
9
+ writable: true,
10
+ value: void 0
11
+ });
12
+ Object.defineProperty(this, "attachmentPool", {
13
+ enumerable: true,
14
+ configurable: true,
15
+ writable: true,
16
+ value: void 0
17
+ });
18
+ Object.defineProperty(this, "texturePool", {
19
+ enumerable: true,
20
+ configurable: true,
21
+ writable: true,
22
+ value: void 0
23
+ });
24
+ Object.defineProperty(this, "colorBufferPool", {
25
+ enumerable: true,
26
+ configurable: true,
27
+ writable: true,
28
+ value: void 0
29
+ });
30
+ Object.defineProperty(this, "stencilBufferPool", {
31
+ enumerable: true,
32
+ configurable: true,
33
+ writable: true,
34
+ value: void 0
35
+ });
36
+ Object.defineProperty(this, "idCounter", {
37
+ enumerable: true,
38
+ configurable: true,
39
+ writable: true,
40
+ value: void 0
41
+ });
42
+ Object.defineProperty(this, "currentAttachment", {
43
+ enumerable: true,
44
+ configurable: true,
45
+ writable: true,
46
+ value: void 0
47
+ });
48
+ this.device = device;
49
+ this.attachmentPool = [];
50
+ this.texturePool = new Map();
51
+ this.colorBufferPool = [];
52
+ this.stencilBufferPool = [];
53
+ this.idCounter = { "attachmentId": 0, "textureId": 0, "stencilId": 0 };
54
+ this.currentAttachment = null;
55
+ }
56
+ getAttachmentObject(width, height, msaa = false) {
57
+ return attachmentManagerGetAttachmentObjectUseCase(this.device, this.attachmentPool, this.texturePool, this.colorBufferPool, this.stencilBufferPool, width, height, msaa, this.idCounter);
58
+ }
59
+ bindAttachment(attachment) {
60
+ this.currentAttachment = attachment;
61
+ }
62
+ getCurrentAttachment() {
63
+ return this.currentAttachment;
64
+ }
65
+ get currentAttachmentObject() {
66
+ return this.currentAttachment;
67
+ }
68
+ unbindAttachment() {
69
+ this.currentAttachment = null;
70
+ }
71
+ releaseAttachment(attachment) {
72
+ attachmentManagerReleaseAttachmentUseCase(this.attachmentPool, this.texturePool, this.colorBufferPool, this.stencilBufferPool, attachment);
73
+ }
74
+ createRenderPassDescriptor(attachment, r, g, b, a, loadOp = "clear") {
75
+ return attachmentManagerCreateRenderPassDescriptorService(attachment, r, g, b, a, loadOp);
76
+ }
77
+ dispose() {
78
+ for (const pool of this.texturePool.values()) {
79
+ for (const textureObj of pool) {
80
+ textureObj.resource.destroy();
81
+ }
82
+ }
83
+ this.texturePool.clear();
84
+ for (const color of this.colorBufferPool) {
85
+ color.resource.destroy();
86
+ }
87
+ this.colorBufferPool = [];
88
+ for (const stencil of this.stencilBufferPool) {
89
+ stencil.resource.destroy();
90
+ }
91
+ this.stencilBufferPool = [];
92
+ for (const attachment of this.attachmentPool) {
93
+ if (attachment.texture) {
94
+ attachment.texture.resource.destroy();
95
+ }
96
+ if (attachment.color) {
97
+ attachment.color.resource.destroy();
98
+ }
99
+ if (attachment.stencil) {
100
+ attachment.stencil.resource.destroy();
101
+ }
102
+ }
103
+ this.attachmentPool = [];
104
+ }
105
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @description 適応的ベジェ曲線テッセレーション
3
+ * Adaptive Bezier Curve Tessellation
4
+ *
5
+ * 三次ベジェ曲線を二次ベジェ曲線に変換する際、
6
+ * フラットネス(平坦度)に基づいて動的に分割数を決定。
7
+ *
8
+ * - 単純な曲線: 2分割程度
9
+ * - 複雑な曲線: 最大8分割
10
+ *
11
+ * これにより品質を維持しながら不要な計算を削減。
12
+ */
13
+ export { execute as adaptiveCubicToQuad, calculateAdaptiveThreshold } from "./usecase/BezierConverterAdaptiveCubicToQuadUseCase";
14
+ export type { IQuadraticSegment } from "../interface/IQuadraticSegment";
15
+ export { execute as calculateFlatness } from "./service/BezierConverterCalculateFlatnessService";
16
+ export { execute as splitCubic } from "./service/BezierConverterSplitCubicService";
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @description 適応的ベジェ曲線テッセレーション
3
+ * Adaptive Bezier Curve Tessellation
4
+ *
5
+ * 三次ベジェ曲線を二次ベジェ曲線に変換する際、
6
+ * フラットネス(平坦度)に基づいて動的に分割数を決定。
7
+ *
8
+ * - 単純な曲線: 2分割程度
9
+ * - 複雑な曲線: 最大8分割
10
+ *
11
+ * これにより品質を維持しながら不要な計算を削減。
12
+ */
13
+ export { execute as adaptiveCubicToQuad, calculateAdaptiveThreshold } from "./usecase/BezierConverterAdaptiveCubicToQuadUseCase";
14
+ export { execute as calculateFlatness } from "./service/BezierConverterCalculateFlatnessService";
15
+ export { execute as splitCubic } from "./service/BezierConverterSplitCubicService";
@@ -0,0 +1,15 @@
1
+ import type { IPoint } from "../../interface/IPoint";
2
+ /**
3
+ * @description 三次ベジェ曲線のフラットネス(平坦度)を計算
4
+ * Calculate flatness of cubic bezier curve
5
+ *
6
+ * フラットネスは曲線がどれだけ直線に近いかを示す値。
7
+ * 制御点から始点-終点を結ぶ直線までの最大距離を計算。
8
+ *
9
+ * @param {IPoint} p0 - 始点
10
+ * @param {IPoint} p1 - 制御点1
11
+ * @param {IPoint} p2 - 制御点2
12
+ * @param {IPoint} p3 - 終点
13
+ * @return {number} フラットネス値(距離の2乗)
14
+ */
15
+ export declare const execute: (p0: IPoint, p1: IPoint, p2: IPoint, p3: IPoint) => number;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * @description 三次ベジェ曲線のフラットネス(平坦度)を計算
3
+ * Calculate flatness of cubic bezier curve
4
+ *
5
+ * フラットネスは曲線がどれだけ直線に近いかを示す値。
6
+ * 制御点から始点-終点を結ぶ直線までの最大距離を計算。
7
+ *
8
+ * @param {IPoint} p0 - 始点
9
+ * @param {IPoint} p1 - 制御点1
10
+ * @param {IPoint} p2 - 制御点2
11
+ * @param {IPoint} p3 - 終点
12
+ * @return {number} フラットネス値(距離の2乗)
13
+ */
14
+ export const execute = (p0, p1, p2, p3) => {
15
+ // 始点から終点へのベクトル
16
+ const dx = p3.x - p0.x;
17
+ const dy = p3.y - p0.y;
18
+ // ベクトルの長さの2乗
19
+ const lengthSq = dx * dx + dy * dy;
20
+ // 始点と終点が同じ場合、制御点からの最大距離を返す
21
+ if (lengthSq < 1e-10) {
22
+ const d1 = (p1.x - p0.x) * (p1.x - p0.x) + (p1.y - p0.y) * (p1.y - p0.y);
23
+ const d2 = (p2.x - p0.x) * (p2.x - p0.x) + (p2.y - p0.y) * (p2.y - p0.y);
24
+ return Math.max(d1, d2);
25
+ }
26
+ // 制御点から直線への距離を計算(クロス積を使用)
27
+ // 距離 = |cross product| / |line length|
28
+ // 距離の2乗を計算して sqrt を避ける
29
+ // 制御点1から直線への距離の2乗
30
+ const cross1 = (p1.x - p0.x) * dy - (p1.y - p0.y) * dx;
31
+ const d1 = cross1 * cross1 / lengthSq;
32
+ // 制御点2から直線への距離の2乗
33
+ const cross2 = (p2.x - p0.x) * dy - (p2.y - p0.y) * dx;
34
+ const d2 = cross2 * cross2 / lengthSq;
35
+ // 最大距離を返す
36
+ return Math.max(d1, d2);
37
+ };
@@ -0,0 +1,15 @@
1
+ import type { IPoint } from "../../interface/IPoint";
2
+ /**
3
+ * @description 三次ベジェ曲線をパラメータt=0.5で2分割
4
+ * Split cubic bezier curve at t=0.5 using De Casteljau algorithm
5
+ *
6
+ * @param {IPoint} p0 - 始点
7
+ * @param {IPoint} p1 - 制御点1
8
+ * @param {IPoint} p2 - 制御点2
9
+ * @param {IPoint} p3 - 終点
10
+ * @return {{ first: IPoint[], second: IPoint[] }} 分割された2つの曲線
11
+ */
12
+ export declare const execute: (p0: IPoint, p1: IPoint, p2: IPoint, p3: IPoint) => {
13
+ first: IPoint[];
14
+ second: IPoint[];
15
+ };
@@ -0,0 +1,47 @@
1
+ /**
2
+ * @description 三次ベジェ曲線をパラメータt=0.5で2分割
3
+ * Split cubic bezier curve at t=0.5 using De Casteljau algorithm
4
+ *
5
+ * @param {IPoint} p0 - 始点
6
+ * @param {IPoint} p1 - 制御点1
7
+ * @param {IPoint} p2 - 制御点2
8
+ * @param {IPoint} p3 - 終点
9
+ * @return {{ first: IPoint[], second: IPoint[] }} 分割された2つの曲線
10
+ */
11
+ export const execute = (p0, p1, p2, p3) => {
12
+ // De Casteljau algorithm at t = 0.5
13
+ // 中点を計算することで精度を保ちながら分割
14
+ // レベル1: 各辺の中点
15
+ const p01 = {
16
+ "x": (p0.x + p1.x) * 0.5,
17
+ "y": (p0.y + p1.y) * 0.5
18
+ };
19
+ const p12 = {
20
+ "x": (p1.x + p2.x) * 0.5,
21
+ "y": (p1.y + p2.y) * 0.5
22
+ };
23
+ const p23 = {
24
+ "x": (p2.x + p3.x) * 0.5,
25
+ "y": (p2.y + p3.y) * 0.5
26
+ };
27
+ // レベル2: レベル1の中点
28
+ const p012 = {
29
+ "x": (p01.x + p12.x) * 0.5,
30
+ "y": (p01.y + p12.y) * 0.5
31
+ };
32
+ const p123 = {
33
+ "x": (p12.x + p23.x) * 0.5,
34
+ "y": (p12.y + p23.y) * 0.5
35
+ };
36
+ // レベル3: 分割点
37
+ const p0123 = {
38
+ "x": (p012.x + p123.x) * 0.5,
39
+ "y": (p012.y + p123.y) * 0.5
40
+ };
41
+ return {
42
+ // 前半の曲線: p0 -> p01 -> p012 -> p0123
43
+ "first": [p0, p01, p012, p0123],
44
+ // 後半の曲線: p0123 -> p123 -> p23 -> p3
45
+ "second": [p0123, p123, p23, p3]
46
+ };
47
+ };
@@ -0,0 +1,29 @@
1
+ import type { IPoint } from "../../interface/IPoint";
2
+ import type { IQuadraticSegment } from "../../interface/IQuadraticSegment";
3
+ export type { IQuadraticSegment };
4
+ /**
5
+ * @description 三次ベジェ曲線を適応的に二次ベジェ曲線群に変換
6
+ * Adaptively convert cubic bezier to quadratic bezier segments
7
+ *
8
+ * フラットネス(平坦度)に基づいて動的に分割数を決定。
9
+ * 単純な曲線は少ない分割、複雑な曲線は多い分割を行う。
10
+ *
11
+ * @param {IPoint} p0 - 始点
12
+ * @param {IPoint} p1 - 制御点1
13
+ * @param {IPoint} p2 - 制御点2
14
+ * @param {IPoint} p3 - 終点
15
+ * @param {number} flatnessThreshold - フラットネス閾値(オプション)
16
+ * @return {IQuadraticSegment[]} 二次ベジェ曲線のセグメント配列
17
+ */
18
+ export declare const execute: (p0: IPoint, p1: IPoint, p2: IPoint, p3: IPoint, flatnessThreshold?: number) => IQuadraticSegment[];
19
+ /**
20
+ * @description スケールに応じたフラットネス閾値を計算
21
+ * Calculate flatness threshold based on scale
22
+ *
23
+ * ズームレベルが高い場合は高品質な近似が必要。
24
+ * スケール = sqrt(matrix[0]^2 + matrix[1]^2) などで計算可能。
25
+ *
26
+ * @param {number} scale - 現在のスケール
27
+ * @return {number} 調整されたフラットネス閾値
28
+ */
29
+ export declare const calculateAdaptiveThreshold: (scale: number) => number;
@@ -0,0 +1,80 @@
1
+ import { execute as calculateFlatness } from "../service/BezierConverterCalculateFlatnessService";
2
+ import { execute as splitCubic } from "../service/BezierConverterSplitCubicService";
3
+ /**
4
+ * @description フラットネス閾値のデフォルト値
5
+ * Default flatness threshold (squared distance)
6
+ *
7
+ * この値は曲線がどの程度「平坦」であれば直接近似するかを決定。
8
+ * 値が小さいほど高品質だが分割数が増加。
9
+ * 0.5ピクセル相当の値をデフォルトとする(滑らかなストローク描画用)。
10
+ */
11
+ const DEFAULT_FLATNESS_THRESHOLD = 0.25; // 0.5px squared
12
+ /**
13
+ * @description 最大再帰深度
14
+ * Maximum recursion depth to prevent infinite loops
15
+ */
16
+ const MAX_RECURSION_DEPTH = 8;
17
+ /**
18
+ * @description 三次ベジェ曲線を適応的に二次ベジェ曲線群に変換
19
+ * Adaptively convert cubic bezier to quadratic bezier segments
20
+ *
21
+ * フラットネス(平坦度)に基づいて動的に分割数を決定。
22
+ * 単純な曲線は少ない分割、複雑な曲線は多い分割を行う。
23
+ *
24
+ * @param {IPoint} p0 - 始点
25
+ * @param {IPoint} p1 - 制御点1
26
+ * @param {IPoint} p2 - 制御点2
27
+ * @param {IPoint} p3 - 終点
28
+ * @param {number} flatnessThreshold - フラットネス閾値(オプション)
29
+ * @return {IQuadraticSegment[]} 二次ベジェ曲線のセグメント配列
30
+ */
31
+ export const execute = (p0, p1, p2, p3, flatnessThreshold = DEFAULT_FLATNESS_THRESHOLD) => {
32
+ const result = [];
33
+ // 再帰的に分割を行う内部関数
34
+ const subdivide = (start, ctrl1, ctrl2, end, depth) => {
35
+ // フラットネスを計算
36
+ const flatness = calculateFlatness(start, ctrl1, ctrl2, end);
37
+ // フラットネスが閾値以下、または最大深度に達した場合は近似
38
+ if (flatness <= flatnessThreshold || depth >= MAX_RECURSION_DEPTH) {
39
+ // 三次ベジェを二次ベジェに近似
40
+ // WebGL版と同じ: 分割後は単純に2つの制御点の中点を使用
41
+ const ctrl = {
42
+ "x": (ctrl1.x + ctrl2.x) * 0.5,
43
+ "y": (ctrl1.y + ctrl2.y) * 0.5
44
+ };
45
+ result.push({
46
+ "ctrl": ctrl,
47
+ "end": end
48
+ });
49
+ return;
50
+ }
51
+ // 曲線を2分割してそれぞれを再帰処理
52
+ const split = splitCubic(start, ctrl1, ctrl2, end);
53
+ subdivide(split.first[0], split.first[1], split.first[2], split.first[3], depth + 1);
54
+ subdivide(split.second[0], split.second[1], split.second[2], split.second[3], depth + 1);
55
+ };
56
+ // 分割を開始
57
+ subdivide(p0, p1, p2, p3, 0);
58
+ return result;
59
+ };
60
+ /**
61
+ * @description スケールに応じたフラットネス閾値を計算
62
+ * Calculate flatness threshold based on scale
63
+ *
64
+ * ズームレベルが高い場合は高品質な近似が必要。
65
+ * スケール = sqrt(matrix[0]^2 + matrix[1]^2) などで計算可能。
66
+ *
67
+ * @param {number} scale - 現在のスケール
68
+ * @return {number} 調整されたフラットネス閾値
69
+ */
70
+ export const calculateAdaptiveThreshold = (scale) => {
71
+ // スケールが大きい場合は閾値を小さくして高品質に
72
+ // スケールが小さい場合は閾値を大きくしてパフォーマンス優先
73
+ const baseThreshold = DEFAULT_FLATNESS_THRESHOLD;
74
+ // スケールの逆数に比例した閾値
75
+ // 最小値と最大値を設定して極端な値を防ぐ
76
+ const adjustedThreshold = baseThreshold / (scale * scale);
77
+ // 閾値の範囲を制限(0.0625〜4.0)
78
+ // 0.0625 = 0.25px squared, 4.0 = 2px squared
79
+ return Math.max(0.0625, Math.min(4.0, adjustedThreshold));
80
+ };
@@ -0,0 +1,35 @@
1
+ import type { Node } from "@next2d/texture-packer";
2
+ import type { IComplexBlendItem } from "../interface/IComplexBlendItem";
3
+ import { ShaderInstancedManager } from "../Shader/ShaderInstancedManager";
4
+ /**
5
+ * @description 複雑なブレンドモードの描画キューを取得
6
+ * @return {IComplexBlendItem[]}
7
+ */
8
+ export declare const getComplexBlendQueue: () => IComplexBlendItem[];
9
+ /**
10
+ * @description 複雑なブレンドモードの描画キューをクリア
11
+ * @return {void}
12
+ */
13
+ export declare const clearComplexBlendQueue: () => void;
14
+ /**
15
+ * @description インスタンスシェーダーマネージャーを取得
16
+ * @return {ShaderInstancedManager}
17
+ */
18
+ export declare const getInstancedShaderManager: () => ShaderInstancedManager;
19
+ /**
20
+ * @description DisplayObject単体の描画をインスタンス配列に追加
21
+ * @param {Node} node
22
+ * @param {number} x_min
23
+ * @param {number} y_min
24
+ * @param {number} x_max
25
+ * @param {number} y_max
26
+ * @param {Float32Array} color_transform
27
+ * @param {Float32Array} matrix
28
+ * @param {string} blend_mode
29
+ * @param {number} viewport_width
30
+ * @param {number} viewport_height
31
+ * @param {number} render_max_size
32
+ * @param {number} global_alpha
33
+ * @return {void}
34
+ */
35
+ export declare const addDisplayObjectToInstanceArray: (node: Node, x_min: number, y_min: number, x_max: number, y_max: number, color_transform: Float32Array, matrix: Float32Array, blend_mode: string, viewport_width: number, viewport_height: number, render_max_size: number, global_alpha: number) => void;
@@ -0,0 +1,147 @@
1
+ import { ShaderInstancedManager } from "../Shader/ShaderInstancedManager";
2
+ import { $currentBlendMode, $setCurrentBlendMode } from "../Blend";
3
+ import { $getCurrentAtlasIndex, $setCurrentAtlasIndex, $setActiveAtlasIndex } from "../AtlasManager";
4
+ import { renderQueue } from "@next2d/render-queue";
5
+ import { $context } from "../WebGPUUtil";
6
+ /**
7
+ * @description シンプルなブレンドモード(インスタンス描画可能)
8
+ */
9
+ const SIMPLE_BLEND_MODES = new Set([
10
+ "normal", "layer", "add", "screen", "alpha", "erase", "copy"
11
+ ]);
12
+ /**
13
+ * @description 複雑なブレンドモード描画キュー
14
+ */
15
+ const $complexBlendQueue = [];
16
+ /**
17
+ * @description Float32Array(8) プール(color_transform 用)
18
+ */
19
+ const $ct8Pool = [];
20
+ /**
21
+ * @description Float32Array(9) プール(matrix 用)
22
+ */
23
+ const $m9Pool = [];
24
+ /**
25
+ * @description 複雑なブレンドモードの描画キューを取得
26
+ * @return {IComplexBlendItem[]}
27
+ */
28
+ export const getComplexBlendQueue = () => {
29
+ return $complexBlendQueue;
30
+ };
31
+ /**
32
+ * @description 複雑なブレンドモードの描画キューをクリア
33
+ * @return {void}
34
+ */
35
+ export const clearComplexBlendQueue = () => {
36
+ // プールに返却してから配列をクリア
37
+ for (let i = 0; i < $complexBlendQueue.length; i++) {
38
+ const item = $complexBlendQueue[i];
39
+ $ct8Pool.push(item.color_transform);
40
+ $m9Pool.push(item.matrix);
41
+ }
42
+ $complexBlendQueue.length = 0;
43
+ };
44
+ /**
45
+ * @description インスタンスシェーダーマネージャーのキャッシュ
46
+ * @private
47
+ */
48
+ const shaderManagers = new Map();
49
+ /**
50
+ * @description インスタンスシェーダーマネージャーを取得
51
+ * @return {ShaderInstancedManager}
52
+ */
53
+ export const getInstancedShaderManager = () => {
54
+ const key = "blend_instanced";
55
+ if (!shaderManagers.has(key)) {
56
+ shaderManagers.set(key, new ShaderInstancedManager());
57
+ }
58
+ return shaderManagers.get(key);
59
+ };
60
+ /**
61
+ * @description DisplayObject単体の描画をインスタンス配列に追加
62
+ * @param {Node} node
63
+ * @param {number} x_min
64
+ * @param {number} y_min
65
+ * @param {number} x_max
66
+ * @param {number} y_max
67
+ * @param {Float32Array} color_transform
68
+ * @param {Float32Array} matrix
69
+ * @param {string} blend_mode
70
+ * @param {number} viewport_width
71
+ * @param {number} viewport_height
72
+ * @param {number} render_max_size
73
+ * @param {number} global_alpha
74
+ * @return {void}
75
+ */
76
+ export const addDisplayObjectToInstanceArray = (node, x_min, y_min, x_max, y_max, color_transform, matrix, blend_mode, viewport_width, viewport_height, render_max_size, global_alpha) => {
77
+ // WebGL版と同じ: mulColor.a には globalAlpha を使用
78
+ const ct0 = color_transform[0];
79
+ const ct1 = color_transform[1];
80
+ const ct2 = color_transform[2];
81
+ const ct3 = global_alpha; // WebGL: $context.globalAlpha
82
+ const ct4 = color_transform[4] / 255;
83
+ const ct5 = color_transform[5] / 255;
84
+ const ct6 = color_transform[6] / 255;
85
+ const ct7 = 0;
86
+ if (SIMPLE_BLEND_MODES.has(blend_mode)) {
87
+ // ブレンドモードまたはアトラスインデックスが変わった場合
88
+ if ($currentBlendMode !== blend_mode || $getCurrentAtlasIndex() !== node.index) {
89
+ // 異なるブレンドモード/アトラスになるので、切り替え前にバッチを描画
90
+ if ($context) {
91
+ $setActiveAtlasIndex($getCurrentAtlasIndex());
92
+ $context.drawArraysInstanced();
93
+ }
94
+ // 新しいブレンドモードとアトラスインデックスをセット
95
+ $setCurrentBlendMode(blend_mode);
96
+ $setCurrentAtlasIndex(node.index);
97
+ $setActiveAtlasIndex(node.index);
98
+ }
99
+ // インスタンスデータを配列に追加
100
+ const shaderManager = getInstancedShaderManager();
101
+ renderQueue.pushInstanceBuffer(
102
+ // texture rectangle (vec4) - normalized coordinates (half-pixel inset)
103
+ (node.x + 0.5) / render_max_size, (node.y + 0.5) / render_max_size, (node.w - 1.0) / render_max_size, (node.h - 1.0) / render_max_size,
104
+ // texture width, height and viewport width, height (vec4)
105
+ node.w, node.h, viewport_width, viewport_height,
106
+ // matrix tx, ty (vec2) + padding (vec2)
107
+ matrix[6], matrix[7], 0, 0,
108
+ // matrix scale0, rotate0, scale1, rotate1 (vec4)
109
+ matrix[0], matrix[1], matrix[3], matrix[4],
110
+ // mulColor (vec4)
111
+ ct0, ct1, ct2, ct3,
112
+ // addColor (vec4)
113
+ ct4, ct5, ct6, ct7);
114
+ shaderManager.count++;
115
+ }
116
+ else {
117
+ // 複雑なブレンドモード(個別描画が必要)
118
+ // 先に現在のインスタンス配列を描画
119
+ if ($context) {
120
+ $setActiveAtlasIndex($getCurrentAtlasIndex());
121
+ $context.drawArraysInstanced();
122
+ }
123
+ // キューに追加して後で処理(プールからFloat32Arrayを再利用)
124
+ const ct = $ct8Pool.length > 0 ? $ct8Pool.pop() : new Float32Array(8);
125
+ ct.set(color_transform);
126
+ const m = $m9Pool.length > 0 ? $m9Pool.pop() : new Float32Array(9);
127
+ m.set(matrix);
128
+ $complexBlendQueue.push({
129
+ node,
130
+ x_min,
131
+ y_min,
132
+ x_max,
133
+ y_max,
134
+ "color_transform": ct,
135
+ "matrix": m,
136
+ blend_mode,
137
+ viewport_width,
138
+ viewport_height,
139
+ render_max_size,
140
+ global_alpha
141
+ });
142
+ // ブレンドモードをセット
143
+ $setCurrentBlendMode(blend_mode);
144
+ $setCurrentAtlasIndex(node.index);
145
+ $setActiveAtlasIndex(node.index);
146
+ }
147
+ };
@@ -0,0 +1 @@
1
+ export declare const execute: () => boolean;
@@ -0,0 +1,8 @@
1
+ import { $setFuncCode, $funcCode } from "../../Blend";
2
+ export const execute = () => {
3
+ if ($funcCode !== 101) {
4
+ $setFuncCode(101);
5
+ return true;
6
+ }
7
+ return false;
8
+ };
@@ -0,0 +1 @@
1
+ export declare const execute: () => boolean;
@@ -0,0 +1,8 @@
1
+ import { $setFuncCode, $funcCode } from "../../Blend";
2
+ export const execute = () => {
3
+ if ($funcCode !== 401) {
4
+ $setFuncCode(401);
5
+ return true;
6
+ }
7
+ return false;
8
+ };
@@ -0,0 +1 @@
1
+ export declare const execute: () => boolean;
@@ -0,0 +1,8 @@
1
+ import { $setFuncCode, $funcCode } from "../../Blend";
2
+ export const execute = () => {
3
+ if ($funcCode !== 501) {
4
+ $setFuncCode(501);
5
+ return true;
6
+ }
7
+ return false;
8
+ };
@@ -0,0 +1,12 @@
1
+ import type { IBlendMode } from "../../interface/IBlendMode";
2
+ import type { IBlendState } from "../../Blend";
3
+ /**
4
+ * @description ブレンドモードからWebGPUブレンドステートを取得するサービス
5
+ * Service to get WebGPU blend state from blend mode
6
+ *
7
+ * @param {IBlendMode} mode
8
+ * @return {IBlendState}
9
+ * @method
10
+ * @protected
11
+ */
12
+ export declare const execute: (mode: IBlendMode) => IBlendState;
@@ -0,0 +1,13 @@
1
+ import { $getBlendState } from "../../Blend";
2
+ /**
3
+ * @description ブレンドモードからWebGPUブレンドステートを取得するサービス
4
+ * Service to get WebGPU blend state from blend mode
5
+ *
6
+ * @param {IBlendMode} mode
7
+ * @return {IBlendState}
8
+ * @method
9
+ * @protected
10
+ */
11
+ export const execute = (mode) => {
12
+ return $getBlendState(mode);
13
+ };
@@ -0,0 +1 @@
1
+ export declare const execute: () => boolean;
@@ -0,0 +1,8 @@
1
+ import { $setFuncCode, $funcCode } from "../../Blend";
2
+ export const execute = () => {
3
+ if ($funcCode !== 10) {
4
+ $setFuncCode(10);
5
+ return true;
6
+ }
7
+ return false;
8
+ };
@@ -0,0 +1 @@
1
+ export declare const execute: () => boolean;
@@ -0,0 +1,8 @@
1
+ import { $setFuncCode, $funcCode } from "../../Blend";
2
+ export const execute = () => {
3
+ if ($funcCode !== 613) {
4
+ $setFuncCode(613);
5
+ return true;
6
+ }
7
+ return false;
8
+ };
@@ -0,0 +1 @@
1
+ export declare const execute: () => boolean;