@next2d/webgpu 3.0.4 → 3.1.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 (296) hide show
  1. package/package.json +3 -3
  2. package/src/AtlasManager.d.ts +75 -6
  3. package/src/AtlasManager.js +106 -30
  4. package/src/AttachmentManager/service/AttachmentManagerCreateAttachmentObjectService.d.ts +2 -2
  5. package/src/AttachmentManager/service/AttachmentManagerCreateAttachmentObjectService.js +3 -3
  6. package/src/AttachmentManager/service/AttachmentManagerCreateColorBufferService.d.ts +4 -4
  7. package/src/AttachmentManager/service/AttachmentManagerCreateColorBufferService.js +4 -4
  8. package/src/AttachmentManager/service/AttachmentManagerCreateStencilBufferService.d.ts +5 -5
  9. package/src/AttachmentManager/service/AttachmentManagerCreateStencilBufferService.js +6 -6
  10. package/src/AttachmentManager/service/AttachmentManagerCreateTextureObjectService.d.ts +6 -6
  11. package/src/AttachmentManager/service/AttachmentManagerCreateTextureObjectService.js +7 -7
  12. package/src/AttachmentManager/service/AttachmentManagerGetColorBufferService.d.ts +6 -6
  13. package/src/AttachmentManager/service/AttachmentManagerGetColorBufferService.js +9 -9
  14. package/src/AttachmentManager/service/AttachmentManagerGetStencilBufferService.d.ts +6 -6
  15. package/src/AttachmentManager/service/AttachmentManagerGetStencilBufferService.js +10 -10
  16. package/src/AttachmentManager/service/AttachmentManagerGetTextureService.d.ts +7 -7
  17. package/src/AttachmentManager/service/AttachmentManagerGetTextureService.js +10 -10
  18. package/src/AttachmentManager/service/AttachmentManagerReleaseTextureService.d.ts +3 -3
  19. package/src/AttachmentManager/service/AttachmentManagerReleaseTextureService.js +7 -7
  20. package/src/AttachmentManager/usecase/AttachmentManagerGetAttachmentObjectUseCase.d.ts +10 -10
  21. package/src/AttachmentManager/usecase/AttachmentManagerGetAttachmentObjectUseCase.js +16 -16
  22. package/src/AttachmentManager/usecase/AttachmentManagerReleaseAttachmentUseCase.d.ts +6 -6
  23. package/src/AttachmentManager/usecase/AttachmentManagerReleaseAttachmentUseCase.js +10 -10
  24. package/src/AttachmentManager.d.ts +28 -6
  25. package/src/AttachmentManager.js +28 -23
  26. package/src/BezierConverter/BezierConverter.d.ts +9 -3
  27. package/src/BezierConverter/BezierConverter.js +5 -3
  28. package/src/BezierConverter/usecase/BezierConverterAdaptiveCubicToQuadUseCase.d.ts +2 -13
  29. package/src/BezierConverter/usecase/BezierConverterAdaptiveCubicToQuadUseCase.js +13 -25
  30. package/src/Blend/BlendInstancedManager.d.ts +19 -15
  31. package/src/Blend/BlendInstancedManager.js +35 -22
  32. package/src/Blend/usecase/BlendApplyComplexBlendUseCase.d.ts +9 -2
  33. package/src/Blend/usecase/BlendApplyComplexBlendUseCase.js +28 -17
  34. package/src/Blend.d.ts +20 -2
  35. package/src/Blend.js +20 -4
  36. package/src/BufferManager/service/BufferManagerReleaseUniformBufferService.js +2 -2
  37. package/src/BufferManager/service/BufferManagerReleaseVertexBufferService.js +2 -2
  38. package/src/BufferManager/service/BufferManagerUpdateIndirectBufferService.d.ts +1 -0
  39. package/src/BufferManager/service/BufferManagerUpdateIndirectBufferService.js +1 -0
  40. package/src/BufferManager/usecase/BufferManagerCleanupStorageBuffersUseCase.d.ts +1 -0
  41. package/src/BufferManager/usecase/BufferManagerCleanupStorageBuffersUseCase.js +1 -0
  42. package/src/BufferManager.d.ts +108 -43
  43. package/src/BufferManager.js +113 -153
  44. package/src/Context/service/ContextComputeBitmapMatrixService.d.ts +7 -0
  45. package/src/Context/service/ContextComputeBitmapMatrixService.js +7 -0
  46. package/src/Context/service/ContextComputeGradientMatrixService.d.ts +9 -1
  47. package/src/Context/service/ContextComputeGradientMatrixService.js +15 -7
  48. package/src/Context/service/ContextFillSimpleService.d.ts +14 -0
  49. package/src/Context/service/ContextFillSimpleService.js +14 -0
  50. package/src/Context/service/ContextFillWithStencilMainService.d.ts +11 -0
  51. package/src/Context/service/ContextFillWithStencilMainService.js +11 -0
  52. package/src/Context/service/ContextFillWithStencilService.d.ts +11 -0
  53. package/src/Context/service/ContextFillWithStencilService.js +11 -0
  54. package/src/Context/usecase/ContextApplyFilterUseCase.d.ts +17 -0
  55. package/src/Context/usecase/ContextApplyFilterUseCase.js +201 -62
  56. package/src/Context/usecase/ContextBitmapFillUseCase.d.ts +23 -0
  57. package/src/Context/usecase/ContextBitmapFillUseCase.js +47 -0
  58. package/src/Context/usecase/ContextBitmapStrokeUseCase.d.ts +23 -0
  59. package/src/Context/usecase/ContextBitmapStrokeUseCase.js +35 -0
  60. package/src/Context/usecase/ContextClipUseCase.d.ts +15 -0
  61. package/src/Context/usecase/ContextClipUseCase.js +19 -0
  62. package/src/Context/usecase/ContextContainerEndLayerUseCase.d.ts +21 -1
  63. package/src/Context/usecase/ContextContainerEndLayerUseCase.js +195 -104
  64. package/src/Context/usecase/ContextDrawArraysInstancedUseCase.d.ts +13 -0
  65. package/src/Context/usecase/ContextDrawArraysInstancedUseCase.js +41 -20
  66. package/src/Context/usecase/ContextDrawIndirectUseCase.d.ts +16 -1
  67. package/src/Context/usecase/ContextDrawIndirectUseCase.js +53 -30
  68. package/src/Context/usecase/ContextGradientFillUseCase.d.ts +23 -0
  69. package/src/Context/usecase/ContextGradientFillUseCase.js +47 -0
  70. package/src/Context/usecase/ContextGradientStrokeUseCase.d.ts +23 -0
  71. package/src/Context/usecase/ContextGradientStrokeUseCase.js +35 -0
  72. package/src/Context/usecase/ContextProcessComplexBlendQueueUseCase.d.ts +13 -1
  73. package/src/Context/usecase/ContextProcessComplexBlendQueueUseCase.js +126 -60
  74. package/src/Context.d.ts +445 -63
  75. package/src/Context.js +566 -144
  76. package/src/FillTexturePool.d.ts +39 -0
  77. package/src/FillTexturePool.js +70 -7
  78. package/src/Filter/BevelFilter/FilterApplyBevelFilterUseCase.d.ts +21 -2
  79. package/src/Filter/BevelFilter/FilterApplyBevelFilterUseCase.js +33 -26
  80. package/src/Filter/BlurFilter/FilterApplyBlurFilterUseCase.d.ts +5 -5
  81. package/src/Filter/BlurFilter/FilterApplyBlurFilterUseCase.js +81 -64
  82. package/src/Filter/BlurFilterUseCase.d.ts +15 -11
  83. package/src/Filter/BlurFilterUseCase.js +22 -17
  84. package/src/Filter/ColorMatrixFilter/FilterApplyColorMatrixFilterUseCase.d.ts +2 -2
  85. package/src/Filter/ColorMatrixFilter/FilterApplyColorMatrixFilterUseCase.js +5 -5
  86. package/src/Filter/ConvolutionFilter/FilterApplyConvolutionFilterUseCase.d.ts +15 -1
  87. package/src/Filter/ConvolutionFilter/FilterApplyConvolutionFilterUseCase.js +23 -17
  88. package/src/Filter/DisplacementMapFilter/FilterApplyDisplacementMapFilterUseCase.d.ts +20 -1
  89. package/src/Filter/DisplacementMapFilter/FilterApplyDisplacementMapFilterUseCase.js +37 -26
  90. package/src/Filter/DropShadowFilter/FilterApplyDropShadowFilterUseCase.d.ts +7 -7
  91. package/src/Filter/DropShadowFilter/FilterApplyDropShadowFilterUseCase.js +19 -31
  92. package/src/Filter/FilterGradientLUTCache.js +2 -0
  93. package/src/Filter/FilterUtil.d.ts +23 -0
  94. package/src/Filter/FilterUtil.js +33 -0
  95. package/src/Filter/GlowFilter/FilterApplyGlowFilterUseCase.d.ts +5 -5
  96. package/src/Filter/GlowFilter/FilterApplyGlowFilterUseCase.js +12 -21
  97. package/src/Filter/GradientBevelFilter/FilterApplyGradientBevelFilterUseCase.d.ts +6 -6
  98. package/src/Filter/GradientBevelFilter/FilterApplyGradientBevelFilterUseCase.js +16 -19
  99. package/src/Filter/GradientGlowFilter/FilterApplyGradientGlowFilterUseCase.d.ts +5 -5
  100. package/src/Filter/GradientGlowFilter/FilterApplyGradientGlowFilterUseCase.js +13 -16
  101. package/src/FrameBufferManager/service/FrameBufferManagerCreateRenderPassDescriptorService.d.ts +13 -1
  102. package/src/FrameBufferManager/service/FrameBufferManagerCreateRenderPassDescriptorService.js +30 -3
  103. package/src/FrameBufferManager/service/FrameBufferManagerCreateStencilRenderPassDescriptorService.d.ts +11 -1
  104. package/src/FrameBufferManager/service/FrameBufferManagerCreateStencilRenderPassDescriptorService.js +36 -6
  105. package/src/FrameBufferManager/usecase/FrameBufferManagerCreateAttachmentUseCase.d.ts +10 -10
  106. package/src/FrameBufferManager/usecase/FrameBufferManagerCreateAttachmentUseCase.js +15 -15
  107. package/src/FrameBufferManager/usecase/FrameBufferManagerReleaseTemporaryAttachmentUseCase.d.ts +4 -4
  108. package/src/FrameBufferManager/usecase/FrameBufferManagerReleaseTemporaryAttachmentUseCase.js +5 -5
  109. package/src/FrameBufferManager.d.ts +95 -3
  110. package/src/FrameBufferManager.js +97 -8
  111. package/src/Gradient/GradientLUTCache.d.ts +36 -4
  112. package/src/Gradient/GradientLUTCache.js +61 -5
  113. package/src/Gradient/GradientLUTGenerator.d.ts +26 -14
  114. package/src/Gradient/GradientLUTGenerator.js +74 -43
  115. package/src/Mask/service/MaskUnionMaskService.d.ts +16 -1
  116. package/src/Mask/service/MaskUnionMaskService.js +45 -31
  117. package/src/Mask.d.ts +57 -3
  118. package/src/Mask.js +75 -11
  119. package/src/Mesh/service/MeshFillGenerateService.d.ts +4 -4
  120. package/src/Mesh/service/MeshFillGenerateService.js +4 -4
  121. package/src/Mesh/service/MeshStrokeFillGenerateService.d.ts +4 -4
  122. package/src/Mesh/service/MeshStrokeFillGenerateService.js +4 -4
  123. package/src/Mesh/usecase/MeshBitmapStrokeGenerateUseCase.d.ts +3 -3
  124. package/src/Mesh/usecase/MeshBitmapStrokeGenerateUseCase.js +10 -3
  125. package/src/Mesh/usecase/MeshFillGenerateUseCase.d.ts +2 -2
  126. package/src/Mesh/usecase/MeshFillGenerateUseCase.js +9 -2
  127. package/src/Mesh/usecase/MeshGradientStrokeGenerateUseCase.d.ts +3 -3
  128. package/src/Mesh/usecase/MeshGradientStrokeGenerateUseCase.js +10 -3
  129. package/src/Mesh/usecase/MeshStrokeGenerateUseCase.d.ts +8 -14
  130. package/src/Mesh/usecase/MeshStrokeGenerateUseCase.js +214 -129
  131. package/src/PathCommand.d.ts +24 -23
  132. package/src/PathCommand.js +25 -79
  133. package/src/Shader/PipelineManager.d.ts +223 -6
  134. package/src/Shader/PipelineManager.js +308 -66
  135. package/src/Shader/ShaderInstancedManager.d.ts +17 -0
  136. package/src/Shader/ShaderInstancedManager.js +17 -0
  137. package/src/Shader/ShaderSource.d.ts +317 -12
  138. package/src/Shader/ShaderSource.js +328 -39
  139. package/src/Shader/wgsl/common/SharedWgsl.d.ts +28 -1
  140. package/src/Shader/wgsl/common/SharedWgsl.js +28 -9
  141. package/src/Shader/wgsl/fragment/BasicFragment.d.ts +14 -0
  142. package/src/Shader/wgsl/fragment/BasicFragment.js +14 -0
  143. package/src/Shader/wgsl/fragment/BitmapFragment.d.ts +7 -0
  144. package/src/Shader/wgsl/fragment/BitmapFragment.js +7 -0
  145. package/src/Shader/wgsl/fragment/EffectFragment.d.ts +42 -0
  146. package/src/Shader/wgsl/fragment/EffectFragment.js +42 -0
  147. package/src/Shader/wgsl/fragment/FillFragment.d.ts +7 -0
  148. package/src/Shader/wgsl/fragment/FillFragment.js +7 -0
  149. package/src/Shader/wgsl/fragment/FilterFragment.d.ts +70 -0
  150. package/src/Shader/wgsl/fragment/FilterFragment.js +70 -0
  151. package/src/Shader/wgsl/fragment/GradientFragment.d.ts +21 -0
  152. package/src/Shader/wgsl/fragment/GradientFragment.js +43 -8
  153. package/src/Shader/wgsl/fragment/InstancedFragment.d.ts +7 -0
  154. package/src/Shader/wgsl/fragment/InstancedFragment.js +7 -0
  155. package/src/Shader/wgsl/fragment/MaskFragment.d.ts +7 -0
  156. package/src/Shader/wgsl/fragment/MaskFragment.js +7 -0
  157. package/src/Shader/wgsl/fragment/StencilFragment.d.ts +14 -0
  158. package/src/Shader/wgsl/fragment/StencilFragment.js +14 -0
  159. package/src/Shader/wgsl/vertex/BasicVertex.d.ts +7 -0
  160. package/src/Shader/wgsl/vertex/BasicVertex.js +7 -0
  161. package/src/Shader/wgsl/vertex/BitmapVertex.d.ts +7 -0
  162. package/src/Shader/wgsl/vertex/BitmapVertex.js +7 -0
  163. package/src/Shader/wgsl/vertex/FillVertex.d.ts +7 -0
  164. package/src/Shader/wgsl/vertex/FillVertex.js +7 -0
  165. package/src/Shader/wgsl/vertex/FilterVertex.d.ts +77 -1
  166. package/src/Shader/wgsl/vertex/FilterVertex.js +135 -42
  167. package/src/Shader/wgsl/vertex/GradientVertex.d.ts +7 -0
  168. package/src/Shader/wgsl/vertex/GradientVertex.js +7 -0
  169. package/src/Shader/wgsl/vertex/InstancedVertex.d.ts +7 -0
  170. package/src/Shader/wgsl/vertex/InstancedVertex.js +7 -0
  171. package/src/Shader/wgsl/vertex/MaskVertex.d.ts +7 -0
  172. package/src/Shader/wgsl/vertex/MaskVertex.js +7 -0
  173. package/src/Shader/wgsl/vertex/StencilVertex.d.ts +14 -0
  174. package/src/Shader/wgsl/vertex/StencilVertex.js +14 -0
  175. package/src/TextureManager/service/TextureManagerInitializeSamplersService.d.ts +2 -2
  176. package/src/TextureManager/service/TextureManagerInitializeSamplersService.js +2 -2
  177. package/src/TextureManager.d.ts +36 -5
  178. package/src/TextureManager.js +36 -24
  179. package/src/TexturePool/service/TexturePoolCleanupService.d.ts +4 -4
  180. package/src/TexturePool/service/TexturePoolCleanupService.js +6 -6
  181. package/src/TexturePool/service/TexturePoolReleaseService.d.ts +4 -4
  182. package/src/TexturePool/service/TexturePoolReleaseService.js +5 -5
  183. package/src/TexturePool/usecase/TexturePoolAcquireUseCase.d.ts +10 -10
  184. package/src/TexturePool/usecase/TexturePoolAcquireUseCase.js +19 -18
  185. package/src/TexturePool.d.ts +36 -35
  186. package/src/TexturePool.js +44 -65
  187. package/src/WebGPUUtil.d.ts +79 -34
  188. package/src/WebGPUUtil.js +79 -36
  189. package/src/interface/IAttachmentObject.d.ts +36 -0
  190. package/src/interface/IBlendMode.d.ts +7 -0
  191. package/src/interface/IBlendState.d.ts +8 -0
  192. package/src/interface/IBounds.d.ts +23 -0
  193. package/src/interface/IColorBufferObject.d.ts +28 -0
  194. package/src/interface/IComplexBlendItem.d.ts +48 -0
  195. package/src/interface/IFilterConfig.d.ts +28 -2
  196. package/src/interface/IGradientStop.d.ts +20 -0
  197. package/src/interface/ILocalFilterConfig.d.ts +32 -2
  198. package/src/interface/IMeshResult.d.ts +8 -0
  199. package/src/interface/IPoint.d.ts +12 -0
  200. package/src/interface/IPooledTexture.d.ts +24 -0
  201. package/src/interface/IQuadraticSegment.d.ts +8 -0
  202. package/src/interface/IStencilBufferObject.d.ts +28 -0
  203. package/src/interface/IStorageBufferConfig.d.ts +8 -1
  204. package/src/interface/ITextureObject.d.ts +28 -0
  205. package/src/AttachmentManager/service/AttachmentManagerCreateRenderPassDescriptorService.d.ts +0 -5
  206. package/src/AttachmentManager/service/AttachmentManagerCreateRenderPassDescriptorService.js +0 -42
  207. package/src/Blend/service/BlendAddService.d.ts +0 -1
  208. package/src/Blend/service/BlendAddService.js +0 -8
  209. package/src/Blend/service/BlendAlphaService.d.ts +0 -1
  210. package/src/Blend/service/BlendAlphaService.js +0 -8
  211. package/src/Blend/service/BlendEraseService.d.ts +0 -1
  212. package/src/Blend/service/BlendEraseService.js +0 -8
  213. package/src/Blend/service/BlendGetStateService.d.ts +0 -12
  214. package/src/Blend/service/BlendGetStateService.js +0 -13
  215. package/src/Blend/service/BlendOneZeroService.d.ts +0 -1
  216. package/src/Blend/service/BlendOneZeroService.js +0 -8
  217. package/src/Blend/service/BlendResetService.d.ts +0 -1
  218. package/src/Blend/service/BlendResetService.js +0 -8
  219. package/src/Blend/service/BlendScreenService.d.ts +0 -1
  220. package/src/Blend/service/BlendScreenService.js +0 -8
  221. package/src/Blend/service/BlendSetModeService.d.ts +0 -2
  222. package/src/Blend/service/BlendSetModeService.js +0 -4
  223. package/src/Blend/usecase/BlendOperationUseCase.d.ts +0 -11
  224. package/src/Blend/usecase/BlendOperationUseCase.js +0 -31
  225. package/src/BufferManager/usecase/BufferManagerReleaseStorageBufferUseCase.d.ts +0 -9
  226. package/src/BufferManager/usecase/BufferManagerReleaseStorageBufferUseCase.js +0 -15
  227. package/src/Compute/ComputePipelineManager.d.ts +0 -61
  228. package/src/Compute/ComputePipelineManager.js +0 -313
  229. package/src/Compute/service/ComputeExecuteBlurService.d.ts +0 -21
  230. package/src/Compute/service/ComputeExecuteBlurService.js +0 -81
  231. package/src/Filter/BevelFilterShader.d.ts +0 -2
  232. package/src/Filter/BevelFilterShader.js +0 -107
  233. package/src/Filter/BitmapFilterShader.d.ts +0 -2
  234. package/src/Filter/BitmapFilterShader.js +0 -207
  235. package/src/Filter/BlurFilter/service/BlurFilterComputeShaderService.d.ts +0 -40
  236. package/src/Filter/BlurFilter/service/BlurFilterComputeShaderService.js +0 -51
  237. package/src/Filter/BlurFilter/usecase/FilterApplyBlurComputeUseCase.d.ts +0 -25
  238. package/src/Filter/BlurFilter/usecase/FilterApplyBlurComputeUseCase.js +0 -180
  239. package/src/Filter/BlurFilterShader.d.ts +0 -5
  240. package/src/Filter/BlurFilterShader.js +0 -109
  241. package/src/Filter/ColorMatrixFilterShader.d.ts +0 -4
  242. package/src/Filter/ColorMatrixFilterShader.js +0 -51
  243. package/src/Filter/ConvolutionFilterShader.d.ts +0 -2
  244. package/src/Filter/ConvolutionFilterShader.js +0 -115
  245. package/src/Filter/DisplacementMapFilterShader.d.ts +0 -2
  246. package/src/Filter/DisplacementMapFilterShader.js +0 -114
  247. package/src/Filter/DropShadowFilterShader.d.ts +0 -4
  248. package/src/Filter/DropShadowFilterShader.js +0 -93
  249. package/src/Filter/GlowFilterShader.d.ts +0 -4
  250. package/src/Filter/GlowFilterShader.js +0 -66
  251. package/src/FrameBufferManager/service/FrameBufferManagerFlushPendingReleasesService.d.ts +0 -11
  252. package/src/FrameBufferManager/service/FrameBufferManagerFlushPendingReleasesService.js +0 -19
  253. package/src/Mask/usecase/MaskBindUseCase.d.ts +0 -10
  254. package/src/Mask/usecase/MaskBindUseCase.js +0 -20
  255. package/src/Mesh/service/MeshLerpService.d.ts +0 -13
  256. package/src/Mesh/service/MeshLerpService.js +0 -17
  257. package/src/Mesh/usecase/MeshSplitQuadraticBezierUseCase.d.ts +0 -14
  258. package/src/Mesh/usecase/MeshSplitQuadraticBezierUseCase.js +0 -28
  259. package/src/Mesh/usecase/MeshStrokeFillGenerateUseCase.d.ts +0 -18
  260. package/src/Mesh/usecase/MeshStrokeFillGenerateUseCase.js +0 -54
  261. package/src/SamplerCache/service/SamplerCacheCreateCommonSamplersService.d.ts +0 -11
  262. package/src/SamplerCache/service/SamplerCacheCreateCommonSamplersService.js +0 -35
  263. package/src/SamplerCache/service/SamplerCacheGenerateKeyService.d.ts +0 -13
  264. package/src/SamplerCache/service/SamplerCacheGenerateKeyService.js +0 -15
  265. package/src/SamplerCache/service/SamplerCacheGetOrCreateService.d.ts +0 -15
  266. package/src/SamplerCache/service/SamplerCacheGetOrCreateService.js +0 -30
  267. package/src/SamplerCache.d.ts +0 -18
  268. package/src/SamplerCache.js +0 -61
  269. package/src/Shader/BlendModeShader.d.ts +0 -51
  270. package/src/Shader/BlendModeShader.js +0 -71
  271. package/src/Shader/GradientLUTGenerator/service/GradientLUTCalculateResolutionService.d.ts +0 -12
  272. package/src/Shader/GradientLUTGenerator/service/GradientLUTCalculateResolutionService.js +0 -28
  273. package/src/Shader/GradientLUTGenerator/service/GradientLUTGeneratePixelsService.d.ts +0 -13
  274. package/src/Shader/GradientLUTGenerator/service/GradientLUTGeneratePixelsService.js +0 -61
  275. package/src/Shader/GradientLUTGenerator/service/GradientLUTInterpolateColorService.d.ts +0 -19
  276. package/src/Shader/GradientLUTGenerator/service/GradientLUTInterpolateColorService.js +0 -37
  277. package/src/Shader/GradientLUTGenerator/service/GradientLUTParseStopsService.d.ts +0 -11
  278. package/src/Shader/GradientLUTGenerator/service/GradientLUTParseStopsService.js +0 -24
  279. package/src/Shader/GradientLUTGenerator/usecase/GradientLUTGenerateDataUseCase.d.ts +0 -14
  280. package/src/Shader/GradientLUTGenerator/usecase/GradientLUTGenerateDataUseCase.js +0 -24
  281. package/src/Shader/wgsl/fragment/BlendFragment.d.ts +0 -8
  282. package/src/Shader/wgsl/fragment/BlendFragment.js +0 -63
  283. package/src/TextureManager/usecase/TextureManagerCreateTextureFromImageBitmapUseCase.d.ts +0 -13
  284. package/src/TextureManager/usecase/TextureManagerCreateTextureFromImageBitmapUseCase.js +0 -30
  285. package/src/TextureManager/usecase/TextureManagerCreateTextureFromPixelsUseCase.d.ts +0 -15
  286. package/src/TextureManager/usecase/TextureManagerCreateTextureFromPixelsUseCase.js +0 -26
  287. package/src/TexturePool/service/TexturePoolEvictOldestService.d.ts +0 -11
  288. package/src/TexturePool/service/TexturePoolEvictOldestService.js +0 -24
  289. package/src/interface/ICachedBindGroup.d.ts +0 -8
  290. package/src/interface/ICachedBindGroup.js +0 -1
  291. package/src/interface/IGradientLUTData.d.ts +0 -8
  292. package/src/interface/IGradientLUTData.js +0 -1
  293. package/src/interface/IPooledBuffer.d.ts +0 -8
  294. package/src/interface/IPooledBuffer.js +0 -1
  295. package/src/interface/IRectangleInfo.d.ts +0 -13
  296. package/src/interface/IRectangleInfo.js +0 -1
