@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.
- package/LICENSE +21 -0
- package/README.md +574 -0
- package/package.json +30 -0
- package/src/AtlasManager.d.ts +23 -0
- package/src/AtlasManager.js +123 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateAttachmentObjectService.d.ts +13 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateAttachmentObjectService.js +24 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateColorBufferService.d.ts +15 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateColorBufferService.js +31 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateRenderPassDescriptorService.d.ts +5 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateRenderPassDescriptorService.js +42 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateStencilBufferService.d.ts +16 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateStencilBufferService.js +28 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateTextureObjectService.d.ts +17 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateTextureObjectService.js +33 -0
- package/src/AttachmentManager/service/AttachmentManagerGetColorBufferService.d.ts +16 -0
- package/src/AttachmentManager/service/AttachmentManagerGetColorBufferService.js +28 -0
- package/src/AttachmentManager/service/AttachmentManagerGetStencilBufferService.d.ts +17 -0
- package/src/AttachmentManager/service/AttachmentManagerGetStencilBufferService.js +27 -0
- package/src/AttachmentManager/service/AttachmentManagerGetTextureService.d.ts +18 -0
- package/src/AttachmentManager/service/AttachmentManagerGetTextureService.js +27 -0
- package/src/AttachmentManager/service/AttachmentManagerReleaseTextureService.d.ts +12 -0
- package/src/AttachmentManager/service/AttachmentManagerReleaseTextureService.js +17 -0
- package/src/AttachmentManager/usecase/AttachmentManagerGetAttachmentObjectUseCase.d.ts +26 -0
- package/src/AttachmentManager/usecase/AttachmentManagerGetAttachmentObjectUseCase.js +43 -0
- package/src/AttachmentManager/usecase/AttachmentManagerReleaseAttachmentUseCase.d.ts +18 -0
- package/src/AttachmentManager/usecase/AttachmentManagerReleaseAttachmentUseCase.js +33 -0
- package/src/AttachmentManager.d.ts +19 -0
- package/src/AttachmentManager.js +105 -0
- package/src/BezierConverter/BezierConverter.d.ts +16 -0
- package/src/BezierConverter/BezierConverter.js +15 -0
- package/src/BezierConverter/service/BezierConverterCalculateFlatnessService.d.ts +15 -0
- package/src/BezierConverter/service/BezierConverterCalculateFlatnessService.js +37 -0
- package/src/BezierConverter/service/BezierConverterSplitCubicService.d.ts +15 -0
- package/src/BezierConverter/service/BezierConverterSplitCubicService.js +47 -0
- package/src/BezierConverter/usecase/BezierConverterAdaptiveCubicToQuadUseCase.d.ts +29 -0
- package/src/BezierConverter/usecase/BezierConverterAdaptiveCubicToQuadUseCase.js +80 -0
- package/src/Blend/BlendInstancedManager.d.ts +35 -0
- package/src/Blend/BlendInstancedManager.js +147 -0
- package/src/Blend/service/BlendAddService.d.ts +1 -0
- package/src/Blend/service/BlendAddService.js +8 -0
- package/src/Blend/service/BlendAlphaService.d.ts +1 -0
- package/src/Blend/service/BlendAlphaService.js +8 -0
- package/src/Blend/service/BlendEraseService.d.ts +1 -0
- package/src/Blend/service/BlendEraseService.js +8 -0
- package/src/Blend/service/BlendGetStateService.d.ts +12 -0
- package/src/Blend/service/BlendGetStateService.js +13 -0
- package/src/Blend/service/BlendOneZeroService.d.ts +1 -0
- package/src/Blend/service/BlendOneZeroService.js +8 -0
- package/src/Blend/service/BlendResetService.d.ts +1 -0
- package/src/Blend/service/BlendResetService.js +8 -0
- package/src/Blend/service/BlendScreenService.d.ts +1 -0
- package/src/Blend/service/BlendScreenService.js +8 -0
- package/src/Blend/service/BlendSetModeService.d.ts +2 -0
- package/src/Blend/service/BlendSetModeService.js +4 -0
- package/src/Blend/usecase/BlendApplyComplexBlendUseCase.d.ts +6 -0
- package/src/Blend/usecase/BlendApplyComplexBlendUseCase.js +79 -0
- package/src/Blend/usecase/BlendOperationUseCase.d.ts +11 -0
- package/src/Blend/usecase/BlendOperationUseCase.js +31 -0
- package/src/Blend.d.ts +8 -0
- package/src/Blend.js +91 -0
- package/src/BufferManager/service/BufferManagerCreateIndirectBufferService.d.ts +15 -0
- package/src/BufferManager/service/BufferManagerCreateIndirectBufferService.js +37 -0
- package/src/BufferManager/service/BufferManagerCreateRectVerticesService.d.ts +13 -0
- package/src/BufferManager/service/BufferManagerCreateRectVerticesService.js +23 -0
- package/src/BufferManager/service/BufferManagerCreateStorageBufferService.d.ts +17 -0
- package/src/BufferManager/service/BufferManagerCreateStorageBufferService.js +23 -0
- package/src/BufferManager/service/BufferManagerReleaseUniformBufferService.d.ts +12 -0
- package/src/BufferManager/service/BufferManagerReleaseUniformBufferService.js +32 -0
- package/src/BufferManager/service/BufferManagerReleaseVertexBufferService.d.ts +12 -0
- package/src/BufferManager/service/BufferManagerReleaseVertexBufferService.js +32 -0
- package/src/BufferManager/service/BufferManagerUpdateIndirectBufferService.d.ts +12 -0
- package/src/BufferManager/service/BufferManagerUpdateIndirectBufferService.js +20 -0
- package/src/BufferManager/service/BufferManagerUpperPowerOfTwoService.d.ts +10 -0
- package/src/BufferManager/service/BufferManagerUpperPowerOfTwoService.js +18 -0
- package/src/BufferManager/usecase/BufferManagerAcquireStorageBufferUseCase.d.ts +15 -0
- package/src/BufferManager/usecase/BufferManagerAcquireStorageBufferUseCase.js +51 -0
- package/src/BufferManager/usecase/BufferManagerAcquireUniformBufferUseCase.d.ts +13 -0
- package/src/BufferManager/usecase/BufferManagerAcquireUniformBufferUseCase.js +26 -0
- package/src/BufferManager/usecase/BufferManagerAcquireVertexBufferUseCase.d.ts +14 -0
- package/src/BufferManager/usecase/BufferManagerAcquireVertexBufferUseCase.js +46 -0
- package/src/BufferManager/usecase/BufferManagerCleanupStorageBuffersUseCase.d.ts +12 -0
- package/src/BufferManager/usecase/BufferManagerCleanupStorageBuffersUseCase.js +20 -0
- package/src/BufferManager/usecase/BufferManagerReleaseStorageBufferUseCase.d.ts +9 -0
- package/src/BufferManager/usecase/BufferManagerReleaseStorageBufferUseCase.js +15 -0
- package/src/BufferManager.d.ts +93 -0
- package/src/BufferManager.js +487 -0
- package/src/Compute/ComputePipelineManager.d.ts +61 -0
- package/src/Compute/ComputePipelineManager.js +313 -0
- package/src/Compute/service/ComputeExecuteBlurService.d.ts +21 -0
- package/src/Compute/service/ComputeExecuteBlurService.js +81 -0
- package/src/Context/service/ContextComputeBitmapMatrixService.d.ts +1 -0
- package/src/Context/service/ContextComputeBitmapMatrixService.js +74 -0
- package/src/Context/service/ContextComputeGradientMatrixService.d.ts +4 -0
- package/src/Context/service/ContextComputeGradientMatrixService.js +88 -0
- package/src/Context/service/ContextFillSimpleService.d.ts +2 -0
- package/src/Context/service/ContextFillSimpleService.js +28 -0
- package/src/Context/service/ContextFillWithStencilMainService.d.ts +2 -0
- package/src/Context/service/ContextFillWithStencilMainService.js +19 -0
- package/src/Context/service/ContextFillWithStencilService.d.ts +2 -0
- package/src/Context/service/ContextFillWithStencilService.js +19 -0
- package/src/Context/usecase/ContextApplyFilterUseCase.d.ts +5 -0
- package/src/Context/usecase/ContextApplyFilterUseCase.js +668 -0
- package/src/Context/usecase/ContextBitmapFillUseCase.d.ts +4 -0
- package/src/Context/usecase/ContextBitmapFillUseCase.js +210 -0
- package/src/Context/usecase/ContextBitmapStrokeUseCase.d.ts +4 -0
- package/src/Context/usecase/ContextBitmapStrokeUseCase.js +119 -0
- package/src/Context/usecase/ContextClipUseCase.d.ts +5 -0
- package/src/Context/usecase/ContextClipUseCase.js +101 -0
- package/src/Context/usecase/ContextContainerEndLayerUseCase.d.ts +5 -0
- package/src/Context/usecase/ContextContainerEndLayerUseCase.js +476 -0
- package/src/Context/usecase/ContextDrawArraysInstancedUseCase.d.ts +6 -0
- package/src/Context/usecase/ContextDrawArraysInstancedUseCase.js +135 -0
- package/src/Context/usecase/ContextDrawIndirectUseCase.d.ts +6 -0
- package/src/Context/usecase/ContextDrawIndirectUseCase.js +154 -0
- package/src/Context/usecase/ContextGradientFillUseCase.d.ts +4 -0
- package/src/Context/usecase/ContextGradientFillUseCase.js +230 -0
- package/src/Context/usecase/ContextGradientStrokeUseCase.d.ts +4 -0
- package/src/Context/usecase/ContextGradientStrokeUseCase.js +138 -0
- package/src/Context/usecase/ContextProcessComplexBlendQueueUseCase.d.ts +6 -0
- package/src/Context/usecase/ContextProcessComplexBlendQueueUseCase.js +213 -0
- package/src/Context.d.ts +430 -0
- package/src/Context.js +2453 -0
- package/src/FillTexturePool.d.ts +6 -0
- package/src/FillTexturePool.js +72 -0
- package/src/Filter/BevelFilter/FilterApplyBevelFilterUseCase.d.ts +10 -0
- package/src/Filter/BevelFilter/FilterApplyBevelFilterUseCase.js +214 -0
- package/src/Filter/BevelFilterShader.d.ts +2 -0
- package/src/Filter/BevelFilterShader.js +107 -0
- package/src/Filter/BitmapFilterShader.d.ts +2 -0
- package/src/Filter/BitmapFilterShader.js +207 -0
- package/src/Filter/BlurFilter/FilterApplyBlurFilterUseCase.d.ts +16 -0
- package/src/Filter/BlurFilter/FilterApplyBlurFilterUseCase.js +243 -0
- package/src/Filter/BlurFilter/service/BlurFilterComputeShaderService.d.ts +40 -0
- package/src/Filter/BlurFilter/service/BlurFilterComputeShaderService.js +51 -0
- package/src/Filter/BlurFilter/usecase/FilterApplyBlurComputeUseCase.d.ts +25 -0
- package/src/Filter/BlurFilter/usecase/FilterApplyBlurComputeUseCase.js +180 -0
- package/src/Filter/BlurFilterShader.d.ts +5 -0
- package/src/Filter/BlurFilterShader.js +109 -0
- package/src/Filter/BlurFilterUseCase.d.ts +36 -0
- package/src/Filter/BlurFilterUseCase.js +85 -0
- package/src/Filter/ColorMatrixFilter/FilterApplyColorMatrixFilterUseCase.d.ts +12 -0
- package/src/Filter/ColorMatrixFilter/FilterApplyColorMatrixFilterUseCase.js +90 -0
- package/src/Filter/ColorMatrixFilterShader.d.ts +4 -0
- package/src/Filter/ColorMatrixFilterShader.js +51 -0
- package/src/Filter/ConvolutionFilter/FilterApplyConvolutionFilterUseCase.d.ts +6 -0
- package/src/Filter/ConvolutionFilter/FilterApplyConvolutionFilterUseCase.js +144 -0
- package/src/Filter/ConvolutionFilterShader.d.ts +2 -0
- package/src/Filter/ConvolutionFilterShader.js +115 -0
- package/src/Filter/DisplacementMapFilter/FilterApplyDisplacementMapFilterUseCase.d.ts +6 -0
- package/src/Filter/DisplacementMapFilter/FilterApplyDisplacementMapFilterUseCase.js +172 -0
- package/src/Filter/DisplacementMapFilterShader.d.ts +2 -0
- package/src/Filter/DisplacementMapFilterShader.js +114 -0
- package/src/Filter/DropShadowFilter/FilterApplyDropShadowFilterUseCase.d.ts +24 -0
- package/src/Filter/DropShadowFilter/FilterApplyDropShadowFilterUseCase.js +179 -0
- package/src/Filter/DropShadowFilterShader.d.ts +4 -0
- package/src/Filter/DropShadowFilterShader.js +93 -0
- package/src/Filter/FilterGradientLUTCache.d.ts +29 -0
- package/src/Filter/FilterGradientLUTCache.js +84 -0
- package/src/Filter/FilterOffset.d.ts +8 -0
- package/src/Filter/FilterOffset.js +10 -0
- package/src/Filter/GlowFilter/FilterApplyGlowFilterUseCase.d.ts +24 -0
- package/src/Filter/GlowFilter/FilterApplyGlowFilterUseCase.js +143 -0
- package/src/Filter/GlowFilterShader.d.ts +4 -0
- package/src/Filter/GlowFilterShader.js +66 -0
- package/src/Filter/GradientBevelFilter/FilterApplyGradientBevelFilterUseCase.d.ts +29 -0
- package/src/Filter/GradientBevelFilter/FilterApplyGradientBevelFilterUseCase.js +216 -0
- package/src/Filter/GradientGlowFilter/FilterApplyGradientGlowFilterUseCase.d.ts +29 -0
- package/src/Filter/GradientGlowFilter/FilterApplyGradientGlowFilterUseCase.js +164 -0
- package/src/FrameBufferManager/service/FrameBufferManagerCreateRenderPassDescriptorService.d.ts +4 -0
- package/src/FrameBufferManager/service/FrameBufferManagerCreateRenderPassDescriptorService.js +23 -0
- package/src/FrameBufferManager/service/FrameBufferManagerCreateStencilRenderPassDescriptorService.d.ts +4 -0
- package/src/FrameBufferManager/service/FrameBufferManagerCreateStencilRenderPassDescriptorService.js +28 -0
- package/src/FrameBufferManager/service/FrameBufferManagerFlushPendingReleasesService.d.ts +11 -0
- package/src/FrameBufferManager/service/FrameBufferManagerFlushPendingReleasesService.js +19 -0
- package/src/FrameBufferManager/usecase/FrameBufferManagerCreateAttachmentUseCase.d.ts +23 -0
- package/src/FrameBufferManager/usecase/FrameBufferManagerCreateAttachmentUseCase.js +125 -0
- package/src/FrameBufferManager/usecase/FrameBufferManagerReleaseTemporaryAttachmentUseCase.d.ts +14 -0
- package/src/FrameBufferManager/usecase/FrameBufferManagerReleaseTemporaryAttachmentUseCase.js +23 -0
- package/src/FrameBufferManager.d.ts +24 -0
- package/src/FrameBufferManager.js +161 -0
- package/src/Gradient/GradientLUTCache.d.ts +61 -0
- package/src/Gradient/GradientLUTCache.js +153 -0
- package/src/Gradient/GradientLUTGenerator.d.ts +30 -0
- package/src/Gradient/GradientLUTGenerator.js +202 -0
- package/src/Grid.d.ts +18 -0
- package/src/Grid.js +21 -0
- package/src/Mask/service/MaskBeginMaskService.d.ts +9 -0
- package/src/Mask/service/MaskBeginMaskService.js +22 -0
- package/src/Mask/service/MaskEndMaskService.d.ts +15 -0
- package/src/Mask/service/MaskEndMaskService.js +36 -0
- package/src/Mask/service/MaskSetMaskBoundsService.d.ts +13 -0
- package/src/Mask/service/MaskSetMaskBoundsService.js +36 -0
- package/src/Mask/service/MaskUnionMaskService.d.ts +4 -0
- package/src/Mask/service/MaskUnionMaskService.js +74 -0
- package/src/Mask/usecase/MaskBindUseCase.d.ts +10 -0
- package/src/Mask/usecase/MaskBindUseCase.js +20 -0
- package/src/Mask/usecase/MaskLeaveMaskUseCase.d.ts +13 -0
- package/src/Mask/usecase/MaskLeaveMaskUseCase.js +51 -0
- package/src/Mask.d.ts +12 -0
- package/src/Mask.js +41 -0
- package/src/Mesh/service/MeshFillGenerateService.d.ts +19 -0
- package/src/Mesh/service/MeshFillGenerateService.js +76 -0
- package/src/Mesh/service/MeshLerpService.d.ts +13 -0
- package/src/Mesh/service/MeshLerpService.js +17 -0
- package/src/Mesh/service/MeshStrokeFillGenerateService.d.ts +19 -0
- package/src/Mesh/service/MeshStrokeFillGenerateService.js +76 -0
- package/src/Mesh/usecase/MeshBitmapStrokeGenerateUseCase.d.ts +13 -0
- package/src/Mesh/usecase/MeshBitmapStrokeGenerateUseCase.js +65 -0
- package/src/Mesh/usecase/MeshFillGenerateUseCase.d.ts +12 -0
- package/src/Mesh/usecase/MeshFillGenerateUseCase.js +48 -0
- package/src/Mesh/usecase/MeshGradientStrokeGenerateUseCase.d.ts +13 -0
- package/src/Mesh/usecase/MeshGradientStrokeGenerateUseCase.js +65 -0
- package/src/Mesh/usecase/MeshSplitQuadraticBezierUseCase.d.ts +14 -0
- package/src/Mesh/usecase/MeshSplitQuadraticBezierUseCase.js +28 -0
- package/src/Mesh/usecase/MeshStrokeFillGenerateUseCase.d.ts +18 -0
- package/src/Mesh/usecase/MeshStrokeFillGenerateUseCase.js +54 -0
- package/src/Mesh/usecase/MeshStrokeGenerateUseCase.d.ts +25 -0
- package/src/Mesh/usecase/MeshStrokeGenerateUseCase.js +608 -0
- package/src/PathCommand.d.ts +123 -0
- package/src/PathCommand.js +317 -0
- package/src/SamplerCache/service/SamplerCacheCreateCommonSamplersService.d.ts +11 -0
- package/src/SamplerCache/service/SamplerCacheCreateCommonSamplersService.js +35 -0
- package/src/SamplerCache/service/SamplerCacheGenerateKeyService.d.ts +13 -0
- package/src/SamplerCache/service/SamplerCacheGenerateKeyService.js +15 -0
- package/src/SamplerCache/service/SamplerCacheGetOrCreateService.d.ts +15 -0
- package/src/SamplerCache/service/SamplerCacheGetOrCreateService.js +30 -0
- package/src/SamplerCache.d.ts +18 -0
- package/src/SamplerCache.js +61 -0
- package/src/Shader/BlendModeShader.d.ts +51 -0
- package/src/Shader/BlendModeShader.js +71 -0
- package/src/Shader/GradientLUTGenerator/service/GradientLUTCalculateResolutionService.d.ts +12 -0
- package/src/Shader/GradientLUTGenerator/service/GradientLUTCalculateResolutionService.js +28 -0
- package/src/Shader/GradientLUTGenerator/service/GradientLUTGeneratePixelsService.d.ts +13 -0
- package/src/Shader/GradientLUTGenerator/service/GradientLUTGeneratePixelsService.js +61 -0
- package/src/Shader/GradientLUTGenerator/service/GradientLUTInterpolateColorService.d.ts +19 -0
- package/src/Shader/GradientLUTGenerator/service/GradientLUTInterpolateColorService.js +37 -0
- package/src/Shader/GradientLUTGenerator/service/GradientLUTParseStopsService.d.ts +11 -0
- package/src/Shader/GradientLUTGenerator/service/GradientLUTParseStopsService.js +24 -0
- package/src/Shader/GradientLUTGenerator/usecase/GradientLUTGenerateDataUseCase.d.ts +14 -0
- package/src/Shader/GradientLUTGenerator/usecase/GradientLUTGenerateDataUseCase.js +24 -0
- package/src/Shader/PipelineManager.d.ts +57 -0
- package/src/Shader/PipelineManager.js +2868 -0
- package/src/Shader/ShaderInstancedManager.d.ts +8 -0
- package/src/Shader/ShaderInstancedManager.js +18 -0
- package/src/Shader/ShaderSource.d.ts +60 -0
- package/src/Shader/ShaderSource.js +518 -0
- package/src/Shader/wgsl/common/SharedWgsl.d.ts +5 -0
- package/src/Shader/wgsl/common/SharedWgsl.js +37 -0
- package/src/Shader/wgsl/fragment/BasicFragment.d.ts +2 -0
- package/src/Shader/wgsl/fragment/BasicFragment.js +28 -0
- package/src/Shader/wgsl/fragment/BitmapFragment.d.ts +1 -0
- package/src/Shader/wgsl/fragment/BitmapFragment.js +43 -0
- package/src/Shader/wgsl/fragment/BlendFragment.d.ts +8 -0
- package/src/Shader/wgsl/fragment/BlendFragment.js +63 -0
- package/src/Shader/wgsl/fragment/EffectFragment.d.ts +6 -0
- package/src/Shader/wgsl/fragment/EffectFragment.js +324 -0
- package/src/Shader/wgsl/fragment/FillFragment.d.ts +1 -0
- package/src/Shader/wgsl/fragment/FillFragment.js +28 -0
- package/src/Shader/wgsl/fragment/FilterFragment.d.ts +10 -0
- package/src/Shader/wgsl/fragment/FilterFragment.js +212 -0
- package/src/Shader/wgsl/fragment/GradientFragment.d.ts +3 -0
- package/src/Shader/wgsl/fragment/GradientFragment.js +118 -0
- package/src/Shader/wgsl/fragment/InstancedFragment.d.ts +1 -0
- package/src/Shader/wgsl/fragment/InstancedFragment.js +20 -0
- package/src/Shader/wgsl/fragment/MaskFragment.d.ts +1 -0
- package/src/Shader/wgsl/fragment/MaskFragment.js +17 -0
- package/src/Shader/wgsl/fragment/StencilFragment.d.ts +2 -0
- package/src/Shader/wgsl/fragment/StencilFragment.js +33 -0
- package/src/Shader/wgsl/vertex/BasicVertex.d.ts +1 -0
- package/src/Shader/wgsl/vertex/BasicVertex.js +37 -0
- package/src/Shader/wgsl/vertex/BitmapVertex.d.ts +1 -0
- package/src/Shader/wgsl/vertex/BitmapVertex.js +43 -0
- package/src/Shader/wgsl/vertex/FillVertex.d.ts +1 -0
- package/src/Shader/wgsl/vertex/FillVertex.js +35 -0
- package/src/Shader/wgsl/vertex/FilterVertex.d.ts +12 -0
- package/src/Shader/wgsl/vertex/FilterVertex.js +193 -0
- package/src/Shader/wgsl/vertex/GradientVertex.d.ts +1 -0
- package/src/Shader/wgsl/vertex/GradientVertex.js +44 -0
- package/src/Shader/wgsl/vertex/InstancedVertex.d.ts +1 -0
- package/src/Shader/wgsl/vertex/InstancedVertex.js +48 -0
- package/src/Shader/wgsl/vertex/MaskVertex.d.ts +1 -0
- package/src/Shader/wgsl/vertex/MaskVertex.js +36 -0
- package/src/Shader/wgsl/vertex/StencilVertex.d.ts +2 -0
- package/src/Shader/wgsl/vertex/StencilVertex.js +66 -0
- package/src/TextureManager/service/TextureManagerInitializeSamplersService.d.ts +11 -0
- package/src/TextureManager/service/TextureManagerInitializeSamplersService.js +48 -0
- package/src/TextureManager/usecase/TextureManagerCreateTextureFromImageBitmapUseCase.d.ts +13 -0
- package/src/TextureManager/usecase/TextureManagerCreateTextureFromImageBitmapUseCase.js +30 -0
- package/src/TextureManager/usecase/TextureManagerCreateTextureFromPixelsUseCase.d.ts +15 -0
- package/src/TextureManager/usecase/TextureManagerCreateTextureFromPixelsUseCase.js +26 -0
- package/src/TextureManager.d.ts +15 -0
- package/src/TextureManager.js +87 -0
- package/src/TexturePool/service/TexturePoolCleanupService.d.ts +14 -0
- package/src/TexturePool/service/TexturePoolCleanupService.js +28 -0
- package/src/TexturePool/service/TexturePoolEvictOldestService.d.ts +11 -0
- package/src/TexturePool/service/TexturePoolEvictOldestService.js +24 -0
- package/src/TexturePool/service/TexturePoolReleaseService.d.ts +13 -0
- package/src/TexturePool/service/TexturePoolReleaseService.js +22 -0
- package/src/TexturePool/usecase/TexturePoolAcquireUseCase.d.ts +19 -0
- package/src/TexturePool/usecase/TexturePoolAcquireUseCase.js +90 -0
- package/src/TexturePool.d.ts +69 -0
- package/src/TexturePool.js +151 -0
- package/src/WebGPUUtil.d.ts +102 -0
- package/src/WebGPUUtil.js +157 -0
- package/src/index.d.ts +1 -0
- package/src/index.js +1 -0
- package/src/interface/IAttachmentObject.d.ts +41 -0
- package/src/interface/IAttachmentObject.js +1 -0
- package/src/interface/IBlendMode.d.ts +1 -0
- package/src/interface/IBlendMode.js +1 -0
- package/src/interface/IBlendState.d.ts +8 -0
- package/src/interface/IBlendState.js +1 -0
- package/src/interface/IBounds.d.ts +6 -0
- package/src/interface/IBounds.js +1 -0
- package/src/interface/ICachedBindGroup.d.ts +8 -0
- package/src/interface/ICachedBindGroup.js +1 -0
- package/src/interface/IColorBufferObject.d.ts +17 -0
- package/src/interface/IColorBufferObject.js +1 -0
- package/src/interface/IComplexBlendItem.d.ts +19 -0
- package/src/interface/IComplexBlendItem.js +1 -0
- package/src/interface/IFilterConfig.d.ts +29 -0
- package/src/interface/IFilterConfig.js +1 -0
- package/src/interface/IGradientLUTData.d.ts +8 -0
- package/src/interface/IGradientLUTData.js +1 -0
- package/src/interface/IGradientStop.d.ts +11 -0
- package/src/interface/IGradientStop.js +1 -0
- package/src/interface/ILocalFilterConfig.d.ts +21 -0
- package/src/interface/ILocalFilterConfig.js +1 -0
- package/src/interface/IMeshResult.d.ts +8 -0
- package/src/interface/IMeshResult.js +1 -0
- package/src/interface/IPath.d.ts +8 -0
- package/src/interface/IPath.js +1 -0
- package/src/interface/IPoint.d.ts +4 -0
- package/src/interface/IPoint.js +1 -0
- package/src/interface/IPooledBuffer.d.ts +8 -0
- package/src/interface/IPooledBuffer.js +1 -0
- package/src/interface/IPooledTexture.d.ts +17 -0
- package/src/interface/IPooledTexture.js +1 -0
- package/src/interface/IQuadraticSegment.d.ts +9 -0
- package/src/interface/IQuadraticSegment.js +1 -0
- package/src/interface/IRectangleInfo.d.ts +13 -0
- package/src/interface/IRectangleInfo.js +1 -0
- package/src/interface/IStencilBufferObject.d.ts +16 -0
- package/src/interface/IStencilBufferObject.js +1 -0
- package/src/interface/IStorageBufferConfig.d.ts +40 -0
- package/src/interface/IStorageBufferConfig.js +1 -0
- package/src/interface/ITextureObject.d.ts +16 -0
- package/src/interface/ITextureObject.js +1 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ITexturePoolBuckets } from "../../interface/IPooledTexture";
|
|
2
|
+
/**
|
|
3
|
+
* @description 古いプールエントリをクリーンアップ(バケットMap版 LRU回収)
|
|
4
|
+
* Cleanup old pool entries (bucket Map version, LRU eviction)
|
|
5
|
+
*
|
|
6
|
+
* @param {ITexturePoolBuckets} buckets
|
|
7
|
+
* @param {number} currentFrame
|
|
8
|
+
* @param {number} threshold - フレーム数閾値
|
|
9
|
+
* @param {number[]} totalCount - [0]に現在の合計数を格納
|
|
10
|
+
* @return {void}
|
|
11
|
+
* @method
|
|
12
|
+
* @protected
|
|
13
|
+
*/
|
|
14
|
+
export declare const execute: (buckets: ITexturePoolBuckets, currentFrame: number, threshold: number, totalCount: number[]) => void;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description 古いプールエントリをクリーンアップ(バケットMap版 LRU回収)
|
|
3
|
+
* Cleanup old pool entries (bucket Map version, LRU eviction)
|
|
4
|
+
*
|
|
5
|
+
* @param {ITexturePoolBuckets} buckets
|
|
6
|
+
* @param {number} currentFrame
|
|
7
|
+
* @param {number} threshold - フレーム数閾値
|
|
8
|
+
* @param {number[]} totalCount - [0]に現在の合計数を格納
|
|
9
|
+
* @return {void}
|
|
10
|
+
* @method
|
|
11
|
+
* @protected
|
|
12
|
+
*/
|
|
13
|
+
export const execute = (buckets, currentFrame, threshold, totalCount) => {
|
|
14
|
+
const frameThreshold = currentFrame - threshold;
|
|
15
|
+
for (const [key, bucket] of buckets) {
|
|
16
|
+
for (let i = bucket.length - 1; i >= 0; i--) {
|
|
17
|
+
const entry = bucket[i];
|
|
18
|
+
if (!entry.inUse && entry.lastUsedFrame < frameThreshold) {
|
|
19
|
+
entry.texture.destroy();
|
|
20
|
+
bucket.splice(i, 1);
|
|
21
|
+
totalCount[0]--;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
if (bucket.length === 0) {
|
|
25
|
+
buckets.delete(key);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { IPooledTexture } from "../../interface/IPooledTexture";
|
|
2
|
+
/**
|
|
3
|
+
* @description 最も古い未使用エントリを削除
|
|
4
|
+
* Evict the oldest unused pool entry
|
|
5
|
+
*
|
|
6
|
+
* @param {IPooledTexture[]} pool
|
|
7
|
+
* @return {void}
|
|
8
|
+
* @method
|
|
9
|
+
* @protected
|
|
10
|
+
*/
|
|
11
|
+
export declare const execute: (pool: IPooledTexture[]) => void;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description 最も古い未使用エントリを削除
|
|
3
|
+
* Evict the oldest unused pool entry
|
|
4
|
+
*
|
|
5
|
+
* @param {IPooledTexture[]} pool
|
|
6
|
+
* @return {void}
|
|
7
|
+
* @method
|
|
8
|
+
* @protected
|
|
9
|
+
*/
|
|
10
|
+
export const execute = (pool) => {
|
|
11
|
+
let oldestIndex = -1;
|
|
12
|
+
let oldestFrame = Infinity;
|
|
13
|
+
for (let i = 0; i < pool.length; i++) {
|
|
14
|
+
const entry = pool[i];
|
|
15
|
+
if (!entry.inUse && entry.lastUsedFrame < oldestFrame) {
|
|
16
|
+
oldestFrame = entry.lastUsedFrame;
|
|
17
|
+
oldestIndex = i;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
if (oldestIndex >= 0) {
|
|
21
|
+
pool[oldestIndex].texture.destroy();
|
|
22
|
+
pool.splice(oldestIndex, 1);
|
|
23
|
+
}
|
|
24
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ITexturePoolBuckets } from "../../interface/IPooledTexture";
|
|
2
|
+
/**
|
|
3
|
+
* @description テクスチャをプールに返却(バケットMap版)
|
|
4
|
+
* Release texture back to pool (bucket Map version)
|
|
5
|
+
*
|
|
6
|
+
* @param {ITexturePoolBuckets} buckets
|
|
7
|
+
* @param {GPUTexture} texture
|
|
8
|
+
* @param {number} currentFrame
|
|
9
|
+
* @return {void}
|
|
10
|
+
* @method
|
|
11
|
+
* @protected
|
|
12
|
+
*/
|
|
13
|
+
export declare const execute: (buckets: ITexturePoolBuckets, texture: GPUTexture, currentFrame: number) => void;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description テクスチャをプールに返却(バケットMap版)
|
|
3
|
+
* Release texture back to pool (bucket Map version)
|
|
4
|
+
*
|
|
5
|
+
* @param {ITexturePoolBuckets} buckets
|
|
6
|
+
* @param {GPUTexture} texture
|
|
7
|
+
* @param {number} currentFrame
|
|
8
|
+
* @return {void}
|
|
9
|
+
* @method
|
|
10
|
+
* @protected
|
|
11
|
+
*/
|
|
12
|
+
export const execute = (buckets, texture, currentFrame) => {
|
|
13
|
+
for (const bucket of buckets.values()) {
|
|
14
|
+
for (let i = 0; i < bucket.length; i++) {
|
|
15
|
+
if (bucket[i].texture === texture) {
|
|
16
|
+
bucket[i].inUse = false;
|
|
17
|
+
bucket[i].lastUsedFrame = currentFrame;
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ITexturePoolBuckets } from "../../interface/IPooledTexture";
|
|
2
|
+
/**
|
|
3
|
+
* @description テクスチャを取得または作成(バケットMap検索)
|
|
4
|
+
* Acquire texture from pool or create new one (bucket Map lookup)
|
|
5
|
+
*
|
|
6
|
+
* @param {GPUDevice} device
|
|
7
|
+
* @param {ITexturePoolBuckets} buckets
|
|
8
|
+
* @param {number} width
|
|
9
|
+
* @param {number} height
|
|
10
|
+
* @param {GPUTextureFormat} format
|
|
11
|
+
* @param {GPUTextureUsageFlags} usage
|
|
12
|
+
* @param {number} currentFrame
|
|
13
|
+
* @param {number} maxPoolSize
|
|
14
|
+
* @param {number[]} totalCount - [0]に現在の合計数を格納
|
|
15
|
+
* @return {GPUTexture}
|
|
16
|
+
* @method
|
|
17
|
+
* @protected
|
|
18
|
+
*/
|
|
19
|
+
export declare const execute: (device: GPUDevice, buckets: ITexturePoolBuckets, width: number, height: number, format: GPUTextureFormat, usage: GPUTextureUsageFlags, currentFrame: number, maxPoolSize: number, totalCount: number[]) => GPUTexture;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description バケットキーを生成(exactサイズ + フォーマット)
|
|
3
|
+
*
|
|
4
|
+
* @param {number} width
|
|
5
|
+
* @param {number} height
|
|
6
|
+
* @param {GPUTextureFormat} format
|
|
7
|
+
* @return {string}
|
|
8
|
+
*/
|
|
9
|
+
const buildKey = (width, height, format) => {
|
|
10
|
+
return `${width}_${height}_${format}`;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* @description テクスチャを取得または作成(バケットMap検索)
|
|
14
|
+
* Acquire texture from pool or create new one (bucket Map lookup)
|
|
15
|
+
*
|
|
16
|
+
* @param {GPUDevice} device
|
|
17
|
+
* @param {ITexturePoolBuckets} buckets
|
|
18
|
+
* @param {number} width
|
|
19
|
+
* @param {number} height
|
|
20
|
+
* @param {GPUTextureFormat} format
|
|
21
|
+
* @param {GPUTextureUsageFlags} usage
|
|
22
|
+
* @param {number} currentFrame
|
|
23
|
+
* @param {number} maxPoolSize
|
|
24
|
+
* @param {number[]} totalCount - [0]に現在の合計数を格納
|
|
25
|
+
* @return {GPUTexture}
|
|
26
|
+
* @method
|
|
27
|
+
* @protected
|
|
28
|
+
*/
|
|
29
|
+
export const execute = (device, buckets, width, height, format, usage, currentFrame, maxPoolSize, totalCount) => {
|
|
30
|
+
const key = buildKey(width, height, format);
|
|
31
|
+
// バケットから未使用テクスチャを検索(O(1)バケット + O(n)バケット内走査)
|
|
32
|
+
const bucket = buckets.get(key);
|
|
33
|
+
if (bucket) {
|
|
34
|
+
for (let i = 0; i < bucket.length; i++) {
|
|
35
|
+
const entry = bucket[i];
|
|
36
|
+
if (!entry.inUse) {
|
|
37
|
+
entry.inUse = true;
|
|
38
|
+
entry.lastUsedFrame = currentFrame;
|
|
39
|
+
return entry.texture;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// プールが満杯なら最も古い未使用エントリを削除(LRU回収)
|
|
44
|
+
if (totalCount[0] >= maxPoolSize) {
|
|
45
|
+
let oldestFrame = Infinity;
|
|
46
|
+
let oldestKey = "";
|
|
47
|
+
let oldestIdx = -1;
|
|
48
|
+
for (const [bKey, bEntries] of buckets) {
|
|
49
|
+
for (let i = 0; i < bEntries.length; i++) {
|
|
50
|
+
const e = bEntries[i];
|
|
51
|
+
if (!e.inUse && e.lastUsedFrame < oldestFrame) {
|
|
52
|
+
oldestFrame = e.lastUsedFrame;
|
|
53
|
+
oldestKey = bKey;
|
|
54
|
+
oldestIdx = i;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (oldestIdx >= 0) {
|
|
59
|
+
const bEntries = buckets.get(oldestKey);
|
|
60
|
+
bEntries[oldestIdx].texture.destroy();
|
|
61
|
+
bEntries.splice(oldestIdx, 1);
|
|
62
|
+
if (bEntries.length === 0) {
|
|
63
|
+
buckets.delete(oldestKey);
|
|
64
|
+
}
|
|
65
|
+
totalCount[0]--;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// exactサイズで新規作成
|
|
69
|
+
const texture = device.createTexture({
|
|
70
|
+
"size": { width, height },
|
|
71
|
+
format,
|
|
72
|
+
usage
|
|
73
|
+
});
|
|
74
|
+
const entry = {
|
|
75
|
+
texture,
|
|
76
|
+
width,
|
|
77
|
+
height,
|
|
78
|
+
format,
|
|
79
|
+
"lastUsedFrame": currentFrame,
|
|
80
|
+
"inUse": true
|
|
81
|
+
};
|
|
82
|
+
if (bucket) {
|
|
83
|
+
bucket.push(entry);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
buckets.set(key, [entry]);
|
|
87
|
+
}
|
|
88
|
+
totalCount[0]++;
|
|
89
|
+
return texture;
|
|
90
|
+
};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description テクスチャプールマネージャー(Power-of-2バケット版)
|
|
3
|
+
* Texture pool manager for WebGPU optimization
|
|
4
|
+
*
|
|
5
|
+
* リクエストサイズをPower-of-2に切り上げてバケット化。
|
|
6
|
+
* 同一バケット内で高いキャッシュヒット率を実現。
|
|
7
|
+
* LRUベースで未使用テクスチャを回収。
|
|
8
|
+
*/
|
|
9
|
+
export declare class TexturePool {
|
|
10
|
+
private device;
|
|
11
|
+
private buckets;
|
|
12
|
+
private currentFrame;
|
|
13
|
+
private totalCount;
|
|
14
|
+
/**
|
|
15
|
+
* @param {GPUDevice} device
|
|
16
|
+
* @constructor
|
|
17
|
+
*/
|
|
18
|
+
constructor(device: GPUDevice);
|
|
19
|
+
/**
|
|
20
|
+
* @description フレーム開始時に呼び出し
|
|
21
|
+
* @return {void}
|
|
22
|
+
*/
|
|
23
|
+
beginFrame(): void;
|
|
24
|
+
/**
|
|
25
|
+
* @description テクスチャを取得または作成
|
|
26
|
+
* @param {number} width - テクスチャの幅
|
|
27
|
+
* @param {number} height - テクスチャの高さ
|
|
28
|
+
* @param {GPUTextureFormat} format - テクスチャフォーマット
|
|
29
|
+
* @param {GPUTextureUsageFlags} usage - テクスチャ使用フラグ
|
|
30
|
+
* @return {GPUTexture}
|
|
31
|
+
*/
|
|
32
|
+
acquire(width: number, height: number, format?: GPUTextureFormat, usage?: GPUTextureUsageFlags): GPUTexture;
|
|
33
|
+
/**
|
|
34
|
+
* @description テクスチャをプールに返却
|
|
35
|
+
* @param {GPUTexture} texture - 返却するテクスチャ
|
|
36
|
+
* @return {void}
|
|
37
|
+
*/
|
|
38
|
+
release(texture: GPUTexture): void;
|
|
39
|
+
/**
|
|
40
|
+
* @description プール統計を取得
|
|
41
|
+
* @return {{ total: number, inUse: number, available: number }}
|
|
42
|
+
*/
|
|
43
|
+
getStats(): {
|
|
44
|
+
total: number;
|
|
45
|
+
inUse: number;
|
|
46
|
+
available: number;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* @description 解放
|
|
50
|
+
* @return {void}
|
|
51
|
+
*/
|
|
52
|
+
dispose(): void;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* @description テクスチャプールを初期化
|
|
56
|
+
* @param {GPUDevice} device
|
|
57
|
+
* @return {void}
|
|
58
|
+
*/
|
|
59
|
+
export declare const initTexturePool: (device: GPUDevice) => void;
|
|
60
|
+
/**
|
|
61
|
+
* @description テクスチャプールを取得
|
|
62
|
+
* @return {TexturePool | null}
|
|
63
|
+
*/
|
|
64
|
+
export declare const getTexturePool: () => TexturePool | null;
|
|
65
|
+
/**
|
|
66
|
+
* @description テクスチャプールをクリア
|
|
67
|
+
* @return {void}
|
|
68
|
+
*/
|
|
69
|
+
export declare const clearTexturePool: () => void;
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { execute as texturePoolAcquireUseCase } from "./TexturePool/usecase/TexturePoolAcquireUseCase";
|
|
2
|
+
import { execute as texturePoolReleaseService } from "./TexturePool/service/TexturePoolReleaseService";
|
|
3
|
+
import { execute as texturePoolCleanupService } from "./TexturePool/service/TexturePoolCleanupService";
|
|
4
|
+
/**
|
|
5
|
+
* @description プールの最大サイズ
|
|
6
|
+
*/
|
|
7
|
+
const MAX_POOL_SIZE = 32;
|
|
8
|
+
/**
|
|
9
|
+
* @description キャッシュのクリーンアップ閾値(フレーム数)
|
|
10
|
+
*/
|
|
11
|
+
const CACHE_CLEANUP_THRESHOLD = 180; // 3秒(60FPS想定)
|
|
12
|
+
/**
|
|
13
|
+
* @description テクスチャプールマネージャー(Power-of-2バケット版)
|
|
14
|
+
* Texture pool manager for WebGPU optimization
|
|
15
|
+
*
|
|
16
|
+
* リクエストサイズをPower-of-2に切り上げてバケット化。
|
|
17
|
+
* 同一バケット内で高いキャッシュヒット率を実現。
|
|
18
|
+
* LRUベースで未使用テクスチャを回収。
|
|
19
|
+
*/
|
|
20
|
+
export class TexturePool {
|
|
21
|
+
/**
|
|
22
|
+
* @param {GPUDevice} device
|
|
23
|
+
* @constructor
|
|
24
|
+
*/
|
|
25
|
+
constructor(device) {
|
|
26
|
+
Object.defineProperty(this, "device", {
|
|
27
|
+
enumerable: true,
|
|
28
|
+
configurable: true,
|
|
29
|
+
writable: true,
|
|
30
|
+
value: void 0
|
|
31
|
+
});
|
|
32
|
+
Object.defineProperty(this, "buckets", {
|
|
33
|
+
enumerable: true,
|
|
34
|
+
configurable: true,
|
|
35
|
+
writable: true,
|
|
36
|
+
value: void 0
|
|
37
|
+
});
|
|
38
|
+
Object.defineProperty(this, "currentFrame", {
|
|
39
|
+
enumerable: true,
|
|
40
|
+
configurable: true,
|
|
41
|
+
writable: true,
|
|
42
|
+
value: void 0
|
|
43
|
+
});
|
|
44
|
+
Object.defineProperty(this, "totalCount", {
|
|
45
|
+
enumerable: true,
|
|
46
|
+
configurable: true,
|
|
47
|
+
writable: true,
|
|
48
|
+
value: void 0
|
|
49
|
+
});
|
|
50
|
+
this.device = device;
|
|
51
|
+
this.buckets = new Map();
|
|
52
|
+
this.currentFrame = 0;
|
|
53
|
+
this.totalCount = [0];
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* @description フレーム開始時に呼び出し
|
|
57
|
+
* @return {void}
|
|
58
|
+
*/
|
|
59
|
+
beginFrame() {
|
|
60
|
+
this.currentFrame++;
|
|
61
|
+
// 定期的にプールをクリーンアップ(LRU回収)
|
|
62
|
+
if (this.currentFrame % 60 === 0) {
|
|
63
|
+
texturePoolCleanupService(this.buckets, this.currentFrame, CACHE_CLEANUP_THRESHOLD, this.totalCount);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* @description テクスチャを取得または作成
|
|
68
|
+
* @param {number} width - テクスチャの幅
|
|
69
|
+
* @param {number} height - テクスチャの高さ
|
|
70
|
+
* @param {GPUTextureFormat} format - テクスチャフォーマット
|
|
71
|
+
* @param {GPUTextureUsageFlags} usage - テクスチャ使用フラグ
|
|
72
|
+
* @return {GPUTexture}
|
|
73
|
+
*/
|
|
74
|
+
acquire(width, height, format = "rgba8unorm", usage = GPUTextureUsage.TEXTURE_BINDING |
|
|
75
|
+
GPUTextureUsage.COPY_DST |
|
|
76
|
+
GPUTextureUsage.RENDER_ATTACHMENT) {
|
|
77
|
+
return texturePoolAcquireUseCase(this.device, this.buckets, width, height, format, usage, this.currentFrame, MAX_POOL_SIZE, this.totalCount);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* @description テクスチャをプールに返却
|
|
81
|
+
* @param {GPUTexture} texture - 返却するテクスチャ
|
|
82
|
+
* @return {void}
|
|
83
|
+
*/
|
|
84
|
+
release(texture) {
|
|
85
|
+
texturePoolReleaseService(this.buckets, texture, this.currentFrame);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* @description プール統計を取得
|
|
89
|
+
* @return {{ total: number, inUse: number, available: number }}
|
|
90
|
+
*/
|
|
91
|
+
getStats() {
|
|
92
|
+
let inUse = 0;
|
|
93
|
+
let available = 0;
|
|
94
|
+
for (const bucket of this.buckets.values()) {
|
|
95
|
+
for (const entry of bucket) {
|
|
96
|
+
if (entry.inUse) {
|
|
97
|
+
inUse++;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
available++;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
"total": this.totalCount[0],
|
|
106
|
+
inUse,
|
|
107
|
+
available
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* @description 解放
|
|
112
|
+
* @return {void}
|
|
113
|
+
*/
|
|
114
|
+
dispose() {
|
|
115
|
+
for (const bucket of this.buckets.values()) {
|
|
116
|
+
for (const entry of bucket) {
|
|
117
|
+
entry.texture.destroy();
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
this.buckets.clear();
|
|
121
|
+
this.totalCount[0] = 0;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* @description グローバルテクスチャプールインスタンス
|
|
126
|
+
*/
|
|
127
|
+
let $texturePool = null;
|
|
128
|
+
/**
|
|
129
|
+
* @description テクスチャプールを初期化
|
|
130
|
+
* @param {GPUDevice} device
|
|
131
|
+
* @return {void}
|
|
132
|
+
*/
|
|
133
|
+
export const initTexturePool = (device) => {
|
|
134
|
+
$texturePool = new TexturePool(device);
|
|
135
|
+
};
|
|
136
|
+
/**
|
|
137
|
+
* @description テクスチャプールを取得
|
|
138
|
+
* @return {TexturePool | null}
|
|
139
|
+
*/
|
|
140
|
+
export const getTexturePool = () => {
|
|
141
|
+
return $texturePool;
|
|
142
|
+
};
|
|
143
|
+
/**
|
|
144
|
+
* @description テクスチャプールをクリア
|
|
145
|
+
* @return {void}
|
|
146
|
+
*/
|
|
147
|
+
export const clearTexturePool = () => {
|
|
148
|
+
if ($texturePool) {
|
|
149
|
+
$texturePool.dispose();
|
|
150
|
+
}
|
|
151
|
+
};
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description 描画のサンプリング数(MSAA)
|
|
3
|
+
* Number of samples for drawing (MSAA)
|
|
4
|
+
*
|
|
5
|
+
* @type {number}
|
|
6
|
+
* @default 4
|
|
7
|
+
* @protected
|
|
8
|
+
*
|
|
9
|
+
* @note WebGL版と同じくMSAA 4xをデフォルトで有効化
|
|
10
|
+
* 曲線のアンチエイリアス品質向上のため
|
|
11
|
+
*/
|
|
12
|
+
export declare let $samples: number;
|
|
13
|
+
/**
|
|
14
|
+
* @description 描画のサンプリング数を変更
|
|
15
|
+
* Change the number of samples for drawing
|
|
16
|
+
*
|
|
17
|
+
* @param {number} samples
|
|
18
|
+
* @return {void}
|
|
19
|
+
* @method
|
|
20
|
+
* @protected
|
|
21
|
+
*/
|
|
22
|
+
export declare const $setSamples: (samples: number) => void;
|
|
23
|
+
export declare class WebGPUUtil {
|
|
24
|
+
private static device;
|
|
25
|
+
private static devicePixelRatio;
|
|
26
|
+
private static renderMaxSize;
|
|
27
|
+
private static float32Array4Pool;
|
|
28
|
+
/**
|
|
29
|
+
* @description Set GPUDevice
|
|
30
|
+
* @param {GPUDevice} gpu_device
|
|
31
|
+
* @return {void}
|
|
32
|
+
*/
|
|
33
|
+
static setDevice(gpu_device: GPUDevice): void;
|
|
34
|
+
/**
|
|
35
|
+
* @description Get GPUDevice
|
|
36
|
+
* @return {GPUDevice}
|
|
37
|
+
*/
|
|
38
|
+
static getDevice(): GPUDevice;
|
|
39
|
+
/**
|
|
40
|
+
* @description Set device pixel ratio
|
|
41
|
+
* @param {number} ratio
|
|
42
|
+
* @return {void}
|
|
43
|
+
*/
|
|
44
|
+
static setDevicePixelRatio(ratio: number): void;
|
|
45
|
+
/**
|
|
46
|
+
* @description Get device pixel ratio
|
|
47
|
+
* @return {number}
|
|
48
|
+
*/
|
|
49
|
+
static getDevicePixelRatio(): number;
|
|
50
|
+
/**
|
|
51
|
+
* @description Set render max size
|
|
52
|
+
* @param {number} size
|
|
53
|
+
* @return {void}
|
|
54
|
+
*/
|
|
55
|
+
static setRenderMaxSize(size: number): void;
|
|
56
|
+
/**
|
|
57
|
+
* @description Get render max size (for atlas)
|
|
58
|
+
* @return {number}
|
|
59
|
+
*/
|
|
60
|
+
static getRenderMaxSize(): number;
|
|
61
|
+
/**
|
|
62
|
+
* @description Create Float32Array
|
|
63
|
+
* @param {number} length
|
|
64
|
+
* @return {Float32Array}
|
|
65
|
+
*/
|
|
66
|
+
static createFloat32Array(length: number): Float32Array;
|
|
67
|
+
/**
|
|
68
|
+
* @description Create generic array
|
|
69
|
+
* @return {Array}
|
|
70
|
+
*/
|
|
71
|
+
static createArray<T>(): T[];
|
|
72
|
+
/**
|
|
73
|
+
* @description Get Float32Array(4) from pool
|
|
74
|
+
* @return {Float32Array}
|
|
75
|
+
*/
|
|
76
|
+
static getFloat32Array4(): Float32Array;
|
|
77
|
+
/**
|
|
78
|
+
* @description Return Float32Array(4) to pool
|
|
79
|
+
* @param {Float32Array} array
|
|
80
|
+
* @return {void}
|
|
81
|
+
*/
|
|
82
|
+
static poolFloat32Array4(array: Float32Array): void;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* @description グローバルコンテキスト(WebGLUtilの$contextに相当)
|
|
86
|
+
*/
|
|
87
|
+
export declare let $context: any;
|
|
88
|
+
/**
|
|
89
|
+
* @description コンテキストを設定
|
|
90
|
+
* @param {any} context
|
|
91
|
+
*/
|
|
92
|
+
export declare const $setContext: (context: any) => void;
|
|
93
|
+
/**
|
|
94
|
+
* @description Float32Array(4) をプールから取得
|
|
95
|
+
* @return {Float32Array}
|
|
96
|
+
*/
|
|
97
|
+
export declare const $getFloat32Array4: () => Float32Array;
|
|
98
|
+
/**
|
|
99
|
+
* @description Float32Array(4) をプールに返却
|
|
100
|
+
* @param {Float32Array} array
|
|
101
|
+
*/
|
|
102
|
+
export declare const $poolFloat32Array4: (array: Float32Array) => void;
|