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