@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,115 +0,0 @@
|
|
|
1
|
-
export const getConvolutionFilterFragmentShader = (matrixX, matrixY, preserveAlpha, clamp) => {
|
|
2
|
-
const halfX = Math.floor(matrixX * 0.5);
|
|
3
|
-
const halfY = Math.floor(matrixY * 0.5);
|
|
4
|
-
const size = matrixX * matrixY;
|
|
5
|
-
let matrixStatement = "";
|
|
6
|
-
for (let idx = 0; idx < size; idx++) {
|
|
7
|
-
matrixStatement += `
|
|
8
|
-
result = result + getWeightedColor(${idx}, getMatrixWeight(${idx}));`;
|
|
9
|
-
}
|
|
10
|
-
const preserveAlphaStatement = preserveAlpha
|
|
11
|
-
? "result.a = textureSample(sourceTexture, sourceSampler, input.texCoord).a;"
|
|
12
|
-
: "";
|
|
13
|
-
const clampStatement = clamp
|
|
14
|
-
? ""
|
|
15
|
-
: `
|
|
16
|
-
let substituteColor = uniforms.substituteColor;
|
|
17
|
-
color = mix(substituteColor, color, isInside(uv));`;
|
|
18
|
-
return `
|
|
19
|
-
struct ConvolutionUniforms {
|
|
20
|
-
rcpSize: vec2<f32>,
|
|
21
|
-
rcpDivisor: f32,
|
|
22
|
-
bias: f32,
|
|
23
|
-
substituteColor: vec4<f32>,
|
|
24
|
-
matrix: array<vec4<f32>, ${Math.ceil(size / 4)}>,
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
@group(0) @binding(0) var<uniform> uniforms: ConvolutionUniforms;
|
|
28
|
-
@group(0) @binding(1) var sourceSampler: sampler;
|
|
29
|
-
@group(0) @binding(2) var sourceTexture: texture_2d<f32>;
|
|
30
|
-
|
|
31
|
-
struct VertexOutput {
|
|
32
|
-
@builtin(position) position: vec4<f32>,
|
|
33
|
-
@location(0) texCoord: vec2<f32>,
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
fn isInside(uv: vec2<f32>) -> f32 {
|
|
37
|
-
let inside = step(vec2<f32>(0.0), uv) * step(uv, vec2<f32>(1.0));
|
|
38
|
-
return inside.x * inside.y;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
fn getMatrixWeight(index: i32) -> f32 {
|
|
42
|
-
let vecIndex = index / 4;
|
|
43
|
-
let component = index % 4;
|
|
44
|
-
let vec = uniforms.matrix[vecIndex];
|
|
45
|
-
|
|
46
|
-
if (component == 0) { return vec.x; }
|
|
47
|
-
else if (component == 1) { return vec.y; }
|
|
48
|
-
else if (component == 2) { return vec.z; }
|
|
49
|
-
else { return vec.w; }
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
fn getWeightedColor(i: i32, weight: f32) -> vec4<f32> {
|
|
53
|
-
let rcpSize = uniforms.rcpSize;
|
|
54
|
-
|
|
55
|
-
let iDivX = i / ${matrixX};
|
|
56
|
-
let iModX = i - ${matrixX} * iDivX;
|
|
57
|
-
let offset = vec2<f32>(f32(iModX - ${halfX}), f32(${halfY} - iDivX));
|
|
58
|
-
var uv = input.texCoord + offset * rcpSize;
|
|
59
|
-
|
|
60
|
-
var color = textureSample(sourceTexture, sourceSampler, uv);
|
|
61
|
-
color = vec4<f32>(color.rgb / max(0.0001, color.a), color.a);
|
|
62
|
-
${clampStatement}
|
|
63
|
-
|
|
64
|
-
return color * weight;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
var<private> input: VertexOutput;
|
|
68
|
-
|
|
69
|
-
@vertex
|
|
70
|
-
fn vs_main(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {
|
|
71
|
-
var positions = array<vec2<f32>, 6>(
|
|
72
|
-
vec2<f32>(-1.0, -1.0),
|
|
73
|
-
vec2<f32>(1.0, -1.0),
|
|
74
|
-
vec2<f32>(-1.0, 1.0),
|
|
75
|
-
vec2<f32>(-1.0, 1.0),
|
|
76
|
-
vec2<f32>(1.0, -1.0),
|
|
77
|
-
vec2<f32>(1.0, 1.0)
|
|
78
|
-
);
|
|
79
|
-
|
|
80
|
-
var texCoords = array<vec2<f32>, 6>(
|
|
81
|
-
vec2<f32>(0.0, 1.0),
|
|
82
|
-
vec2<f32>(1.0, 1.0),
|
|
83
|
-
vec2<f32>(0.0, 0.0),
|
|
84
|
-
vec2<f32>(0.0, 0.0),
|
|
85
|
-
vec2<f32>(1.0, 1.0),
|
|
86
|
-
vec2<f32>(1.0, 0.0)
|
|
87
|
-
);
|
|
88
|
-
|
|
89
|
-
var output: VertexOutput;
|
|
90
|
-
output.position = vec4<f32>(positions[vertexIndex], 0.0, 1.0);
|
|
91
|
-
output.texCoord = texCoords[vertexIndex];
|
|
92
|
-
return output;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
@fragment
|
|
96
|
-
fn fs_main(fragInput: VertexOutput) -> @location(0) vec4<f32> {
|
|
97
|
-
input = fragInput;
|
|
98
|
-
|
|
99
|
-
let rcpDivisor = uniforms.rcpDivisor;
|
|
100
|
-
let bias = uniforms.bias;
|
|
101
|
-
|
|
102
|
-
var result = vec4<f32>(0.0);
|
|
103
|
-
${matrixStatement}
|
|
104
|
-
|
|
105
|
-
result = clamp(result * rcpDivisor + bias, vec4<f32>(0.0), vec4<f32>(1.0));
|
|
106
|
-
${preserveAlphaStatement}
|
|
107
|
-
|
|
108
|
-
result = vec4<f32>(result.rgb * result.a, result.a);
|
|
109
|
-
return result;
|
|
110
|
-
}
|
|
111
|
-
`;
|
|
112
|
-
};
|
|
113
|
-
export const getConvolutionFilterShaderKey = (matrixX, matrixY, preserveAlpha, clamp) => {
|
|
114
|
-
return `convolution_${matrixX}x${matrixY}_${preserveAlpha ? "pa" : "npa"}_${clamp ? "c" : "nc"}`;
|
|
115
|
-
};
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
const getComponentExpression = (component) => {
|
|
2
|
-
switch (component) {
|
|
3
|
-
case 1:
|
|
4
|
-
return "mapColor.r";
|
|
5
|
-
case 2:
|
|
6
|
-
return "mapColor.g";
|
|
7
|
-
case 4:
|
|
8
|
-
return "mapColor.b";
|
|
9
|
-
case 8:
|
|
10
|
-
return "mapColor.a";
|
|
11
|
-
default:
|
|
12
|
-
return "0.5";
|
|
13
|
-
}
|
|
14
|
-
};
|
|
15
|
-
const getModeStatement = (mode) => {
|
|
16
|
-
switch (mode) {
|
|
17
|
-
case 0:
|
|
18
|
-
return `
|
|
19
|
-
let sourceColor = textureSample(sourceTexture, sourceSampler, uv);`;
|
|
20
|
-
case 1:
|
|
21
|
-
return `
|
|
22
|
-
let substituteColor = uniforms.substituteColor;
|
|
23
|
-
let sourceColor = mix(substituteColor, textureSample(sourceTexture, sourceSampler, uv), isInside(uv));`;
|
|
24
|
-
case 3:
|
|
25
|
-
return `
|
|
26
|
-
let fallbackUv = mix(input.texCoord, uv, step(abs(uv - vec2<f32>(0.5)), vec2<f32>(0.5)));
|
|
27
|
-
let sourceColor = textureSample(sourceTexture, sourceSampler, fallbackUv);`;
|
|
28
|
-
case 2:
|
|
29
|
-
default:
|
|
30
|
-
return `
|
|
31
|
-
let sourceColor = textureSample(sourceTexture, sourceSampler, fract(uv));`;
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
export const getDisplacementMapFilterFragmentShader = (componentX, componentY, mode) => {
|
|
35
|
-
const cx = getComponentExpression(componentX);
|
|
36
|
-
const cy = getComponentExpression(componentY);
|
|
37
|
-
const modeStatement = getModeStatement(mode);
|
|
38
|
-
const hasSubstituteColor = mode === 1;
|
|
39
|
-
return `
|
|
40
|
-
struct DisplacementMapUniforms {
|
|
41
|
-
uvToStScale: vec2<f32>,
|
|
42
|
-
uvToStOffset: vec2<f32>,
|
|
43
|
-
scale: vec2<f32>,
|
|
44
|
-
_pad: vec2<f32>,
|
|
45
|
-
${hasSubstituteColor ? " substituteColor: vec4<f32>," : ""}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
@group(0) @binding(0) var<uniform> uniforms: DisplacementMapUniforms;
|
|
49
|
-
@group(0) @binding(1) var sourceSampler: sampler;
|
|
50
|
-
@group(0) @binding(2) var sourceTexture: texture_2d<f32>;
|
|
51
|
-
@group(0) @binding(3) var mapTexture: texture_2d<f32>;
|
|
52
|
-
|
|
53
|
-
struct VertexOutput {
|
|
54
|
-
@builtin(position) position: vec4<f32>,
|
|
55
|
-
@location(0) texCoord: vec2<f32>,
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
fn isInside(uv: vec2<f32>) -> f32 {
|
|
59
|
-
let inside = step(vec2<f32>(0.0), uv) * step(uv, vec2<f32>(1.0));
|
|
60
|
-
return inside.x * inside.y;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
var<private> input: VertexOutput;
|
|
64
|
-
|
|
65
|
-
@vertex
|
|
66
|
-
fn vs_main(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {
|
|
67
|
-
var positions = array<vec2<f32>, 6>(
|
|
68
|
-
vec2<f32>(-1.0, -1.0),
|
|
69
|
-
vec2<f32>(1.0, -1.0),
|
|
70
|
-
vec2<f32>(-1.0, 1.0),
|
|
71
|
-
vec2<f32>(-1.0, 1.0),
|
|
72
|
-
vec2<f32>(1.0, -1.0),
|
|
73
|
-
vec2<f32>(1.0, 1.0)
|
|
74
|
-
);
|
|
75
|
-
|
|
76
|
-
var texCoords = array<vec2<f32>, 6>(
|
|
77
|
-
vec2<f32>(0.0, 1.0),
|
|
78
|
-
vec2<f32>(1.0, 1.0),
|
|
79
|
-
vec2<f32>(0.0, 0.0),
|
|
80
|
-
vec2<f32>(0.0, 0.0),
|
|
81
|
-
vec2<f32>(1.0, 1.0),
|
|
82
|
-
vec2<f32>(1.0, 0.0)
|
|
83
|
-
);
|
|
84
|
-
|
|
85
|
-
var output: VertexOutput;
|
|
86
|
-
output.position = vec4<f32>(positions[vertexIndex], 0.0, 1.0);
|
|
87
|
-
output.texCoord = texCoords[vertexIndex];
|
|
88
|
-
return output;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
@fragment
|
|
92
|
-
fn fs_main(fragInput: VertexOutput) -> @location(0) vec4<f32> {
|
|
93
|
-
input = fragInput;
|
|
94
|
-
|
|
95
|
-
let uvToStScale = uniforms.uvToStScale;
|
|
96
|
-
let uvToStOffset = uniforms.uvToStOffset;
|
|
97
|
-
let scale = uniforms.scale;
|
|
98
|
-
|
|
99
|
-
let st = input.texCoord * uvToStScale - uvToStOffset;
|
|
100
|
-
let mapColor = textureSample(mapTexture, sourceSampler, st);
|
|
101
|
-
|
|
102
|
-
let offset = vec2<f32>(${cx}, ${cy}) - 0.5;
|
|
103
|
-
let uv = input.texCoord + offset * scale;
|
|
104
|
-
|
|
105
|
-
${modeStatement}
|
|
106
|
-
|
|
107
|
-
let originalColor = textureSample(sourceTexture, sourceSampler, input.texCoord);
|
|
108
|
-
return mix(originalColor, sourceColor, isInside(st));
|
|
109
|
-
}
|
|
110
|
-
`;
|
|
111
|
-
};
|
|
112
|
-
export const getDisplacementMapFilterShaderKey = (componentX, componentY, mode) => {
|
|
113
|
-
return `displacement_${componentX}_${componentY}_${mode}`;
|
|
114
|
-
};
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
export class DropShadowFilterShader {
|
|
2
|
-
static getFragmentShader() {
|
|
3
|
-
return /* wgsl */ `
|
|
4
|
-
struct VertexOutput {
|
|
5
|
-
@builtin(position) position: vec4<f32>,
|
|
6
|
-
@location(0) texCoord: vec2<f32>,
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
struct DropShadowUniforms {
|
|
10
|
-
shadowColor: vec4<f32>,
|
|
11
|
-
offset: vec2<f32>,
|
|
12
|
-
distance: f32,
|
|
13
|
-
angle: f32,
|
|
14
|
-
strength: f32,
|
|
15
|
-
inner: f32,
|
|
16
|
-
knockout: f32,
|
|
17
|
-
hideObject: f32,
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
@group(0) @binding(0) var<uniform> uniforms: DropShadowUniforms;
|
|
21
|
-
@group(0) @binding(1) var textureSampler: sampler;
|
|
22
|
-
@group(0) @binding(2) var textureData: texture_2d<f32>;
|
|
23
|
-
|
|
24
|
-
@fragment
|
|
25
|
-
fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
26
|
-
var originalColor = textureSample(textureData, textureSampler, input.texCoord);
|
|
27
|
-
|
|
28
|
-
let radian = uniforms.angle * 3.14159265 / 180.0;
|
|
29
|
-
let offsetX = cos(radian) * uniforms.distance / 100.0;
|
|
30
|
-
let offsetY = sin(radian) * uniforms.distance / 100.0;
|
|
31
|
-
|
|
32
|
-
let shadowCoord = vec2<f32>(
|
|
33
|
-
input.texCoord.x + offsetX,
|
|
34
|
-
input.texCoord.y + offsetY
|
|
35
|
-
);
|
|
36
|
-
|
|
37
|
-
var shadowAlpha = textureSample(textureData, textureSampler, shadowCoord).a;
|
|
38
|
-
|
|
39
|
-
var shadowColor = vec4<f32>(
|
|
40
|
-
uniforms.shadowColor.rgb,
|
|
41
|
-
shadowAlpha * uniforms.shadowColor.a * uniforms.strength
|
|
42
|
-
);
|
|
43
|
-
|
|
44
|
-
if (uniforms.inner > 0.5) {
|
|
45
|
-
let alpha = originalColor.a;
|
|
46
|
-
shadowColor.a *= alpha;
|
|
47
|
-
|
|
48
|
-
if (uniforms.knockout > 0.5) {
|
|
49
|
-
return shadowColor;
|
|
50
|
-
} else {
|
|
51
|
-
return mix(shadowColor, originalColor, alpha);
|
|
52
|
-
}
|
|
53
|
-
} else {
|
|
54
|
-
if (uniforms.hideObject > 0.5) {
|
|
55
|
-
return shadowColor * (1.0 - originalColor.a);
|
|
56
|
-
} else if (uniforms.knockout > 0.5) {
|
|
57
|
-
return shadowColor;
|
|
58
|
-
} else {
|
|
59
|
-
let combinedAlpha = originalColor.a + shadowColor.a * (1.0 - originalColor.a);
|
|
60
|
-
if (combinedAlpha > 0.0) {
|
|
61
|
-
let rgb = (originalColor.rgb * originalColor.a +
|
|
62
|
-
shadowColor.rgb * shadowColor.a * (1.0 - originalColor.a)) / combinedAlpha;
|
|
63
|
-
return vec4<f32>(rgb, combinedAlpha);
|
|
64
|
-
} else {
|
|
65
|
-
return vec4<f32>(0.0);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
`;
|
|
71
|
-
}
|
|
72
|
-
static getVertexShader() {
|
|
73
|
-
return /* wgsl */ `
|
|
74
|
-
struct VertexInput {
|
|
75
|
-
@location(0) position: vec2<f32>,
|
|
76
|
-
@location(1) texCoord: vec2<f32>,
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
struct VertexOutput {
|
|
80
|
-
@builtin(position) position: vec4<f32>,
|
|
81
|
-
@location(0) texCoord: vec2<f32>,
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
@vertex
|
|
85
|
-
fn main(input: VertexInput) -> VertexOutput {
|
|
86
|
-
var output: VertexOutput;
|
|
87
|
-
output.position = vec4<f32>(input.position, 0.0, 1.0);
|
|
88
|
-
output.texCoord = input.texCoord;
|
|
89
|
-
return output;
|
|
90
|
-
}
|
|
91
|
-
`;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
export class GlowFilterShader {
|
|
2
|
-
static getFragmentShader() {
|
|
3
|
-
return /* wgsl */ `
|
|
4
|
-
struct VertexOutput {
|
|
5
|
-
@builtin(position) position: vec4<f32>,
|
|
6
|
-
@location(0) texCoord: vec2<f32>,
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
struct GlowUniforms {
|
|
10
|
-
glowColor: vec4<f32>,
|
|
11
|
-
strength: f32,
|
|
12
|
-
inner: f32,
|
|
13
|
-
knockout: f32,
|
|
14
|
-
_padding: f32,
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
@group(0) @binding(0) var<uniform> uniforms: GlowUniforms;
|
|
18
|
-
@group(0) @binding(1) var textureSampler: sampler;
|
|
19
|
-
@group(0) @binding(2) var textureData: texture_2d<f32>;
|
|
20
|
-
|
|
21
|
-
@fragment
|
|
22
|
-
fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
23
|
-
var originalColor = textureSample(textureData, textureSampler, input.texCoord);
|
|
24
|
-
|
|
25
|
-
let alpha = originalColor.a;
|
|
26
|
-
|
|
27
|
-
var glowColor = uniforms.glowColor * uniforms.strength * alpha;
|
|
28
|
-
|
|
29
|
-
if (uniforms.inner > 0.5) {
|
|
30
|
-
if (uniforms.knockout > 0.5) {
|
|
31
|
-
return glowColor;
|
|
32
|
-
} else {
|
|
33
|
-
return mix(originalColor, glowColor, alpha);
|
|
34
|
-
}
|
|
35
|
-
} else {
|
|
36
|
-
if (uniforms.knockout > 0.5) {
|
|
37
|
-
return vec4<f32>(glowColor.rgb, glowColor.a * (1.0 - alpha));
|
|
38
|
-
} else {
|
|
39
|
-
return originalColor + glowColor;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
`;
|
|
44
|
-
}
|
|
45
|
-
static getVertexShader() {
|
|
46
|
-
return /* wgsl */ `
|
|
47
|
-
struct VertexInput {
|
|
48
|
-
@location(0) position: vec2<f32>,
|
|
49
|
-
@location(1) texCoord: vec2<f32>,
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
struct VertexOutput {
|
|
53
|
-
@builtin(position) position: vec4<f32>,
|
|
54
|
-
@location(0) texCoord: vec2<f32>,
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
@vertex
|
|
58
|
-
fn main(input: VertexInput) -> VertexOutput {
|
|
59
|
-
var output: VertexOutput;
|
|
60
|
-
output.position = vec4<f32>(input.position, 0.0, 1.0);
|
|
61
|
-
output.texCoord = input.texCoord;
|
|
62
|
-
return output;
|
|
63
|
-
}
|
|
64
|
-
`;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { IAttachmentObject } from "../../interface/IAttachmentObject";
|
|
2
|
-
/**
|
|
3
|
-
* @description フレーム終了時に保留中のテクスチャを解放
|
|
4
|
-
* Release pending textures at end of frame (after submit)
|
|
5
|
-
*
|
|
6
|
-
* @param {IAttachmentObject[]} pendingReleases
|
|
7
|
-
* @return {void}
|
|
8
|
-
* @method
|
|
9
|
-
* @protected
|
|
10
|
-
*/
|
|
11
|
-
export declare const execute: (pendingReleases: IAttachmentObject[]) => void;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @description フレーム終了時に保留中のテクスチャを解放
|
|
3
|
-
* Release pending textures at end of frame (after submit)
|
|
4
|
-
*
|
|
5
|
-
* @param {IAttachmentObject[]} pendingReleases
|
|
6
|
-
* @return {void}
|
|
7
|
-
* @method
|
|
8
|
-
* @protected
|
|
9
|
-
*/
|
|
10
|
-
export const execute = (pendingReleases) => {
|
|
11
|
-
for (const att of pendingReleases) {
|
|
12
|
-
if (att.texture) {
|
|
13
|
-
att.texture.resource.destroy();
|
|
14
|
-
}
|
|
15
|
-
if (att.stencil) {
|
|
16
|
-
att.stencil.resource.destroy();
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
};
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { execute as maskEndMaskService } from "../service/MaskEndMaskService";
|
|
2
|
-
import { $isMaskDrawing, $setMaskDrawing } from "../../Mask";
|
|
3
|
-
/**
|
|
4
|
-
* @description マスクOn/Offに合わせたバインド処理
|
|
5
|
-
* Binding process according to mask On/Off
|
|
6
|
-
*
|
|
7
|
-
* @param {boolean} mask
|
|
8
|
-
* @return {void}
|
|
9
|
-
* @method
|
|
10
|
-
* @protected
|
|
11
|
-
*/
|
|
12
|
-
export const execute = (mask) => {
|
|
13
|
-
if (!mask && $isMaskDrawing()) {
|
|
14
|
-
$setMaskDrawing(false);
|
|
15
|
-
}
|
|
16
|
-
else if (mask && !$isMaskDrawing()) {
|
|
17
|
-
$setMaskDrawing(true);
|
|
18
|
-
maskEndMaskService();
|
|
19
|
-
}
|
|
20
|
-
};
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { IPoint } from "../../interface/IPoint";
|
|
2
|
-
/**
|
|
3
|
-
* @description 線形補間
|
|
4
|
-
* Linear interpolation
|
|
5
|
-
*
|
|
6
|
-
* @param {IPoint} pointA
|
|
7
|
-
* @param {IPoint} pointB
|
|
8
|
-
* @param {number} t
|
|
9
|
-
* @return {IPoint}
|
|
10
|
-
* @method
|
|
11
|
-
* @protected
|
|
12
|
-
*/
|
|
13
|
-
export declare const execute: (pointA: IPoint, pointB: IPoint, t: number) => IPoint;
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @description 線形補間
|
|
3
|
-
* Linear interpolation
|
|
4
|
-
*
|
|
5
|
-
* @param {IPoint} pointA
|
|
6
|
-
* @param {IPoint} pointB
|
|
7
|
-
* @param {number} t
|
|
8
|
-
* @return {IPoint}
|
|
9
|
-
* @method
|
|
10
|
-
* @protected
|
|
11
|
-
*/
|
|
12
|
-
export const execute = (pointA, pointB, t) => {
|
|
13
|
-
return {
|
|
14
|
-
"x": pointA.x + (pointB.x - pointA.x) * t,
|
|
15
|
-
"y": pointA.y + (pointB.y - pointA.y) * t
|
|
16
|
-
};
|
|
17
|
-
};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { IPoint } from "../../interface/IPoint";
|
|
2
|
-
/**
|
|
3
|
-
* @description 二次ベジェ曲線を分割する
|
|
4
|
-
* Split a quadratic Bezier curve
|
|
5
|
-
*
|
|
6
|
-
* @param {IPoint} start_point
|
|
7
|
-
* @param {IPoint} control_point
|
|
8
|
-
* @param {IPoint} end_point
|
|
9
|
-
* @param {number} [t = 0.5]
|
|
10
|
-
* @return {Array<IPoint[]>}
|
|
11
|
-
* @method
|
|
12
|
-
* @protected
|
|
13
|
-
*/
|
|
14
|
-
export declare const execute: (start_point: IPoint, control_point: IPoint, end_point: IPoint, t?: number) => Array<IPoint[]>;
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { execute as meshLerpService } from "../service/MeshLerpService";
|
|
2
|
-
/**
|
|
3
|
-
* @description 二次ベジェ曲線を分割する
|
|
4
|
-
* Split a quadratic Bezier curve
|
|
5
|
-
*
|
|
6
|
-
* @param {IPoint} start_point
|
|
7
|
-
* @param {IPoint} control_point
|
|
8
|
-
* @param {IPoint} end_point
|
|
9
|
-
* @param {number} [t = 0.5]
|
|
10
|
-
* @return {Array<IPoint[]>}
|
|
11
|
-
* @method
|
|
12
|
-
* @protected
|
|
13
|
-
*/
|
|
14
|
-
export const execute = (start_point, control_point, end_point, t = 0.5) => {
|
|
15
|
-
// 二次ベジエ曲線の分割
|
|
16
|
-
// M0 = lerp(P0, P1, t)
|
|
17
|
-
// M1 = lerp(P1, P2, t)
|
|
18
|
-
// M01 = lerp(M0, M1, t)
|
|
19
|
-
const M0 = meshLerpService(start_point, control_point, t);
|
|
20
|
-
const M1 = meshLerpService(control_point, end_point, t);
|
|
21
|
-
const M01 = meshLerpService(M0, M1, t);
|
|
22
|
-
// 左サブ (0...t): [P0, M0, M01]
|
|
23
|
-
// 右サブ (t...1): [M01, M1, P2]
|
|
24
|
-
return [
|
|
25
|
-
[start_point, M0, M01],
|
|
26
|
-
[M01, M1, end_point]
|
|
27
|
-
];
|
|
28
|
-
};
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { IPath } from "../../interface/IPath";
|
|
2
|
-
import type { IMeshResult } from "../../interface/IMeshResult";
|
|
3
|
-
/**
|
|
4
|
-
* @description ストローク塗りつぶし用のメッシュを生成する
|
|
5
|
-
* Generate a stroke fill mesh
|
|
6
|
-
*
|
|
7
|
-
* 頂点フォーマット(4 floats per vertex):
|
|
8
|
-
* - position: x, y (2 floats)
|
|
9
|
-
* - bezier: u, v (2 floats) - 常に (0.5, 0.5)
|
|
10
|
-
*
|
|
11
|
-
* color/matrixはuniform bufferで供給される
|
|
12
|
-
*
|
|
13
|
-
* @param {IPath[]} vertices
|
|
14
|
-
* @return {IMeshResult}
|
|
15
|
-
* @method
|
|
16
|
-
* @protected
|
|
17
|
-
*/
|
|
18
|
-
export declare const execute: (vertices: IPath[]) => IMeshResult;
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { execute as meshStrokeFillGenerateService } from "../service/MeshStrokeFillGenerateService";
|
|
2
|
-
/**
|
|
3
|
-
* @description メッシュ生成用の再利用可能な一時バッファ(GC回避)
|
|
4
|
-
*/
|
|
5
|
-
let $meshTempBuffer = new Float32Array(32);
|
|
6
|
-
const $upperPowerOfTwo = (v) => {
|
|
7
|
-
v--;
|
|
8
|
-
v |= v >> 1;
|
|
9
|
-
v |= v >> 2;
|
|
10
|
-
v |= v >> 4;
|
|
11
|
-
v |= v >> 8;
|
|
12
|
-
v |= v >> 16;
|
|
13
|
-
v++;
|
|
14
|
-
return v;
|
|
15
|
-
};
|
|
16
|
-
/**
|
|
17
|
-
* @description ストローク塗りつぶし用のメッシュを生成する
|
|
18
|
-
* Generate a stroke fill mesh
|
|
19
|
-
*
|
|
20
|
-
* 頂点フォーマット(4 floats per vertex):
|
|
21
|
-
* - position: x, y (2 floats)
|
|
22
|
-
* - bezier: u, v (2 floats) - 常に (0.5, 0.5)
|
|
23
|
-
*
|
|
24
|
-
* color/matrixはuniform bufferで供給される
|
|
25
|
-
*
|
|
26
|
-
* @param {IPath[]} vertices
|
|
27
|
-
* @return {IMeshResult}
|
|
28
|
-
* @method
|
|
29
|
-
* @protected
|
|
30
|
-
*/
|
|
31
|
-
export const execute = (vertices) => {
|
|
32
|
-
// 頂点数を計算(各パスの三角形数 × 3)
|
|
33
|
-
let totalVertices = 0;
|
|
34
|
-
for (const vertex of vertices) {
|
|
35
|
-
const length = vertex.length - 5;
|
|
36
|
-
for (let idx = 3; idx < length; idx += 3) {
|
|
37
|
-
totalVertices += 3;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
// バッファを確保(4 floats per vertex、再利用可能バッファ)
|
|
41
|
-
const requiredSize = totalVertices * 4;
|
|
42
|
-
if ($meshTempBuffer.length < requiredSize) {
|
|
43
|
-
$meshTempBuffer = new Float32Array($upperPowerOfTwo(requiredSize));
|
|
44
|
-
}
|
|
45
|
-
const buffer = $meshTempBuffer;
|
|
46
|
-
let index = 0;
|
|
47
|
-
for (const vertex of vertices) {
|
|
48
|
-
index = meshStrokeFillGenerateService(vertex, buffer, index);
|
|
49
|
-
}
|
|
50
|
-
return {
|
|
51
|
-
"buffer": buffer.subarray(0, index * 4),
|
|
52
|
-
"indexCount": index
|
|
53
|
-
};
|
|
54
|
-
};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @description 頻繁に使用されるサンプラーを事前に作成
|
|
3
|
-
* Pre-create commonly used samplers
|
|
4
|
-
*
|
|
5
|
-
* @param {GPUDevice} device
|
|
6
|
-
* @param {Map<string, GPUSampler>} cache
|
|
7
|
-
* @return {void}
|
|
8
|
-
* @method
|
|
9
|
-
* @protected
|
|
10
|
-
*/
|
|
11
|
-
export declare const execute: (device: GPUDevice, cache: Map<string, GPUSampler>) => void;
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { execute as samplerCacheGenerateKeyService } from "./SamplerCacheGenerateKeyService";
|
|
2
|
-
/**
|
|
3
|
-
* @description 頻繁に使用されるサンプラーを事前に作成
|
|
4
|
-
* Pre-create commonly used samplers
|
|
5
|
-
*
|
|
6
|
-
* @param {GPUDevice} device
|
|
7
|
-
* @param {Map<string, GPUSampler>} cache
|
|
8
|
-
* @return {void}
|
|
9
|
-
* @method
|
|
10
|
-
* @protected
|
|
11
|
-
*/
|
|
12
|
-
export const execute = (device, cache) => {
|
|
13
|
-
const createAndCache = (minFilter, magFilter, addressModeU, addressModeV) => {
|
|
14
|
-
const key = samplerCacheGenerateKeyService(minFilter, magFilter, addressModeU, addressModeV);
|
|
15
|
-
if (!cache.has(key)) {
|
|
16
|
-
const sampler = device.createSampler({
|
|
17
|
-
minFilter,
|
|
18
|
-
magFilter,
|
|
19
|
-
addressModeU,
|
|
20
|
-
addressModeV
|
|
21
|
-
});
|
|
22
|
-
cache.set(key, sampler);
|
|
23
|
-
}
|
|
24
|
-
};
|
|
25
|
-
// リニアクランプ(最も一般的)
|
|
26
|
-
createAndCache("linear", "linear", "clamp-to-edge", "clamp-to-edge");
|
|
27
|
-
// ニアレストクランプ
|
|
28
|
-
createAndCache("nearest", "nearest", "clamp-to-edge", "clamp-to-edge");
|
|
29
|
-
// リニアリピート
|
|
30
|
-
createAndCache("linear", "linear", "repeat", "repeat");
|
|
31
|
-
// ニアレストリピート
|
|
32
|
-
createAndCache("nearest", "nearest", "repeat", "repeat");
|
|
33
|
-
// リニアミラーリピート
|
|
34
|
-
createAndCache("linear", "linear", "mirror-repeat", "mirror-repeat");
|
|
35
|
-
};
|