@@ -1,3 +1,10 @@
1
+ /**
2
+ * @description 頂点カラーをそのまま出力する基本フラグメントシェーダー
3
+ * Basic fragment shader that outputs vertex color directly
4
+ *
5
+ * @type {string}
6
+ * @constant
7
+ */
1
8
  export const BasicFragment = /* wgsl */ `
2
9
  struct VertexOutput {
3
10
  @builtin(position) position: vec4<f32>,
@@ -10,6 +17,13 @@ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
10
17
  return input.color;
11
18
  }
12
19
  `;
20
+ /**
21
+ * @description テクスチャサンプリングと頂点カラーを乗算するフラグメントシェーダー
22
+ * Fragment shader that multiplies texture sampling with vertex color
23
+ *
24
+ * @type {string}
25
+ * @constant
26
+ */
13
27
  export const TextureFragment = /* wgsl */ `
14
28
  struct VertexOutput {
15
29
  @builtin(position) position: vec4<f32>,
@@ -1 +1,8 @@
1
+ /**
2
+ * @description ビットマップ塗りフラグメントシェーダー(ベジェクリッピング・リピート対応)
3
+ * Bitmap fill fragment shader with bezier clipping and repeat support
4
+ *
5
+ * @type {string}
6
+ * @constant
7
+ */
1
8
  export declare const BitmapFillFragment = "\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 textureWidth: f32,\n textureHeight: f32,\n repeat: f32,\n _pad: f32,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: BitmapUniforms;\n@group(0) @binding(1) var bitmapSampler: sampler;\n@group(0) @binding(2) var bitmapTexture: texture_2d<f32>;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n let u = input.bezier.x;\n let v = input.bezier.y;\n if (abs(u - 0.5) > 0.001 || abs(v - 0.5) > 0.001) {\n let d = u * u - v;\n if (d > 0.0) {\n discard;\n }\n }\n let transformedPos = uniforms.bitmapMatrix * vec3<f32>(input.worldPos, 1.0);\n var uv = vec2<f32>(\n transformedPos.x / uniforms.textureWidth,\n transformedPos.y / uniforms.textureHeight\n );\n if (uniforms.repeat > 0.5) {\n uv = fract(uv);\n }\n let bitmapColor = textureSampleLevel(bitmapTexture, bitmapSampler, uv, 0);\n let alpha = bitmapColor.a * input.color.a;\n return vec4<f32>(bitmapColor.rgb * input.color.a, alpha);\n}\n";
@@ -1,3 +1,10 @@
1
+ /**
2
+ * @description ビットマップ塗りフラグメントシェーダー(ベジェクリッピング・リピート対応)
3
+ * Bitmap fill fragment shader with bezier clipping and repeat support
4
+ *
5
+ * @type {string}
6
+ * @constant
7
+ */
1
8
  export const BitmapFillFragment = /* wgsl */ `
