@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,193 @@
|
|
|
1
|
+
import { WgslFullscreenPositions, WgslUnitQuadVertices, WgslVertexOutput } from "../common/SharedWgsl";
|
|
2
|
+
const createFullscreenQuadVertex = (yFlipTexCoord) => /* wgsl */ `
|
|
3
|
+
${WgslVertexOutput}
|
|
4
|
+
|
|
5
|
+
@vertex
|
|
6
|
+
fn main(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {
|
|
7
|
+
var output: VertexOutput;
|
|
8
|
+
${WgslFullscreenPositions}
|
|
9
|
+
var texCoords = array<vec2<f32>, 6>(
|
|
10
|
+
vec2<f32>(0.0, ${yFlipTexCoord ? "1.0" : "0.0"}),
|
|
11
|
+
vec2<f32>(1.0, ${yFlipTexCoord ? "1.0" : "0.0"}),
|
|
12
|
+
vec2<f32>(0.0, ${yFlipTexCoord ? "0.0" : "1.0"}),
|
|
13
|
+
vec2<f32>(0.0, ${yFlipTexCoord ? "0.0" : "1.0"}),
|
|
14
|
+
vec2<f32>(1.0, ${yFlipTexCoord ? "1.0" : "0.0"}),
|
|
15
|
+
vec2<f32>(1.0, ${yFlipTexCoord ? "0.0" : "1.0"})
|
|
16
|
+
);
|
|
17
|
+
output.position = vec4<f32>(positions[vertexIndex], 0.0, 1.0);
|
|
18
|
+
output.texCoord = texCoords[vertexIndex];
|
|
19
|
+
return output;
|
|
20
|
+
}
|
|
21
|
+
`;
|
|
22
|
+
export const BlurFilterVertex = createFullscreenQuadVertex(true);
|
|
23
|
+
export const ComplexBlendVertex = createFullscreenQuadVertex(false);
|
|
24
|
+
export const ComplexBlendCopyVertex = createFullscreenQuadVertex(false);
|
|
25
|
+
export const NodeClearVertex = /* wgsl */ `
|
|
26
|
+
struct VertexInput {
|
|
27
|
+
@location(0) position: vec2<f32>,
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
struct VertexOutput {
|
|
31
|
+
@builtin(position) position: vec4<f32>,
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
@vertex
|
|
35
|
+
fn main(input: VertexInput) -> VertexOutput {
|
|
36
|
+
var output: VertexOutput;
|
|
37
|
+
let ndc = input.position * 2.0 - 1.0;
|
|
38
|
+
output.position = vec4<f32>(ndc.x, ndc.y, 0.0, 1.0);
|
|
39
|
+
return output;
|
|
40
|
+
}
|
|
41
|
+
`;
|
|
42
|
+
export const PositionedTextureVertex = /* wgsl */ `
|
|
43
|
+
struct PositionUniforms {
|
|
44
|
+
offset: vec2<f32>,
|
|
45
|
+
size: vec2<f32>,
|
|
46
|
+
viewport: vec2<f32>,
|
|
47
|
+
padding: vec2<f32>,
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
struct VertexOutput {
|
|
51
|
+
@builtin(position) position: vec4<f32>,
|
|
52
|
+
@location(0) texCoord: vec2<f32>,
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
@group(0) @binding(0) var<uniform> uniforms: PositionUniforms;
|
|
56
|
+
|
|
57
|
+
@vertex
|
|
58
|
+
fn main(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {
|
|
59
|
+
var output: VertexOutput;
|
|
60
|
+
${WgslUnitQuadVertices}
|
|
61
|
+
let vertex = vertices[vertexIndex];
|
|
62
|
+
output.texCoord = vec2<f32>(vertex.x, 1.0 - vertex.y);
|
|
63
|
+
var position = vertex * uniforms.size + uniforms.offset;
|
|
64
|
+
position = position / uniforms.viewport;
|
|
65
|
+
position = position * 2.0 - 1.0;
|
|
66
|
+
output.position = vec4<f32>(position.x, -position.y, 0.0, 1.0);
|
|
67
|
+
return output;
|
|
68
|
+
}
|
|
69
|
+
`;
|
|
70
|
+
export const BitmapSyncVertex = /* wgsl */ `
|
|
71
|
+
struct BitmapSyncUniforms {
|
|
72
|
+
nodeRect: vec4<f32>,
|
|
73
|
+
textureSize: vec2<f32>,
|
|
74
|
+
padding: vec2<f32>,
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
struct VertexOutput {
|
|
78
|
+
@builtin(position) position: vec4<f32>,
|
|
79
|
+
@location(0) texCoord: vec2<f32>,
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
@group(0) @binding(0) var<uniform> uniforms: BitmapSyncUniforms;
|
|
83
|
+
|
|
84
|
+
@vertex
|
|
85
|
+
fn main(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {
|
|
86
|
+
var output: VertexOutput;
|
|
87
|
+
${WgslUnitQuadVertices}
|
|
88
|
+
let vertex = vertices[vertexIndex];
|
|
89
|
+
let pixelPos = vec2<f32>(
|
|
90
|
+
uniforms.nodeRect.x + vertex.x * uniforms.nodeRect.z,
|
|
91
|
+
uniforms.nodeRect.y + vertex.y * uniforms.nodeRect.w
|
|
92
|
+
);
|
|
93
|
+
let ndc = pixelPos / uniforms.textureSize * 2.0 - 1.0;
|
|
94
|
+
output.position = vec4<f32>(ndc.x, -ndc.y, 0.0, 1.0);
|
|
95
|
+
output.texCoord = pixelPos / uniforms.textureSize;
|
|
96
|
+
return output;
|
|
97
|
+
}
|
|
98
|
+
`;
|
|
99
|
+
export const BlendModeVertex = /* wgsl */ `
|
|
100
|
+
struct VertexInput {
|
|
101
|
+
@location(0) position: vec2<f32>,
|
|
102
|
+
@location(1) texCoord: vec2<f32>,
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
struct VertexOutput {
|
|
106
|
+
@builtin(position) position: vec4<f32>,
|
|
107
|
+
@location(0) texCoord: vec2<f32>,
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
@vertex
|
|
111
|
+
fn main(input: VertexInput) -> VertexOutput {
|
|
112
|
+
var output: VertexOutput;
|
|
113
|
+
output.position = vec4<f32>(input.position, 0.0, 1.0);
|
|
114
|
+
output.texCoord = input.texCoord;
|
|
115
|
+
return output;
|
|
116
|
+
}
|
|
117
|
+
`;
|
|
118
|
+
const ScaleUniformsAndStruct = `
|
|
119
|
+
struct ScaleUniforms {
|
|
120
|
+
matrix: vec4<f32>,
|
|
121
|
+
translate: vec2<f32>,
|
|
122
|
+
srcSize: vec2<f32>,
|
|
123
|
+
dstSize: vec2<f32>,
|
|
124
|
+
padding: vec2<f32>,
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
struct VertexOutput {
|
|
128
|
+
@builtin(position) position: vec4<f32>,
|
|
129
|
+
@location(0) texCoord: vec2<f32>,
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
@group(0) @binding(0) var<uniform> uniforms: ScaleUniforms;
|
|
133
|
+
`;
|
|
134
|
+
const ScaleTransformBody = `
|
|
135
|
+
var pos = vertex * uniforms.srcSize;
|
|
136
|
+
let a = uniforms.matrix.x;
|
|
137
|
+
let b = uniforms.matrix.y;
|
|
138
|
+
let c = uniforms.matrix.z;
|
|
139
|
+
let d = uniforms.matrix.w;
|
|
140
|
+
let tx = uniforms.translate.x;
|
|
141
|
+
let ty = uniforms.translate.y;
|
|
142
|
+
let transformedX = pos.x * a + pos.y * c + tx;
|
|
143
|
+
let transformedY = pos.x * b + pos.y * d + ty;
|
|
144
|
+
var position = vec2<f32>(transformedX, transformedY) / uniforms.dstSize;
|
|
145
|
+
position = position * 2.0 - 1.0;
|
|
146
|
+
output.position = vec4<f32>(position.x, -position.y, 0.0, 1.0);
|
|
147
|
+
`;
|
|
148
|
+
const createScaleVertex = (yFlipTexCoord) => /* wgsl */ `
|
|
149
|
+
${ScaleUniformsAndStruct}
|
|
150
|
+
|
|
151
|
+
@vertex
|
|
152
|
+
fn main(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {
|
|
153
|
+
var output: VertexOutput;
|
|
154
|
+
${WgslUnitQuadVertices}
|
|
155
|
+
let vertex = vertices[vertexIndex];
|
|
156
|
+
output.texCoord = ${yFlipTexCoord ? "vec2<f32>(vertex.x, 1.0 - vertex.y)" : "vertex"};
|
|
157
|
+
${ScaleTransformBody}
|
|
158
|
+
return output;
|
|
159
|
+
}
|
|
160
|
+
`;
|
|
161
|
+
export const TextureScaleVertex = createScaleVertex(false);
|
|
162
|
+
export const TextureScaleBlendVertex = createScaleVertex(true);
|
|
163
|
+
export const ComplexBlendScaleVertex = createScaleVertex(false);
|
|
164
|
+
const createOutputVertex = (yFlipTexCoord) => /* wgsl */ `
|
|
165
|
+
struct PositionUniforms {
|
|
166
|
+
offset: vec2<f32>,
|
|
167
|
+
size: vec2<f32>,
|
|
168
|
+
viewport: vec2<f32>,
|
|
169
|
+
padding: vec2<f32>,
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
struct VertexOutput {
|
|
173
|
+
@builtin(position) position: vec4<f32>,
|
|
174
|
+
@location(0) texCoord: vec2<f32>,
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
@group(0) @binding(0) var<uniform> uniforms: PositionUniforms;
|
|
178
|
+
|
|
179
|
+
@vertex
|
|
180
|
+
fn main(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {
|
|
181
|
+
var output: VertexOutput;
|
|
182
|
+
${WgslUnitQuadVertices}
|
|
183
|
+
let vertex = vertices[vertexIndex];
|
|
184
|
+
output.texCoord = ${yFlipTexCoord ? "vec2<f32>(vertex.x, 1.0 - vertex.y)" : "vertex"};
|
|
185
|
+
var position = vertex * uniforms.size + uniforms.offset;
|
|
186
|
+
position = position / uniforms.viewport;
|
|
187
|
+
position = position * 2.0 - 1.0;
|
|
188
|
+
output.position = vec4<f32>(position.x, -position.y, 0.0, 1.0);
|
|
189
|
+
return output;
|
|
190
|
+
}
|
|
191
|
+
`;
|
|
192
|
+
export const ComplexBlendOutputVertex = createOutputVertex(false);
|
|
193
|
+
export const FilterComplexBlendOutputVertex = createOutputVertex(true);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const GradientFillVertex = "\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) 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 color: vec4<f32>,\n contextMatrix0: vec4<f32>,\n contextMatrix1: vec4<f32>,\n contextMatrix2: vec4<f32>,\n}\n\n@group(0) @binding(0) var<uniform> gradient: GradientUniforms;\n\n@vertex\nfn main(input: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n let contextMatrix = mat3x3<f32>(gradient.contextMatrix0.xyz, gradient.contextMatrix1.xyz, gradient.contextMatrix2.xyz);\n let pos = contextMatrix * vec3<f32>(input.position, 1.0);\n let ndc = vec2<f32>(pos.x * 2.0 - 1.0, pos.y * 2.0 - 1.0);\n output.position = vec4<f32>(ndc.x, ndc.y * yFlipSign, 0.0, 1.0);\n let uvPos = gradient.inverseMatrix * vec3<f32>(input.position, 1.0);\n output.v_uv = uvPos.xy;\n output.bezier = input.bezier;\n output.color = gradient.color;\n return output;\n}\n";
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export const GradientFillVertex = /* 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) v_uv: vec2<f32>,
|
|
12
|
+
@location(1) bezier: vec2<f32>,
|
|
13
|
+
@location(2) color: vec4<f32>,
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
struct GradientUniforms {
|
|
17
|
+
inverseMatrix: mat3x3<f32>,
|
|
18
|
+
gradientType: f32,
|
|
19
|
+
focal: f32,
|
|
20
|
+
spread: f32,
|
|
21
|
+
radius: f32,
|
|
22
|
+
linearPoints: vec4<f32>,
|
|
23
|
+
color: vec4<f32>,
|
|
24
|
+
contextMatrix0: vec4<f32>,
|
|
25
|
+
contextMatrix1: vec4<f32>,
|
|
26
|
+
contextMatrix2: vec4<f32>,
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
@group(0) @binding(0) var<uniform> gradient: GradientUniforms;
|
|
30
|
+
|
|
31
|
+
@vertex
|
|
32
|
+
fn main(input: VertexInput) -> VertexOutput {
|
|
33
|
+
var output: VertexOutput;
|
|
34
|
+
let contextMatrix = mat3x3<f32>(gradient.contextMatrix0.xyz, gradient.contextMatrix1.xyz, gradient.contextMatrix2.xyz);
|
|
35
|
+
let pos = contextMatrix * vec3<f32>(input.position, 1.0);
|
|
36
|
+
let ndc = vec2<f32>(pos.x * 2.0 - 1.0, pos.y * 2.0 - 1.0);
|
|
37
|
+
output.position = vec4<f32>(ndc.x, ndc.y * yFlipSign, 0.0, 1.0);
|
|
38
|
+
let uvPos = gradient.inverseMatrix * vec3<f32>(input.position, 1.0);
|
|
39
|
+
output.v_uv = uvPos.xy;
|
|
40
|
+
output.bezier = input.bezier;
|
|
41
|
+
output.color = gradient.color;
|
|
42
|
+
return output;
|
|
43
|
+
}
|
|
44
|
+
`;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const InstancedVertex = "\nstruct VertexInput {\n @location(0) position: vec2<f32>,\n @location(1) texCoord: vec2<f32>,\n}\n\nstruct InstanceInput {\n @location(2) textureRect: vec4<f32>,\n @location(3) textureDim: vec4<f32>,\n @location(4) matrixTx: vec4<f32>,\n @location(5) matrixScale: vec4<f32>,\n @location(6) mulColor: vec4<f32>,\n @location(7) addColor: vec4<f32>,\n}\n\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@vertex\nfn main(\n input: VertexInput,\n instance: InstanceInput,\n @builtin(instance_index) instanceIdx: u32\n) -> VertexOutput {\n var output: VertexOutput;\n let texX = instance.textureRect.x + input.texCoord.x * instance.textureRect.z;\n let texY = instance.textureRect.y + input.texCoord.y * instance.textureRect.w;\n output.texCoord = vec2<f32>(texX, texY);\n var pos = vec2<f32>(input.position.x, 1.0 - input.position.y);\n pos = pos * vec2<f32>(instance.textureDim.x, instance.textureDim.y);\n let scale0 = instance.matrixScale.x;\n let rotate0 = instance.matrixScale.y;\n let scale1 = instance.matrixScale.z;\n let rotate1 = instance.matrixScale.w;\n let transformedX = pos.x * scale0 + pos.y * scale1 + instance.matrixTx.x;\n let transformedY = pos.x * rotate0 + pos.y * rotate1 + instance.matrixTx.y;\n var position = vec2<f32>(transformedX, transformedY) / vec2<f32>(instance.textureDim.z, instance.textureDim.w);\n position = position * 2.0 - 1.0;\n output.position = vec4<f32>(position.x, -position.y, 0.0, 1.0);\n output.mulColor = instance.mulColor;\n output.addColor = instance.addColor;\n return output;\n}\n";
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export const InstancedVertex = /* wgsl */ `
|
|
2
|
+
struct VertexInput {
|
|
3
|
+
@location(0) position: vec2<f32>,
|
|
4
|
+
@location(1) texCoord: vec2<f32>,
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
struct InstanceInput {
|
|
8
|
+
@location(2) textureRect: vec4<f32>,
|
|
9
|
+
@location(3) textureDim: vec4<f32>,
|
|
10
|
+
@location(4) matrixTx: vec4<f32>,
|
|
11
|
+
@location(5) matrixScale: vec4<f32>,
|
|
12
|
+
@location(6) mulColor: vec4<f32>,
|
|
13
|
+
@location(7) addColor: vec4<f32>,
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
struct VertexOutput {
|
|
17
|
+
@builtin(position) position: vec4<f32>,
|
|
18
|
+
@location(0) texCoord: vec2<f32>,
|
|
19
|
+
@location(1) mulColor: vec4<f32>,
|
|
20
|
+
@location(2) addColor: vec4<f32>,
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
@vertex
|
|
24
|
+
fn main(
|
|
25
|
+
input: VertexInput,
|
|
26
|
+
instance: InstanceInput,
|
|
27
|
+
@builtin(instance_index) instanceIdx: u32
|
|
28
|
+
) -> VertexOutput {
|
|
29
|
+
var output: VertexOutput;
|
|
30
|
+
let texX = instance.textureRect.x + input.texCoord.x * instance.textureRect.z;
|
|
31
|
+
let texY = instance.textureRect.y + input.texCoord.y * instance.textureRect.w;
|
|
32
|
+
output.texCoord = vec2<f32>(texX, texY);
|
|
33
|
+
var pos = vec2<f32>(input.position.x, 1.0 - input.position.y);
|
|
34
|
+
pos = pos * vec2<f32>(instance.textureDim.x, instance.textureDim.y);
|
|
35
|
+
let scale0 = instance.matrixScale.x;
|
|
36
|
+
let rotate0 = instance.matrixScale.y;
|
|
37
|
+
let scale1 = instance.matrixScale.z;
|
|
38
|
+
let rotate1 = instance.matrixScale.w;
|
|
39
|
+
let transformedX = pos.x * scale0 + pos.y * scale1 + instance.matrixTx.x;
|
|
40
|
+
let transformedY = pos.x * rotate0 + pos.y * rotate1 + instance.matrixTx.y;
|
|
41
|
+
var position = vec2<f32>(transformedX, transformedY) / vec2<f32>(instance.textureDim.z, instance.textureDim.w);
|
|
42
|
+
position = position * 2.0 - 1.0;
|
|
43
|
+
output.position = vec4<f32>(position.x, -position.y, 0.0, 1.0);
|
|
44
|
+
output.mulColor = instance.mulColor;
|
|
45
|
+
output.addColor = instance.addColor;
|
|
46
|
+
return output;
|
|
47
|
+
}
|
|
48
|
+
`;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const MaskVertex = "\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}\n\nstruct Uniforms {\n viewportSize: vec2<f32>,\n _padding0: vec2<f32>,\n matrixCol0: vec3<f32>,\n _padding1: f32,\n matrixCol1: vec3<f32>,\n _padding2: f32,\n matrixCol2: vec3<f32>,\n _padding3: 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 matrix = mat3x3<f32>(uniforms.matrixCol0, uniforms.matrixCol1, uniforms.matrixCol2);\n let transformed = matrix * vec3<f32>(input.position, 1.0);\n let pos = transformed.xy;\n let ndc = pos * 2.0 - 1.0;\n output.position = vec4<f32>(ndc.x, -ndc.y, 0.0, 1.0);\n output.bezier = input.bezier;\n return output;\n}\n";
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export const MaskVertex = /* wgsl */ `
|
|
2
|
+
struct VertexInput {
|
|
3
|
+
@location(0) position: vec2<f32>,
|
|
4
|
+
@location(1) bezier: vec2<f32>,
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
struct VertexOutput {
|
|
8
|
+
@builtin(position) position: vec4<f32>,
|
|
9
|
+
@location(0) bezier: vec2<f32>,
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
struct Uniforms {
|
|
13
|
+
viewportSize: vec2<f32>,
|
|
14
|
+
_padding0: vec2<f32>,
|
|
15
|
+
matrixCol0: vec3<f32>,
|
|
16
|
+
_padding1: f32,
|
|
17
|
+
matrixCol1: vec3<f32>,
|
|
18
|
+
_padding2: f32,
|
|
19
|
+
matrixCol2: vec3<f32>,
|
|
20
|
+
_padding3: f32,
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
@group(0) @binding(0) var<uniform> uniforms: Uniforms;
|
|
24
|
+
|
|
25
|
+
@vertex
|
|
26
|
+
fn main(input: VertexInput) -> VertexOutput {
|
|
27
|
+
var output: VertexOutput;
|
|
28
|
+
let matrix = mat3x3<f32>(uniforms.matrixCol0, uniforms.matrixCol1, uniforms.matrixCol2);
|
|
29
|
+
let transformed = matrix * vec3<f32>(input.position, 1.0);
|
|
30
|
+
let pos = transformed.xy;
|
|
31
|
+
let ndc = pos * 2.0 - 1.0;
|
|
32
|
+
output.position = vec4<f32>(ndc.x, -ndc.y, 0.0, 1.0);
|
|
33
|
+
output.bezier = input.bezier;
|
|
34
|
+
return output;
|
|
35
|
+
}
|
|
36
|
+
`;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const StencilWriteVertex = "\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}\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 return output;\n}\n";
|
|
2
|
+
export declare const StencilFillVertex = "\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) 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.color = uniforms.color;\n return output;\n}\n";
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
export const StencilWriteVertex = /* 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
|
+
}
|
|
13
|
+
|
|
14
|
+
struct FillUniforms {
|
|
15
|
+
color: vec4<f32>,
|
|
16
|
+
matrix0: vec4<f32>,
|
|
17
|
+
matrix1: vec4<f32>,
|
|
18
|
+
matrix2: vec4<f32>,
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@group(0) @binding(0) var<uniform> uniforms: FillUniforms;
|
|
22
|
+
|
|
23
|
+
@vertex
|
|
24
|
+
fn main(input: VertexInput) -> VertexOutput {
|
|
25
|
+
var output: VertexOutput;
|
|
26
|
+
let matrix = mat3x3<f32>(uniforms.matrix0.xyz, uniforms.matrix1.xyz, uniforms.matrix2.xyz);
|
|
27
|
+
let transformed = matrix * vec3<f32>(input.position, 1.0);
|
|
28
|
+
let ndc = transformed.xy * 2.0 - 1.0;
|
|
29
|
+
output.position = vec4<f32>(ndc.x, ndc.y * yFlipSign, 0.0, 1.0);
|
|
30
|
+
output.bezier = input.bezier;
|
|
31
|
+
return output;
|
|
32
|
+
}
|
|
33
|
+
`;
|
|
34
|
+
export const StencilFillVertex = /* wgsl */ `
|
|
35
|
+
override yFlipSign: f32 = 1.0;
|
|
36
|
+
|
|
37
|
+
struct VertexInput {
|
|
38
|
+
@location(0) position: vec2<f32>,
|
|
39
|
+
@location(1) bezier: vec2<f32>,
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
struct VertexOutput {
|
|
43
|
+
@builtin(position) position: vec4<f32>,
|
|
44
|
+
@location(0) color: vec4<f32>,
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
struct FillUniforms {
|
|
48
|
+
color: vec4<f32>,
|
|
49
|
+
matrix0: vec4<f32>,
|
|
50
|
+
matrix1: vec4<f32>,
|
|
51
|
+
matrix2: vec4<f32>,
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
@group(0) @binding(0) var<uniform> uniforms: FillUniforms;
|
|
55
|
+
|
|
56
|
+
@vertex
|
|
57
|
+
fn main(input: VertexInput) -> VertexOutput {
|
|
58
|
+
var output: VertexOutput;
|
|
59
|
+
let matrix = mat3x3<f32>(uniforms.matrix0.xyz, uniforms.matrix1.xyz, uniforms.matrix2.xyz);
|
|
60
|
+
let transformed = matrix * vec3<f32>(input.position, 1.0);
|
|
61
|
+
let ndc = transformed.xy * 2.0 - 1.0;
|
|
62
|
+
output.position = vec4<f32>(ndc.x, ndc.y * yFlipSign, 0.0, 1.0);
|
|
63
|
+
output.color = uniforms.color;
|
|
64
|
+
return output;
|
|
65
|
+
}
|
|
66
|
+
`;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description サンプラーを初期化
|
|
3
|
+
* Initialize samplers
|
|
4
|
+
*
|
|
5
|
+
* @param {GPUDevice} device
|
|
6
|
+
* @param {Map<string, GPUSampler>} samplers
|
|
7
|
+
* @return {void}
|
|
8
|
+
* @method
|
|
9
|
+
* @protected
|
|
10
|
+
*/
|
|
11
|
+
export declare const execute: (device: GPUDevice, samplers: Map<string, GPUSampler>) => void;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description サンプラーを初期化
|
|
3
|
+
* Initialize samplers
|
|
4
|
+
*
|
|
5
|
+
* @param {GPUDevice} device
|
|
6
|
+
* @param {Map<string, GPUSampler>} samplers
|
|
7
|
+
* @return {void}
|
|
8
|
+
* @method
|
|
9
|
+
* @protected
|
|
10
|
+
*/
|
|
11
|
+
export const execute = (device, samplers) => {
|
|
12
|
+
// デフォルトサンプラー(リニアフィルタリング)
|
|
13
|
+
const linearSampler = device.createSampler({
|
|
14
|
+
"magFilter": "linear",
|
|
15
|
+
"minFilter": "linear",
|
|
16
|
+
"mipmapFilter": "linear",
|
|
17
|
+
"addressModeU": "clamp-to-edge",
|
|
18
|
+
"addressModeV": "clamp-to-edge"
|
|
19
|
+
});
|
|
20
|
+
samplers.set("linear", linearSampler);
|
|
21
|
+
// ニアレストサンプラー
|
|
22
|
+
const nearestSampler = device.createSampler({
|
|
23
|
+
"magFilter": "nearest",
|
|
24
|
+
"minFilter": "nearest",
|
|
25
|
+
"mipmapFilter": "nearest",
|
|
26
|
+
"addressModeU": "clamp-to-edge",
|
|
27
|
+
"addressModeV": "clamp-to-edge"
|
|
28
|
+
});
|
|
29
|
+
samplers.set("nearest", nearestSampler);
|
|
30
|
+
// アトラス用サンプラー(min: linear, mag: nearest)
|
|
31
|
+
const atlasSampler = device.createSampler({
|
|
32
|
+
"magFilter": "nearest",
|
|
33
|
+
"minFilter": "linear",
|
|
34
|
+
"mipmapFilter": "nearest",
|
|
35
|
+
"addressModeU": "clamp-to-edge",
|
|
36
|
+
"addressModeV": "clamp-to-edge"
|
|
37
|
+
});
|
|
38
|
+
samplers.set("atlas_instanced_sampler", atlasSampler);
|
|
39
|
+
// リピートサンプラー
|
|
40
|
+
const repeatSampler = device.createSampler({
|
|
41
|
+
"magFilter": "linear",
|
|
42
|
+
"minFilter": "linear",
|
|
43
|
+
"mipmapFilter": "linear",
|
|
44
|
+
"addressModeU": "repeat",
|
|
45
|
+
"addressModeV": "repeat"
|
|
46
|
+
});
|
|
47
|
+
samplers.set("repeat", repeatSampler);
|
|
48
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description ImageBitmapからテクスチャを作成
|
|
3
|
+
* Create texture from ImageBitmap
|
|
4
|
+
*
|
|
5
|
+
* @param {GPUDevice} device
|
|
6
|
+
* @param {Map<string, GPUTexture>} textures
|
|
7
|
+
* @param {string} name
|
|
8
|
+
* @param {ImageBitmap} image_bitmap
|
|
9
|
+
* @return {GPUTexture}
|
|
10
|
+
* @method
|
|
11
|
+
* @protected
|
|
12
|
+
*/
|
|
13
|
+
export declare const execute: (device: GPUDevice, textures: Map<string, GPUTexture>, name: string, image_bitmap: ImageBitmap) => GPUTexture;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description ImageBitmapからテクスチャを作成
|
|
3
|
+
* Create texture from ImageBitmap
|
|
4
|
+
*
|
|
5
|
+
* @param {GPUDevice} device
|
|
6
|
+
* @param {Map<string, GPUTexture>} textures
|
|
7
|
+
* @param {string} name
|
|
8
|
+
* @param {ImageBitmap} image_bitmap
|
|
9
|
+
* @return {GPUTexture}
|
|
10
|
+
* @method
|
|
11
|
+
* @protected
|
|
12
|
+
*/
|
|
13
|
+
export const execute = (device, textures, name, image_bitmap) => {
|
|
14
|
+
const texture = device.createTexture({
|
|
15
|
+
"size": { "width": image_bitmap.width, "height": image_bitmap.height },
|
|
16
|
+
"format": "rgba8unorm",
|
|
17
|
+
"usage": GPUTextureUsage.TEXTURE_BINDING |
|
|
18
|
+
GPUTextureUsage.COPY_DST |
|
|
19
|
+
GPUTextureUsage.RENDER_ATTACHMENT
|
|
20
|
+
});
|
|
21
|
+
device.queue.copyExternalImageToTexture({
|
|
22
|
+
"source": image_bitmap,
|
|
23
|
+
"flipY": true
|
|
24
|
+
}, {
|
|
25
|
+
texture,
|
|
26
|
+
"premultipliedAlpha": true
|
|
27
|
+
}, { "width": image_bitmap.width, "height": image_bitmap.height });
|
|
28
|
+
textures.set(name, texture);
|
|
29
|
+
return texture;
|
|
30
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description ピクセルデータからテクスチャを作成
|
|
3
|
+
* Create texture from pixel data
|
|
4
|
+
*
|
|
5
|
+
* @param {GPUDevice} device
|
|
6
|
+
* @param {Map<string, GPUTexture>} textures
|
|
7
|
+
* @param {string} name
|
|
8
|
+
* @param {Uint8Array} pixels
|
|
9
|
+
* @param {number} width
|
|
10
|
+
* @param {number} height
|
|
11
|
+
* @return {GPUTexture}
|
|
12
|
+
* @method
|
|
13
|
+
* @protected
|
|
14
|
+
*/
|
|
15
|
+
export declare const execute: (device: GPUDevice, textures: Map<string, GPUTexture>, name: string, pixels: Uint8Array, width: number, height: number) => GPUTexture;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description ピクセルデータからテクスチャを作成
|
|
3
|
+
* Create texture from pixel data
|
|
4
|
+
*
|
|
5
|
+
* @param {GPUDevice} device
|
|
6
|
+
* @param {Map<string, GPUTexture>} textures
|
|
7
|
+
* @param {string} name
|
|
8
|
+
* @param {Uint8Array} pixels
|
|
9
|
+
* @param {number} width
|
|
10
|
+
* @param {number} height
|
|
11
|
+
* @return {GPUTexture}
|
|
12
|
+
* @method
|
|
13
|
+
* @protected
|
|
14
|
+
*/
|
|
15
|
+
export const execute = (device, textures, name, pixels, width, height) => {
|
|
16
|
+
const texture = device.createTexture({
|
|
17
|
+
"size": { width, height },
|
|
18
|
+
"format": "rgba8unorm",
|
|
19
|
+
"usage": GPUTextureUsage.TEXTURE_BINDING |
|
|
20
|
+
GPUTextureUsage.COPY_DST |
|
|
21
|
+
GPUTextureUsage.RENDER_ATTACHMENT
|
|
22
|
+
});
|
|
23
|
+
device.queue.writeTexture({ texture }, pixels.buffer, { "bytesPerRow": width * 4, "offset": pixels.byteOffset }, { width, height });
|
|
24
|
+
textures.set(name, texture);
|
|
25
|
+
return texture;
|
|
26
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare class TextureManager {
|
|
2
|
+
private device;
|
|
3
|
+
private textures;
|
|
4
|
+
private samplers;
|
|
5
|
+
constructor(device: GPUDevice);
|
|
6
|
+
createTexture(name: string, width: number, height: number, format?: GPUTextureFormat): GPUTexture;
|
|
7
|
+
createTextureFromPixels(name: string, pixels: Uint8Array, width: number, height: number): GPUTexture;
|
|
8
|
+
createTextureFromImageBitmap(name: string, imageBitmap: ImageBitmap): GPUTexture;
|
|
9
|
+
updateTexture(name: string, pixels: Uint8Array, width: number, height: number): void;
|
|
10
|
+
getTexture(name: string): GPUTexture | undefined;
|
|
11
|
+
getSampler(name: string): GPUSampler | undefined;
|
|
12
|
+
createSampler(name: string, smooth?: boolean): GPUSampler;
|
|
13
|
+
destroyTexture(name: string): void;
|
|
14
|
+
dispose(): void;
|
|
15
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { execute as textureManagerInitializeSamplersService } from "./TextureManager/service/TextureManagerInitializeSamplersService";
|
|
2
|
+
import { execute as textureManagerCreateTextureFromPixelsUseCase } from "./TextureManager/usecase/TextureManagerCreateTextureFromPixelsUseCase";
|
|
3
|
+
import { execute as textureManagerCreateTextureFromImageBitmapUseCase } from "./TextureManager/usecase/TextureManagerCreateTextureFromImageBitmapUseCase";
|
|
4
|
+
export class TextureManager {
|
|
5
|
+
constructor(device) {
|
|
6
|
+
Object.defineProperty(this, "device", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
configurable: true,
|
|
9
|
+
writable: true,
|
|
10
|
+
value: void 0
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(this, "textures", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
configurable: true,
|
|
15
|
+
writable: true,
|
|
16
|
+
value: void 0
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(this, "samplers", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
configurable: true,
|
|
21
|
+
writable: true,
|
|
22
|
+
value: void 0
|
|
23
|
+
});
|
|
24
|
+
this.device = device;
|
|
25
|
+
this.textures = new Map();
|
|
26
|
+
this.samplers = new Map();
|
|
27
|
+
textureManagerInitializeSamplersService(device, this.samplers);
|
|
28
|
+
}
|
|
29
|
+
createTexture(name, width, height, format = "rgba8unorm") {
|
|
30
|
+
const texture = this.device.createTexture({
|
|
31
|
+
"size": { width, height },
|
|
32
|
+
"format": format,
|
|
33
|
+
"usage": GPUTextureUsage.TEXTURE_BINDING |
|
|
34
|
+
GPUTextureUsage.COPY_DST |
|
|
35
|
+
GPUTextureUsage.RENDER_ATTACHMENT
|
|
36
|
+
});
|
|
37
|
+
this.textures.set(name, texture);
|
|
38
|
+
return texture;
|
|
39
|
+
}
|
|
40
|
+
createTextureFromPixels(name, pixels, width, height) {
|
|
41
|
+
return textureManagerCreateTextureFromPixelsUseCase(this.device, this.textures, name, pixels, width, height);
|
|
42
|
+
}
|
|
43
|
+
createTextureFromImageBitmap(name, imageBitmap) {
|
|
44
|
+
return textureManagerCreateTextureFromImageBitmapUseCase(this.device, this.textures, name, imageBitmap);
|
|
45
|
+
}
|
|
46
|
+
updateTexture(name, pixels, width, height) {
|
|
47
|
+
const texture = this.textures.get(name);
|
|
48
|
+
if (texture) {
|
|
49
|
+
this.device.queue.writeTexture({ texture }, pixels.buffer, { "bytesPerRow": width * 4, "offset": pixels.byteOffset }, { width, height });
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
getTexture(name) {
|
|
53
|
+
return this.textures.get(name);
|
|
54
|
+
}
|
|
55
|
+
getSampler(name) {
|
|
56
|
+
return this.samplers.get(name);
|
|
57
|
+
}
|
|
58
|
+
createSampler(name, smooth = true) {
|
|
59
|
+
const existing = this.samplers.get(name);
|
|
60
|
+
if (existing) {
|
|
61
|
+
return existing;
|
|
62
|
+
}
|
|
63
|
+
const sampler = this.device.createSampler({
|
|
64
|
+
"magFilter": smooth ? "linear" : "nearest",
|
|
65
|
+
"minFilter": smooth ? "linear" : "nearest",
|
|
66
|
+
"mipmapFilter": smooth ? "linear" : "nearest",
|
|
67
|
+
"addressModeU": "clamp-to-edge",
|
|
68
|
+
"addressModeV": "clamp-to-edge"
|
|
69
|
+
});
|
|
70
|
+
this.samplers.set(name, sampler);
|
|
71
|
+
return sampler;
|
|
72
|
+
}
|
|
73
|
+
destroyTexture(name) {
|
|
74
|
+
const texture = this.textures.get(name);
|
|
75
|
+
if (texture) {
|
|
76
|
+
texture.destroy();
|
|
77
|
+
this.textures.delete(name);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
dispose() {
|
|
81
|
+
for (const texture of this.textures.values()) {
|
|
82
|
+
texture.destroy();
|
|
83
|
+
}
|
|
84
|
+
this.textures.clear();
|
|
85
|
+
this.samplers.clear();
|
|
86
|
+
}
|
|
87
|
+
}
|