@next2d/webgpu 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (349) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +574 -0
  3. package/package.json +30 -0
  4. package/src/AtlasManager.d.ts +23 -0
  5. package/src/AtlasManager.js +123 -0
  6. package/src/AttachmentManager/service/AttachmentManagerCreateAttachmentObjectService.d.ts +13 -0
  7. package/src/AttachmentManager/service/AttachmentManagerCreateAttachmentObjectService.js +24 -0
  8. package/src/AttachmentManager/service/AttachmentManagerCreateColorBufferService.d.ts +15 -0
  9. package/src/AttachmentManager/service/AttachmentManagerCreateColorBufferService.js +31 -0
  10. package/src/AttachmentManager/service/AttachmentManagerCreateRenderPassDescriptorService.d.ts +5 -0
  11. package/src/AttachmentManager/service/AttachmentManagerCreateRenderPassDescriptorService.js +42 -0
  12. package/src/AttachmentManager/service/AttachmentManagerCreateStencilBufferService.d.ts +16 -0
  13. package/src/AttachmentManager/service/AttachmentManagerCreateStencilBufferService.js +28 -0
  14. package/src/AttachmentManager/service/AttachmentManagerCreateTextureObjectService.d.ts +17 -0
  15. package/src/AttachmentManager/service/AttachmentManagerCreateTextureObjectService.js +33 -0
  16. package/src/AttachmentManager/service/AttachmentManagerGetColorBufferService.d.ts +16 -0
  17. package/src/AttachmentManager/service/AttachmentManagerGetColorBufferService.js +28 -0
  18. package/src/AttachmentManager/service/AttachmentManagerGetStencilBufferService.d.ts +17 -0
  19. package/src/AttachmentManager/service/AttachmentManagerGetStencilBufferService.js +27 -0
  20. package/src/AttachmentManager/service/AttachmentManagerGetTextureService.d.ts +18 -0
  21. package/src/AttachmentManager/service/AttachmentManagerGetTextureService.js +27 -0
  22. package/src/AttachmentManager/service/AttachmentManagerReleaseTextureService.d.ts +12 -0
  23. package/src/AttachmentManager/service/AttachmentManagerReleaseTextureService.js +17 -0
  24. package/src/AttachmentManager/usecase/AttachmentManagerGetAttachmentObjectUseCase.d.ts +26 -0
  25. package/src/AttachmentManager/usecase/AttachmentManagerGetAttachmentObjectUseCase.js +43 -0
  26. package/src/AttachmentManager/usecase/AttachmentManagerReleaseAttachmentUseCase.d.ts +18 -0
  27. package/src/AttachmentManager/usecase/AttachmentManagerReleaseAttachmentUseCase.js +33 -0
  28. package/src/AttachmentManager.d.ts +19 -0
  29. package/src/AttachmentManager.js +105 -0
  30. package/src/BezierConverter/BezierConverter.d.ts +16 -0
  31. package/src/BezierConverter/BezierConverter.js +15 -0
  32. package/src/BezierConverter/service/BezierConverterCalculateFlatnessService.d.ts +15 -0
  33. package/src/BezierConverter/service/BezierConverterCalculateFlatnessService.js +37 -0
  34. package/src/BezierConverter/service/BezierConverterSplitCubicService.d.ts +15 -0
  35. package/src/BezierConverter/service/BezierConverterSplitCubicService.js +47 -0
  36. package/src/BezierConverter/usecase/BezierConverterAdaptiveCubicToQuadUseCase.d.ts +29 -0
  37. package/src/BezierConverter/usecase/BezierConverterAdaptiveCubicToQuadUseCase.js +80 -0
  38. package/src/Blend/BlendInstancedManager.d.ts +35 -0
  39. package/src/Blend/BlendInstancedManager.js +147 -0
  40. package/src/Blend/service/BlendAddService.d.ts +1 -0
  41. package/src/Blend/service/BlendAddService.js +8 -0
  42. package/src/Blend/service/BlendAlphaService.d.ts +1 -0
  43. package/src/Blend/service/BlendAlphaService.js +8 -0
  44. package/src/Blend/service/BlendEraseService.d.ts +1 -0
  45. package/src/Blend/service/BlendEraseService.js +8 -0
  46. package/src/Blend/service/BlendGetStateService.d.ts +12 -0
  47. package/src/Blend/service/BlendGetStateService.js +13 -0
  48. package/src/Blend/service/BlendOneZeroService.d.ts +1 -0
  49. package/src/Blend/service/BlendOneZeroService.js +8 -0
  50. package/src/Blend/service/BlendResetService.d.ts +1 -0
  51. package/src/Blend/service/BlendResetService.js +8 -0
  52. package/src/Blend/service/BlendScreenService.d.ts +1 -0
  53. package/src/Blend/service/BlendScreenService.js +8 -0
  54. package/src/Blend/service/BlendSetModeService.d.ts +2 -0
  55. package/src/Blend/service/BlendSetModeService.js +4 -0
  56. package/src/Blend/usecase/BlendApplyComplexBlendUseCase.d.ts +6 -0
  57. package/src/Blend/usecase/BlendApplyComplexBlendUseCase.js +79 -0
  58. package/src/Blend/usecase/BlendOperationUseCase.d.ts +11 -0
  59. package/src/Blend/usecase/BlendOperationUseCase.js +31 -0
  60. package/src/Blend.d.ts +8 -0
  61. package/src/Blend.js +91 -0
  62. package/src/BufferManager/service/BufferManagerCreateIndirectBufferService.d.ts +15 -0
  63. package/src/BufferManager/service/BufferManagerCreateIndirectBufferService.js +37 -0
  64. package/src/BufferManager/service/BufferManagerCreateRectVerticesService.d.ts +13 -0
  65. package/src/BufferManager/service/BufferManagerCreateRectVerticesService.js +23 -0
  66. package/src/BufferManager/service/BufferManagerCreateStorageBufferService.d.ts +17 -0
  67. package/src/BufferManager/service/BufferManagerCreateStorageBufferService.js +23 -0
  68. package/src/BufferManager/service/BufferManagerReleaseUniformBufferService.d.ts +12 -0
  69. package/src/BufferManager/service/BufferManagerReleaseUniformBufferService.js +32 -0
  70. package/src/BufferManager/service/BufferManagerReleaseVertexBufferService.d.ts +12 -0
  71. package/src/BufferManager/service/BufferManagerReleaseVertexBufferService.js +32 -0
  72. package/src/BufferManager/service/BufferManagerUpdateIndirectBufferService.d.ts +12 -0
  73. package/src/BufferManager/service/BufferManagerUpdateIndirectBufferService.js +20 -0
  74. package/src/BufferManager/service/BufferManagerUpperPowerOfTwoService.d.ts +10 -0
  75. package/src/BufferManager/service/BufferManagerUpperPowerOfTwoService.js +18 -0
  76. package/src/BufferManager/usecase/BufferManagerAcquireStorageBufferUseCase.d.ts +15 -0
  77. package/src/BufferManager/usecase/BufferManagerAcquireStorageBufferUseCase.js +51 -0
  78. package/src/BufferManager/usecase/BufferManagerAcquireUniformBufferUseCase.d.ts +13 -0
  79. package/src/BufferManager/usecase/BufferManagerAcquireUniformBufferUseCase.js +26 -0
  80. package/src/BufferManager/usecase/BufferManagerAcquireVertexBufferUseCase.d.ts +14 -0
  81. package/src/BufferManager/usecase/BufferManagerAcquireVertexBufferUseCase.js +46 -0
  82. package/src/BufferManager/usecase/BufferManagerCleanupStorageBuffersUseCase.d.ts +12 -0
  83. package/src/BufferManager/usecase/BufferManagerCleanupStorageBuffersUseCase.js +20 -0
  84. package/src/BufferManager/usecase/BufferManagerReleaseStorageBufferUseCase.d.ts +9 -0
  85. package/src/BufferManager/usecase/BufferManagerReleaseStorageBufferUseCase.js +15 -0
  86. package/src/BufferManager.d.ts +93 -0
  87. package/src/BufferManager.js +487 -0
  88. package/src/Compute/ComputePipelineManager.d.ts +61 -0
  89. package/src/Compute/ComputePipelineManager.js +313 -0
  90. package/src/Compute/service/ComputeExecuteBlurService.d.ts +21 -0
  91. package/src/Compute/service/ComputeExecuteBlurService.js +81 -0
  92. package/src/Context/service/ContextComputeBitmapMatrixService.d.ts +1 -0
  93. package/src/Context/service/ContextComputeBitmapMatrixService.js +74 -0
  94. package/src/Context/service/ContextComputeGradientMatrixService.d.ts +4 -0
  95. package/src/Context/service/ContextComputeGradientMatrixService.js +88 -0
  96. package/src/Context/service/ContextFillSimpleService.d.ts +2 -0
  97. package/src/Context/service/ContextFillSimpleService.js +28 -0
  98. package/src/Context/service/ContextFillWithStencilMainService.d.ts +2 -0
  99. package/src/Context/service/ContextFillWithStencilMainService.js +19 -0
  100. package/src/Context/service/ContextFillWithStencilService.d.ts +2 -0
  101. package/src/Context/service/ContextFillWithStencilService.js +19 -0
  102. package/src/Context/usecase/ContextApplyFilterUseCase.d.ts +5 -0
  103. package/src/Context/usecase/ContextApplyFilterUseCase.js +668 -0
  104. package/src/Context/usecase/ContextBitmapFillUseCase.d.ts +4 -0
  105. package/src/Context/usecase/ContextBitmapFillUseCase.js +210 -0
  106. package/src/Context/usecase/ContextBitmapStrokeUseCase.d.ts +4 -0
  107. package/src/Context/usecase/ContextBitmapStrokeUseCase.js +119 -0
  108. package/src/Context/usecase/ContextClipUseCase.d.ts +5 -0
  109. package/src/Context/usecase/ContextClipUseCase.js +101 -0
  110. package/src/Context/usecase/ContextContainerEndLayerUseCase.d.ts +5 -0
  111. package/src/Context/usecase/ContextContainerEndLayerUseCase.js +476 -0
  112. package/src/Context/usecase/ContextDrawArraysInstancedUseCase.d.ts +6 -0
  113. package/src/Context/usecase/ContextDrawArraysInstancedUseCase.js +135 -0
  114. package/src/Context/usecase/ContextDrawIndirectUseCase.d.ts +6 -0
  115. package/src/Context/usecase/ContextDrawIndirectUseCase.js +154 -0
  116. package/src/Context/usecase/ContextGradientFillUseCase.d.ts +4 -0
  117. package/src/Context/usecase/ContextGradientFillUseCase.js +230 -0
  118. package/src/Context/usecase/ContextGradientStrokeUseCase.d.ts +4 -0
  119. package/src/Context/usecase/ContextGradientStrokeUseCase.js +138 -0
  120. package/src/Context/usecase/ContextProcessComplexBlendQueueUseCase.d.ts +6 -0
  121. package/src/Context/usecase/ContextProcessComplexBlendQueueUseCase.js +213 -0
  122. package/src/Context.d.ts +430 -0
  123. package/src/Context.js +2453 -0
  124. package/src/FillTexturePool.d.ts +6 -0
  125. package/src/FillTexturePool.js +72 -0
  126. package/src/Filter/BevelFilter/FilterApplyBevelFilterUseCase.d.ts +10 -0
  127. package/src/Filter/BevelFilter/FilterApplyBevelFilterUseCase.js +214 -0
  128. package/src/Filter/BevelFilterShader.d.ts +2 -0
  129. package/src/Filter/BevelFilterShader.js +107 -0
  130. package/src/Filter/BitmapFilterShader.d.ts +2 -0
  131. package/src/Filter/BitmapFilterShader.js +207 -0
  132. package/src/Filter/BlurFilter/FilterApplyBlurFilterUseCase.d.ts +16 -0
  133. package/src/Filter/BlurFilter/FilterApplyBlurFilterUseCase.js +243 -0
  134. package/src/Filter/BlurFilter/service/BlurFilterComputeShaderService.d.ts +40 -0
  135. package/src/Filter/BlurFilter/service/BlurFilterComputeShaderService.js +51 -0
  136. package/src/Filter/BlurFilter/usecase/FilterApplyBlurComputeUseCase.d.ts +25 -0
  137. package/src/Filter/BlurFilter/usecase/FilterApplyBlurComputeUseCase.js +180 -0
  138. package/src/Filter/BlurFilterShader.d.ts +5 -0
  139. package/src/Filter/BlurFilterShader.js +109 -0
  140. package/src/Filter/BlurFilterUseCase.d.ts +36 -0
  141. package/src/Filter/BlurFilterUseCase.js +85 -0
  142. package/src/Filter/ColorMatrixFilter/FilterApplyColorMatrixFilterUseCase.d.ts +12 -0
  143. package/src/Filter/ColorMatrixFilter/FilterApplyColorMatrixFilterUseCase.js +90 -0
  144. package/src/Filter/ColorMatrixFilterShader.d.ts +4 -0
  145. package/src/Filter/ColorMatrixFilterShader.js +51 -0
  146. package/src/Filter/ConvolutionFilter/FilterApplyConvolutionFilterUseCase.d.ts +6 -0
  147. package/src/Filter/ConvolutionFilter/FilterApplyConvolutionFilterUseCase.js +144 -0
  148. package/src/Filter/ConvolutionFilterShader.d.ts +2 -0
  149. package/src/Filter/ConvolutionFilterShader.js +115 -0
  150. package/src/Filter/DisplacementMapFilter/FilterApplyDisplacementMapFilterUseCase.d.ts +6 -0
  151. package/src/Filter/DisplacementMapFilter/FilterApplyDisplacementMapFilterUseCase.js +172 -0
  152. package/src/Filter/DisplacementMapFilterShader.d.ts +2 -0
  153. package/src/Filter/DisplacementMapFilterShader.js +114 -0
  154. package/src/Filter/DropShadowFilter/FilterApplyDropShadowFilterUseCase.d.ts +24 -0
  155. package/src/Filter/DropShadowFilter/FilterApplyDropShadowFilterUseCase.js +179 -0
  156. package/src/Filter/DropShadowFilterShader.d.ts +4 -0
  157. package/src/Filter/DropShadowFilterShader.js +93 -0
  158. package/src/Filter/FilterGradientLUTCache.d.ts +29 -0
  159. package/src/Filter/FilterGradientLUTCache.js +84 -0
  160. package/src/Filter/FilterOffset.d.ts +8 -0
  161. package/src/Filter/FilterOffset.js +10 -0
  162. package/src/Filter/GlowFilter/FilterApplyGlowFilterUseCase.d.ts +24 -0
  163. package/src/Filter/GlowFilter/FilterApplyGlowFilterUseCase.js +143 -0
  164. package/src/Filter/GlowFilterShader.d.ts +4 -0
  165. package/src/Filter/GlowFilterShader.js +66 -0
  166. package/src/Filter/GradientBevelFilter/FilterApplyGradientBevelFilterUseCase.d.ts +29 -0
  167. package/src/Filter/GradientBevelFilter/FilterApplyGradientBevelFilterUseCase.js +216 -0
  168. package/src/Filter/GradientGlowFilter/FilterApplyGradientGlowFilterUseCase.d.ts +29 -0
  169. package/src/Filter/GradientGlowFilter/FilterApplyGradientGlowFilterUseCase.js +164 -0
  170. package/src/FrameBufferManager/service/FrameBufferManagerCreateRenderPassDescriptorService.d.ts +4 -0
  171. package/src/FrameBufferManager/service/FrameBufferManagerCreateRenderPassDescriptorService.js +23 -0
  172. package/src/FrameBufferManager/service/FrameBufferManagerCreateStencilRenderPassDescriptorService.d.ts +4 -0
  173. package/src/FrameBufferManager/service/FrameBufferManagerCreateStencilRenderPassDescriptorService.js +28 -0
  174. package/src/FrameBufferManager/service/FrameBufferManagerFlushPendingReleasesService.d.ts +11 -0
  175. package/src/FrameBufferManager/service/FrameBufferManagerFlushPendingReleasesService.js +19 -0
  176. package/src/FrameBufferManager/usecase/FrameBufferManagerCreateAttachmentUseCase.d.ts +23 -0
  177. package/src/FrameBufferManager/usecase/FrameBufferManagerCreateAttachmentUseCase.js +125 -0
  178. package/src/FrameBufferManager/usecase/FrameBufferManagerReleaseTemporaryAttachmentUseCase.d.ts +14 -0
  179. package/src/FrameBufferManager/usecase/FrameBufferManagerReleaseTemporaryAttachmentUseCase.js +23 -0
  180. package/src/FrameBufferManager.d.ts +24 -0
  181. package/src/FrameBufferManager.js +161 -0
  182. package/src/Gradient/GradientLUTCache.d.ts +61 -0
  183. package/src/Gradient/GradientLUTCache.js +153 -0
  184. package/src/Gradient/GradientLUTGenerator.d.ts +30 -0
  185. package/src/Gradient/GradientLUTGenerator.js +202 -0
  186. package/src/Grid.d.ts +18 -0
  187. package/src/Grid.js +21 -0
  188. package/src/Mask/service/MaskBeginMaskService.d.ts +9 -0
  189. package/src/Mask/service/MaskBeginMaskService.js +22 -0
  190. package/src/Mask/service/MaskEndMaskService.d.ts +15 -0
  191. package/src/Mask/service/MaskEndMaskService.js +36 -0
  192. package/src/Mask/service/MaskSetMaskBoundsService.d.ts +13 -0
  193. package/src/Mask/service/MaskSetMaskBoundsService.js +36 -0
  194. package/src/Mask/service/MaskUnionMaskService.d.ts +4 -0
  195. package/src/Mask/service/MaskUnionMaskService.js +74 -0
  196. package/src/Mask/usecase/MaskBindUseCase.d.ts +10 -0
  197. package/src/Mask/usecase/MaskBindUseCase.js +20 -0
  198. package/src/Mask/usecase/MaskLeaveMaskUseCase.d.ts +13 -0
  199. package/src/Mask/usecase/MaskLeaveMaskUseCase.js +51 -0
  200. package/src/Mask.d.ts +12 -0
  201. package/src/Mask.js +41 -0
  202. package/src/Mesh/service/MeshFillGenerateService.d.ts +19 -0
  203. package/src/Mesh/service/MeshFillGenerateService.js +76 -0
  204. package/src/Mesh/service/MeshLerpService.d.ts +13 -0
  205. package/src/Mesh/service/MeshLerpService.js +17 -0
  206. package/src/Mesh/service/MeshStrokeFillGenerateService.d.ts +19 -0
  207. package/src/Mesh/service/MeshStrokeFillGenerateService.js +76 -0
  208. package/src/Mesh/usecase/MeshBitmapStrokeGenerateUseCase.d.ts +13 -0
  209. package/src/Mesh/usecase/MeshBitmapStrokeGenerateUseCase.js +65 -0
  210. package/src/Mesh/usecase/MeshFillGenerateUseCase.d.ts +12 -0
  211. package/src/Mesh/usecase/MeshFillGenerateUseCase.js +48 -0
  212. package/src/Mesh/usecase/MeshGradientStrokeGenerateUseCase.d.ts +13 -0
  213. package/src/Mesh/usecase/MeshGradientStrokeGenerateUseCase.js +65 -0
  214. package/src/Mesh/usecase/MeshSplitQuadraticBezierUseCase.d.ts +14 -0
  215. package/src/Mesh/usecase/MeshSplitQuadraticBezierUseCase.js +28 -0
  216. package/src/Mesh/usecase/MeshStrokeFillGenerateUseCase.d.ts +18 -0
  217. package/src/Mesh/usecase/MeshStrokeFillGenerateUseCase.js +54 -0
  218. package/src/Mesh/usecase/MeshStrokeGenerateUseCase.d.ts +25 -0
  219. package/src/Mesh/usecase/MeshStrokeGenerateUseCase.js +608 -0
  220. package/src/PathCommand.d.ts +123 -0
  221. package/src/PathCommand.js +317 -0
  222. package/src/SamplerCache/service/SamplerCacheCreateCommonSamplersService.d.ts +11 -0
  223. package/src/SamplerCache/service/SamplerCacheCreateCommonSamplersService.js +35 -0
  224. package/src/SamplerCache/service/SamplerCacheGenerateKeyService.d.ts +13 -0
  225. package/src/SamplerCache/service/SamplerCacheGenerateKeyService.js +15 -0
  226. package/src/SamplerCache/service/SamplerCacheGetOrCreateService.d.ts +15 -0
  227. package/src/SamplerCache/service/SamplerCacheGetOrCreateService.js +30 -0
  228. package/src/SamplerCache.d.ts +18 -0
  229. package/src/SamplerCache.js +61 -0
  230. package/src/Shader/BlendModeShader.d.ts +51 -0
  231. package/src/Shader/BlendModeShader.js +71 -0
  232. package/src/Shader/GradientLUTGenerator/service/GradientLUTCalculateResolutionService.d.ts +12 -0
  233. package/src/Shader/GradientLUTGenerator/service/GradientLUTCalculateResolutionService.js +28 -0
  234. package/src/Shader/GradientLUTGenerator/service/GradientLUTGeneratePixelsService.d.ts +13 -0
  235. package/src/Shader/GradientLUTGenerator/service/GradientLUTGeneratePixelsService.js +61 -0
  236. package/src/Shader/GradientLUTGenerator/service/GradientLUTInterpolateColorService.d.ts +19 -0
  237. package/src/Shader/GradientLUTGenerator/service/GradientLUTInterpolateColorService.js +37 -0
  238. package/src/Shader/GradientLUTGenerator/service/GradientLUTParseStopsService.d.ts +11 -0
  239. package/src/Shader/GradientLUTGenerator/service/GradientLUTParseStopsService.js +24 -0
  240. package/src/Shader/GradientLUTGenerator/usecase/GradientLUTGenerateDataUseCase.d.ts +14 -0
  241. package/src/Shader/GradientLUTGenerator/usecase/GradientLUTGenerateDataUseCase.js +24 -0
  242. package/src/Shader/PipelineManager.d.ts +57 -0
  243. package/src/Shader/PipelineManager.js +2868 -0
  244. package/src/Shader/ShaderInstancedManager.d.ts +8 -0
  245. package/src/Shader/ShaderInstancedManager.js +18 -0
  246. package/src/Shader/ShaderSource.d.ts +60 -0
  247. package/src/Shader/ShaderSource.js +518 -0
  248. package/src/Shader/wgsl/common/SharedWgsl.d.ts +5 -0
  249. package/src/Shader/wgsl/common/SharedWgsl.js +37 -0
  250. package/src/Shader/wgsl/fragment/BasicFragment.d.ts +2 -0
  251. package/src/Shader/wgsl/fragment/BasicFragment.js +28 -0
  252. package/src/Shader/wgsl/fragment/BitmapFragment.d.ts +1 -0
  253. package/src/Shader/wgsl/fragment/BitmapFragment.js +43 -0
  254. package/src/Shader/wgsl/fragment/BlendFragment.d.ts +8 -0
  255. package/src/Shader/wgsl/fragment/BlendFragment.js +63 -0
  256. package/src/Shader/wgsl/fragment/EffectFragment.d.ts +6 -0
  257. package/src/Shader/wgsl/fragment/EffectFragment.js +324 -0
  258. package/src/Shader/wgsl/fragment/FillFragment.d.ts +1 -0
  259. package/src/Shader/wgsl/fragment/FillFragment.js +28 -0
  260. package/src/Shader/wgsl/fragment/FilterFragment.d.ts +10 -0
  261. package/src/Shader/wgsl/fragment/FilterFragment.js +212 -0
  262. package/src/Shader/wgsl/fragment/GradientFragment.d.ts +3 -0
  263. package/src/Shader/wgsl/fragment/GradientFragment.js +118 -0
  264. package/src/Shader/wgsl/fragment/InstancedFragment.d.ts +1 -0
  265. package/src/Shader/wgsl/fragment/InstancedFragment.js +20 -0
  266. package/src/Shader/wgsl/fragment/MaskFragment.d.ts +1 -0
  267. package/src/Shader/wgsl/fragment/MaskFragment.js +17 -0
  268. package/src/Shader/wgsl/fragment/StencilFragment.d.ts +2 -0
  269. package/src/Shader/wgsl/fragment/StencilFragment.js +33 -0
  270. package/src/Shader/wgsl/vertex/BasicVertex.d.ts +1 -0
  271. package/src/Shader/wgsl/vertex/BasicVertex.js +37 -0
  272. package/src/Shader/wgsl/vertex/BitmapVertex.d.ts +1 -0
  273. package/src/Shader/wgsl/vertex/BitmapVertex.js +43 -0
  274. package/src/Shader/wgsl/vertex/FillVertex.d.ts +1 -0
  275. package/src/Shader/wgsl/vertex/FillVertex.js +35 -0
  276. package/src/Shader/wgsl/vertex/FilterVertex.d.ts +12 -0
  277. package/src/Shader/wgsl/vertex/FilterVertex.js +193 -0
  278. package/src/Shader/wgsl/vertex/GradientVertex.d.ts +1 -0
  279. package/src/Shader/wgsl/vertex/GradientVertex.js +44 -0
  280. package/src/Shader/wgsl/vertex/InstancedVertex.d.ts +1 -0
  281. package/src/Shader/wgsl/vertex/InstancedVertex.js +48 -0
  282. package/src/Shader/wgsl/vertex/MaskVertex.d.ts +1 -0
  283. package/src/Shader/wgsl/vertex/MaskVertex.js +36 -0
  284. package/src/Shader/wgsl/vertex/StencilVertex.d.ts +2 -0
  285. package/src/Shader/wgsl/vertex/StencilVertex.js +66 -0
  286. package/src/TextureManager/service/TextureManagerInitializeSamplersService.d.ts +11 -0
  287. package/src/TextureManager/service/TextureManagerInitializeSamplersService.js +48 -0
  288. package/src/TextureManager/usecase/TextureManagerCreateTextureFromImageBitmapUseCase.d.ts +13 -0
  289. package/src/TextureManager/usecase/TextureManagerCreateTextureFromImageBitmapUseCase.js +30 -0
  290. package/src/TextureManager/usecase/TextureManagerCreateTextureFromPixelsUseCase.d.ts +15 -0
  291. package/src/TextureManager/usecase/TextureManagerCreateTextureFromPixelsUseCase.js +26 -0
  292. package/src/TextureManager.d.ts +15 -0
  293. package/src/TextureManager.js +87 -0
  294. package/src/TexturePool/service/TexturePoolCleanupService.d.ts +14 -0
  295. package/src/TexturePool/service/TexturePoolCleanupService.js +28 -0
  296. package/src/TexturePool/service/TexturePoolEvictOldestService.d.ts +11 -0
  297. package/src/TexturePool/service/TexturePoolEvictOldestService.js +24 -0
  298. package/src/TexturePool/service/TexturePoolReleaseService.d.ts +13 -0
  299. package/src/TexturePool/service/TexturePoolReleaseService.js +22 -0
  300. package/src/TexturePool/usecase/TexturePoolAcquireUseCase.d.ts +19 -0
  301. package/src/TexturePool/usecase/TexturePoolAcquireUseCase.js +90 -0
  302. package/src/TexturePool.d.ts +69 -0
  303. package/src/TexturePool.js +151 -0
  304. package/src/WebGPUUtil.d.ts +102 -0
  305. package/src/WebGPUUtil.js +157 -0
  306. package/src/index.d.ts +1 -0
  307. package/src/index.js +1 -0
  308. package/src/interface/IAttachmentObject.d.ts +41 -0
  309. package/src/interface/IAttachmentObject.js +1 -0
  310. package/src/interface/IBlendMode.d.ts +1 -0
  311. package/src/interface/IBlendMode.js +1 -0
  312. package/src/interface/IBlendState.d.ts +8 -0
  313. package/src/interface/IBlendState.js +1 -0
  314. package/src/interface/IBounds.d.ts +6 -0
  315. package/src/interface/IBounds.js +1 -0
  316. package/src/interface/ICachedBindGroup.d.ts +8 -0
  317. package/src/interface/ICachedBindGroup.js +1 -0
  318. package/src/interface/IColorBufferObject.d.ts +17 -0
  319. package/src/interface/IColorBufferObject.js +1 -0
  320. package/src/interface/IComplexBlendItem.d.ts +19 -0
  321. package/src/interface/IComplexBlendItem.js +1 -0
  322. package/src/interface/IFilterConfig.d.ts +29 -0
  323. package/src/interface/IFilterConfig.js +1 -0
  324. package/src/interface/IGradientLUTData.d.ts +8 -0
  325. package/src/interface/IGradientLUTData.js +1 -0
  326. package/src/interface/IGradientStop.d.ts +11 -0
  327. package/src/interface/IGradientStop.js +1 -0
  328. package/src/interface/ILocalFilterConfig.d.ts +21 -0
  329. package/src/interface/ILocalFilterConfig.js +1 -0
  330. package/src/interface/IMeshResult.d.ts +8 -0
  331. package/src/interface/IMeshResult.js +1 -0
  332. package/src/interface/IPath.d.ts +8 -0
  333. package/src/interface/IPath.js +1 -0
  334. package/src/interface/IPoint.d.ts +4 -0
  335. package/src/interface/IPoint.js +1 -0
  336. package/src/interface/IPooledBuffer.d.ts +8 -0
  337. package/src/interface/IPooledBuffer.js +1 -0
  338. package/src/interface/IPooledTexture.d.ts +17 -0
  339. package/src/interface/IPooledTexture.js +1 -0
  340. package/src/interface/IQuadraticSegment.d.ts +9 -0
  341. package/src/interface/IQuadraticSegment.js +1 -0
  342. package/src/interface/IRectangleInfo.d.ts +13 -0
  343. package/src/interface/IRectangleInfo.js +1 -0
  344. package/src/interface/IStencilBufferObject.d.ts +16 -0
  345. package/src/interface/IStencilBufferObject.js +1 -0
  346. package/src/interface/IStorageBufferConfig.d.ts +40 -0
  347. package/src/interface/IStorageBufferConfig.js +1 -0
  348. package/src/interface/ITextureObject.d.ts +16 -0
  349. package/src/interface/ITextureObject.js +1 -0