2
9
  struct VertexOutput {
3
10
  @builtin(position) position: vec4<f32>,
@@ -1,6 +1,48 @@
1
+ /**
2
+ * @description グローフィルター用フラグメントシェーダー(内側・外側・ノックアウト対応)
3
+ * Glow filter fragment shader with inner, outer, and knockout support
4
+ *
5
+ * @type {string}
6
+ * @constant
7
+ */
1
8
  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";
9
+ /**
10
+ * @description ドロップシャドウフィルター用フラグメントシェーダー(内側・外側・ノックアウト・非表示対応)
11
+ * Drop shadow filter fragment shader with inner, outer, knockout, and hide-object support
12
+ *
13
+ * @type {string}
14
+ * @constant
15
+ */
2
16
  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";
17
+ /**
18
+ * @description グラデーショングローフィルター用フラグメントシェーダー(LUTベース)
19
+ * Gradient glow filter fragment shader using LUT
20
+ *
21
+ * @type {string}
22
+ * @constant
23
+ */
3
24
  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";
25
+ /**
26
+ * @description グラデーションベベルフィルター用フラグメントシェーダー(LUTベース)
27
+ * Gradient bevel filter fragment shader using LUT
28
+ *
29
+ * @type {string}
30
+ * @constant
31
+ */
4
32
  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";
33
+ /**
34
+ * @description ベベルフィルター用フラグメントシェーダー(ハイライト・シャドウカラー指定)
35
+ * Bevel filter fragment shader with highlight and shadow color specification
36
+ *
37
+ * @type {string}
38
+ * @constant
39
+ */
5
40
  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";
41
+ /**
42
+ * @description ベベルフィルターのベース処理用フラグメントシェーダー(オフセット差分計算)
43
+ * Bevel filter base fragment shader for offset difference calculation
44
+ *
45
+ * @type {string}
46
+ * @constant
47
+ */
6
48
  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";
@@ -1,4 +1,11 @@
1
1
  import { WgslIsInside, WgslVertexOutput } from "../common/SharedWgsl";
2
+ /**
3
+ * @description グローフィルター用フラグメントシェーダー(内側・外側・ノックアウト対応)
4
+ * Glow filter fragment shader with inner, outer, and knockout support
5
+ *
6
+ * @type {string}
7
+ * @constant
8
+ */
2
9
  export const GlowFilterFragment = /* wgsl */ `
3
10
  ${WgslVertexOutput}
4
11
 
@@ -53,6 +60,13 @@ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
53
60
  }
54
61
  }
55
62
  `;
63
+ /**
64
+ * @description ドロップシャドウフィルター用フラグメントシェーダー(内側・外側・ノックアウト・非表示対応)
65
+ * Drop shadow filter fragment shader with inner, outer, knockout, and hide-object support
66
+ *
67
+ * @type {string}
68
+ * @constant
69
+ */
56
70
  export const DropShadowFilterFragment = /* wgsl */ `
57
71
  ${WgslVertexOutput}
58
72
 
@@ -111,6 +125,13 @@ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
111
125
  }
112
126
  }
113
127
  `;
128
+ /**
129
+ * @description グラデーショングローフィルター用フラグメントシェーダー(LUTベース)
130
+ * Gradient glow filter fragment shader using LUT
131
+ *
132
+ * @type {string}
133
+ * @constant
134
+ */
114
135
  export const GradientGlowFilterFragment = /* wgsl */ `
115
136
  ${WgslVertexOutput}
116
137
 
@@ -168,6 +189,13 @@ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
168
189
  return result;
169
190
  }
170
191
  `;
192
+ /**
193
+ * @description グラデーションベベルフィルター用フラグメントシェーダー(LUTベース)
194
+ * Gradient bevel filter fragment shader using LUT
195
+ *
196
+ * @type {string}
197
+ * @constant
198
+ */
171
199
  export const GradientBevelFilterFragment = /* wgsl */ `
172
200
  ${WgslVertexOutput}
173
201
 
@@ -235,6 +263,13 @@ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
235
263
  return result;
236
264
  }
237
265
  `;
266
+ /**
267
+ * @description ベベルフィルター用フラグメントシェーダー(ハイライト・シャドウカラー指定)
268
+ * Bevel filter fragment shader with highlight and shadow color specification
269
+ *
270
+ * @type {string}
271
+ * @constant
272
+ */
238
273
  export const BevelFilterFragment = /* wgsl */ `
239
274
  ${WgslVertexOutput}
240
275
 
@@ -301,6 +336,13 @@ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
301
336
  return result;
302
337
  }
303
338
  `;
339
+ /**
340
+ * @description ベベルフィルターのベース処理用フラグメントシェーダー(オフセット差分計算)
341
+ * Bevel filter base fragment shader for offset difference calculation
342
+ *
343
+ * @type {string}
344
+ * @constant
345
+ */
304
346
  export const BevelBaseFragment = /* wgsl */ `
305
347
  ${WgslVertexOutput}
306
348
 
@@ -1 +1,8 @@
1
+ /**
2
+ * @description ベジェ曲線ベースのアンチエイリアス付き塗りフラグメントシェーダー
3
+ * Bezier curve-based fill fragment shader with anti-aliasing
4
+ *
5
+ * @type {string}
6
+ * @constant
7
+ */
1
8
  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";
@@ -1,3 +1,10 @@
1
+ /**
2
+ * @description ベジェ曲線ベースのアンチエイリアス付き塗りフラグメントシェーダー
3
+ * Bezier curve-based fill fragment shader with anti-aliasing
4
+ *
5
+ * @type {string}
6
+ * @constant
7
+ */
1
8
  export const FillFragment = /* wgsl */ `
2
9
  struct FragmentInput {
3
10
  @builtin(position) position: vec4<f32>,
@@ -1,10 +1,80 @@
1
+ /**
2
+ * @description テクスチャコピー用フラグメントシェーダー(スケール・オフセット付き)
3
+ * Texture copy fragment shader with scale and offset
4
+ *
5
+ * @type {string}
6
+ * @constant
7
+ */
1
8
  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";
9
+ /**
10
+ * @description ブラー用テクスチャコピーフラグメントシェーダー(境界クランプ付き)
11
+ * Blur texture copy fragment shader with boundary clamping
12
+ *
13
+ * @type {string}
14
+ * @constant
15
+ */
2
16
  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";
17
+ /**
18
+ * @description フィルター出力用フラグメントシェーダー(境界チェック付きコピー)
19
+ * Filter output fragment shader with boundary-checked copy
20
+ *
21
+ * @type {string}
22
+ * @constant
23
+ */
3
24
  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";
25
+ /**
26
+ * @description カラー変換フラグメントシェーダー(乗算・加算カラー適用)
27
+ * Color transform fragment shader with multiply and add color application
28
+ *
29
+ * @type {string}
30
+ * @constant
31
+ */
4
32
  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";
33
+ /**
34
+ * @description Y軸反転付きカラー変換フラグメントシェーダー
35
+ * Y-flip color transform fragment shader
36
+ *
37
+ * @type {string}
38
+ * @constant
39
+ */
5
40
  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";
41
+ /**
42
+ * @description カラーマトリクスフィルター用フラグメントシェーダー
43
+ * Color matrix filter fragment shader
44
+ *
45
+ * @type {string}
46
+ * @constant
47
+ */
6
48
  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";
49
+ /**
50
+ * @description ノードクリア用フラグメントシェーダー(透明色出力)
51
+ * Node clear fragment shader that outputs transparent color
52
+ *
53
+ * @type {string}
54
+ * @constant
55
+ */
7
56
  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";
57
+ /**
58
+ * @description 位置指定テクスチャサンプリング用フラグメントシェーダー
59
+ * Positioned texture sampling fragment shader
60
+ *
61
+ * @type {string}
62
+ * @constant
63
+ */
8
64
  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";
65
+ /**
66
+ * @description ビットマップ同期用フラグメントシェーダー(テクスチャ直接サンプリング)
67
+ * Bitmap sync fragment shader with direct texture sampling
68
+ *
69
+ * @type {string}
70
+ * @constant
71
+ */
9
72
  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";
73
+ /**
74
+ * @description 汎用ブレンドフラグメントシェーダー(Normal/Multiply/Screen/Add)
75
+ * Generic blend fragment shader supporting Normal, Multiply, Screen, and Add modes
76
+ *
77
+ * @type {string}
78
+ * @constant
79
+ */
10
80
  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";
@@ -1,4 +1,11 @@
1
1
  import { WgslVertexOutput } from "../common/SharedWgsl";
2
+ /**
3
+ * @description テクスチャコピー用フラグメントシェーダー(スケール・オフセット付き)
4
+ * Texture copy fragment shader with scale and offset
5
+ *
6
+ * @type {string}
7
+ * @constant
8
+ */
2
9
  export const TextureCopyFragment = /* wgsl */ `
3
10
  ${WgslVertexOutput}
4
11
 
@@ -17,6 +24,13 @@ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
17
24
  return textureSampleLevel(inputTexture, textureSampler, uv, 0);
18
25
  }
19
26
  `;
27
+ /**
28
+ * @description ブラー用テクスチャコピーフラグメントシェーダー(境界クランプ付き)
29
+ * Blur texture copy fragment shader with boundary clamping
30
+ *
31
+ * @type {string}
32
+ * @constant
33
+ */
20
34
  export const BlurTextureCopyFragment = /* wgsl */ `
21
35
  ${WgslVertexOutput}
22
36
 
@@ -38,6 +52,13 @@ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
38
52
  return select(vec4<f32>(0.0, 0.0, 0.0, 0.0), color, inBounds);
39
53
  }
40
54
  `;
55
+ /**
56
+ * @description フィルター出力用フラグメントシェーダー(境界チェック付きコピー)
57
+ * Filter output fragment shader with boundary-checked copy
58
+ *
59
+ * @type {string}
60
+ * @constant
61
+ */
41
62
  export const FilterOutputFragment = /* wgsl */ `
42
63
  ${WgslVertexOutput}
43
64
 
@@ -59,6 +80,13 @@ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
59
80
  return select(vec4<f32>(0.0, 0.0, 0.0, 0.0), color, inBounds);
60
81
  }
61
82
  `;
83
+ /**
84
+ * @description カラー変換フラグメントシェーダー(乗算・加算カラー適用)
85
+ * Color transform fragment shader with multiply and add color application
86
+ *
87
+ * @type {string}
88
+ * @constant
89
+ */
62
90
  export const ColorTransformFragment = /* wgsl */ `
63
91
  ${WgslVertexOutput}
64
92
 
@@ -82,6 +110,13 @@ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
82
110
  return color;
83
111
  }
84
112
  `;
113
+ /**
114
+ * @description Y軸反転付きカラー変換フラグメントシェーダー
115
+ * Y-flip color transform fragment shader
116
+ *
117
+ * @type {string}
118
+ * @constant
119
+ */
85
120
  export const YFlipColorTransformFragment = /* wgsl */ `
86
121
  ${WgslVertexOutput}
87
122
 
@@ -108,6 +143,13 @@ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
108
143
  return color;
109
144
  }
110
145
  `;
146
+ /**
147
+ * @description カラーマトリクスフィルター用フラグメントシェーダー
148
+ * Color matrix filter fragment shader
149
+ *
150
+ * @type {string}
151
+ * @constant
152
+ */
111
153
  export const ColorMatrixFilterFragment = /* wgsl */ `
112
154
  ${WgslVertexOutput}
113
155
 
@@ -132,12 +174,26 @@ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
132
174
  return result;
133
175
  }
134
176
  `;
177
+ /**
178
+ * @description ノードクリア用フラグメントシェーダー(透明色出力)
179
+ * Node clear fragment shader that outputs transparent color
180
+ *
181
+ * @type {string}
182
+ * @constant
183
+ */
135
184
  export const NodeClearFragment = /* wgsl */ `
136
185
  @fragment
137
186
  fn main() -> @location(0) vec4<f32> {
138
187
  return vec4<f32>(0.0, 0.0, 0.0, 0.0);
139
188
  }
140
189
  `;
190
+ /**
191
+ * @description 位置指定テクスチャサンプリング用フラグメントシェーダー
192
+ * Positioned texture sampling fragment shader
193
+ *
194
+ * @type {string}
195
+ * @constant
196
+ */
141
197
  export const PositionedTextureFragment = /* wgsl */ `
142
198
  ${WgslVertexOutput}
143
199
 
@@ -149,6 +205,13 @@ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
149
205
  return textureSampleLevel(inputTexture, textureSampler, input.texCoord, 0);
150
206
  }
151
207
  `;
208
+ /**
209
+ * @description ビットマップ同期用フラグメントシェーダー(テクスチャ直接サンプリング)
210
+ * Bitmap sync fragment shader with direct texture sampling
211
+ *
212
+ * @type {string}
213
+ * @constant
214
+ */
152
215
  export const BitmapSyncFragment = /* wgsl */ `
153
216
  ${WgslVertexOutput}
154
217
 
@@ -160,6 +223,13 @@ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
160
223
  return textureSampleLevel(inputTexture, textureSampler, input.texCoord, 0);
161
224
  }
162
225
  `;
226
+ /**
227
+ * @description 汎用ブレンドフラグメントシェーダー(Normal/Multiply/Screen/Add)
228
+ * Generic blend fragment shader supporting Normal, Multiply, Screen, and Add modes
229
+ *
230
+ * @type {string}
231
+ * @constant
232
+ */
163
233
  export const BlendGenericFragment = /* wgsl */ `
164
234
  struct VertexOutput {
165
235
  @builtin(position) position: vec4<f32>,
@@ -1,3 +1,24 @@
1
+ /**
2
+ * @description グラデーション塗りフラグメントシェーダー(頂点カラー乗算付き)
3
+ * Gradient fill fragment shader with vertex color multiplication
4
+ *
5
+ * @type {string}
6
+ * @constant
7
+ */
1
8
  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";
9
+ /**
10
+ * @description ステンシル用グラデーション塗りフラグメントシェーダー
11
+ * Gradient fill fragment shader for stencil rendering
12
+ *
13
+ * @type {string}
14
+ * @constant
15
+ */
2
16
  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";
17
+ /**
18
+ * @description テクスチャ座標ベースのグラデーションフラグメントシェーダー
19
+ * Texture coordinate-based gradient fragment shader
20
+ *
21
+ * @type {string}
22
+ * @constant
23
+ */
3
24
  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";
@@ -1,4 +1,11 @@
1
- const GradientUniformsAndSpread = `
1
+ /**
2
+ * @description グラデーションのUniform定義とスプレッドモード処理のWGSLコード
3
+ * WGSL code for gradient uniform definitions and spread mode handling
4
+ *
5
+ * @type {string}
6
+ * @constant
7
+ */
8
+ const $GradientUniformsAndSpread = `
2
9
  struct GradientUniforms {
3
10
  inverseMatrix: mat3x3<f32>,
4
11
  gradientType: f32,
@@ -25,7 +32,14 @@ fn applySpread(t: f32) -> f32 {
25
32
  }
26
33
  }
27
34
  `;
28
- const GradientCalculation = `
35
+ /**
36
+ * @description 線形・放射グラデーションのt値計算WGSLコード
37
+ * WGSL code for calculating t value in linear and radial gradients
38
+ *
39
+ * @type {string}
40
+ * @constant
41
+ */
42
+ const $GradientCalculation = `
29
43
  var t: f32;
30
44
  if (GRADIENT_TYPE == 0u) {
31
45
  let a = gradient.linearPoints.xy;
@@ -67,6 +81,13 @@ const GradientCalculation = `
67
81
  t = applySpread(t);
68
82
  let gradientColor = textureSampleLevel(gradientTexture, gradientSampler, vec2<f32>(t, 0.5), 0);
69
83
  `;
84
+ /**
85
+ * @description グラデーション塗りフラグメントシェーダー(頂点カラー乗算付き)
86
+ * Gradient fill fragment shader with vertex color multiplication
87
+ *
88
+ * @type {string}
89
+ * @constant
90
+ */
70
91
  export const GradientFillFragment = /* wgsl */ `
71
92
  struct VertexOutput {
72
93
  @builtin(position) position: vec4<f32>,
@@ -74,16 +95,23 @@ struct VertexOutput {
74
95
  @location(1) bezier: vec2<f32>,
75
96
  @location(2) color: vec4<f32>,
76
97
  }
77
- ${GradientUniformsAndSpread}
98
+ ${$GradientUniformsAndSpread}
78
99
 
79
100
  @fragment
80
101
  fn main(input: VertexOutput) -> @location(0) vec4<f32> {
81
102
  let p = input.v_uv;
82
- ${GradientCalculation}
103
+ ${$GradientCalculation}
83
104
  let result = gradientColor * input.color;
84
105
  return vec4<f32>(result.rgb * result.a, result.a);
85
106
  }
86
107
  `;
108
+ /**
109
+ * @description ステンシル用グラデーション塗りフラグメントシェーダー
110
+ * Gradient fill fragment shader for stencil rendering
111
+ *
112
+ * @type {string}
113
+ * @constant
114
+ */
87
115
  export const GradientFillStencilFragment = /* wgsl */ `
88
116
  struct VertexOutput {
89
117
  @builtin(position) position: vec4<f32>,
@@ -91,27 +119,34 @@ struct VertexOutput {
91
119
  @location(1) bezier: vec2<f32>,
92
120
  @location(2) color: vec4<f32>,
93
121
  }
94
- ${GradientUniformsAndSpread}
122
+ ${$GradientUniformsAndSpread}
95
123
 
96
124
  @fragment
97
125
  fn main(input: VertexOutput) -> @location(0) vec4<f32> {
98
126
  let p = input.v_uv;
99
- ${GradientCalculation}
127
+ ${$GradientCalculation}
100
128
  return vec4<f32>(gradientColor.rgb * gradientColor.a, gradientColor.a);
101
129
  }
102
130
  `;
131
+ /**
132
+ * @description テクスチャ座標ベースのグラデーションフラグメントシェーダー
133
+ * Texture coordinate-based gradient fragment shader
134
+ *
135
+ * @type {string}
136
+ * @constant
137
+ */
103
138
  export const GradientFragment = /* wgsl */ `
104
139
  struct VertexOutput {
105
140
  @builtin(position) position: vec4<f32>,
106
141
  @location(0) texCoord: vec2<f32>,
107
142
  @location(1) color: vec4<f32>,
108
143
  }
109
- ${GradientUniformsAndSpread}
144
+ ${$GradientUniformsAndSpread}
110
145
 
111
146
  @fragment
112
147
  fn main(input: VertexOutput) -> @location(0) vec4<f32> {
113
148
  let p = input.texCoord;
114
- ${GradientCalculation}
149
+ ${$GradientCalculation}
115
150
  let result = gradientColor * input.color;
116
151
  return vec4<f32>(result.rgb * result.a, result.a);
117
152
  }
@@ -1 +1,8 @@
1
+ /**
2
+ * @description インスタンス描画用フラグメントシェーダー(カラー変換付き)
3
+ * Instanced rendering fragment shader with color transform
4
+ *
5
+ * @type {string}
6
+ * @constant
7
+ */
1
8
  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";
@@ -1,3 +1,10 @@
1
+ /**
2
+ * @description インスタンス描画用フラグメントシェーダー(カラー変換付き)
3
+ * Instanced rendering fragment shader with color transform
4
+ *
5
+ * @type {string}
6
+ * @constant
7
+ */
1
8
  export const InstancedFragment = /* wgsl */ `
2
9
  struct VertexOutput {
3
10
  @builtin(position) position: vec4<f32>,
@@ -1 +1,8 @@
1
+ /**
2
+ * @description ベジェ曲線ベースのマスク用フラグメントシェーダー
3
+ * Bezier curve-based mask fragment shader
4
+ *
5
+ * @type {string}
6
+ * @constant
7
+ */
1
8
  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";
@@ -1,3 +1,10 @@
1
+ /**
2
+ * @description ベジェ曲線ベースのマスク用フラグメントシェーダー
3
+ * Bezier curve-based mask fragment shader
4
+ *
5
+ * @type {string}
6
+ * @constant
7
+ */
1
8
  export const MaskFragment = /* wgsl */ `
2
9
  struct FragmentInput {
3
10
  @location(0) bezier: vec2<f32>,
@@ -1,2 +1,16 @@
1
+ /**
2
+ * @description ステンシル書き込み用フラグメントシェーダー(ベジェ曲線アンチエイリアス)
3
+ * Stencil write fragment shader with bezier curve anti-aliasing
4
+ *
5
+ * @type {string}
6
+ * @constant
7
+ */
1
8
  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";
9
+ /**
10
+ * @description ステンシル塗り用フラグメントシェーダー(プリマルチプライドアルファ出力)
11
+ * Stencil fill fragment shader with premultiplied alpha output
12
+ *
13
+ * @type {string}
14
+ * @constant
15
+ */
2
16
  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";