@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,43 @@
1
+ export const BitmapFillFragment = /* wgsl */ `
2
+ struct VertexOutput {
3
+ @builtin(position) position: vec4<f32>,
4
+ @location(0) bezier: vec2<f32>,
5
+ @location(1) color: vec4<f32>,
6
+ @location(2) worldPos: vec2<f32>,
7
+ }
8
+
9
+ struct BitmapUniforms {
10
+ bitmapMatrix: mat3x3<f32>,
11
+ textureWidth: f32,
12
+ textureHeight: f32,
13
+ repeat: f32,
14
+ _pad: f32,
15
+ }
16
+
17
+ @group(0) @binding(0) var<uniform> uniforms: BitmapUniforms;
18
+ @group(0) @binding(1) var bitmapSampler: sampler;
19
+ @group(0) @binding(2) var bitmapTexture: texture_2d<f32>;
20
+
21
+ @fragment
22
+ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
23
+ let u = input.bezier.x;
24
+ let v = input.bezier.y;
25
+ if (abs(u - 0.5) > 0.001 || abs(v - 0.5) > 0.001) {
26
+ let d = u * u - v;
27
+ if (d > 0.0) {
28
+ discard;
29
+ }
30
+ }
31
+ let transformedPos = uniforms.bitmapMatrix * vec3<f32>(input.worldPos, 1.0);
32
+ var uv = vec2<f32>(
33
+ transformedPos.x / uniforms.textureWidth,
34
+ transformedPos.y / uniforms.textureHeight
35
+ );
36
+ if (uniforms.repeat > 0.5) {
37
+ uv = fract(uv);
38
+ }
39
+ let bitmapColor = textureSampleLevel(bitmapTexture, bitmapSampler, uv, 0);
40
+ let alpha = bitmapColor.a * input.color.a;
41
+ return vec4<f32>(bitmapColor.rgb * input.color.a, alpha);
42
+ }
43
+ `;
@@ -0,0 +1,8 @@
1
+ export declare const MultiplyBlendFragment: string;
2
+ export declare const ScreenBlendFragment: string;
3
+ export declare const LightenBlendFragment: string;
4
+ export declare const DarkenBlendFragment: string;
5
+ export declare const OverlayBlendFragment: string;
6
+ export declare const HardLightBlendFragment: string;
7
+ export declare const DifferenceBlendFragment: string;
8
+ export declare const SubtractBlendFragment: string;
@@ -0,0 +1,63 @@
1
+ /**
2
+ * @description ブレンドシェーダー共通ヘッダー
3
+ */
4
+ const BLEND_HEADER = /* wgsl */ `struct VertexOutput {
5
+ @builtin(position) position: vec4<f32>,
6
+ @location(0) texCoord: vec2<f32>,
7
+ }
8
+
9
+ struct BlendUniforms {
10
+ colorTransform: vec4<f32>,
11
+ addColor: vec4<f32>,
12
+ }
13
+
14
+ @group(0) @binding(0) var<uniform> uniforms: BlendUniforms;
15
+ @group(0) @binding(1) var sampler0: sampler;
16
+ @group(0) @binding(2) var texture0: texture_2d<f32>;
17
+ @group(0) @binding(3) var texture1: texture_2d<f32>;
18
+ `;
19
+ /**
20
+ * @description alpha guard 付きブレンドシェーダーを生成
21
+ */
22
+ const createBlendFragment = (blendLogic) => BLEND_HEADER + /* wgsl */ `
23
+ @fragment
24
+ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
25
+ var src = textureSampleLevel(texture1, sampler0, input.texCoord, 0);
26
+ var dst = textureSampleLevel(texture0, sampler0, input.texCoord, 0);
27
+ if (src.a == 0.0) { return dst; }
28
+ if (dst.a == 0.0) { return src; }
29
+ src = src * uniforms.colorTransform + vec4<f32>(uniforms.addColor.rgb, 0.0);
30
+ let a = src - src * dst.a;
31
+ let b = dst - dst * src.a;
32
+ var srcRgb = src.rgb / src.a;
33
+ var dstRgb = dst.rgb / dst.a;
34
+ ${blendLogic}
35
+ c = vec4<f32>(c.rgb * c.a, c.a);
36
+ return a + b + c;
37
+ }
38
+ `;
39
+ export const MultiplyBlendFragment = BLEND_HEADER + /* wgsl */ `
40
+ @fragment
41
+ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
42
+ var src = textureSampleLevel(texture1, sampler0, input.texCoord, 0);
43
+ var dst = textureSampleLevel(texture0, sampler0, input.texCoord, 0);
44
+ src = src * uniforms.colorTransform + vec4<f32>(uniforms.addColor.rgb, 0.0);
45
+ let a = src - src * dst.a;
46
+ let b = dst - dst * src.a;
47
+ let c = src * dst;
48
+ return a + b + c;
49
+ }
50
+ `;
51
+ export const ScreenBlendFragment = createBlendFragment(" var c = vec4<f32>(srcRgb + dstRgb - srcRgb * dstRgb, src.a * dst.a);");
52
+ export const LightenBlendFragment = createBlendFragment(" var c = vec4<f32>(max(srcRgb, dstRgb), src.a * dst.a);");
53
+ export const DarkenBlendFragment = createBlendFragment(" var c = vec4<f32>(min(srcRgb, dstRgb), src.a * dst.a);");
54
+ export const OverlayBlendFragment = createBlendFragment(` let s = step(vec3<f32>(0.5), dstRgb);
55
+ let lo = 2.0 * srcRgb * dstRgb;
56
+ let hi = 1.0 - 2.0 * (1.0 - srcRgb) * (1.0 - dstRgb);
57
+ var c = vec4<f32>(mix(lo, hi, s), src.a * dst.a);`);
58
+ export const HardLightBlendFragment = createBlendFragment(` let s = step(vec3<f32>(0.5), srcRgb);
59
+ let lo = 2.0 * srcRgb * dstRgb;
60
+ let hi = 1.0 - 2.0 * (1.0 - srcRgb) * (1.0 - dstRgb);
61
+ var c = vec4<f32>(mix(lo, hi, s), src.a * dst.a);`);
62
+ export const DifferenceBlendFragment = createBlendFragment(" var c = vec4<f32>(abs(srcRgb - dstRgb), src.a * dst.a);");
63
+ export const SubtractBlendFragment = createBlendFragment(" var c = vec4<f32>(max(dstRgb - srcRgb, vec3<f32>(0.0)), src.a * dst.a);");
@@ -0,0 +1,6 @@
1
+ export declare const GlowFilterFragment = "\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}\n\noverride IS_INNER: u32 = 0u;\noverride IS_KNOCKOUT: u32 = 0u;\n\nstruct GlowUniforms {\n color: vec4<f32>,\n baseScale: vec2<f32>,\n baseOffset: vec2<f32>,\n blurScale: vec2<f32>,\n blurOffset: vec2<f32>,\n strength: f32,\n _padding1: f32,\n _padding2: f32,\n _padding3: f32,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: GlowUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var blurTexture: texture_2d<f32>;\n@group(0) @binding(3) var baseTexture: texture_2d<f32>;\n\nfn isInside(uv: vec2<f32>) -> f32 {\n let s = step(vec2<f32>(0.0), uv) * step(uv, vec2<f32>(1.0));\n return s.x * s.y;\n}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n let baseUV = input.texCoord * uniforms.baseScale - uniforms.baseOffset;\n let baseColor = textureSampleLevel(baseTexture, textureSampler, baseUV, 0) * isInside(baseUV);\n\n let blurUV = input.texCoord * uniforms.blurScale - uniforms.blurOffset;\n let blurColor = textureSampleLevel(blurTexture, textureSampler, blurUV, 0) * isInside(blurUV);\n\n var rawAlpha = blurColor.a;\n if (IS_INNER == 1u) {\n rawAlpha = 1.0 - rawAlpha;\n }\n let glowAlpha = clamp(rawAlpha * uniforms.strength, 0.0, 1.0);\n let glowColor = vec4<f32>(uniforms.color.rgb * glowAlpha, uniforms.color.a * glowAlpha);\n if (IS_INNER == 1u) {\n let innerGlow = glowColor * baseColor.a;\n if (IS_KNOCKOUT == 1u) {\n return innerGlow;\n } else {\n return innerGlow + baseColor * (1.0 - glowColor.a);\n }\n } else {\n if (IS_KNOCKOUT == 1u) {\n return glowColor * (1.0 - baseColor.a);\n } else {\n return baseColor + glowColor * (1.0 - baseColor.a);\n }\n }\n}\n";
2
+ export declare const DropShadowFilterFragment = "\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}\n\noverride IS_INNER: u32 = 0u;\noverride IS_KNOCKOUT: u32 = 0u;\noverride IS_HIDE_OBJECT: u32 = 0u;\n\nstruct DropShadowUniforms {\n color: vec4<f32>,\n baseScale: vec2<f32>,\n baseOffset: vec2<f32>,\n blurScale: vec2<f32>,\n blurOffset: vec2<f32>,\n strength: f32,\n _padding1: f32,\n _padding2: f32,\n _padding3: f32,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: DropShadowUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var blurTexture: texture_2d<f32>;\n@group(0) @binding(3) var baseTexture: texture_2d<f32>;\n\nfn isInside(uv: vec2<f32>) -> f32 {\n let s = step(vec2<f32>(0.0), uv) * step(uv, vec2<f32>(1.0));\n return s.x * s.y;\n}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n let baseUV = input.texCoord * uniforms.baseScale - uniforms.baseOffset;\n let baseColor = textureSampleLevel(baseTexture, textureSampler, baseUV, 0) * isInside(baseUV);\n\n let blurUV = input.texCoord * uniforms.blurScale - uniforms.blurOffset;\n let blur = textureSampleLevel(blurTexture, textureSampler, blurUV, 0) * isInside(blurUV);\n\n var rawAlpha = blur.a;\n if (IS_INNER == 1u) {\n rawAlpha = 1.0 - rawAlpha;\n }\n let shadowAlpha = clamp(rawAlpha * uniforms.strength, 0.0, 1.0);\n let shadowColor = vec4<f32>(uniforms.color.rgb * shadowAlpha, uniforms.color.a * shadowAlpha);\n\n if (IS_INNER == 1u) {\n let innerShadow = shadowColor * baseColor.a;\n if (IS_KNOCKOUT == 1u) {\n return innerShadow;\n } else {\n return innerShadow + baseColor * (1.0 - shadowColor.a);\n }\n } else {\n if (IS_HIDE_OBJECT == 1u) {\n return shadowColor;\n } else if (IS_KNOCKOUT == 1u) {\n return shadowColor * (1.0 - baseColor.a);\n } else {\n return shadowColor * (1.0 - baseColor.a) + baseColor;\n }\n }\n}\n";
3
+ export declare const GradientGlowFilterFragment = "\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}\n\noverride GLOW_TYPE: u32 = 0u;\noverride IS_KNOCKOUT: u32 = 0u;\n\nstruct GradientGlowUniforms {\n strength: f32,\n _padding1: f32,\n _padding2: f32,\n _padding3: f32,\n baseScale: vec2<f32>,\n baseOffset: vec2<f32>,\n blurScale: vec2<f32>,\n blurOffset: vec2<f32>,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: GradientGlowUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var blurTexture: texture_2d<f32>;\n@group(0) @binding(3) var baseTexture: texture_2d<f32>;\n@group(0) @binding(4) var gradientLUT: texture_2d<f32>;\n\nfn isInside(uv: vec2<f32>) -> f32 {\n let s = step(vec2<f32>(0.0), uv) * step(uv, vec2<f32>(1.0));\n return s.x * s.y;\n}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n let baseUV = input.texCoord * uniforms.baseScale - uniforms.baseOffset;\n let base = textureSampleLevel(baseTexture, textureSampler, baseUV, 0) * isInside(baseUV);\n\n let blurUV = input.texCoord * uniforms.blurScale - uniforms.blurOffset;\n var blur = textureSampleLevel(blurTexture, textureSampler, blurUV, 0) * isInside(blurUV);\n\n blur.a = clamp(blur.a * uniforms.strength, 0.0, 1.0);\n let glowColor = textureSampleLevel(gradientLUT, textureSampler, vec2<f32>(blur.a, 0.5), 0);\n var result: vec4<f32>;\n if (GLOW_TYPE == 0u) {\n if (IS_KNOCKOUT == 1u) {\n result = glowColor;\n } else {\n result = base - base * glowColor.a + glowColor;\n }\n } else if (GLOW_TYPE == 1u) {\n if (IS_KNOCKOUT == 1u) {\n result = glowColor * base.a;\n } else {\n result = glowColor * base.a + base * (1.0 - glowColor.a);\n }\n } else {\n if (IS_KNOCKOUT == 1u) {\n result = glowColor - glowColor * base.a;\n } else {\n result = base + glowColor - glowColor * base.a;\n }\n }\n return result;\n}\n";
4
+ export declare const GradientBevelFilterFragment = "\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}\n\noverride BEVEL_TYPE: u32 = 0u;\noverride IS_KNOCKOUT: u32 = 0u;\n\nstruct GradientBevelUniforms {\n strength: f32,\n _padding1: f32,\n _padding2: f32,\n _padding3: f32,\n baseScale: vec2<f32>,\n baseOffset: vec2<f32>,\n blurScale: vec2<f32>,\n blurOffset: vec2<f32>,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: GradientBevelUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var blurTexture: texture_2d<f32>;\n@group(0) @binding(3) var baseTexture: texture_2d<f32>;\n@group(0) @binding(4) var gradientLUT: texture_2d<f32>;\n\nfn isInside(uv: vec2<f32>) -> f32 {\n let s = step(vec2<f32>(0.0), uv) * step(uv, vec2<f32>(1.0));\n return s.x * s.y;\n}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n let baseUV = input.texCoord * uniforms.baseScale - uniforms.baseOffset;\n let base = textureSampleLevel(baseTexture, textureSampler, baseUV, 0) * isInside(baseUV);\n\n let blurUV = input.texCoord * uniforms.blurScale - uniforms.blurOffset;\n let blur1 = textureSampleLevel(blurTexture, textureSampler, blurUV, 0) * isInside(blurUV);\n\n let mirrorUV = (1.0 - input.texCoord) * uniforms.blurScale - uniforms.blurOffset;\n let blur2 = textureSampleLevel(blurTexture, textureSampler, mirrorUV, 0) * isInside(mirrorUV);\n\n var highlightAlpha = blur1.a - blur2.a;\n var shadowAlpha = blur2.a - blur1.a;\n highlightAlpha = clamp(highlightAlpha * uniforms.strength, 0.0, 1.0);\n shadowAlpha = clamp(shadowAlpha * uniforms.strength, 0.0, 1.0);\n\n let lutCoord = 0.5019607843137255 - 0.5019607843137255 * shadowAlpha + 0.4980392156862745 * highlightAlpha;\n let bevelColor = textureSampleLevel(gradientLUT, textureSampler, vec2<f32>(lutCoord, 0.5), 0);\n\n var result: vec4<f32>;\n if (BEVEL_TYPE == 0u) {\n if (IS_KNOCKOUT == 1u) {\n result = bevelColor;\n } else {\n result = base - base * bevelColor.a + bevelColor;\n }\n } else if (BEVEL_TYPE == 1u) {\n if (IS_KNOCKOUT == 1u) {\n result = bevelColor * base.a;\n } else {\n result = bevelColor * base.a + base * (1.0 - bevelColor.a);\n }\n } else {\n if (IS_KNOCKOUT == 1u) {\n result = bevelColor - bevelColor * base.a;\n } else {\n result = base + bevelColor - bevelColor * base.a;\n }\n }\n\n return result;\n}\n";
5
+ export declare const BevelFilterFragment = "\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}\n\noverride BEVEL_TYPE: u32 = 0u;\noverride IS_KNOCKOUT: u32 = 0u;\n\nstruct BevelUniforms {\n highlightColor: vec4<f32>,\n shadowColor: vec4<f32>,\n strength: f32,\n _padding1: f32,\n _padding2: f32,\n _padding3: f32,\n baseScale: vec2<f32>,\n baseOffset: vec2<f32>,\n blurScale: vec2<f32>,\n blurOffset: vec2<f32>,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: BevelUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var blurTexture: texture_2d<f32>;\n@group(0) @binding(3) var baseTexture: texture_2d<f32>;\n\nfn isInside(uv: vec2<f32>) -> f32 {\n let s = step(vec2<f32>(0.0), uv) * step(uv, vec2<f32>(1.0));\n return s.x * s.y;\n}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n let baseUV = input.texCoord * uniforms.baseScale - uniforms.baseOffset;\n let base = textureSampleLevel(baseTexture, textureSampler, baseUV, 0) * isInside(baseUV);\n\n let blurUV = input.texCoord * uniforms.blurScale - uniforms.blurOffset;\n let blur1 = textureSampleLevel(blurTexture, textureSampler, blurUV, 0) * isInside(blurUV);\n\n let mirrorUV = (1.0 - input.texCoord) * uniforms.blurScale - uniforms.blurOffset;\n let blur2 = textureSampleLevel(blurTexture, textureSampler, mirrorUV, 0) * isInside(mirrorUV);\n\n var highlightAlpha = blur1.a - blur2.a;\n var shadowAlpha = blur2.a - blur1.a;\n highlightAlpha = clamp(highlightAlpha * uniforms.strength, 0.0, 1.0);\n shadowAlpha = clamp(shadowAlpha * uniforms.strength, 0.0, 1.0);\n\n let bevelColor = uniforms.highlightColor * highlightAlpha + uniforms.shadowColor * shadowAlpha;\n var result: vec4<f32>;\n if (BEVEL_TYPE == 0u) {\n if (IS_KNOCKOUT == 1u) {\n result = bevelColor;\n } else {\n result = base - base * bevelColor.a + bevelColor;\n }\n } else if (BEVEL_TYPE == 1u) {\n if (IS_KNOCKOUT == 1u) {\n result = bevelColor * base.a;\n } else {\n result = bevelColor * base.a + base * (1.0 - bevelColor.a);\n }\n } else {\n if (IS_KNOCKOUT == 1u) {\n result = bevelColor - bevelColor * base.a;\n } else {\n result = base + bevelColor - bevelColor * base.a;\n }\n }\n\n return result;\n}\n";
6
+ export declare const BevelBaseFragment = "\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}\n\nstruct BevelBaseUniforms {\n offset: vec2<f32>,\n _padding: vec2<f32>,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: BevelBaseUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var sourceTexture: texture_2d<f32>;\n\nfn isInside(uv: vec2<f32>) -> f32 {\n let s = step(vec2<f32>(0.0), uv) * step(uv, vec2<f32>(1.0));\n return s.x * s.y;\n}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n let original = textureSampleLevel(sourceTexture, textureSampler, input.texCoord, 0);\n let shiftedUV = input.texCoord - uniforms.offset;\n let shifted = textureSampleLevel(sourceTexture, textureSampler, shiftedUV, 0) * isInside(shiftedUV);\n return original * (1.0 - shifted.a);\n}\n";
@@ -0,0 +1,324 @@
1
+ import { WgslIsInside, WgslVertexOutput } from "../common/SharedWgsl";
2
+ export const GlowFilterFragment = /* wgsl */ `
3
+ ${WgslVertexOutput}
4
+
5
+ override IS_INNER: u32 = 0u;
6
+ override IS_KNOCKOUT: u32 = 0u;
7
+
8
+ struct GlowUniforms {
9
+ color: vec4<f32>,
10
+ baseScale: vec2<f32>,
11
+ baseOffset: vec2<f32>,
12
+ blurScale: vec2<f32>,
13
+ blurOffset: vec2<f32>,
14
+ strength: f32,
15
+ _padding1: f32,
16
+ _padding2: f32,
17
+ _padding3: f32,
18
+ }
19
+
20
+ @group(0) @binding(0) var<uniform> uniforms: GlowUniforms;
21
+ @group(0) @binding(1) var textureSampler: sampler;
22
+ @group(0) @binding(2) var blurTexture: texture_2d<f32>;
23
+ @group(0) @binding(3) var baseTexture: texture_2d<f32>;
24
+ ${WgslIsInside}
25
+
26
+ @fragment
27
+ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
28
+ let baseUV = input.texCoord * uniforms.baseScale - uniforms.baseOffset;
29
+ let baseColor = textureSampleLevel(baseTexture, textureSampler, baseUV, 0) * isInside(baseUV);
30
+
31
+ let blurUV = input.texCoord * uniforms.blurScale - uniforms.blurOffset;
32
+ let blurColor = textureSampleLevel(blurTexture, textureSampler, blurUV, 0) * isInside(blurUV);
33
+
34
+ var rawAlpha = blurColor.a;
35
+ if (IS_INNER == 1u) {
36
+ rawAlpha = 1.0 - rawAlpha;
37
+ }
38
+ let glowAlpha = clamp(rawAlpha * uniforms.strength, 0.0, 1.0);
39
+ let glowColor = vec4<f32>(uniforms.color.rgb * glowAlpha, uniforms.color.a * glowAlpha);
40
+ if (IS_INNER == 1u) {
41
+ let innerGlow = glowColor * baseColor.a;
42
+ if (IS_KNOCKOUT == 1u) {
43
+ return innerGlow;
44
+ } else {
45
+ return innerGlow + baseColor * (1.0 - glowColor.a);
46
+ }
47
+ } else {
48
+ if (IS_KNOCKOUT == 1u) {
49
+ return glowColor * (1.0 - baseColor.a);
50
+ } else {
51
+ return baseColor + glowColor * (1.0 - baseColor.a);
52
+ }
53
+ }
54
+ }
55
+ `;
56
+ export const DropShadowFilterFragment = /* wgsl */ `
57
+ ${WgslVertexOutput}
58
+
59
+ override IS_INNER: u32 = 0u;
60
+ override IS_KNOCKOUT: u32 = 0u;
61
+ override IS_HIDE_OBJECT: u32 = 0u;
62
+
63
+ struct DropShadowUniforms {
64
+ color: vec4<f32>,
65
+ baseScale: vec2<f32>,
66
+ baseOffset: vec2<f32>,
67
+ blurScale: vec2<f32>,
68
+ blurOffset: vec2<f32>,
69
+ strength: f32,
70
+ _padding1: f32,
71
+ _padding2: f32,
72
+ _padding3: f32,
73
+ }
74
+
75
+ @group(0) @binding(0) var<uniform> uniforms: DropShadowUniforms;
76
+ @group(0) @binding(1) var textureSampler: sampler;
77
+ @group(0) @binding(2) var blurTexture: texture_2d<f32>;
78
+ @group(0) @binding(3) var baseTexture: texture_2d<f32>;
79
+ ${WgslIsInside}
80
+
81
+ @fragment
82
+ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
83
+ let baseUV = input.texCoord * uniforms.baseScale - uniforms.baseOffset;
84
+ let baseColor = textureSampleLevel(baseTexture, textureSampler, baseUV, 0) * isInside(baseUV);
85
+
86
+ let blurUV = input.texCoord * uniforms.blurScale - uniforms.blurOffset;
87
+ let blur = textureSampleLevel(blurTexture, textureSampler, blurUV, 0) * isInside(blurUV);
88
+
89
+ var rawAlpha = blur.a;
90
+ if (IS_INNER == 1u) {
91
+ rawAlpha = 1.0 - rawAlpha;
92
+ }
93
+ let shadowAlpha = clamp(rawAlpha * uniforms.strength, 0.0, 1.0);
94
+ let shadowColor = vec4<f32>(uniforms.color.rgb * shadowAlpha, uniforms.color.a * shadowAlpha);
95
+
96
+ if (IS_INNER == 1u) {
97
+ let innerShadow = shadowColor * baseColor.a;
98
+ if (IS_KNOCKOUT == 1u) {
99
+ return innerShadow;
100
+ } else {
101
+ return innerShadow + baseColor * (1.0 - shadowColor.a);
102
+ }
103
+ } else {
104
+ if (IS_HIDE_OBJECT == 1u) {
105
+ return shadowColor;
106
+ } else if (IS_KNOCKOUT == 1u) {
107
+ return shadowColor * (1.0 - baseColor.a);
108
+ } else {
109
+ return shadowColor * (1.0 - baseColor.a) + baseColor;
110
+ }
111
+ }
112
+ }
113
+ `;
114
+ export const GradientGlowFilterFragment = /* wgsl */ `
115
+ ${WgslVertexOutput}
116
+
117
+ override GLOW_TYPE: u32 = 0u;
118
+ override IS_KNOCKOUT: u32 = 0u;
119
+
120
+ struct GradientGlowUniforms {
121
+ strength: f32,
122
+ _padding1: f32,
123
+ _padding2: f32,
124
+ _padding3: f32,
125
+ baseScale: vec2<f32>,
126
+ baseOffset: vec2<f32>,
127
+ blurScale: vec2<f32>,
128
+ blurOffset: vec2<f32>,
129
+ }
130
+
131
+ @group(0) @binding(0) var<uniform> uniforms: GradientGlowUniforms;
132
+ @group(0) @binding(1) var textureSampler: sampler;
133
+ @group(0) @binding(2) var blurTexture: texture_2d<f32>;
134
+ @group(0) @binding(3) var baseTexture: texture_2d<f32>;
135
+ @group(0) @binding(4) var gradientLUT: texture_2d<f32>;
136
+ ${WgslIsInside}
137
+
138
+ @fragment
139
+ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
140
+ let baseUV = input.texCoord * uniforms.baseScale - uniforms.baseOffset;
141
+ let base = textureSampleLevel(baseTexture, textureSampler, baseUV, 0) * isInside(baseUV);
142
+
143
+ let blurUV = input.texCoord * uniforms.blurScale - uniforms.blurOffset;
144
+ var blur = textureSampleLevel(blurTexture, textureSampler, blurUV, 0) * isInside(blurUV);
145
+
146
+ blur.a = clamp(blur.a * uniforms.strength, 0.0, 1.0);
147
+ let glowColor = textureSampleLevel(gradientLUT, textureSampler, vec2<f32>(blur.a, 0.5), 0);
148
+ var result: vec4<f32>;
149
+ if (GLOW_TYPE == 0u) {
150
+ if (IS_KNOCKOUT == 1u) {
151
+ result = glowColor;
152
+ } else {
153
+ result = base - base * glowColor.a + glowColor;
154
+ }
155
+ } else if (GLOW_TYPE == 1u) {
156
+ if (IS_KNOCKOUT == 1u) {
157
+ result = glowColor * base.a;
158
+ } else {
159
+ result = glowColor * base.a + base * (1.0 - glowColor.a);
160
+ }
161
+ } else {
162
+ if (IS_KNOCKOUT == 1u) {
163
+ result = glowColor - glowColor * base.a;
164
+ } else {
165
+ result = base + glowColor - glowColor * base.a;
166
+ }
167
+ }
168
+ return result;
169
+ }
170
+ `;
171
+ export const GradientBevelFilterFragment = /* wgsl */ `
172
+ ${WgslVertexOutput}
173
+
174
+ override BEVEL_TYPE: u32 = 0u;
175
+ override IS_KNOCKOUT: u32 = 0u;
176
+
177
+ struct GradientBevelUniforms {
178
+ strength: f32,
179
+ _padding1: f32,
180
+ _padding2: f32,
181
+ _padding3: f32,
182
+ baseScale: vec2<f32>,
183
+ baseOffset: vec2<f32>,
184
+ blurScale: vec2<f32>,
185
+ blurOffset: vec2<f32>,
186
+ }
187
+
188
+ @group(0) @binding(0) var<uniform> uniforms: GradientBevelUniforms;
189
+ @group(0) @binding(1) var textureSampler: sampler;
190
+ @group(0) @binding(2) var blurTexture: texture_2d<f32>;
191
+ @group(0) @binding(3) var baseTexture: texture_2d<f32>;
192
+ @group(0) @binding(4) var gradientLUT: texture_2d<f32>;
193
+ ${WgslIsInside}
194
+
195
+ @fragment
196
+ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
197
+ let baseUV = input.texCoord * uniforms.baseScale - uniforms.baseOffset;
198
+ let base = textureSampleLevel(baseTexture, textureSampler, baseUV, 0) * isInside(baseUV);
199
+
200
+ let blurUV = input.texCoord * uniforms.blurScale - uniforms.blurOffset;
201
+ let blur1 = textureSampleLevel(blurTexture, textureSampler, blurUV, 0) * isInside(blurUV);
202
+
203
+ let mirrorUV = (1.0 - input.texCoord) * uniforms.blurScale - uniforms.blurOffset;
204
+ let blur2 = textureSampleLevel(blurTexture, textureSampler, mirrorUV, 0) * isInside(mirrorUV);
205
+
206
+ var highlightAlpha = blur1.a - blur2.a;
207
+ var shadowAlpha = blur2.a - blur1.a;
208
+ highlightAlpha = clamp(highlightAlpha * uniforms.strength, 0.0, 1.0);
209
+ shadowAlpha = clamp(shadowAlpha * uniforms.strength, 0.0, 1.0);
210
+
211
+ let lutCoord = 0.5019607843137255 - 0.5019607843137255 * shadowAlpha + 0.4980392156862745 * highlightAlpha;
212
+ let bevelColor = textureSampleLevel(gradientLUT, textureSampler, vec2<f32>(lutCoord, 0.5), 0);
213
+
214
+ var result: vec4<f32>;
215
+ if (BEVEL_TYPE == 0u) {
216
+ if (IS_KNOCKOUT == 1u) {
217
+ result = bevelColor;
218
+ } else {
219
+ result = base - base * bevelColor.a + bevelColor;
220
+ }
221
+ } else if (BEVEL_TYPE == 1u) {
222
+ if (IS_KNOCKOUT == 1u) {
223
+ result = bevelColor * base.a;
224
+ } else {
225
+ result = bevelColor * base.a + base * (1.0 - bevelColor.a);
226
+ }
227
+ } else {
228
+ if (IS_KNOCKOUT == 1u) {
229
+ result = bevelColor - bevelColor * base.a;
230
+ } else {
231
+ result = base + bevelColor - bevelColor * base.a;
232
+ }
233
+ }
234
+
235
+ return result;
236
+ }
237
+ `;
238
+ export const BevelFilterFragment = /* wgsl */ `
239
+ ${WgslVertexOutput}
240
+
241
+ override BEVEL_TYPE: u32 = 0u;
242
+ override IS_KNOCKOUT: u32 = 0u;
243
+
244
+ struct BevelUniforms {
245
+ highlightColor: vec4<f32>,
246
+ shadowColor: vec4<f32>,
247
+ strength: f32,
248
+ _padding1: f32,
249
+ _padding2: f32,
250
+ _padding3: f32,
251
+ baseScale: vec2<f32>,
252
+ baseOffset: vec2<f32>,
253
+ blurScale: vec2<f32>,
254
+ blurOffset: vec2<f32>,
255
+ }
256
+
257
+ @group(0) @binding(0) var<uniform> uniforms: BevelUniforms;
258
+ @group(0) @binding(1) var textureSampler: sampler;
259
+ @group(0) @binding(2) var blurTexture: texture_2d<f32>;
260
+ @group(0) @binding(3) var baseTexture: texture_2d<f32>;
261
+ ${WgslIsInside}
262
+
263
+ @fragment
264
+ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
265
+ let baseUV = input.texCoord * uniforms.baseScale - uniforms.baseOffset;
266
+ let base = textureSampleLevel(baseTexture, textureSampler, baseUV, 0) * isInside(baseUV);
267
+
268
+ let blurUV = input.texCoord * uniforms.blurScale - uniforms.blurOffset;
269
+ let blur1 = textureSampleLevel(blurTexture, textureSampler, blurUV, 0) * isInside(blurUV);
270
+
271
+ let mirrorUV = (1.0 - input.texCoord) * uniforms.blurScale - uniforms.blurOffset;
272
+ let blur2 = textureSampleLevel(blurTexture, textureSampler, mirrorUV, 0) * isInside(mirrorUV);
273
+
274
+ var highlightAlpha = blur1.a - blur2.a;
275
+ var shadowAlpha = blur2.a - blur1.a;
276
+ highlightAlpha = clamp(highlightAlpha * uniforms.strength, 0.0, 1.0);
277
+ shadowAlpha = clamp(shadowAlpha * uniforms.strength, 0.0, 1.0);
278
+
279
+ let bevelColor = uniforms.highlightColor * highlightAlpha + uniforms.shadowColor * shadowAlpha;
280
+ var result: vec4<f32>;
281
+ if (BEVEL_TYPE == 0u) {
282
+ if (IS_KNOCKOUT == 1u) {
283
+ result = bevelColor;
284
+ } else {
285
+ result = base - base * bevelColor.a + bevelColor;
286
+ }
287
+ } else if (BEVEL_TYPE == 1u) {
288
+ if (IS_KNOCKOUT == 1u) {
289
+ result = bevelColor * base.a;
290
+ } else {
291
+ result = bevelColor * base.a + base * (1.0 - bevelColor.a);
292
+ }
293
+ } else {
294
+ if (IS_KNOCKOUT == 1u) {
295
+ result = bevelColor - bevelColor * base.a;
296
+ } else {
297
+ result = base + bevelColor - bevelColor * base.a;
298
+ }
299
+ }
300
+
301
+ return result;
302
+ }
303
+ `;
304
+ export const BevelBaseFragment = /* wgsl */ `
305
+ ${WgslVertexOutput}
306
+
307
+ struct BevelBaseUniforms {
308
+ offset: vec2<f32>,
309
+ _padding: vec2<f32>,
310
+ }
311
+
312
+ @group(0) @binding(0) var<uniform> uniforms: BevelBaseUniforms;
313
+ @group(0) @binding(1) var textureSampler: sampler;
314
+ @group(0) @binding(2) var sourceTexture: texture_2d<f32>;
315
+ ${WgslIsInside}
316
+
317
+ @fragment
318
+ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
319
+ let original = textureSampleLevel(sourceTexture, textureSampler, input.texCoord, 0);
320
+ let shiftedUV = input.texCoord - uniforms.offset;
321
+ let shifted = textureSampleLevel(sourceTexture, textureSampler, shiftedUV, 0) * isInside(shiftedUV);
322
+ return original * (1.0 - shifted.a);
323
+ }
324
+ `;
@@ -0,0 +1 @@
1
+ export declare const FillFragment = "\nstruct FragmentInput {\n @builtin(position) position: vec4<f32>,\n @location(0) bezier: vec2<f32>,\n @location(1) color: vec4<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\n if (input.bezier.x == 0.5 && input.bezier.y == 0.5) {\n return vec4<f32>(input.color.rgb * input.color.a, input.color.a);\n }\n\n let dist = f_val * inverseSqrt(dx * dx + dy * dy);\n let coverage = smoothstep(0.5, -0.5, dist);\n\n if (coverage <= 0.001) {\n discard;\n }\n\n let finalAlpha = input.color.a * min(coverage, 1.0);\n return vec4<f32>(input.color.rgb * finalAlpha, finalAlpha);\n}\n";
@@ -0,0 +1,28 @@
1
+ export const FillFragment = /* wgsl */ `
2
+ struct FragmentInput {
3
+ @builtin(position) position: vec4<f32>,
4
+ @location(0) bezier: vec2<f32>,
5
+ @location(1) color: vec4<f32>,
6
+ }
7
+
8
+ @fragment
9
+ fn main(input: FragmentInput) -> @location(0) vec4<f32> {
10
+ let f_val = input.bezier.x * input.bezier.x - input.bezier.y;
11
+ let dx = dpdx(f_val);
12
+ let dy = dpdy(f_val);
13
+
14
+ if (input.bezier.x == 0.5 && input.bezier.y == 0.5) {
15
+ return vec4<f32>(input.color.rgb * input.color.a, input.color.a);
16
+ }
17
+
18
+ let dist = f_val * inverseSqrt(dx * dx + dy * dy);
19
+ let coverage = smoothstep(0.5, -0.5, dist);
20
+
21
+ if (coverage <= 0.001) {
22
+ discard;
23
+ }
24
+
25
+ let finalAlpha = input.color.a * min(coverage, 1.0);
26
+ return vec4<f32>(input.color.rgb * finalAlpha, finalAlpha);
27
+ }
28
+ `;
@@ -0,0 +1,10 @@
1
+ export declare const TextureCopyFragment = "\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}\n\nstruct CopyUniforms {\n scale: vec2<f32>,\n offset: vec2<f32>,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: CopyUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var inputTexture: texture_2d<f32>;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n let uv = input.texCoord * uniforms.scale + uniforms.offset;\n return textureSampleLevel(inputTexture, textureSampler, uv, 0);\n}\n";
2
+ export declare const BlurTextureCopyFragment = "\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}\n\nstruct CopyUniforms {\n scale: vec2<f32>,\n offset: vec2<f32>,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: CopyUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var inputTexture: texture_2d<f32>;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n let uv = (input.texCoord - uniforms.offset) * uniforms.scale;\n let clampedUv = clamp(uv, vec2<f32>(0.0), vec2<f32>(1.0));\n let color = textureSampleLevel(inputTexture, textureSampler, clampedUv, 0);\n let inBounds = uv.x >= 0.0 && uv.x <= 1.0 && uv.y >= 0.0 && uv.y <= 1.0;\n return select(vec4<f32>(0.0, 0.0, 0.0, 0.0), color, inBounds);\n}\n";
3
+ export declare const FilterOutputFragment = "\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}\n\nstruct CopyUniforms {\n scale: vec2<f32>,\n offset: vec2<f32>,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: CopyUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var inputTexture: texture_2d<f32>;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n let uv = input.texCoord * uniforms.scale + uniforms.offset;\n let clampedUv = clamp(uv, vec2<f32>(0.0), vec2<f32>(1.0));\n let color = textureSampleLevel(inputTexture, textureSampler, clampedUv, 0);\n let inBounds = uv.x >= 0.0 && uv.x <= 1.0 && uv.y >= 0.0 && uv.y <= 1.0;\n return select(vec4<f32>(0.0, 0.0, 0.0, 0.0), color, inBounds);\n}\n";
4
+ export declare const ColorTransformFragment = "\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}\n\nstruct ColorTransformUniforms {\n mul: vec4<f32>,\n add: vec4<f32>,\n}\n\n@group(0) @binding(0) var<uniform> ct: ColorTransformUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var inputTexture: texture_2d<f32>;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n var color = textureSampleLevel(inputTexture, textureSampler, input.texCoord, 0);\n\n color = vec4<f32>(color.rgb / max(vec3<f32>(0.0001), vec3<f32>(color.a)), color.a);\n color = clamp(color * ct.mul + ct.add, vec4<f32>(0.0), vec4<f32>(1.0));\n color = vec4<f32>(color.rgb * color.a, color.a);\n\n return color;\n}\n";
5
+ export declare const YFlipColorTransformFragment = "\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}\n\nstruct YFlipCTUniforms {\n scale: vec2<f32>,\n offset: vec2<f32>,\n mul: vec4<f32>,\n add: vec4<f32>,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: YFlipCTUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var inputTexture: texture_2d<f32>;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n let uv = input.texCoord * uniforms.scale + uniforms.offset;\n var color = textureSampleLevel(inputTexture, textureSampler, uv, 0);\n\n color = vec4<f32>(color.rgb / max(vec3<f32>(0.0001), vec3<f32>(color.a)), color.a);\n color = clamp(color * uniforms.mul + uniforms.add, vec4<f32>(0.0), vec4<f32>(1.0));\n color = vec4<f32>(color.rgb * color.a, color.a);\n\n return color;\n}\n";
6
+ export declare const ColorMatrixFilterFragment = "\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}\n\nstruct ColorMatrixUniforms {\n matrix: mat4x4<f32>,\n offset: vec4<f32>,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: ColorMatrixUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var inputTexture: texture_2d<f32>;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n var color = textureSampleLevel(inputTexture, textureSampler, input.texCoord, 0);\n\n color = vec4<f32>(color.rgb / max(vec3<f32>(0.0001), vec3<f32>(color.a)), color.a);\n var result = uniforms.matrix * color + uniforms.offset;\n result = clamp(result, vec4<f32>(0.0), vec4<f32>(1.0));\n result = vec4<f32>(result.rgb * result.a, result.a);\n\n return result;\n}\n";
7
+ export declare const NodeClearFragment = "\n@fragment\nfn main() -> @location(0) vec4<f32> {\n return vec4<f32>(0.0, 0.0, 0.0, 0.0);\n}\n";
8
+ export declare const PositionedTextureFragment = "\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}\n\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var inputTexture: texture_2d<f32>;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n return textureSampleLevel(inputTexture, textureSampler, input.texCoord, 0);\n}\n";
9
+ export declare const BitmapSyncFragment = "\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}\n\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var inputTexture: texture_2d<f32>;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n return textureSampleLevel(inputTexture, textureSampler, input.texCoord, 0);\n}\n";
10
+ export declare const BlendGenericFragment = "\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n @location(1) color: vec4<f32>,\n}\n\nstruct BlendUniforms {\n blendMode: f32,\n}\n\n@group(0) @binding(1) var<uniform> blend: BlendUniforms;\n@group(0) @binding(2) var srcSampler: sampler;\n@group(0) @binding(3) var srcTexture: texture_2d<f32>;\n@group(0) @binding(4) var dstSampler: sampler;\n@group(0) @binding(5) var dstTexture: texture_2d<f32>;\n\nfn blendNormal(src: vec4<f32>, dst: vec4<f32>) -> vec4<f32> {\n return src;\n}\n\nfn blendMultiply(src: vec4<f32>, dst: vec4<f32>) -> vec4<f32> {\n return src * dst;\n}\n\nfn blendScreen(src: vec4<f32>, dst: vec4<f32>) -> vec4<f32> {\n return src + dst - src * dst;\n}\n\nfn blendAdd(src: vec4<f32>, dst: vec4<f32>) -> vec4<f32> {\n return min(src + dst, vec4<f32>(1.0));\n}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n let src = textureSampleLevel(srcTexture, srcSampler, input.texCoord, 0);\n let dst = textureSampleLevel(dstTexture, dstSampler, input.texCoord, 0);\n var result: vec4<f32>;\n if (blend.blendMode < 0.5) {\n result = blendNormal(src, dst);\n } else if (blend.blendMode < 1.5) {\n result = blendMultiply(src, dst);\n } else if (blend.blendMode < 2.5) {\n result = blendScreen(src, dst);\n } else {\n result = blendAdd(src, dst);\n }\n return result * input.color;\n}\n";