@next2d/webgpu 3.0.5 → 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.
- package/package.json +3 -3
- package/src/AtlasManager.d.ts +75 -6
- package/src/AtlasManager.js +106 -30
- package/src/AttachmentManager/service/AttachmentManagerCreateAttachmentObjectService.d.ts +2 -2
- package/src/AttachmentManager/service/AttachmentManagerCreateAttachmentObjectService.js +3 -3
- package/src/AttachmentManager/service/AttachmentManagerCreateColorBufferService.d.ts +4 -4
- package/src/AttachmentManager/service/AttachmentManagerCreateColorBufferService.js +4 -4
- package/src/AttachmentManager/service/AttachmentManagerCreateStencilBufferService.d.ts +5 -5
- package/src/AttachmentManager/service/AttachmentManagerCreateStencilBufferService.js +6 -6
- package/src/AttachmentManager/service/AttachmentManagerCreateTextureObjectService.d.ts +6 -6
- package/src/AttachmentManager/service/AttachmentManagerCreateTextureObjectService.js +7 -7
- package/src/AttachmentManager/service/AttachmentManagerGetColorBufferService.d.ts +6 -6
- package/src/AttachmentManager/service/AttachmentManagerGetColorBufferService.js +9 -9
- package/src/AttachmentManager/service/AttachmentManagerGetStencilBufferService.d.ts +6 -6
- package/src/AttachmentManager/service/AttachmentManagerGetStencilBufferService.js +10 -10
- package/src/AttachmentManager/service/AttachmentManagerGetTextureService.d.ts +7 -7
- package/src/AttachmentManager/service/AttachmentManagerGetTextureService.js +10 -10
- package/src/AttachmentManager/service/AttachmentManagerReleaseTextureService.d.ts +3 -3
- package/src/AttachmentManager/service/AttachmentManagerReleaseTextureService.js +7 -7
- package/src/AttachmentManager/usecase/AttachmentManagerGetAttachmentObjectUseCase.d.ts +10 -10
- package/src/AttachmentManager/usecase/AttachmentManagerGetAttachmentObjectUseCase.js +16 -16
- package/src/AttachmentManager/usecase/AttachmentManagerReleaseAttachmentUseCase.d.ts +6 -6
- package/src/AttachmentManager/usecase/AttachmentManagerReleaseAttachmentUseCase.js +10 -10
- package/src/AttachmentManager.d.ts +28 -6
- package/src/AttachmentManager.js +28 -23
- package/src/BezierConverter/BezierConverter.d.ts +9 -3
- package/src/BezierConverter/BezierConverter.js +5 -3
- package/src/BezierConverter/usecase/BezierConverterAdaptiveCubicToQuadUseCase.d.ts +2 -13
- package/src/BezierConverter/usecase/BezierConverterAdaptiveCubicToQuadUseCase.js +13 -25
- package/src/Blend/BlendInstancedManager.d.ts +19 -15
- package/src/Blend/BlendInstancedManager.js +35 -22
- package/src/Blend/usecase/BlendApplyComplexBlendUseCase.d.ts +9 -2
- package/src/Blend/usecase/BlendApplyComplexBlendUseCase.js +28 -17
- package/src/Blend.d.ts +20 -2
- package/src/Blend.js +20 -4
- package/src/BufferManager/service/BufferManagerReleaseUniformBufferService.js +2 -2
- package/src/BufferManager/service/BufferManagerReleaseVertexBufferService.js +2 -2
- package/src/BufferManager/service/BufferManagerUpdateIndirectBufferService.d.ts +1 -0
- package/src/BufferManager/service/BufferManagerUpdateIndirectBufferService.js +1 -0
- package/src/BufferManager/usecase/BufferManagerCleanupStorageBuffersUseCase.d.ts +1 -0
- package/src/BufferManager/usecase/BufferManagerCleanupStorageBuffersUseCase.js +1 -0
- package/src/BufferManager.d.ts +108 -43
- package/src/BufferManager.js +113 -153
- package/src/Context/service/ContextComputeBitmapMatrixService.d.ts +7 -0
- package/src/Context/service/ContextComputeBitmapMatrixService.js +7 -0
- package/src/Context/service/ContextComputeGradientMatrixService.d.ts +9 -1
- package/src/Context/service/ContextComputeGradientMatrixService.js +15 -7
- package/src/Context/service/ContextFillSimpleService.d.ts +14 -0
- package/src/Context/service/ContextFillSimpleService.js +14 -0
- package/src/Context/service/ContextFillWithStencilMainService.d.ts +11 -0
- package/src/Context/service/ContextFillWithStencilMainService.js +11 -0
- package/src/Context/service/ContextFillWithStencilService.d.ts +11 -0
- package/src/Context/service/ContextFillWithStencilService.js +11 -0
- package/src/Context/usecase/ContextApplyFilterUseCase.d.ts +17 -0
- package/src/Context/usecase/ContextApplyFilterUseCase.js +201 -62
- package/src/Context/usecase/ContextBitmapFillUseCase.d.ts +23 -0
- package/src/Context/usecase/ContextBitmapFillUseCase.js +47 -0
- package/src/Context/usecase/ContextBitmapStrokeUseCase.d.ts +23 -0
- package/src/Context/usecase/ContextBitmapStrokeUseCase.js +35 -0
- package/src/Context/usecase/ContextClipUseCase.d.ts +15 -0
- package/src/Context/usecase/ContextClipUseCase.js +19 -0
- package/src/Context/usecase/ContextContainerEndLayerUseCase.d.ts +21 -1
- package/src/Context/usecase/ContextContainerEndLayerUseCase.js +195 -104
- package/src/Context/usecase/ContextDrawArraysInstancedUseCase.d.ts +13 -0
- package/src/Context/usecase/ContextDrawArraysInstancedUseCase.js +41 -20
- package/src/Context/usecase/ContextDrawIndirectUseCase.d.ts +16 -1
- package/src/Context/usecase/ContextDrawIndirectUseCase.js +53 -30
- package/src/Context/usecase/ContextGradientFillUseCase.d.ts +23 -0
- package/src/Context/usecase/ContextGradientFillUseCase.js +47 -0
- package/src/Context/usecase/ContextGradientStrokeUseCase.d.ts +23 -0
- package/src/Context/usecase/ContextGradientStrokeUseCase.js +35 -0
- package/src/Context/usecase/ContextProcessComplexBlendQueueUseCase.d.ts +13 -1
- package/src/Context/usecase/ContextProcessComplexBlendQueueUseCase.js +126 -60
- package/src/Context.d.ts +445 -63
- package/src/Context.js +566 -144
- package/src/FillTexturePool.d.ts +39 -0
- package/src/FillTexturePool.js +70 -7
- package/src/Filter/BevelFilter/FilterApplyBevelFilterUseCase.d.ts +21 -2
- package/src/Filter/BevelFilter/FilterApplyBevelFilterUseCase.js +33 -26
- package/src/Filter/BlurFilter/FilterApplyBlurFilterUseCase.d.ts +5 -5
- package/src/Filter/BlurFilter/FilterApplyBlurFilterUseCase.js +81 -64
- package/src/Filter/BlurFilterUseCase.d.ts +15 -11
- package/src/Filter/BlurFilterUseCase.js +22 -17
- package/src/Filter/ColorMatrixFilter/FilterApplyColorMatrixFilterUseCase.d.ts +2 -2
- package/src/Filter/ColorMatrixFilter/FilterApplyColorMatrixFilterUseCase.js +5 -5
- package/src/Filter/ConvolutionFilter/FilterApplyConvolutionFilterUseCase.d.ts +15 -1
- package/src/Filter/ConvolutionFilter/FilterApplyConvolutionFilterUseCase.js +23 -17
- package/src/Filter/DisplacementMapFilter/FilterApplyDisplacementMapFilterUseCase.d.ts +20 -1
- package/src/Filter/DisplacementMapFilter/FilterApplyDisplacementMapFilterUseCase.js +37 -26
- package/src/Filter/DropShadowFilter/FilterApplyDropShadowFilterUseCase.d.ts +7 -7
- package/src/Filter/DropShadowFilter/FilterApplyDropShadowFilterUseCase.js +19 -31
- package/src/Filter/FilterGradientLUTCache.js +2 -0
- package/src/Filter/FilterUtil.d.ts +23 -0
- package/src/Filter/FilterUtil.js +33 -0
- package/src/Filter/GlowFilter/FilterApplyGlowFilterUseCase.d.ts +5 -5
- package/src/Filter/GlowFilter/FilterApplyGlowFilterUseCase.js +12 -21
- package/src/Filter/GradientBevelFilter/FilterApplyGradientBevelFilterUseCase.d.ts +6 -6
- package/src/Filter/GradientBevelFilter/FilterApplyGradientBevelFilterUseCase.js +16 -19
- package/src/Filter/GradientGlowFilter/FilterApplyGradientGlowFilterUseCase.d.ts +5 -5
- package/src/Filter/GradientGlowFilter/FilterApplyGradientGlowFilterUseCase.js +13 -16
- package/src/FrameBufferManager/service/FrameBufferManagerCreateRenderPassDescriptorService.d.ts +13 -1
- package/src/FrameBufferManager/service/FrameBufferManagerCreateRenderPassDescriptorService.js +30 -3
- package/src/FrameBufferManager/service/FrameBufferManagerCreateStencilRenderPassDescriptorService.d.ts +11 -1
- package/src/FrameBufferManager/service/FrameBufferManagerCreateStencilRenderPassDescriptorService.js +36 -6
- package/src/FrameBufferManager/usecase/FrameBufferManagerCreateAttachmentUseCase.d.ts +10 -10
- package/src/FrameBufferManager/usecase/FrameBufferManagerCreateAttachmentUseCase.js +15 -15
- package/src/FrameBufferManager/usecase/FrameBufferManagerReleaseTemporaryAttachmentUseCase.d.ts +4 -4
- package/src/FrameBufferManager/usecase/FrameBufferManagerReleaseTemporaryAttachmentUseCase.js +5 -5
- package/src/FrameBufferManager.d.ts +95 -3
- package/src/FrameBufferManager.js +97 -8
- package/src/Gradient/GradientLUTCache.d.ts +36 -4
- package/src/Gradient/GradientLUTCache.js +61 -5
- package/src/Gradient/GradientLUTGenerator.d.ts +26 -14
- package/src/Gradient/GradientLUTGenerator.js +74 -43
- package/src/Mask/service/MaskUnionMaskService.d.ts +16 -1
- package/src/Mask/service/MaskUnionMaskService.js +45 -31
- package/src/Mask.d.ts +57 -3
- package/src/Mask.js +75 -11
- package/src/Mesh/service/MeshFillGenerateService.d.ts +4 -4
- package/src/Mesh/service/MeshFillGenerateService.js +4 -4
- package/src/Mesh/service/MeshStrokeFillGenerateService.d.ts +4 -4
- package/src/Mesh/service/MeshStrokeFillGenerateService.js +4 -4
- package/src/Mesh/usecase/MeshBitmapStrokeGenerateUseCase.d.ts +3 -3
- package/src/Mesh/usecase/MeshBitmapStrokeGenerateUseCase.js +10 -3
- package/src/Mesh/usecase/MeshFillGenerateUseCase.d.ts +2 -2
- package/src/Mesh/usecase/MeshFillGenerateUseCase.js +9 -2
- package/src/Mesh/usecase/MeshGradientStrokeGenerateUseCase.d.ts +3 -3
- package/src/Mesh/usecase/MeshGradientStrokeGenerateUseCase.js +10 -3
- package/src/Mesh/usecase/MeshStrokeGenerateUseCase.d.ts +8 -14
- package/src/Mesh/usecase/MeshStrokeGenerateUseCase.js +214 -129
- package/src/PathCommand.d.ts +24 -23
- package/src/PathCommand.js +25 -79
- package/src/Shader/PipelineManager.d.ts +223 -6
- package/src/Shader/PipelineManager.js +308 -66
- package/src/Shader/ShaderInstancedManager.d.ts +17 -0
- package/src/Shader/ShaderInstancedManager.js +17 -0
- package/src/Shader/ShaderSource.d.ts +317 -12
- package/src/Shader/ShaderSource.js +328 -39
- package/src/Shader/wgsl/common/SharedWgsl.d.ts +28 -1
- package/src/Shader/wgsl/common/SharedWgsl.js +28 -9
- package/src/Shader/wgsl/fragment/BasicFragment.d.ts +14 -0
- package/src/Shader/wgsl/fragment/BasicFragment.js +14 -0
- package/src/Shader/wgsl/fragment/BitmapFragment.d.ts +7 -0
- package/src/Shader/wgsl/fragment/BitmapFragment.js +7 -0
- package/src/Shader/wgsl/fragment/EffectFragment.d.ts +42 -0
- package/src/Shader/wgsl/fragment/EffectFragment.js +42 -0
- package/src/Shader/wgsl/fragment/FillFragment.d.ts +7 -0
- package/src/Shader/wgsl/fragment/FillFragment.js +7 -0
- package/src/Shader/wgsl/fragment/FilterFragment.d.ts +70 -0
- package/src/Shader/wgsl/fragment/FilterFragment.js +70 -0
- package/src/Shader/wgsl/fragment/GradientFragment.d.ts +21 -0
- package/src/Shader/wgsl/fragment/GradientFragment.js +43 -8
- package/src/Shader/wgsl/fragment/InstancedFragment.d.ts +7 -0
- package/src/Shader/wgsl/fragment/InstancedFragment.js +7 -0
- package/src/Shader/wgsl/fragment/MaskFragment.d.ts +7 -0
- package/src/Shader/wgsl/fragment/MaskFragment.js +7 -0
- package/src/Shader/wgsl/fragment/StencilFragment.d.ts +14 -0
- package/src/Shader/wgsl/fragment/StencilFragment.js +14 -0
- package/src/Shader/wgsl/vertex/BasicVertex.d.ts +7 -0
- package/src/Shader/wgsl/vertex/BasicVertex.js +7 -0
- package/src/Shader/wgsl/vertex/BitmapVertex.d.ts +7 -0
- package/src/Shader/wgsl/vertex/BitmapVertex.js +7 -0
- package/src/Shader/wgsl/vertex/FillVertex.d.ts +7 -0
- package/src/Shader/wgsl/vertex/FillVertex.js +7 -0
- package/src/Shader/wgsl/vertex/FilterVertex.d.ts +77 -1
- package/src/Shader/wgsl/vertex/FilterVertex.js +135 -42
- package/src/Shader/wgsl/vertex/GradientVertex.d.ts +7 -0
- package/src/Shader/wgsl/vertex/GradientVertex.js +7 -0
- package/src/Shader/wgsl/vertex/InstancedVertex.d.ts +7 -0
- package/src/Shader/wgsl/vertex/InstancedVertex.js +7 -0
- package/src/Shader/wgsl/vertex/MaskVertex.d.ts +7 -0
- package/src/Shader/wgsl/vertex/MaskVertex.js +7 -0
- package/src/Shader/wgsl/vertex/StencilVertex.d.ts +14 -0
- package/src/Shader/wgsl/vertex/StencilVertex.js +14 -0
- package/src/TextureManager/service/TextureManagerInitializeSamplersService.d.ts +2 -2
- package/src/TextureManager/service/TextureManagerInitializeSamplersService.js +2 -2
- package/src/TextureManager.d.ts +36 -5
- package/src/TextureManager.js +36 -24
- package/src/TexturePool/service/TexturePoolCleanupService.d.ts +4 -4
- package/src/TexturePool/service/TexturePoolCleanupService.js +6 -6
- package/src/TexturePool/service/TexturePoolReleaseService.d.ts +4 -4
- package/src/TexturePool/service/TexturePoolReleaseService.js +5 -5
- package/src/TexturePool/usecase/TexturePoolAcquireUseCase.d.ts +10 -10
- package/src/TexturePool/usecase/TexturePoolAcquireUseCase.js +19 -18
- package/src/TexturePool.d.ts +36 -35
- package/src/TexturePool.js +44 -65
- package/src/WebGPUUtil.d.ts +79 -34
- package/src/WebGPUUtil.js +79 -36
- package/src/interface/IAttachmentObject.d.ts +36 -0
- package/src/interface/IBlendMode.d.ts +7 -0
- package/src/interface/IBlendState.d.ts +8 -0
- package/src/interface/IBounds.d.ts +23 -0
- package/src/interface/IColorBufferObject.d.ts +28 -0
- package/src/interface/IComplexBlendItem.d.ts +48 -0
- package/src/interface/IFilterConfig.d.ts +28 -2
- package/src/interface/IGradientStop.d.ts +20 -0
- package/src/interface/ILocalFilterConfig.d.ts +32 -2
- package/src/interface/IMeshResult.d.ts +8 -0
- package/src/interface/IPoint.d.ts +12 -0
- package/src/interface/IPooledTexture.d.ts +24 -0
- package/src/interface/IQuadraticSegment.d.ts +8 -0
- package/src/interface/IStencilBufferObject.d.ts +28 -0
- package/src/interface/IStorageBufferConfig.d.ts +8 -1
- package/src/interface/ITextureObject.d.ts +28 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateRenderPassDescriptorService.d.ts +0 -5
- package/src/AttachmentManager/service/AttachmentManagerCreateRenderPassDescriptorService.js +0 -42
- package/src/Blend/service/BlendAddService.d.ts +0 -1
- package/src/Blend/service/BlendAddService.js +0 -8
- package/src/Blend/service/BlendAlphaService.d.ts +0 -1
- package/src/Blend/service/BlendAlphaService.js +0 -8
- package/src/Blend/service/BlendEraseService.d.ts +0 -1
- package/src/Blend/service/BlendEraseService.js +0 -8
- package/src/Blend/service/BlendGetStateService.d.ts +0 -12
- package/src/Blend/service/BlendGetStateService.js +0 -13
- package/src/Blend/service/BlendOneZeroService.d.ts +0 -1
- package/src/Blend/service/BlendOneZeroService.js +0 -8
- package/src/Blend/service/BlendResetService.d.ts +0 -1
- package/src/Blend/service/BlendResetService.js +0 -8
- package/src/Blend/service/BlendScreenService.d.ts +0 -1
- package/src/Blend/service/BlendScreenService.js +0 -8
- package/src/Blend/service/BlendSetModeService.d.ts +0 -2
- package/src/Blend/service/BlendSetModeService.js +0 -4
- package/src/Blend/usecase/BlendOperationUseCase.d.ts +0 -11
- package/src/Blend/usecase/BlendOperationUseCase.js +0 -31
- package/src/BufferManager/usecase/BufferManagerReleaseStorageBufferUseCase.d.ts +0 -9
- package/src/BufferManager/usecase/BufferManagerReleaseStorageBufferUseCase.js +0 -15
- package/src/Compute/ComputePipelineManager.d.ts +0 -61
- package/src/Compute/ComputePipelineManager.js +0 -313
- package/src/Compute/service/ComputeExecuteBlurService.d.ts +0 -21
- package/src/Compute/service/ComputeExecuteBlurService.js +0 -81
- package/src/Filter/BevelFilterShader.d.ts +0 -2
- package/src/Filter/BevelFilterShader.js +0 -107
- package/src/Filter/BitmapFilterShader.d.ts +0 -2
- package/src/Filter/BitmapFilterShader.js +0 -207
- package/src/Filter/BlurFilter/service/BlurFilterComputeShaderService.d.ts +0 -40
- package/src/Filter/BlurFilter/service/BlurFilterComputeShaderService.js +0 -51
- package/src/Filter/BlurFilter/usecase/FilterApplyBlurComputeUseCase.d.ts +0 -25
- package/src/Filter/BlurFilter/usecase/FilterApplyBlurComputeUseCase.js +0 -180
- package/src/Filter/BlurFilterShader.d.ts +0 -5
- package/src/Filter/BlurFilterShader.js +0 -109
- package/src/Filter/ColorMatrixFilterShader.d.ts +0 -4
- package/src/Filter/ColorMatrixFilterShader.js +0 -51
- package/src/Filter/ConvolutionFilterShader.d.ts +0 -2
- package/src/Filter/ConvolutionFilterShader.js +0 -115
- package/src/Filter/DisplacementMapFilterShader.d.ts +0 -2
- package/src/Filter/DisplacementMapFilterShader.js +0 -114
- package/src/Filter/DropShadowFilterShader.d.ts +0 -4
- package/src/Filter/DropShadowFilterShader.js +0 -93
- package/src/Filter/GlowFilterShader.d.ts +0 -4
- package/src/Filter/GlowFilterShader.js +0 -66
- package/src/FrameBufferManager/service/FrameBufferManagerFlushPendingReleasesService.d.ts +0 -11
- package/src/FrameBufferManager/service/FrameBufferManagerFlushPendingReleasesService.js +0 -19
- package/src/Mask/usecase/MaskBindUseCase.d.ts +0 -10
- package/src/Mask/usecase/MaskBindUseCase.js +0 -20
- package/src/Mesh/service/MeshLerpService.d.ts +0 -13
- package/src/Mesh/service/MeshLerpService.js +0 -17
- package/src/Mesh/usecase/MeshSplitQuadraticBezierUseCase.d.ts +0 -14
- package/src/Mesh/usecase/MeshSplitQuadraticBezierUseCase.js +0 -28
- package/src/Mesh/usecase/MeshStrokeFillGenerateUseCase.d.ts +0 -18
- package/src/Mesh/usecase/MeshStrokeFillGenerateUseCase.js +0 -54
- package/src/SamplerCache/service/SamplerCacheCreateCommonSamplersService.d.ts +0 -11
- package/src/SamplerCache/service/SamplerCacheCreateCommonSamplersService.js +0 -35
- package/src/SamplerCache/service/SamplerCacheGenerateKeyService.d.ts +0 -13
- package/src/SamplerCache/service/SamplerCacheGenerateKeyService.js +0 -15
- package/src/SamplerCache/service/SamplerCacheGetOrCreateService.d.ts +0 -15
- package/src/SamplerCache/service/SamplerCacheGetOrCreateService.js +0 -30
- package/src/SamplerCache.d.ts +0 -18
- package/src/SamplerCache.js +0 -61
- package/src/Shader/BlendModeShader.d.ts +0 -51
- package/src/Shader/BlendModeShader.js +0 -71
- package/src/Shader/GradientLUTGenerator/service/GradientLUTCalculateResolutionService.d.ts +0 -12
- package/src/Shader/GradientLUTGenerator/service/GradientLUTCalculateResolutionService.js +0 -28
- package/src/Shader/GradientLUTGenerator/service/GradientLUTGeneratePixelsService.d.ts +0 -13
- package/src/Shader/GradientLUTGenerator/service/GradientLUTGeneratePixelsService.js +0 -61
- package/src/Shader/GradientLUTGenerator/service/GradientLUTInterpolateColorService.d.ts +0 -19
- package/src/Shader/GradientLUTGenerator/service/GradientLUTInterpolateColorService.js +0 -37
- package/src/Shader/GradientLUTGenerator/service/GradientLUTParseStopsService.d.ts +0 -11
- package/src/Shader/GradientLUTGenerator/service/GradientLUTParseStopsService.js +0 -24
- package/src/Shader/GradientLUTGenerator/usecase/GradientLUTGenerateDataUseCase.d.ts +0 -14
- package/src/Shader/GradientLUTGenerator/usecase/GradientLUTGenerateDataUseCase.js +0 -24
- package/src/Shader/wgsl/fragment/BlendFragment.d.ts +0 -8
- package/src/Shader/wgsl/fragment/BlendFragment.js +0 -63
- package/src/TextureManager/usecase/TextureManagerCreateTextureFromImageBitmapUseCase.d.ts +0 -13
- package/src/TextureManager/usecase/TextureManagerCreateTextureFromImageBitmapUseCase.js +0 -30
- package/src/TextureManager/usecase/TextureManagerCreateTextureFromPixelsUseCase.d.ts +0 -15
- package/src/TextureManager/usecase/TextureManagerCreateTextureFromPixelsUseCase.js +0 -26
- package/src/TexturePool/service/TexturePoolEvictOldestService.d.ts +0 -11
- package/src/TexturePool/service/TexturePoolEvictOldestService.js +0 -24
- package/src/interface/ICachedBindGroup.d.ts +0 -8
- package/src/interface/ICachedBindGroup.js +0 -1
- package/src/interface/IGradientLUTData.d.ts +0 -8
- package/src/interface/IGradientLUTData.js +0 -1
- package/src/interface/IPooledBuffer.d.ts +0 -8
- package/src/interface/IPooledBuffer.js +0 -1
- package/src/interface/IRectangleInfo.d.ts +0 -13
- package/src/interface/IRectangleInfo.js +0 -1
package/src/FrameBufferManager/usecase/FrameBufferManagerReleaseTemporaryAttachmentUseCase.js
CHANGED
|
@@ -3,20 +3,20 @@
|
|
|
3
3
|
* Releases a temporary attachment after filter processing
|
|
4
4
|
* テクスチャは即座に破棄せず、フレーム終了時に遅延解放します
|
|
5
5
|
*
|
|
6
|
-
* @param {Map<string, IAttachmentObject>} attachments
|
|
7
|
-
* @param {IAttachmentObject[]}
|
|
8
|
-
* @param {IAttachmentObject} attachment
|
|
6
|
+
* @param {Map<string, IAttachmentObject>} attachments - アタッチメント管理マップ
|
|
7
|
+
* @param {IAttachmentObject[]} pending_releases - 遅延解放キュー
|
|
8
|
+
* @param {IAttachmentObject} attachment - 解放するアタッチメント
|
|
9
9
|
* @return {void}
|
|
10
10
|
* @method
|
|
11
11
|
* @protected
|
|
12
12
|
*/
|
|
13
|
-
export const execute = (attachments,
|
|
13
|
+
export const execute = (attachments, pending_releases, attachment) => {
|
|
14
14
|
// 名前を検索して削除(Map から削除するが、テクスチャは破棄しない)
|
|
15
15
|
for (const [name, att] of attachments.entries()) {
|
|
16
16
|
if (att.id === attachment.id) {
|
|
17
17
|
attachments.delete(name);
|
|
18
18
|
// フレーム終了時に遅延解放するためキューに追加
|
|
19
|
-
|
|
19
|
+
pending_releases.push(att);
|
|
20
20
|
break;
|
|
21
21
|
}
|
|
22
22
|
}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import type { IAttachmentObject } from "./interface/IAttachmentObject";
|
|
2
|
+
/**
|
|
3
|
+
* @description フレームバッファとアタッチメントの管理クラス
|
|
4
|
+
* Manager class for frame buffers and attachments
|
|
5
|
+
*/
|
|
2
6
|
export declare class FrameBufferManager {
|
|
3
7
|
private device;
|
|
4
8
|
private format;
|
|
@@ -7,18 +11,106 @@ export declare class FrameBufferManager {
|
|
|
7
11
|
private idCounter;
|
|
8
12
|
private texturePool;
|
|
9
13
|
private pendingReleases;
|
|
14
|
+
/**
|
|
15
|
+
* @description FrameBufferManagerのコンストラクタ
|
|
16
|
+
* Constructor for FrameBufferManager
|
|
17
|
+
* @param {GPUDevice} device - WebGPUデバイス / WebGPU device
|
|
18
|
+
* @param {GPUTextureFormat} format - テクスチャフォーマット / Texture format
|
|
19
|
+
*/
|
|
10
20
|
constructor(device: GPUDevice, format: GPUTextureFormat);
|
|
21
|
+
/**
|
|
22
|
+
* @description フレームの開始処理を行う
|
|
23
|
+
* Begin a new frame
|
|
24
|
+
* @return {void}
|
|
25
|
+
*/
|
|
11
26
|
beginFrame(): void;
|
|
27
|
+
/**
|
|
28
|
+
* @description 新しいアタッチメントを作成する
|
|
29
|
+
* Create a new attachment
|
|
30
|
+
* @param {string} name - アタッチメント名 / Attachment name
|
|
31
|
+
* @param {number} width - テクスチャの幅 / Texture width
|
|
32
|
+
* @param {number} height - テクスチャの高さ / Texture height
|
|
33
|
+
* @param {boolean} [msaa=false] - MSAAを有効にするか / Whether to enable MSAA
|
|
34
|
+
* @param {boolean} [mask=false] - マスクを有効にするか / Whether to enable mask
|
|
35
|
+
* @return {IAttachmentObject}
|
|
36
|
+
*/
|
|
12
37
|
createAttachment(name: string, width: number, height: number, msaa?: boolean, mask?: boolean): IAttachmentObject;
|
|
38
|
+
/**
|
|
39
|
+
* @description 名前でアタッチメントを取得する
|
|
40
|
+
* Get an attachment by name
|
|
41
|
+
* @param {string} name - アタッチメント名 / Attachment name
|
|
42
|
+
* @return {IAttachmentObject | undefined}
|
|
43
|
+
*/
|
|
13
44
|
getAttachment(name: string): IAttachmentObject | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* @description 現在のアタッチメントを設定する
|
|
47
|
+
* Set the current attachment
|
|
48
|
+
* @param {IAttachmentObject | null} attachment - 設定するアタッチメント / Attachment to set
|
|
49
|
+
* @return {void}
|
|
50
|
+
*/
|
|
14
51
|
setCurrentAttachment(attachment: IAttachmentObject | null): void;
|
|
52
|
+
/**
|
|
53
|
+
* @description 現在のアタッチメントを取得する
|
|
54
|
+
* Get the current attachment
|
|
55
|
+
* @return {IAttachmentObject | null}
|
|
56
|
+
*/
|
|
15
57
|
getCurrentAttachment(): IAttachmentObject | null;
|
|
16
|
-
|
|
17
|
-
|
|
58
|
+
/**
|
|
59
|
+
* @description レンダーパスディスクリプタを作成する
|
|
60
|
+
* Create a render pass descriptor
|
|
61
|
+
* @param {GPUTextureView} view - カラーテクスチャビュー / Color texture view
|
|
62
|
+
* @param {number} [r=0] - クリアカラーR値 / Clear color R value
|
|
63
|
+
* @param {number} [g=0] - クリアカラーG値 / Clear color G value
|
|
64
|
+
* @param {number} [b=0] - クリアカラーB値 / Clear color B value
|
|
65
|
+
* @param {number} [a=0] - クリアカラーA値 / Clear color A value
|
|
66
|
+
* @param {GPULoadOp} [load_op="clear"] - ロードオペレーション / Load operation
|
|
67
|
+
* @param {GPUTextureView|null} [resolve_target=null] - MSAAリゾルブターゲット / MSAA resolve target
|
|
68
|
+
* @return {GPURenderPassDescriptor}
|
|
69
|
+
*/
|
|
70
|
+
createRenderPassDescriptor(view: GPUTextureView, r?: number, g?: number, b?: number, a?: number, load_op?: GPULoadOp, resolve_target?: GPUTextureView | null): GPURenderPassDescriptor;
|
|
71
|
+
/**
|
|
72
|
+
* @description ステンシル付きレンダーパスディスクリプタを作成する
|
|
73
|
+
* Create a render pass descriptor with stencil
|
|
74
|
+
* @param {GPUTextureView} color_view - カラーテクスチャビュー / Color texture view
|
|
75
|
+
* @param {GPUTextureView} stencil_view - ステンシルテクスチャビュー / Stencil texture view
|
|
76
|
+
* @param {GPULoadOp} [color_load_op="load"] - カラーロードオペレーション / Color load operation
|
|
77
|
+
* @param {GPULoadOp} [stencil_load_op="clear"] - ステンシルロードオペレーション / Stencil load operation
|
|
78
|
+
* @param {GPUTextureView|null} [resolve_target=null] - MSAAリゾルブターゲット / MSAA resolve target
|
|
79
|
+
* @return {GPURenderPassDescriptor}
|
|
80
|
+
*/
|
|
81
|
+
createStencilRenderPassDescriptor(color_view: GPUTextureView, stencil_view: GPUTextureView, color_load_op?: GPULoadOp, stencil_load_op?: GPULoadOp, resolve_target?: GPUTextureView | null): GPURenderPassDescriptor;
|
|
82
|
+
/**
|
|
83
|
+
* @description アタッチメントを破棄する
|
|
84
|
+
* Destroy an attachment by name
|
|
85
|
+
* @param {string} name - アタッチメント名 / Attachment name
|
|
86
|
+
* @return {void}
|
|
87
|
+
*/
|
|
18
88
|
destroyAttachment(name: string): void;
|
|
19
|
-
|
|
89
|
+
/**
|
|
90
|
+
* @description 一時的なアタッチメントを作成する
|
|
91
|
+
* Create a temporary attachment
|
|
92
|
+
* @param {number} width - テクスチャの幅 / Texture width
|
|
93
|
+
* @param {number} height - テクスチャの高さ / Texture height
|
|
94
|
+
* @return {IAttachmentObject}
|
|
95
|
+
*/
|
|
20
96
|
createTemporaryAttachment(width: number, height: number): IAttachmentObject;
|
|
97
|
+
/**
|
|
98
|
+
* @description 一時アタッチメントをリリースキューに追加する
|
|
99
|
+
* Add a temporary attachment to the release queue
|
|
100
|
+
* @param {IAttachmentObject} attachment - リリースするアタッチメント / Attachment to release
|
|
101
|
+
* @return {void}
|
|
102
|
+
*/
|
|
21
103
|
releaseTemporaryAttachment(attachment: IAttachmentObject): void;
|
|
104
|
+
/**
|
|
105
|
+
* @description 保留中のリリースを実行する
|
|
106
|
+
* Flush all pending releases
|
|
107
|
+
* @return {void}
|
|
108
|
+
*/
|
|
22
109
|
flushPendingReleases(): void;
|
|
110
|
+
/**
|
|
111
|
+
* @description 全リソースを破棄する
|
|
112
|
+
* Dispose all resources
|
|
113
|
+
* @return {void}
|
|
114
|
+
*/
|
|
23
115
|
dispose(): void;
|
|
24
116
|
}
|
|
@@ -3,7 +3,17 @@ import { execute as frameBufferManagerReleaseTemporaryAttachmentUseCase } from "
|
|
|
3
3
|
import { execute as frameBufferManagerCreateRenderPassDescriptorService } from "./FrameBufferManager/service/FrameBufferManagerCreateRenderPassDescriptorService";
|
|
4
4
|
import { execute as frameBufferManagerCreateStencilRenderPassDescriptorService } from "./FrameBufferManager/service/FrameBufferManagerCreateStencilRenderPassDescriptorService";
|
|
5
5
|
import { TexturePool } from "./TexturePool";
|
|
6
|
+
/**
|
|
7
|
+
* @description フレームバッファとアタッチメントの管理クラス
|
|
8
|
+
* Manager class for frame buffers and attachments
|
|
9
|
+
*/
|
|
6
10
|
export class FrameBufferManager {
|
|
11
|
+
/**
|
|
12
|
+
* @description FrameBufferManagerのコンストラクタ
|
|
13
|
+
* Constructor for FrameBufferManager
|
|
14
|
+
* @param {GPUDevice} device - WebGPUデバイス / WebGPU device
|
|
15
|
+
* @param {GPUTextureFormat} format - テクスチャフォーマット / Texture format
|
|
16
|
+
*/
|
|
7
17
|
constructor(device, format) {
|
|
8
18
|
Object.defineProperty(this, "device", {
|
|
9
19
|
enumerable: true,
|
|
@@ -54,27 +64,87 @@ export class FrameBufferManager {
|
|
|
54
64
|
this.idCounter = { "nextId": 1, "textureId": 1, "stencilId": 1 };
|
|
55
65
|
this.texturePool = new TexturePool(device);
|
|
56
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* @description フレームの開始処理を行う
|
|
69
|
+
* Begin a new frame
|
|
70
|
+
* @return {void}
|
|
71
|
+
*/
|
|
57
72
|
beginFrame() {
|
|
58
73
|
this.texturePool.beginFrame();
|
|
59
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* @description 新しいアタッチメントを作成する
|
|
77
|
+
* Create a new attachment
|
|
78
|
+
* @param {string} name - アタッチメント名 / Attachment name
|
|
79
|
+
* @param {number} width - テクスチャの幅 / Texture width
|
|
80
|
+
* @param {number} height - テクスチャの高さ / Texture height
|
|
81
|
+
* @param {boolean} [msaa=false] - MSAAを有効にするか / Whether to enable MSAA
|
|
82
|
+
* @param {boolean} [mask=false] - マスクを有効にするか / Whether to enable mask
|
|
83
|
+
* @return {IAttachmentObject}
|
|
84
|
+
*/
|
|
60
85
|
createAttachment(name, width, height, msaa = false, mask = false) {
|
|
61
86
|
return frameBufferManagerCreateAttachmentUseCase(this.device, this.format, this.attachments, name, width, height, msaa, mask, this.idCounter);
|
|
62
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* @description 名前でアタッチメントを取得する
|
|
90
|
+
* Get an attachment by name
|
|
91
|
+
* @param {string} name - アタッチメント名 / Attachment name
|
|
92
|
+
* @return {IAttachmentObject | undefined}
|
|
93
|
+
*/
|
|
63
94
|
getAttachment(name) {
|
|
64
95
|
return this.attachments.get(name);
|
|
65
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* @description 現在のアタッチメントを設定する
|
|
99
|
+
* Set the current attachment
|
|
100
|
+
* @param {IAttachmentObject | null} attachment - 設定するアタッチメント / Attachment to set
|
|
101
|
+
* @return {void}
|
|
102
|
+
*/
|
|
66
103
|
setCurrentAttachment(attachment) {
|
|
67
104
|
this.currentAttachment = attachment;
|
|
68
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* @description 現在のアタッチメントを取得する
|
|
108
|
+
* Get the current attachment
|
|
109
|
+
* @return {IAttachmentObject | null}
|
|
110
|
+
*/
|
|
69
111
|
getCurrentAttachment() {
|
|
70
112
|
return this.currentAttachment;
|
|
71
113
|
}
|
|
72
|
-
|
|
73
|
-
|
|
114
|
+
/**
|
|
115
|
+
* @description レンダーパスディスクリプタを作成する
|
|
116
|
+
* Create a render pass descriptor
|
|
117
|
+
* @param {GPUTextureView} view - カラーテクスチャビュー / Color texture view
|
|
118
|
+
* @param {number} [r=0] - クリアカラーR値 / Clear color R value
|
|
119
|
+
* @param {number} [g=0] - クリアカラーG値 / Clear color G value
|
|
120
|
+
* @param {number} [b=0] - クリアカラーB値 / Clear color B value
|
|
121
|
+
* @param {number} [a=0] - クリアカラーA値 / Clear color A value
|
|
122
|
+
* @param {GPULoadOp} [load_op="clear"] - ロードオペレーション / Load operation
|
|
123
|
+
* @param {GPUTextureView|null} [resolve_target=null] - MSAAリゾルブターゲット / MSAA resolve target
|
|
124
|
+
* @return {GPURenderPassDescriptor}
|
|
125
|
+
*/
|
|
126
|
+
createRenderPassDescriptor(view, r = 0, g = 0, b = 0, a = 0, load_op = "clear", resolve_target = null) {
|
|
127
|
+
return frameBufferManagerCreateRenderPassDescriptorService(view, r, g, b, a, load_op, resolve_target);
|
|
74
128
|
}
|
|
75
|
-
|
|
76
|
-
|
|
129
|
+
/**
|
|
130
|
+
* @description ステンシル付きレンダーパスディスクリプタを作成する
|
|
131
|
+
* Create a render pass descriptor with stencil
|
|
132
|
+
* @param {GPUTextureView} color_view - カラーテクスチャビュー / Color texture view
|
|
133
|
+
* @param {GPUTextureView} stencil_view - ステンシルテクスチャビュー / Stencil texture view
|
|
134
|
+
* @param {GPULoadOp} [color_load_op="load"] - カラーロードオペレーション / Color load operation
|
|
135
|
+
* @param {GPULoadOp} [stencil_load_op="clear"] - ステンシルロードオペレーション / Stencil load operation
|
|
136
|
+
* @param {GPUTextureView|null} [resolve_target=null] - MSAAリゾルブターゲット / MSAA resolve target
|
|
137
|
+
* @return {GPURenderPassDescriptor}
|
|
138
|
+
*/
|
|
139
|
+
createStencilRenderPassDescriptor(color_view, stencil_view, color_load_op = "load", stencil_load_op = "clear", resolve_target = null) {
|
|
140
|
+
return frameBufferManagerCreateStencilRenderPassDescriptorService(color_view, stencil_view, color_load_op, stencil_load_op, resolve_target);
|
|
77
141
|
}
|
|
142
|
+
/**
|
|
143
|
+
* @description アタッチメントを破棄する
|
|
144
|
+
* Destroy an attachment by name
|
|
145
|
+
* @param {string} name - アタッチメント名 / Attachment name
|
|
146
|
+
* @return {void}
|
|
147
|
+
*/
|
|
78
148
|
destroyAttachment(name) {
|
|
79
149
|
const attachment = this.attachments.get(name);
|
|
80
150
|
if (attachment) {
|
|
@@ -87,10 +157,13 @@ export class FrameBufferManager {
|
|
|
87
157
|
this.attachments.delete(name);
|
|
88
158
|
}
|
|
89
159
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
160
|
+
/**
|
|
161
|
+
* @description 一時的なアタッチメントを作成する
|
|
162
|
+
* Create a temporary attachment
|
|
163
|
+
* @param {number} width - テクスチャの幅 / Texture width
|
|
164
|
+
* @param {number} height - テクスチャの高さ / Texture height
|
|
165
|
+
* @return {IAttachmentObject}
|
|
166
|
+
*/
|
|
94
167
|
createTemporaryAttachment(width, height) {
|
|
95
168
|
const name = `temp_${this.idCounter.nextId}`;
|
|
96
169
|
const usage = GPUTextureUsage.RENDER_ATTACHMENT |
|
|
@@ -125,9 +198,20 @@ export class FrameBufferManager {
|
|
|
125
198
|
this.attachments.set(name, attachment);
|
|
126
199
|
return attachment;
|
|
127
200
|
}
|
|
201
|
+
/**
|
|
202
|
+
* @description 一時アタッチメントをリリースキューに追加する
|
|
203
|
+
* Add a temporary attachment to the release queue
|
|
204
|
+
* @param {IAttachmentObject} attachment - リリースするアタッチメント / Attachment to release
|
|
205
|
+
* @return {void}
|
|
206
|
+
*/
|
|
128
207
|
releaseTemporaryAttachment(attachment) {
|
|
129
208
|
frameBufferManagerReleaseTemporaryAttachmentUseCase(this.attachments, this.pendingReleases, attachment);
|
|
130
209
|
}
|
|
210
|
+
/**
|
|
211
|
+
* @description 保留中のリリースを実行する
|
|
212
|
+
* Flush all pending releases
|
|
213
|
+
* @return {void}
|
|
214
|
+
*/
|
|
131
215
|
flushPendingReleases() {
|
|
132
216
|
for (const att of this.pendingReleases) {
|
|
133
217
|
if (att.texture) {
|
|
@@ -145,6 +229,11 @@ export class FrameBufferManager {
|
|
|
145
229
|
}
|
|
146
230
|
this.pendingReleases = [];
|
|
147
231
|
}
|
|
232
|
+
/**
|
|
233
|
+
* @description 全リソースを破棄する
|
|
234
|
+
* Dispose all resources
|
|
235
|
+
* @return {void}
|
|
236
|
+
*/
|
|
148
237
|
dispose() {
|
|
149
238
|
for (const attachment of this.attachments.values()) {
|
|
150
239
|
if (attachment.texture) {
|
|
@@ -37,25 +37,57 @@ export declare const $getGradientAttachmentObject: () => IAttachmentObject;
|
|
|
37
37
|
* @protected
|
|
38
38
|
*/
|
|
39
39
|
export declare const $clearGradientAttachmentObjects: () => void;
|
|
40
|
+
/**
|
|
41
|
+
* @description グラデーションLUTキャッシュエントリのインターフェース
|
|
42
|
+
* Interface for gradient LUT cache entry
|
|
43
|
+
*/
|
|
40
44
|
interface IGradientLUTEntry {
|
|
41
45
|
texture: GPUTexture;
|
|
42
46
|
view: GPUTextureView;
|
|
43
47
|
lastUsedFrame: number;
|
|
44
48
|
}
|
|
45
49
|
/**
|
|
46
|
-
* @description キャッシュからLUT
|
|
50
|
+
* @description キャッシュからLUTテクスチャを取得する。ヒットしなければnullを返す。
|
|
51
|
+
* Retrieve a LUT texture from the cache. Returns null on cache miss.
|
|
52
|
+
*
|
|
53
|
+
* @param {number[]} stops - グラデーションストップ配列 / Gradient stop array
|
|
54
|
+
* @param {number} spread - スプレッドメソッド / Spread method
|
|
55
|
+
* @param {number} interpolation - 補間方法 / Interpolation method
|
|
56
|
+
* @return {IGradientLUTEntry | null} キャッシュエントリまたはnull / Cache entry or null
|
|
57
|
+
* @method
|
|
58
|
+
* @protected
|
|
47
59
|
*/
|
|
48
60
|
export declare const $getLUTFromCache: (stops: number[], spread: number, interpolation: number) => IGradientLUTEntry | null;
|
|
49
61
|
/**
|
|
50
|
-
* @description LUT
|
|
62
|
+
* @description LUTテクスチャをキャッシュに格納する
|
|
63
|
+
* Store a LUT texture into the cache
|
|
64
|
+
*
|
|
65
|
+
* @param {number[]} stops - グラデーションストップ配列 / Gradient stop array
|
|
66
|
+
* @param {number} spread - スプレッドメソッド / Spread method
|
|
67
|
+
* @param {number} interpolation - 補間方法 / Interpolation method
|
|
68
|
+
* @param {GPUTexture} texture - GPUテクスチャ / GPU texture
|
|
69
|
+
* @param {GPUTextureView} view - GPUテクスチャビュー / GPU texture view
|
|
70
|
+
* @return {void}
|
|
71
|
+
* @method
|
|
72
|
+
* @protected
|
|
51
73
|
*/
|
|
52
74
|
export declare const $putLUTToCache: (stops: number[], spread: number, interpolation: number, texture: GPUTexture, view: GPUTextureView) => void;
|
|
53
75
|
/**
|
|
54
|
-
* @description フレーム終了時にTTL
|
|
76
|
+
* @description フレーム終了時にTTL超過エントリを解放する
|
|
77
|
+
* Release entries that exceed TTL at the end of each frame
|
|
78
|
+
*
|
|
79
|
+
* @return {void}
|
|
80
|
+
* @method
|
|
81
|
+
* @protected
|
|
55
82
|
*/
|
|
56
83
|
export declare const $cleanupLUTCache: () => void;
|
|
57
84
|
/**
|
|
58
|
-
* @description 全LUT
|
|
85
|
+
* @description 全LUTキャッシュを破棄する
|
|
86
|
+
* Destroy and clear the entire LUT cache
|
|
87
|
+
*
|
|
88
|
+
* @return {void}
|
|
89
|
+
* @method
|
|
90
|
+
* @protected
|
|
59
91
|
*/
|
|
60
92
|
export declare const $clearLUTCache: () => void;
|
|
61
93
|
export {};
|
|
@@ -13,6 +13,8 @@ import { $releaseFillTexture } from "../FillTexturePool";
|
|
|
13
13
|
const $gradientAttachmentObjects = new Map();
|
|
14
14
|
/**
|
|
15
15
|
* @description GPUDeviceの参照
|
|
16
|
+
* Reference to the GPUDevice
|
|
17
|
+
* @type {GPUDevice | null}
|
|
16
18
|
* @private
|
|
17
19
|
*/
|
|
18
20
|
let $device = null;
|
|
@@ -97,17 +99,51 @@ export const $clearGradientAttachmentObjects = () => {
|
|
|
97
99
|
}
|
|
98
100
|
$gradientAttachmentObjects.clear();
|
|
99
101
|
};
|
|
102
|
+
/**
|
|
103
|
+
* @description キー文字列からLUTエントリへのキャッシュマップ
|
|
104
|
+
* Cache map from key string to LUT entry
|
|
105
|
+
* @type {Map<string, IGradientLUTEntry>}
|
|
106
|
+
* @private
|
|
107
|
+
*/
|
|
100
108
|
const $lutCache = new Map();
|
|
109
|
+
/**
|
|
110
|
+
* @description 現在のフレーム番号(TTL計算に使用)
|
|
111
|
+
* Current frame number used for TTL calculation
|
|
112
|
+
* @type {number}
|
|
113
|
+
* @private
|
|
114
|
+
*/
|
|
101
115
|
let $currentFrame = 0;
|
|
116
|
+
/**
|
|
117
|
+
* @description LUTキャッシュのTTL(フレーム数)
|
|
118
|
+
* TTL for LUT cache in number of frames
|
|
119
|
+
* @type {number}
|
|
120
|
+
* @constant
|
|
121
|
+
* @private
|
|
122
|
+
*/
|
|
102
123
|
const $LUT_TTL = 60;
|
|
103
124
|
/**
|
|
104
|
-
* @description グラデーションLUT
|
|
125
|
+
* @description グラデーションLUTのキャッシュキーを生成する
|
|
126
|
+
* Build a cache key string for a gradient LUT
|
|
127
|
+
*
|
|
128
|
+
* @param {number[]} stops - グラデーションストップ配列 / Gradient stop array
|
|
129
|
+
* @param {number} spread - スプレッドメソッド / Spread method
|
|
130
|
+
* @param {number} interpolation - 補間方法 / Interpolation method
|
|
131
|
+
* @return {string} キャッシュキー文字列 / Cache key string
|
|
132
|
+
* @private
|
|
105
133
|
*/
|
|
106
134
|
const $buildLUTKey = (stops, spread, interpolation) => {
|
|
107
135
|
return `${spread}_${interpolation}_${stops.join(",")}`;
|
|
108
136
|
};
|
|
109
137
|
/**
|
|
110
|
-
* @description キャッシュからLUT
|
|
138
|
+
* @description キャッシュからLUTテクスチャを取得する。ヒットしなければnullを返す。
|
|
139
|
+
* Retrieve a LUT texture from the cache. Returns null on cache miss.
|
|
140
|
+
*
|
|
141
|
+
* @param {number[]} stops - グラデーションストップ配列 / Gradient stop array
|
|
142
|
+
* @param {number} spread - スプレッドメソッド / Spread method
|
|
143
|
+
* @param {number} interpolation - 補間方法 / Interpolation method
|
|
144
|
+
* @return {IGradientLUTEntry | null} キャッシュエントリまたはnull / Cache entry or null
|
|
145
|
+
* @method
|
|
146
|
+
* @protected
|
|
111
147
|
*/
|
|
112
148
|
export const $getLUTFromCache = (stops, spread, interpolation) => {
|
|
113
149
|
const key = $buildLUTKey(stops, spread, interpolation);
|
|
@@ -119,7 +155,17 @@ export const $getLUTFromCache = (stops, spread, interpolation) => {
|
|
|
119
155
|
return null;
|
|
120
156
|
};
|
|
121
157
|
/**
|
|
122
|
-
* @description LUT
|
|
158
|
+
* @description LUTテクスチャをキャッシュに格納する
|
|
159
|
+
* Store a LUT texture into the cache
|
|
160
|
+
*
|
|
161
|
+
* @param {number[]} stops - グラデーションストップ配列 / Gradient stop array
|
|
162
|
+
* @param {number} spread - スプレッドメソッド / Spread method
|
|
163
|
+
* @param {number} interpolation - 補間方法 / Interpolation method
|
|
164
|
+
* @param {GPUTexture} texture - GPUテクスチャ / GPU texture
|
|
165
|
+
* @param {GPUTextureView} view - GPUテクスチャビュー / GPU texture view
|
|
166
|
+
* @return {void}
|
|
167
|
+
* @method
|
|
168
|
+
* @protected
|
|
123
169
|
*/
|
|
124
170
|
export const $putLUTToCache = (stops, spread, interpolation, texture, view) => {
|
|
125
171
|
const key = $buildLUTKey(stops, spread, interpolation);
|
|
@@ -130,7 +176,12 @@ export const $putLUTToCache = (stops, spread, interpolation, texture, view) => {
|
|
|
130
176
|
});
|
|
131
177
|
};
|
|
132
178
|
/**
|
|
133
|
-
* @description フレーム終了時にTTL
|
|
179
|
+
* @description フレーム終了時にTTL超過エントリを解放する
|
|
180
|
+
* Release entries that exceed TTL at the end of each frame
|
|
181
|
+
*
|
|
182
|
+
* @return {void}
|
|
183
|
+
* @method
|
|
184
|
+
* @protected
|
|
134
185
|
*/
|
|
135
186
|
export const $cleanupLUTCache = () => {
|
|
136
187
|
$currentFrame++;
|
|
@@ -142,7 +193,12 @@ export const $cleanupLUTCache = () => {
|
|
|
142
193
|
}
|
|
143
194
|
};
|
|
144
195
|
/**
|
|
145
|
-
* @description 全LUT
|
|
196
|
+
* @description 全LUTキャッシュを破棄する
|
|
197
|
+
* Destroy and clear the entire LUT cache
|
|
198
|
+
*
|
|
199
|
+
* @return {void}
|
|
200
|
+
* @method
|
|
201
|
+
* @protected
|
|
146
202
|
*/
|
|
147
203
|
export const $clearLUTCache = () => {
|
|
148
204
|
for (const entry of $lutCache.values()) {
|
|
@@ -3,28 +3,40 @@
|
|
|
3
3
|
* Gradient LUT texture generator
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
|
-
* @description
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* @description ストップ数に応じた適応解像度を取得する
|
|
7
|
+
* Get adaptive resolution based on the number of gradient stops
|
|
8
|
+
*
|
|
9
|
+
* @param {number} stops_length - ストップ数 / Number of gradient stops
|
|
10
|
+
* @return {number} 解像度 (256, 512, or 1024) / Resolution
|
|
11
|
+
* @method
|
|
12
|
+
* @protected
|
|
9
13
|
*/
|
|
10
|
-
export declare const getAdaptiveResolution: (
|
|
14
|
+
export declare const getAdaptiveResolution: (stops_length: number) => number;
|
|
11
15
|
/**
|
|
12
|
-
* @description グラデーションLUT
|
|
16
|
+
* @description グラデーションLUTテクスチャデータを生成する
|
|
17
|
+
* Generate gradient LUT texture data.
|
|
13
18
|
* stops配列: [offset, R, G, B, A, offset, R, G, B, A, ...]
|
|
14
19
|
* 注意: R, G, B, A は 0-255 範囲
|
|
15
20
|
* LUTは0-1の範囲の色を生成し、spread処理はシェーダー側で行う
|
|
16
|
-
*
|
|
17
|
-
* @param
|
|
18
|
-
* @param
|
|
19
|
-
* @
|
|
21
|
+
*
|
|
22
|
+
* @param {number[]} stops - グラデーションストップ配列 / Gradient stop array
|
|
23
|
+
* @param {number} _spread - スプレッドメソッド(未使用、シェーダー側で処理)/ Spread method (unused, handled by shader)
|
|
24
|
+
* @param {number} interpolation - 補間方法 (0: linearRGB, 1: RGB) / Interpolation method (WebGL compatible)
|
|
25
|
+
* @return {Uint8Array} LUTテクスチャデータ / LUT texture data
|
|
26
|
+
* @method
|
|
27
|
+
* @protected
|
|
20
28
|
*/
|
|
21
29
|
export declare const generateGradientLUT: (stops: number[], _spread: number, interpolation: number) => Uint8Array;
|
|
22
30
|
/**
|
|
23
|
-
* @description フィルター用グラデーションLUT
|
|
31
|
+
* @description フィルター用グラデーションLUTテクスチャデータを生成する
|
|
32
|
+
* Generate gradient LUT texture data for filters.
|
|
24
33
|
* ratios, colors, alphas配列から1D LUTを生成
|
|
25
|
-
*
|
|
26
|
-
* @param
|
|
27
|
-
* @param
|
|
28
|
-
* @
|
|
34
|
+
*
|
|
35
|
+
* @param {Float32Array} ratios - 比率配列 (0-255) / Ratio array (0-255)
|
|
36
|
+
* @param {Float32Array} colors - 色配列 (32bit整数) / Color array (32-bit integers)
|
|
37
|
+
* @param {Float32Array} alphas - アルファ配列 (0-1) / Alpha array (0-1)
|
|
38
|
+
* @return {Uint8Array} LUTテクスチャデータ / LUT texture data
|
|
39
|
+
* @method
|
|
40
|
+
* @protected
|
|
29
41
|
*/
|
|
30
42
|
export declare const generateFilterGradientLUT: (ratios: Float32Array, colors: Float32Array, alphas: Float32Array) => Uint8Array;
|