@@ -0,0 +1,123 @@
1
+ const $MAX_VALUE = Number.MAX_VALUE;
2
+ const $MIN_VALUE = -Number.MAX_VALUE;
3
+ let $activeAtlasIndex = 0;
4
+ export const $setActiveAtlasIndex = (index) => {
5
+ $activeAtlasIndex = index;
6
+ };
7
+ export const $getActiveAtlasIndex = () => {
8
+ return $activeAtlasIndex;
9
+ };
10
+ const $atlasAttachmentObjects = [];
11
+ export const $getAtlasAttachmentObjects = () => {
12
+ return $atlasAttachmentObjects;
13
+ };
14
+ export const $setAtlasAttachmentObject = (attachment_object) => {
15
+ $atlasAttachmentObjects[$activeAtlasIndex] = attachment_object;
16
+ };
17
+ let $atlasCreator = null;
18
+ export const $setAtlasCreator = (creator) => {
19
+ $atlasCreator = creator;
20
+ };
21
+ export const $getAtlasAttachmentObject = () => {
22
+ if (!($activeAtlasIndex in $atlasAttachmentObjects)) {
23
+ if ($atlasCreator) {
24
+ const attachment = $atlasCreator($activeAtlasIndex);
25
+ $setAtlasAttachmentObject(attachment);
26
+ }
27
+ else {
28
+ return null;
29
+ }
30
+ }
31
+ return $atlasAttachmentObjects[$activeAtlasIndex];
32
+ };
33
+ export const $getAtlasAttachmentObjectByIndex = (index) => {
34
+ if (!(index in $atlasAttachmentObjects)) {
35
+ return null;
36
+ }
37
+ return $atlasAttachmentObjects[index];
38
+ };
39
+ export const $hasAtlasAttachmentObject = () => {
40
+ return $activeAtlasIndex in $atlasAttachmentObjects;
41
+ };
42
+ export const $rootNodes = [];
43
+ export let $atlasTexture = null;
44
+ export const $setAtlasTexture = (texture_object) => {
45
+ $atlasTexture = texture_object;
46
+ };
47
+ export const $getAtlasTexture = () => {
48
+ return $atlasTexture;
49
+ };
50
+ const $transferBounds = [];
51
+ export const $getActiveTransferBounds = (index) => {
52
+ if (!(index in $transferBounds)) {
53
+ $transferBounds[index] = new Float32Array([
54
+ $MAX_VALUE,
55
+ $MAX_VALUE,
56
+ $MIN_VALUE,
57
+ $MIN_VALUE
58
+ ]);
59
+ }
60
+ return $transferBounds[index];
61
+ };
62
+ const $allTransferBounds = [];
63
+ export const $getActiveAllTransferBounds = (index) => {
64
+ if (!(index in $allTransferBounds)) {
65
+ $allTransferBounds[index] = new Float32Array([
66
+ $MAX_VALUE,
67
+ $MAX_VALUE,
68
+ $MIN_VALUE,
69
+ $MIN_VALUE
70
+ ]);
71
+ }
72
+ return $allTransferBounds[index];
73
+ };
74
+ export const $clearTransferBounds = () => {
75
+ for (let idx = 0; idx < $transferBounds.length; ++idx) {
76
+ const bounds = $transferBounds[idx];
77
+ if (!bounds) {
78
+ continue;
79
+ }
80
+ bounds[0] = bounds[1] = $MAX_VALUE;
81
+ bounds[2] = bounds[3] = $MIN_VALUE;
82
+ }
83
+ for (let idx = 0; idx < $allTransferBounds.length; ++idx) {
84
+ const bounds = $allTransferBounds[idx];
85
+ if (!bounds) {
86
+ continue;
87
+ }
88
+ bounds[0] = bounds[1] = $MAX_VALUE;
89
+ bounds[2] = bounds[3] = $MIN_VALUE;
90
+ }
91
+ };
92
+ let $currentAtlasIndex = 0;
93
+ export const $setCurrentAtlasIndex = (index) => {
94
+ $currentAtlasIndex = index;
95
+ };
96
+ export const $getCurrentAtlasIndex = () => {
97
+ return $currentAtlasIndex;
98
+ };
99
+ export const $resetAtlas = () => {
100
+ $rootNodes.length = 0;
101
+ $setActiveAtlasIndex(0);
102
+ for (let idx = 0; idx < $atlasAttachmentObjects.length; idx++) {
103
+ const attachment = $atlasAttachmentObjects[idx];
104
+ if (!attachment) {
105
+ continue;
106
+ }
107
+ if (attachment.texture) {
108
+ attachment.texture.resource.destroy();
109
+ }
110
+ if (attachment.stencil) {
111
+ attachment.stencil.resource.destroy();
112
+ }
113
+ if (attachment.msaaTexture) {
114
+ attachment.msaaTexture.resource.destroy();
115
+ }
116
+ if (attachment.msaaStencil) {
117
+ attachment.msaaStencil.resource.destroy();
118
+ }
119
+ }
120
+ $atlasAttachmentObjects.length = 0;
121
+ $clearTransferBounds();
122
+ $setCurrentAtlasIndex(0);
123
+ };
@@ -0,0 +1,13 @@
1
+ import type { IAttachmentObject } from "../../interface/IAttachmentObject";
2
+ /**
3
+ * @description 新しいアタッチメントオブジェクトを作成
4
+ * Create a new attachment object
5
+ *
6
+ * @param {{ attachmentId: number }} idCounter
7
+ * @return {IAttachmentObject}
8
+ * @method
9
+ * @protected
10
+ */
11
+ export declare const execute: (idCounter: {
12
+ attachmentId: number;
13
+ }) => IAttachmentObject;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @description 新しいアタッチメントオブジェクトを作成
3
+ * Create a new attachment object
4
+ *
5
+ * @param {{ attachmentId: number }} idCounter
6
+ * @return {IAttachmentObject}
7
+ * @method
8
+ * @protected
9
+ */
10
+ export const execute = (idCounter) => {
11
+ return {
12
+ "id": idCounter.attachmentId++,
13
+ "width": 0,
14
+ "height": 0,
15
+ "clipLevel": 0,
16
+ "msaa": false,
17
+ "mask": false,
18
+ "color": null,
19
+ "texture": null,
20
+ "stencil": null,
21
+ "msaaTexture": null,
22
+ "msaaStencil": null
23
+ };
24
+ };
@@ -0,0 +1,15 @@
1
+ import type { IColorBufferObject } from "../../interface/IColorBufferObject";
2
+ import type { IStencilBufferObject } from "../../interface/IStencilBufferObject";
3
+ /**
4
+ * @description カラーバッファを新規作成
5
+ * Create a new color buffer
6
+ *
7
+ * @param {GPUDevice} device
8
+ * @param {number} width
9
+ * @param {number} height
10
+ * @param {IStencilBufferObject} stencil
11
+ * @return {IColorBufferObject}
12
+ * @method
13
+ * @protected
14
+ */
15
+ export declare const execute: (device: GPUDevice, width: number, height: number, stencil: IStencilBufferObject) => IColorBufferObject;
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @description カラーバッファを新規作成
3
+ * Create a new color buffer
4
+ *
5
+ * @param {GPUDevice} device
6
+ * @param {number} width
7
+ * @param {number} height
8
+ * @param {IStencilBufferObject} stencil
9
+ * @return {IColorBufferObject}
10
+ * @method
11
+ * @protected
12
+ */
13
+ export const execute = (device, width, height, stencil) => {
14
+ const texture = device.createTexture({
15
+ "size": { width, height },
16
+ "format": "rgba8unorm",
17
+ "usage": GPUTextureUsage.RENDER_ATTACHMENT |
18
+ GPUTextureUsage.TEXTURE_BINDING |
19
+ GPUTextureUsage.COPY_SRC |
20
+ GPUTextureUsage.COPY_DST
21
+ });
22
+ return {
23
+ "resource": texture,
24
+ "view": texture.createView(),
25
+ stencil,
26
+ width,
27
+ height,
28
+ "area": width * height,
29
+ "dirty": false
30
+ };
31
+ };
@@ -0,0 +1,5 @@
1
+ import type { IAttachmentObject } from "../../interface/IAttachmentObject";
2
+ /**
3
+ * @description レンダーパスディスクリプタを作成(プリアロケート再利用)
4
+ */
5
+ export declare const execute: (attachment: IAttachmentObject, r: number, g: number, b: number, a: number, loadOp?: GPULoadOp) => GPURenderPassDescriptor;
@@ -0,0 +1,42 @@
1
+ const $clearValue = { "r": 0, "g": 0, "b": 0, "a": 0 };
2
+ const $colorAttachment = {
3
+ "view": null,
4
+ "loadOp": "clear",
5
+ "storeOp": "store",
6
+ "clearValue": $clearValue
7
+ };
8
+ const $depthStencilAttachment = {
9
+ "view": null,
10
+ "depthLoadOp": "clear",
11
+ "depthStoreOp": "store",
12
+ "depthClearValue": 1.0,
13
+ "stencilLoadOp": "clear",
14
+ "stencilStoreOp": "store",
15
+ "stencilClearValue": 0
16
+ };
17
+ const $descriptor = {
18
+ "colorAttachments": [$colorAttachment]
19
+ };
20
+ /**
21
+ * @description レンダーパスディスクリプタを作成(プリアロケート再利用)
22
+ */
23
+ export const execute = (attachment, r, g, b, a, loadOp = "clear") => {
24
+ const colorView = attachment.color?.view ?? attachment.texture?.view;
25
+ if (!colorView) {
26
+ throw new Error("No color view available for render pass");
27
+ }
28
+ $colorAttachment.view = colorView;
29
+ $colorAttachment.loadOp = loadOp;
30
+ $clearValue.r = r;
31
+ $clearValue.g = g;
32
+ $clearValue.b = b;
33
+ $clearValue.a = a;
34
+ if (attachment.stencil?.view) {
35
+ $depthStencilAttachment.view = attachment.stencil.view;
36
+ $descriptor.depthStencilAttachment = $depthStencilAttachment;
37
+ }
38
+ else {
39
+ $descriptor.depthStencilAttachment = undefined;
40
+ }
41
+ return $descriptor;
42
+ };
@@ -0,0 +1,16 @@
1
+ import type { IStencilBufferObject } from "../../interface/IStencilBufferObject";
2
+ /**
3
+ * @description ステンシルバッファを新規作成
4
+ * Create a new stencil buffer
5
+ *
6
+ * @param {GPUDevice} device
7
+ * @param {number} width
8
+ * @param {number} height
9
+ * @param {{ stencilId: number }} idCounter
10
+ * @return {IStencilBufferObject}
11
+ * @method
12
+ * @protected
13
+ */
14
+ export declare const execute: (device: GPUDevice, width: number, height: number, idCounter: {
15
+ stencilId: number;
16
+ }) => IStencilBufferObject;
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @description ステンシルバッファを新規作成
3
+ * Create a new stencil buffer
4
+ *
5
+ * @param {GPUDevice} device
6
+ * @param {number} width
7
+ * @param {number} height
8
+ * @param {{ stencilId: number }} idCounter
9
+ * @return {IStencilBufferObject}
10
+ * @method
11
+ * @protected
12
+ */
13
+ export const execute = (device, width, height, idCounter) => {
14
+ const texture = device.createTexture({
15
+ "size": { width, height },
16
+ "format": "depth24plus-stencil8",
17
+ "usage": GPUTextureUsage.RENDER_ATTACHMENT
18
+ });
19
+ return {
20
+ "id": idCounter.stencilId++,
21
+ "resource": texture,
22
+ "view": texture.createView(),
23
+ width,
24
+ height,
25
+ "area": width * height,
26
+ "dirty": false
27
+ };
28
+ };
@@ -0,0 +1,17 @@
1
+ import type { ITextureObject } from "../../interface/ITextureObject";
2
+ /**
3
+ * @description テクスチャオブジェクトを新規作成
4
+ * Create a new texture object
5
+ *
6
+ * @param {GPUDevice} device
7
+ * @param {number} width
8
+ * @param {number} height
9
+ * @param {boolean} smooth
10
+ * @param {{ textureId: number }} idCounter
11
+ * @return {ITextureObject}
12
+ * @method
13
+ * @protected
14
+ */
15
+ export declare const execute: (device: GPUDevice, width: number, height: number, smooth: boolean, idCounter: {
16
+ textureId: number;
17
+ }) => ITextureObject;
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @description テクスチャオブジェクトを新規作成
3
+ * Create a new texture object
4
+ *
5
+ * @param {GPUDevice} device
6
+ * @param {number} width
7
+ * @param {number} height
8
+ * @param {boolean} smooth
9
+ * @param {{ textureId: number }} idCounter
10
+ * @return {ITextureObject}
11
+ * @method
12
+ * @protected
13
+ */
14
+ export const execute = (device, width, height, smooth, idCounter) => {
15
+ const texture = device.createTexture({
16
+ "size": { width, height },
17
+ "format": "rgba8unorm",
18
+ "usage": GPUTextureUsage.RENDER_ATTACHMENT |
19
+ GPUTextureUsage.TEXTURE_BINDING |
20
+ GPUTextureUsage.COPY_SRC |
21
+ GPUTextureUsage.COPY_DST
22
+ });
23
+ const view = texture.createView();
24
+ return {
25
+ "id": idCounter.textureId++,
26
+ "resource": texture,
27
+ view,
28
+ width,
29
+ height,
30
+ "area": width * height,
31
+ smooth
32
+ };
33
+ };
@@ -0,0 +1,16 @@
1
+ import type { IColorBufferObject } from "../../interface/IColorBufferObject";
2
+ import type { IStencilBufferObject } from "../../interface/IStencilBufferObject";
3
+ /**
4
+ * @description カラーバッファを取得(プールから再利用または新規作成)
5
+ * Get color buffer from pool or create new one
6
+ *
7
+ * @param {GPUDevice} device
8
+ * @param {IColorBufferObject[]} colorBufferPool
9
+ * @param {number} width
10
+ * @param {number} height
11
+ * @param {IStencilBufferObject} stencil
12
+ * @return {IColorBufferObject}
13
+ * @method
14
+ * @protected
15
+ */
16
+ export declare const execute: (device: GPUDevice, colorBufferPool: IColorBufferObject[], width: number, height: number, stencil: IStencilBufferObject) => IColorBufferObject;
@@ -0,0 +1,28 @@
1
+ import { execute as attachmentManagerCreateColorBufferService } from "./AttachmentManagerCreateColorBufferService";
2
+ /**
3
+ * @description カラーバッファを取得(プールから再利用または新規作成)
4
+ * Get color buffer from pool or create new one
5
+ *
6
+ * @param {GPUDevice} device
7
+ * @param {IColorBufferObject[]} colorBufferPool
8
+ * @param {number} width
9
+ * @param {number} height
10
+ * @param {IStencilBufferObject} stencil
11
+ * @return {IColorBufferObject}
12
+ * @method
13
+ * @protected
14
+ */
15
+ export const execute = (device, colorBufferPool, width, height, stencil) => {
16
+ // プールから適切なサイズのものを検索
17
+ for (let i = 0; i < colorBufferPool.length; i++) {
18
+ const buffer = colorBufferPool[i];
19
+ if (buffer.width >= width && buffer.height >= height) {
20
+ colorBufferPool.splice(i, 1);
21
+ buffer.stencil = stencil;
22
+ buffer.dirty = false;
23
+ return buffer;
24
+ }
25
+ }
26
+ // 新規作成
27
+ return attachmentManagerCreateColorBufferService(device, width, height, stencil);
28
+ };
@@ -0,0 +1,17 @@
1
+ import type { IStencilBufferObject } from "../../interface/IStencilBufferObject";
2
+ /**
3
+ * @description ステンシルバッファを取得(プールから再利用または新規作成)
4
+ * Get stencil buffer from pool or create new one
5
+ *
6
+ * @param {GPUDevice} device
7
+ * @param {IStencilBufferObject[]} stencilBufferPool
8
+ * @param {number} width
9
+ * @param {number} height
10
+ * @param {{ stencilId: number }} idCounter
11
+ * @return {IStencilBufferObject}
12
+ * @method
13
+ * @protected
14
+ */
15
+ export declare const execute: (device: GPUDevice, stencilBufferPool: IStencilBufferObject[], width: number, height: number, idCounter: {
16
+ stencilId: number;
17
+ }) => IStencilBufferObject;
@@ -0,0 +1,27 @@
1
+ import { execute as attachmentManagerCreateStencilBufferService } from "./AttachmentManagerCreateStencilBufferService";
2
+ /**
3
+ * @description ステンシルバッファを取得(プールから再利用または新規作成)
4
+ * Get stencil buffer from pool or create new one
5
+ *
6
+ * @param {GPUDevice} device
7
+ * @param {IStencilBufferObject[]} stencilBufferPool
8
+ * @param {number} width
9
+ * @param {number} height
10
+ * @param {{ stencilId: number }} idCounter
11
+ * @return {IStencilBufferObject}
12
+ * @method
13
+ * @protected
14
+ */
15
+ export const execute = (device, stencilBufferPool, width, height, idCounter) => {
16
+ // プールから適切なサイズのものを検索
17
+ for (let i = 0; i < stencilBufferPool.length; i++) {
18
+ const buffer = stencilBufferPool[i];
19
+ if (buffer.width >= width && buffer.height >= height) {
20
+ stencilBufferPool.splice(i, 1);
21
+ buffer.dirty = false;
22
+ return buffer;
23
+ }
24
+ }
25
+ // 新規作成
26
+ return attachmentManagerCreateStencilBufferService(device, width, height, idCounter);
27
+ };
@@ -0,0 +1,18 @@
1
+ import type { ITextureObject } from "../../interface/ITextureObject";
2
+ /**
3
+ * @description テクスチャオブジェクトを取得(プールから再利用または新規作成)
4
+ * Get texture object from pool or create new one
5
+ *
6
+ * @param {GPUDevice} device
7
+ * @param {Map<string, ITextureObject[]>} texturePool
8
+ * @param {number} width
9
+ * @param {number} height
10
+ * @param {boolean} smooth
11
+ * @param {{ textureId: number }} idCounter
12
+ * @return {ITextureObject}
13
+ * @method
14
+ * @protected
15
+ */
16
+ export declare const execute: (device: GPUDevice, texturePool: Map<string, ITextureObject[]>, width: number, height: number, smooth: boolean, idCounter: {
17
+ textureId: number;
18
+ }) => ITextureObject;
@@ -0,0 +1,27 @@
1
+ import { execute as attachmentManagerCreateTextureObjectService } from "./AttachmentManagerCreateTextureObjectService";
2
+ /**
3
+ * @description テクスチャオブジェクトを取得(プールから再利用または新規作成)
4
+ * Get texture object from pool or create new one
5
+ *
6
+ * @param {GPUDevice} device
7
+ * @param {Map<string, ITextureObject[]>} texturePool
8
+ * @param {number} width
9
+ * @param {number} height
10
+ * @param {boolean} smooth
11
+ * @param {{ textureId: number }} idCounter
12
+ * @return {ITextureObject}
13
+ * @method
14
+ * @protected
15
+ */
16
+ export const execute = (device, texturePool, width, height, smooth, idCounter) => {
17
+ const key = `${width}x${height}_${smooth ? "smooth" : "nearest"}`;
18
+ // プールから再利用
19
+ if (texturePool.has(key)) {
20
+ const pool = texturePool.get(key);
21
+ if (pool.length > 0) {
22
+ return pool.pop();
23
+ }
24
+ }
25
+ // 新規作成
26
+ return attachmentManagerCreateTextureObjectService(device, width, height, smooth, idCounter);
27
+ };
@@ -0,0 +1,12 @@
1
+ import type { ITextureObject } from "../../interface/ITextureObject";
2
+ /**
3
+ * @description テクスチャをプールに返却
4
+ * Release texture back to pool
5
+ *
6
+ * @param {Map<string, ITextureObject[]>} texturePool
7
+ * @param {ITextureObject} textureObject
8
+ * @return {void}
9
+ * @method
10
+ * @protected
11
+ */
12
+ export declare const execute: (texturePool: Map<string, ITextureObject[]>, textureObject: ITextureObject) => void;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @description テクスチャをプールに返却
3
+ * Release texture back to pool
4
+ *
5
+ * @param {Map<string, ITextureObject[]>} texturePool
6
+ * @param {ITextureObject} textureObject
7
+ * @return {void}
8
+ * @method
9
+ * @protected
10
+ */
11
+ export const execute = (texturePool, textureObject) => {
12
+ const key = `${textureObject.width}x${textureObject.height}_${textureObject.smooth ? "smooth" : "nearest"}`;
13
+ if (!texturePool.has(key)) {
14
+ texturePool.set(key, []);
15
+ }
16
+ texturePool.get(key).push(textureObject);
17
+ };
@@ -0,0 +1,26 @@
1
+ import type { IAttachmentObject } from "../../interface/IAttachmentObject";
2
+ import type { ITextureObject } from "../../interface/ITextureObject";
3
+ import type { IColorBufferObject } from "../../interface/IColorBufferObject";
4
+ import type { IStencilBufferObject } from "../../interface/IStencilBufferObject";
5
+ /**
6
+ * @description アタッチメントオブジェクトを取得
7
+ * Get attachment object
8
+ *
9
+ * @param {GPUDevice} device
10
+ * @param {IAttachmentObject[]} attachmentPool
11
+ * @param {Map<string, ITextureObject[]>} texturePool
12
+ * @param {IColorBufferObject[]} colorBufferPool
13
+ * @param {IStencilBufferObject[]} stencilBufferPool
14
+ * @param {number} width
15
+ * @param {number} height
16
+ * @param {boolean} msaa
17
+ * @param {{ attachmentId: number, textureId: number, stencilId: number }} idCounter
18
+ * @return {IAttachmentObject}
19
+ * @method
20
+ * @protected
21
+ */
22
+ export declare const execute: (device: GPUDevice, attachmentPool: IAttachmentObject[], texturePool: Map<string, ITextureObject[]>, colorBufferPool: IColorBufferObject[], stencilBufferPool: IStencilBufferObject[], width: number, height: number, msaa: boolean, idCounter: {
23
+ attachmentId: number;
24
+ textureId: number;
25
+ stencilId: number;
26
+ }) => IAttachmentObject;
@@ -0,0 +1,43 @@
1
+ import { execute as attachmentManagerCreateAttachmentObjectService } from "../service/AttachmentManagerCreateAttachmentObjectService";
2
+ import { execute as attachmentManagerGetStencilBufferService } from "../service/AttachmentManagerGetStencilBufferService";
3
+ import { execute as attachmentManagerGetColorBufferService } from "../service/AttachmentManagerGetColorBufferService";
4
+ import { execute as attachmentManagerGetTextureService } from "../service/AttachmentManagerGetTextureService";
5
+ /**
6
+ * @description アタッチメントオブジェクトを取得
7
+ * Get attachment object
8
+ *
9
+ * @param {GPUDevice} device
10
+ * @param {IAttachmentObject[]} attachmentPool
11
+ * @param {Map<string, ITextureObject[]>} texturePool
12
+ * @param {IColorBufferObject[]} colorBufferPool
13
+ * @param {IStencilBufferObject[]} stencilBufferPool
14
+ * @param {number} width
15
+ * @param {number} height
16
+ * @param {boolean} msaa
17
+ * @param {{ attachmentId: number, textureId: number, stencilId: number }} idCounter
18
+ * @return {IAttachmentObject}
19
+ * @method
20
+ * @protected
21
+ */
22
+ export const execute = (device, attachmentPool, texturePool, colorBufferPool, stencilBufferPool, width, height, msaa, idCounter) => {
23
+ // プールから再利用
24
+ const attachment = attachmentPool.length > 0
25
+ ? attachmentPool.pop()
26
+ : attachmentManagerCreateAttachmentObjectService(idCounter);
27
+ // サイズとフラグを更新
28
+ attachment.width = width;
29
+ attachment.height = height;
30
+ attachment.msaa = msaa;
31
+ attachment.mask = false;
32
+ attachment.clipLevel = 0;
33
+ // ステンシルバッファを取得または作成
34
+ const stencil = attachmentManagerGetStencilBufferService(device, stencilBufferPool, width, height, idCounter);
35
+ // カラーバッファを取得または作成(ステンシルを参照)
36
+ const color = attachmentManagerGetColorBufferService(device, colorBufferPool, width, height, stencil);
37
+ attachment.color = color;
38
+ attachment.stencil = stencil;
39
+ // テクスチャを取得
40
+ const texture = attachmentManagerGetTextureService(device, texturePool, width, height, true, idCounter);
41
+ attachment.texture = texture;
42
+ return attachment;
43
+ };
@@ -0,0 +1,18 @@
1
+ import type { IAttachmentObject } from "../../interface/IAttachmentObject";
2
+ import type { ITextureObject } from "../../interface/ITextureObject";
3
+ import type { IColorBufferObject } from "../../interface/IColorBufferObject";
4
+ import type { IStencilBufferObject } from "../../interface/IStencilBufferObject";
5
+ /**
6
+ * @description アタッチメントを解放してプールに返却
7
+ * Release attachment and return to pool
8
+ *
9
+ * @param {IAttachmentObject[]} attachmentPool
10
+ * @param {Map<string, ITextureObject[]>} texturePool
11
+ * @param {IColorBufferObject[]} colorBufferPool
12
+ * @param {IStencilBufferObject[]} stencilBufferPool
13
+ * @param {IAttachmentObject} attachment
14
+ * @return {void}
15
+ * @method
16
+ * @protected
17
+ */
18
+ export declare const execute: (attachmentPool: IAttachmentObject[], texturePool: Map<string, ITextureObject[]>, colorBufferPool: IColorBufferObject[], stencilBufferPool: IStencilBufferObject[], attachment: IAttachmentObject) => void;
@@ -0,0 +1,33 @@
1
+ import { execute as attachmentManagerReleaseTextureService } from "../service/AttachmentManagerReleaseTextureService";
2
+ /**
3
+ * @description アタッチメントを解放してプールに返却
4
+ * Release attachment and return to pool
5
+ *
6
+ * @param {IAttachmentObject[]} attachmentPool
7
+ * @param {Map<string, ITextureObject[]>} texturePool
8
+ * @param {IColorBufferObject[]} colorBufferPool
9
+ * @param {IStencilBufferObject[]} stencilBufferPool
10
+ * @param {IAttachmentObject} attachment
11
+ * @return {void}
12
+ * @method
13
+ * @protected
14
+ */
15
+ export const execute = (attachmentPool, texturePool, colorBufferPool, stencilBufferPool, attachment) => {
16
+ // テクスチャをプールに返却
17
+ if (attachment.texture) {
18
+ attachmentManagerReleaseTextureService(texturePool, attachment.texture);
19
+ attachment.texture = null;
20
+ }
21
+ // カラーバッファをプールに返却
22
+ if (attachment.color) {
23
+ colorBufferPool.push(attachment.color);
24
+ attachment.color = null;
25
+ }
26
+ // ステンシルバッファをプールに返却
27
+ if (attachment.stencil) {
28
+ stencilBufferPool.push(attachment.stencil);
29
+ attachment.stencil = null;
30
+ }
31
+ // アタッチメントをプールに返却
32
+ attachmentPool.push(attachment);
33
+ };