@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,212 @@
|
|
|
1
|
+
import { WgslVertexOutput } from "../common/SharedWgsl";
|
|
2
|
+
export const TextureCopyFragment = /* wgsl */ `
|
|
3
|
+
${WgslVertexOutput}
|
|
4
|
+
|
|
5
|
+
struct CopyUniforms {
|
|
6
|
+
scale: vec2<f32>,
|
|
7
|
+
offset: vec2<f32>,
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
@group(0) @binding(0) var<uniform> uniforms: CopyUniforms;
|
|
11
|
+
@group(0) @binding(1) var textureSampler: sampler;
|
|
12
|
+
@group(0) @binding(2) var inputTexture: texture_2d<f32>;
|
|
13
|
+
|
|
14
|
+
@fragment
|
|
15
|
+
fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
16
|
+
let uv = input.texCoord * uniforms.scale + uniforms.offset;
|
|
17
|
+
return textureSampleLevel(inputTexture, textureSampler, uv, 0);
|
|
18
|
+
}
|
|
19
|
+
`;
|
|
20
|
+
export const BlurTextureCopyFragment = /* wgsl */ `
|
|
21
|
+
${WgslVertexOutput}
|
|
22
|
+
|
|
23
|
+
struct CopyUniforms {
|
|
24
|
+
scale: vec2<f32>,
|
|
25
|
+
offset: vec2<f32>,
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
@group(0) @binding(0) var<uniform> uniforms: CopyUniforms;
|
|
29
|
+
@group(0) @binding(1) var textureSampler: sampler;
|
|
30
|
+
@group(0) @binding(2) var inputTexture: texture_2d<f32>;
|
|
31
|
+
|
|
32
|
+
@fragment
|
|
33
|
+
fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
34
|
+
let uv = (input.texCoord - uniforms.offset) * uniforms.scale;
|
|
35
|
+
let clampedUv = clamp(uv, vec2<f32>(0.0), vec2<f32>(1.0));
|
|
36
|
+
let color = textureSampleLevel(inputTexture, textureSampler, clampedUv, 0);
|
|
37
|
+
let inBounds = uv.x >= 0.0 && uv.x <= 1.0 && uv.y >= 0.0 && uv.y <= 1.0;
|
|
38
|
+
return select(vec4<f32>(0.0, 0.0, 0.0, 0.0), color, inBounds);
|
|
39
|
+
}
|
|
40
|
+
`;
|
|
41
|
+
export const FilterOutputFragment = /* wgsl */ `
|
|
42
|
+
${WgslVertexOutput}
|
|
43
|
+
|
|
44
|
+
struct CopyUniforms {
|
|
45
|
+
scale: vec2<f32>,
|
|
46
|
+
offset: vec2<f32>,
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
@group(0) @binding(0) var<uniform> uniforms: CopyUniforms;
|
|
50
|
+
@group(0) @binding(1) var textureSampler: sampler;
|
|
51
|
+
@group(0) @binding(2) var inputTexture: texture_2d<f32>;
|
|
52
|
+
|
|
53
|
+
@fragment
|
|
54
|
+
fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
55
|
+
let uv = input.texCoord * uniforms.scale + uniforms.offset;
|
|
56
|
+
let clampedUv = clamp(uv, vec2<f32>(0.0), vec2<f32>(1.0));
|
|
57
|
+
let color = textureSampleLevel(inputTexture, textureSampler, clampedUv, 0);
|
|
58
|
+
let inBounds = uv.x >= 0.0 && uv.x <= 1.0 && uv.y >= 0.0 && uv.y <= 1.0;
|
|
59
|
+
return select(vec4<f32>(0.0, 0.0, 0.0, 0.0), color, inBounds);
|
|
60
|
+
}
|
|
61
|
+
`;
|
|
62
|
+
export const ColorTransformFragment = /* wgsl */ `
|
|
63
|
+
${WgslVertexOutput}
|
|
64
|
+
|
|
65
|
+
struct ColorTransformUniforms {
|
|
66
|
+
mul: vec4<f32>,
|
|
67
|
+
add: vec4<f32>,
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
@group(0) @binding(0) var<uniform> ct: ColorTransformUniforms;
|
|
71
|
+
@group(0) @binding(1) var textureSampler: sampler;
|
|
72
|
+
@group(0) @binding(2) var inputTexture: texture_2d<f32>;
|
|
73
|
+
|
|
74
|
+
@fragment
|
|
75
|
+
fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
76
|
+
var color = textureSampleLevel(inputTexture, textureSampler, input.texCoord, 0);
|
|
77
|
+
|
|
78
|
+
color = vec4<f32>(color.rgb / max(vec3<f32>(0.0001), vec3<f32>(color.a)), color.a);
|
|
79
|
+
color = clamp(color * ct.mul + ct.add, vec4<f32>(0.0), vec4<f32>(1.0));
|
|
80
|
+
color = vec4<f32>(color.rgb * color.a, color.a);
|
|
81
|
+
|
|
82
|
+
return color;
|
|
83
|
+
}
|
|
84
|
+
`;
|
|
85
|
+
export const YFlipColorTransformFragment = /* wgsl */ `
|
|
86
|
+
${WgslVertexOutput}
|
|
87
|
+
|
|
88
|
+
struct YFlipCTUniforms {
|
|
89
|
+
scale: vec2<f32>,
|
|
90
|
+
offset: vec2<f32>,
|
|
91
|
+
mul: vec4<f32>,
|
|
92
|
+
add: vec4<f32>,
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
@group(0) @binding(0) var<uniform> uniforms: YFlipCTUniforms;
|
|
96
|
+
@group(0) @binding(1) var textureSampler: sampler;
|
|
97
|
+
@group(0) @binding(2) var inputTexture: texture_2d<f32>;
|
|
98
|
+
|
|
99
|
+
@fragment
|
|
100
|
+
fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
101
|
+
let uv = input.texCoord * uniforms.scale + uniforms.offset;
|
|
102
|
+
var color = textureSampleLevel(inputTexture, textureSampler, uv, 0);
|
|
103
|
+
|
|
104
|
+
color = vec4<f32>(color.rgb / max(vec3<f32>(0.0001), vec3<f32>(color.a)), color.a);
|
|
105
|
+
color = clamp(color * uniforms.mul + uniforms.add, vec4<f32>(0.0), vec4<f32>(1.0));
|
|
106
|
+
color = vec4<f32>(color.rgb * color.a, color.a);
|
|
107
|
+
|
|
108
|
+
return color;
|
|
109
|
+
}
|
|
110
|
+
`;
|
|
111
|
+
export const ColorMatrixFilterFragment = /* wgsl */ `
|
|
112
|
+
${WgslVertexOutput}
|
|
113
|
+
|
|
114
|
+
struct ColorMatrixUniforms {
|
|
115
|
+
matrix: mat4x4<f32>,
|
|
116
|
+
offset: vec4<f32>,
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
@group(0) @binding(0) var<uniform> uniforms: ColorMatrixUniforms;
|
|
120
|
+
@group(0) @binding(1) var textureSampler: sampler;
|
|
121
|
+
@group(0) @binding(2) var inputTexture: texture_2d<f32>;
|
|
122
|
+
|
|
123
|
+
@fragment
|
|
124
|
+
fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
125
|
+
var color = textureSampleLevel(inputTexture, textureSampler, input.texCoord, 0);
|
|
126
|
+
|
|
127
|
+
color = vec4<f32>(color.rgb / max(vec3<f32>(0.0001), vec3<f32>(color.a)), color.a);
|
|
128
|
+
var result = uniforms.matrix * color + uniforms.offset;
|
|
129
|
+
result = clamp(result, vec4<f32>(0.0), vec4<f32>(1.0));
|
|
130
|
+
result = vec4<f32>(result.rgb * result.a, result.a);
|
|
131
|
+
|
|
132
|
+
return result;
|
|
133
|
+
}
|
|
134
|
+
`;
|
|
135
|
+
export const NodeClearFragment = /* wgsl */ `
|
|
136
|
+
@fragment
|
|
137
|
+
fn main() -> @location(0) vec4<f32> {
|
|
138
|
+
return vec4<f32>(0.0, 0.0, 0.0, 0.0);
|
|
139
|
+
}
|
|
140
|
+
`;
|
|
141
|
+
export const PositionedTextureFragment = /* wgsl */ `
|
|
142
|
+
${WgslVertexOutput}
|
|
143
|
+
|
|
144
|
+
@group(0) @binding(1) var textureSampler: sampler;
|
|
145
|
+
@group(0) @binding(2) var inputTexture: texture_2d<f32>;
|
|
146
|
+
|
|
147
|
+
@fragment
|
|
148
|
+
fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
149
|
+
return textureSampleLevel(inputTexture, textureSampler, input.texCoord, 0);
|
|
150
|
+
}
|
|
151
|
+
`;
|
|
152
|
+
export const BitmapSyncFragment = /* wgsl */ `
|
|
153
|
+
${WgslVertexOutput}
|
|
154
|
+
|
|
155
|
+
@group(0) @binding(1) var textureSampler: sampler;
|
|
156
|
+
@group(0) @binding(2) var inputTexture: texture_2d<f32>;
|
|
157
|
+
|
|
158
|
+
@fragment
|
|
159
|
+
fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
160
|
+
return textureSampleLevel(inputTexture, textureSampler, input.texCoord, 0);
|
|
161
|
+
}
|
|
162
|
+
`;
|
|
163
|
+
export const BlendGenericFragment = /* wgsl */ `
|
|
164
|
+
struct VertexOutput {
|
|
165
|
+
@builtin(position) position: vec4<f32>,
|
|
166
|
+
@location(0) texCoord: vec2<f32>,
|
|
167
|
+
@location(1) color: vec4<f32>,
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
struct BlendUniforms {
|
|
171
|
+
blendMode: f32,
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
@group(0) @binding(1) var<uniform> blend: BlendUniforms;
|
|
175
|
+
@group(0) @binding(2) var srcSampler: sampler;
|
|
176
|
+
@group(0) @binding(3) var srcTexture: texture_2d<f32>;
|
|
177
|
+
@group(0) @binding(4) var dstSampler: sampler;
|
|
178
|
+
@group(0) @binding(5) var dstTexture: texture_2d<f32>;
|
|
179
|
+
|
|
180
|
+
fn blendNormal(src: vec4<f32>, dst: vec4<f32>) -> vec4<f32> {
|
|
181
|
+
return src;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
fn blendMultiply(src: vec4<f32>, dst: vec4<f32>) -> vec4<f32> {
|
|
185
|
+
return src * dst;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
fn blendScreen(src: vec4<f32>, dst: vec4<f32>) -> vec4<f32> {
|
|
189
|
+
return src + dst - src * dst;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
fn blendAdd(src: vec4<f32>, dst: vec4<f32>) -> vec4<f32> {
|
|
193
|
+
return min(src + dst, vec4<f32>(1.0));
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
@fragment
|
|
197
|
+
fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
198
|
+
let src = textureSampleLevel(srcTexture, srcSampler, input.texCoord, 0);
|
|
199
|
+
let dst = textureSampleLevel(dstTexture, dstSampler, input.texCoord, 0);
|
|
200
|
+
var result: vec4<f32>;
|
|
201
|
+
if (blend.blendMode < 0.5) {
|
|
202
|
+
result = blendNormal(src, dst);
|
|
203
|
+
} else if (blend.blendMode < 1.5) {
|
|
204
|
+
result = blendMultiply(src, dst);
|
|
205
|
+
} else if (blend.blendMode < 2.5) {
|
|
206
|
+
result = blendScreen(src, dst);
|
|
207
|
+
} else {
|
|
208
|
+
result = blendAdd(src, dst);
|
|
209
|
+
}
|
|
210
|
+
return result * input.color;
|
|
211
|
+
}
|
|
212
|
+
`;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare const GradientFillFragment = "\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) v_uv: vec2<f32>,\n @location(1) bezier: vec2<f32>,\n @location(2) color: vec4<f32>,\n}\n\nstruct GradientUniforms {\n inverseMatrix: mat3x3<f32>,\n gradientType: f32,\n focal: f32,\n spread: f32,\n radius: f32,\n linearPoints: vec4<f32>,\n}\n\n@group(0) @binding(0) var<uniform> gradient: GradientUniforms;\n@group(0) @binding(1) var gradientSampler: sampler;\n@group(0) @binding(2) var gradientTexture: texture_2d<f32>;\n\noverride GRADIENT_TYPE: u32 = 0u;\noverride SPREAD_MODE: u32 = 2u;\n\nfn applySpread(t: f32) -> f32 {\n if (SPREAD_MODE == 0u) {\n return 1.0 - abs(fract(t * 0.5) * 2.0 - 1.0);\n } else if (SPREAD_MODE == 1u) {\n return fract(t);\n } else {\n return clamp(t, 0.0, 1.0);\n }\n}\n\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n let p = input.v_uv;\n\n var t: f32;\n if (GRADIENT_TYPE == 0u) {\n let a = gradient.linearPoints.xy;\n let b = gradient.linearPoints.zw;\n let ab = b - a;\n let ap = p - a;\n let dotAB = dot(ab, ab);\n if (dotAB < 0.0001) {\n t = 0.0;\n } else {\n t = dot(ab, ap) / dotAB;\n }\n } else {\n let r = gradient.radius;\n let coord = p / r;\n let focalRatio = gradient.focal;\n\n if (abs(focalRatio) < 0.001) {\n t = length(coord);\n } else {\n let focal = vec2<f32>(focalRatio, 0.0);\n let diff = coord - focal;\n let lenDiff = length(diff);\n\n if (lenDiff < 0.0001) {\n t = 0.0;\n } else {\n let dir = diff / lenDiff;\n\n // Solve quadratic equation for unit circle intersection (a=1 since dir is normalized)\n let b_coef = 2.0 * dot(dir, focal);\n let c_coef = dot(focal, focal) - 1.0;\n let discriminant = b_coef * b_coef - 4.0 * c_coef;\n let x = (-b_coef + sqrt(max(discriminant, 0.0))) * 0.5;\n t = lenDiff / abs(x);\n }\n }\n }\n t = applySpread(t);\n let gradientColor = textureSampleLevel(gradientTexture, gradientSampler, vec2<f32>(t, 0.5), 0);\n\n let result = gradientColor * input.color;\n return vec4<f32>(result.rgb * result.a, result.a);\n}\n";
|
|
2
|
+
export declare const GradientFillStencilFragment = "\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) v_uv: vec2<f32>,\n @location(1) bezier: vec2<f32>,\n @location(2) color: vec4<f32>,\n}\n\nstruct GradientUniforms {\n inverseMatrix: mat3x3<f32>,\n gradientType: f32,\n focal: f32,\n spread: f32,\n radius: f32,\n linearPoints: vec4<f32>,\n}\n\n@group(0) @binding(0) var<uniform> gradient: GradientUniforms;\n@group(0) @binding(1) var gradientSampler: sampler;\n@group(0) @binding(2) var gradientTexture: texture_2d<f32>;\n\noverride GRADIENT_TYPE: u32 = 0u;\noverride SPREAD_MODE: u32 = 2u;\n\nfn applySpread(t: f32) -> f32 {\n if (SPREAD_MODE == 0u) {\n return 1.0 - abs(fract(t * 0.5) * 2.0 - 1.0);\n } else if (SPREAD_MODE == 1u) {\n return fract(t);\n } else {\n return clamp(t, 0.0, 1.0);\n }\n}\n\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n let p = input.v_uv;\n\n var t: f32;\n if (GRADIENT_TYPE == 0u) {\n let a = gradient.linearPoints.xy;\n let b = gradient.linearPoints.zw;\n let ab = b - a;\n let ap = p - a;\n let dotAB = dot(ab, ab);\n if (dotAB < 0.0001) {\n t = 0.0;\n } else {\n t = dot(ab, ap) / dotAB;\n }\n } else {\n let r = gradient.radius;\n let coord = p / r;\n let focalRatio = gradient.focal;\n\n if (abs(focalRatio) < 0.001) {\n t = length(coord);\n } else {\n let focal = vec2<f32>(focalRatio, 0.0);\n let diff = coord - focal;\n let lenDiff = length(diff);\n\n if (lenDiff < 0.0001) {\n t = 0.0;\n } else {\n let dir = diff / lenDiff;\n\n // Solve quadratic equation for unit circle intersection (a=1 since dir is normalized)\n let b_coef = 2.0 * dot(dir, focal);\n let c_coef = dot(focal, focal) - 1.0;\n let discriminant = b_coef * b_coef - 4.0 * c_coef;\n let x = (-b_coef + sqrt(max(discriminant, 0.0))) * 0.5;\n t = lenDiff / abs(x);\n }\n }\n }\n t = applySpread(t);\n let gradientColor = textureSampleLevel(gradientTexture, gradientSampler, vec2<f32>(t, 0.5), 0);\n\n return vec4<f32>(gradientColor.rgb * gradientColor.a, gradientColor.a);\n}\n";
|
|
3
|
+
export declare const GradientFragment = "\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n @location(1) color: vec4<f32>,\n}\n\nstruct GradientUniforms {\n inverseMatrix: mat3x3<f32>,\n gradientType: f32,\n focal: f32,\n spread: f32,\n radius: f32,\n linearPoints: vec4<f32>,\n}\n\n@group(0) @binding(0) var<uniform> gradient: GradientUniforms;\n@group(0) @binding(1) var gradientSampler: sampler;\n@group(0) @binding(2) var gradientTexture: texture_2d<f32>;\n\noverride GRADIENT_TYPE: u32 = 0u;\noverride SPREAD_MODE: u32 = 2u;\n\nfn applySpread(t: f32) -> f32 {\n if (SPREAD_MODE == 0u) {\n return 1.0 - abs(fract(t * 0.5) * 2.0 - 1.0);\n } else if (SPREAD_MODE == 1u) {\n return fract(t);\n } else {\n return clamp(t, 0.0, 1.0);\n }\n}\n\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n let p = input.texCoord;\n\n var t: f32;\n if (GRADIENT_TYPE == 0u) {\n let a = gradient.linearPoints.xy;\n let b = gradient.linearPoints.zw;\n let ab = b - a;\n let ap = p - a;\n let dotAB = dot(ab, ab);\n if (dotAB < 0.0001) {\n t = 0.0;\n } else {\n t = dot(ab, ap) / dotAB;\n }\n } else {\n let r = gradient.radius;\n let coord = p / r;\n let focalRatio = gradient.focal;\n\n if (abs(focalRatio) < 0.001) {\n t = length(coord);\n } else {\n let focal = vec2<f32>(focalRatio, 0.0);\n let diff = coord - focal;\n let lenDiff = length(diff);\n\n if (lenDiff < 0.0001) {\n t = 0.0;\n } else {\n let dir = diff / lenDiff;\n\n // Solve quadratic equation for unit circle intersection (a=1 since dir is normalized)\n let b_coef = 2.0 * dot(dir, focal);\n let c_coef = dot(focal, focal) - 1.0;\n let discriminant = b_coef * b_coef - 4.0 * c_coef;\n let x = (-b_coef + sqrt(max(discriminant, 0.0))) * 0.5;\n t = lenDiff / abs(x);\n }\n }\n }\n t = applySpread(t);\n let gradientColor = textureSampleLevel(gradientTexture, gradientSampler, vec2<f32>(t, 0.5), 0);\n\n let result = gradientColor * input.color;\n return vec4<f32>(result.rgb * result.a, result.a);\n}\n";
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
const GradientUniformsAndSpread = `
|
|
2
|
+
struct GradientUniforms {
|
|
3
|
+
inverseMatrix: mat3x3<f32>,
|
|
4
|
+
gradientType: f32,
|
|
5
|
+
focal: f32,
|
|
6
|
+
spread: f32,
|
|
7
|
+
radius: f32,
|
|
8
|
+
linearPoints: vec4<f32>,
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
@group(0) @binding(0) var<uniform> gradient: GradientUniforms;
|
|
12
|
+
@group(0) @binding(1) var gradientSampler: sampler;
|
|
13
|
+
@group(0) @binding(2) var gradientTexture: texture_2d<f32>;
|
|
14
|
+
|
|
15
|
+
override GRADIENT_TYPE: u32 = 0u;
|
|
16
|
+
override SPREAD_MODE: u32 = 2u;
|
|
17
|
+
|
|
18
|
+
fn applySpread(t: f32) -> f32 {
|
|
19
|
+
if (SPREAD_MODE == 0u) {
|
|
20
|
+
return 1.0 - abs(fract(t * 0.5) * 2.0 - 1.0);
|
|
21
|
+
} else if (SPREAD_MODE == 1u) {
|
|
22
|
+
return fract(t);
|
|
23
|
+
} else {
|
|
24
|
+
return clamp(t, 0.0, 1.0);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
`;
|
|
28
|
+
const GradientCalculation = `
|
|
29
|
+
var t: f32;
|
|
30
|
+
if (GRADIENT_TYPE == 0u) {
|
|
31
|
+
let a = gradient.linearPoints.xy;
|
|
32
|
+
let b = gradient.linearPoints.zw;
|
|
33
|
+
let ab = b - a;
|
|
34
|
+
let ap = p - a;
|
|
35
|
+
let dotAB = dot(ab, ab);
|
|
36
|
+
if (dotAB < 0.0001) {
|
|
37
|
+
t = 0.0;
|
|
38
|
+
} else {
|
|
39
|
+
t = dot(ab, ap) / dotAB;
|
|
40
|
+
}
|
|
41
|
+
} else {
|
|
42
|
+
let r = gradient.radius;
|
|
43
|
+
let coord = p / r;
|
|
44
|
+
let focalRatio = gradient.focal;
|
|
45
|
+
|
|
46
|
+
if (abs(focalRatio) < 0.001) {
|
|
47
|
+
t = length(coord);
|
|
48
|
+
} else {
|
|
49
|
+
let focal = vec2<f32>(focalRatio, 0.0);
|
|
50
|
+
let diff = coord - focal;
|
|
51
|
+
let lenDiff = length(diff);
|
|
52
|
+
|
|
53
|
+
if (lenDiff < 0.0001) {
|
|
54
|
+
t = 0.0;
|
|
55
|
+
} else {
|
|
56
|
+
let dir = diff / lenDiff;
|
|
57
|
+
|
|
58
|
+
// Solve quadratic equation for unit circle intersection (a=1 since dir is normalized)
|
|
59
|
+
let b_coef = 2.0 * dot(dir, focal);
|
|
60
|
+
let c_coef = dot(focal, focal) - 1.0;
|
|
61
|
+
let discriminant = b_coef * b_coef - 4.0 * c_coef;
|
|
62
|
+
let x = (-b_coef + sqrt(max(discriminant, 0.0))) * 0.5;
|
|
63
|
+
t = lenDiff / abs(x);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
t = applySpread(t);
|
|
68
|
+
let gradientColor = textureSampleLevel(gradientTexture, gradientSampler, vec2<f32>(t, 0.5), 0);
|
|
69
|
+
`;
|
|
70
|
+
export const GradientFillFragment = /* wgsl */ `
|
|
71
|
+
struct VertexOutput {
|
|
72
|
+
@builtin(position) position: vec4<f32>,
|
|
73
|
+
@location(0) v_uv: vec2<f32>,
|
|
74
|
+
@location(1) bezier: vec2<f32>,
|
|
75
|
+
@location(2) color: vec4<f32>,
|
|
76
|
+
}
|
|
77
|
+
${GradientUniformsAndSpread}
|
|
78
|
+
|
|
79
|
+
@fragment
|
|
80
|
+
fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
81
|
+
let p = input.v_uv;
|
|
82
|
+
${GradientCalculation}
|
|
83
|
+
let result = gradientColor * input.color;
|
|
84
|
+
return vec4<f32>(result.rgb * result.a, result.a);
|
|
85
|
+
}
|
|
86
|
+
`;
|
|
87
|
+
export const GradientFillStencilFragment = /* wgsl */ `
|
|
88
|
+
struct VertexOutput {
|
|
89
|
+
@builtin(position) position: vec4<f32>,
|
|
90
|
+
@location(0) v_uv: vec2<f32>,
|
|
91
|
+
@location(1) bezier: vec2<f32>,
|
|
92
|
+
@location(2) color: vec4<f32>,
|
|
93
|
+
}
|
|
94
|
+
${GradientUniformsAndSpread}
|
|
95
|
+
|
|
96
|
+
@fragment
|
|
97
|
+
fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
98
|
+
let p = input.v_uv;
|
|
99
|
+
${GradientCalculation}
|
|
100
|
+
return vec4<f32>(gradientColor.rgb * gradientColor.a, gradientColor.a);
|
|
101
|
+
}
|
|
102
|
+
`;
|
|
103
|
+
export const GradientFragment = /* wgsl */ `
|
|
104
|
+
struct VertexOutput {
|
|
105
|
+
@builtin(position) position: vec4<f32>,
|
|
106
|
+
@location(0) texCoord: vec2<f32>,
|
|
107
|
+
@location(1) color: vec4<f32>,
|
|
108
|
+
}
|
|
109
|
+
${GradientUniformsAndSpread}
|
|
110
|
+
|
|
111
|
+
@fragment
|
|
112
|
+
fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
113
|
+
let p = input.texCoord;
|
|
114
|
+
${GradientCalculation}
|
|
115
|
+
let result = gradientColor * input.color;
|
|
116
|
+
return vec4<f32>(result.rgb * result.a, result.a);
|
|
117
|
+
}
|
|
118
|
+
`;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const InstancedFragment = "\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n @location(1) mulColor: vec4<f32>,\n @location(2) addColor: vec4<f32>,\n}\n\n@group(0) @binding(0) var textureSampler: sampler;\n@group(0) @binding(1) var textureData: texture_2d<f32>;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n var src = textureSample(textureData, textureSampler, input.texCoord);\n src = vec4<f32>(src.rgb / max(0.0001, src.a), src.a);\n src = clamp(src * input.mulColor + input.addColor, vec4<f32>(0.0), vec4<f32>(1.0));\n src = vec4<f32>(src.rgb * src.a, src.a);\n return src;\n}\n";
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export const InstancedFragment = /* wgsl */ `
|
|
2
|
+
struct VertexOutput {
|
|
3
|
+
@builtin(position) position: vec4<f32>,
|
|
4
|
+
@location(0) texCoord: vec2<f32>,
|
|
5
|
+
@location(1) mulColor: vec4<f32>,
|
|
6
|
+
@location(2) addColor: vec4<f32>,
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
@group(0) @binding(0) var textureSampler: sampler;
|
|
10
|
+
@group(0) @binding(1) var textureData: texture_2d<f32>;
|
|
11
|
+
|
|
12
|
+
@fragment
|
|
13
|
+
fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
14
|
+
var src = textureSample(textureData, textureSampler, input.texCoord);
|
|
15
|
+
src = vec4<f32>(src.rgb / max(0.0001, src.a), src.a);
|
|
16
|
+
src = clamp(src * input.mulColor + input.addColor, vec4<f32>(0.0), vec4<f32>(1.0));
|
|
17
|
+
src = vec4<f32>(src.rgb * src.a, src.a);
|
|
18
|
+
return src;
|
|
19
|
+
}
|
|
20
|
+
`;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const MaskFragment = "\nstruct FragmentInput {\n @location(0) bezier: vec2<f32>,\n}\n\n@fragment\nfn main(input: FragmentInput) -> @location(0) vec4<f32> {\n let px = dpdx(input.bezier);\n let py = dpdy(input.bezier);\n let f = (2.0 * input.bezier.x) * vec2<f32>(px.x, py.x) - vec2<f32>(px.y, py.y);\n let alpha = 0.5 - (input.bezier.x * input.bezier.x - input.bezier.y) / length(f);\n if (alpha <= 0.0) {\n discard;\n }\n return vec4<f32>(min(alpha, 1.0));\n}\n";
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export const MaskFragment = /* wgsl */ `
|
|
2
|
+
struct FragmentInput {
|
|
3
|
+
@location(0) bezier: vec2<f32>,
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
@fragment
|
|
7
|
+
fn main(input: FragmentInput) -> @location(0) vec4<f32> {
|
|
8
|
+
let px = dpdx(input.bezier);
|
|
9
|
+
let py = dpdy(input.bezier);
|
|
10
|
+
let f = (2.0 * input.bezier.x) * vec2<f32>(px.x, py.x) - vec2<f32>(px.y, py.y);
|
|
11
|
+
let alpha = 0.5 - (input.bezier.x * input.bezier.x - input.bezier.y) / length(f);
|
|
12
|
+
if (alpha <= 0.0) {
|
|
13
|
+
discard;
|
|
14
|
+
}
|
|
15
|
+
return vec4<f32>(min(alpha, 1.0));
|
|
16
|
+
}
|
|
17
|
+
`;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const StencilWriteFragment = "\nstruct FragmentInput {\n @builtin(position) position: vec4<f32>,\n @location(0) bezier: vec2<f32>,\n}\n\n@fragment\nfn main(input: FragmentInput) -> @location(0) vec4<f32> {\n let f_val = input.bezier.x * input.bezier.x - input.bezier.y;\n let dx = dpdx(f_val);\n let dy = dpdy(f_val);\n let dist = f_val * inverseSqrt(dx * dx + dy * dy);\n let alpha = smoothstep(0.5, -0.5, dist);\n\n if (alpha <= 0.001) {\n discard;\n }\n\n return vec4<f32>(0.0, 0.0, 0.0, min(alpha, 1.0));\n}\n";
|
|
2
|
+
export declare const StencilFillFragment = "\nstruct FragmentInput {\n @builtin(position) position: vec4<f32>,\n @location(0) color: vec4<f32>,\n}\n\n@fragment\nfn main(input: FragmentInput) -> @location(0) vec4<f32> {\n let a = input.color.a;\n return vec4<f32>(input.color.r * a, input.color.g * a, input.color.b * a, a);\n}\n";
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export const StencilWriteFragment = /* wgsl */ `
|
|
2
|
+
struct FragmentInput {
|
|
3
|
+
@builtin(position) position: vec4<f32>,
|
|
4
|
+
@location(0) bezier: vec2<f32>,
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
@fragment
|
|
8
|
+
fn main(input: FragmentInput) -> @location(0) vec4<f32> {
|
|
9
|
+
let f_val = input.bezier.x * input.bezier.x - input.bezier.y;
|
|
10
|
+
let dx = dpdx(f_val);
|
|
11
|
+
let dy = dpdy(f_val);
|
|
12
|
+
let dist = f_val * inverseSqrt(dx * dx + dy * dy);
|
|
13
|
+
let alpha = smoothstep(0.5, -0.5, dist);
|
|
14
|
+
|
|
15
|
+
if (alpha <= 0.001) {
|
|
16
|
+
discard;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return vec4<f32>(0.0, 0.0, 0.0, min(alpha, 1.0));
|
|
20
|
+
}
|
|
21
|
+
`;
|
|
22
|
+
export const StencilFillFragment = /* wgsl */ `
|
|
23
|
+
struct FragmentInput {
|
|
24
|
+
@builtin(position) position: vec4<f32>,
|
|
25
|
+
@location(0) color: vec4<f32>,
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
@fragment
|
|
29
|
+
fn main(input: FragmentInput) -> @location(0) vec4<f32> {
|
|
30
|
+
let a = input.color.a;
|
|
31
|
+
return vec4<f32>(input.color.r * a, input.color.g * a, input.color.b * a, a);
|
|
32
|
+
}
|
|
33
|
+
`;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const BasicVertex = "\noverride yFlipSign: f32 = 1.0;\n\nstruct VertexInput {\n @location(0) position: vec2<f32>,\n @location(1) texCoord: vec2<f32>,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n @location(1) color: vec4<f32>,\n}\n\nstruct Uniforms {\n matrix: mat3x3<f32>,\n color: vec4<f32>,\n alpha: f32,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: Uniforms;\n\n@vertex\nfn main(input: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n let pos = uniforms.matrix * vec3<f32>(input.position, 1.0);\n let ndc = pos.xy * 2.0 - 1.0;\n output.position = vec4<f32>(ndc.x, ndc.y * yFlipSign, 0.0, 1.0);\n output.texCoord = input.texCoord;\n let premultipliedColor = vec4<f32>(\n uniforms.color.rgb * uniforms.color.a * uniforms.alpha,\n uniforms.color.a * uniforms.alpha\n );\n output.color = premultipliedColor;\n return output;\n}\n";
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export const BasicVertex = /* wgsl */ `
|
|
2
|
+
override yFlipSign: f32 = 1.0;
|
|
3
|
+
|
|
4
|
+
struct VertexInput {
|
|
5
|
+
@location(0) position: vec2<f32>,
|
|
6
|
+
@location(1) texCoord: vec2<f32>,
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
struct VertexOutput {
|
|
10
|
+
@builtin(position) position: vec4<f32>,
|
|
11
|
+
@location(0) texCoord: vec2<f32>,
|
|
12
|
+
@location(1) color: vec4<f32>,
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
struct Uniforms {
|
|
16
|
+
matrix: mat3x3<f32>,
|
|
17
|
+
color: vec4<f32>,
|
|
18
|
+
alpha: f32,
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@group(0) @binding(0) var<uniform> uniforms: Uniforms;
|
|
22
|
+
|
|
23
|
+
@vertex
|
|
24
|
+
fn main(input: VertexInput) -> VertexOutput {
|
|
25
|
+
var output: VertexOutput;
|
|
26
|
+
let pos = uniforms.matrix * vec3<f32>(input.position, 1.0);
|
|
27
|
+
let ndc = pos.xy * 2.0 - 1.0;
|
|
28
|
+
output.position = vec4<f32>(ndc.x, ndc.y * yFlipSign, 0.0, 1.0);
|
|
29
|
+
output.texCoord = input.texCoord;
|
|
30
|
+
let premultipliedColor = vec4<f32>(
|
|
31
|
+
uniforms.color.rgb * uniforms.color.a * uniforms.alpha,
|
|
32
|
+
uniforms.color.a * uniforms.alpha
|
|
33
|
+
);
|
|
34
|
+
output.color = premultipliedColor;
|
|
35
|
+
return output;
|
|
36
|
+
}
|
|
37
|
+
`;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const BitmapFillVertex = "\noverride yFlipSign: f32 = 1.0;\n\nstruct VertexInput {\n @location(0) position: vec2<f32>,\n @location(1) bezier: vec2<f32>,\n}\n\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 width: f32,\n height: f32,\n repeat: f32,\n _pad: f32,\n color: vec4<f32>,\n contextMatrix0: vec4<f32>,\n contextMatrix1: vec4<f32>,\n contextMatrix2: vec4<f32>,\n}\n\n@group(0) @binding(0) var<uniform> bitmap: BitmapUniforms;\n\n@vertex\nfn main(input: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n let matrix = mat3x3<f32>(bitmap.contextMatrix0.xyz, bitmap.contextMatrix1.xyz, bitmap.contextMatrix2.xyz);\n let transformedPos = matrix * vec3<f32>(input.position, 1.0);\n let clipX = transformedPos.x * 2.0 - 1.0;\n let clipY = (transformedPos.y * 2.0 - 1.0) * yFlipSign;\n output.position = vec4<f32>(clipX, clipY, 0.0, 1.0);\n output.bezier = input.bezier;\n output.color = bitmap.color;\n output.worldPos = input.position;\n return output;\n}\n";
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export const BitmapFillVertex = /* wgsl */ `
|
|
2
|
+
override yFlipSign: f32 = 1.0;
|
|
3
|
+
|
|
4
|
+
struct VertexInput {
|
|
5
|
+
@location(0) position: vec2<f32>,
|
|
6
|
+
@location(1) bezier: vec2<f32>,
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
struct VertexOutput {
|
|
10
|
+
@builtin(position) position: vec4<f32>,
|
|
11
|
+
@location(0) bezier: vec2<f32>,
|
|
12
|
+
@location(1) color: vec4<f32>,
|
|
13
|
+
@location(2) worldPos: vec2<f32>,
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
struct BitmapUniforms {
|
|
17
|
+
bitmapMatrix: mat3x3<f32>,
|
|
18
|
+
width: f32,
|
|
19
|
+
height: f32,
|
|
20
|
+
repeat: f32,
|
|
21
|
+
_pad: f32,
|
|
22
|
+
color: vec4<f32>,
|
|
23
|
+
contextMatrix0: vec4<f32>,
|
|
24
|
+
contextMatrix1: vec4<f32>,
|
|
25
|
+
contextMatrix2: vec4<f32>,
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
@group(0) @binding(0) var<uniform> bitmap: BitmapUniforms;
|
|
29
|
+
|
|
30
|
+
@vertex
|
|
31
|
+
fn main(input: VertexInput) -> VertexOutput {
|
|
32
|
+
var output: VertexOutput;
|
|
33
|
+
let matrix = mat3x3<f32>(bitmap.contextMatrix0.xyz, bitmap.contextMatrix1.xyz, bitmap.contextMatrix2.xyz);
|
|
34
|
+
let transformedPos = matrix * vec3<f32>(input.position, 1.0);
|
|
35
|
+
let clipX = transformedPos.x * 2.0 - 1.0;
|
|
36
|
+
let clipY = (transformedPos.y * 2.0 - 1.0) * yFlipSign;
|
|
37
|
+
output.position = vec4<f32>(clipX, clipY, 0.0, 1.0);
|
|
38
|
+
output.bezier = input.bezier;
|
|
39
|
+
output.color = bitmap.color;
|
|
40
|
+
output.worldPos = input.position;
|
|
41
|
+
return output;
|
|
42
|
+
}
|
|
43
|
+
`;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const FillVertex = "\noverride yFlipSign: f32 = 1.0;\n\nstruct VertexInput {\n @location(0) position: vec2<f32>,\n @location(1) bezier: vec2<f32>,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) bezier: vec2<f32>,\n @location(1) color: vec4<f32>,\n}\n\nstruct FillUniforms {\n color: vec4<f32>,\n matrix0: vec4<f32>,\n matrix1: vec4<f32>,\n matrix2: vec4<f32>,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: FillUniforms;\n\n@vertex\nfn main(input: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n let matrix = mat3x3<f32>(uniforms.matrix0.xyz, uniforms.matrix1.xyz, uniforms.matrix2.xyz);\n let transformed = matrix * vec3<f32>(input.position, 1.0);\n let ndc = transformed.xy * 2.0 - 1.0;\n output.position = vec4<f32>(ndc.x, ndc.y * yFlipSign, 0.0, 1.0);\n output.bezier = input.bezier;\n output.color = uniforms.color;\n return output;\n}\n";
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export const FillVertex = /* wgsl */ `
|
|
2
|
+
override yFlipSign: f32 = 1.0;
|
|
3
|
+
|
|
4
|
+
struct VertexInput {
|
|
5
|
+
@location(0) position: vec2<f32>,
|
|
6
|
+
@location(1) bezier: vec2<f32>,
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
struct VertexOutput {
|
|
10
|
+
@builtin(position) position: vec4<f32>,
|
|
11
|
+
@location(0) bezier: vec2<f32>,
|
|
12
|
+
@location(1) color: vec4<f32>,
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
struct FillUniforms {
|
|
16
|
+
color: vec4<f32>,
|
|
17
|
+
matrix0: vec4<f32>,
|
|
18
|
+
matrix1: vec4<f32>,
|
|
19
|
+
matrix2: vec4<f32>,
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
@group(0) @binding(0) var<uniform> uniforms: FillUniforms;
|
|
23
|
+
|
|
24
|
+
@vertex
|
|
25
|
+
fn main(input: VertexInput) -> VertexOutput {
|
|
26
|
+
var output: VertexOutput;
|
|
27
|
+
let matrix = mat3x3<f32>(uniforms.matrix0.xyz, uniforms.matrix1.xyz, uniforms.matrix2.xyz);
|
|
28
|
+
let transformed = matrix * vec3<f32>(input.position, 1.0);
|
|
29
|
+
let ndc = transformed.xy * 2.0 - 1.0;
|
|
30
|
+
output.position = vec4<f32>(ndc.x, ndc.y * yFlipSign, 0.0, 1.0);
|
|
31
|
+
output.bezier = input.bezier;
|
|
32
|
+
output.color = uniforms.color;
|
|
33
|
+
return output;
|
|
34
|
+
}
|
|
35
|
+
`;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare const BlurFilterVertex: string;
|
|
2
|
+
export declare const ComplexBlendVertex: string;
|
|
3
|
+
export declare const ComplexBlendCopyVertex: string;
|
|
4
|
+
export declare const NodeClearVertex = "\nstruct VertexInput {\n @location(0) position: vec2<f32>,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n}\n\n@vertex\nfn main(input: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n let ndc = input.position * 2.0 - 1.0;\n output.position = vec4<f32>(ndc.x, ndc.y, 0.0, 1.0);\n return output;\n}\n";
|
|
5
|
+
export declare const PositionedTextureVertex = "\nstruct PositionUniforms {\n offset: vec2<f32>,\n size: vec2<f32>,\n viewport: vec2<f32>,\n padding: vec2<f32>,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: PositionUniforms;\n\n@vertex\nfn main(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {\n var output: VertexOutput;\n\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 );\n let vertex = vertices[vertexIndex];\n output.texCoord = vec2<f32>(vertex.x, 1.0 - vertex.y);\n var position = vertex * uniforms.size + uniforms.offset;\n position = position / uniforms.viewport;\n position = position * 2.0 - 1.0;\n output.position = vec4<f32>(position.x, -position.y, 0.0, 1.0);\n return output;\n}\n";
|
|
6
|
+
export declare const BitmapSyncVertex = "\nstruct BitmapSyncUniforms {\n nodeRect: vec4<f32>,\n textureSize: vec2<f32>,\n padding: vec2<f32>,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: BitmapSyncUniforms;\n\n@vertex\nfn main(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {\n var output: VertexOutput;\n\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 );\n let vertex = vertices[vertexIndex];\n let pixelPos = vec2<f32>(\n uniforms.nodeRect.x + vertex.x * uniforms.nodeRect.z,\n uniforms.nodeRect.y + vertex.y * uniforms.nodeRect.w\n );\n let ndc = pixelPos / uniforms.textureSize * 2.0 - 1.0;\n output.position = vec4<f32>(ndc.x, -ndc.y, 0.0, 1.0);\n output.texCoord = pixelPos / uniforms.textureSize;\n return output;\n}\n";
|
|
7
|
+
export declare const BlendModeVertex = "\nstruct VertexInput {\n @location(0) position: vec2<f32>,\n @location(1) texCoord: vec2<f32>,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}\n\n@vertex\nfn main(input: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n output.position = vec4<f32>(input.position, 0.0, 1.0);\n output.texCoord = input.texCoord;\n return output;\n}\n";
|
|
8
|
+
export declare const TextureScaleVertex: string;
|
|
9
|
+
export declare const TextureScaleBlendVertex: string;
|
|
10
|
+
export declare const ComplexBlendScaleVertex: string;
|
|
11
|
+
export declare const ComplexBlendOutputVertex: string;
|
|
12
|
+
export declare const FilterComplexBlendOutputVertex: string;
|