@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,193 @@
1
+ import { WgslFullscreenPositions, WgslUnitQuadVertices, WgslVertexOutput } from "../common/SharedWgsl";
2
+ const createFullscreenQuadVertex = (yFlipTexCoord) => /* wgsl */ `
3
+ ${WgslVertexOutput}
4
+
5
+ @vertex
6
+ fn main(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {
7
+ var output: VertexOutput;
8
+ ${WgslFullscreenPositions}
9
+ var texCoords = array<vec2<f32>, 6>(
10
+ vec2<f32>(0.0, ${yFlipTexCoord ? "1.0" : "0.0"}),
11
+ vec2<f32>(1.0, ${yFlipTexCoord ? "1.0" : "0.0"}),
12
+ vec2<f32>(0.0, ${yFlipTexCoord ? "0.0" : "1.0"}),
13
+ vec2<f32>(0.0, ${yFlipTexCoord ? "0.0" : "1.0"}),
14
+ vec2<f32>(1.0, ${yFlipTexCoord ? "1.0" : "0.0"}),
15
+ vec2<f32>(1.0, ${yFlipTexCoord ? "0.0" : "1.0"})
16
+ );
17
+ output.position = vec4<f32>(positions[vertexIndex], 0.0, 1.0);
18
+ output.texCoord = texCoords[vertexIndex];
19
+ return output;
20
+ }
21
+ `;
22
+ export const BlurFilterVertex = createFullscreenQuadVertex(true);
23
+ export const ComplexBlendVertex = createFullscreenQuadVertex(false);
24
+ export const ComplexBlendCopyVertex = createFullscreenQuadVertex(false);
25
+ export const NodeClearVertex = /* wgsl */ `
26
+ struct VertexInput {
27
+ @location(0) position: vec2<f32>,
28
+ }
29
+
30
+ struct VertexOutput {
31
+ @builtin(position) position: vec4<f32>,
32
+ }
33
+
34
+ @vertex
35
+ fn main(input: VertexInput) -> VertexOutput {
36
+ var output: VertexOutput;
37
+ let ndc = input.position * 2.0 - 1.0;
38
+ output.position = vec4<f32>(ndc.x, ndc.y, 0.0, 1.0);
39
+ return output;
40
+ }
41
+ `;
42
+ export const PositionedTextureVertex = /* wgsl */ `
43
+ struct PositionUniforms {
44
+ offset: vec2<f32>,
45
+ size: vec2<f32>,
46
+ viewport: vec2<f32>,
47
+ padding: vec2<f32>,
48
+ }
49
+
50
+ struct VertexOutput {
51
+ @builtin(position) position: vec4<f32>,
52
+ @location(0) texCoord: vec2<f32>,
53
+ }
54
+
55
+ @group(0) @binding(0) var<uniform> uniforms: PositionUniforms;
56
+
57
+ @vertex
58
+ fn main(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {
59
+ var output: VertexOutput;
60
+ ${WgslUnitQuadVertices}
61
+ let vertex = vertices[vertexIndex];
62
+ output.texCoord = vec2<f32>(vertex.x, 1.0 - vertex.y);
63
+ var position = vertex * uniforms.size + uniforms.offset;
64
+ position = position / uniforms.viewport;
65
+ position = position * 2.0 - 1.0;
66
+ output.position = vec4<f32>(position.x, -position.y, 0.0, 1.0);
67
+ return output;
68
+ }
69
+ `;
70
+ export const BitmapSyncVertex = /* wgsl */ `
71
+ struct BitmapSyncUniforms {
72
+ nodeRect: vec4<f32>,
73
+ textureSize: vec2<f32>,
74
+ padding: vec2<f32>,
75
+ }
76
+
77
+ struct VertexOutput {
78
+ @builtin(position) position: vec4<f32>,
79
+ @location(0) texCoord: vec2<f32>,
80
+ }
81
+
82
+ @group(0) @binding(0) var<uniform> uniforms: BitmapSyncUniforms;
83
+
84
+ @vertex
85
+ fn main(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {
86
+ var output: VertexOutput;
87
+ ${WgslUnitQuadVertices}
88
+ let vertex = vertices[vertexIndex];
89
+ let pixelPos = vec2<f32>(
90
+ uniforms.nodeRect.x + vertex.x * uniforms.nodeRect.z,
91
+ uniforms.nodeRect.y + vertex.y * uniforms.nodeRect.w
92
+ );
93
+ let ndc = pixelPos / uniforms.textureSize * 2.0 - 1.0;
94
+ output.position = vec4<f32>(ndc.x, -ndc.y, 0.0, 1.0);
95
+ output.texCoord = pixelPos / uniforms.textureSize;
96
+ return output;
97
+ }
98
+ `;
99
+ export const BlendModeVertex = /* wgsl */ `
100
+ struct VertexInput {
101
+ @location(0) position: vec2<f32>,
102
+ @location(1) texCoord: vec2<f32>,
103
+ }
104
+
105
+ struct VertexOutput {
106
+ @builtin(position) position: vec4<f32>,
107
+ @location(0) texCoord: vec2<f32>,
108
+ }
109
+
110
+ @vertex
111
+ fn main(input: VertexInput) -> VertexOutput {
112
+ var output: VertexOutput;
113
+ output.position = vec4<f32>(input.position, 0.0, 1.0);
114
+ output.texCoord = input.texCoord;
115
+ return output;
116
+ }
117
+ `;
118
+ const ScaleUniformsAndStruct = `
119
+ struct ScaleUniforms {
120
+ matrix: vec4<f32>,
121
+ translate: vec2<f32>,
122
+ srcSize: vec2<f32>,
123
+ dstSize: vec2<f32>,
124
+ padding: vec2<f32>,
125
+ }
126
+
127
+ struct VertexOutput {
128
+ @builtin(position) position: vec4<f32>,
129
+ @location(0) texCoord: vec2<f32>,
130
+ }
131
+
132
+ @group(0) @binding(0) var<uniform> uniforms: ScaleUniforms;
133
+ `;
134
+ const ScaleTransformBody = `
135
+ var pos = vertex * uniforms.srcSize;
136
+ let a = uniforms.matrix.x;
137
+ let b = uniforms.matrix.y;
138
+ let c = uniforms.matrix.z;
139
+ let d = uniforms.matrix.w;
140
+ let tx = uniforms.translate.x;
141
+ let ty = uniforms.translate.y;
142
+ let transformedX = pos.x * a + pos.y * c + tx;
143
+ let transformedY = pos.x * b + pos.y * d + ty;
144
+ var position = vec2<f32>(transformedX, transformedY) / uniforms.dstSize;
145
+ position = position * 2.0 - 1.0;
146
+ output.position = vec4<f32>(position.x, -position.y, 0.0, 1.0);
147
+ `;
148
+ const createScaleVertex = (yFlipTexCoord) => /* wgsl */ `
149
+ ${ScaleUniformsAndStruct}
150
+
151
+ @vertex
152
+ fn main(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {
153
+ var output: VertexOutput;
154
+ ${WgslUnitQuadVertices}
155
+ let vertex = vertices[vertexIndex];
156
+ output.texCoord = ${yFlipTexCoord ? "vec2<f32>(vertex.x, 1.0 - vertex.y)" : "vertex"};
157
+ ${ScaleTransformBody}
158
+ return output;
159
+ }
160
+ `;
161
+ export const TextureScaleVertex = createScaleVertex(false);
162
+ export const TextureScaleBlendVertex = createScaleVertex(true);
163
+ export const ComplexBlendScaleVertex = createScaleVertex(false);
164
+ const createOutputVertex = (yFlipTexCoord) => /* wgsl */ `
165
+ struct PositionUniforms {
166
+ offset: vec2<f32>,
167
+ size: vec2<f32>,
168
+ viewport: vec2<f32>,
169
+ padding: vec2<f32>,
170
+ }
171
+
172
+ struct VertexOutput {
173
+ @builtin(position) position: vec4<f32>,
174
+ @location(0) texCoord: vec2<f32>,
175
+ }
176
+
177
+ @group(0) @binding(0) var<uniform> uniforms: PositionUniforms;
178
+
179
+ @vertex
180
+ fn main(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {
181
+ var output: VertexOutput;
182
+ ${WgslUnitQuadVertices}
183
+ let vertex = vertices[vertexIndex];
184
+ output.texCoord = ${yFlipTexCoord ? "vec2<f32>(vertex.x, 1.0 - vertex.y)" : "vertex"};
185
+ var position = vertex * uniforms.size + uniforms.offset;
186
+ position = position / uniforms.viewport;
187
+ position = position * 2.0 - 1.0;
188
+ output.position = vec4<f32>(position.x, -position.y, 0.0, 1.0);
189
+ return output;
190
+ }
191
+ `;
192
+ export const ComplexBlendOutputVertex = createOutputVertex(false);
193
+ export const FilterComplexBlendOutputVertex = createOutputVertex(true);
@@ -0,0 +1 @@
1
+ export declare const GradientFillVertex = "\noverride yFlipSign: f32 = 1.0;\n\nstruct VertexInput {\n @location(0) position: vec2<f32>,\n @location(1) bezier: vec2<f32>,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) v_uv: vec2<f32>,\n @location(1) bezier: vec2<f32>,\n @location(2) color: vec4<f32>,\n}\n\nstruct GradientUniforms {\n inverseMatrix: mat3x3<f32>,\n gradientType: f32,\n focal: f32,\n spread: f32,\n radius: f32,\n linearPoints: vec4<f32>,\n color: vec4<f32>,\n contextMatrix0: vec4<f32>,\n contextMatrix1: vec4<f32>,\n contextMatrix2: vec4<f32>,\n}\n\n@group(0) @binding(0) var<uniform> gradient: GradientUniforms;\n\n@vertex\nfn main(input: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n let contextMatrix = mat3x3<f32>(gradient.contextMatrix0.xyz, gradient.contextMatrix1.xyz, gradient.contextMatrix2.xyz);\n let pos = contextMatrix * vec3<f32>(input.position, 1.0);\n let ndc = vec2<f32>(pos.x * 2.0 - 1.0, pos.y * 2.0 - 1.0);\n output.position = vec4<f32>(ndc.x, ndc.y * yFlipSign, 0.0, 1.0);\n let uvPos = gradient.inverseMatrix * vec3<f32>(input.position, 1.0);\n output.v_uv = uvPos.xy;\n output.bezier = input.bezier;\n output.color = gradient.color;\n return output;\n}\n";
@@ -0,0 +1,44 @@
1
+ export const GradientFillVertex = /* wgsl */ `
2
+ override yFlipSign: f32 = 1.0;
3
+
4
+ struct VertexInput {
5
+ @location(0) position: vec2<f32>,
6
+ @location(1) bezier: vec2<f32>,
7
+ }
8
+
9
+ struct VertexOutput {
10
+ @builtin(position) position: vec4<f32>,
11
+ @location(0) v_uv: vec2<f32>,
12
+ @location(1) bezier: vec2<f32>,
13
+ @location(2) color: vec4<f32>,
14
+ }
15
+
16
+ struct GradientUniforms {
17
+ inverseMatrix: mat3x3<f32>,
18
+ gradientType: f32,
19
+ focal: f32,
20
+ spread: f32,
21
+ radius: f32,
22
+ linearPoints: vec4<f32>,
23
+ color: vec4<f32>,
24
+ contextMatrix0: vec4<f32>,
25
+ contextMatrix1: vec4<f32>,
26
+ contextMatrix2: vec4<f32>,
27
+ }
28
+
29
+ @group(0) @binding(0) var<uniform> gradient: GradientUniforms;
30
+
31
+ @vertex
32
+ fn main(input: VertexInput) -> VertexOutput {
33
+ var output: VertexOutput;
34
+ let contextMatrix = mat3x3<f32>(gradient.contextMatrix0.xyz, gradient.contextMatrix1.xyz, gradient.contextMatrix2.xyz);
35
+ let pos = contextMatrix * vec3<f32>(input.position, 1.0);
36
+ let ndc = vec2<f32>(pos.x * 2.0 - 1.0, pos.y * 2.0 - 1.0);
37
+ output.position = vec4<f32>(ndc.x, ndc.y * yFlipSign, 0.0, 1.0);
38
+ let uvPos = gradient.inverseMatrix * vec3<f32>(input.position, 1.0);
39
+ output.v_uv = uvPos.xy;
40
+ output.bezier = input.bezier;
41
+ output.color = gradient.color;
42
+ return output;
43
+ }
44
+ `;
@@ -0,0 +1 @@
1
+ export declare const InstancedVertex = "\nstruct VertexInput {\n @location(0) position: vec2<f32>,\n @location(1) texCoord: vec2<f32>,\n}\n\nstruct InstanceInput {\n @location(2) textureRect: vec4<f32>,\n @location(3) textureDim: vec4<f32>,\n @location(4) matrixTx: vec4<f32>,\n @location(5) matrixScale: vec4<f32>,\n @location(6) mulColor: vec4<f32>,\n @location(7) addColor: vec4<f32>,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n @location(1) mulColor: vec4<f32>,\n @location(2) addColor: vec4<f32>,\n}\n\n@vertex\nfn main(\n input: VertexInput,\n instance: InstanceInput,\n @builtin(instance_index) instanceIdx: u32\n) -> VertexOutput {\n var output: VertexOutput;\n let texX = instance.textureRect.x + input.texCoord.x * instance.textureRect.z;\n let texY = instance.textureRect.y + input.texCoord.y * instance.textureRect.w;\n output.texCoord = vec2<f32>(texX, texY);\n var pos = vec2<f32>(input.position.x, 1.0 - input.position.y);\n pos = pos * vec2<f32>(instance.textureDim.x, instance.textureDim.y);\n let scale0 = instance.matrixScale.x;\n let rotate0 = instance.matrixScale.y;\n let scale1 = instance.matrixScale.z;\n let rotate1 = instance.matrixScale.w;\n let transformedX = pos.x * scale0 + pos.y * scale1 + instance.matrixTx.x;\n let transformedY = pos.x * rotate0 + pos.y * rotate1 + instance.matrixTx.y;\n var position = vec2<f32>(transformedX, transformedY) / vec2<f32>(instance.textureDim.z, instance.textureDim.w);\n position = position * 2.0 - 1.0;\n output.position = vec4<f32>(position.x, -position.y, 0.0, 1.0);\n output.mulColor = instance.mulColor;\n output.addColor = instance.addColor;\n return output;\n}\n";
@@ -0,0 +1,48 @@
1
+ export const InstancedVertex = /* wgsl */ `
2
+ struct VertexInput {
3
+ @location(0) position: vec2<f32>,
4
+ @location(1) texCoord: vec2<f32>,
5
+ }
6
+
7
+ struct InstanceInput {
8
+ @location(2) textureRect: vec4<f32>,
9
+ @location(3) textureDim: vec4<f32>,
10
+ @location(4) matrixTx: vec4<f32>,
11
+ @location(5) matrixScale: vec4<f32>,
12
+ @location(6) mulColor: vec4<f32>,
13
+ @location(7) addColor: vec4<f32>,
14
+ }
15
+
16
+ struct VertexOutput {
17
+ @builtin(position) position: vec4<f32>,
18
+ @location(0) texCoord: vec2<f32>,
19
+ @location(1) mulColor: vec4<f32>,
20
+ @location(2) addColor: vec4<f32>,
21
+ }
22
+
23
+ @vertex
24
+ fn main(
25
+ input: VertexInput,
26
+ instance: InstanceInput,
27
+ @builtin(instance_index) instanceIdx: u32
28
+ ) -> VertexOutput {
29
+ var output: VertexOutput;
30
+ let texX = instance.textureRect.x + input.texCoord.x * instance.textureRect.z;
31
+ let texY = instance.textureRect.y + input.texCoord.y * instance.textureRect.w;
32
+ output.texCoord = vec2<f32>(texX, texY);
33
+ var pos = vec2<f32>(input.position.x, 1.0 - input.position.y);
34
+ pos = pos * vec2<f32>(instance.textureDim.x, instance.textureDim.y);
35
+ let scale0 = instance.matrixScale.x;
36
+ let rotate0 = instance.matrixScale.y;
37
+ let scale1 = instance.matrixScale.z;
38
+ let rotate1 = instance.matrixScale.w;
39
+ let transformedX = pos.x * scale0 + pos.y * scale1 + instance.matrixTx.x;
40
+ let transformedY = pos.x * rotate0 + pos.y * rotate1 + instance.matrixTx.y;
41
+ var position = vec2<f32>(transformedX, transformedY) / vec2<f32>(instance.textureDim.z, instance.textureDim.w);
42
+ position = position * 2.0 - 1.0;
43
+ output.position = vec4<f32>(position.x, -position.y, 0.0, 1.0);
44
+ output.mulColor = instance.mulColor;
45
+ output.addColor = instance.addColor;
46
+ return output;
47
+ }
48
+ `;
@@ -0,0 +1 @@
1
+ export declare const MaskVertex = "\nstruct VertexInput {\n @location(0) position: vec2<f32>,\n @location(1) bezier: vec2<f32>,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) bezier: vec2<f32>,\n}\n\nstruct Uniforms {\n viewportSize: vec2<f32>,\n _padding0: vec2<f32>,\n matrixCol0: vec3<f32>,\n _padding1: f32,\n matrixCol1: vec3<f32>,\n _padding2: f32,\n matrixCol2: vec3<f32>,\n _padding3: f32,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: Uniforms;\n\n@vertex\nfn main(input: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n let matrix = mat3x3<f32>(uniforms.matrixCol0, uniforms.matrixCol1, uniforms.matrixCol2);\n let transformed = matrix * vec3<f32>(input.position, 1.0);\n let pos = transformed.xy;\n let ndc = pos * 2.0 - 1.0;\n output.position = vec4<f32>(ndc.x, -ndc.y, 0.0, 1.0);\n output.bezier = input.bezier;\n return output;\n}\n";
@@ -0,0 +1,36 @@
1
+ export const MaskVertex = /* wgsl */ `
2
+ struct VertexInput {
3
+ @location(0) position: vec2<f32>,
4
+ @location(1) bezier: vec2<f32>,
5
+ }
6
+
7
+ struct VertexOutput {
8
+ @builtin(position) position: vec4<f32>,
9
+ @location(0) bezier: vec2<f32>,
10
+ }
11
+
12
+ struct Uniforms {
13
+ viewportSize: vec2<f32>,
14
+ _padding0: vec2<f32>,
15
+ matrixCol0: vec3<f32>,
16
+ _padding1: f32,
17
+ matrixCol1: vec3<f32>,
18
+ _padding2: f32,
19
+ matrixCol2: vec3<f32>,
20
+ _padding3: f32,
21
+ }
22
+
23
+ @group(0) @binding(0) var<uniform> uniforms: Uniforms;
24
+
25
+ @vertex
26
+ fn main(input: VertexInput) -> VertexOutput {
27
+ var output: VertexOutput;
28
+ let matrix = mat3x3<f32>(uniforms.matrixCol0, uniforms.matrixCol1, uniforms.matrixCol2);
29
+ let transformed = matrix * vec3<f32>(input.position, 1.0);
30
+ let pos = transformed.xy;
31
+ let ndc = pos * 2.0 - 1.0;
32
+ output.position = vec4<f32>(ndc.x, -ndc.y, 0.0, 1.0);
33
+ output.bezier = input.bezier;
34
+ return output;
35
+ }
36
+ `;
@@ -0,0 +1,2 @@
1
+ export declare const StencilWriteVertex = "\noverride yFlipSign: f32 = 1.0;\n\nstruct VertexInput {\n @location(0) position: vec2<f32>,\n @location(1) bezier: vec2<f32>,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) bezier: vec2<f32>,\n}\n\nstruct FillUniforms {\n color: vec4<f32>,\n matrix0: vec4<f32>,\n matrix1: vec4<f32>,\n matrix2: vec4<f32>,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: FillUniforms;\n\n@vertex\nfn main(input: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n let matrix = mat3x3<f32>(uniforms.matrix0.xyz, uniforms.matrix1.xyz, uniforms.matrix2.xyz);\n let transformed = matrix * vec3<f32>(input.position, 1.0);\n let ndc = transformed.xy * 2.0 - 1.0;\n output.position = vec4<f32>(ndc.x, ndc.y * yFlipSign, 0.0, 1.0);\n output.bezier = input.bezier;\n return output;\n}\n";
2
+ export declare const StencilFillVertex = "\noverride yFlipSign: f32 = 1.0;\n\nstruct VertexInput {\n @location(0) position: vec2<f32>,\n @location(1) bezier: vec2<f32>,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) color: vec4<f32>,\n}\n\nstruct FillUniforms {\n color: vec4<f32>,\n matrix0: vec4<f32>,\n matrix1: vec4<f32>,\n matrix2: vec4<f32>,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: FillUniforms;\n\n@vertex\nfn main(input: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n let matrix = mat3x3<f32>(uniforms.matrix0.xyz, uniforms.matrix1.xyz, uniforms.matrix2.xyz);\n let transformed = matrix * vec3<f32>(input.position, 1.0);\n let ndc = transformed.xy * 2.0 - 1.0;\n output.position = vec4<f32>(ndc.x, ndc.y * yFlipSign, 0.0, 1.0);\n output.color = uniforms.color;\n return output;\n}\n";
@@ -0,0 +1,66 @@
1
+ export const StencilWriteVertex = /* wgsl */ `
2
+ override yFlipSign: f32 = 1.0;
3
+
4
+ struct VertexInput {
5
+ @location(0) position: vec2<f32>,
6
+ @location(1) bezier: vec2<f32>,
7
+ }
8
+
9
+ struct VertexOutput {
10
+ @builtin(position) position: vec4<f32>,
11
+ @location(0) bezier: vec2<f32>,
12
+ }
13
+
14
+ struct FillUniforms {
15
+ color: vec4<f32>,
16
+ matrix0: vec4<f32>,
17
+ matrix1: vec4<f32>,
18
+ matrix2: vec4<f32>,
19
+ }
20
+
21
+ @group(0) @binding(0) var<uniform> uniforms: FillUniforms;
22
+
23
+ @vertex
24
+ fn main(input: VertexInput) -> VertexOutput {
25
+ var output: VertexOutput;
26
+ let matrix = mat3x3<f32>(uniforms.matrix0.xyz, uniforms.matrix1.xyz, uniforms.matrix2.xyz);
27
+ let transformed = matrix * vec3<f32>(input.position, 1.0);
28
+ let ndc = transformed.xy * 2.0 - 1.0;
29
+ output.position = vec4<f32>(ndc.x, ndc.y * yFlipSign, 0.0, 1.0);
30
+ output.bezier = input.bezier;
31
+ return output;
32
+ }
33
+ `;
34
+ export const StencilFillVertex = /* wgsl */ `
35
+ override yFlipSign: f32 = 1.0;
36
+
37
+ struct VertexInput {
38
+ @location(0) position: vec2<f32>,
39
+ @location(1) bezier: vec2<f32>,
40
+ }
41
+
42
+ struct VertexOutput {
43
+ @builtin(position) position: vec4<f32>,
44
+ @location(0) color: vec4<f32>,
45
+ }
46
+
47
+ struct FillUniforms {
48
+ color: vec4<f32>,
49
+ matrix0: vec4<f32>,
50
+ matrix1: vec4<f32>,
51
+ matrix2: vec4<f32>,
52
+ }
53
+
54
+ @group(0) @binding(0) var<uniform> uniforms: FillUniforms;
55
+
56
+ @vertex
57
+ fn main(input: VertexInput) -> VertexOutput {
58
+ var output: VertexOutput;
59
+ let matrix = mat3x3<f32>(uniforms.matrix0.xyz, uniforms.matrix1.xyz, uniforms.matrix2.xyz);
60
+ let transformed = matrix * vec3<f32>(input.position, 1.0);
61
+ let ndc = transformed.xy * 2.0 - 1.0;
62
+ output.position = vec4<f32>(ndc.x, ndc.y * yFlipSign, 0.0, 1.0);
63
+ output.color = uniforms.color;
64
+ return output;
65
+ }
66
+ `;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @description サンプラーを初期化
3
+ * Initialize samplers
4
+ *
5
+ * @param {GPUDevice} device
6
+ * @param {Map<string, GPUSampler>} samplers
7
+ * @return {void}
8
+ * @method
9
+ * @protected
10
+ */
11
+ export declare const execute: (device: GPUDevice, samplers: Map<string, GPUSampler>) => void;
@@ -0,0 +1,48 @@
1
+ /**
2
+ * @description サンプラーを初期化
3
+ * Initialize samplers
4
+ *
5
+ * @param {GPUDevice} device
6
+ * @param {Map<string, GPUSampler>} samplers
7
+ * @return {void}
8
+ * @method
9
+ * @protected
10
+ */
11
+ export const execute = (device, samplers) => {
12
+ // デフォルトサンプラー(リニアフィルタリング)
13
+ const linearSampler = device.createSampler({
14
+ "magFilter": "linear",
15
+ "minFilter": "linear",
16
+ "mipmapFilter": "linear",
17
+ "addressModeU": "clamp-to-edge",
18
+ "addressModeV": "clamp-to-edge"
19
+ });
20
+ samplers.set("linear", linearSampler);
21
+ // ニアレストサンプラー
22
+ const nearestSampler = device.createSampler({
23
+ "magFilter": "nearest",
24
+ "minFilter": "nearest",
25
+ "mipmapFilter": "nearest",
26
+ "addressModeU": "clamp-to-edge",
27
+ "addressModeV": "clamp-to-edge"
28
+ });
29
+ samplers.set("nearest", nearestSampler);
30
+ // アトラス用サンプラー(min: linear, mag: nearest)
31
+ const atlasSampler = device.createSampler({
32
+ "magFilter": "nearest",
33
+ "minFilter": "linear",
34
+ "mipmapFilter": "nearest",
35
+ "addressModeU": "clamp-to-edge",
36
+ "addressModeV": "clamp-to-edge"
37
+ });
38
+ samplers.set("atlas_instanced_sampler", atlasSampler);
39
+ // リピートサンプラー
40
+ const repeatSampler = device.createSampler({
41
+ "magFilter": "linear",
42
+ "minFilter": "linear",
43
+ "mipmapFilter": "linear",
44
+ "addressModeU": "repeat",
45
+ "addressModeV": "repeat"
46
+ });
47
+ samplers.set("repeat", repeatSampler);
48
+ };
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @description ImageBitmapからテクスチャを作成
3
+ * Create texture from ImageBitmap
4
+ *
5
+ * @param {GPUDevice} device
6
+ * @param {Map<string, GPUTexture>} textures
7
+ * @param {string} name
8
+ * @param {ImageBitmap} image_bitmap
9
+ * @return {GPUTexture}
10
+ * @method
11
+ * @protected
12
+ */
13
+ export declare const execute: (device: GPUDevice, textures: Map<string, GPUTexture>, name: string, image_bitmap: ImageBitmap) => GPUTexture;
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @description ImageBitmapからテクスチャを作成
3
+ * Create texture from ImageBitmap
4
+ *
5
+ * @param {GPUDevice} device
6
+ * @param {Map<string, GPUTexture>} textures
7
+ * @param {string} name
8
+ * @param {ImageBitmap} image_bitmap
9
+ * @return {GPUTexture}
10
+ * @method
11
+ * @protected
12
+ */
13
+ export const execute = (device, textures, name, image_bitmap) => {
14
+ const texture = device.createTexture({
15
+ "size": { "width": image_bitmap.width, "height": image_bitmap.height },
16
+ "format": "rgba8unorm",
17
+ "usage": GPUTextureUsage.TEXTURE_BINDING |
18
+ GPUTextureUsage.COPY_DST |
19
+ GPUTextureUsage.RENDER_ATTACHMENT
20
+ });
21
+ device.queue.copyExternalImageToTexture({
22
+ "source": image_bitmap,
23
+ "flipY": true
24
+ }, {
25
+ texture,
26
+ "premultipliedAlpha": true
27
+ }, { "width": image_bitmap.width, "height": image_bitmap.height });
28
+ textures.set(name, texture);
29
+ return texture;
30
+ };
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @description ピクセルデータからテクスチャを作成
3
+ * Create texture from pixel data
4
+ *
5
+ * @param {GPUDevice} device
6
+ * @param {Map<string, GPUTexture>} textures
7
+ * @param {string} name
8
+ * @param {Uint8Array} pixels
9
+ * @param {number} width
10
+ * @param {number} height
11
+ * @return {GPUTexture}
12
+ * @method
13
+ * @protected
14
+ */
15
+ export declare const execute: (device: GPUDevice, textures: Map<string, GPUTexture>, name: string, pixels: Uint8Array, width: number, height: number) => GPUTexture;
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @description ピクセルデータからテクスチャを作成
3
+ * Create texture from pixel data
4
+ *
5
+ * @param {GPUDevice} device
6
+ * @param {Map<string, GPUTexture>} textures
7
+ * @param {string} name
8
+ * @param {Uint8Array} pixels
9
+ * @param {number} width
10
+ * @param {number} height
11
+ * @return {GPUTexture}
12
+ * @method
13
+ * @protected
14
+ */
15
+ export const execute = (device, textures, name, pixels, width, height) => {
16
+ const texture = device.createTexture({
17
+ "size": { width, height },
18
+ "format": "rgba8unorm",
19
+ "usage": GPUTextureUsage.TEXTURE_BINDING |
20
+ GPUTextureUsage.COPY_DST |
21
+ GPUTextureUsage.RENDER_ATTACHMENT
22
+ });
23
+ device.queue.writeTexture({ texture }, pixels.buffer, { "bytesPerRow": width * 4, "offset": pixels.byteOffset }, { width, height });
24
+ textures.set(name, texture);
25
+ return texture;
26
+ };
@@ -0,0 +1,15 @@
1
+ export declare class TextureManager {
2
+ private device;
3
+ private textures;
4
+ private samplers;
5
+ constructor(device: GPUDevice);
6
+ createTexture(name: string, width: number, height: number, format?: GPUTextureFormat): GPUTexture;
7
+ createTextureFromPixels(name: string, pixels: Uint8Array, width: number, height: number): GPUTexture;
8
+ createTextureFromImageBitmap(name: string, imageBitmap: ImageBitmap): GPUTexture;
9
+ updateTexture(name: string, pixels: Uint8Array, width: number, height: number): void;
10
+ getTexture(name: string): GPUTexture | undefined;
11
+ getSampler(name: string): GPUSampler | undefined;
12
+ createSampler(name: string, smooth?: boolean): GPUSampler;
13
+ destroyTexture(name: string): void;
14
+ dispose(): void;
15
+ }
@@ -0,0 +1,87 @@
1
+ import { execute as textureManagerInitializeSamplersService } from "./TextureManager/service/TextureManagerInitializeSamplersService";
2
+ import { execute as textureManagerCreateTextureFromPixelsUseCase } from "./TextureManager/usecase/TextureManagerCreateTextureFromPixelsUseCase";
3
+ import { execute as textureManagerCreateTextureFromImageBitmapUseCase } from "./TextureManager/usecase/TextureManagerCreateTextureFromImageBitmapUseCase";
4
+ export class TextureManager {
5
+ constructor(device) {
6
+ Object.defineProperty(this, "device", {
7
+ enumerable: true,
8
+ configurable: true,
9
+ writable: true,
10
+ value: void 0
11
+ });
12
+ Object.defineProperty(this, "textures", {
13
+ enumerable: true,
14
+ configurable: true,
15
+ writable: true,
16
+ value: void 0
17
+ });
18
+ Object.defineProperty(this, "samplers", {
19
+ enumerable: true,
20
+ configurable: true,
21
+ writable: true,
22
+ value: void 0
23
+ });
24
+ this.device = device;
25
+ this.textures = new Map();
26
+ this.samplers = new Map();
27
+ textureManagerInitializeSamplersService(device, this.samplers);
28
+ }
29
+ createTexture(name, width, height, format = "rgba8unorm") {
30
+ const texture = this.device.createTexture({
31
+ "size": { width, height },
32
+ "format": format,
33
+ "usage": GPUTextureUsage.TEXTURE_BINDING |
34
+ GPUTextureUsage.COPY_DST |
35
+ GPUTextureUsage.RENDER_ATTACHMENT
36
+ });
37
+ this.textures.set(name, texture);
38
+ return texture;
39
+ }
40
+ createTextureFromPixels(name, pixels, width, height) {
41
+ return textureManagerCreateTextureFromPixelsUseCase(this.device, this.textures, name, pixels, width, height);
42
+ }
43
+ createTextureFromImageBitmap(name, imageBitmap) {
44
+ return textureManagerCreateTextureFromImageBitmapUseCase(this.device, this.textures, name, imageBitmap);
45
+ }
46
+ updateTexture(name, pixels, width, height) {
47
+ const texture = this.textures.get(name);
48
+ if (texture) {
49
+ this.device.queue.writeTexture({ texture }, pixels.buffer, { "bytesPerRow": width * 4, "offset": pixels.byteOffset }, { width, height });
50
+ }
51
+ }
52
+ getTexture(name) {
53
+ return this.textures.get(name);
54
+ }
55
+ getSampler(name) {
56
+ return this.samplers.get(name);
57
+ }
58
+ createSampler(name, smooth = true) {
59
+ const existing = this.samplers.get(name);
60
+ if (existing) {
61
+ return existing;
62
+ }
63
+ const sampler = this.device.createSampler({
64
+ "magFilter": smooth ? "linear" : "nearest",
65
+ "minFilter": smooth ? "linear" : "nearest",
66
+ "mipmapFilter": smooth ? "linear" : "nearest",
67
+ "addressModeU": "clamp-to-edge",
68
+ "addressModeV": "clamp-to-edge"
69
+ });
70
+ this.samplers.set(name, sampler);
71
+ return sampler;
72
+ }
73
+ destroyTexture(name) {
74
+ const texture = this.textures.get(name);
75
+ if (texture) {
76
+ texture.destroy();
77
+ this.textures.delete(name);
78
+ }
79
+ }
80
+ dispose() {
81
+ for (const texture of this.textures.values()) {
82
+ texture.destroy();
83
+ }
84
+ this.textures.clear();
85
+ this.samplers.clear();
86
+ }
87
+ }