@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,213 @@
1
+ import { getComplexBlendQueue, clearComplexBlendQueue } from "../../Blend/BlendInstancedManager";
2
+ import { execute as blendApplyComplexBlendUseCase } from "../../Blend/usecase/BlendApplyComplexBlendUseCase";
3
+ import { $getAtlasAttachmentObject } from "../../AtlasManager";
4
+ // プリアロケート配列
5
+ const $uniform4 = new Float32Array(4);
6
+ const $uniform6 = new Float32Array(6);
7
+ const $uniform8 = new Float32Array(8);
8
+ const $uniform12 = new Float32Array(12);
9
+ // プリアロケート BindGroup Entry 配列
10
+ const $entries3 = [
11
+ { "binding": 0, "resource": { "buffer": null } },
12
+ { "binding": 1, "resource": null },
13
+ { "binding": 2, "resource": null }
14
+ ];
15
+ const copyTextureRegionViaRenderPass = (device, commandEncoder, srcView, dstAttachment, srcX, srcY, srcWidth, srcHeight, copyWidth, copyHeight, frameBufferManager, textureManager, pipelineManager, bufferManager) => {
16
+ const pipeline = pipelineManager.getPipeline("complex_blend_copy");
17
+ const bindGroupLayout = pipelineManager.getBindGroupLayout("texture_copy");
18
+ if (!pipeline || !bindGroupLayout) {
19
+ return;
20
+ }
21
+ $uniform4[0] = copyWidth / srcWidth;
22
+ $uniform4[1] = copyHeight / srcHeight;
23
+ $uniform4[2] = srcX / srcWidth;
24
+ $uniform4[3] = srcY / srcHeight;
25
+ const uniformBuffer = bufferManager.acquireAndWriteUniformBuffer($uniform4);
26
+ const sampler = textureManager.createSampler("complex_blend_copy_sampler", false);
27
+ $entries3[0].resource.buffer = uniformBuffer;
28
+ $entries3[1].resource = sampler;
29
+ $entries3[2].resource = srcView;
30
+ const bindGroup = device.createBindGroup({
31
+ "layout": bindGroupLayout,
32
+ "entries": $entries3
33
+ });
34
+ const renderPassDescriptor = frameBufferManager.createRenderPassDescriptor(dstAttachment.texture.view, 0, 0, 0, 0, "clear");
35
+ const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);
36
+ passEncoder.setPipeline(pipeline);
37
+ passEncoder.setBindGroup(0, bindGroup);
38
+ passEncoder.draw(6, 1, 0, 0);
39
+ passEncoder.end();
40
+ };
41
+ const drawToMainAttachment = (device, commandEncoder, srcAttachment, mainAttachment, dstX, dstY, frameBufferManager, textureManager, pipelineManager, bufferManager) => {
42
+ const useMsaa = mainAttachment.msaa && mainAttachment.msaaTexture?.view;
43
+ const pipelineName = useMsaa ? "complex_blend_output_msaa" : "complex_blend_output";
44
+ const pipeline = pipelineManager.getPipeline(pipelineName);
45
+ const bindGroupLayout = pipelineManager.getBindGroupLayout("positioned_texture");
46
+ if (!pipeline || !bindGroupLayout) {
47
+ return;
48
+ }
49
+ $uniform8[0] = dstX;
50
+ $uniform8[1] = dstY;
51
+ $uniform8[2] = srcAttachment.width;
52
+ $uniform8[3] = srcAttachment.height;
53
+ $uniform8[4] = mainAttachment.width;
54
+ $uniform8[5] = mainAttachment.height;
55
+ $uniform8[6] = 0;
56
+ $uniform8[7] = 0;
57
+ const uniformBuffer = bufferManager.acquireAndWriteUniformBuffer($uniform8);
58
+ const sampler = textureManager.createSampler("complex_blend_output_sampler", false);
59
+ $entries3[0].resource.buffer = uniformBuffer;
60
+ $entries3[1].resource = sampler;
61
+ $entries3[2].resource = srcAttachment.texture.view;
62
+ const bindGroup = device.createBindGroup({
63
+ "layout": bindGroupLayout,
64
+ "entries": $entries3
65
+ });
66
+ const colorView = useMsaa ? mainAttachment.msaaTexture.view : mainAttachment.texture.view;
67
+ const resolveTarget = useMsaa ? mainAttachment.texture.view : null;
68
+ const renderPassDescriptor = frameBufferManager.createRenderPassDescriptor(colorView, 0, 0, 0, 0, "load", resolveTarget);
69
+ const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);
70
+ passEncoder.setPipeline(pipeline);
71
+ passEncoder.setBindGroup(0, bindGroup);
72
+ passEncoder.draw(6, 1, 0, 0);
73
+ passEncoder.end();
74
+ };
75
+ export const execute = (device, commandEncoder, mainAttachment, frameBufferManager, textureManager, pipelineManager, bufferManager) => {
76
+ const queue = getComplexBlendQueue();
77
+ if (queue.length === 0) {
78
+ return;
79
+ }
80
+ if (!mainAttachment || !mainAttachment.texture) {
81
+ clearComplexBlendQueue();
82
+ return;
83
+ }
84
+ const atlasAttachment = $getAtlasAttachmentObject() || frameBufferManager.getAttachment("atlas");
85
+ if (!atlasAttachment || !atlasAttachment.texture) {
86
+ clearComplexBlendQueue();
87
+ return;
88
+ }
89
+ for (const item of queue) {
90
+ const { node, x_min, y_min, x_max, y_max, color_transform, matrix, blend_mode, global_alpha } = item;
91
+ const width = Math.ceil(Math.abs(x_max - x_min));
92
+ const height = Math.ceil(Math.abs(y_max - y_min));
93
+ if (width <= 0 || height <= 0) {
94
+ continue;
95
+ }
96
+ const dstX = Math.max(0, Math.floor(matrix[6]));
97
+ const dstY = Math.max(0, Math.floor(matrix[7]));
98
+ if (dstX >= mainAttachment.width || dstY >= mainAttachment.height) {
99
+ continue;
100
+ }
101
+ const hasScale = matrix[0] !== 1 || matrix[1] !== 0 || matrix[3] !== 0 || matrix[4] !== 1;
102
+ const blendWidth = hasScale ? width : node.w;
103
+ const blendHeight = hasScale ? height : node.h;
104
+ const clippedWidth = Math.min(blendWidth, mainAttachment.width - dstX);
105
+ const clippedHeight = Math.min(blendHeight, mainAttachment.height - dstY);
106
+ if (clippedWidth <= 0 || clippedHeight <= 0) {
107
+ continue;
108
+ }
109
+ // 1. ソーステクスチャを作成
110
+ let srcAttachment;
111
+ if (hasScale) {
112
+ srcAttachment = frameBufferManager.createTemporaryAttachment(blendWidth, blendHeight);
113
+ const scalePipeline = pipelineManager.getPipeline("complex_blend_scale");
114
+ const scaleBindGroupLayout = pipelineManager.getBindGroupLayout("texture_scale");
115
+ if (scalePipeline && scaleBindGroupLayout) {
116
+ const halfW = blendWidth / 2;
117
+ const halfH = blendHeight / 2;
118
+ const halfNodeW = node.w / 2;
119
+ const halfNodeH = node.h / 2;
120
+ $uniform6[0] = matrix[0];
121
+ $uniform6[1] = matrix[1];
122
+ $uniform6[2] = matrix[3];
123
+ $uniform6[3] = matrix[4];
124
+ $uniform6[4] = -halfNodeW * matrix[0] - halfNodeH * matrix[3] + halfW;
125
+ $uniform6[5] = -halfNodeW * matrix[1] - halfNodeH * matrix[4] + halfH;
126
+ const originalAttachment = frameBufferManager.createTemporaryAttachment(node.w, node.h);
127
+ commandEncoder.copyTextureToTexture({
128
+ "texture": atlasAttachment.texture.resource,
129
+ "origin": { "x": node.x, "y": node.y, "z": 0 }
130
+ }, {
131
+ "texture": originalAttachment.texture.resource,
132
+ "origin": { "x": 0, "y": 0, "z": 0 }
133
+ }, { "width": node.w, "height": node.h });
134
+ $uniform12[0] = $uniform6[0];
135
+ $uniform12[1] = $uniform6[1];
136
+ $uniform12[2] = $uniform6[2];
137
+ $uniform12[3] = $uniform6[3];
138
+ $uniform12[4] = $uniform6[4];
139
+ $uniform12[5] = $uniform6[5];
140
+ $uniform12[6] = node.w;
141
+ $uniform12[7] = node.h;
142
+ $uniform12[8] = blendWidth;
143
+ $uniform12[9] = blendHeight;
144
+ $uniform12[10] = 0;
145
+ $uniform12[11] = 0;
146
+ const uniformBuffer = bufferManager.acquireAndWriteUniformBuffer($uniform12, 48);
147
+ const sampler = textureManager.createSampler("scale_sampler", true);
148
+ $entries3[0].resource.buffer = uniformBuffer;
149
+ $entries3[1].resource = sampler;
150
+ $entries3[2].resource = originalAttachment.texture.view;
151
+ const bindGroup = device.createBindGroup({
152
+ "layout": scaleBindGroupLayout,
153
+ "entries": $entries3
154
+ });
155
+ const renderPassDescriptor = frameBufferManager.createRenderPassDescriptor(srcAttachment.texture.view, 0, 0, 0, 0, "clear");
156
+ const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);
157
+ passEncoder.setPipeline(scalePipeline);
158
+ passEncoder.setBindGroup(0, bindGroup);
159
+ passEncoder.draw(6, 1, 0, 0);
160
+ passEncoder.end();
161
+ frameBufferManager.releaseTemporaryAttachment(originalAttachment);
162
+ }
163
+ else {
164
+ commandEncoder.copyTextureToTexture({
165
+ "texture": atlasAttachment.texture.resource,
166
+ "origin": { "x": node.x, "y": node.y, "z": 0 }
167
+ }, {
168
+ "texture": srcAttachment.texture.resource,
169
+ "origin": { "x": 0, "y": 0, "z": 0 }
170
+ }, { "width": Math.min(node.w, blendWidth), "height": Math.min(node.h, blendHeight) });
171
+ }
172
+ }
173
+ else {
174
+ srcAttachment = frameBufferManager.createTemporaryAttachment(blendWidth, blendHeight);
175
+ commandEncoder.copyTextureToTexture({
176
+ "texture": atlasAttachment.texture.resource,
177
+ "origin": { "x": node.x, "y": node.y, "z": 0 }
178
+ }, {
179
+ "texture": srcAttachment.texture.resource,
180
+ "origin": { "x": 0, "y": 0, "z": 0 }
181
+ }, { "width": blendWidth, "height": blendHeight });
182
+ }
183
+ // 2. デスティネーションテクスチャを作成(メインからレンダーパスでコピー)
184
+ const dstAttachment = frameBufferManager.createTemporaryAttachment(blendWidth, blendHeight);
185
+ copyTextureRegionViaRenderPass(device, commandEncoder, mainAttachment.texture.view, dstAttachment, dstX, dstY, mainAttachment.width, mainAttachment.height, blendWidth, blendHeight, frameBufferManager, textureManager, pipelineManager, bufferManager);
186
+ // 3. カラートランスフォームを準備(add値は生値)
187
+ $uniform8[0] = color_transform[0];
188
+ $uniform8[1] = color_transform[1];
189
+ $uniform8[2] = color_transform[2];
190
+ $uniform8[3] = global_alpha;
191
+ $uniform8[4] = color_transform[4];
192
+ $uniform8[5] = color_transform[5];
193
+ $uniform8[6] = color_transform[6];
194
+ $uniform8[7] = 0;
195
+ // 4. 複雑なブレンドを適用
196
+ const blendedAttachment = blendApplyComplexBlendUseCase(srcAttachment, dstAttachment, blend_mode, $uniform8, {
197
+ device,
198
+ commandEncoder,
199
+ bufferManager,
200
+ frameBufferManager,
201
+ pipelineManager,
202
+ textureManager,
203
+ "frameTextures": []
204
+ });
205
+ // 5. 結果をメインアタッチメントに描画
206
+ drawToMainAttachment(device, commandEncoder, blendedAttachment, mainAttachment, dstX, dstY, frameBufferManager, textureManager, pipelineManager, bufferManager);
207
+ // 6. 一時テクスチャを解放
208
+ frameBufferManager.releaseTemporaryAttachment(srcAttachment);
209
+ frameBufferManager.releaseTemporaryAttachment(dstAttachment);
210
+ frameBufferManager.releaseTemporaryAttachment(blendedAttachment);
211
+ }
212
+ clearComplexBlendQueue();
213
+ };
@@ -0,0 +1,430 @@
1
+ import type { IAttachmentObject } from "./interface/IAttachmentObject";
2
+ import type { IBlendMode } from "./interface/IBlendMode";
3
+ import type { IBounds } from "./interface/IBounds";
4
+ import type { Node } from "@next2d/texture-packer";
5
+ /**
6
+ * @description WebGPU版、Next2Dのコンテキスト
7
+ * WebGPU version, Next2D context
8
+ *
9
+ * @class
10
+ */
11
+ export declare class Context {
12
+ readonly $stack: Float32Array[];
13
+ readonly $matrix: Float32Array;
14
+ $clearColorR: number;
15
+ $clearColorG: number;
16
+ $clearColorB: number;
17
+ $clearColorA: number;
18
+ $mainAttachmentObject: IAttachmentObject | null;
19
+ readonly $stackAttachmentObject: IAttachmentObject[];
20
+ globalAlpha: number;
21
+ globalCompositeOperation: IBlendMode;
22
+ imageSmoothingEnabled: boolean;
23
+ $fillStyle: Float32Array;
24
+ $strokeStyle: Float32Array;
25
+ readonly maskBounds: IBounds;
26
+ thickness: number;
27
+ caps: number;
28
+ joints: number;
29
+ miterLimit: number;
30
+ private device;
31
+ private canvasContext;
32
+ private preferredFormat;
33
+ private commandEncoder;
34
+ private renderPassEncoder;
35
+ private mainTexture;
36
+ private mainTextureView;
37
+ private frameStarted;
38
+ private frameTextures;
39
+ private pooledTextures;
40
+ private pooledRenderTextures;
41
+ private currentRenderTarget;
42
+ private viewportWidth;
43
+ private viewportHeight;
44
+ private pathCommand;
45
+ private bufferManager;
46
+ private textureManager;
47
+ private frameBufferManager;
48
+ private pipelineManager;
49
+ private computePipelineManager;
50
+ private attachmentManager;
51
+ newDrawState: boolean;
52
+ private readonly $containerLayerStack;
53
+ private containerLayerContentSizes;
54
+ private inMaskMode;
55
+ private nodeAreaCleared;
56
+ private currentNodeScissor;
57
+ private nodeRenderPassAtlasIndex;
58
+ private fillDynamicBindGroup;
59
+ private fillDynamicBindGroupBuffer;
60
+ private nodeClearQuadBuffer;
61
+ private useOptimizedInstancing;
62
+ private readonly $uniformData8;
63
+ private readonly $scissorRect;
64
+ private readonly $filterConfig;
65
+ constructor(device: GPUDevice, canvas_context: GPUCanvasContext, preferred_format: GPUTextureFormat, device_pixel_ratio?: number);
66
+ /**
67
+ * @description 転送範囲をリセット(フレーム開始)
68
+ */
69
+ clearTransferBounds(): void;
70
+ /**
71
+ * @description 背景色を更新
72
+ */
73
+ updateBackgroundColor(red: number, green: number, blue: number, alpha: number): void;
74
+ /**
75
+ * @description 背景色で塗りつぶす(メインアタッチメント)
76
+ */
77
+ fillBackgroundColor(): void;
78
+ /**
79
+ * @description メインcanvasのサイズを変更
80
+ */
81
+ resize(width: number, height: number, cache_clear?: boolean): void;
82
+ /**
83
+ * @description 指定範囲をクリアする
84
+ */
85
+ clearRect(_x: number, _y: number, _w: number, _h: number): void;
86
+ /**
87
+ * @description 現在の2D変換行列を保存
88
+ */
89
+ save(): void;
90
+ /**
91
+ * @description 2D変換行列を復元
92
+ */
93
+ restore(): void;
94
+ /**
95
+ * @description 2D変換行列を設定
96
+ */
97
+ setTransform(a: number, b: number, c: number, d: number, e: number, f: number): void;
98
+ /**
99
+ * @description 現在の2D変換行列に対して乗算を行います
100
+ */
101
+ transform(a: number, b: number, c: number, d: number, e: number, f: number): void;
102
+ /**
103
+ * @description コンテキストの値を初期化する
104
+ */
105
+ reset(): void;
106
+ /**
107
+ * @description パスを開始
108
+ */
109
+ beginPath(): void;
110
+ /**
111
+ * @description パスを移動
112
+ */
113
+ moveTo(x: number, y: number): void;
114
+ /**
115
+ * @description パスを線で結ぶ
116
+ */
117
+ lineTo(x: number, y: number): void;
118
+ /**
119
+ * @description 二次ベジェ曲線を描画
120
+ */
121
+ quadraticCurveTo(cx: number, cy: number, x: number, y: number): void;
122
+ /**
123
+ * @description 塗りつぶしスタイルを設定
124
+ */
125
+ fillStyle(red: number, green: number, blue: number, alpha: number): void;
126
+ /**
127
+ * @description 線のスタイルを設定
128
+ */
129
+ strokeStyle(red: number, green: number, blue: number, alpha: number): void;
130
+ /**
131
+ * @description パスを閉じる
132
+ */
133
+ closePath(): void;
134
+ /**
135
+ * @description 円弧を描画
136
+ */
137
+ arc(x: number, y: number, radius: number): void;
138
+ /**
139
+ * @description 3次ベジェ曲線を描画
140
+ */
141
+ bezierCurveTo(cx1: number, cy1: number, cx2: number, cy2: number, x: number, y: number): void;
142
+ /**
143
+ * @description 描画メソッド共通: レンダーパスの確保とノード領域クリア
144
+ * fill(), stroke(), gradientFill(), bitmapFill(), gradientStroke(), bitmapStroke() で使用
145
+ */
146
+ private ensureFillRenderPass;
147
+ /**
148
+ * @description 塗りつぶしを実行(Loop-Blinn方式対応)
149
+ */
150
+ fill(): void;
151
+ /**
152
+ * @description Dynamic Uniform BindGroupを取得(フレーム内で初回呼び出し時に作成)
153
+ */
154
+ private getOrCreateFillDynamicBindGroup;
155
+ /**
156
+ * @description fill/stroke用のcolor/matrix uniformを書き込む
157
+ * FillUniforms構造体: color(vec4) + matrix0(vec4) + matrix1(vec4) + matrix2(vec4) = 64 bytes
158
+ * @return Dynamic Uniform Buffer内のアライメント済みオフセット
159
+ */
160
+ private writeFillUniform;
161
+ /**
162
+ * @description 2パスステンシルフィル(アトラス用)
163
+ */
164
+ private fillWithStencil;
165
+ /**
166
+ * @description 2パスステンシルフィル(メインキャンバス用)
167
+ */
168
+ private fillWithStencilMain;
169
+ /**
170
+ * @description 単純なフィル(ステンシルなし、キャンバス描画用)
171
+ */
172
+ private fillSimple;
173
+ /**
174
+ * @description オフスクリーンアタッチメントにバインド
175
+ * WebGL: FrameBufferManagerBindAttachmentObjectService
176
+ */
177
+ bindAttachment(attachment: IAttachmentObject): void;
178
+ /**
179
+ * @description メインキャンバスにバインド
180
+ * WebGL: FrameBufferManagerUnBindAttachmentObjectService
181
+ */
182
+ unbindAttachment(): void;
183
+ /**
184
+ * @description アタッチメントオブジェクトを取得
185
+ * WebGL: FrameBufferManagerGetAttachmentObjectUseCase
186
+ */
187
+ getAttachmentObject(width: number, height: number, msaa?: boolean): IAttachmentObject;
188
+ /**
189
+ * @description アタッチメントオブジェクトを解放
190
+ * WebGL: FrameBufferManagerReleaseAttachmentObjectUseCase
191
+ */
192
+ releaseAttachment(attachment: IAttachmentObject): void;
193
+ /**
194
+ * @description 線の描画を実行(WebGL版と同じ仕様)
195
+ * WebGL版と同様に、ストロークを塗りとして描画する
196
+ */
197
+ stroke(): void;
198
+ /**
199
+ * @description グラデーションの塗りつぶしを実行
200
+ */
201
+ gradientFill(type: number, stops: number[], matrix: Float32Array, spread: number, interpolation: number, focal: number): void;
202
+ /**
203
+ * @description ビットマップの塗りつぶしを実行
204
+ */
205
+ bitmapFill(pixels: Uint8Array, matrix: Float32Array, width: number, height: number, repeat: boolean, smooth: boolean): void;
206
+ /**
207
+ * @description グラデーション線の描画を実行
208
+ */
209
+ gradientStroke(type: number, stops: number[], matrix: Float32Array, spread: number, interpolation: number, focal: number): void;
210
+ /**
211
+ * @description ビットマップ線の描画を実行
212
+ */
213
+ bitmapStroke(pixels: Uint8Array, matrix: Float32Array, width: number, height: number, repeat: boolean, smooth: boolean): void;
214
+ /**
215
+ * @description マスク処理を実行
216
+ * WebGL版と同様にステンシルバッファを使用したクリッピング
217
+ * メインアタッチメントとアトラス両方でマスク処理をサポート
218
+ */
219
+ clip(): void;
220
+ /**
221
+ * @description アタッチメントオブジェクトをバインド
222
+ */
223
+ bind(attachment_object: IAttachmentObject): void;
224
+ /**
225
+ * @description 現在のアタッチメントオブジェクトを取得
226
+ * アトラスがバインドされていない場合はメインアタッチメントを返す
227
+ * When no atlas is bound, returns the main attachment
228
+ */
229
+ get currentAttachmentObject(): IAttachmentObject | null;
230
+ /**
231
+ * @description アトラス専用のアタッチメントオブジェクトを取得
232
+ */
233
+ get atlasAttachmentObject(): IAttachmentObject | null;
234
+ /**
235
+ * @description グリッドの描画データをセット
236
+ */
237
+ useGrid(grid_data: Float32Array | null): void;
238
+ /**
239
+ * @description 指定のノード範囲で描画を開始(アトラステクスチャへの描画)
240
+ * 2パスステンシルフィル対応: ステンシルバッファ付きレンダーパスを使用
241
+ */
242
+ beginNodeRendering(node: Node): void;
243
+ /**
244
+ * @description ノード領域がまだクリアされていない場合にクリアを実行
245
+ * 最初の描画操作(fill, gradientFill, gradientStroke等)で呼び出される
246
+ */
247
+ private ensureNodeAreaCleared;
248
+ /**
249
+ * @description ノード領域をクリア(透明色 + ステンシル=0)
250
+ * WebGL版の gl.clear(COLOR_BUFFER_BIT | STENCIL_BUFFER_BIT) と同等
251
+ */
252
+ private clearNodeArea;
253
+ /**
254
+ * @description 指定のノード範囲で描画を終了
255
+ * レンダーパスは終了しない(次のbeginNodeRenderingで再利用するため)
256
+ */
257
+ endNodeRendering(): void;
258
+ /**
259
+ * @description 塗りの描画を実行
260
+ */
261
+ drawFill(): void;
262
+ /**
263
+ * @description インスタンスを描画
264
+ */
265
+ drawDisplayObject(node: Node, x_min: number, y_min: number, x_max: number, y_max: number, color_transform: Float32Array): void;
266
+ /**
267
+ * @description インスタンス配列を描画
268
+ * Draw instanced arrays
269
+ *
270
+ * useOptimizedInstancingがtrueの場合、Storage BufferとIndirect Drawingを使用。
271
+ * - Storage Buffer: メモリアロケーション削減、CPU負荷15-25%軽減
272
+ * - Indirect Drawing: CPU-GPUオーバーヘッド5-15%削減
273
+ *
274
+ */
275
+ drawArraysInstanced(): void;
276
+ /**
277
+ * @description 最適化インスタンス描画の有効/無効を設定
278
+ * Enable or disable optimized instancing
279
+ *
280
+ */
281
+ setOptimizedInstancing(enabled: boolean): void;
282
+ /**
283
+ * @description 最適化インスタンス描画が有効かどうか
284
+ * Whether optimized instancing is enabled
285
+ *
286
+ */
287
+ isOptimizedInstancingEnabled(): boolean;
288
+ /**
289
+ * @description 複雑なブレンドモードのキューを処理
290
+ */
291
+ private processComplexBlendQueue;
292
+ /**
293
+ * @description インスタンス配列をクリア
294
+ */
295
+ clearArraysInstanced(): void;
296
+ /**
297
+ * @description ピクセルバッファをNodeの指定箇所に転送
298
+ * WebGPUでは、Shapeのシェーダーが-ndc.yでY軸反転しているため、
299
+ * Bitmapも同じ方向になるよう画像を上下反転して書き込む
300
+ */
301
+ drawPixels(node: Node, pixels: Uint8Array): void;
302
+ /**
303
+ * @description 一時テクスチャ経由でピクセルデータをMSAAテクスチャに描画
304
+ */
305
+ private drawPixelsToMsaa;
306
+ /**
307
+ * @description OffscreenCanvasをNodeの指定箇所に転送
308
+ * WebGPUでは、Shapeのシェーダーが-ndc.yでY軸反転しているため、
309
+ * Bitmapも同じ方向になるよう画像を上下反転して書き込む
310
+ */
311
+ drawElement(node: Node, element: OffscreenCanvas | ImageBitmap, flipY?: boolean): void;
312
+ /**
313
+ * @description 一時テクスチャ経由でMSAAテクスチャに直接描画
314
+ */
315
+ private drawElementToMsaa;
316
+ /**
317
+ * @description 一時テクスチャ経由で通常テクスチャに描画(非MSAA版)
318
+ */
319
+ private drawElementToTexture;
320
+ /**
321
+ * @description フィルターを適用
322
+ */
323
+ applyFilter(node: Node, _unique_key: string, _updated: boolean, width: number, height: number, _is_bitmap: boolean, matrix: Float32Array, color_transform: Float32Array, blend_mode: IBlendMode, bounds: Float32Array, params: Float32Array): void;
324
+ /**
325
+ * @description コンテナのフィルター/ブレンド用のレイヤーを開始
326
+ * Begin a container layer for filter/blend processing
327
+ *
328
+ */
329
+ containerBeginLayer(width: number, height: number): void;
330
+ /**
331
+ * @description コンテナのフィルター/ブレンド用レイヤーを終了し、結果を元のメインに合成
332
+ * End the container layer and composite the result back to the original main
333
+ *
334
+ * @param {IBlendMode} blend_mode
335
+ * @param {Float32Array} matrix
336
+ * @param {Float32Array | null} color_transform
337
+ * @param {boolean} use_filter
338
+ * @param {Float32Array | null} filter_bounds
339
+ * @param {Float32Array | null} filter_params
340
+ * @param {string} unique_key
341
+ * @param {string} filter_key
342
+ */
343
+ containerEndLayer(blend_mode: IBlendMode, matrix: Float32Array, color_transform: Float32Array | null, use_filter: boolean, filter_bounds: Float32Array | null, filter_params: Float32Array | null, unique_key: string, filter_key: string): void;
344
+ /**
345
+ * @description キャッシュされたコンテナフィルターテクスチャをメインに描画
346
+ * Draw a cached container filter texture to the main attachment
347
+ *
348
+ * @param {IBlendMode} blend_mode
349
+ * @param {Float32Array} matrix
350
+ * @param {Float32Array} color_transform
351
+ * @param {Float32Array} filter_bounds
352
+ * @param {string} unique_key
353
+ * @param {string} filter_key
354
+ */
355
+ containerDrawCachedFilter(blend_mode: IBlendMode, matrix: Float32Array, color_transform: Float32Array, filter_bounds: Float32Array, unique_key: string, filter_key: string): void;
356
+ /**
357
+ * @description メインテクスチャを確保(フレーム開始時に一度だけgetCurrentTexture呼び出し)
358
+ */
359
+ private ensureMainTexture;
360
+ /**
361
+ * @description 現在の描画ターゲットのテクスチャビューを取得
362
+ */
363
+ private getCurrentTextureView;
364
+ /**
365
+ * @description コマンドエンコーダーが存在することを保証
366
+ */
367
+ private ensureCommandEncoder;
368
+ /**
369
+ * @description フレーム開始(レンダリング開始前に呼ぶ)
370
+ */
371
+ beginFrame(): void;
372
+ /**
373
+ * @description フレームごとのプール管理テクスチャを追加(endFrame()でプールに返却)
374
+ */
375
+ addFrameTexture(texture: GPUTexture): void;
376
+ /**
377
+ * @description フレーム終了とコマンド送信(レンダリング完了後に呼ぶ)
378
+ */
379
+ endFrame(): void;
380
+ /**
381
+ * @description コマンドを送信(後方互換性のため残す)
382
+ */
383
+ submit(): void;
384
+ /**
385
+ * @description ノードを作成
386
+ * アトラスがいっぱいの場合は新しいアトラスを作成して再試行
387
+ */
388
+ createNode(width: number, height: number): Node;
389
+ /**
390
+ * @description ノードを削除
391
+ */
392
+ removeNode(node: Node): void;
393
+ /**
394
+ * @description フレームバッファの描画情報をキャンバスに転送
395
+ * スワップチェーンはCopyDstをサポートしないため、レンダーパスでブリット
396
+ */
397
+ transferMainCanvas(): void;
398
+ /**
399
+ * @description ImageBitmapを生成
400
+ */
401
+ createImageBitmap(width: number, height: number): Promise<ImageBitmap>;
402
+ /**
403
+ * @description マスク描画の開始準備
404
+ * Prepare to start drawing the mask
405
+ *
406
+ */
407
+ beginMask(): void;
408
+ /**
409
+ * @description マスクの描画範囲を設定
410
+ * Set the mask drawing bounds
411
+ *
412
+ * @param {number} x_min
413
+ * @param {number} y_min
414
+ * @param {number} x_max
415
+ * @param {number} y_max
416
+ */
417
+ setMaskBounds(x_min: number, y_min: number, x_max: number, y_max: number): void;
418
+ /**
419
+ * @description マスクの描画を終了
420
+ * End mask drawing
421
+ *
422
+ */
423
+ endMask(): void;
424
+ /**
425
+ * @description マスクの終了処理
426
+ * Mask end processing
427
+ *
428
+ */
429
+ leaveMask(): void;
430
+ }