@next2d/webgpu 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +574 -0
- package/package.json +30 -0
- package/src/AtlasManager.d.ts +23 -0
- package/src/AtlasManager.js +123 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateAttachmentObjectService.d.ts +13 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateAttachmentObjectService.js +24 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateColorBufferService.d.ts +15 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateColorBufferService.js +31 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateRenderPassDescriptorService.d.ts +5 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateRenderPassDescriptorService.js +42 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateStencilBufferService.d.ts +16 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateStencilBufferService.js +28 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateTextureObjectService.d.ts +17 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateTextureObjectService.js +33 -0
- package/src/AttachmentManager/service/AttachmentManagerGetColorBufferService.d.ts +16 -0
- package/src/AttachmentManager/service/AttachmentManagerGetColorBufferService.js +28 -0
- package/src/AttachmentManager/service/AttachmentManagerGetStencilBufferService.d.ts +17 -0
- package/src/AttachmentManager/service/AttachmentManagerGetStencilBufferService.js +27 -0
- package/src/AttachmentManager/service/AttachmentManagerGetTextureService.d.ts +18 -0
- package/src/AttachmentManager/service/AttachmentManagerGetTextureService.js +27 -0
- package/src/AttachmentManager/service/AttachmentManagerReleaseTextureService.d.ts +12 -0
- package/src/AttachmentManager/service/AttachmentManagerReleaseTextureService.js +17 -0
- package/src/AttachmentManager/usecase/AttachmentManagerGetAttachmentObjectUseCase.d.ts +26 -0
- package/src/AttachmentManager/usecase/AttachmentManagerGetAttachmentObjectUseCase.js +43 -0
- package/src/AttachmentManager/usecase/AttachmentManagerReleaseAttachmentUseCase.d.ts +18 -0
- package/src/AttachmentManager/usecase/AttachmentManagerReleaseAttachmentUseCase.js +33 -0
- package/src/AttachmentManager.d.ts +19 -0
- package/src/AttachmentManager.js +105 -0
- package/src/BezierConverter/BezierConverter.d.ts +16 -0
- package/src/BezierConverter/BezierConverter.js +15 -0
- package/src/BezierConverter/service/BezierConverterCalculateFlatnessService.d.ts +15 -0
- package/src/BezierConverter/service/BezierConverterCalculateFlatnessService.js +37 -0
- package/src/BezierConverter/service/BezierConverterSplitCubicService.d.ts +15 -0
- package/src/BezierConverter/service/BezierConverterSplitCubicService.js +47 -0
- package/src/BezierConverter/usecase/BezierConverterAdaptiveCubicToQuadUseCase.d.ts +29 -0
- package/src/BezierConverter/usecase/BezierConverterAdaptiveCubicToQuadUseCase.js +80 -0
- package/src/Blend/BlendInstancedManager.d.ts +35 -0
- package/src/Blend/BlendInstancedManager.js +147 -0
- package/src/Blend/service/BlendAddService.d.ts +1 -0
- package/src/Blend/service/BlendAddService.js +8 -0
- package/src/Blend/service/BlendAlphaService.d.ts +1 -0
- package/src/Blend/service/BlendAlphaService.js +8 -0
- package/src/Blend/service/BlendEraseService.d.ts +1 -0
- package/src/Blend/service/BlendEraseService.js +8 -0
- package/src/Blend/service/BlendGetStateService.d.ts +12 -0
- package/src/Blend/service/BlendGetStateService.js +13 -0
- package/src/Blend/service/BlendOneZeroService.d.ts +1 -0
- package/src/Blend/service/BlendOneZeroService.js +8 -0
- package/src/Blend/service/BlendResetService.d.ts +1 -0
- package/src/Blend/service/BlendResetService.js +8 -0
- package/src/Blend/service/BlendScreenService.d.ts +1 -0
- package/src/Blend/service/BlendScreenService.js +8 -0
- package/src/Blend/service/BlendSetModeService.d.ts +2 -0
- package/src/Blend/service/BlendSetModeService.js +4 -0
- package/src/Blend/usecase/BlendApplyComplexBlendUseCase.d.ts +6 -0
- package/src/Blend/usecase/BlendApplyComplexBlendUseCase.js +79 -0
- package/src/Blend/usecase/BlendOperationUseCase.d.ts +11 -0
- package/src/Blend/usecase/BlendOperationUseCase.js +31 -0
- package/src/Blend.d.ts +8 -0
- package/src/Blend.js +91 -0
- package/src/BufferManager/service/BufferManagerCreateIndirectBufferService.d.ts +15 -0
- package/src/BufferManager/service/BufferManagerCreateIndirectBufferService.js +37 -0
- package/src/BufferManager/service/BufferManagerCreateRectVerticesService.d.ts +13 -0
- package/src/BufferManager/service/BufferManagerCreateRectVerticesService.js +23 -0
- package/src/BufferManager/service/BufferManagerCreateStorageBufferService.d.ts +17 -0
- package/src/BufferManager/service/BufferManagerCreateStorageBufferService.js +23 -0
- package/src/BufferManager/service/BufferManagerReleaseUniformBufferService.d.ts +12 -0
- package/src/BufferManager/service/BufferManagerReleaseUniformBufferService.js +32 -0
- package/src/BufferManager/service/BufferManagerReleaseVertexBufferService.d.ts +12 -0
- package/src/BufferManager/service/BufferManagerReleaseVertexBufferService.js +32 -0
- package/src/BufferManager/service/BufferManagerUpdateIndirectBufferService.d.ts +12 -0
- package/src/BufferManager/service/BufferManagerUpdateIndirectBufferService.js +20 -0
- package/src/BufferManager/service/BufferManagerUpperPowerOfTwoService.d.ts +10 -0
- package/src/BufferManager/service/BufferManagerUpperPowerOfTwoService.js +18 -0
- package/src/BufferManager/usecase/BufferManagerAcquireStorageBufferUseCase.d.ts +15 -0
- package/src/BufferManager/usecase/BufferManagerAcquireStorageBufferUseCase.js +51 -0
- package/src/BufferManager/usecase/BufferManagerAcquireUniformBufferUseCase.d.ts +13 -0
- package/src/BufferManager/usecase/BufferManagerAcquireUniformBufferUseCase.js +26 -0
- package/src/BufferManager/usecase/BufferManagerAcquireVertexBufferUseCase.d.ts +14 -0
- package/src/BufferManager/usecase/BufferManagerAcquireVertexBufferUseCase.js +46 -0
- package/src/BufferManager/usecase/BufferManagerCleanupStorageBuffersUseCase.d.ts +12 -0
- package/src/BufferManager/usecase/BufferManagerCleanupStorageBuffersUseCase.js +20 -0
- package/src/BufferManager/usecase/BufferManagerReleaseStorageBufferUseCase.d.ts +9 -0
- package/src/BufferManager/usecase/BufferManagerReleaseStorageBufferUseCase.js +15 -0
- package/src/BufferManager.d.ts +93 -0
- package/src/BufferManager.js +487 -0
- package/src/Compute/ComputePipelineManager.d.ts +61 -0
- package/src/Compute/ComputePipelineManager.js +313 -0
- package/src/Compute/service/ComputeExecuteBlurService.d.ts +21 -0
- package/src/Compute/service/ComputeExecuteBlurService.js +81 -0
- package/src/Context/service/ContextComputeBitmapMatrixService.d.ts +1 -0
- package/src/Context/service/ContextComputeBitmapMatrixService.js +74 -0
- package/src/Context/service/ContextComputeGradientMatrixService.d.ts +4 -0
- package/src/Context/service/ContextComputeGradientMatrixService.js +88 -0
- package/src/Context/service/ContextFillSimpleService.d.ts +2 -0
- package/src/Context/service/ContextFillSimpleService.js +28 -0
- package/src/Context/service/ContextFillWithStencilMainService.d.ts +2 -0
- package/src/Context/service/ContextFillWithStencilMainService.js +19 -0
- package/src/Context/service/ContextFillWithStencilService.d.ts +2 -0
- package/src/Context/service/ContextFillWithStencilService.js +19 -0
- package/src/Context/usecase/ContextApplyFilterUseCase.d.ts +5 -0
- package/src/Context/usecase/ContextApplyFilterUseCase.js +668 -0
- package/src/Context/usecase/ContextBitmapFillUseCase.d.ts +4 -0
- package/src/Context/usecase/ContextBitmapFillUseCase.js +210 -0
- package/src/Context/usecase/ContextBitmapStrokeUseCase.d.ts +4 -0
- package/src/Context/usecase/ContextBitmapStrokeUseCase.js +119 -0
- package/src/Context/usecase/ContextClipUseCase.d.ts +5 -0
- package/src/Context/usecase/ContextClipUseCase.js +101 -0
- package/src/Context/usecase/ContextContainerEndLayerUseCase.d.ts +5 -0
- package/src/Context/usecase/ContextContainerEndLayerUseCase.js +476 -0
- package/src/Context/usecase/ContextDrawArraysInstancedUseCase.d.ts +6 -0
- package/src/Context/usecase/ContextDrawArraysInstancedUseCase.js +135 -0
- package/src/Context/usecase/ContextDrawIndirectUseCase.d.ts +6 -0
- package/src/Context/usecase/ContextDrawIndirectUseCase.js +154 -0
- package/src/Context/usecase/ContextGradientFillUseCase.d.ts +4 -0
- package/src/Context/usecase/ContextGradientFillUseCase.js +230 -0
- package/src/Context/usecase/ContextGradientStrokeUseCase.d.ts +4 -0
- package/src/Context/usecase/ContextGradientStrokeUseCase.js +138 -0
- package/src/Context/usecase/ContextProcessComplexBlendQueueUseCase.d.ts +6 -0
- package/src/Context/usecase/ContextProcessComplexBlendQueueUseCase.js +213 -0
- package/src/Context.d.ts +430 -0
- package/src/Context.js +2453 -0
- package/src/FillTexturePool.d.ts +6 -0
- package/src/FillTexturePool.js +72 -0
- package/src/Filter/BevelFilter/FilterApplyBevelFilterUseCase.d.ts +10 -0
- package/src/Filter/BevelFilter/FilterApplyBevelFilterUseCase.js +214 -0
- package/src/Filter/BevelFilterShader.d.ts +2 -0
- package/src/Filter/BevelFilterShader.js +107 -0
- package/src/Filter/BitmapFilterShader.d.ts +2 -0
- package/src/Filter/BitmapFilterShader.js +207 -0
- package/src/Filter/BlurFilter/FilterApplyBlurFilterUseCase.d.ts +16 -0
- package/src/Filter/BlurFilter/FilterApplyBlurFilterUseCase.js +243 -0
- package/src/Filter/BlurFilter/service/BlurFilterComputeShaderService.d.ts +40 -0
- package/src/Filter/BlurFilter/service/BlurFilterComputeShaderService.js +51 -0
- package/src/Filter/BlurFilter/usecase/FilterApplyBlurComputeUseCase.d.ts +25 -0
- package/src/Filter/BlurFilter/usecase/FilterApplyBlurComputeUseCase.js +180 -0
- package/src/Filter/BlurFilterShader.d.ts +5 -0
- package/src/Filter/BlurFilterShader.js +109 -0
- package/src/Filter/BlurFilterUseCase.d.ts +36 -0
- package/src/Filter/BlurFilterUseCase.js +85 -0
- package/src/Filter/ColorMatrixFilter/FilterApplyColorMatrixFilterUseCase.d.ts +12 -0
- package/src/Filter/ColorMatrixFilter/FilterApplyColorMatrixFilterUseCase.js +90 -0
- package/src/Filter/ColorMatrixFilterShader.d.ts +4 -0
- package/src/Filter/ColorMatrixFilterShader.js +51 -0
- package/src/Filter/ConvolutionFilter/FilterApplyConvolutionFilterUseCase.d.ts +6 -0
- package/src/Filter/ConvolutionFilter/FilterApplyConvolutionFilterUseCase.js +144 -0
- package/src/Filter/ConvolutionFilterShader.d.ts +2 -0
- package/src/Filter/ConvolutionFilterShader.js +115 -0
- package/src/Filter/DisplacementMapFilter/FilterApplyDisplacementMapFilterUseCase.d.ts +6 -0
- package/src/Filter/DisplacementMapFilter/FilterApplyDisplacementMapFilterUseCase.js +172 -0
- package/src/Filter/DisplacementMapFilterShader.d.ts +2 -0
- package/src/Filter/DisplacementMapFilterShader.js +114 -0
- package/src/Filter/DropShadowFilter/FilterApplyDropShadowFilterUseCase.d.ts +24 -0
- package/src/Filter/DropShadowFilter/FilterApplyDropShadowFilterUseCase.js +179 -0
- package/src/Filter/DropShadowFilterShader.d.ts +4 -0
- package/src/Filter/DropShadowFilterShader.js +93 -0
- package/src/Filter/FilterGradientLUTCache.d.ts +29 -0
- package/src/Filter/FilterGradientLUTCache.js +84 -0
- package/src/Filter/FilterOffset.d.ts +8 -0
- package/src/Filter/FilterOffset.js +10 -0
- package/src/Filter/GlowFilter/FilterApplyGlowFilterUseCase.d.ts +24 -0
- package/src/Filter/GlowFilter/FilterApplyGlowFilterUseCase.js +143 -0
- package/src/Filter/GlowFilterShader.d.ts +4 -0
- package/src/Filter/GlowFilterShader.js +66 -0
- package/src/Filter/GradientBevelFilter/FilterApplyGradientBevelFilterUseCase.d.ts +29 -0
- package/src/Filter/GradientBevelFilter/FilterApplyGradientBevelFilterUseCase.js +216 -0
- package/src/Filter/GradientGlowFilter/FilterApplyGradientGlowFilterUseCase.d.ts +29 -0
- package/src/Filter/GradientGlowFilter/FilterApplyGradientGlowFilterUseCase.js +164 -0
- package/src/FrameBufferManager/service/FrameBufferManagerCreateRenderPassDescriptorService.d.ts +4 -0
- package/src/FrameBufferManager/service/FrameBufferManagerCreateRenderPassDescriptorService.js +23 -0
- package/src/FrameBufferManager/service/FrameBufferManagerCreateStencilRenderPassDescriptorService.d.ts +4 -0
- package/src/FrameBufferManager/service/FrameBufferManagerCreateStencilRenderPassDescriptorService.js +28 -0
- package/src/FrameBufferManager/service/FrameBufferManagerFlushPendingReleasesService.d.ts +11 -0
- package/src/FrameBufferManager/service/FrameBufferManagerFlushPendingReleasesService.js +19 -0
- package/src/FrameBufferManager/usecase/FrameBufferManagerCreateAttachmentUseCase.d.ts +23 -0
- package/src/FrameBufferManager/usecase/FrameBufferManagerCreateAttachmentUseCase.js +125 -0
- package/src/FrameBufferManager/usecase/FrameBufferManagerReleaseTemporaryAttachmentUseCase.d.ts +14 -0
- package/src/FrameBufferManager/usecase/FrameBufferManagerReleaseTemporaryAttachmentUseCase.js +23 -0
- package/src/FrameBufferManager.d.ts +24 -0
- package/src/FrameBufferManager.js +161 -0
- package/src/Gradient/GradientLUTCache.d.ts +61 -0
- package/src/Gradient/GradientLUTCache.js +153 -0
- package/src/Gradient/GradientLUTGenerator.d.ts +30 -0
- package/src/Gradient/GradientLUTGenerator.js +202 -0
- package/src/Grid.d.ts +18 -0
- package/src/Grid.js +21 -0
- package/src/Mask/service/MaskBeginMaskService.d.ts +9 -0
- package/src/Mask/service/MaskBeginMaskService.js +22 -0
- package/src/Mask/service/MaskEndMaskService.d.ts +15 -0
- package/src/Mask/service/MaskEndMaskService.js +36 -0
- package/src/Mask/service/MaskSetMaskBoundsService.d.ts +13 -0
- package/src/Mask/service/MaskSetMaskBoundsService.js +36 -0
- package/src/Mask/service/MaskUnionMaskService.d.ts +4 -0
- package/src/Mask/service/MaskUnionMaskService.js +74 -0
- package/src/Mask/usecase/MaskBindUseCase.d.ts +10 -0
- package/src/Mask/usecase/MaskBindUseCase.js +20 -0
- package/src/Mask/usecase/MaskLeaveMaskUseCase.d.ts +13 -0
- package/src/Mask/usecase/MaskLeaveMaskUseCase.js +51 -0
- package/src/Mask.d.ts +12 -0
- package/src/Mask.js +41 -0
- package/src/Mesh/service/MeshFillGenerateService.d.ts +19 -0
- package/src/Mesh/service/MeshFillGenerateService.js +76 -0
- package/src/Mesh/service/MeshLerpService.d.ts +13 -0
- package/src/Mesh/service/MeshLerpService.js +17 -0
- package/src/Mesh/service/MeshStrokeFillGenerateService.d.ts +19 -0
- package/src/Mesh/service/MeshStrokeFillGenerateService.js +76 -0
- package/src/Mesh/usecase/MeshBitmapStrokeGenerateUseCase.d.ts +13 -0
- package/src/Mesh/usecase/MeshBitmapStrokeGenerateUseCase.js +65 -0
- package/src/Mesh/usecase/MeshFillGenerateUseCase.d.ts +12 -0
- package/src/Mesh/usecase/MeshFillGenerateUseCase.js +48 -0
- package/src/Mesh/usecase/MeshGradientStrokeGenerateUseCase.d.ts +13 -0
- package/src/Mesh/usecase/MeshGradientStrokeGenerateUseCase.js +65 -0
- package/src/Mesh/usecase/MeshSplitQuadraticBezierUseCase.d.ts +14 -0
- package/src/Mesh/usecase/MeshSplitQuadraticBezierUseCase.js +28 -0
- package/src/Mesh/usecase/MeshStrokeFillGenerateUseCase.d.ts +18 -0
- package/src/Mesh/usecase/MeshStrokeFillGenerateUseCase.js +54 -0
- package/src/Mesh/usecase/MeshStrokeGenerateUseCase.d.ts +25 -0
- package/src/Mesh/usecase/MeshStrokeGenerateUseCase.js +608 -0
- package/src/PathCommand.d.ts +123 -0
- package/src/PathCommand.js +317 -0
- package/src/SamplerCache/service/SamplerCacheCreateCommonSamplersService.d.ts +11 -0
- package/src/SamplerCache/service/SamplerCacheCreateCommonSamplersService.js +35 -0
- package/src/SamplerCache/service/SamplerCacheGenerateKeyService.d.ts +13 -0
- package/src/SamplerCache/service/SamplerCacheGenerateKeyService.js +15 -0
- package/src/SamplerCache/service/SamplerCacheGetOrCreateService.d.ts +15 -0
- package/src/SamplerCache/service/SamplerCacheGetOrCreateService.js +30 -0
- package/src/SamplerCache.d.ts +18 -0
- package/src/SamplerCache.js +61 -0
- package/src/Shader/BlendModeShader.d.ts +51 -0
- package/src/Shader/BlendModeShader.js +71 -0
- package/src/Shader/GradientLUTGenerator/service/GradientLUTCalculateResolutionService.d.ts +12 -0
- package/src/Shader/GradientLUTGenerator/service/GradientLUTCalculateResolutionService.js +28 -0
- package/src/Shader/GradientLUTGenerator/service/GradientLUTGeneratePixelsService.d.ts +13 -0
- package/src/Shader/GradientLUTGenerator/service/GradientLUTGeneratePixelsService.js +61 -0
- package/src/Shader/GradientLUTGenerator/service/GradientLUTInterpolateColorService.d.ts +19 -0
- package/src/Shader/GradientLUTGenerator/service/GradientLUTInterpolateColorService.js +37 -0
- package/src/Shader/GradientLUTGenerator/service/GradientLUTParseStopsService.d.ts +11 -0
- package/src/Shader/GradientLUTGenerator/service/GradientLUTParseStopsService.js +24 -0
- package/src/Shader/GradientLUTGenerator/usecase/GradientLUTGenerateDataUseCase.d.ts +14 -0
- package/src/Shader/GradientLUTGenerator/usecase/GradientLUTGenerateDataUseCase.js +24 -0
- package/src/Shader/PipelineManager.d.ts +57 -0
- package/src/Shader/PipelineManager.js +2868 -0
- package/src/Shader/ShaderInstancedManager.d.ts +8 -0
- package/src/Shader/ShaderInstancedManager.js +18 -0
- package/src/Shader/ShaderSource.d.ts +60 -0
- package/src/Shader/ShaderSource.js +518 -0
- package/src/Shader/wgsl/common/SharedWgsl.d.ts +5 -0
- package/src/Shader/wgsl/common/SharedWgsl.js +37 -0
- package/src/Shader/wgsl/fragment/BasicFragment.d.ts +2 -0
- package/src/Shader/wgsl/fragment/BasicFragment.js +28 -0
- package/src/Shader/wgsl/fragment/BitmapFragment.d.ts +1 -0
- package/src/Shader/wgsl/fragment/BitmapFragment.js +43 -0
- package/src/Shader/wgsl/fragment/BlendFragment.d.ts +8 -0
- package/src/Shader/wgsl/fragment/BlendFragment.js +63 -0
- package/src/Shader/wgsl/fragment/EffectFragment.d.ts +6 -0
- package/src/Shader/wgsl/fragment/EffectFragment.js +324 -0
- package/src/Shader/wgsl/fragment/FillFragment.d.ts +1 -0
- package/src/Shader/wgsl/fragment/FillFragment.js +28 -0
- package/src/Shader/wgsl/fragment/FilterFragment.d.ts +10 -0
- package/src/Shader/wgsl/fragment/FilterFragment.js +212 -0
- package/src/Shader/wgsl/fragment/GradientFragment.d.ts +3 -0
- package/src/Shader/wgsl/fragment/GradientFragment.js +118 -0
- package/src/Shader/wgsl/fragment/InstancedFragment.d.ts +1 -0
- package/src/Shader/wgsl/fragment/InstancedFragment.js +20 -0
- package/src/Shader/wgsl/fragment/MaskFragment.d.ts +1 -0
- package/src/Shader/wgsl/fragment/MaskFragment.js +17 -0
- package/src/Shader/wgsl/fragment/StencilFragment.d.ts +2 -0
- package/src/Shader/wgsl/fragment/StencilFragment.js +33 -0
- package/src/Shader/wgsl/vertex/BasicVertex.d.ts +1 -0
- package/src/Shader/wgsl/vertex/BasicVertex.js +37 -0
- package/src/Shader/wgsl/vertex/BitmapVertex.d.ts +1 -0
- package/src/Shader/wgsl/vertex/BitmapVertex.js +43 -0
- package/src/Shader/wgsl/vertex/FillVertex.d.ts +1 -0
- package/src/Shader/wgsl/vertex/FillVertex.js +35 -0
- package/src/Shader/wgsl/vertex/FilterVertex.d.ts +12 -0
- package/src/Shader/wgsl/vertex/FilterVertex.js +193 -0
- package/src/Shader/wgsl/vertex/GradientVertex.d.ts +1 -0
- package/src/Shader/wgsl/vertex/GradientVertex.js +44 -0
- package/src/Shader/wgsl/vertex/InstancedVertex.d.ts +1 -0
- package/src/Shader/wgsl/vertex/InstancedVertex.js +48 -0
- package/src/Shader/wgsl/vertex/MaskVertex.d.ts +1 -0
- package/src/Shader/wgsl/vertex/MaskVertex.js +36 -0
- package/src/Shader/wgsl/vertex/StencilVertex.d.ts +2 -0
- package/src/Shader/wgsl/vertex/StencilVertex.js +66 -0
- package/src/TextureManager/service/TextureManagerInitializeSamplersService.d.ts +11 -0
- package/src/TextureManager/service/TextureManagerInitializeSamplersService.js +48 -0
- package/src/TextureManager/usecase/TextureManagerCreateTextureFromImageBitmapUseCase.d.ts +13 -0
- package/src/TextureManager/usecase/TextureManagerCreateTextureFromImageBitmapUseCase.js +30 -0
- package/src/TextureManager/usecase/TextureManagerCreateTextureFromPixelsUseCase.d.ts +15 -0
- package/src/TextureManager/usecase/TextureManagerCreateTextureFromPixelsUseCase.js +26 -0
- package/src/TextureManager.d.ts +15 -0
- package/src/TextureManager.js +87 -0
- package/src/TexturePool/service/TexturePoolCleanupService.d.ts +14 -0
- package/src/TexturePool/service/TexturePoolCleanupService.js +28 -0
- package/src/TexturePool/service/TexturePoolEvictOldestService.d.ts +11 -0
- package/src/TexturePool/service/TexturePoolEvictOldestService.js +24 -0
- package/src/TexturePool/service/TexturePoolReleaseService.d.ts +13 -0
- package/src/TexturePool/service/TexturePoolReleaseService.js +22 -0
- package/src/TexturePool/usecase/TexturePoolAcquireUseCase.d.ts +19 -0
- package/src/TexturePool/usecase/TexturePoolAcquireUseCase.js +90 -0
- package/src/TexturePool.d.ts +69 -0
- package/src/TexturePool.js +151 -0
- package/src/WebGPUUtil.d.ts +102 -0
- package/src/WebGPUUtil.js +157 -0
- package/src/index.d.ts +1 -0
- package/src/index.js +1 -0
- package/src/interface/IAttachmentObject.d.ts +41 -0
- package/src/interface/IAttachmentObject.js +1 -0
- package/src/interface/IBlendMode.d.ts +1 -0
- package/src/interface/IBlendMode.js +1 -0
- package/src/interface/IBlendState.d.ts +8 -0
- package/src/interface/IBlendState.js +1 -0
- package/src/interface/IBounds.d.ts +6 -0
- package/src/interface/IBounds.js +1 -0
- package/src/interface/ICachedBindGroup.d.ts +8 -0
- package/src/interface/ICachedBindGroup.js +1 -0
- package/src/interface/IColorBufferObject.d.ts +17 -0
- package/src/interface/IColorBufferObject.js +1 -0
- package/src/interface/IComplexBlendItem.d.ts +19 -0
- package/src/interface/IComplexBlendItem.js +1 -0
- package/src/interface/IFilterConfig.d.ts +29 -0
- package/src/interface/IFilterConfig.js +1 -0
- package/src/interface/IGradientLUTData.d.ts +8 -0
- package/src/interface/IGradientLUTData.js +1 -0
- package/src/interface/IGradientStop.d.ts +11 -0
- package/src/interface/IGradientStop.js +1 -0
- package/src/interface/ILocalFilterConfig.d.ts +21 -0
- package/src/interface/ILocalFilterConfig.js +1 -0
- package/src/interface/IMeshResult.d.ts +8 -0
- package/src/interface/IMeshResult.js +1 -0
- package/src/interface/IPath.d.ts +8 -0
- package/src/interface/IPath.js +1 -0
- package/src/interface/IPoint.d.ts +4 -0
- package/src/interface/IPoint.js +1 -0
- package/src/interface/IPooledBuffer.d.ts +8 -0
- package/src/interface/IPooledBuffer.js +1 -0
- package/src/interface/IPooledTexture.d.ts +17 -0
- package/src/interface/IPooledTexture.js +1 -0
- package/src/interface/IQuadraticSegment.d.ts +9 -0
- package/src/interface/IQuadraticSegment.js +1 -0
- package/src/interface/IRectangleInfo.d.ts +13 -0
- package/src/interface/IRectangleInfo.js +1 -0
- package/src/interface/IStencilBufferObject.d.ts +16 -0
- package/src/interface/IStencilBufferObject.js +1 -0
- package/src/interface/IStorageBufferConfig.d.ts +40 -0
- package/src/interface/IStorageBufferConfig.js +1 -0
- package/src/interface/ITextureObject.d.ts +16 -0
- package/src/interface/ITextureObject.js +1 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { renderQueue } from "@next2d/render-queue";
|
|
2
|
+
/**
|
|
3
|
+
* @description WebGPU用インスタンスシェーダーマネージャー
|
|
4
|
+
*/
|
|
5
|
+
export class ShaderInstancedManager {
|
|
6
|
+
constructor() {
|
|
7
|
+
Object.defineProperty(this, "count", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
configurable: true,
|
|
10
|
+
writable: true,
|
|
11
|
+
value: void 0
|
|
12
|
+
});
|
|
13
|
+
this.count = 0;
|
|
14
|
+
}
|
|
15
|
+
clear() {
|
|
16
|
+
this.count = renderQueue.offset = 0;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export declare class ShaderSource {
|
|
2
|
+
static getFillVertexShader(): string;
|
|
3
|
+
static getFillMainVertexShader(): string;
|
|
4
|
+
static getFillFragmentShader(): string;
|
|
5
|
+
static getStencilWriteVertexShader(): string;
|
|
6
|
+
static getStencilWriteMainVertexShader(): string;
|
|
7
|
+
static getStencilWriteFragmentShader(): string;
|
|
8
|
+
static getStencilFillVertexShader(): string;
|
|
9
|
+
static getStencilFillMainVertexShader(): string;
|
|
10
|
+
static getStencilFillFragmentShader(): string;
|
|
11
|
+
static getMaskVertexShader(): string;
|
|
12
|
+
static getMaskFragmentShader(): string;
|
|
13
|
+
static getBasicVertexShader(): string;
|
|
14
|
+
static getBasicMainVertexShader(): string;
|
|
15
|
+
static getBasicFragmentShader(): string;
|
|
16
|
+
static getTextureFragmentShader(): string;
|
|
17
|
+
static getInstancedVertexShader(): string;
|
|
18
|
+
static getInstancedFragmentShader(): string;
|
|
19
|
+
static getGradientFillVertexShader(): string;
|
|
20
|
+
static getGradientFillMainVertexShader(): string;
|
|
21
|
+
static getGradientFillFragmentShader(): string;
|
|
22
|
+
static getGradientFillStencilFragmentShader(): string;
|
|
23
|
+
static getGradientFragmentShader(): string;
|
|
24
|
+
static getBitmapFillVertexShader(): string;
|
|
25
|
+
static getBitmapFillMainVertexShader(): string;
|
|
26
|
+
static getBitmapFillFragmentShader(): string;
|
|
27
|
+
static getBlendFragmentShader(): string;
|
|
28
|
+
static getBlurFilterVertexShader(): string;
|
|
29
|
+
static getBitmapSyncVertexShader(): string;
|
|
30
|
+
static getBitmapSyncFragmentShader(): string;
|
|
31
|
+
static getBlurFilterFragmentShader(halfBlur: number): string;
|
|
32
|
+
static getTextureCopyFragmentShader(): string;
|
|
33
|
+
static getBlurTextureCopyFragmentShader(): string;
|
|
34
|
+
static getFilterOutputFragmentShader(): string;
|
|
35
|
+
static getColorTransformFragmentShader(): string;
|
|
36
|
+
static getYFlipColorTransformFragmentShader(): string;
|
|
37
|
+
static getColorMatrixFilterFragmentShader(): string;
|
|
38
|
+
static getGlowFilterFragmentShader(): string;
|
|
39
|
+
static getDropShadowFilterFragmentShader(): string;
|
|
40
|
+
static getGradientGlowFilterFragmentShader(): string;
|
|
41
|
+
static getGradientBevelFilterFragmentShader(): string;
|
|
42
|
+
static getBevelFilterFragmentShader(): string;
|
|
43
|
+
static getBevelBaseFragmentShader(): string;
|
|
44
|
+
static getConvolutionFilterFragmentShader(matrixX: number, matrixY: number, preserveAlpha?: boolean, clamp?: boolean): string;
|
|
45
|
+
static getComplexBlendFragmentShader(): string;
|
|
46
|
+
static getBlendModeIndex(blendMode: string): number;
|
|
47
|
+
static getUnifiedComplexBlendFragmentShader(): string;
|
|
48
|
+
static getDisplacementMapFilterFragmentShader(componentX: number, componentY: number, mode: number): string;
|
|
49
|
+
static getNodeClearVertexShader(): string;
|
|
50
|
+
static getNodeClearFragmentShader(): string;
|
|
51
|
+
static getPositionedTextureVertexShader(): string;
|
|
52
|
+
static getTextureScaleVertexShader(): string;
|
|
53
|
+
static getTextureScaleBlendVertexShader(): string;
|
|
54
|
+
static getComplexBlendScaleVertexShader(): string;
|
|
55
|
+
static getComplexBlendVertexShader(): string;
|
|
56
|
+
static getComplexBlendCopyVertexShader(): string;
|
|
57
|
+
static getComplexBlendOutputVertexShader(): string;
|
|
58
|
+
static getFilterComplexBlendOutputVertexShader(): string;
|
|
59
|
+
static getPositionedTextureFragmentShader(): string;
|
|
60
|
+
}
|
|
@@ -0,0 +1,518 @@
|
|
|
1
|
+
import { FillVertex } from "./wgsl/vertex/FillVertex";
|
|
2
|
+
import { StencilWriteVertex, StencilFillVertex } from "./wgsl/vertex/StencilVertex";
|
|
3
|
+
import { MaskVertex } from "./wgsl/vertex/MaskVertex";
|
|
4
|
+
import { BasicVertex } from "./wgsl/vertex/BasicVertex";
|
|
5
|
+
import { InstancedVertex } from "./wgsl/vertex/InstancedVertex";
|
|
6
|
+
import { GradientFillVertex } from "./wgsl/vertex/GradientVertex";
|
|
7
|
+
import { BitmapFillVertex } from "./wgsl/vertex/BitmapVertex";
|
|
8
|
+
import { BlurFilterVertex, NodeClearVertex, PositionedTextureVertex, BitmapSyncVertex, TextureScaleVertex, TextureScaleBlendVertex, ComplexBlendScaleVertex, ComplexBlendVertex, ComplexBlendCopyVertex, ComplexBlendOutputVertex, FilterComplexBlendOutputVertex } from "./wgsl/vertex/FilterVertex";
|
|
9
|
+
import { FillFragment } from "./wgsl/fragment/FillFragment";
|
|
10
|
+
import { StencilWriteFragment, StencilFillFragment } from "./wgsl/fragment/StencilFragment";
|
|
11
|
+
import { MaskFragment } from "./wgsl/fragment/MaskFragment";
|
|
12
|
+
import { BasicFragment, TextureFragment } from "./wgsl/fragment/BasicFragment";
|
|
13
|
+
import { InstancedFragment } from "./wgsl/fragment/InstancedFragment";
|
|
14
|
+
import { GradientFillFragment, GradientFillStencilFragment, GradientFragment } from "./wgsl/fragment/GradientFragment";
|
|
15
|
+
import { BitmapFillFragment } from "./wgsl/fragment/BitmapFragment";
|
|
16
|
+
import { TextureCopyFragment, BlurTextureCopyFragment, FilterOutputFragment, ColorTransformFragment, YFlipColorTransformFragment, ColorMatrixFilterFragment, NodeClearFragment, PositionedTextureFragment, BlendGenericFragment, BitmapSyncFragment } from "./wgsl/fragment/FilterFragment";
|
|
17
|
+
import { GlowFilterFragment, DropShadowFilterFragment, GradientGlowFilterFragment, GradientBevelFilterFragment, BevelFilterFragment, BevelBaseFragment } from "./wgsl/fragment/EffectFragment";
|
|
18
|
+
import { WgslIsInside, WgslVertexOutput } from "./wgsl/common/SharedWgsl";
|
|
19
|
+
export class ShaderSource {
|
|
20
|
+
static getFillVertexShader() {
|
|
21
|
+
return FillVertex;
|
|
22
|
+
}
|
|
23
|
+
static getFillMainVertexShader() {
|
|
24
|
+
return FillVertex;
|
|
25
|
+
}
|
|
26
|
+
static getFillFragmentShader() {
|
|
27
|
+
return FillFragment;
|
|
28
|
+
}
|
|
29
|
+
static getStencilWriteVertexShader() {
|
|
30
|
+
return StencilWriteVertex;
|
|
31
|
+
}
|
|
32
|
+
static getStencilWriteMainVertexShader() {
|
|
33
|
+
return StencilWriteVertex;
|
|
34
|
+
}
|
|
35
|
+
static getStencilWriteFragmentShader() {
|
|
36
|
+
return StencilWriteFragment;
|
|
37
|
+
}
|
|
38
|
+
static getStencilFillVertexShader() {
|
|
39
|
+
return StencilFillVertex;
|
|
40
|
+
}
|
|
41
|
+
static getStencilFillMainVertexShader() {
|
|
42
|
+
return StencilFillVertex;
|
|
43
|
+
}
|
|
44
|
+
static getStencilFillFragmentShader() {
|
|
45
|
+
return StencilFillFragment;
|
|
46
|
+
}
|
|
47
|
+
static getMaskVertexShader() {
|
|
48
|
+
return MaskVertex;
|
|
49
|
+
}
|
|
50
|
+
static getMaskFragmentShader() {
|
|
51
|
+
return MaskFragment;
|
|
52
|
+
}
|
|
53
|
+
static getBasicVertexShader() {
|
|
54
|
+
return BasicVertex;
|
|
55
|
+
}
|
|
56
|
+
static getBasicMainVertexShader() {
|
|
57
|
+
return BasicVertex;
|
|
58
|
+
}
|
|
59
|
+
static getBasicFragmentShader() {
|
|
60
|
+
return BasicFragment;
|
|
61
|
+
}
|
|
62
|
+
static getTextureFragmentShader() {
|
|
63
|
+
return TextureFragment;
|
|
64
|
+
}
|
|
65
|
+
static getInstancedVertexShader() {
|
|
66
|
+
return InstancedVertex;
|
|
67
|
+
}
|
|
68
|
+
static getInstancedFragmentShader() {
|
|
69
|
+
return InstancedFragment;
|
|
70
|
+
}
|
|
71
|
+
static getGradientFillVertexShader() {
|
|
72
|
+
return GradientFillVertex;
|
|
73
|
+
}
|
|
74
|
+
static getGradientFillMainVertexShader() {
|
|
75
|
+
return GradientFillVertex;
|
|
76
|
+
}
|
|
77
|
+
static getGradientFillFragmentShader() {
|
|
78
|
+
return GradientFillFragment;
|
|
79
|
+
}
|
|
80
|
+
static getGradientFillStencilFragmentShader() {
|
|
81
|
+
return GradientFillStencilFragment;
|
|
82
|
+
}
|
|
83
|
+
static getGradientFragmentShader() {
|
|
84
|
+
return GradientFragment;
|
|
85
|
+
}
|
|
86
|
+
static getBitmapFillVertexShader() {
|
|
87
|
+
return BitmapFillVertex;
|
|
88
|
+
}
|
|
89
|
+
static getBitmapFillMainVertexShader() {
|
|
90
|
+
return BitmapFillVertex;
|
|
91
|
+
}
|
|
92
|
+
static getBitmapFillFragmentShader() {
|
|
93
|
+
return BitmapFillFragment;
|
|
94
|
+
}
|
|
95
|
+
static getBlendFragmentShader() {
|
|
96
|
+
return BlendGenericFragment;
|
|
97
|
+
}
|
|
98
|
+
static getBlurFilterVertexShader() {
|
|
99
|
+
return BlurFilterVertex;
|
|
100
|
+
}
|
|
101
|
+
static getBitmapSyncVertexShader() {
|
|
102
|
+
return BitmapSyncVertex;
|
|
103
|
+
}
|
|
104
|
+
static getBitmapSyncFragmentShader() {
|
|
105
|
+
return BitmapSyncFragment;
|
|
106
|
+
}
|
|
107
|
+
static getBlurFilterFragmentShader(halfBlur) {
|
|
108
|
+
const halfBlurFixed = halfBlur.toFixed(1);
|
|
109
|
+
return /* wgsl */ `
|
|
110
|
+
${WgslVertexOutput}
|
|
111
|
+
|
|
112
|
+
struct BlurUniforms {
|
|
113
|
+
offset: vec2<f32>,
|
|
114
|
+
fraction: f32,
|
|
115
|
+
samples: f32,
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
@group(0) @binding(0) var<uniform> uniforms: BlurUniforms;
|
|
119
|
+
@group(0) @binding(1) var textureSampler: sampler;
|
|
120
|
+
@group(0) @binding(2) var inputTexture: texture_2d<f32>;
|
|
121
|
+
|
|
122
|
+
@fragment
|
|
123
|
+
fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
124
|
+
let offset = uniforms.offset;
|
|
125
|
+
let fraction = uniforms.fraction;
|
|
126
|
+
let samples = uniforms.samples;
|
|
127
|
+
var color = textureSample(inputTexture, textureSampler, input.texCoord);
|
|
128
|
+
for (var i: f32 = 1.0; i < ${halfBlurFixed}; i += 1.0) {
|
|
129
|
+
color += textureSample(inputTexture, textureSampler, input.texCoord + offset * i);
|
|
130
|
+
color += textureSample(inputTexture, textureSampler, input.texCoord - offset * i);
|
|
131
|
+
}
|
|
132
|
+
color += textureSample(inputTexture, textureSampler, input.texCoord + offset * ${halfBlurFixed}) * fraction;
|
|
133
|
+
color += textureSample(inputTexture, textureSampler, input.texCoord - offset * ${halfBlurFixed}) * fraction;
|
|
134
|
+
color /= samples;
|
|
135
|
+
return color;
|
|
136
|
+
}
|
|
137
|
+
`;
|
|
138
|
+
}
|
|
139
|
+
static getTextureCopyFragmentShader() {
|
|
140
|
+
return TextureCopyFragment;
|
|
141
|
+
}
|
|
142
|
+
static getBlurTextureCopyFragmentShader() {
|
|
143
|
+
return BlurTextureCopyFragment;
|
|
144
|
+
}
|
|
145
|
+
static getFilterOutputFragmentShader() {
|
|
146
|
+
return FilterOutputFragment;
|
|
147
|
+
}
|
|
148
|
+
static getColorTransformFragmentShader() {
|
|
149
|
+
return ColorTransformFragment;
|
|
150
|
+
}
|
|
151
|
+
static getYFlipColorTransformFragmentShader() {
|
|
152
|
+
return YFlipColorTransformFragment;
|
|
153
|
+
}
|
|
154
|
+
static getColorMatrixFilterFragmentShader() {
|
|
155
|
+
return ColorMatrixFilterFragment;
|
|
156
|
+
}
|
|
157
|
+
static getGlowFilterFragmentShader() {
|
|
158
|
+
return GlowFilterFragment;
|
|
159
|
+
}
|
|
160
|
+
static getDropShadowFilterFragmentShader() {
|
|
161
|
+
return DropShadowFilterFragment;
|
|
162
|
+
}
|
|
163
|
+
static getGradientGlowFilterFragmentShader() {
|
|
164
|
+
return GradientGlowFilterFragment;
|
|
165
|
+
}
|
|
166
|
+
static getGradientBevelFilterFragmentShader() {
|
|
167
|
+
return GradientBevelFilterFragment;
|
|
168
|
+
}
|
|
169
|
+
static getBevelFilterFragmentShader() {
|
|
170
|
+
return BevelFilterFragment;
|
|
171
|
+
}
|
|
172
|
+
static getBevelBaseFragmentShader() {
|
|
173
|
+
return BevelBaseFragment;
|
|
174
|
+
}
|
|
175
|
+
static getConvolutionFilterFragmentShader(matrixX, matrixY, preserveAlpha = true, clamp = true) {
|
|
176
|
+
const halfX = Math.floor(matrixX * 0.5);
|
|
177
|
+
const halfY = Math.floor(matrixY * 0.5);
|
|
178
|
+
const size = matrixX * matrixY;
|
|
179
|
+
let matrixStatement = "";
|
|
180
|
+
for (let idx = 0; idx < size; idx++) {
|
|
181
|
+
matrixStatement += `
|
|
182
|
+
result = result + getWeightedColor(${idx}, getMatrixWeight(${idx}));`;
|
|
183
|
+
}
|
|
184
|
+
const preserveAlphaStatement = preserveAlpha
|
|
185
|
+
? "result.a = textureSample(sourceTexture, sourceSampler, input.texCoord).a;"
|
|
186
|
+
: "";
|
|
187
|
+
const clampStatement = clamp
|
|
188
|
+
? ""
|
|
189
|
+
: `
|
|
190
|
+
let substituteColor = uniforms.substituteColor;
|
|
191
|
+
color = mix(substituteColor, color, isInside(uv));`;
|
|
192
|
+
return `
|
|
193
|
+
struct ConvolutionUniforms {
|
|
194
|
+
rcpSize: vec2<f32>,
|
|
195
|
+
rcpDivisor: f32,
|
|
196
|
+
bias: f32,
|
|
197
|
+
substituteColor: vec4<f32>,
|
|
198
|
+
matrix: array<vec4<f32>, ${Math.ceil(size / 4)}>,
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
@group(0) @binding(0) var<uniform> uniforms: ConvolutionUniforms;
|
|
202
|
+
@group(0) @binding(1) var sourceSampler: sampler;
|
|
203
|
+
@group(0) @binding(2) var sourceTexture: texture_2d<f32>;
|
|
204
|
+
|
|
205
|
+
${WgslVertexOutput}
|
|
206
|
+
|
|
207
|
+
${WgslIsInside}
|
|
208
|
+
|
|
209
|
+
fn getMatrixWeight(index: i32) -> f32 {
|
|
210
|
+
let vecIndex = index / 4;
|
|
211
|
+
let component = index % 4;
|
|
212
|
+
let vec = uniforms.matrix[vecIndex];
|
|
213
|
+
if (component == 0) { return vec.x; }
|
|
214
|
+
else if (component == 1) { return vec.y; }
|
|
215
|
+
else if (component == 2) { return vec.z; }
|
|
216
|
+
else { return vec.w; }
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
fn getWeightedColor(i: i32, weight: f32) -> vec4<f32> {
|
|
220
|
+
let rcpSize = uniforms.rcpSize;
|
|
221
|
+
let iDivX = i / ${matrixX};
|
|
222
|
+
let iModX = i - ${matrixX} * iDivX;
|
|
223
|
+
let offset = vec2<f32>(f32(iModX - ${halfX}), f32(${halfY} - iDivX));
|
|
224
|
+
var uv = input.texCoord + offset * rcpSize;
|
|
225
|
+
var color = textureSample(sourceTexture, sourceSampler, uv);
|
|
226
|
+
color = vec4<f32>(color.rgb / max(0.0001, color.a), color.a);
|
|
227
|
+
${clampStatement}
|
|
228
|
+
return color * weight;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
var<private> input: VertexOutput;
|
|
232
|
+
|
|
233
|
+
@vertex
|
|
234
|
+
fn vs_main(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {
|
|
235
|
+
var positions = array<vec2<f32>, 6>(
|
|
236
|
+
vec2<f32>(-1.0, -1.0),
|
|
237
|
+
vec2<f32>(1.0, -1.0),
|
|
238
|
+
vec2<f32>(-1.0, 1.0),
|
|
239
|
+
vec2<f32>(-1.0, 1.0),
|
|
240
|
+
vec2<f32>(1.0, -1.0),
|
|
241
|
+
vec2<f32>(1.0, 1.0)
|
|
242
|
+
);
|
|
243
|
+
var texCoords = array<vec2<f32>, 6>(
|
|
244
|
+
vec2<f32>(0.0, 1.0),
|
|
245
|
+
vec2<f32>(1.0, 1.0),
|
|
246
|
+
vec2<f32>(0.0, 0.0),
|
|
247
|
+
vec2<f32>(0.0, 0.0),
|
|
248
|
+
vec2<f32>(1.0, 1.0),
|
|
249
|
+
vec2<f32>(1.0, 0.0)
|
|
250
|
+
);
|
|
251
|
+
var output: VertexOutput;
|
|
252
|
+
output.position = vec4<f32>(positions[vertexIndex], 0.0, 1.0);
|
|
253
|
+
output.texCoord = texCoords[vertexIndex];
|
|
254
|
+
return output;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
@fragment
|
|
258
|
+
fn fs_main(fragInput: VertexOutput) -> @location(0) vec4<f32> {
|
|
259
|
+
input = fragInput;
|
|
260
|
+
let rcpDivisor = uniforms.rcpDivisor;
|
|
261
|
+
let bias = uniforms.bias;
|
|
262
|
+
var result = vec4<f32>(0.0);
|
|
263
|
+
${matrixStatement}
|
|
264
|
+
result = clamp(result * rcpDivisor + bias, vec4<f32>(0.0), vec4<f32>(1.0));
|
|
265
|
+
${preserveAlphaStatement}
|
|
266
|
+
result = vec4<f32>(result.rgb * result.a, result.a);
|
|
267
|
+
return result;
|
|
268
|
+
}
|
|
269
|
+
`;
|
|
270
|
+
}
|
|
271
|
+
static getComplexBlendFragmentShader() {
|
|
272
|
+
return ShaderSource.getUnifiedComplexBlendFragmentShader();
|
|
273
|
+
}
|
|
274
|
+
static getBlendModeIndex(blendMode) {
|
|
275
|
+
switch (blendMode) {
|
|
276
|
+
case "subtract": return 0;
|
|
277
|
+
case "multiply": return 1;
|
|
278
|
+
case "lighten": return 2;
|
|
279
|
+
case "darken": return 3;
|
|
280
|
+
case "overlay": return 4;
|
|
281
|
+
case "hardlight": return 5;
|
|
282
|
+
case "difference": return 6;
|
|
283
|
+
case "invert": return 7;
|
|
284
|
+
default: return 1;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
static getUnifiedComplexBlendFragmentShader() {
|
|
288
|
+
return /* wgsl */ `
|
|
289
|
+
${WgslVertexOutput}
|
|
290
|
+
|
|
291
|
+
struct BlendUniforms {
|
|
292
|
+
mulColor: vec4<f32>,
|
|
293
|
+
addColor: vec4<f32>,
|
|
294
|
+
blendMode: f32,
|
|
295
|
+
_pad0: f32,
|
|
296
|
+
_pad1: f32,
|
|
297
|
+
_pad2: f32,
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
@group(0) @binding(0) var<uniform> uniforms: BlendUniforms;
|
|
301
|
+
@group(0) @binding(1) var textureSampler: sampler;
|
|
302
|
+
@group(0) @binding(2) var dstTexture: texture_2d<f32>;
|
|
303
|
+
@group(0) @binding(3) var srcTexture: texture_2d<f32>;
|
|
304
|
+
|
|
305
|
+
fn blend(src: vec4<f32>, dst: vec4<f32>, mode: i32) -> vec4<f32> {
|
|
306
|
+
if (src.a == 0.0) { return dst; }
|
|
307
|
+
if (dst.a == 0.0) { return src; }
|
|
308
|
+
|
|
309
|
+
let a = src - src * dst.a;
|
|
310
|
+
let b = dst - dst * src.a;
|
|
311
|
+
|
|
312
|
+
if (mode == 1) {
|
|
313
|
+
let c = src * dst;
|
|
314
|
+
return a + b + c;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
let srcRgb = src.rgb / src.a;
|
|
318
|
+
let dstRgb = dst.rgb / dst.a;
|
|
319
|
+
|
|
320
|
+
var blended: vec3<f32>;
|
|
321
|
+
|
|
322
|
+
switch (mode) {
|
|
323
|
+
case 0: {
|
|
324
|
+
blended = dstRgb - srcRgb;
|
|
325
|
+
}
|
|
326
|
+
case 2: {
|
|
327
|
+
blended = mix(srcRgb, dstRgb, step(srcRgb, dstRgb));
|
|
328
|
+
}
|
|
329
|
+
case 3: {
|
|
330
|
+
blended = mix(srcRgb, dstRgb, step(dstRgb, srcRgb));
|
|
331
|
+
}
|
|
332
|
+
case 4: {
|
|
333
|
+
let mul = srcRgb * dstRgb;
|
|
334
|
+
let c1 = 2.0 * mul;
|
|
335
|
+
let c2 = 2.0 * (srcRgb + dstRgb - mul) - 1.0;
|
|
336
|
+
blended = mix(c1, c2, step(vec3<f32>(0.5), dstRgb));
|
|
337
|
+
}
|
|
338
|
+
case 5: {
|
|
339
|
+
let mul = srcRgb * dstRgb;
|
|
340
|
+
let c1 = 2.0 * mul;
|
|
341
|
+
let c2 = 2.0 * (srcRgb + dstRgb - mul) - 1.0;
|
|
342
|
+
blended = mix(c1, c2, step(vec3<f32>(0.5), srcRgb));
|
|
343
|
+
}
|
|
344
|
+
case 6: {
|
|
345
|
+
blended = abs(srcRgb - dstRgb);
|
|
346
|
+
}
|
|
347
|
+
case 7: {
|
|
348
|
+
let ib = dst - dst * src.a;
|
|
349
|
+
let ic = vec4<f32>(src.a - dst.rgb * src.a, src.a);
|
|
350
|
+
return ib + ic;
|
|
351
|
+
}
|
|
352
|
+
default: {
|
|
353
|
+
blended = srcRgb;
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
var c = vec4<f32>(blended, src.a * dst.a);
|
|
358
|
+
c = vec4<f32>(c.rgb * c.a, c.a);
|
|
359
|
+
return a + b + c;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
@fragment
|
|
363
|
+
fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
364
|
+
var dst = textureSample(dstTexture, textureSampler, input.texCoord);
|
|
365
|
+
var src = textureSample(srcTexture, textureSampler, input.texCoord);
|
|
366
|
+
let mul = uniforms.mulColor;
|
|
367
|
+
let add = uniforms.addColor;
|
|
368
|
+
if (mul.x != 1.0 || mul.y != 1.0 || mul.z != 1.0 || mul.w != 1.0
|
|
369
|
+
|| add.x != 0.0 || add.y != 0.0 || add.z != 0.0) {
|
|
370
|
+
src = vec4<f32>(src.rgb / max(vec3<f32>(0.0001), vec3<f32>(src.a)), src.a);
|
|
371
|
+
src = clamp(src * mul + add, vec4<f32>(0.0), vec4<f32>(1.0));
|
|
372
|
+
src = vec4<f32>(src.rgb * src.a, src.a);
|
|
373
|
+
}
|
|
374
|
+
return blend(src, dst, i32(uniforms.blendMode));
|
|
375
|
+
}
|
|
376
|
+
`;
|
|
377
|
+
}
|
|
378
|
+
static getDisplacementMapFilterFragmentShader(componentX, componentY, mode) {
|
|
379
|
+
let cx;
|
|
380
|
+
let cy;
|
|
381
|
+
switch (componentX) {
|
|
382
|
+
case 1:
|
|
383
|
+
cx = "mapColor.r";
|
|
384
|
+
break;
|
|
385
|
+
case 2:
|
|
386
|
+
cx = "mapColor.g";
|
|
387
|
+
break;
|
|
388
|
+
case 4:
|
|
389
|
+
cx = "mapColor.b";
|
|
390
|
+
break;
|
|
391
|
+
case 8:
|
|
392
|
+
cx = "mapColor.a";
|
|
393
|
+
break;
|
|
394
|
+
default:
|
|
395
|
+
cx = "0.5";
|
|
396
|
+
break;
|
|
397
|
+
}
|
|
398
|
+
switch (componentY) {
|
|
399
|
+
case 1:
|
|
400
|
+
cy = "mapColor.r";
|
|
401
|
+
break;
|
|
402
|
+
case 2:
|
|
403
|
+
cy = "mapColor.g";
|
|
404
|
+
break;
|
|
405
|
+
case 4:
|
|
406
|
+
cy = "mapColor.b";
|
|
407
|
+
break;
|
|
408
|
+
case 8:
|
|
409
|
+
cy = "mapColor.a";
|
|
410
|
+
break;
|
|
411
|
+
default:
|
|
412
|
+
cy = "0.5";
|
|
413
|
+
break;
|
|
414
|
+
}
|
|
415
|
+
let modeStatement;
|
|
416
|
+
let needsSubstituteColor = false;
|
|
417
|
+
switch (mode) {
|
|
418
|
+
case 0:
|
|
419
|
+
modeStatement = `
|
|
420
|
+
sourceColor = textureSample(srcTexture, textureSampler, uv);
|
|
421
|
+
`;
|
|
422
|
+
break;
|
|
423
|
+
case 1:
|
|
424
|
+
needsSubstituteColor = true;
|
|
425
|
+
modeStatement = `
|
|
426
|
+
sourceColor = mix(uniforms.substituteColor, textureSample(srcTexture, textureSampler, uv), isInside(uv));
|
|
427
|
+
`;
|
|
428
|
+
break;
|
|
429
|
+
case 2:
|
|
430
|
+
modeStatement = `
|
|
431
|
+
sourceColor = textureSample(srcTexture, textureSampler, fract(uv));
|
|
432
|
+
`;
|
|
433
|
+
break;
|
|
434
|
+
case 3:
|
|
435
|
+
modeStatement = `
|
|
436
|
+
let insideUV = step(abs(uv - vec2<f32>(0.5)), vec2<f32>(0.5));
|
|
437
|
+
sourceColor = textureSample(srcTexture, textureSampler, mix(input.texCoord, uv, insideUV));
|
|
438
|
+
`;
|
|
439
|
+
break;
|
|
440
|
+
default:
|
|
441
|
+
modeStatement = `
|
|
442
|
+
sourceColor = textureSample(srcTexture, textureSampler, fract(uv));
|
|
443
|
+
`;
|
|
444
|
+
break;
|
|
445
|
+
}
|
|
446
|
+
const uniformsStruct = needsSubstituteColor
|
|
447
|
+
? `struct DisplacementUniforms {
|
|
448
|
+
uvToStScale: vec2<f32>,
|
|
449
|
+
uvToStOffset: vec2<f32>,
|
|
450
|
+
scale: vec2<f32>,
|
|
451
|
+
padding: vec2<f32>,
|
|
452
|
+
substituteColor: vec4<f32>,
|
|
453
|
+
}`
|
|
454
|
+
: `struct DisplacementUniforms {
|
|
455
|
+
uvToStScale: vec2<f32>,
|
|
456
|
+
uvToStOffset: vec2<f32>,
|
|
457
|
+
scale: vec2<f32>,
|
|
458
|
+
padding: vec2<f32>,
|
|
459
|
+
}`;
|
|
460
|
+
return /* wgsl */ `
|
|
461
|
+
${WgslVertexOutput}
|
|
462
|
+
|
|
463
|
+
${uniformsStruct}
|
|
464
|
+
|
|
465
|
+
@group(0) @binding(0) var<uniform> uniforms: DisplacementUniforms;
|
|
466
|
+
@group(0) @binding(1) var textureSampler: sampler;
|
|
467
|
+
@group(0) @binding(2) var srcTexture: texture_2d<f32>;
|
|
468
|
+
@group(0) @binding(3) var mapTexture: texture_2d<f32>;
|
|
469
|
+
|
|
470
|
+
${WgslIsInside}
|
|
471
|
+
|
|
472
|
+
@fragment
|
|
473
|
+
fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
474
|
+
let stCoord = vec2<f32>(input.texCoord.x, 1.0 - input.texCoord.y);
|
|
475
|
+
let st = stCoord * uniforms.uvToStScale - uniforms.uvToStOffset;
|
|
476
|
+
let mapColor = textureSample(mapTexture, textureSampler, vec2<f32>(st.x, 1.0 - st.y));
|
|
477
|
+
let offset = vec2<f32>(${cx}, ${cy}) - 0.5;
|
|
478
|
+
let uv = input.texCoord + offset * uniforms.scale;
|
|
479
|
+
var sourceColor: vec4<f32>;
|
|
480
|
+
${modeStatement}
|
|
481
|
+
return mix(textureSample(srcTexture, textureSampler, input.texCoord), sourceColor, isInside(st));
|
|
482
|
+
}
|
|
483
|
+
`;
|
|
484
|
+
}
|
|
485
|
+
static getNodeClearVertexShader() {
|
|
486
|
+
return NodeClearVertex;
|
|
487
|
+
}
|
|
488
|
+
static getNodeClearFragmentShader() {
|
|
489
|
+
return NodeClearFragment;
|
|
490
|
+
}
|
|
491
|
+
static getPositionedTextureVertexShader() {
|
|
492
|
+
return PositionedTextureVertex;
|
|
493
|
+
}
|
|
494
|
+
static getTextureScaleVertexShader() {
|
|
495
|
+
return TextureScaleVertex;
|
|
496
|
+
}
|
|
497
|
+
static getTextureScaleBlendVertexShader() {
|
|
498
|
+
return TextureScaleBlendVertex;
|
|
499
|
+
}
|
|
500
|
+
static getComplexBlendScaleVertexShader() {
|
|
501
|
+
return ComplexBlendScaleVertex;
|
|
502
|
+
}
|
|
503
|
+
static getComplexBlendVertexShader() {
|
|
504
|
+
return ComplexBlendVertex;
|
|
505
|
+
}
|
|
506
|
+
static getComplexBlendCopyVertexShader() {
|
|
507
|
+
return ComplexBlendCopyVertex;
|
|
508
|
+
}
|
|
509
|
+
static getComplexBlendOutputVertexShader() {
|
|
510
|
+
return ComplexBlendOutputVertex;
|
|
511
|
+
}
|
|
512
|
+
static getFilterComplexBlendOutputVertexShader() {
|
|
513
|
+
return FilterComplexBlendOutputVertex;
|
|
514
|
+
}
|
|
515
|
+
static getPositionedTextureFragmentShader() {
|
|
516
|
+
return PositionedTextureFragment;
|
|
517
|
+
}
|
|
518
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const WgslIsInside = "\nfn isInside(uv: vec2<f32>) -> f32 {\n let s = step(vec2<f32>(0.0), uv) * step(uv, vec2<f32>(1.0));\n return s.x * s.y;\n}";
|
|
2
|
+
export declare const WgslFullscreenPositions = "\n const positions = array<vec2<f32>, 6>(\n vec2<f32>(-1.0, -1.0),\n vec2<f32>( 1.0, -1.0),\n vec2<f32>(-1.0, 1.0),\n vec2<f32>(-1.0, 1.0),\n vec2<f32>( 1.0, -1.0),\n vec2<f32>( 1.0, 1.0)\n );";
|
|
3
|
+
export declare const WgslUnitQuadVertices = "\n const vertices = array<vec2<f32>, 6>(\n vec2<f32>(0.0, 0.0),\n vec2<f32>(1.0, 0.0),\n vec2<f32>(0.0, 1.0),\n vec2<f32>(0.0, 1.0),\n vec2<f32>(1.0, 0.0),\n vec2<f32>(1.0, 1.0)\n );";
|
|
4
|
+
export declare const WgslVertexOutput = "\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}";
|
|
5
|
+
export declare const WgslFullscreenTexCoords = "\n const texCoords = array<vec2<f32>, 6>(\n vec2<f32>(0.0, 1.0),\n vec2<f32>(1.0, 1.0),\n vec2<f32>(0.0, 0.0),\n vec2<f32>(0.0, 0.0),\n vec2<f32>(1.0, 1.0),\n vec2<f32>(1.0, 0.0)\n );";
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export const WgslIsInside = `
|
|
2
|
+
fn isInside(uv: vec2<f32>) -> f32 {
|
|
3
|
+
let s = step(vec2<f32>(0.0), uv) * step(uv, vec2<f32>(1.0));
|
|
4
|
+
return s.x * s.y;
|
|
5
|
+
}`;
|
|
6
|
+
export const WgslFullscreenPositions = `
|
|
7
|
+
const positions = array<vec2<f32>, 6>(
|
|
8
|
+
vec2<f32>(-1.0, -1.0),
|
|
9
|
+
vec2<f32>( 1.0, -1.0),
|
|
10
|
+
vec2<f32>(-1.0, 1.0),
|
|
11
|
+
vec2<f32>(-1.0, 1.0),
|
|
12
|
+
vec2<f32>( 1.0, -1.0),
|
|
13
|
+
vec2<f32>( 1.0, 1.0)
|
|
14
|
+
);`;
|
|
15
|
+
export const WgslUnitQuadVertices = `
|
|
16
|
+
const vertices = array<vec2<f32>, 6>(
|
|
17
|
+
vec2<f32>(0.0, 0.0),
|
|
18
|
+
vec2<f32>(1.0, 0.0),
|
|
19
|
+
vec2<f32>(0.0, 1.0),
|
|
20
|
+
vec2<f32>(0.0, 1.0),
|
|
21
|
+
vec2<f32>(1.0, 0.0),
|
|
22
|
+
vec2<f32>(1.0, 1.0)
|
|
23
|
+
);`;
|
|
24
|
+
export const WgslVertexOutput = `
|
|
25
|
+
struct VertexOutput {
|
|
26
|
+
@builtin(position) position: vec4<f32>,
|
|
27
|
+
@location(0) texCoord: vec2<f32>,
|
|
28
|
+
}`;
|
|
29
|
+
export const WgslFullscreenTexCoords = `
|
|
30
|
+
const texCoords = array<vec2<f32>, 6>(
|
|
31
|
+
vec2<f32>(0.0, 1.0),
|
|
32
|
+
vec2<f32>(1.0, 1.0),
|
|
33
|
+
vec2<f32>(0.0, 0.0),
|
|
34
|
+
vec2<f32>(0.0, 0.0),
|
|
35
|
+
vec2<f32>(1.0, 1.0),
|
|
36
|
+
vec2<f32>(1.0, 0.0)
|
|
37
|
+
);`;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const BasicFragment = "\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n @location(1) color: vec4<f32>,\n}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n return input.color;\n}\n";
|
|
2
|
+
export declare const TextureFragment = "\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n @location(1) color: vec4<f32>,\n}\n\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var textureData: texture_2d<f32>;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n let textureColor = textureSampleLevel(textureData, textureSampler, input.texCoord, 0);\n return textureColor * input.color;\n}\n";
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export const BasicFragment = /* wgsl */ `
|
|
2
|
+
struct VertexOutput {
|
|
3
|
+
@builtin(position) position: vec4<f32>,
|
|
4
|
+
@location(0) texCoord: vec2<f32>,
|
|
5
|
+
@location(1) color: vec4<f32>,
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
@fragment
|
|
9
|
+
fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
10
|
+
return input.color;
|
|
11
|
+
}
|
|
12
|
+
`;
|
|
13
|
+
export const TextureFragment = /* wgsl */ `
|
|
14
|
+
struct VertexOutput {
|
|
15
|
+
@builtin(position) position: vec4<f32>,
|
|
16
|
+
@location(0) texCoord: vec2<f32>,
|
|
17
|
+
@location(1) color: vec4<f32>,
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
@group(0) @binding(1) var textureSampler: sampler;
|
|
21
|
+
@group(0) @binding(2) var textureData: texture_2d<f32>;
|
|
22
|
+
|
|
23
|
+
@fragment
|
|
24
|
+
fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
25
|
+
let textureColor = textureSampleLevel(textureData, textureSampler, input.texCoord, 0);
|
|
26
|
+
return textureColor * input.color;
|
|
27
|
+
}
|
|
28
|
+
`;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const BitmapFillFragment = "\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) bezier: vec2<f32>,\n @location(1) color: vec4<f32>,\n @location(2) worldPos: vec2<f32>,\n}\n\nstruct BitmapUniforms {\n bitmapMatrix: mat3x3<f32>,\n textureWidth: f32,\n textureHeight: f32,\n repeat: f32,\n _pad: f32,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: BitmapUniforms;\n@group(0) @binding(1) var bitmapSampler: sampler;\n@group(0) @binding(2) var bitmapTexture: texture_2d<f32>;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n let u = input.bezier.x;\n let v = input.bezier.y;\n if (abs(u - 0.5) > 0.001 || abs(v - 0.5) > 0.001) {\n let d = u * u - v;\n if (d > 0.0) {\n discard;\n }\n }\n let transformedPos = uniforms.bitmapMatrix * vec3<f32>(input.worldPos, 1.0);\n var uv = vec2<f32>(\n transformedPos.x / uniforms.textureWidth,\n transformedPos.y / uniforms.textureHeight\n );\n if (uniforms.repeat > 0.5) {\n uv = fract(uv);\n }\n let bitmapColor = textureSampleLevel(bitmapTexture, bitmapSampler, uv, 0);\n let alpha = bitmapColor.a * input.color.a;\n return vec4<f32>(bitmapColor.rgb * input.color.a, alpha);\n}\n";
|