@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,61 @@
1
+ import type { IAttachmentObject } from "../interface/IAttachmentObject";
2
+ /**
3
+ * @description GPUDeviceを設定
4
+ * Set GPUDevice
5
+ *
6
+ * @param {GPUDevice} device
7
+ * @return {void}
8
+ * @method
9
+ * @protected
10
+ */
11
+ export declare const $setGradientLUTDevice: (device: GPUDevice) => void;
12
+ /**
13
+ * @description 指定解像度のAttachmentObjectを返却
14
+ * Returns AttachmentObject with specified resolution
15
+ *
16
+ * @param {number} resolution
17
+ * @return {IAttachmentObject}
18
+ * @method
19
+ * @protected
20
+ */
21
+ export declare const $getGradientAttachmentObjectWithResolution: (resolution: number) => IAttachmentObject;
22
+ /**
23
+ * @description デフォルトの256解像度のAttachmentObjectを返却
24
+ * Returns default 256 resolution AttachmentObject
25
+ *
26
+ * @return {IAttachmentObject}
27
+ * @method
28
+ * @protected
29
+ */
30
+ export declare const $getGradientAttachmentObject: () => IAttachmentObject;
31
+ /**
32
+ * @description 全ての共有アタッチメントを破棄してクリア
33
+ * Destroy and clear all shared attachments
34
+ *
35
+ * @return {void}
36
+ * @method
37
+ * @protected
38
+ */
39
+ export declare const $clearGradientAttachmentObjects: () => void;
40
+ interface IGradientLUTEntry {
41
+ texture: GPUTexture;
42
+ view: GPUTextureView;
43
+ lastUsedFrame: number;
44
+ }
45
+ /**
46
+ * @description キャッシュからLUTテクスチャを取得。ヒットしなければnullを返す。
47
+ */
48
+ export declare const $getLUTFromCache: (stops: number[], spread: number, interpolation: number) => IGradientLUTEntry | null;
49
+ /**
50
+ * @description LUTテクスチャをキャッシュに格納
51
+ */
52
+ export declare const $putLUTToCache: (stops: number[], spread: number, interpolation: number, texture: GPUTexture, view: GPUTextureView) => void;
53
+ /**
54
+ * @description フレーム終了時にTTL超過エントリを解放
55
+ */
56
+ export declare const $cleanupLUTCache: () => void;
57
+ /**
58
+ * @description 全LUTキャッシュを破棄
59
+ */
60
+ export declare const $clearLUTCache: () => void;
61
+ export {};
@@ -0,0 +1,153 @@
1
+ import { $releaseFillTexture } from "../FillTexturePool";
2
+ /**
3
+ * @description 解像度別のAttachmentObjectキャッシュ
4
+ * Attachment object cache by resolution
5
+ * 注意: グラデーションLUTは共有テクスチャに描画されるため、
6
+ * キャッシュは使用しません。各フレームで再描画が必要です。
7
+ * Note: Gradient LUT is drawn to a shared texture, so caching
8
+ * is not used. Re-drawing is required each frame.
9
+ *
10
+ * @type {Map<number, IAttachmentObject>}
11
+ * @private
12
+ */
13
+ const $gradientAttachmentObjects = new Map();
14
+ /**
15
+ * @description GPUDeviceの参照
16
+ * @private
17
+ */
18
+ let $device = null;
19
+ /**
20
+ * @description GPUDeviceを設定
21
+ * Set GPUDevice
22
+ *
23
+ * @param {GPUDevice} device
24
+ * @return {void}
25
+ * @method
26
+ * @protected
27
+ */
28
+ export const $setGradientLUTDevice = (device) => {
29
+ $device = device;
30
+ };
31
+ /**
32
+ * @description 指定解像度のAttachmentObjectを返却
33
+ * Returns AttachmentObject with specified resolution
34
+ *
35
+ * @param {number} resolution
36
+ * @return {IAttachmentObject}
37
+ * @method
38
+ * @protected
39
+ */
40
+ export const $getGradientAttachmentObjectWithResolution = (resolution) => {
41
+ if (!$gradientAttachmentObjects.has(resolution) && $device) {
42
+ // 1xN テクスチャを作成
43
+ const texture = $device.createTexture({
44
+ "size": { "width": resolution, "height": 1 },
45
+ "format": "rgba8unorm",
46
+ "usage": GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT
47
+ });
48
+ const attachment = {
49
+ "id": resolution,
50
+ "width": resolution,
51
+ "height": 1,
52
+ "clipLevel": 0,
53
+ "msaa": false,
54
+ "mask": false,
55
+ "color": null,
56
+ "texture": {
57
+ "id": resolution,
58
+ "resource": texture,
59
+ "view": texture.createView(),
60
+ "width": resolution,
61
+ "height": 1,
62
+ "area": resolution,
63
+ "smooth": true
64
+ },
65
+ "stencil": null,
66
+ "msaaTexture": null,
67
+ "msaaStencil": null
68
+ };
69
+ $gradientAttachmentObjects.set(resolution, attachment);
70
+ }
71
+ return $gradientAttachmentObjects.get(resolution);
72
+ };
73
+ /**
74
+ * @description デフォルトの256解像度のAttachmentObjectを返却
75
+ * Returns default 256 resolution AttachmentObject
76
+ *
77
+ * @return {IAttachmentObject}
78
+ * @method
79
+ * @protected
80
+ */
81
+ export const $getGradientAttachmentObject = () => {
82
+ return $getGradientAttachmentObjectWithResolution(256);
83
+ };
84
+ /**
85
+ * @description 全ての共有アタッチメントを破棄してクリア
86
+ * Destroy and clear all shared attachments
87
+ *
88
+ * @return {void}
89
+ * @method
90
+ * @protected
91
+ */
92
+ export const $clearGradientAttachmentObjects = () => {
93
+ for (const attachment of $gradientAttachmentObjects.values()) {
94
+ if (attachment.texture?.resource) {
95
+ attachment.texture.resource.destroy();
96
+ }
97
+ }
98
+ $gradientAttachmentObjects.clear();
99
+ };
100
+ const $lutCache = new Map();
101
+ let $currentFrame = 0;
102
+ const $LUT_TTL = 60;
103
+ /**
104
+ * @description グラデーションLUTのキャッシュキーを生成
105
+ */
106
+ const $buildLUTKey = (stops, spread, interpolation) => {
107
+ return `${spread}_${interpolation}_${stops.join(",")}`;
108
+ };
109
+ /**
110
+ * @description キャッシュからLUTテクスチャを取得。ヒットしなければnullを返す。
111
+ */
112
+ export const $getLUTFromCache = (stops, spread, interpolation) => {
113
+ const key = $buildLUTKey(stops, spread, interpolation);
114
+ const entry = $lutCache.get(key);
115
+ if (entry) {
116
+ entry.lastUsedFrame = $currentFrame;
117
+ return entry;
118
+ }
119
+ return null;
120
+ };
121
+ /**
122
+ * @description LUTテクスチャをキャッシュに格納
123
+ */
124
+ export const $putLUTToCache = (stops, spread, interpolation, texture, view) => {
125
+ const key = $buildLUTKey(stops, spread, interpolation);
126
+ $lutCache.set(key, {
127
+ texture,
128
+ view,
129
+ "lastUsedFrame": $currentFrame
130
+ });
131
+ };
132
+ /**
133
+ * @description フレーム終了時にTTL超過エントリを解放
134
+ */
135
+ export const $cleanupLUTCache = () => {
136
+ $currentFrame++;
137
+ for (const [key, entry] of $lutCache) {
138
+ if ($currentFrame - entry.lastUsedFrame > $LUT_TTL) {
139
+ $releaseFillTexture(entry.texture);
140
+ $lutCache.delete(key);
141
+ }
142
+ }
143
+ };
144
+ /**
145
+ * @description 全LUTキャッシュを破棄
146
+ */
147
+ export const $clearLUTCache = () => {
148
+ for (const entry of $lutCache.values()) {
149
+ $releaseFillTexture(entry.texture);
150
+ }
151
+ $lutCache.clear();
152
+ $currentFrame = 0;
153
+ };
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @description グラデーションLUTテクスチャ生成
3
+ * Gradient LUT texture generator
4
+ */
5
+ /**
6
+ * @description ストップ数に応じた適応解像度を取得
7
+ * @param {number} stopsLength
8
+ * @return {number}
9
+ */
10
+ export declare const getAdaptiveResolution: (stopsLength: number) => number;
11
+ /**
12
+ * @description グラデーションLUTテクスチャデータを生成
13
+ * stops配列: [offset, R, G, B, A, offset, R, G, B, A, ...]
14
+ * 注意: R, G, B, A は 0-255 範囲
15
+ * LUTは0-1の範囲の色を生成し、spread処理はシェーダー側で行う
16
+ * @param {number[]} stops - グラデーションストップ配列
17
+ * @param {number} _spread - スプレッドメソッド(未使用、シェーダー側で処理)
18
+ * @param {number} interpolation - 補間方法 (0: linearRGB, 1: RGB) ※WebGL互換
19
+ * @return {Uint8Array}
20
+ */
21
+ export declare const generateGradientLUT: (stops: number[], _spread: number, interpolation: number) => Uint8Array;
22
+ /**
23
+ * @description フィルター用グラデーションLUTテクスチャデータを生成
24
+ * ratios, colors, alphas配列から1D LUTを生成
25
+ * @param {Float32Array} ratios - 比率配列 (0-255)
26
+ * @param {Float32Array} colors - 色配列 (32bit整数)
27
+ * @param {Float32Array} alphas - アルファ配列 (0-1)
28
+ * @return {Uint8Array}
29
+ */
30
+ export declare const generateFilterGradientLUT: (ratios: Float32Array, colors: Float32Array, alphas: Float32Array) => Uint8Array;
@@ -0,0 +1,202 @@
1
+ /**
2
+ * @description グラデーションLUTテクスチャ生成
3
+ * Gradient LUT texture generator
4
+ */
5
+ /**
6
+ * @description ストップ数に応じた適応解像度を取得
7
+ * @param {number} stopsLength
8
+ * @return {number}
9
+ */
10
+ export const getAdaptiveResolution = (stopsLength) => {
11
+ if (stopsLength <= 4) {
12
+ return 256;
13
+ }
14
+ if (stopsLength <= 8) {
15
+ return 512;
16
+ }
17
+ return 1024;
18
+ };
19
+ /**
20
+ * @description グラデーションLUTテクスチャデータを生成
21
+ * stops配列: [offset, R, G, B, A, offset, R, G, B, A, ...]
22
+ * 注意: R, G, B, A は 0-255 範囲
23
+ * LUTは0-1の範囲の色を生成し、spread処理はシェーダー側で行う
24
+ * @param {number[]} stops - グラデーションストップ配列
25
+ * @param {number} _spread - スプレッドメソッド(未使用、シェーダー側で処理)
26
+ * @param {number} interpolation - 補間方法 (0: linearRGB, 1: RGB) ※WebGL互換
27
+ * @return {Uint8Array}
28
+ */
29
+ export const generateGradientLUT = (stops, _spread, interpolation) => {
30
+ // ストップ数を計算(5要素ずつ: offset, R, G, B, A)
31
+ const stopsLength = stops.length / 5;
32
+ const resolution = getAdaptiveResolution(stopsLength);
33
+ // RGBA形式のLUTデータを作成
34
+ const lutData = new Uint8Array(resolution * 4);
35
+ // 各ピクセルの色を補間
36
+ // spread処理はシェーダー側で行うため、LUTは単純に0-1の範囲を生成
37
+ for (let i = 0; i < resolution; i++) {
38
+ const t = i / (resolution - 1);
39
+ // 色を補間(色は0-255範囲で返される)
40
+ const color = interpolateColor(stops, t, interpolation);
41
+ // WebGL版と同じ: プリマルチプライドアルファは適用しない
42
+ // LUTにはストレート(非プリマルチプライド)の色を格納
43
+ // プリマルチプライドはシェーダー側でサンプリング後に行う
44
+ // これにより、線形補間時に正しい色が得られる
45
+ // LUTデータに書き込み(非プリマルチプライド)
46
+ const offset = i * 4;
47
+ lutData[offset + 0] = Math.round(Math.max(0, Math.min(255, color.r)));
48
+ lutData[offset + 1] = Math.round(Math.max(0, Math.min(255, color.g)));
49
+ lutData[offset + 2] = Math.round(Math.max(0, Math.min(255, color.b)));
50
+ lutData[offset + 3] = Math.round(Math.max(0, Math.min(255, color.a)));
51
+ }
52
+ return lutData;
53
+ };
54
+ /**
55
+ * @description 色を補間
56
+ * 色は0-255範囲で入力され、0-255範囲で出力される
57
+ * @param {number[]} stops
58
+ * @param {number} t
59
+ * @param {number} interpolation - 0: linearRGB, 1: RGB(WebGL互換)
60
+ * @return {{ r: number, g: number, b: number, a: number }}
61
+ */
62
+ const interpolateColor = (stops, t, interpolation) => {
63
+ const stopsLength = stops.length / 5;
64
+ // 最初と最後のストップを見つける
65
+ let startIdx = 0;
66
+ let endIdx = 0;
67
+ for (let i = 0; i < stopsLength; i++) {
68
+ // offset は既に 0-1 範囲
69
+ const offset = stops[i * 5];
70
+ if (offset <= t) {
71
+ startIdx = i;
72
+ }
73
+ if (offset >= t && endIdx === 0) {
74
+ endIdx = i;
75
+ break;
76
+ }
77
+ }
78
+ // 最後のストップを超えている場合
79
+ if (endIdx === 0) {
80
+ endIdx = stopsLength - 1;
81
+ }
82
+ // 同じストップの場合(色は0-255範囲)
83
+ if (startIdx === endIdx) {
84
+ const idx = startIdx * 5;
85
+ return {
86
+ "r": stops[idx + 1],
87
+ "g": stops[idx + 2],
88
+ "b": stops[idx + 3],
89
+ "a": stops[idx + 4]
90
+ };
91
+ }
92
+ // 補間係数を計算(offset は既に 0-1 範囲)
93
+ const startOffset = stops[startIdx * 5];
94
+ const endOffset = stops[endIdx * 5];
95
+ const localT = (t - startOffset) / (endOffset - startOffset);
96
+ // 色を取得(0-255範囲)
97
+ const startR = stops[startIdx * 5 + 1];
98
+ const startG = stops[startIdx * 5 + 2];
99
+ const startB = stops[startIdx * 5 + 3];
100
+ const startA = stops[startIdx * 5 + 4];
101
+ const endR = stops[endIdx * 5 + 1];
102
+ const endG = stops[endIdx * 5 + 2];
103
+ const endB = stops[endIdx * 5 + 3];
104
+ const endA = stops[endIdx * 5 + 4];
105
+ // 補間(WebGL互換: interpolation === 0 がlinearRGB)
106
+ if (interpolation === 0) {
107
+ // linearRGB補間(ガンマ補正)
108
+ // 0-255 → 0-1に正規化してからリニア変換
109
+ return {
110
+ "r": linearToSRGB(lerp(sRGBToLinear(startR / 255), sRGBToLinear(endR / 255), localT)) * 255,
111
+ "g": linearToSRGB(lerp(sRGBToLinear(startG / 255), sRGBToLinear(endG / 255), localT)) * 255,
112
+ "b": linearToSRGB(lerp(sRGBToLinear(startB / 255), sRGBToLinear(endB / 255), localT)) * 255,
113
+ "a": lerp(startA, endA, localT)
114
+ };
115
+ }
116
+ // RGB補間(リニア、デフォルト)- 0-255範囲でそのまま補間
117
+ return {
118
+ "r": lerp(startR, endR, localT),
119
+ "g": lerp(startG, endG, localT),
120
+ "b": lerp(startB, endB, localT),
121
+ "a": lerp(startA, endA, localT)
122
+ };
123
+ };
124
+ /**
125
+ * @description 線形補間
126
+ */
127
+ const lerp = (a, b, t) => {
128
+ return a + (b - a) * t;
129
+ };
130
+ /**
131
+ * @description sRGBからリニアへ変換(入力: 0-1正規化値)
132
+ * WebGL版と同じガンマ値 2.23333333 を使用
133
+ */
134
+ const sRGBToLinear = (value) => {
135
+ // WebGL版と同じ簡易ガンマ補正
136
+ return Math.pow(value, 2.23333333);
137
+ };
138
+ /**
139
+ * @description リニアからsRGBへ変換(出力: 0-1正規化値)
140
+ * WebGL版と同じガンマ値 0.45454545 (= 1/2.2) を使用
141
+ */
142
+ const linearToSRGB = (value) => {
143
+ // WebGL版と同じ簡易ガンマ補正
144
+ return Math.pow(value, 0.45454545);
145
+ };
146
+ /**
147
+ * @description フィルター用グラデーションLUTテクスチャデータを生成
148
+ * ratios, colors, alphas配列から1D LUTを生成
149
+ * @param {Float32Array} ratios - 比率配列 (0-255)
150
+ * @param {Float32Array} colors - 色配列 (32bit整数)
151
+ * @param {Float32Array} alphas - アルファ配列 (0-1)
152
+ * @return {Uint8Array}
153
+ */
154
+ export const generateFilterGradientLUT = (ratios, colors, alphas) => {
155
+ const resolution = 256;
156
+ const lutData = new Uint8Array(resolution * 4);
157
+ const stopsLength = ratios.length;
158
+ // ストップデータを構築
159
+ const stops = [];
160
+ for (let i = 0; i < stopsLength; i++) {
161
+ const color = colors[i];
162
+ stops.push({
163
+ "offset": ratios[i] / 255,
164
+ "r": (color >> 16 & 0xFF) / 255,
165
+ "g": (color >> 8 & 0xFF) / 255,
166
+ "b": (color & 0xFF) / 255,
167
+ "a": alphas[i]
168
+ });
169
+ }
170
+ // 各ピクセルの色を補間
171
+ for (let i = 0; i < resolution; i++) {
172
+ const t = i / (resolution - 1);
173
+ // ストップを見つける
174
+ let startIdx = 0;
175
+ let endIdx = stopsLength - 1;
176
+ for (let j = 0; j < stopsLength - 1; j++) {
177
+ if (stops[j].offset <= t && stops[j + 1].offset >= t) {
178
+ startIdx = j;
179
+ endIdx = j + 1;
180
+ break;
181
+ }
182
+ }
183
+ // 補間
184
+ const start = stops[startIdx];
185
+ const end = stops[endIdx];
186
+ let localT = 0;
187
+ if (end.offset !== start.offset) {
188
+ localT = (t - start.offset) / (end.offset - start.offset);
189
+ }
190
+ const r = lerp(start.r, end.r, localT);
191
+ const g = lerp(start.g, end.g, localT);
192
+ const b = lerp(start.b, end.b, localT);
193
+ const a = lerp(start.a, end.a, localT);
194
+ // プリマルチプライドアルファで書き込み
195
+ const offset = i * 4;
196
+ lutData[offset + 0] = Math.round(r * a * 255);
197
+ lutData[offset + 1] = Math.round(g * a * 255);
198
+ lutData[offset + 2] = Math.round(b * a * 255);
199
+ lutData[offset + 3] = Math.round(a * 255);
200
+ }
201
+ return lutData;
202
+ };
package/src/Grid.d.ts ADDED
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @description グリッドデータマップ(9-slice用)
3
+ * Grid data map for 9-slice transformation
4
+ * @type {Map<number, Float32Array | null>}
5
+ */
6
+ export declare const $gridDataMap: Map<number, Float32Array | null>;
7
+ /**
8
+ * @description 現在のフィルバッファインデックス
9
+ * Current fill buffer index
10
+ * @type {number}
11
+ */
12
+ export declare let $fillBufferIndex: number;
13
+ /**
14
+ * @description グリッド情報を初期化
15
+ * Initialize grid information
16
+ * @return {void}
17
+ */
18
+ export declare const $terminateGrid: () => void;
package/src/Grid.js ADDED
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @description グリッドデータマップ(9-slice用)
3
+ * Grid data map for 9-slice transformation
4
+ * @type {Map<number, Float32Array | null>}
5
+ */
6
+ export const $gridDataMap = new Map();
7
+ /**
8
+ * @description 現在のフィルバッファインデックス
9
+ * Current fill buffer index
10
+ * @type {number}
11
+ */
12
+ export let $fillBufferIndex = 0;
13
+ /**
14
+ * @description グリッド情報を初期化
15
+ * Initialize grid information
16
+ * @return {void}
17
+ */
18
+ export const $terminateGrid = () => {
19
+ $gridDataMap.clear();
20
+ $fillBufferIndex = 0;
21
+ };
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @description マスク描画の開始準備
3
+ * Prepare to start drawing the mask
4
+ *
5
+ * @return {void}
6
+ * @method
7
+ * @protected
8
+ */
9
+ export declare const execute: () => void;
@@ -0,0 +1,22 @@
1
+ import { $isMaskDrawing, $setMaskDrawing, $clipLevels } from "../../Mask";
2
+ import { $context } from "../../WebGPUUtil";
3
+ /**
4
+ * @description マスク描画の開始準備
5
+ * Prepare to start drawing the mask
6
+ *
7
+ * @return {void}
8
+ * @method
9
+ * @protected
10
+ */
11
+ export const execute = () => {
12
+ const currentAttachmentObject = $context.currentAttachmentObject;
13
+ if (!currentAttachmentObject) {
14
+ return;
15
+ }
16
+ currentAttachmentObject.mask = true;
17
+ currentAttachmentObject.clipLevel++;
18
+ $clipLevels.set(currentAttachmentObject.clipLevel, currentAttachmentObject.clipLevel);
19
+ if (!$isMaskDrawing()) {
20
+ $setMaskDrawing(true);
21
+ }
22
+ };
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @description マスクの描画を終了
3
+ * End mask drawing
4
+ *
5
+ * WebGPU版: ビット単位のマスキングを使用(WebGL版と同様)
6
+ * 各レベルに対応するビットが設定されたマスク値を計算し、
7
+ * EQUALテストで累積マスク値と一致する領域のみ描画
8
+ *
9
+ * WebGL版: stencilFunc(EQUAL, mask & 0xff, mask)
10
+ *
11
+ * @return {void}
12
+ * @method
13
+ * @protected
14
+ */
15
+ export declare const execute: () => void;
@@ -0,0 +1,36 @@
1
+ import { $context } from "../../WebGPUUtil";
2
+ import { $setMaskTestEnabled, $setMaskStencilReference, $setMaskDrawing } from "../../Mask";
3
+ /**
4
+ * @description マスクの描画を終了
5
+ * End mask drawing
6
+ *
7
+ * WebGPU版: ビット単位のマスキングを使用(WebGL版と同様)
8
+ * 各レベルに対応するビットが設定されたマスク値を計算し、
9
+ * EQUALテストで累積マスク値と一致する領域のみ描画
10
+ *
11
+ * WebGL版: stencilFunc(EQUAL, mask & 0xff, mask)
12
+ *
13
+ * @return {void}
14
+ * @method
15
+ * @protected
16
+ */
17
+ export const execute = () => {
18
+ const currentAttachmentObject = $context.currentAttachmentObject;
19
+ if (!currentAttachmentObject) {
20
+ return;
21
+ }
22
+ const clipLevel = currentAttachmentObject.clipLevel;
23
+ // 累積マスク値を計算(WebGL版と同じアルゴリズム)
24
+ // 簡略化: mask = (1 << clipLevel) - 1
25
+ // level 1: mask = 1 (0x01)
26
+ // level 2: mask = 3 (0x03)
27
+ // level 3: mask = 7 (0x07)
28
+ // ...
29
+ const mask = (1 << clipLevel) - 1;
30
+ // マスクテストを有効化
31
+ // EQUALテストで、累積マスク値と一致するピクセルのみ描画を許可
32
+ $setMaskTestEnabled(true);
33
+ $setMaskStencilReference(mask & 0xFF); // EQUAL テスト用の参照値
34
+ // マスク描画フェーズは終了
35
+ $setMaskDrawing(false);
36
+ };
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @description マスク範囲の設定
3
+ * Set mask bounds
4
+ *
5
+ * @param {number} x_min
6
+ * @param {number} y_min
7
+ * @param {number} x_max
8
+ * @param {number} y_max
9
+ * @return {void}
10
+ * @method
11
+ * @protected
12
+ */
13
+ export declare const execute: (x_min: number, y_min: number, x_max: number, y_max: number) => void;
@@ -0,0 +1,36 @@
1
+ import { $clipBounds } from "../../Mask";
2
+ import { $context, $getFloat32Array4 } from "../../WebGPUUtil";
3
+ /**
4
+ * @description マスク範囲の設定
5
+ * Set mask bounds
6
+ *
7
+ * @param {number} x_min
8
+ * @param {number} y_min
9
+ * @param {number} x_max
10
+ * @param {number} y_max
11
+ * @return {void}
12
+ * @method
13
+ * @protected
14
+ */
15
+ export const execute = (x_min, y_min, x_max, y_max) => {
16
+ const currentAttachmentObject = $context.currentAttachmentObject;
17
+ if (!currentAttachmentObject) {
18
+ return;
19
+ }
20
+ const clipLevel = currentAttachmentObject.clipLevel;
21
+ let bounds = $clipBounds.get(clipLevel);
22
+ if (bounds) {
23
+ bounds[0] = Math.min(bounds[0], x_min);
24
+ bounds[1] = Math.min(bounds[1], y_min);
25
+ bounds[2] = Math.max(bounds[2], x_max);
26
+ bounds[3] = Math.max(bounds[3], y_max);
27
+ }
28
+ else {
29
+ bounds = $getFloat32Array4();
30
+ bounds[0] = x_min;
31
+ bounds[1] = y_min;
32
+ bounds[2] = x_max;
33
+ bounds[3] = y_max;
34
+ $clipBounds.set(clipLevel, bounds);
35
+ }
36
+ };
@@ -0,0 +1,4 @@
1
+ import type { BufferManager } from "../../BufferManager";
2
+ import type { PipelineManager } from "../../Shader/PipelineManager";
3
+ import type { IAttachmentObject } from "../../interface/IAttachmentObject";
4
+ export declare const execute: (device: GPUDevice, renderPassEncoder: GPURenderPassEncoder, bufferManager: BufferManager, pipelineManager: PipelineManager, currentAttachment: IAttachmentObject) => void;