@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,212 @@
1
+ import { WgslVertexOutput } from "../common/SharedWgsl";
2
+ export const TextureCopyFragment = /* wgsl */ `
3
+ ${WgslVertexOutput}
4
+
5
+ struct CopyUniforms {
6
+ scale: vec2<f32>,
7
+ offset: vec2<f32>,
8
+ }
9
+
10
+ @group(0) @binding(0) var<uniform> uniforms: CopyUniforms;
11
+ @group(0) @binding(1) var textureSampler: sampler;
12
+ @group(0) @binding(2) var inputTexture: texture_2d<f32>;
13
+
14
+ @fragment
15
+ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
16
+ let uv = input.texCoord * uniforms.scale + uniforms.offset;
17
+ return textureSampleLevel(inputTexture, textureSampler, uv, 0);
18
+ }
19
+ `;
20
+ export const BlurTextureCopyFragment = /* wgsl */ `
21
+ ${WgslVertexOutput}
22
+
23
+ struct CopyUniforms {
24
+ scale: vec2<f32>,
25
+ offset: vec2<f32>,
26
+ }
27
+
28
+ @group(0) @binding(0) var<uniform> uniforms: CopyUniforms;
29
+ @group(0) @binding(1) var textureSampler: sampler;
30
+ @group(0) @binding(2) var inputTexture: texture_2d<f32>;
31
+
32
+ @fragment
33
+ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
34
+ let uv = (input.texCoord - uniforms.offset) * uniforms.scale;
35
+ let clampedUv = clamp(uv, vec2<f32>(0.0), vec2<f32>(1.0));
36
+ let color = textureSampleLevel(inputTexture, textureSampler, clampedUv, 0);
37
+ let inBounds = uv.x >= 0.0 && uv.x <= 1.0 && uv.y >= 0.0 && uv.y <= 1.0;
38
+ return select(vec4<f32>(0.0, 0.0, 0.0, 0.0), color, inBounds);
39
+ }
40
+ `;
41
+ export const FilterOutputFragment = /* wgsl */ `
42
+ ${WgslVertexOutput}
43
+
44
+ struct CopyUniforms {
45
+ scale: vec2<f32>,
46
+ offset: vec2<f32>,
47
+ }
48
+
49
+ @group(0) @binding(0) var<uniform> uniforms: CopyUniforms;
50
+ @group(0) @binding(1) var textureSampler: sampler;
51
+ @group(0) @binding(2) var inputTexture: texture_2d<f32>;
52
+
53
+ @fragment
54
+ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
55
+ let uv = input.texCoord * uniforms.scale + uniforms.offset;
56
+ let clampedUv = clamp(uv, vec2<f32>(0.0), vec2<f32>(1.0));
57
+ let color = textureSampleLevel(inputTexture, textureSampler, clampedUv, 0);
58
+ let inBounds = uv.x >= 0.0 && uv.x <= 1.0 && uv.y >= 0.0 && uv.y <= 1.0;
59
+ return select(vec4<f32>(0.0, 0.0, 0.0, 0.0), color, inBounds);
60
+ }
61
+ `;
62
+ export const ColorTransformFragment = /* wgsl */ `
63
+ ${WgslVertexOutput}
64
+
65
+ struct ColorTransformUniforms {
66
+ mul: vec4<f32>,
67
+ add: vec4<f32>,
68
+ }
69
+
70
+ @group(0) @binding(0) var<uniform> ct: ColorTransformUniforms;
71
+ @group(0) @binding(1) var textureSampler: sampler;
72
+ @group(0) @binding(2) var inputTexture: texture_2d<f32>;
73
+
74
+ @fragment
75
+ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
76
+ var color = textureSampleLevel(inputTexture, textureSampler, input.texCoord, 0);
77
+
78
+ color = vec4<f32>(color.rgb / max(vec3<f32>(0.0001), vec3<f32>(color.a)), color.a);
79
+ color = clamp(color * ct.mul + ct.add, vec4<f32>(0.0), vec4<f32>(1.0));
80
+ color = vec4<f32>(color.rgb * color.a, color.a);
81
+
82
+ return color;
83
+ }
84
+ `;
85
+ export const YFlipColorTransformFragment = /* wgsl */ `
86
+ ${WgslVertexOutput}
87
+
88
+ struct YFlipCTUniforms {
89
+ scale: vec2<f32>,
90
+ offset: vec2<f32>,
91
+ mul: vec4<f32>,
92
+ add: vec4<f32>,
93
+ }
94
+
95
+ @group(0) @binding(0) var<uniform> uniforms: YFlipCTUniforms;
96
+ @group(0) @binding(1) var textureSampler: sampler;
97
+ @group(0) @binding(2) var inputTexture: texture_2d<f32>;
98
+
99
+ @fragment
100
+ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
101
+ let uv = input.texCoord * uniforms.scale + uniforms.offset;
102
+ var color = textureSampleLevel(inputTexture, textureSampler, uv, 0);
103
+
104
+ color = vec4<f32>(color.rgb / max(vec3<f32>(0.0001), vec3<f32>(color.a)), color.a);
105
+ color = clamp(color * uniforms.mul + uniforms.add, vec4<f32>(0.0), vec4<f32>(1.0));
106
+ color = vec4<f32>(color.rgb * color.a, color.a);
107
+
108
+ return color;
109
+ }
110
+ `;
111
+ export const ColorMatrixFilterFragment = /* wgsl */ `
112
+ ${WgslVertexOutput}
113
+
114
+ struct ColorMatrixUniforms {
115
+ matrix: mat4x4<f32>,
116
+ offset: vec4<f32>,
117
+ }
118
+
119
+ @group(0) @binding(0) var<uniform> uniforms: ColorMatrixUniforms;
120
+ @group(0) @binding(1) var textureSampler: sampler;
121
+ @group(0) @binding(2) var inputTexture: texture_2d<f32>;
122
+
123
+ @fragment
124
+ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
125
+ var color = textureSampleLevel(inputTexture, textureSampler, input.texCoord, 0);
126
+
127
+ color = vec4<f32>(color.rgb / max(vec3<f32>(0.0001), vec3<f32>(color.a)), color.a);
128
+ var result = uniforms.matrix * color + uniforms.offset;
129
+ result = clamp(result, vec4<f32>(0.0), vec4<f32>(1.0));
130
+ result = vec4<f32>(result.rgb * result.a, result.a);
131
+
132
+ return result;
133
+ }
134
+ `;
135
+ export const NodeClearFragment = /* wgsl */ `
136
+ @fragment
137
+ fn main() -> @location(0) vec4<f32> {
138
+ return vec4<f32>(0.0, 0.0, 0.0, 0.0);
139
+ }
140
+ `;
141
+ export const PositionedTextureFragment = /* wgsl */ `
142
+ ${WgslVertexOutput}
143
+
144
+ @group(0) @binding(1) var textureSampler: sampler;
145
+ @group(0) @binding(2) var inputTexture: texture_2d<f32>;
146
+
147
+ @fragment
148
+ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
149
+ return textureSampleLevel(inputTexture, textureSampler, input.texCoord, 0);
150
+ }
151
+ `;
152
+ export const BitmapSyncFragment = /* wgsl */ `
153
+ ${WgslVertexOutput}
154
+
155
+ @group(0) @binding(1) var textureSampler: sampler;
156
+ @group(0) @binding(2) var inputTexture: texture_2d<f32>;
157
+
158
+ @fragment
159
+ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
160
+ return textureSampleLevel(inputTexture, textureSampler, input.texCoord, 0);
161
+ }
162
+ `;
163
+ export const BlendGenericFragment = /* wgsl */ `
164
+ struct VertexOutput {
165
+ @builtin(position) position: vec4<f32>,
166
+ @location(0) texCoord: vec2<f32>,
167
+ @location(1) color: vec4<f32>,
168
+ }
169
+
170
+ struct BlendUniforms {
171
+ blendMode: f32,
172
+ }
173
+
174
+ @group(0) @binding(1) var<uniform> blend: BlendUniforms;
175
+ @group(0) @binding(2) var srcSampler: sampler;
176
+ @group(0) @binding(3) var srcTexture: texture_2d<f32>;
177
+ @group(0) @binding(4) var dstSampler: sampler;
178
+ @group(0) @binding(5) var dstTexture: texture_2d<f32>;
179
+
180
+ fn blendNormal(src: vec4<f32>, dst: vec4<f32>) -> vec4<f32> {
181
+ return src;
182
+ }
183
+
184
+ fn blendMultiply(src: vec4<f32>, dst: vec4<f32>) -> vec4<f32> {
185
+ return src * dst;
186
+ }
187
+
188
+ fn blendScreen(src: vec4<f32>, dst: vec4<f32>) -> vec4<f32> {
189
+ return src + dst - src * dst;
190
+ }
191
+
192
+ fn blendAdd(src: vec4<f32>, dst: vec4<f32>) -> vec4<f32> {
193
+ return min(src + dst, vec4<f32>(1.0));
194
+ }
195
+
196
+ @fragment
197
+ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
198
+ let src = textureSampleLevel(srcTexture, srcSampler, input.texCoord, 0);
199
+ let dst = textureSampleLevel(dstTexture, dstSampler, input.texCoord, 0);
200
+ var result: vec4<f32>;
201
+ if (blend.blendMode < 0.5) {
202
+ result = blendNormal(src, dst);
203
+ } else if (blend.blendMode < 1.5) {
204
+ result = blendMultiply(src, dst);
205
+ } else if (blend.blendMode < 2.5) {
206
+ result = blendScreen(src, dst);
207
+ } else {
208
+ result = blendAdd(src, dst);
209
+ }
210
+ return result * input.color;
211
+ }
212
+ `;
@@ -0,0 +1,3 @@
1
+ export declare const GradientFillFragment = "\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}\n\n@group(0) @binding(0) var<uniform> gradient: GradientUniforms;\n@group(0) @binding(1) var gradientSampler: sampler;\n@group(0) @binding(2) var gradientTexture: texture_2d<f32>;\n\noverride GRADIENT_TYPE: u32 = 0u;\noverride SPREAD_MODE: u32 = 2u;\n\nfn applySpread(t: f32) -> f32 {\n if (SPREAD_MODE == 0u) {\n return 1.0 - abs(fract(t * 0.5) * 2.0 - 1.0);\n } else if (SPREAD_MODE == 1u) {\n return fract(t);\n } else {\n return clamp(t, 0.0, 1.0);\n }\n}\n\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n let p = input.v_uv;\n\n var t: f32;\n if (GRADIENT_TYPE == 0u) {\n let a = gradient.linearPoints.xy;\n let b = gradient.linearPoints.zw;\n let ab = b - a;\n let ap = p - a;\n let dotAB = dot(ab, ab);\n if (dotAB < 0.0001) {\n t = 0.0;\n } else {\n t = dot(ab, ap) / dotAB;\n }\n } else {\n let r = gradient.radius;\n let coord = p / r;\n let focalRatio = gradient.focal;\n\n if (abs(focalRatio) < 0.001) {\n t = length(coord);\n } else {\n let focal = vec2<f32>(focalRatio, 0.0);\n let diff = coord - focal;\n let lenDiff = length(diff);\n\n if (lenDiff < 0.0001) {\n t = 0.0;\n } else {\n let dir = diff / lenDiff;\n\n // Solve quadratic equation for unit circle intersection (a=1 since dir is normalized)\n let b_coef = 2.0 * dot(dir, focal);\n let c_coef = dot(focal, focal) - 1.0;\n let discriminant = b_coef * b_coef - 4.0 * c_coef;\n let x = (-b_coef + sqrt(max(discriminant, 0.0))) * 0.5;\n t = lenDiff / abs(x);\n }\n }\n }\n t = applySpread(t);\n let gradientColor = textureSampleLevel(gradientTexture, gradientSampler, vec2<f32>(t, 0.5), 0);\n\n let result = gradientColor * input.color;\n return vec4<f32>(result.rgb * result.a, result.a);\n}\n";
2
+ export declare const GradientFillStencilFragment = "\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}\n\n@group(0) @binding(0) var<uniform> gradient: GradientUniforms;\n@group(0) @binding(1) var gradientSampler: sampler;\n@group(0) @binding(2) var gradientTexture: texture_2d<f32>;\n\noverride GRADIENT_TYPE: u32 = 0u;\noverride SPREAD_MODE: u32 = 2u;\n\nfn applySpread(t: f32) -> f32 {\n if (SPREAD_MODE == 0u) {\n return 1.0 - abs(fract(t * 0.5) * 2.0 - 1.0);\n } else if (SPREAD_MODE == 1u) {\n return fract(t);\n } else {\n return clamp(t, 0.0, 1.0);\n }\n}\n\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n let p = input.v_uv;\n\n var t: f32;\n if (GRADIENT_TYPE == 0u) {\n let a = gradient.linearPoints.xy;\n let b = gradient.linearPoints.zw;\n let ab = b - a;\n let ap = p - a;\n let dotAB = dot(ab, ab);\n if (dotAB < 0.0001) {\n t = 0.0;\n } else {\n t = dot(ab, ap) / dotAB;\n }\n } else {\n let r = gradient.radius;\n let coord = p / r;\n let focalRatio = gradient.focal;\n\n if (abs(focalRatio) < 0.001) {\n t = length(coord);\n } else {\n let focal = vec2<f32>(focalRatio, 0.0);\n let diff = coord - focal;\n let lenDiff = length(diff);\n\n if (lenDiff < 0.0001) {\n t = 0.0;\n } else {\n let dir = diff / lenDiff;\n\n // Solve quadratic equation for unit circle intersection (a=1 since dir is normalized)\n let b_coef = 2.0 * dot(dir, focal);\n let c_coef = dot(focal, focal) - 1.0;\n let discriminant = b_coef * b_coef - 4.0 * c_coef;\n let x = (-b_coef + sqrt(max(discriminant, 0.0))) * 0.5;\n t = lenDiff / abs(x);\n }\n }\n }\n t = applySpread(t);\n let gradientColor = textureSampleLevel(gradientTexture, gradientSampler, vec2<f32>(t, 0.5), 0);\n\n return vec4<f32>(gradientColor.rgb * gradientColor.a, gradientColor.a);\n}\n";
3
+ export declare const GradientFragment = "\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n @location(1) 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}\n\n@group(0) @binding(0) var<uniform> gradient: GradientUniforms;\n@group(0) @binding(1) var gradientSampler: sampler;\n@group(0) @binding(2) var gradientTexture: texture_2d<f32>;\n\noverride GRADIENT_TYPE: u32 = 0u;\noverride SPREAD_MODE: u32 = 2u;\n\nfn applySpread(t: f32) -> f32 {\n if (SPREAD_MODE == 0u) {\n return 1.0 - abs(fract(t * 0.5) * 2.0 - 1.0);\n } else if (SPREAD_MODE == 1u) {\n return fract(t);\n } else {\n return clamp(t, 0.0, 1.0);\n }\n}\n\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n let p = input.texCoord;\n\n var t: f32;\n if (GRADIENT_TYPE == 0u) {\n let a = gradient.linearPoints.xy;\n let b = gradient.linearPoints.zw;\n let ab = b - a;\n let ap = p - a;\n let dotAB = dot(ab, ab);\n if (dotAB < 0.0001) {\n t = 0.0;\n } else {\n t = dot(ab, ap) / dotAB;\n }\n } else {\n let r = gradient.radius;\n let coord = p / r;\n let focalRatio = gradient.focal;\n\n if (abs(focalRatio) < 0.001) {\n t = length(coord);\n } else {\n let focal = vec2<f32>(focalRatio, 0.0);\n let diff = coord - focal;\n let lenDiff = length(diff);\n\n if (lenDiff < 0.0001) {\n t = 0.0;\n } else {\n let dir = diff / lenDiff;\n\n // Solve quadratic equation for unit circle intersection (a=1 since dir is normalized)\n let b_coef = 2.0 * dot(dir, focal);\n let c_coef = dot(focal, focal) - 1.0;\n let discriminant = b_coef * b_coef - 4.0 * c_coef;\n let x = (-b_coef + sqrt(max(discriminant, 0.0))) * 0.5;\n t = lenDiff / abs(x);\n }\n }\n }\n t = applySpread(t);\n let gradientColor = textureSampleLevel(gradientTexture, gradientSampler, vec2<f32>(t, 0.5), 0);\n\n let result = gradientColor * input.color;\n return vec4<f32>(result.rgb * result.a, result.a);\n}\n";
@@ -0,0 +1,118 @@
1
+ const GradientUniformsAndSpread = `
2
+ struct GradientUniforms {
3
+ inverseMatrix: mat3x3<f32>,
4
+ gradientType: f32,
5
+ focal: f32,
6
+ spread: f32,
7
+ radius: f32,
8
+ linearPoints: vec4<f32>,
9
+ }
10
+
11
+ @group(0) @binding(0) var<uniform> gradient: GradientUniforms;
12
+ @group(0) @binding(1) var gradientSampler: sampler;
13
+ @group(0) @binding(2) var gradientTexture: texture_2d<f32>;
14
+
15
+ override GRADIENT_TYPE: u32 = 0u;
16
+ override SPREAD_MODE: u32 = 2u;
17
+
18
+ fn applySpread(t: f32) -> f32 {
19
+ if (SPREAD_MODE == 0u) {
20
+ return 1.0 - abs(fract(t * 0.5) * 2.0 - 1.0);
21
+ } else if (SPREAD_MODE == 1u) {
22
+ return fract(t);
23
+ } else {
24
+ return clamp(t, 0.0, 1.0);
25
+ }
26
+ }
27
+ `;
28
+ const GradientCalculation = `
29
+ var t: f32;
30
+ if (GRADIENT_TYPE == 0u) {
31
+ let a = gradient.linearPoints.xy;
32
+ let b = gradient.linearPoints.zw;
33
+ let ab = b - a;
34
+ let ap = p - a;
35
+ let dotAB = dot(ab, ab);
36
+ if (dotAB < 0.0001) {
37
+ t = 0.0;
38
+ } else {
39
+ t = dot(ab, ap) / dotAB;
40
+ }
41
+ } else {
42
+ let r = gradient.radius;
43
+ let coord = p / r;
44
+ let focalRatio = gradient.focal;
45
+
46
+ if (abs(focalRatio) < 0.001) {
47
+ t = length(coord);
48
+ } else {
49
+ let focal = vec2<f32>(focalRatio, 0.0);
50
+ let diff = coord - focal;
51
+ let lenDiff = length(diff);
52
+
53
+ if (lenDiff < 0.0001) {
54
+ t = 0.0;
55
+ } else {
56
+ let dir = diff / lenDiff;
57
+
58
+ // Solve quadratic equation for unit circle intersection (a=1 since dir is normalized)
59
+ let b_coef = 2.0 * dot(dir, focal);
60
+ let c_coef = dot(focal, focal) - 1.0;
61
+ let discriminant = b_coef * b_coef - 4.0 * c_coef;
62
+ let x = (-b_coef + sqrt(max(discriminant, 0.0))) * 0.5;
63
+ t = lenDiff / abs(x);
64
+ }
65
+ }
66
+ }
67
+ t = applySpread(t);
68
+ let gradientColor = textureSampleLevel(gradientTexture, gradientSampler, vec2<f32>(t, 0.5), 0);
69
+ `;
70
+ export const GradientFillFragment = /* wgsl */ `
71
+ struct VertexOutput {
72
+ @builtin(position) position: vec4<f32>,
73
+ @location(0) v_uv: vec2<f32>,
74
+ @location(1) bezier: vec2<f32>,
75
+ @location(2) color: vec4<f32>,
76
+ }
77
+ ${GradientUniformsAndSpread}
78
+
79
+ @fragment
80
+ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
81
+ let p = input.v_uv;
82
+ ${GradientCalculation}
83
+ let result = gradientColor * input.color;
84
+ return vec4<f32>(result.rgb * result.a, result.a);
85
+ }
86
+ `;
87
+ export const GradientFillStencilFragment = /* wgsl */ `
88
+ struct VertexOutput {
89
+ @builtin(position) position: vec4<f32>,
90
+ @location(0) v_uv: vec2<f32>,
91
+ @location(1) bezier: vec2<f32>,
92
+ @location(2) color: vec4<f32>,
93
+ }
94
+ ${GradientUniformsAndSpread}
95
+
96
+ @fragment
97
+ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
98
+ let p = input.v_uv;
99
+ ${GradientCalculation}
100
+ return vec4<f32>(gradientColor.rgb * gradientColor.a, gradientColor.a);
101
+ }
102
+ `;
103
+ export const GradientFragment = /* wgsl */ `
104
+ struct VertexOutput {
105
+ @builtin(position) position: vec4<f32>,
106
+ @location(0) texCoord: vec2<f32>,
107
+ @location(1) color: vec4<f32>,
108
+ }
109
+ ${GradientUniformsAndSpread}
110
+
111
+ @fragment
112
+ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
113
+ let p = input.texCoord;
114
+ ${GradientCalculation}
115
+ let result = gradientColor * input.color;
116
+ return vec4<f32>(result.rgb * result.a, result.a);
117
+ }
118
+ `;
@@ -0,0 +1 @@
1
+ export declare const InstancedFragment = "\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@group(0) @binding(0) var textureSampler: sampler;\n@group(0) @binding(1) var textureData: texture_2d<f32>;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n var src = textureSample(textureData, textureSampler, input.texCoord);\n src = vec4<f32>(src.rgb / max(0.0001, src.a), src.a);\n src = clamp(src * input.mulColor + input.addColor, vec4<f32>(0.0), vec4<f32>(1.0));\n src = vec4<f32>(src.rgb * src.a, src.a);\n return src;\n}\n";
@@ -0,0 +1,20 @@
1
+ export const InstancedFragment = /* wgsl */ `
2
+ struct VertexOutput {
3
+ @builtin(position) position: vec4<f32>,
4
+ @location(0) texCoord: vec2<f32>,
5
+ @location(1) mulColor: vec4<f32>,
6
+ @location(2) addColor: vec4<f32>,
7
+ }
8
+
9
+ @group(0) @binding(0) var textureSampler: sampler;
10
+ @group(0) @binding(1) var textureData: texture_2d<f32>;
11
+
12
+ @fragment
13
+ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
14
+ var src = textureSample(textureData, textureSampler, input.texCoord);
15
+ src = vec4<f32>(src.rgb / max(0.0001, src.a), src.a);
16
+ src = clamp(src * input.mulColor + input.addColor, vec4<f32>(0.0), vec4<f32>(1.0));
17
+ src = vec4<f32>(src.rgb * src.a, src.a);
18
+ return src;
19
+ }
20
+ `;
@@ -0,0 +1 @@
1
+ export declare const MaskFragment = "\nstruct FragmentInput {\n @location(0) bezier: vec2<f32>,\n}\n\n@fragment\nfn main(input: FragmentInput) -> @location(0) vec4<f32> {\n let px = dpdx(input.bezier);\n let py = dpdy(input.bezier);\n let f = (2.0 * input.bezier.x) * vec2<f32>(px.x, py.x) - vec2<f32>(px.y, py.y);\n let alpha = 0.5 - (input.bezier.x * input.bezier.x - input.bezier.y) / length(f);\n if (alpha <= 0.0) {\n discard;\n }\n return vec4<f32>(min(alpha, 1.0));\n}\n";
@@ -0,0 +1,17 @@
1
+ export const MaskFragment = /* wgsl */ `
2
+ struct FragmentInput {
3
+ @location(0) bezier: vec2<f32>,
4
+ }
5
+
6
+ @fragment
7
+ fn main(input: FragmentInput) -> @location(0) vec4<f32> {
8
+ let px = dpdx(input.bezier);
9
+ let py = dpdy(input.bezier);
10
+ let f = (2.0 * input.bezier.x) * vec2<f32>(px.x, py.x) - vec2<f32>(px.y, py.y);
11
+ let alpha = 0.5 - (input.bezier.x * input.bezier.x - input.bezier.y) / length(f);
12
+ if (alpha <= 0.0) {
13
+ discard;
14
+ }
15
+ return vec4<f32>(min(alpha, 1.0));
16
+ }
17
+ `;
@@ -0,0 +1,2 @@
1
+ export declare const StencilWriteFragment = "\nstruct FragmentInput {\n @builtin(position) position: vec4<f32>,\n @location(0) bezier: vec2<f32>,\n}\n\n@fragment\nfn main(input: FragmentInput) -> @location(0) vec4<f32> {\n let f_val = input.bezier.x * input.bezier.x - input.bezier.y;\n let dx = dpdx(f_val);\n let dy = dpdy(f_val);\n let dist = f_val * inverseSqrt(dx * dx + dy * dy);\n let alpha = smoothstep(0.5, -0.5, dist);\n\n if (alpha <= 0.001) {\n discard;\n }\n\n return vec4<f32>(0.0, 0.0, 0.0, min(alpha, 1.0));\n}\n";
2
+ export declare const StencilFillFragment = "\nstruct FragmentInput {\n @builtin(position) position: vec4<f32>,\n @location(0) color: vec4<f32>,\n}\n\n@fragment\nfn main(input: FragmentInput) -> @location(0) vec4<f32> {\n let a = input.color.a;\n return vec4<f32>(input.color.r * a, input.color.g * a, input.color.b * a, a);\n}\n";
@@ -0,0 +1,33 @@
1
+ export const StencilWriteFragment = /* wgsl */ `
2
+ struct FragmentInput {
3
+ @builtin(position) position: vec4<f32>,
4
+ @location(0) bezier: vec2<f32>,
5
+ }
6
+
7
+ @fragment
8
+ fn main(input: FragmentInput) -> @location(0) vec4<f32> {
9
+ let f_val = input.bezier.x * input.bezier.x - input.bezier.y;
10
+ let dx = dpdx(f_val);
11
+ let dy = dpdy(f_val);
12
+ let dist = f_val * inverseSqrt(dx * dx + dy * dy);
13
+ let alpha = smoothstep(0.5, -0.5, dist);
14
+
15
+ if (alpha <= 0.001) {
16
+ discard;
17
+ }
18
+
19
+ return vec4<f32>(0.0, 0.0, 0.0, min(alpha, 1.0));
20
+ }
21
+ `;
22
+ export const StencilFillFragment = /* wgsl */ `
23
+ struct FragmentInput {
24
+ @builtin(position) position: vec4<f32>,
25
+ @location(0) color: vec4<f32>,
26
+ }
27
+
28
+ @fragment
29
+ fn main(input: FragmentInput) -> @location(0) vec4<f32> {
30
+ let a = input.color.a;
31
+ return vec4<f32>(input.color.r * a, input.color.g * a, input.color.b * a, a);
32
+ }
33
+ `;
@@ -0,0 +1 @@
1
+ export declare const BasicVertex = "\noverride yFlipSign: f32 = 1.0;\n\nstruct VertexInput {\n @location(0) position: vec2<f32>,\n @location(1) texCoord: vec2<f32>,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n @location(1) color: vec4<f32>,\n}\n\nstruct Uniforms {\n matrix: mat3x3<f32>,\n color: vec4<f32>,\n alpha: 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 pos = uniforms.matrix * vec3<f32>(input.position, 1.0);\n let ndc = pos.xy * 2.0 - 1.0;\n output.position = vec4<f32>(ndc.x, ndc.y * yFlipSign, 0.0, 1.0);\n output.texCoord = input.texCoord;\n let premultipliedColor = vec4<f32>(\n uniforms.color.rgb * uniforms.color.a * uniforms.alpha,\n uniforms.color.a * uniforms.alpha\n );\n output.color = premultipliedColor;\n return output;\n}\n";
@@ -0,0 +1,37 @@
1
+ export const BasicVertex = /* wgsl */ `
2
+ override yFlipSign: f32 = 1.0;
3
+
4
+ struct VertexInput {
5
+ @location(0) position: vec2<f32>,
6
+ @location(1) texCoord: vec2<f32>,
7
+ }
8
+
9
+ struct VertexOutput {
10
+ @builtin(position) position: vec4<f32>,
11
+ @location(0) texCoord: vec2<f32>,
12
+ @location(1) color: vec4<f32>,
13
+ }
14
+
15
+ struct Uniforms {
16
+ matrix: mat3x3<f32>,
17
+ color: vec4<f32>,
18
+ alpha: f32,
19
+ }
20
+
21
+ @group(0) @binding(0) var<uniform> uniforms: Uniforms;
22
+
23
+ @vertex
24
+ fn main(input: VertexInput) -> VertexOutput {
25
+ var output: VertexOutput;
26
+ let pos = uniforms.matrix * vec3<f32>(input.position, 1.0);
27
+ let ndc = pos.xy * 2.0 - 1.0;
28
+ output.position = vec4<f32>(ndc.x, ndc.y * yFlipSign, 0.0, 1.0);
29
+ output.texCoord = input.texCoord;
30
+ let premultipliedColor = vec4<f32>(
31
+ uniforms.color.rgb * uniforms.color.a * uniforms.alpha,
32
+ uniforms.color.a * uniforms.alpha
33
+ );
34
+ output.color = premultipliedColor;
35
+ return output;
36
+ }
37
+ `;
@@ -0,0 +1 @@
1
+ export declare const BitmapFillVertex = "\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 @location(1) color: vec4<f32>,\n @location(2) worldPos: vec2<f32>,\n}\n\nstruct BitmapUniforms {\n bitmapMatrix: mat3x3<f32>,\n width: f32,\n height: f32,\n repeat: f32,\n _pad: 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> bitmap: BitmapUniforms;\n\n@vertex\nfn main(input: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n let matrix = mat3x3<f32>(bitmap.contextMatrix0.xyz, bitmap.contextMatrix1.xyz, bitmap.contextMatrix2.xyz);\n let transformedPos = matrix * vec3<f32>(input.position, 1.0);\n let clipX = transformedPos.x * 2.0 - 1.0;\n let clipY = (transformedPos.y * 2.0 - 1.0) * yFlipSign;\n output.position = vec4<f32>(clipX, clipY, 0.0, 1.0);\n output.bezier = input.bezier;\n output.color = bitmap.color;\n output.worldPos = input.position;\n return output;\n}\n";
@@ -0,0 +1,43 @@
1
+ export const BitmapFillVertex = /* 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
+ @location(1) color: vec4<f32>,
13
+ @location(2) worldPos: vec2<f32>,
14
+ }
15
+
16
+ struct BitmapUniforms {
17
+ bitmapMatrix: mat3x3<f32>,
18
+ width: f32,
19
+ height: f32,
20
+ repeat: f32,
21
+ _pad: f32,
22
+ color: vec4<f32>,
23
+ contextMatrix0: vec4<f32>,
24
+ contextMatrix1: vec4<f32>,
25
+ contextMatrix2: vec4<f32>,
26
+ }
27
+
28
+ @group(0) @binding(0) var<uniform> bitmap: BitmapUniforms;
29
+
30
+ @vertex
31
+ fn main(input: VertexInput) -> VertexOutput {
32
+ var output: VertexOutput;
33
+ let matrix = mat3x3<f32>(bitmap.contextMatrix0.xyz, bitmap.contextMatrix1.xyz, bitmap.contextMatrix2.xyz);
34
+ let transformedPos = matrix * vec3<f32>(input.position, 1.0);
35
+ let clipX = transformedPos.x * 2.0 - 1.0;
36
+ let clipY = (transformedPos.y * 2.0 - 1.0) * yFlipSign;
37
+ output.position = vec4<f32>(clipX, clipY, 0.0, 1.0);
38
+ output.bezier = input.bezier;
39
+ output.color = bitmap.color;
40
+ output.worldPos = input.position;
41
+ return output;
42
+ }
43
+ `;
@@ -0,0 +1 @@
1
+ export declare const FillVertex = "\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 @location(1) 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.bezier = input.bezier;\n output.color = uniforms.color;\n return output;\n}\n";
@@ -0,0 +1,35 @@
1
+ export const FillVertex = /* 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
+ @location(1) color: vec4<f32>,
13
+ }
14
+
15
+ struct FillUniforms {
16
+ color: vec4<f32>,
17
+ matrix0: vec4<f32>,
18
+ matrix1: vec4<f32>,
19
+ matrix2: vec4<f32>,
20
+ }
21
+
22
+ @group(0) @binding(0) var<uniform> uniforms: FillUniforms;
23
+
24
+ @vertex
25
+ fn main(input: VertexInput) -> VertexOutput {
26
+ var output: VertexOutput;
27
+ let matrix = mat3x3<f32>(uniforms.matrix0.xyz, uniforms.matrix1.xyz, uniforms.matrix2.xyz);
28
+ let transformed = matrix * vec3<f32>(input.position, 1.0);
29
+ let ndc = transformed.xy * 2.0 - 1.0;
30
+ output.position = vec4<f32>(ndc.x, ndc.y * yFlipSign, 0.0, 1.0);
31
+ output.bezier = input.bezier;
32
+ output.color = uniforms.color;
33
+ return output;
34
+ }
35
+ `;
@@ -0,0 +1,12 @@
1
+ export declare const BlurFilterVertex: string;
2
+ export declare const ComplexBlendVertex: string;
3
+ export declare const ComplexBlendCopyVertex: string;
4
+ export declare const NodeClearVertex = "\nstruct VertexInput {\n @location(0) position: vec2<f32>,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n}\n\n@vertex\nfn main(input: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n let ndc = input.position * 2.0 - 1.0;\n output.position = vec4<f32>(ndc.x, ndc.y, 0.0, 1.0);\n return output;\n}\n";
5
+ export declare const PositionedTextureVertex = "\nstruct PositionUniforms {\n offset: vec2<f32>,\n size: vec2<f32>,\n viewport: vec2<f32>,\n padding: vec2<f32>,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: PositionUniforms;\n\n@vertex\nfn main(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {\n var output: VertexOutput;\n\n const vertices = array<vec2<f32>, 6>(\n vec2<f32>(0.0, 0.0),\n vec2<f32>(1.0, 0.0),\n vec2<f32>(0.0, 1.0),\n vec2<f32>(0.0, 1.0),\n vec2<f32>(1.0, 0.0),\n vec2<f32>(1.0, 1.0)\n );\n let vertex = vertices[vertexIndex];\n output.texCoord = vec2<f32>(vertex.x, 1.0 - vertex.y);\n var position = vertex * uniforms.size + uniforms.offset;\n position = position / uniforms.viewport;\n position = position * 2.0 - 1.0;\n output.position = vec4<f32>(position.x, -position.y, 0.0, 1.0);\n return output;\n}\n";
6
+ export declare const BitmapSyncVertex = "\nstruct BitmapSyncUniforms {\n nodeRect: vec4<f32>,\n textureSize: vec2<f32>,\n padding: vec2<f32>,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: BitmapSyncUniforms;\n\n@vertex\nfn main(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {\n var output: VertexOutput;\n\n const vertices = array<vec2<f32>, 6>(\n vec2<f32>(0.0, 0.0),\n vec2<f32>(1.0, 0.0),\n vec2<f32>(0.0, 1.0),\n vec2<f32>(0.0, 1.0),\n vec2<f32>(1.0, 0.0),\n vec2<f32>(1.0, 1.0)\n );\n let vertex = vertices[vertexIndex];\n let pixelPos = vec2<f32>(\n uniforms.nodeRect.x + vertex.x * uniforms.nodeRect.z,\n uniforms.nodeRect.y + vertex.y * uniforms.nodeRect.w\n );\n let ndc = pixelPos / uniforms.textureSize * 2.0 - 1.0;\n output.position = vec4<f32>(ndc.x, -ndc.y, 0.0, 1.0);\n output.texCoord = pixelPos / uniforms.textureSize;\n return output;\n}\n";
7
+ export declare const BlendModeVertex = "\nstruct VertexInput {\n @location(0) position: vec2<f32>,\n @location(1) texCoord: vec2<f32>,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}\n\n@vertex\nfn main(input: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n output.position = vec4<f32>(input.position, 0.0, 1.0);\n output.texCoord = input.texCoord;\n return output;\n}\n";
8
+ export declare const TextureScaleVertex: string;
9
+ export declare const TextureScaleBlendVertex: string;
10
+ export declare const ComplexBlendScaleVertex: string;
11
+ export declare const ComplexBlendOutputVertex: string;
12
+ export declare const FilterComplexBlendOutputVertex: string;