@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,207 +0,0 @@
1
- export const getBitmapFilterFragmentShader = (transformsBase, transformsBlur, isGlow, type, knockout, appliesStrength, isGradient) => {
2
- const isInner = type === "inner";
3
- let textureBindingIndex = 2;
4
- const blurTextureBinding = textureBindingIndex++;
5
- const baseTextureBinding = transformsBase ? textureBindingIndex++ : -1;
6
- const gradientTextureBinding = isGradient ? textureBindingIndex++ : -1;
7
- let uniformsStruct = `struct BitmapFilterUniforms {
8
- `;
9
- if (transformsBase) {
10
- uniformsStruct += ` baseScale: vec2<f32>,
11
- baseOffset: vec2<f32>,
12
- `;
13
- }
14
- if (transformsBlur) {
15
- uniformsStruct += ` blurScale: vec2<f32>,
16
- blurOffset: vec2<f32>,
17
- `;
18
- }
19
- if (appliesStrength) {
20
- uniformsStruct += ` strength: f32,
21
- _padStrength: vec3<f32>,
22
- `;
23
- }
24
- if (!isGradient) {
25
- if (isGlow) {
26
- uniformsStruct += ` color: vec4<f32>,
27
- `;
28
- }
29
- else {
30
- uniformsStruct += ` highlightColor: vec4<f32>,
31
- shadowColor: vec4<f32>,
32
- `;
33
- }
34
- }
35
- uniformsStruct += "}";
36
- let textureBindings = `
37
- @group(0) @binding(0) var<uniform> uniforms: BitmapFilterUniforms;
38
- @group(0) @binding(1) var sourceSampler: sampler;
39
- @group(0) @binding(${blurTextureBinding}) var blurTexture: texture_2d<f32>;`;
40
- if (transformsBase) {
41
- textureBindings += `
42
- @group(0) @binding(${baseTextureBinding}) var baseTexture: texture_2d<f32>;`;
43
- }
44
- if (isGradient) {
45
- textureBindings += `
46
- @group(0) @binding(${gradientTextureBinding}) var gradientTexture: texture_2d<f32>;`;
47
- }
48
- let baseStatement = "";
49
- if (transformsBase) {
50
- baseStatement = `
51
- let baseScale = uniforms.baseScale;
52
- let baseOffset = uniforms.baseOffset;
53
- let uv = input.texCoord * baseScale - baseOffset;
54
- let base = mix(vec4<f32>(0.0), textureSample(baseTexture, sourceSampler, uv), isInside(uv));`;
55
- }
56
- let blurStatement = "";
57
- if (transformsBlur) {
58
- blurStatement = `
59
- let blurScale = uniforms.blurScale;
60
- let blurOffset = uniforms.blurOffset;
61
- let st = input.texCoord * blurScale - blurOffset;
62
- var blur = mix(vec4<f32>(0.0), textureSample(blurTexture, sourceSampler, st), isInside(st));`;
63
- }
64
- else {
65
- blurStatement = `
66
- var blur = textureSample(blurTexture, sourceSampler, input.texCoord);`;
67
- }
68
- let colorStatement = "";
69
- if (isGlow) {
70
- if (isInner) {
71
- colorStatement += `
72
- blur.a = 1.0 - blur.a;`;
73
- }
74
- if (appliesStrength) {
75
- colorStatement += `
76
- let strength = uniforms.strength;
77
- blur.a = clamp(blur.a * strength, 0.0, 1.0);`;
78
- }
79
- if (isGradient) {
80
- colorStatement += `
81
- blur = textureSample(gradientTexture, sourceSampler, vec2<f32>(blur.a, 0.5));`;
82
- }
83
- else {
84
- colorStatement += `
85
- let color = uniforms.color;
86
- blur = color * blur.a;`;
87
- }
88
- }
89
- else {
90
- if (transformsBlur) {
91
- colorStatement += `
92
- let pq = (vec2<f32>(1.0) - input.texCoord) * blurScale - blurOffset;
93
- let blur2 = mix(vec4<f32>(0.0), textureSample(blurTexture, sourceSampler, pq), isInside(pq));`;
94
- }
95
- else {
96
- colorStatement += `
97
- let blur2 = textureSample(blurTexture, sourceSampler, vec2<f32>(1.0) - input.texCoord);`;
98
- }
99
- colorStatement += `
100
- var highlightAlpha = blur.a - blur2.a;
101
- var shadowAlpha = blur2.a - blur.a;`;
102
- if (appliesStrength) {
103
- colorStatement += `
104
- let strength = uniforms.strength;
105
- highlightAlpha = highlightAlpha * strength;
106
- shadowAlpha = shadowAlpha * strength;`;
107
- }
108
- colorStatement += `
109
- highlightAlpha = clamp(highlightAlpha, 0.0, 1.0);
110
- shadowAlpha = clamp(shadowAlpha, 0.0, 1.0);`;
111
- if (isGradient) {
112
- colorStatement += `
113
- blur = textureSample(gradientTexture, sourceSampler, vec2<f32>(
114
- 0.5019607843137255 - 0.5019607843137255 * shadowAlpha + 0.4980392156862745 * highlightAlpha,
115
- 0.5
116
- ));`;
117
- }
118
- else {
119
- colorStatement += `
120
- let highlightColor = uniforms.highlightColor;
121
- let shadowColor = uniforms.shadowColor;
122
- blur = highlightColor * highlightAlpha + shadowColor * shadowAlpha;`;
123
- }
124
- }
125
- let modeExpression = "";
126
- switch (type) {
127
- case "outer":
128
- modeExpression = knockout
129
- ? "blur - blur * base.a"
130
- : "base + blur - blur * base.a";
131
- break;
132
- case "full":
133
- modeExpression = knockout
134
- ? "blur"
135
- : "base - base * blur.a + blur";
136
- break;
137
- case "inner":
138
- default:
139
- modeExpression = "blur";
140
- break;
141
- }
142
- const needsBase = transformsBase || (type === "outer" || type === "full" && !knockout);
143
- let baseDecl = "";
144
- if (needsBase && !transformsBase) {
145
- baseDecl = `
146
- let base = vec4<f32>(0.0);`;
147
- }
148
- return `
149
- ${uniformsStruct}
150
- ${textureBindings}
151
-
152
- struct VertexOutput {
153
- @builtin(position) position: vec4<f32>,
154
- @location(0) texCoord: vec2<f32>,
155
- }
156
-
157
- fn isInside(uv: vec2<f32>) -> f32 {
158
- let inside = step(vec2<f32>(0.0), uv) * step(uv, vec2<f32>(1.0));
159
- return inside.x * inside.y;
160
- }
161
-
162
- @vertex
163
- fn vs_main(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {
164
- var positions = array<vec2<f32>, 6>(
165
- vec2<f32>(-1.0, -1.0),
166
- vec2<f32>(1.0, -1.0),
167
- vec2<f32>(-1.0, 1.0),
168
- vec2<f32>(-1.0, 1.0),
169
- vec2<f32>(1.0, -1.0),
170
- vec2<f32>(1.0, 1.0)
171
- );
172
-
173
- var texCoords = array<vec2<f32>, 6>(
174
- vec2<f32>(0.0, 1.0),
175
- vec2<f32>(1.0, 1.0),
176
- vec2<f32>(0.0, 0.0),
177
- vec2<f32>(0.0, 0.0),
178
- vec2<f32>(1.0, 1.0),
179
- vec2<f32>(1.0, 0.0)
180
- );
181
-
182
- var output: VertexOutput;
183
- output.position = vec4<f32>(positions[vertexIndex], 0.0, 1.0);
184
- output.texCoord = texCoords[vertexIndex];
185
- return output;
186
- }
187
-
188
- @fragment
189
- fn fs_main(input: VertexOutput) -> @location(0) vec4<f32> {
190
- ${baseDecl}
191
- ${baseStatement}
192
- ${blurStatement}
193
- ${colorStatement}
194
-
195
- return ${modeExpression};
196
- }
197
- `;
198
- };
199
- export const getBitmapFilterShaderKey = (transformsBase, transformsBlur, isGlow, type, knockout, appliesStrength, isGradient) => {
200
- const key1 = transformsBase ? "y" : "n";
201
- const key2 = transformsBlur ? "y" : "n";
202
- const key3 = isGlow ? "g" : "b";
203
- const key4 = knockout ? "k" : "n";
204
- const key5 = appliesStrength ? "s" : "n";
205
- const key6 = isGradient ? "gr" : "so";
206
- return `bitmap_${key1}${key2}${key3}${type}${key4}${key5}${key6}`;
207
- };
@@ -1,40 +0,0 @@
1
- import type { IAttachmentObject } from "../../../interface/IAttachmentObject";
2
- import type { IFilterConfig } from "../../../interface/IFilterConfig";
3
- import type { ComputePipelineManager } from "../../../Compute/ComputePipelineManager";
4
- /**
5
- * @description Compute Shaderでブラーパスを実行
6
- * Apply blur pass using Compute Shader
7
- *
8
- * Fragment Shaderベースの従来実装と比較して:
9
- * - 並列処理による高速化(大きな半径で20-35%)
10
- * - 共有メモリを活用したメモリアクセス最適化
11
- * - ワークグループ内でのデータ共有
12
- *
13
- * @param {GPUDevice} device - WebGPU device
14
- * @param {GPUCommandEncoder} commandEncoder - コマンドエンコーダー
15
- * @param {ComputePipelineManager} computePipelineManager - Compute Pipeline Manager
16
- * @param {IFilterConfig} config - フィルター設定
17
- * @param {IAttachmentObject} source - 入力アタッチメント
18
- * @param {IAttachmentObject} dest - 出力アタッチメント
19
- * @param {boolean} isHorizontal - 水平ブラーかどうか
20
- * @param {number} blur - ブラー量
21
- * @return {void}
22
- */
23
- export declare const execute: (device: GPUDevice, commandEncoder: GPUCommandEncoder, computePipelineManager: ComputePipelineManager, _config: IFilterConfig, source: IAttachmentObject, dest: IAttachmentObject, isHorizontal: boolean, blur: number) => void;
24
- /**
25
- * @description Compute Shaderを使用すべきかどうか判定
26
- * Determine whether to use Compute Shader
27
- *
28
- * 以下の条件でCompute Shaderを使用:
29
- * - ブラー半径が大きい(8以上)
30
- * - テクスチャサイズが十分大きい(256x256以上)
31
- *
32
- * 小さなブラー半径では Fragment Shader の方が効率的な場合がある。
33
- *
34
- * @param {number} blurX - X方向のブラー量
35
- * @param {number} blurY - Y方向のブラー量
36
- * @param {number} width - テクスチャ幅
37
- * @param {number} height - テクスチャ高さ
38
- * @return {boolean} Compute Shaderを使用すべきかどうか
39
- */
40
- export declare const shouldUseComputeShader: (blurX: number, blurY: number, width: number, height: number) => boolean;
@@ -1,51 +0,0 @@
1
- import { execute as executeBlurCompute } from "../../../Compute/service/ComputeExecuteBlurService";
2
- /**
3
- * @description Compute Shaderでブラーパスを実行
4
- * Apply blur pass using Compute Shader
5
- *
6
- * Fragment Shaderベースの従来実装と比較して:
7
- * - 並列処理による高速化(大きな半径で20-35%)
8
- * - 共有メモリを活用したメモリアクセス最適化
9
- * - ワークグループ内でのデータ共有
10
- *
11
- * @param {GPUDevice} device - WebGPU device
12
- * @param {GPUCommandEncoder} commandEncoder - コマンドエンコーダー
13
- * @param {ComputePipelineManager} computePipelineManager - Compute Pipeline Manager
14
- * @param {IFilterConfig} config - フィルター設定
15
- * @param {IAttachmentObject} source - 入力アタッチメント
16
- * @param {IAttachmentObject} dest - 出力アタッチメント
17
- * @param {boolean} isHorizontal - 水平ブラーかどうか
18
- * @param {number} blur - ブラー量
19
- * @return {void}
20
- */
21
- export const execute = (device, commandEncoder, computePipelineManager, _config, source, dest, isHorizontal, blur) => {
22
- // ブラー半径を計算(ブラー量の半分)
23
- const radius = Math.ceil(blur / 2);
24
- // Compute Shaderでブラーを実行
25
- executeBlurCompute(device, commandEncoder, computePipelineManager, source, dest, isHorizontal, radius);
26
- };
27
- /**
28
- * @description Compute Shaderを使用すべきかどうか判定
29
- * Determine whether to use Compute Shader
30
- *
31
- * 以下の条件でCompute Shaderを使用:
32
- * - ブラー半径が大きい(8以上)
33
- * - テクスチャサイズが十分大きい(256x256以上)
34
- *
35
- * 小さなブラー半径では Fragment Shader の方が効率的な場合がある。
36
- *
37
- * @param {number} blurX - X方向のブラー量
38
- * @param {number} blurY - Y方向のブラー量
39
- * @param {number} width - テクスチャ幅
40
- * @param {number} height - テクスチャ高さ
41
- * @return {boolean} Compute Shaderを使用すべきかどうか
42
- */
43
- export const shouldUseComputeShader = (blurX, blurY, width, height) => {
44
- // ブラー半径のしきい値
45
- const BLUR_THRESHOLD = 4;
46
- // テクスチャサイズのしきい値
47
- const SIZE_THRESHOLD = 128;
48
- const maxBlur = Math.max(blurX, blurY);
49
- const minSize = Math.min(width, height);
50
- return maxBlur >= BLUR_THRESHOLD && minSize >= SIZE_THRESHOLD;
51
- };
@@ -1,25 +0,0 @@
1
- import type { IAttachmentObject } from "../../../interface/IAttachmentObject";
2
- import type { IFilterConfig } from "../../../interface/IFilterConfig";
3
- import type { ComputePipelineManager } from "../../../Compute/ComputePipelineManager";
4
- /**
5
- * @description Compute Shaderを使用したブラーフィルター
6
- * Apply blur filter using Compute Shader
7
- *
8
- * Fragment Shaderベースの従来実装と比較して:
9
- * - 大きなブラー半径で20-35%高速化
10
- * - 並列処理による効率的なテクスチャサンプリング
11
- * - 共有メモリを活用したメモリアクセス最適化
12
- *
13
- * 小さなブラー半径(8未満)では従来のFragment Shaderを使用。
14
- *
15
- * @param {IAttachmentObject} sourceAttachment - 入力テクスチャ
16
- * @param {Float32Array} matrix - 変換行列
17
- * @param {number} blurX - X方向のブラー量
18
- * @param {number} blurY - Y方向のブラー量
19
- * @param {number} quality - クオリティ (1-15)
20
- * @param {number} devicePixelRatio - デバイスピクセル比
21
- * @param {IFilterConfig} config - WebGPUリソース設定
22
- * @param {ComputePipelineManager} computePipelineManager - Compute Pipeline Manager
23
- * @return {IAttachmentObject} - フィルター適用後のアタッチメント
24
- */
25
- export declare const execute: (sourceAttachment: IAttachmentObject, matrix: Float32Array, blurX: number, blurY: number, quality: number, devicePixelRatio: number, config: IFilterConfig, computePipelineManager: ComputePipelineManager) => IAttachmentObject;
@@ -1,180 +0,0 @@
1
- import { $offset } from "../../FilterOffset";
2
- import { calculateBlurParams } from "../../BlurFilterUseCase";
3
- import { execute as blurComputeService, shouldUseComputeShader } from "../service/BlurFilterComputeShaderService";
4
- import { execute as executeFragmentBlur } from "../FilterApplyBlurFilterUseCase";
5
- /**
6
- * @description プリアロケートされたFloat32Array (サイズ4)
7
- */
8
- const $uniform4 = new Float32Array(4);
9
- /**
10
- * @description プリアロケートされたBindGroupEntry配列 (バインディング3つ)
11
- */
12
- const $entries3 = [
13
- { "binding": 0, "resource": { "buffer": null } },
14
- { "binding": 1, "resource": null },
15
- { "binding": 2, "resource": null }
16
- ];
17
- /**
18
- * @description Compute Shaderを使用したブラーフィルター
19
- * Apply blur filter using Compute Shader
20
- *
21
- * Fragment Shaderベースの従来実装と比較して:
22
- * - 大きなブラー半径で20-35%高速化
23
- * - 並列処理による効率的なテクスチャサンプリング
24
- * - 共有メモリを活用したメモリアクセス最適化
25
- *
26
- * 小さなブラー半径(8未満)では従来のFragment Shaderを使用。
27
- *
28
- * @param {IAttachmentObject} sourceAttachment - 入力テクスチャ
29
- * @param {Float32Array} matrix - 変換行列
30
- * @param {number} blurX - X方向のブラー量
31
- * @param {number} blurY - Y方向のブラー量
32
- * @param {number} quality - クオリティ (1-15)
33
- * @param {number} devicePixelRatio - デバイスピクセル比
34
- * @param {IFilterConfig} config - WebGPUリソース設定
35
- * @param {ComputePipelineManager} computePipelineManager - Compute Pipeline Manager
36
- * @return {IAttachmentObject} - フィルター適用後のアタッチメント
37
- */
38
- export const execute = (sourceAttachment, matrix, blurX, blurY, quality, devicePixelRatio, config, computePipelineManager) => {
39
- const { device, commandEncoder, frameBufferManager, pipelineManager, textureManager } = config;
40
- // ブラーパラメータを計算
41
- const blurParams = calculateBlurParams(matrix, blurX, blurY, quality, devicePixelRatio);
42
- const { baseBlurX, baseBlurY, offsetX, offsetY, bufferScaleX, bufferScaleY } = blurParams;
43
- // オフセットを更新
44
- $offset.x += offsetX;
45
- $offset.y += offsetY;
46
- // ブラー用バッファサイズを計算
47
- const width = sourceAttachment.width + offsetX * 2;
48
- const height = sourceAttachment.height + offsetY * 2;
49
- const bufferWidth = Math.ceil(width * bufferScaleX);
50
- const bufferHeight = Math.ceil(height * bufferScaleY);
51
- // Compute Shaderを使用すべきか判定
52
- const useCompute = shouldUseComputeShader(baseBlurX, baseBlurY, bufferWidth, bufferHeight);
53
- if (!useCompute) {
54
- // 小さなブラーは従来のFragment Shaderを使用
55
- // FilterApplyBlurFilterUseCaseにフォールバック
56
- return executeFragmentBlur(sourceAttachment, matrix, blurX, blurY, quality, devicePixelRatio, config);
57
- }
58
- // ピンポンバッファ用の一時アタッチメントを作成
59
- const attachment0 = frameBufferManager.createTemporaryAttachment(bufferWidth, bufferHeight);
60
- const attachment1 = frameBufferManager.createTemporaryAttachment(bufferWidth, bufferHeight);
61
- // サンプラーを作成(線形補間)
62
- const sampler = textureManager.createSampler("blur_compute_sampler", true);
63
- // ソーステクスチャをattachment0にコピー
64
- copyTextureToAttachment(device, commandEncoder, frameBufferManager, pipelineManager, sourceAttachment, attachment0, sampler, bufferScaleX, bufferScaleY, offsetX * bufferScaleX, offsetY * bufferScaleY, config.bufferManager);
65
- // バッファスケールを考慮したブラー値
66
- const bufferBlurX = baseBlurX * bufferScaleX;
67
- const bufferBlurY = baseBlurY * bufferScaleY;
68
- // Compute Shaderでブラーパスを実行
69
- const attachments = [attachment0, attachment1];
70
- let attachmentIndex = 0;
71
- for (let q = 0; q < quality; ++q) {
72
- // 水平ブラー
73
- if (blurX > 0) {
74
- const srcIndex = attachmentIndex;
75
- attachmentIndex = (attachmentIndex + 1) % 2;
76
- blurComputeService(device, commandEncoder, computePipelineManager, config, attachments[srcIndex], attachments[attachmentIndex], true, bufferBlurX);
77
- }
78
- // 垂直ブラー
79
- if (blurY > 0) {
80
- const srcIndex = attachmentIndex;
81
- attachmentIndex = (attachmentIndex + 1) % 2;
82
- blurComputeService(device, commandEncoder, computePipelineManager, config, attachments[srcIndex], attachments[attachmentIndex], false, bufferBlurY);
83
- }
84
- }
85
- // 結果のアタッチメント
86
- let resultAttachment = attachments[attachmentIndex];
87
- // バッファスケールが1でない場合は元のサイズにアップスケール
88
- if (bufferScaleX !== 1 || bufferScaleY !== 1) {
89
- const finalAttachment = frameBufferManager.createTemporaryAttachment(width, height);
90
- upscaleTexture(device, commandEncoder, frameBufferManager, pipelineManager, resultAttachment, finalAttachment, sampler, config.bufferManager);
91
- // ピンポンバッファを解放
92
- frameBufferManager.releaseTemporaryAttachment(attachment0);
93
- frameBufferManager.releaseTemporaryAttachment(attachment1);
94
- resultAttachment = finalAttachment;
95
- }
96
- else {
97
- // 使わなかったバッファを解放
98
- const unusedIndex = (attachmentIndex + 1) % 2;
99
- frameBufferManager.releaseTemporaryAttachment(attachments[unusedIndex]);
100
- }
101
- return resultAttachment;
102
- };
103
- /**
104
- * @description テクスチャをアタッチメントにコピー
105
- */
106
- const copyTextureToAttachment = (device, commandEncoder, frameBufferManager, pipelineManager, source, dest, sampler, bufferScaleX, bufferScaleY, pixelOffsetX, pixelOffsetY, bufferManager) => {
107
- const pipeline = pipelineManager.getPipeline("texture_copy_rgba8");
108
- const bindGroupLayout = pipelineManager.getBindGroupLayout("texture_copy");
109
- if (!pipeline || !bindGroupLayout) {
110
- console.error("[WebGPU BlurCompute] texture_copy_rgba8 pipeline not found");
111
- return;
112
- }
113
- const scaledSourceWidth = source.width * bufferScaleX;
114
- const scaledSourceHeight = source.height * bufferScaleY;
115
- $uniform4[0] = 1;
116
- $uniform4[1] = 1;
117
- $uniform4[2] = 0;
118
- $uniform4[3] = 0;
119
- const uniformBuffer = bufferManager
120
- ? bufferManager.acquireAndWriteUniformBuffer($uniform4)
121
- : device.createBuffer({
122
- "size": $uniform4.byteLength,
123
- "usage": GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST
124
- });
125
- if (!bufferManager) {
126
- device.queue.writeBuffer(uniformBuffer, 0, $uniform4);
127
- }
128
- $entries3[0].resource.buffer = uniformBuffer;
129
- $entries3[1].resource = sampler;
130
- $entries3[2].resource = source.texture.view;
131
- const bindGroup = device.createBindGroup({
132
- "layout": bindGroupLayout,
133
- "entries": $entries3
134
- });
135
- const renderPassDescriptor = frameBufferManager.createRenderPassDescriptor(dest.texture.view, 0, 0, 0, 0, "clear");
136
- const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);
137
- passEncoder.setPipeline(pipeline);
138
- passEncoder.setBindGroup(0, bindGroup);
139
- passEncoder.setViewport(pixelOffsetX, pixelOffsetY, scaledSourceWidth, scaledSourceHeight, 0, 1);
140
- passEncoder.setScissorRect(Math.floor(pixelOffsetX), Math.floor(pixelOffsetY), Math.ceil(scaledSourceWidth), Math.ceil(scaledSourceHeight));
141
- passEncoder.draw(6, 1, 0, 0);
142
- passEncoder.end();
143
- };
144
- /**
145
- * @description テクスチャをアップスケール
146
- */
147
- const upscaleTexture = (device, commandEncoder, frameBufferManager, pipelineManager, source, dest, sampler, bufferManager) => {
148
- const pipeline = pipelineManager.getPipeline("texture_copy_rgba8");
149
- const bindGroupLayout = pipelineManager.getBindGroupLayout("texture_copy");
150
- if (!pipeline || !bindGroupLayout) {
151
- console.error("[WebGPU BlurCompute] texture_copy_rgba8 pipeline not found");
152
- return;
153
- }
154
- $uniform4[0] = 1;
155
- $uniform4[1] = 1;
156
- $uniform4[2] = 0;
157
- $uniform4[3] = 0;
158
- const uniformBuffer = bufferManager
159
- ? bufferManager.acquireAndWriteUniformBuffer($uniform4)
160
- : device.createBuffer({
161
- "size": $uniform4.byteLength,
162
- "usage": GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST
163
- });
164
- if (!bufferManager) {
165
- device.queue.writeBuffer(uniformBuffer, 0, $uniform4);
166
- }
167
- $entries3[0].resource.buffer = uniformBuffer;
168
- $entries3[1].resource = sampler;
169
- $entries3[2].resource = source.texture.view;
170
- const bindGroup = device.createBindGroup({
171
- "layout": bindGroupLayout,
172
- "entries": $entries3
173
- });
174
- const renderPassDescriptor = frameBufferManager.createRenderPassDescriptor(dest.texture.view, 0, 0, 0, 0, "clear");
175
- const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);
176
- passEncoder.setPipeline(pipeline);
177
- passEncoder.setBindGroup(0, bindGroup);
178
- passEncoder.draw(6, 1, 0, 0);
179
- passEncoder.end();
180
- };
@@ -1,5 +0,0 @@
1
- export declare class BlurFilterShader {
2
- static getVertexShader(): string;
3
- static getHorizontalBlurShader(): string;
4
- static getVerticalBlurShader(): string;
5
- }
@@ -1,109 +0,0 @@
1
- export class BlurFilterShader {
2
- static getVertexShader() {
3
- return /* wgsl */ `
4
- struct VertexInput {
5
- @location(0) position: vec2<f32>,
6
- @location(1) texCoord: vec2<f32>,
7
- }
8
-
9
- struct VertexOutput {
10
- @builtin(position) position: vec4<f32>,
11
- @location(0) texCoord: vec2<f32>,
12
- }
13
-
14
- @vertex
15
- fn main(input: VertexInput) -> VertexOutput {
16
- var output: VertexOutput;
17
- output.position = vec4<f32>(input.position, 0.0, 1.0);
18
- output.texCoord = input.texCoord;
19
- return output;
20
- }
21
- `;
22
- }
23
- static getHorizontalBlurShader() {
24
- return /* wgsl */ `
25
- struct VertexOutput {
26
- @builtin(position) position: vec4<f32>,
27
- @location(0) texCoord: vec2<f32>,
28
- }
29
-
30
- struct BlurUniforms {
31
- blurSize: f32,
32
- textureWidth: f32,
33
- textureHeight: f32,
34
- _padding: f32,
35
- }
36
-
37
- @group(0) @binding(0) var<uniform> uniforms: BlurUniforms;
38
- @group(0) @binding(1) var textureSampler: sampler;
39
- @group(0) @binding(2) var textureData: texture_2d<f32>;
40
-
41
- @fragment
42
- fn main(input: VertexOutput) -> @location(0) vec4<f32> {
43
- let texelSize = 1.0 / uniforms.textureWidth;
44
- var color = vec4<f32>(0.0);
45
- let blurRadius = i32(uniforms.blurSize);
46
-
47
- var totalWeight = 0.0;
48
-
49
- for (var i = -blurRadius; i <= blurRadius; i++) {
50
- let offset = f32(i) * texelSize;
51
- let weight = 1.0 - abs(f32(i)) / f32(blurRadius + 1);
52
-
53
- let sampleCoord = vec2<f32>(
54
- input.texCoord.x + offset,
55
- input.texCoord.y
56
- );
57
-
58
- color += textureSample(textureData, textureSampler, sampleCoord) * weight;
59
- totalWeight += weight;
60
- }
61
-
62
- return color / totalWeight;
63
- }
64
- `;
65
- }
66
- static getVerticalBlurShader() {
67
- return /* wgsl */ `
68
- struct VertexOutput {
69
- @builtin(position) position: vec4<f32>,
70
- @location(0) texCoord: vec2<f32>,
71
- }
72
-
73
- struct BlurUniforms {
74
- blurSize: f32,
75
- textureWidth: f32,
76
- textureHeight: f32,
77
- _padding: f32,
78
- }
79
-
80
- @group(0) @binding(0) var<uniform> uniforms: BlurUniforms;
81
- @group(0) @binding(1) var textureSampler: sampler;
82
- @group(0) @binding(2) var textureData: texture_2d<f32>;
83
-
84
- @fragment
85
- fn main(input: VertexOutput) -> @location(0) vec4<f32> {
86
- let texelSize = 1.0 / uniforms.textureHeight;
87
- var color = vec4<f32>(0.0);
88
- let blurRadius = i32(uniforms.blurSize);
89
-
90
- var totalWeight = 0.0;
91
-
92
- for (var i = -blurRadius; i <= blurRadius; i++) {
93
- let offset = f32(i) * texelSize;
94
- let weight = 1.0 - abs(f32(i)) / f32(blurRadius + 1);
95
-
96
- let sampleCoord = vec2<f32>(
97
- input.texCoord.x,
98
- input.texCoord.y + offset
99
- );
100
-
101
- color += textureSample(textureData, textureSampler, sampleCoord) * weight;
102
- totalWeight += weight;
103
- }
104
-
105
- return color / totalWeight;
106
- }
107
- `;
108
- }
109
- }
@@ -1,4 +0,0 @@
1
- export declare class ColorMatrixFilterShader {
2
- static getFragmentShader(): string;
3
- static getVertexShader(): string;
4
- }
@@ -1,51 +0,0 @@
1
- export class ColorMatrixFilterShader {
2
- static getFragmentShader() {
3
- return /* wgsl */ `
4
- struct VertexOutput {
5
- @builtin(position) position: vec4<f32>,
6
- @location(0) texCoord: vec2<f32>,
7
- }
8
-
9
- struct ColorMatrixUniforms {
10
- matrix: mat4x4<f32>,
11
- offset: vec4<f32>,
12
- }
13
-
14
- @group(0) @binding(0) var<uniform> uniforms: ColorMatrixUniforms;
15
- @group(0) @binding(1) var textureSampler: sampler;
16
- @group(0) @binding(2) var textureData: texture_2d<f32>;
17
-
18
- @fragment
19
- fn main(input: VertexOutput) -> @location(0) vec4<f32> {
20
- var color = textureSample(textureData, textureSampler, input.texCoord);
21
-
22
- var result = uniforms.matrix * color + uniforms.offset;
23
-
24
- result = clamp(result, vec4<f32>(0.0), vec4<f32>(1.0));
25
-
26
- return result;
27
- }
28
- `;
29
- }
30
- static getVertexShader() {
31
- return /* wgsl */ `
32
- struct VertexInput {
33
- @location(0) position: vec2<f32>,
34
- @location(1) texCoord: vec2<f32>,
35
- }
36
-
37
- struct VertexOutput {
38
- @builtin(position) position: vec4<f32>,
39
- @location(0) texCoord: vec2<f32>,
40
- }
41
-
42
- @vertex
43
- fn main(input: VertexInput) -> VertexOutput {
44
- var output: VertexOutput;
45
- output.position = vec4<f32>(input.position, 0.0, 1.0);
46
- output.texCoord = input.texCoord;
47
- return output;
48
- }
49
- `;
50
- }
51
- }
@@ -1,2 +0,0 @@
1
- export declare const getConvolutionFilterFragmentShader: (matrixX: number, matrixY: number, preserveAlpha: boolean, clamp: boolean) => string;
2
- export declare const getConvolutionFilterShaderKey: (matrixX: number, matrixY: number, preserveAlpha: boolean, clamp: boolean) => string;