@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,13 +0,0 @@
1
- /**
2
- * @description サンプラーのキーを生成
3
- * Generate sampler cache key
4
- *
5
- * @param {GPUFilterMode} minFilter
6
- * @param {GPUFilterMode} magFilter
7
- * @param {GPUAddressMode} addressModeU
8
- * @param {GPUAddressMode} addressModeV
9
- * @return {string}
10
- * @method
11
- * @protected
12
- */
13
- export declare const execute: (minFilter: GPUFilterMode, magFilter: GPUFilterMode, addressModeU: GPUAddressMode, addressModeV: GPUAddressMode) => string;
@@ -1,15 +0,0 @@
1
- /**
2
- * @description サンプラーのキーを生成
3
- * Generate sampler cache key
4
- *
5
- * @param {GPUFilterMode} minFilter
6
- * @param {GPUFilterMode} magFilter
7
- * @param {GPUAddressMode} addressModeU
8
- * @param {GPUAddressMode} addressModeV
9
- * @return {string}
10
- * @method
11
- * @protected
12
- */
13
- export const execute = (minFilter, magFilter, addressModeU, addressModeV) => {
14
- return `${minFilter}_${magFilter}_${addressModeU}_${addressModeV}`;
15
- };
@@ -1,15 +0,0 @@
1
- /**
2
- * @description サンプラーを取得または作成
3
- * Get or create sampler
4
- *
5
- * @param {GPUDevice} device
6
- * @param {Map<string, GPUSampler>} cache
7
- * @param {GPUFilterMode} minFilter
8
- * @param {GPUFilterMode} magFilter
9
- * @param {GPUAddressMode} addressModeU
10
- * @param {GPUAddressMode} addressModeV
11
- * @return {GPUSampler}
12
- * @method
13
- * @protected
14
- */
15
- export declare const execute: (device: GPUDevice, cache: Map<string, GPUSampler>, minFilter: GPUFilterMode, magFilter: GPUFilterMode, addressModeU: GPUAddressMode, addressModeV: GPUAddressMode) => GPUSampler;
@@ -1,30 +0,0 @@
1
- import { execute as samplerCacheGenerateKeyService } from "./SamplerCacheGenerateKeyService";
2
- /**
3
- * @description サンプラーを取得または作成
4
- * Get or create sampler
5
- *
6
- * @param {GPUDevice} device
7
- * @param {Map<string, GPUSampler>} cache
8
- * @param {GPUFilterMode} minFilter
9
- * @param {GPUFilterMode} magFilter
10
- * @param {GPUAddressMode} addressModeU
11
- * @param {GPUAddressMode} addressModeV
12
- * @return {GPUSampler}
13
- * @method
14
- * @protected
15
- */
16
- export const execute = (device, cache, minFilter, magFilter, addressModeU, addressModeV) => {
17
- const key = samplerCacheGenerateKeyService(minFilter, magFilter, addressModeU, addressModeV);
18
- const cached = cache.get(key);
19
- if (cached) {
20
- return cached;
21
- }
22
- const sampler = device.createSampler({
23
- minFilter,
24
- magFilter,
25
- addressModeU,
26
- addressModeV
27
- });
28
- cache.set(key, sampler);
29
- return sampler;
30
- };
@@ -1,18 +0,0 @@
1
- export declare class SamplerCache {
2
- private device;
3
- private cache;
4
- constructor(device: GPUDevice);
5
- getOrCreate(minFilter: GPUFilterMode, magFilter: GPUFilterMode, addressModeU: GPUAddressMode, addressModeV: GPUAddressMode): GPUSampler;
6
- getLinearClamp(): GPUSampler;
7
- getNearestClamp(): GPUSampler;
8
- getLinearRepeat(): GPUSampler;
9
- getNearestRepeat(): GPUSampler;
10
- getBySmoothRepeat(smooth: boolean, repeat: boolean): GPUSampler;
11
- getStats(): {
12
- size: number;
13
- };
14
- dispose(): void;
15
- }
16
- export declare const initSamplerCache: (device: GPUDevice) => void;
17
- export declare const getSamplerCache: () => SamplerCache | null;
18
- export declare const clearSamplerCache: () => void;
@@ -1,61 +0,0 @@
1
- import { execute as samplerCacheGetOrCreateService } from "./SamplerCache/service/SamplerCacheGetOrCreateService";
2
- import { execute as samplerCacheCreateCommonSamplersService } from "./SamplerCache/service/SamplerCacheCreateCommonSamplersService";
3
- export class SamplerCache {
4
- constructor(device) {
5
- Object.defineProperty(this, "device", {
6
- enumerable: true,
7
- configurable: true,
8
- writable: true,
9
- value: void 0
10
- });
11
- Object.defineProperty(this, "cache", {
12
- enumerable: true,
13
- configurable: true,
14
- writable: true,
15
- value: void 0
16
- });
17
- this.device = device;
18
- this.cache = new Map();
19
- samplerCacheCreateCommonSamplersService(device, this.cache);
20
- }
21
- getOrCreate(minFilter, magFilter, addressModeU, addressModeV) {
22
- return samplerCacheGetOrCreateService(this.device, this.cache, minFilter, magFilter, addressModeU, addressModeV);
23
- }
24
- getLinearClamp() {
25
- return this.getOrCreate("linear", "linear", "clamp-to-edge", "clamp-to-edge");
26
- }
27
- getNearestClamp() {
28
- return this.getOrCreate("nearest", "nearest", "clamp-to-edge", "clamp-to-edge");
29
- }
30
- getLinearRepeat() {
31
- return this.getOrCreate("linear", "linear", "repeat", "repeat");
32
- }
33
- getNearestRepeat() {
34
- return this.getOrCreate("nearest", "nearest", "repeat", "repeat");
35
- }
36
- getBySmoothRepeat(smooth, repeat) {
37
- const filter = smooth ? "linear" : "nearest";
38
- const addressMode = repeat ? "repeat" : "clamp-to-edge";
39
- return this.getOrCreate(filter, filter, addressMode, addressMode);
40
- }
41
- getStats() {
42
- return {
43
- "size": this.cache.size
44
- };
45
- }
46
- dispose() {
47
- this.cache.clear();
48
- }
49
- }
50
- let $samplerCache = null;
51
- export const initSamplerCache = (device) => {
52
- $samplerCache = new SamplerCache(device);
53
- };
54
- export const getSamplerCache = () => {
55
- return $samplerCache;
56
- };
57
- export const clearSamplerCache = () => {
58
- if ($samplerCache) {
59
- $samplerCache.dispose();
60
- }
61
- };
@@ -1,51 +0,0 @@
1
- /**
2
- * @description WebGPU用ブレンドモードシェーダー
3
- * Blend mode shaders for WebGPU
4
- */
5
- export declare class BlendModeShader {
6
- /**
7
- * @description ブレンドモード用の頂点シェーダー
8
- * @return {string}
9
- */
10
- static getVertexShader(): string;
11
- /**
12
- * @description Multiplyブレンド用のフラグメントシェーダー
13
- * @return {string}
14
- */
15
- static getMultiplyShader(): string;
16
- /**
17
- * @description Screenブレンド用のフラグメントシェーダー
18
- * @return {string}
19
- */
20
- static getScreenShader(): string;
21
- /**
22
- * @description Lightenブレンド用のフラグメントシェーダー
23
- * @return {string}
24
- */
25
- static getLightenShader(): string;
26
- /**
27
- * @description Darkenブレンド用のフラグメントシェーダー
28
- * @return {string}
29
- */
30
- static getDarkenShader(): string;
31
- /**
32
- * @description Overlayブレンド用のフラグメントシェーダー
33
- * @return {string}
34
- */
35
- static getOverlayShader(): string;
36
- /**
37
- * @description Hard Lightブレンド用のフラグメントシェーダー
38
- * @return {string}
39
- */
40
- static getHardLightShader(): string;
41
- /**
42
- * @description Differenceブレンド用のフラグメントシェーダー
43
- * @return {string}
44
- */
45
- static getDifferenceShader(): string;
46
- /**
47
- * @description Subtractブレンド用のフラグメントシェーダー
48
- * @return {string}
49
- */
50
- static getSubtractShader(): string;
51
- }
@@ -1,71 +0,0 @@
1
- import { BlendModeVertex } from "./wgsl/vertex/FilterVertex";
2
- import { MultiplyBlendFragment, ScreenBlendFragment, LightenBlendFragment, DarkenBlendFragment, OverlayBlendFragment, HardLightBlendFragment, DifferenceBlendFragment, SubtractBlendFragment } from "./wgsl/fragment/BlendFragment";
3
- /**
4
- * @description WebGPU用ブレンドモードシェーダー
5
- * Blend mode shaders for WebGPU
6
- */
7
- export class BlendModeShader {
8
- /**
9
- * @description ブレンドモード用の頂点シェーダー
10
- * @return {string}
11
- */
12
- static getVertexShader() {
13
- return BlendModeVertex;
14
- }
15
- /**
16
- * @description Multiplyブレンド用のフラグメントシェーダー
17
- * @return {string}
18
- */
19
- static getMultiplyShader() {
20
- return MultiplyBlendFragment;
21
- }
22
- /**
23
- * @description Screenブレンド用のフラグメントシェーダー
24
- * @return {string}
25
- */
26
- static getScreenShader() {
27
- return ScreenBlendFragment;
28
- }
29
- /**
30
- * @description Lightenブレンド用のフラグメントシェーダー
31
- * @return {string}
32
- */
33
- static getLightenShader() {
34
- return LightenBlendFragment;
35
- }
36
- /**
37
- * @description Darkenブレンド用のフラグメントシェーダー
38
- * @return {string}
39
- */
40
- static getDarkenShader() {
41
- return DarkenBlendFragment;
42
- }
43
- /**
44
- * @description Overlayブレンド用のフラグメントシェーダー
45
- * @return {string}
46
- */
47
- static getOverlayShader() {
48
- return OverlayBlendFragment;
49
- }
50
- /**
51
- * @description Hard Lightブレンド用のフラグメントシェーダー
52
- * @return {string}
53
- */
54
- static getHardLightShader() {
55
- return HardLightBlendFragment;
56
- }
57
- /**
58
- * @description Differenceブレンド用のフラグメントシェーダー
59
- * @return {string}
60
- */
61
- static getDifferenceShader() {
62
- return DifferenceBlendFragment;
63
- }
64
- /**
65
- * @description Subtractブレンド用のフラグメントシェーダー
66
- * @return {string}
67
- */
68
- static getSubtractShader() {
69
- return SubtractBlendFragment;
70
- }
71
- }
@@ -1,12 +0,0 @@
1
- /**
2
- * @description グラデーションストップ数に応じた適応的解像度を計算
3
- * Calculate adaptive resolution based on number of gradient stops
4
- *
5
- * @param {number} stopsCount - グラデーションストップの数
6
- * @param {number} [minResolution=64] - 最小解像度
7
- * @param {number} [maxResolution=512] - 最大解像度
8
- * @return {number}
9
- * @method
10
- * @protected
11
- */
12
- export declare const execute: (stopsCount: number, minResolution?: number, maxResolution?: number) => number;
@@ -1,28 +0,0 @@
1
- /**
2
- * @description グラデーションストップ数に応じた適応的解像度を計算
3
- * Calculate adaptive resolution based on number of gradient stops
4
- *
5
- * @param {number} stopsCount - グラデーションストップの数
6
- * @param {number} [minResolution=64] - 最小解像度
7
- * @param {number} [maxResolution=512] - 最大解像度
8
- * @return {number}
9
- * @method
10
- * @protected
11
- */
12
- export const execute = (stopsCount, minResolution = 64, maxResolution = 512) => {
13
- // ストップ数に応じて解像度を調整
14
- // 2ストップ: 64px
15
- // 3-4ストップ: 128px
16
- // 5-8ストップ: 256px
17
- // 9以上: 512px
18
- if (stopsCount <= 2) {
19
- return Math.max(minResolution, 64);
20
- }
21
- if (stopsCount <= 4) {
22
- return Math.min(maxResolution, Math.max(minResolution, 128));
23
- }
24
- if (stopsCount <= 8) {
25
- return Math.min(maxResolution, Math.max(minResolution, 256));
26
- }
27
- return maxResolution;
28
- };
@@ -1,13 +0,0 @@
1
- import type { IGradientStop } from "../../../interface/IGradientStop";
2
- /**
3
- * @description グラデーションLUTのピクセルデータを生成
4
- * Generate pixel data for gradient LUT
5
- *
6
- * @param {IGradientStop[]} stops - ソート済みのグラデーションストップ
7
- * @param {number} resolution - LUTの解像度(ピクセル数)
8
- * @param {number} interpolation - 0: RGB, 1: Linear RGB
9
- * @return {Uint8Array}
10
- * @method
11
- * @protected
12
- */
13
- export declare const execute: (stops: IGradientStop[], resolution: number, interpolation: number) => Uint8Array;
@@ -1,61 +0,0 @@
1
- import { execute as gradientLUTInterpolateColorService } from "./GradientLUTInterpolateColorService";
2
- /**
3
- * @description グラデーションLUTのピクセルデータを生成
4
- * Generate pixel data for gradient LUT
5
- *
6
- * @param {IGradientStop[]} stops - ソート済みのグラデーションストップ
7
- * @param {number} resolution - LUTの解像度(ピクセル数)
8
- * @param {number} interpolation - 0: RGB, 1: Linear RGB
9
- * @return {Uint8Array}
10
- * @method
11
- * @protected
12
- */
13
- export const execute = (stops, resolution, interpolation) => {
14
- const pixels = new Uint8Array(resolution * 4);
15
- if (stops.length === 0) {
16
- return pixels;
17
- }
18
- if (stops.length === 1) {
19
- // 単一ストップの場合は全体を同じ色で塗る
20
- const stop = stops[0];
21
- for (let i = 0; i < resolution; i++) {
22
- const offset = i * 4;
23
- pixels[offset] = Math.round(stop.r * 255);
24
- pixels[offset + 1] = Math.round(stop.g * 255);
25
- pixels[offset + 2] = Math.round(stop.b * 255);
26
- pixels[offset + 3] = Math.round(stop.a * 255);
27
- }
28
- return pixels;
29
- }
30
- for (let i = 0; i < resolution; i++) {
31
- const ratio = i / (resolution - 1);
32
- // 該当するストップ区間を見つける
33
- let startStopIndex = 0;
34
- for (let j = 0; j < stops.length - 1; j++) {
35
- if (ratio >= stops[j].ratio && ratio <= stops[j + 1].ratio) {
36
- startStopIndex = j;
37
- break;
38
- }
39
- if (ratio > stops[j + 1].ratio) {
40
- startStopIndex = j + 1;
41
- }
42
- }
43
- const startStop = stops[startStopIndex];
44
- const endStop = stops[Math.min(startStopIndex + 1, stops.length - 1)];
45
- // 区間内での補間係数を計算
46
- let t = 0;
47
- const rangeWidth = endStop.ratio - startStop.ratio;
48
- if (rangeWidth > 0) {
49
- t = (ratio - startStop.ratio) / rangeWidth;
50
- t = Math.max(0, Math.min(1, t));
51
- }
52
- // 色を補間
53
- const color = gradientLUTInterpolateColorService(startStop, endStop, t, interpolation);
54
- const offset = i * 4;
55
- pixels[offset] = Math.round(color.r * 255);
56
- pixels[offset + 1] = Math.round(color.g * 255);
57
- pixels[offset + 2] = Math.round(color.b * 255);
58
- pixels[offset + 3] = Math.round(color.a * 255);
59
- }
60
- return pixels;
61
- };
@@ -1,19 +0,0 @@
1
- import type { IGradientStop } from "../../../interface/IGradientStop";
2
- /**
3
- * @description 2つのストップ間で色を補間
4
- * Interpolate color between two stops
5
- *
6
- * @param {IGradientStop} startStop
7
- * @param {IGradientStop} endStop
8
- * @param {number} t - 補間係数 (0-1)
9
- * @param {number} interpolation - 0: RGB, 1: Linear RGB
10
- * @return {{ r: number, g: number, b: number, a: number }}
11
- * @method
12
- * @protected
13
- */
14
- export declare const execute: (startStop: IGradientStop, endStop: IGradientStop, t: number, interpolation: number) => {
15
- r: number;
16
- g: number;
17
- b: number;
18
- a: number;
19
- };
@@ -1,37 +0,0 @@
1
- /**
2
- * @description 2つのストップ間で色を補間
3
- * Interpolate color between two stops
4
- *
5
- * @param {IGradientStop} startStop
6
- * @param {IGradientStop} endStop
7
- * @param {number} t - 補間係数 (0-1)
8
- * @param {number} interpolation - 0: RGB, 1: Linear RGB
9
- * @return {{ r: number, g: number, b: number, a: number }}
10
- * @method
11
- * @protected
12
- */
13
- export const execute = (startStop, endStop, t, interpolation) => {
14
- let r;
15
- let g;
16
- let b;
17
- if (interpolation === 1) {
18
- // Linear RGB補間(ガンマ補正あり)
19
- const sr = Math.pow(startStop.r, 2.2);
20
- const sg = Math.pow(startStop.g, 2.2);
21
- const sb = Math.pow(startStop.b, 2.2);
22
- const er = Math.pow(endStop.r, 2.2);
23
- const eg = Math.pow(endStop.g, 2.2);
24
- const eb = Math.pow(endStop.b, 2.2);
25
- r = Math.pow(sr + (er - sr) * t, 1 / 2.2);
26
- g = Math.pow(sg + (eg - sg) * t, 1 / 2.2);
27
- b = Math.pow(sb + (eb - sb) * t, 1 / 2.2);
28
- }
29
- else {
30
- // 通常のRGB補間
31
- r = startStop.r + (endStop.r - startStop.r) * t;
32
- g = startStop.g + (endStop.g - startStop.g) * t;
33
- b = startStop.b + (endStop.b - startStop.b) * t;
34
- }
35
- const a = startStop.a + (endStop.a - startStop.a) * t;
36
- return { r, g, b, a };
37
- };
@@ -1,11 +0,0 @@
1
- import type { IGradientStop } from "../../../interface/IGradientStop";
2
- /**
3
- * @description グラデーションストップ配列をパースしてソート
4
- * Parse and sort gradient stops array
5
- *
6
- * @param {number[]} stops - [ratio, r, g, b, a, ratio, r, g, b, a, ...]
7
- * @return {IGradientStop[]}
8
- * @method
9
- * @protected
10
- */
11
- export declare const execute: (stops: number[]) => IGradientStop[];
@@ -1,24 +0,0 @@
1
- /**
2
- * @description グラデーションストップ配列をパースしてソート
3
- * Parse and sort gradient stops array
4
- *
5
- * @param {number[]} stops - [ratio, r, g, b, a, ratio, r, g, b, a, ...]
6
- * @return {IGradientStop[]}
7
- * @method
8
- * @protected
9
- */
10
- export const execute = (stops) => {
11
- const gradientStops = [];
12
- for (let i = 0; i < stops.length; i += 5) {
13
- gradientStops.push({
14
- "ratio": stops[i],
15
- "r": stops[i + 1],
16
- "g": stops[i + 2],
17
- "b": stops[i + 3],
18
- "a": stops[i + 4]
19
- });
20
- }
21
- // ストップポイントをratio順にソート
22
- gradientStops.sort((a, b) => a.ratio - b.ratio);
23
- return gradientStops;
24
- };
@@ -1,14 +0,0 @@
1
- import type { IGradientLUTData } from "../../../interface/IGradientLUTData";
2
- /**
3
- * @description グラデーションLUTのピクセルデータを生成
4
- * Generate gradient LUT pixel data
5
- *
6
- * @param {number[]} stops - [ratio, r, g, b, a, ratio, r, g, b, a, ...]
7
- * @param {number} interpolation - 0: RGB, 1: Linear RGB
8
- * @param {number} [minResolution=64] - 最小解像度
9
- * @param {number} [maxResolution=512] - 最大解像度
10
- * @return {IGradientLUTData}
11
- * @method
12
- * @protected
13
- */
14
- export declare const execute: (stops: number[], interpolation: number, minResolution?: number, maxResolution?: number) => IGradientLUTData;
@@ -1,24 +0,0 @@
1
- import { execute as gradientLUTParseStopsService } from "../service/GradientLUTParseStopsService";
2
- import { execute as gradientLUTCalculateResolutionService } from "../service/GradientLUTCalculateResolutionService";
3
- import { execute as gradientLUTGeneratePixelsService } from "../service/GradientLUTGeneratePixelsService";
4
- /**
5
- * @description グラデーションLUTのピクセルデータを生成
6
- * Generate gradient LUT pixel data
7
- *
8
- * @param {number[]} stops - [ratio, r, g, b, a, ratio, r, g, b, a, ...]
9
- * @param {number} interpolation - 0: RGB, 1: Linear RGB
10
- * @param {number} [minResolution=64] - 最小解像度
11
- * @param {number} [maxResolution=512] - 最大解像度
12
- * @return {IGradientLUTData}
13
- * @method
14
- * @protected
15
- */
16
- export const execute = (stops, interpolation, minResolution = 64, maxResolution = 512) => {
17
- // ストップ配列をパースしてソート
18
- const parsedStops = gradientLUTParseStopsService(stops);
19
- // ストップ数に応じた解像度を計算
20
- const resolution = gradientLUTCalculateResolutionService(parsedStops.length, minResolution, maxResolution);
21
- // ピクセルデータを生成
22
- const pixels = gradientLUTGeneratePixelsService(parsedStops, resolution, interpolation);
23
- return { pixels, resolution };
24
- };
@@ -1,8 +0,0 @@
1
- export declare const MultiplyBlendFragment: string;
2
- export declare const ScreenBlendFragment: string;
3
- export declare const LightenBlendFragment: string;
4
- export declare const DarkenBlendFragment: string;
5
- export declare const OverlayBlendFragment: string;
6
- export declare const HardLightBlendFragment: string;
7
- export declare const DifferenceBlendFragment: string;
8
- export declare const SubtractBlendFragment: string;
@@ -1,63 +0,0 @@
1
- /**
2
- * @description ブレンドシェーダー共通ヘッダー
3
- */
4
- const BLEND_HEADER = /* wgsl */ `struct VertexOutput {
5
- @builtin(position) position: vec4<f32>,
6
- @location(0) texCoord: vec2<f32>,
7
- }
8
-
9
- struct BlendUniforms {
10
- colorTransform: vec4<f32>,
11
- addColor: vec4<f32>,
12
- }
13
-
14
- @group(0) @binding(0) var<uniform> uniforms: BlendUniforms;
15
- @group(0) @binding(1) var sampler0: sampler;
16
- @group(0) @binding(2) var texture0: texture_2d<f32>;
17
- @group(0) @binding(3) var texture1: texture_2d<f32>;
18
- `;
19
- /**
20
- * @description alpha guard 付きブレンドシェーダーを生成
21
- */
22
- const createBlendFragment = (blendLogic) => BLEND_HEADER + /* wgsl */ `
23
- @fragment
24
- fn main(input: VertexOutput) -> @location(0) vec4<f32> {
25
- var src = textureSampleLevel(texture1, sampler0, input.texCoord, 0);
26
- var dst = textureSampleLevel(texture0, sampler0, input.texCoord, 0);
27
- if (src.a == 0.0) { return dst; }
28
- if (dst.a == 0.0) { return src; }
29
- src = src * uniforms.colorTransform + vec4<f32>(uniforms.addColor.rgb, 0.0);
30
- let a = src - src * dst.a;
31
- let b = dst - dst * src.a;
32
- var srcRgb = src.rgb / src.a;
33
- var dstRgb = dst.rgb / dst.a;
34
- ${blendLogic}
35
- c = vec4<f32>(c.rgb * c.a, c.a);
36
- return a + b + c;
37
- }
38
- `;
39
- export const MultiplyBlendFragment = BLEND_HEADER + /* wgsl */ `
40
- @fragment
41
- fn main(input: VertexOutput) -> @location(0) vec4<f32> {
42
- var src = textureSampleLevel(texture1, sampler0, input.texCoord, 0);
43
- var dst = textureSampleLevel(texture0, sampler0, input.texCoord, 0);
44
- src = src * uniforms.colorTransform + vec4<f32>(uniforms.addColor.rgb, 0.0);
45
- let a = src - src * dst.a;
46
- let b = dst - dst * src.a;
47
- let c = src * dst;
48
- return a + b + c;
49
- }
50
- `;
51
- export const ScreenBlendFragment = createBlendFragment(" var c = vec4<f32>(srcRgb + dstRgb - srcRgb * dstRgb, src.a * dst.a);");
52
- export const LightenBlendFragment = createBlendFragment(" var c = vec4<f32>(max(srcRgb, dstRgb), src.a * dst.a);");
53
- export const DarkenBlendFragment = createBlendFragment(" var c = vec4<f32>(min(srcRgb, dstRgb), src.a * dst.a);");
54
- export const OverlayBlendFragment = createBlendFragment(` let s = step(vec3<f32>(0.5), dstRgb);
55
- let lo = 2.0 * srcRgb * dstRgb;
56
- let hi = 1.0 - 2.0 * (1.0 - srcRgb) * (1.0 - dstRgb);
57
- var c = vec4<f32>(mix(lo, hi, s), src.a * dst.a);`);
58
- export const HardLightBlendFragment = createBlendFragment(` let s = step(vec3<f32>(0.5), srcRgb);
59
- let lo = 2.0 * srcRgb * dstRgb;
60
- let hi = 1.0 - 2.0 * (1.0 - srcRgb) * (1.0 - dstRgb);
61
- var c = vec4<f32>(mix(lo, hi, s), src.a * dst.a);`);
62
- export const DifferenceBlendFragment = createBlendFragment(" var c = vec4<f32>(abs(srcRgb - dstRgb), src.a * dst.a);");
63
- export const SubtractBlendFragment = createBlendFragment(" var c = vec4<f32>(max(dstRgb - srcRgb, vec3<f32>(0.0)), src.a * dst.a);");
@@ -1,13 +0,0 @@
1
- /**
2
- * @description ImageBitmapからテクスチャを作成
3
- * Create texture from ImageBitmap
4
- *
5
- * @param {GPUDevice} device
6
- * @param {Map<string, GPUTexture>} textures
7
- * @param {string} name
8
- * @param {ImageBitmap} image_bitmap
9
- * @return {GPUTexture}
10
- * @method
11
- * @protected
12
- */
13
- export declare const execute: (device: GPUDevice, textures: Map<string, GPUTexture>, name: string, image_bitmap: ImageBitmap) => GPUTexture;
@@ -1,30 +0,0 @@
1
- /**
2
- * @description ImageBitmapからテクスチャを作成
3
- * Create texture from ImageBitmap
4
- *
5
- * @param {GPUDevice} device
6
- * @param {Map<string, GPUTexture>} textures
7
- * @param {string} name
8
- * @param {ImageBitmap} image_bitmap
9
- * @return {GPUTexture}
10
- * @method
11
- * @protected
12
- */
13
- export const execute = (device, textures, name, image_bitmap) => {
14
- const texture = device.createTexture({
15
- "size": { "width": image_bitmap.width, "height": image_bitmap.height },
16
- "format": "rgba8unorm",
17
- "usage": GPUTextureUsage.TEXTURE_BINDING |
18
- GPUTextureUsage.COPY_DST |
19
- GPUTextureUsage.RENDER_ATTACHMENT
20
- });
21
- device.queue.copyExternalImageToTexture({
22
- "source": image_bitmap,
23
- "flipY": true
24
- }, {
25
- texture,
26
- "premultipliedAlpha": true
27
- }, { "width": image_bitmap.width, "height": image_bitmap.height });
28
- textures.set(name, texture);
29
- return texture;
30
- };