@next2d/webgpu 3.0.5 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +3 -3
- package/src/AtlasManager.d.ts +75 -6
- package/src/AtlasManager.js +106 -30
- package/src/AttachmentManager/service/AttachmentManagerCreateAttachmentObjectService.d.ts +2 -2
- package/src/AttachmentManager/service/AttachmentManagerCreateAttachmentObjectService.js +3 -3
- package/src/AttachmentManager/service/AttachmentManagerCreateColorBufferService.d.ts +4 -4
- package/src/AttachmentManager/service/AttachmentManagerCreateColorBufferService.js +4 -4
- package/src/AttachmentManager/service/AttachmentManagerCreateStencilBufferService.d.ts +5 -5
- package/src/AttachmentManager/service/AttachmentManagerCreateStencilBufferService.js +6 -6
- package/src/AttachmentManager/service/AttachmentManagerCreateTextureObjectService.d.ts +6 -6
- package/src/AttachmentManager/service/AttachmentManagerCreateTextureObjectService.js +7 -7
- package/src/AttachmentManager/service/AttachmentManagerGetColorBufferService.d.ts +6 -6
- package/src/AttachmentManager/service/AttachmentManagerGetColorBufferService.js +9 -9
- package/src/AttachmentManager/service/AttachmentManagerGetStencilBufferService.d.ts +6 -6
- package/src/AttachmentManager/service/AttachmentManagerGetStencilBufferService.js +10 -10
- package/src/AttachmentManager/service/AttachmentManagerGetTextureService.d.ts +7 -7
- package/src/AttachmentManager/service/AttachmentManagerGetTextureService.js +10 -10
- package/src/AttachmentManager/service/AttachmentManagerReleaseTextureService.d.ts +3 -3
- package/src/AttachmentManager/service/AttachmentManagerReleaseTextureService.js +7 -7
- package/src/AttachmentManager/usecase/AttachmentManagerGetAttachmentObjectUseCase.d.ts +10 -10
- package/src/AttachmentManager/usecase/AttachmentManagerGetAttachmentObjectUseCase.js +16 -16
- package/src/AttachmentManager/usecase/AttachmentManagerReleaseAttachmentUseCase.d.ts +6 -6
- package/src/AttachmentManager/usecase/AttachmentManagerReleaseAttachmentUseCase.js +10 -10
- package/src/AttachmentManager.d.ts +28 -6
- package/src/AttachmentManager.js +28 -23
- package/src/BezierConverter/BezierConverter.d.ts +9 -3
- package/src/BezierConverter/BezierConverter.js +5 -3
- package/src/BezierConverter/usecase/BezierConverterAdaptiveCubicToQuadUseCase.d.ts +2 -13
- package/src/BezierConverter/usecase/BezierConverterAdaptiveCubicToQuadUseCase.js +13 -25
- package/src/Blend/BlendInstancedManager.d.ts +19 -15
- package/src/Blend/BlendInstancedManager.js +35 -22
- package/src/Blend/usecase/BlendApplyComplexBlendUseCase.d.ts +9 -2
- package/src/Blend/usecase/BlendApplyComplexBlendUseCase.js +28 -17
- package/src/Blend.d.ts +20 -2
- package/src/Blend.js +20 -4
- package/src/BufferManager/service/BufferManagerReleaseUniformBufferService.js +2 -2
- package/src/BufferManager/service/BufferManagerReleaseVertexBufferService.js +2 -2
- package/src/BufferManager/service/BufferManagerUpdateIndirectBufferService.d.ts +1 -0
- package/src/BufferManager/service/BufferManagerUpdateIndirectBufferService.js +1 -0
- package/src/BufferManager/usecase/BufferManagerCleanupStorageBuffersUseCase.d.ts +1 -0
- package/src/BufferManager/usecase/BufferManagerCleanupStorageBuffersUseCase.js +1 -0
- package/src/BufferManager.d.ts +108 -43
- package/src/BufferManager.js +113 -153
- package/src/Context/service/ContextComputeBitmapMatrixService.d.ts +7 -0
- package/src/Context/service/ContextComputeBitmapMatrixService.js +7 -0
- package/src/Context/service/ContextComputeGradientMatrixService.d.ts +9 -1
- package/src/Context/service/ContextComputeGradientMatrixService.js +15 -7
- package/src/Context/service/ContextFillSimpleService.d.ts +14 -0
- package/src/Context/service/ContextFillSimpleService.js +14 -0
- package/src/Context/service/ContextFillWithStencilMainService.d.ts +11 -0
- package/src/Context/service/ContextFillWithStencilMainService.js +11 -0
- package/src/Context/service/ContextFillWithStencilService.d.ts +11 -0
- package/src/Context/service/ContextFillWithStencilService.js +11 -0
- package/src/Context/usecase/ContextApplyFilterUseCase.d.ts +17 -0
- package/src/Context/usecase/ContextApplyFilterUseCase.js +201 -62
- package/src/Context/usecase/ContextBitmapFillUseCase.d.ts +23 -0
- package/src/Context/usecase/ContextBitmapFillUseCase.js +47 -0
- package/src/Context/usecase/ContextBitmapStrokeUseCase.d.ts +23 -0
- package/src/Context/usecase/ContextBitmapStrokeUseCase.js +35 -0
- package/src/Context/usecase/ContextClipUseCase.d.ts +15 -0
- package/src/Context/usecase/ContextClipUseCase.js +19 -0
- package/src/Context/usecase/ContextContainerEndLayerUseCase.d.ts +21 -1
- package/src/Context/usecase/ContextContainerEndLayerUseCase.js +195 -104
- package/src/Context/usecase/ContextDrawArraysInstancedUseCase.d.ts +13 -0
- package/src/Context/usecase/ContextDrawArraysInstancedUseCase.js +41 -20
- package/src/Context/usecase/ContextDrawIndirectUseCase.d.ts +16 -1
- package/src/Context/usecase/ContextDrawIndirectUseCase.js +53 -30
- package/src/Context/usecase/ContextGradientFillUseCase.d.ts +23 -0
- package/src/Context/usecase/ContextGradientFillUseCase.js +47 -0
- package/src/Context/usecase/ContextGradientStrokeUseCase.d.ts +23 -0
- package/src/Context/usecase/ContextGradientStrokeUseCase.js +35 -0
- package/src/Context/usecase/ContextProcessComplexBlendQueueUseCase.d.ts +13 -1
- package/src/Context/usecase/ContextProcessComplexBlendQueueUseCase.js +126 -60
- package/src/Context.d.ts +445 -63
- package/src/Context.js +566 -144
- package/src/FillTexturePool.d.ts +39 -0
- package/src/FillTexturePool.js +70 -7
- package/src/Filter/BevelFilter/FilterApplyBevelFilterUseCase.d.ts +21 -2
- package/src/Filter/BevelFilter/FilterApplyBevelFilterUseCase.js +33 -26
- package/src/Filter/BlurFilter/FilterApplyBlurFilterUseCase.d.ts +5 -5
- package/src/Filter/BlurFilter/FilterApplyBlurFilterUseCase.js +81 -64
- package/src/Filter/BlurFilterUseCase.d.ts +15 -11
- package/src/Filter/BlurFilterUseCase.js +22 -17
- package/src/Filter/ColorMatrixFilter/FilterApplyColorMatrixFilterUseCase.d.ts +2 -2
- package/src/Filter/ColorMatrixFilter/FilterApplyColorMatrixFilterUseCase.js +5 -5
- package/src/Filter/ConvolutionFilter/FilterApplyConvolutionFilterUseCase.d.ts +15 -1
- package/src/Filter/ConvolutionFilter/FilterApplyConvolutionFilterUseCase.js +23 -17
- package/src/Filter/DisplacementMapFilter/FilterApplyDisplacementMapFilterUseCase.d.ts +20 -1
- package/src/Filter/DisplacementMapFilter/FilterApplyDisplacementMapFilterUseCase.js +37 -26
- package/src/Filter/DropShadowFilter/FilterApplyDropShadowFilterUseCase.d.ts +7 -7
- package/src/Filter/DropShadowFilter/FilterApplyDropShadowFilterUseCase.js +19 -31
- package/src/Filter/FilterGradientLUTCache.js +2 -0
- package/src/Filter/FilterUtil.d.ts +23 -0
- package/src/Filter/FilterUtil.js +33 -0
- package/src/Filter/GlowFilter/FilterApplyGlowFilterUseCase.d.ts +5 -5
- package/src/Filter/GlowFilter/FilterApplyGlowFilterUseCase.js +12 -21
- package/src/Filter/GradientBevelFilter/FilterApplyGradientBevelFilterUseCase.d.ts +6 -6
- package/src/Filter/GradientBevelFilter/FilterApplyGradientBevelFilterUseCase.js +16 -19
- package/src/Filter/GradientGlowFilter/FilterApplyGradientGlowFilterUseCase.d.ts +5 -5
- package/src/Filter/GradientGlowFilter/FilterApplyGradientGlowFilterUseCase.js +13 -16
- package/src/FrameBufferManager/service/FrameBufferManagerCreateRenderPassDescriptorService.d.ts +13 -1
- package/src/FrameBufferManager/service/FrameBufferManagerCreateRenderPassDescriptorService.js +30 -3
- package/src/FrameBufferManager/service/FrameBufferManagerCreateStencilRenderPassDescriptorService.d.ts +11 -1
- package/src/FrameBufferManager/service/FrameBufferManagerCreateStencilRenderPassDescriptorService.js +36 -6
- package/src/FrameBufferManager/usecase/FrameBufferManagerCreateAttachmentUseCase.d.ts +10 -10
- package/src/FrameBufferManager/usecase/FrameBufferManagerCreateAttachmentUseCase.js +15 -15
- package/src/FrameBufferManager/usecase/FrameBufferManagerReleaseTemporaryAttachmentUseCase.d.ts +4 -4
- package/src/FrameBufferManager/usecase/FrameBufferManagerReleaseTemporaryAttachmentUseCase.js +5 -5
- package/src/FrameBufferManager.d.ts +95 -3
- package/src/FrameBufferManager.js +97 -8
- package/src/Gradient/GradientLUTCache.d.ts +36 -4
- package/src/Gradient/GradientLUTCache.js +61 -5
- package/src/Gradient/GradientLUTGenerator.d.ts +26 -14
- package/src/Gradient/GradientLUTGenerator.js +74 -43
- package/src/Mask/service/MaskUnionMaskService.d.ts +16 -1
- package/src/Mask/service/MaskUnionMaskService.js +45 -31
- package/src/Mask.d.ts +57 -3
- package/src/Mask.js +75 -11
- package/src/Mesh/service/MeshFillGenerateService.d.ts +4 -4
- package/src/Mesh/service/MeshFillGenerateService.js +4 -4
- package/src/Mesh/service/MeshStrokeFillGenerateService.d.ts +4 -4
- package/src/Mesh/service/MeshStrokeFillGenerateService.js +4 -4
- package/src/Mesh/usecase/MeshBitmapStrokeGenerateUseCase.d.ts +3 -3
- package/src/Mesh/usecase/MeshBitmapStrokeGenerateUseCase.js +10 -3
- package/src/Mesh/usecase/MeshFillGenerateUseCase.d.ts +2 -2
- package/src/Mesh/usecase/MeshFillGenerateUseCase.js +9 -2
- package/src/Mesh/usecase/MeshGradientStrokeGenerateUseCase.d.ts +3 -3
- package/src/Mesh/usecase/MeshGradientStrokeGenerateUseCase.js +10 -3
- package/src/Mesh/usecase/MeshStrokeGenerateUseCase.d.ts +8 -14
- package/src/Mesh/usecase/MeshStrokeGenerateUseCase.js +214 -129
- package/src/PathCommand.d.ts +24 -23
- package/src/PathCommand.js +25 -79
- package/src/Shader/PipelineManager.d.ts +223 -6
- package/src/Shader/PipelineManager.js +308 -66
- package/src/Shader/ShaderInstancedManager.d.ts +17 -0
- package/src/Shader/ShaderInstancedManager.js +17 -0
- package/src/Shader/ShaderSource.d.ts +317 -12
- package/src/Shader/ShaderSource.js +328 -39
- package/src/Shader/wgsl/common/SharedWgsl.d.ts +28 -1
- package/src/Shader/wgsl/common/SharedWgsl.js +28 -9
- package/src/Shader/wgsl/fragment/BasicFragment.d.ts +14 -0
- package/src/Shader/wgsl/fragment/BasicFragment.js +14 -0
- package/src/Shader/wgsl/fragment/BitmapFragment.d.ts +7 -0
- package/src/Shader/wgsl/fragment/BitmapFragment.js +7 -0
- package/src/Shader/wgsl/fragment/EffectFragment.d.ts +42 -0
- package/src/Shader/wgsl/fragment/EffectFragment.js +42 -0
- package/src/Shader/wgsl/fragment/FillFragment.d.ts +7 -0
- package/src/Shader/wgsl/fragment/FillFragment.js +7 -0
- package/src/Shader/wgsl/fragment/FilterFragment.d.ts +70 -0
- package/src/Shader/wgsl/fragment/FilterFragment.js +70 -0
- package/src/Shader/wgsl/fragment/GradientFragment.d.ts +21 -0
- package/src/Shader/wgsl/fragment/GradientFragment.js +43 -8
- package/src/Shader/wgsl/fragment/InstancedFragment.d.ts +7 -0
- package/src/Shader/wgsl/fragment/InstancedFragment.js +7 -0
- package/src/Shader/wgsl/fragment/MaskFragment.d.ts +7 -0
- package/src/Shader/wgsl/fragment/MaskFragment.js +7 -0
- package/src/Shader/wgsl/fragment/StencilFragment.d.ts +14 -0
- package/src/Shader/wgsl/fragment/StencilFragment.js +14 -0
- package/src/Shader/wgsl/vertex/BasicVertex.d.ts +7 -0
- package/src/Shader/wgsl/vertex/BasicVertex.js +7 -0
- package/src/Shader/wgsl/vertex/BitmapVertex.d.ts +7 -0
- package/src/Shader/wgsl/vertex/BitmapVertex.js +7 -0
- package/src/Shader/wgsl/vertex/FillVertex.d.ts +7 -0
- package/src/Shader/wgsl/vertex/FillVertex.js +7 -0
- package/src/Shader/wgsl/vertex/FilterVertex.d.ts +77 -1
- package/src/Shader/wgsl/vertex/FilterVertex.js +135 -42
- package/src/Shader/wgsl/vertex/GradientVertex.d.ts +7 -0
- package/src/Shader/wgsl/vertex/GradientVertex.js +7 -0
- package/src/Shader/wgsl/vertex/InstancedVertex.d.ts +7 -0
- package/src/Shader/wgsl/vertex/InstancedVertex.js +7 -0
- package/src/Shader/wgsl/vertex/MaskVertex.d.ts +7 -0
- package/src/Shader/wgsl/vertex/MaskVertex.js +7 -0
- package/src/Shader/wgsl/vertex/StencilVertex.d.ts +14 -0
- package/src/Shader/wgsl/vertex/StencilVertex.js +14 -0
- package/src/TextureManager/service/TextureManagerInitializeSamplersService.d.ts +2 -2
- package/src/TextureManager/service/TextureManagerInitializeSamplersService.js +2 -2
- package/src/TextureManager.d.ts +36 -5
- package/src/TextureManager.js +36 -24
- package/src/TexturePool/service/TexturePoolCleanupService.d.ts +4 -4
- package/src/TexturePool/service/TexturePoolCleanupService.js +6 -6
- package/src/TexturePool/service/TexturePoolReleaseService.d.ts +4 -4
- package/src/TexturePool/service/TexturePoolReleaseService.js +5 -5
- package/src/TexturePool/usecase/TexturePoolAcquireUseCase.d.ts +10 -10
- package/src/TexturePool/usecase/TexturePoolAcquireUseCase.js +19 -18
- package/src/TexturePool.d.ts +36 -35
- package/src/TexturePool.js +44 -65
- package/src/WebGPUUtil.d.ts +79 -34
- package/src/WebGPUUtil.js +79 -36
- package/src/interface/IAttachmentObject.d.ts +36 -0
- package/src/interface/IBlendMode.d.ts +7 -0
- package/src/interface/IBlendState.d.ts +8 -0
- package/src/interface/IBounds.d.ts +23 -0
- package/src/interface/IColorBufferObject.d.ts +28 -0
- package/src/interface/IComplexBlendItem.d.ts +48 -0
- package/src/interface/IFilterConfig.d.ts +28 -2
- package/src/interface/IGradientStop.d.ts +20 -0
- package/src/interface/ILocalFilterConfig.d.ts +32 -2
- package/src/interface/IMeshResult.d.ts +8 -0
- package/src/interface/IPoint.d.ts +12 -0
- package/src/interface/IPooledTexture.d.ts +24 -0
- package/src/interface/IQuadraticSegment.d.ts +8 -0
- package/src/interface/IStencilBufferObject.d.ts +28 -0
- package/src/interface/IStorageBufferConfig.d.ts +8 -1
- package/src/interface/ITextureObject.d.ts +28 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateRenderPassDescriptorService.d.ts +0 -5
- package/src/AttachmentManager/service/AttachmentManagerCreateRenderPassDescriptorService.js +0 -42
- package/src/Blend/service/BlendAddService.d.ts +0 -1
- package/src/Blend/service/BlendAddService.js +0 -8
- package/src/Blend/service/BlendAlphaService.d.ts +0 -1
- package/src/Blend/service/BlendAlphaService.js +0 -8
- package/src/Blend/service/BlendEraseService.d.ts +0 -1
- package/src/Blend/service/BlendEraseService.js +0 -8
- package/src/Blend/service/BlendGetStateService.d.ts +0 -12
- package/src/Blend/service/BlendGetStateService.js +0 -13
- package/src/Blend/service/BlendOneZeroService.d.ts +0 -1
- package/src/Blend/service/BlendOneZeroService.js +0 -8
- package/src/Blend/service/BlendResetService.d.ts +0 -1
- package/src/Blend/service/BlendResetService.js +0 -8
- package/src/Blend/service/BlendScreenService.d.ts +0 -1
- package/src/Blend/service/BlendScreenService.js +0 -8
- package/src/Blend/service/BlendSetModeService.d.ts +0 -2
- package/src/Blend/service/BlendSetModeService.js +0 -4
- package/src/Blend/usecase/BlendOperationUseCase.d.ts +0 -11
- package/src/Blend/usecase/BlendOperationUseCase.js +0 -31
- package/src/BufferManager/usecase/BufferManagerReleaseStorageBufferUseCase.d.ts +0 -9
- package/src/BufferManager/usecase/BufferManagerReleaseStorageBufferUseCase.js +0 -15
- package/src/Compute/ComputePipelineManager.d.ts +0 -61
- package/src/Compute/ComputePipelineManager.js +0 -313
- package/src/Compute/service/ComputeExecuteBlurService.d.ts +0 -21
- package/src/Compute/service/ComputeExecuteBlurService.js +0 -81
- package/src/Filter/BevelFilterShader.d.ts +0 -2
- package/src/Filter/BevelFilterShader.js +0 -107
- package/src/Filter/BitmapFilterShader.d.ts +0 -2
- package/src/Filter/BitmapFilterShader.js +0 -207
- package/src/Filter/BlurFilter/service/BlurFilterComputeShaderService.d.ts +0 -40
- package/src/Filter/BlurFilter/service/BlurFilterComputeShaderService.js +0 -51
- package/src/Filter/BlurFilter/usecase/FilterApplyBlurComputeUseCase.d.ts +0 -25
- package/src/Filter/BlurFilter/usecase/FilterApplyBlurComputeUseCase.js +0 -180
- package/src/Filter/BlurFilterShader.d.ts +0 -5
- package/src/Filter/BlurFilterShader.js +0 -109
- package/src/Filter/ColorMatrixFilterShader.d.ts +0 -4
- package/src/Filter/ColorMatrixFilterShader.js +0 -51
- package/src/Filter/ConvolutionFilterShader.d.ts +0 -2
- package/src/Filter/ConvolutionFilterShader.js +0 -115
- package/src/Filter/DisplacementMapFilterShader.d.ts +0 -2
- package/src/Filter/DisplacementMapFilterShader.js +0 -114
- package/src/Filter/DropShadowFilterShader.d.ts +0 -4
- package/src/Filter/DropShadowFilterShader.js +0 -93
- package/src/Filter/GlowFilterShader.d.ts +0 -4
- package/src/Filter/GlowFilterShader.js +0 -66
- package/src/FrameBufferManager/service/FrameBufferManagerFlushPendingReleasesService.d.ts +0 -11
- package/src/FrameBufferManager/service/FrameBufferManagerFlushPendingReleasesService.js +0 -19
- package/src/Mask/usecase/MaskBindUseCase.d.ts +0 -10
- package/src/Mask/usecase/MaskBindUseCase.js +0 -20
- package/src/Mesh/service/MeshLerpService.d.ts +0 -13
- package/src/Mesh/service/MeshLerpService.js +0 -17
- package/src/Mesh/usecase/MeshSplitQuadraticBezierUseCase.d.ts +0 -14
- package/src/Mesh/usecase/MeshSplitQuadraticBezierUseCase.js +0 -28
- package/src/Mesh/usecase/MeshStrokeFillGenerateUseCase.d.ts +0 -18
- package/src/Mesh/usecase/MeshStrokeFillGenerateUseCase.js +0 -54
- package/src/SamplerCache/service/SamplerCacheCreateCommonSamplersService.d.ts +0 -11
- package/src/SamplerCache/service/SamplerCacheCreateCommonSamplersService.js +0 -35
- package/src/SamplerCache/service/SamplerCacheGenerateKeyService.d.ts +0 -13
- package/src/SamplerCache/service/SamplerCacheGenerateKeyService.js +0 -15
- package/src/SamplerCache/service/SamplerCacheGetOrCreateService.d.ts +0 -15
- package/src/SamplerCache/service/SamplerCacheGetOrCreateService.js +0 -30
- package/src/SamplerCache.d.ts +0 -18
- package/src/SamplerCache.js +0 -61
- package/src/Shader/BlendModeShader.d.ts +0 -51
- package/src/Shader/BlendModeShader.js +0 -71
- package/src/Shader/GradientLUTGenerator/service/GradientLUTCalculateResolutionService.d.ts +0 -12
- package/src/Shader/GradientLUTGenerator/service/GradientLUTCalculateResolutionService.js +0 -28
- package/src/Shader/GradientLUTGenerator/service/GradientLUTGeneratePixelsService.d.ts +0 -13
- package/src/Shader/GradientLUTGenerator/service/GradientLUTGeneratePixelsService.js +0 -61
- package/src/Shader/GradientLUTGenerator/service/GradientLUTInterpolateColorService.d.ts +0 -19
- package/src/Shader/GradientLUTGenerator/service/GradientLUTInterpolateColorService.js +0 -37
- package/src/Shader/GradientLUTGenerator/service/GradientLUTParseStopsService.d.ts +0 -11
- package/src/Shader/GradientLUTGenerator/service/GradientLUTParseStopsService.js +0 -24
- package/src/Shader/GradientLUTGenerator/usecase/GradientLUTGenerateDataUseCase.d.ts +0 -14
- package/src/Shader/GradientLUTGenerator/usecase/GradientLUTGenerateDataUseCase.js +0 -24
- package/src/Shader/wgsl/fragment/BlendFragment.d.ts +0 -8
- package/src/Shader/wgsl/fragment/BlendFragment.js +0 -63
- package/src/TextureManager/usecase/TextureManagerCreateTextureFromImageBitmapUseCase.d.ts +0 -13
- package/src/TextureManager/usecase/TextureManagerCreateTextureFromImageBitmapUseCase.js +0 -30
- package/src/TextureManager/usecase/TextureManagerCreateTextureFromPixelsUseCase.d.ts +0 -15
- package/src/TextureManager/usecase/TextureManagerCreateTextureFromPixelsUseCase.js +0 -26
- package/src/TexturePool/service/TexturePoolEvictOldestService.d.ts +0 -11
- package/src/TexturePool/service/TexturePoolEvictOldestService.js +0 -24
- package/src/interface/ICachedBindGroup.d.ts +0 -8
- package/src/interface/ICachedBindGroup.js +0 -1
- package/src/interface/IGradientLUTData.d.ts +0 -8
- package/src/interface/IGradientLUTData.js +0 -1
- package/src/interface/IPooledBuffer.d.ts +0 -8
- package/src/interface/IPooledBuffer.js +0 -1
- package/src/interface/IRectangleInfo.d.ts +0 -13
- package/src/interface/IRectangleInfo.js +0 -1
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description 頂点カラーをそのまま出力する基本フラグメントシェーダー
|
|
3
|
+
* Basic fragment shader that outputs vertex color directly
|
|
4
|
+
*
|
|
5
|
+
* @type {string}
|
|
6
|
+
* @constant
|
|
7
|
+
*/
|
|
1
8
|
export const BasicFragment = /* wgsl */ `
|
|
2
9
|
struct VertexOutput {
|
|
3
10
|
@builtin(position) position: vec4<f32>,
|
|
@@ -10,6 +17,13 @@ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
|
10
17
|
return input.color;
|
|
11
18
|
}
|
|
12
19
|
`;
|
|
20
|
+
/**
|
|
21
|
+
* @description テクスチャサンプリングと頂点カラーを乗算するフラグメントシェーダー
|
|
22
|
+
* Fragment shader that multiplies texture sampling with vertex color
|
|
23
|
+
*
|
|
24
|
+
* @type {string}
|
|
25
|
+
* @constant
|
|
26
|
+
*/
|
|
13
27
|
export const TextureFragment = /* wgsl */ `
|
|
14
28
|
struct VertexOutput {
|
|
15
29
|
@builtin(position) position: vec4<f32>,
|
|
@@ -1 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description ビットマップ塗りフラグメントシェーダー(ベジェクリッピング・リピート対応)
|
|
3
|
+
* Bitmap fill fragment shader with bezier clipping and repeat support
|
|
4
|
+
*
|
|
5
|
+
* @type {string}
|
|
6
|
+
* @constant
|
|
7
|
+
*/
|
|
1
8
|
export declare const BitmapFillFragment = "\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) bezier: vec2<f32>,\n @location(1) color: vec4<f32>,\n @location(2) worldPos: vec2<f32>,\n}\n\nstruct BitmapUniforms {\n bitmapMatrix: mat3x3<f32>,\n textureWidth: f32,\n textureHeight: f32,\n repeat: f32,\n _pad: f32,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: BitmapUniforms;\n@group(0) @binding(1) var bitmapSampler: sampler;\n@group(0) @binding(2) var bitmapTexture: texture_2d<f32>;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n let u = input.bezier.x;\n let v = input.bezier.y;\n if (abs(u - 0.5) > 0.001 || abs(v - 0.5) > 0.001) {\n let d = u * u - v;\n if (d > 0.0) {\n discard;\n }\n }\n let transformedPos = uniforms.bitmapMatrix * vec3<f32>(input.worldPos, 1.0);\n var uv = vec2<f32>(\n transformedPos.x / uniforms.textureWidth,\n transformedPos.y / uniforms.textureHeight\n );\n if (uniforms.repeat > 0.5) {\n uv = fract(uv);\n }\n let bitmapColor = textureSampleLevel(bitmapTexture, bitmapSampler, uv, 0);\n let alpha = bitmapColor.a * input.color.a;\n return vec4<f32>(bitmapColor.rgb * input.color.a, alpha);\n}\n";
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description ビットマップ塗りフラグメントシェーダー(ベジェクリッピング・リピート対応)
|
|
3
|
+
* Bitmap fill fragment shader with bezier clipping and repeat support
|
|
4
|
+
*
|
|
5
|
+
* @type {string}
|
|
6
|
+
* @constant
|
|
7
|
+
*/
|
|
1
8
|
export const BitmapFillFragment = /* wgsl */ `
|
|
2
9
|
struct VertexOutput {
|
|
3
10
|
@builtin(position) position: vec4<f32>,
|
|
@@ -1,6 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description グローフィルター用フラグメントシェーダー(内側・外側・ノックアウト対応)
|
|
3
|
+
* Glow filter fragment shader with inner, outer, and knockout support
|
|
4
|
+
*
|
|
5
|
+
* @type {string}
|
|
6
|
+
* @constant
|
|
7
|
+
*/
|
|
1
8
|
export declare const GlowFilterFragment = "\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}\n\noverride IS_INNER: u32 = 0u;\noverride IS_KNOCKOUT: u32 = 0u;\n\nstruct GlowUniforms {\n color: vec4<f32>,\n baseScale: vec2<f32>,\n baseOffset: vec2<f32>,\n blurScale: vec2<f32>,\n blurOffset: vec2<f32>,\n strength: f32,\n _padding1: f32,\n _padding2: f32,\n _padding3: f32,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: GlowUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var blurTexture: texture_2d<f32>;\n@group(0) @binding(3) var baseTexture: texture_2d<f32>;\n\nfn isInside(uv: vec2<f32>) -> f32 {\n let s = step(vec2<f32>(0.0), uv) * step(uv, vec2<f32>(1.0));\n return s.x * s.y;\n}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n let baseUV = input.texCoord * uniforms.baseScale - uniforms.baseOffset;\n let baseColor = textureSampleLevel(baseTexture, textureSampler, baseUV, 0) * isInside(baseUV);\n\n let blurUV = input.texCoord * uniforms.blurScale - uniforms.blurOffset;\n let blurColor = textureSampleLevel(blurTexture, textureSampler, blurUV, 0) * isInside(blurUV);\n\n var rawAlpha = blurColor.a;\n if (IS_INNER == 1u) {\n rawAlpha = 1.0 - rawAlpha;\n }\n let glowAlpha = clamp(rawAlpha * uniforms.strength, 0.0, 1.0);\n let glowColor = vec4<f32>(uniforms.color.rgb * glowAlpha, uniforms.color.a * glowAlpha);\n if (IS_INNER == 1u) {\n let innerGlow = glowColor * baseColor.a;\n if (IS_KNOCKOUT == 1u) {\n return innerGlow;\n } else {\n return innerGlow + baseColor * (1.0 - glowColor.a);\n }\n } else {\n if (IS_KNOCKOUT == 1u) {\n return glowColor * (1.0 - baseColor.a);\n } else {\n return baseColor + glowColor * (1.0 - baseColor.a);\n }\n }\n}\n";
|
|
9
|
+
/**
|
|
10
|
+
* @description ドロップシャドウフィルター用フラグメントシェーダー(内側・外側・ノックアウト・非表示対応)
|
|
11
|
+
* Drop shadow filter fragment shader with inner, outer, knockout, and hide-object support
|
|
12
|
+
*
|
|
13
|
+
* @type {string}
|
|
14
|
+
* @constant
|
|
15
|
+
*/
|
|
2
16
|
export declare const DropShadowFilterFragment = "\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}\n\noverride IS_INNER: u32 = 0u;\noverride IS_KNOCKOUT: u32 = 0u;\noverride IS_HIDE_OBJECT: u32 = 0u;\n\nstruct DropShadowUniforms {\n color: vec4<f32>,\n baseScale: vec2<f32>,\n baseOffset: vec2<f32>,\n blurScale: vec2<f32>,\n blurOffset: vec2<f32>,\n strength: f32,\n _padding1: f32,\n _padding2: f32,\n _padding3: f32,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: DropShadowUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var blurTexture: texture_2d<f32>;\n@group(0) @binding(3) var baseTexture: texture_2d<f32>;\n\nfn isInside(uv: vec2<f32>) -> f32 {\n let s = step(vec2<f32>(0.0), uv) * step(uv, vec2<f32>(1.0));\n return s.x * s.y;\n}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n let baseUV = input.texCoord * uniforms.baseScale - uniforms.baseOffset;\n let baseColor = textureSampleLevel(baseTexture, textureSampler, baseUV, 0) * isInside(baseUV);\n\n let blurUV = input.texCoord * uniforms.blurScale - uniforms.blurOffset;\n let blur = textureSampleLevel(blurTexture, textureSampler, blurUV, 0) * isInside(blurUV);\n\n var rawAlpha = blur.a;\n if (IS_INNER == 1u) {\n rawAlpha = 1.0 - rawAlpha;\n }\n let shadowAlpha = clamp(rawAlpha * uniforms.strength, 0.0, 1.0);\n let shadowColor = vec4<f32>(uniforms.color.rgb * shadowAlpha, uniforms.color.a * shadowAlpha);\n\n if (IS_INNER == 1u) {\n let innerShadow = shadowColor * baseColor.a;\n if (IS_KNOCKOUT == 1u) {\n return innerShadow;\n } else {\n return innerShadow + baseColor * (1.0 - shadowColor.a);\n }\n } else {\n if (IS_HIDE_OBJECT == 1u) {\n return shadowColor;\n } else if (IS_KNOCKOUT == 1u) {\n return shadowColor * (1.0 - baseColor.a);\n } else {\n return shadowColor * (1.0 - baseColor.a) + baseColor;\n }\n }\n}\n";
|
|
17
|
+
/**
|
|
18
|
+
* @description グラデーショングローフィルター用フラグメントシェーダー(LUTベース)
|
|
19
|
+
* Gradient glow filter fragment shader using LUT
|
|
20
|
+
*
|
|
21
|
+
* @type {string}
|
|
22
|
+
* @constant
|
|
23
|
+
*/
|
|
3
24
|
export declare const GradientGlowFilterFragment = "\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}\n\noverride GLOW_TYPE: u32 = 0u;\noverride IS_KNOCKOUT: u32 = 0u;\n\nstruct GradientGlowUniforms {\n strength: f32,\n _padding1: f32,\n _padding2: f32,\n _padding3: f32,\n baseScale: vec2<f32>,\n baseOffset: vec2<f32>,\n blurScale: vec2<f32>,\n blurOffset: vec2<f32>,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: GradientGlowUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var blurTexture: texture_2d<f32>;\n@group(0) @binding(3) var baseTexture: texture_2d<f32>;\n@group(0) @binding(4) var gradientLUT: texture_2d<f32>;\n\nfn isInside(uv: vec2<f32>) -> f32 {\n let s = step(vec2<f32>(0.0), uv) * step(uv, vec2<f32>(1.0));\n return s.x * s.y;\n}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n let baseUV = input.texCoord * uniforms.baseScale - uniforms.baseOffset;\n let base = textureSampleLevel(baseTexture, textureSampler, baseUV, 0) * isInside(baseUV);\n\n let blurUV = input.texCoord * uniforms.blurScale - uniforms.blurOffset;\n var blur = textureSampleLevel(blurTexture, textureSampler, blurUV, 0) * isInside(blurUV);\n\n blur.a = clamp(blur.a * uniforms.strength, 0.0, 1.0);\n let glowColor = textureSampleLevel(gradientLUT, textureSampler, vec2<f32>(blur.a, 0.5), 0);\n var result: vec4<f32>;\n if (GLOW_TYPE == 0u) {\n if (IS_KNOCKOUT == 1u) {\n result = glowColor;\n } else {\n result = base - base * glowColor.a + glowColor;\n }\n } else if (GLOW_TYPE == 1u) {\n if (IS_KNOCKOUT == 1u) {\n result = glowColor * base.a;\n } else {\n result = glowColor * base.a + base * (1.0 - glowColor.a);\n }\n } else {\n if (IS_KNOCKOUT == 1u) {\n result = glowColor - glowColor * base.a;\n } else {\n result = base + glowColor - glowColor * base.a;\n }\n }\n return result;\n}\n";
|
|
25
|
+
/**
|
|
26
|
+
* @description グラデーションベベルフィルター用フラグメントシェーダー(LUTベース)
|
|
27
|
+
* Gradient bevel filter fragment shader using LUT
|
|
28
|
+
*
|
|
29
|
+
* @type {string}
|
|
30
|
+
* @constant
|
|
31
|
+
*/
|
|
4
32
|
export declare const GradientBevelFilterFragment = "\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}\n\noverride BEVEL_TYPE: u32 = 0u;\noverride IS_KNOCKOUT: u32 = 0u;\n\nstruct GradientBevelUniforms {\n strength: f32,\n _padding1: f32,\n _padding2: f32,\n _padding3: f32,\n baseScale: vec2<f32>,\n baseOffset: vec2<f32>,\n blurScale: vec2<f32>,\n blurOffset: vec2<f32>,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: GradientBevelUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var blurTexture: texture_2d<f32>;\n@group(0) @binding(3) var baseTexture: texture_2d<f32>;\n@group(0) @binding(4) var gradientLUT: texture_2d<f32>;\n\nfn isInside(uv: vec2<f32>) -> f32 {\n let s = step(vec2<f32>(0.0), uv) * step(uv, vec2<f32>(1.0));\n return s.x * s.y;\n}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n let baseUV = input.texCoord * uniforms.baseScale - uniforms.baseOffset;\n let base = textureSampleLevel(baseTexture, textureSampler, baseUV, 0) * isInside(baseUV);\n\n let blurUV = input.texCoord * uniforms.blurScale - uniforms.blurOffset;\n let blur1 = textureSampleLevel(blurTexture, textureSampler, blurUV, 0) * isInside(blurUV);\n\n let mirrorUV = (1.0 - input.texCoord) * uniforms.blurScale - uniforms.blurOffset;\n let blur2 = textureSampleLevel(blurTexture, textureSampler, mirrorUV, 0) * isInside(mirrorUV);\n\n var highlightAlpha = blur1.a - blur2.a;\n var shadowAlpha = blur2.a - blur1.a;\n highlightAlpha = clamp(highlightAlpha * uniforms.strength, 0.0, 1.0);\n shadowAlpha = clamp(shadowAlpha * uniforms.strength, 0.0, 1.0);\n\n let lutCoord = 0.5019607843137255 - 0.5019607843137255 * shadowAlpha + 0.4980392156862745 * highlightAlpha;\n let bevelColor = textureSampleLevel(gradientLUT, textureSampler, vec2<f32>(lutCoord, 0.5), 0);\n\n var result: vec4<f32>;\n if (BEVEL_TYPE == 0u) {\n if (IS_KNOCKOUT == 1u) {\n result = bevelColor;\n } else {\n result = base - base * bevelColor.a + bevelColor;\n }\n } else if (BEVEL_TYPE == 1u) {\n if (IS_KNOCKOUT == 1u) {\n result = bevelColor * base.a;\n } else {\n result = bevelColor * base.a + base * (1.0 - bevelColor.a);\n }\n } else {\n if (IS_KNOCKOUT == 1u) {\n result = bevelColor - bevelColor * base.a;\n } else {\n result = base + bevelColor - bevelColor * base.a;\n }\n }\n\n return result;\n}\n";
|
|
33
|
+
/**
|
|
34
|
+
* @description ベベルフィルター用フラグメントシェーダー(ハイライト・シャドウカラー指定)
|
|
35
|
+
* Bevel filter fragment shader with highlight and shadow color specification
|
|
36
|
+
*
|
|
37
|
+
* @type {string}
|
|
38
|
+
* @constant
|
|
39
|
+
*/
|
|
5
40
|
export declare const BevelFilterFragment = "\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}\n\noverride BEVEL_TYPE: u32 = 0u;\noverride IS_KNOCKOUT: u32 = 0u;\n\nstruct BevelUniforms {\n highlightColor: vec4<f32>,\n shadowColor: vec4<f32>,\n strength: f32,\n _padding1: f32,\n _padding2: f32,\n _padding3: f32,\n baseScale: vec2<f32>,\n baseOffset: vec2<f32>,\n blurScale: vec2<f32>,\n blurOffset: vec2<f32>,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: BevelUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var blurTexture: texture_2d<f32>;\n@group(0) @binding(3) var baseTexture: texture_2d<f32>;\n\nfn isInside(uv: vec2<f32>) -> f32 {\n let s = step(vec2<f32>(0.0), uv) * step(uv, vec2<f32>(1.0));\n return s.x * s.y;\n}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n let baseUV = input.texCoord * uniforms.baseScale - uniforms.baseOffset;\n let base = textureSampleLevel(baseTexture, textureSampler, baseUV, 0) * isInside(baseUV);\n\n let blurUV = input.texCoord * uniforms.blurScale - uniforms.blurOffset;\n let blur1 = textureSampleLevel(blurTexture, textureSampler, blurUV, 0) * isInside(blurUV);\n\n let mirrorUV = (1.0 - input.texCoord) * uniforms.blurScale - uniforms.blurOffset;\n let blur2 = textureSampleLevel(blurTexture, textureSampler, mirrorUV, 0) * isInside(mirrorUV);\n\n var highlightAlpha = blur1.a - blur2.a;\n var shadowAlpha = blur2.a - blur1.a;\n highlightAlpha = clamp(highlightAlpha * uniforms.strength, 0.0, 1.0);\n shadowAlpha = clamp(shadowAlpha * uniforms.strength, 0.0, 1.0);\n\n let bevelColor = uniforms.highlightColor * highlightAlpha + uniforms.shadowColor * shadowAlpha;\n var result: vec4<f32>;\n if (BEVEL_TYPE == 0u) {\n if (IS_KNOCKOUT == 1u) {\n result = bevelColor;\n } else {\n result = base - base * bevelColor.a + bevelColor;\n }\n } else if (BEVEL_TYPE == 1u) {\n if (IS_KNOCKOUT == 1u) {\n result = bevelColor * base.a;\n } else {\n result = bevelColor * base.a + base * (1.0 - bevelColor.a);\n }\n } else {\n if (IS_KNOCKOUT == 1u) {\n result = bevelColor - bevelColor * base.a;\n } else {\n result = base + bevelColor - bevelColor * base.a;\n }\n }\n\n return result;\n}\n";
|
|
41
|
+
/**
|
|
42
|
+
* @description ベベルフィルターのベース処理用フラグメントシェーダー(オフセット差分計算)
|
|
43
|
+
* Bevel filter base fragment shader for offset difference calculation
|
|
44
|
+
*
|
|
45
|
+
* @type {string}
|
|
46
|
+
* @constant
|
|
47
|
+
*/
|
|
6
48
|
export declare const BevelBaseFragment = "\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}\n\nstruct BevelBaseUniforms {\n offset: vec2<f32>,\n _padding: vec2<f32>,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: BevelBaseUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var sourceTexture: texture_2d<f32>;\n\nfn isInside(uv: vec2<f32>) -> f32 {\n let s = step(vec2<f32>(0.0), uv) * step(uv, vec2<f32>(1.0));\n return s.x * s.y;\n}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n let original = textureSampleLevel(sourceTexture, textureSampler, input.texCoord, 0);\n let shiftedUV = input.texCoord - uniforms.offset;\n let shifted = textureSampleLevel(sourceTexture, textureSampler, shiftedUV, 0) * isInside(shiftedUV);\n return original * (1.0 - shifted.a);\n}\n";
|
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import { WgslIsInside, WgslVertexOutput } from "../common/SharedWgsl";
|
|
2
|
+
/**
|
|
3
|
+
* @description グローフィルター用フラグメントシェーダー(内側・外側・ノックアウト対応)
|
|
4
|
+
* Glow filter fragment shader with inner, outer, and knockout support
|
|
5
|
+
*
|
|
6
|
+
* @type {string}
|
|
7
|
+
* @constant
|
|
8
|
+
*/
|
|
2
9
|
export const GlowFilterFragment = /* wgsl */ `
|
|
3
10
|
${WgslVertexOutput}
|
|
4
11
|
|
|
@@ -53,6 +60,13 @@ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
|
53
60
|
}
|
|
54
61
|
}
|
|
55
62
|
`;
|
|
63
|
+
/**
|
|
64
|
+
* @description ドロップシャドウフィルター用フラグメントシェーダー(内側・外側・ノックアウト・非表示対応)
|
|
65
|
+
* Drop shadow filter fragment shader with inner, outer, knockout, and hide-object support
|
|
66
|
+
*
|
|
67
|
+
* @type {string}
|
|
68
|
+
* @constant
|
|
69
|
+
*/
|
|
56
70
|
export const DropShadowFilterFragment = /* wgsl */ `
|
|
57
71
|
${WgslVertexOutput}
|
|
58
72
|
|
|
@@ -111,6 +125,13 @@ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
|
111
125
|
}
|
|
112
126
|
}
|
|
113
127
|
`;
|
|
128
|
+
/**
|
|
129
|
+
* @description グラデーショングローフィルター用フラグメントシェーダー(LUTベース)
|
|
130
|
+
* Gradient glow filter fragment shader using LUT
|
|
131
|
+
*
|
|
132
|
+
* @type {string}
|
|
133
|
+
* @constant
|
|
134
|
+
*/
|
|
114
135
|
export const GradientGlowFilterFragment = /* wgsl */ `
|
|
115
136
|
${WgslVertexOutput}
|
|
116
137
|
|
|
@@ -168,6 +189,13 @@ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
|
168
189
|
return result;
|
|
169
190
|
}
|
|
170
191
|
`;
|
|
192
|
+
/**
|
|
193
|
+
* @description グラデーションベベルフィルター用フラグメントシェーダー(LUTベース)
|
|
194
|
+
* Gradient bevel filter fragment shader using LUT
|
|
195
|
+
*
|
|
196
|
+
* @type {string}
|
|
197
|
+
* @constant
|
|
198
|
+
*/
|
|
171
199
|
export const GradientBevelFilterFragment = /* wgsl */ `
|
|
172
200
|
${WgslVertexOutput}
|
|
173
201
|
|
|
@@ -235,6 +263,13 @@ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
|
235
263
|
return result;
|
|
236
264
|
}
|
|
237
265
|
`;
|
|
266
|
+
/**
|
|
267
|
+
* @description ベベルフィルター用フラグメントシェーダー(ハイライト・シャドウカラー指定)
|
|
268
|
+
* Bevel filter fragment shader with highlight and shadow color specification
|
|
269
|
+
*
|
|
270
|
+
* @type {string}
|
|
271
|
+
* @constant
|
|
272
|
+
*/
|
|
238
273
|
export const BevelFilterFragment = /* wgsl */ `
|
|
239
274
|
${WgslVertexOutput}
|
|
240
275
|
|
|
@@ -301,6 +336,13 @@ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
|
301
336
|
return result;
|
|
302
337
|
}
|
|
303
338
|
`;
|
|
339
|
+
/**
|
|
340
|
+
* @description ベベルフィルターのベース処理用フラグメントシェーダー(オフセット差分計算)
|
|
341
|
+
* Bevel filter base fragment shader for offset difference calculation
|
|
342
|
+
*
|
|
343
|
+
* @type {string}
|
|
344
|
+
* @constant
|
|
345
|
+
*/
|
|
304
346
|
export const BevelBaseFragment = /* wgsl */ `
|
|
305
347
|
${WgslVertexOutput}
|
|
306
348
|
|
|
@@ -1 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description ベジェ曲線ベースのアンチエイリアス付き塗りフラグメントシェーダー
|
|
3
|
+
* Bezier curve-based fill fragment shader with anti-aliasing
|
|
4
|
+
*
|
|
5
|
+
* @type {string}
|
|
6
|
+
* @constant
|
|
7
|
+
*/
|
|
1
8
|
export declare const FillFragment = "\nstruct FragmentInput {\n @builtin(position) position: vec4<f32>,\n @location(0) bezier: vec2<f32>,\n @location(1) color: vec4<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\n if (input.bezier.x == 0.5 && input.bezier.y == 0.5) {\n return vec4<f32>(input.color.rgb * input.color.a, input.color.a);\n }\n\n let dist = f_val * inverseSqrt(dx * dx + dy * dy);\n let coverage = smoothstep(0.5, -0.5, dist);\n\n if (coverage <= 0.001) {\n discard;\n }\n\n let finalAlpha = input.color.a * min(coverage, 1.0);\n return vec4<f32>(input.color.rgb * finalAlpha, finalAlpha);\n}\n";
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description ベジェ曲線ベースのアンチエイリアス付き塗りフラグメントシェーダー
|
|
3
|
+
* Bezier curve-based fill fragment shader with anti-aliasing
|
|
4
|
+
*
|
|
5
|
+
* @type {string}
|
|
6
|
+
* @constant
|
|
7
|
+
*/
|
|
1
8
|
export const FillFragment = /* wgsl */ `
|
|
2
9
|
struct FragmentInput {
|
|
3
10
|
@builtin(position) position: vec4<f32>,
|
|
@@ -1,10 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description テクスチャコピー用フラグメントシェーダー(スケール・オフセット付き)
|
|
3
|
+
* Texture copy fragment shader with scale and offset
|
|
4
|
+
*
|
|
5
|
+
* @type {string}
|
|
6
|
+
* @constant
|
|
7
|
+
*/
|
|
1
8
|
export declare const TextureCopyFragment = "\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}\n\nstruct CopyUniforms {\n scale: vec2<f32>,\n offset: vec2<f32>,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: CopyUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var inputTexture: texture_2d<f32>;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n let uv = input.texCoord * uniforms.scale + uniforms.offset;\n return textureSampleLevel(inputTexture, textureSampler, uv, 0);\n}\n";
|
|
9
|
+
/**
|
|
10
|
+
* @description ブラー用テクスチャコピーフラグメントシェーダー(境界クランプ付き)
|
|
11
|
+
* Blur texture copy fragment shader with boundary clamping
|
|
12
|
+
*
|
|
13
|
+
* @type {string}
|
|
14
|
+
* @constant
|
|
15
|
+
*/
|
|
2
16
|
export declare const BlurTextureCopyFragment = "\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}\n\nstruct CopyUniforms {\n scale: vec2<f32>,\n offset: vec2<f32>,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: CopyUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var inputTexture: texture_2d<f32>;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n let uv = (input.texCoord - uniforms.offset) * uniforms.scale;\n let clampedUv = clamp(uv, vec2<f32>(0.0), vec2<f32>(1.0));\n let color = textureSampleLevel(inputTexture, textureSampler, clampedUv, 0);\n let inBounds = uv.x >= 0.0 && uv.x <= 1.0 && uv.y >= 0.0 && uv.y <= 1.0;\n return select(vec4<f32>(0.0, 0.0, 0.0, 0.0), color, inBounds);\n}\n";
|
|
17
|
+
/**
|
|
18
|
+
* @description フィルター出力用フラグメントシェーダー(境界チェック付きコピー)
|
|
19
|
+
* Filter output fragment shader with boundary-checked copy
|
|
20
|
+
*
|
|
21
|
+
* @type {string}
|
|
22
|
+
* @constant
|
|
23
|
+
*/
|
|
3
24
|
export declare const FilterOutputFragment = "\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}\n\nstruct CopyUniforms {\n scale: vec2<f32>,\n offset: vec2<f32>,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: CopyUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var inputTexture: texture_2d<f32>;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n let uv = input.texCoord * uniforms.scale + uniforms.offset;\n let clampedUv = clamp(uv, vec2<f32>(0.0), vec2<f32>(1.0));\n let color = textureSampleLevel(inputTexture, textureSampler, clampedUv, 0);\n let inBounds = uv.x >= 0.0 && uv.x <= 1.0 && uv.y >= 0.0 && uv.y <= 1.0;\n return select(vec4<f32>(0.0, 0.0, 0.0, 0.0), color, inBounds);\n}\n";
|
|
25
|
+
/**
|
|
26
|
+
* @description カラー変換フラグメントシェーダー(乗算・加算カラー適用)
|
|
27
|
+
* Color transform fragment shader with multiply and add color application
|
|
28
|
+
*
|
|
29
|
+
* @type {string}
|
|
30
|
+
* @constant
|
|
31
|
+
*/
|
|
4
32
|
export declare const ColorTransformFragment = "\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}\n\nstruct ColorTransformUniforms {\n mul: vec4<f32>,\n add: vec4<f32>,\n}\n\n@group(0) @binding(0) var<uniform> ct: ColorTransformUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var inputTexture: texture_2d<f32>;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n var color = textureSampleLevel(inputTexture, textureSampler, input.texCoord, 0);\n\n color = vec4<f32>(color.rgb / max(vec3<f32>(0.0001), vec3<f32>(color.a)), color.a);\n color = clamp(color * ct.mul + ct.add, vec4<f32>(0.0), vec4<f32>(1.0));\n color = vec4<f32>(color.rgb * color.a, color.a);\n\n return color;\n}\n";
|
|
33
|
+
/**
|
|
34
|
+
* @description Y軸反転付きカラー変換フラグメントシェーダー
|
|
35
|
+
* Y-flip color transform fragment shader
|
|
36
|
+
*
|
|
37
|
+
* @type {string}
|
|
38
|
+
* @constant
|
|
39
|
+
*/
|
|
5
40
|
export declare const YFlipColorTransformFragment = "\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}\n\nstruct YFlipCTUniforms {\n scale: vec2<f32>,\n offset: vec2<f32>,\n mul: vec4<f32>,\n add: vec4<f32>,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: YFlipCTUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var inputTexture: texture_2d<f32>;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n let uv = input.texCoord * uniforms.scale + uniforms.offset;\n var color = textureSampleLevel(inputTexture, textureSampler, uv, 0);\n\n color = vec4<f32>(color.rgb / max(vec3<f32>(0.0001), vec3<f32>(color.a)), color.a);\n color = clamp(color * uniforms.mul + uniforms.add, vec4<f32>(0.0), vec4<f32>(1.0));\n color = vec4<f32>(color.rgb * color.a, color.a);\n\n return color;\n}\n";
|
|
41
|
+
/**
|
|
42
|
+
* @description カラーマトリクスフィルター用フラグメントシェーダー
|
|
43
|
+
* Color matrix filter fragment shader
|
|
44
|
+
*
|
|
45
|
+
* @type {string}
|
|
46
|
+
* @constant
|
|
47
|
+
*/
|
|
6
48
|
export declare const ColorMatrixFilterFragment = "\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}\n\nstruct ColorMatrixUniforms {\n matrix: mat4x4<f32>,\n offset: vec4<f32>,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: ColorMatrixUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var inputTexture: texture_2d<f32>;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n var color = textureSampleLevel(inputTexture, textureSampler, input.texCoord, 0);\n\n color = vec4<f32>(color.rgb / max(vec3<f32>(0.0001), vec3<f32>(color.a)), color.a);\n var result = uniforms.matrix * color + uniforms.offset;\n result = clamp(result, vec4<f32>(0.0), vec4<f32>(1.0));\n result = vec4<f32>(result.rgb * result.a, result.a);\n\n return result;\n}\n";
|
|
49
|
+
/**
|
|
50
|
+
* @description ノードクリア用フラグメントシェーダー(透明色出力)
|
|
51
|
+
* Node clear fragment shader that outputs transparent color
|
|
52
|
+
*
|
|
53
|
+
* @type {string}
|
|
54
|
+
* @constant
|
|
55
|
+
*/
|
|
7
56
|
export declare const NodeClearFragment = "\n@fragment\nfn main() -> @location(0) vec4<f32> {\n return vec4<f32>(0.0, 0.0, 0.0, 0.0);\n}\n";
|
|
57
|
+
/**
|
|
58
|
+
* @description 位置指定テクスチャサンプリング用フラグメントシェーダー
|
|
59
|
+
* Positioned texture sampling fragment shader
|
|
60
|
+
*
|
|
61
|
+
* @type {string}
|
|
62
|
+
* @constant
|
|
63
|
+
*/
|
|
8
64
|
export declare const PositionedTextureFragment = "\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}\n\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var inputTexture: texture_2d<f32>;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n return textureSampleLevel(inputTexture, textureSampler, input.texCoord, 0);\n}\n";
|
|
65
|
+
/**
|
|
66
|
+
* @description ビットマップ同期用フラグメントシェーダー(テクスチャ直接サンプリング)
|
|
67
|
+
* Bitmap sync fragment shader with direct texture sampling
|
|
68
|
+
*
|
|
69
|
+
* @type {string}
|
|
70
|
+
* @constant
|
|
71
|
+
*/
|
|
9
72
|
export declare const BitmapSyncFragment = "\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n}\n\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var inputTexture: texture_2d<f32>;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n return textureSampleLevel(inputTexture, textureSampler, input.texCoord, 0);\n}\n";
|
|
73
|
+
/**
|
|
74
|
+
* @description 汎用ブレンドフラグメントシェーダー(Normal/Multiply/Screen/Add)
|
|
75
|
+
* Generic blend fragment shader supporting Normal, Multiply, Screen, and Add modes
|
|
76
|
+
*
|
|
77
|
+
* @type {string}
|
|
78
|
+
* @constant
|
|
79
|
+
*/
|
|
10
80
|
export declare const BlendGenericFragment = "\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texCoord: vec2<f32>,\n @location(1) color: vec4<f32>,\n}\n\nstruct BlendUniforms {\n blendMode: f32,\n}\n\n@group(0) @binding(1) var<uniform> blend: BlendUniforms;\n@group(0) @binding(2) var srcSampler: sampler;\n@group(0) @binding(3) var srcTexture: texture_2d<f32>;\n@group(0) @binding(4) var dstSampler: sampler;\n@group(0) @binding(5) var dstTexture: texture_2d<f32>;\n\nfn blendNormal(src: vec4<f32>, dst: vec4<f32>) -> vec4<f32> {\n return src;\n}\n\nfn blendMultiply(src: vec4<f32>, dst: vec4<f32>) -> vec4<f32> {\n return src * dst;\n}\n\nfn blendScreen(src: vec4<f32>, dst: vec4<f32>) -> vec4<f32> {\n return src + dst - src * dst;\n}\n\nfn blendAdd(src: vec4<f32>, dst: vec4<f32>) -> vec4<f32> {\n return min(src + dst, vec4<f32>(1.0));\n}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4<f32> {\n let src = textureSampleLevel(srcTexture, srcSampler, input.texCoord, 0);\n let dst = textureSampleLevel(dstTexture, dstSampler, input.texCoord, 0);\n var result: vec4<f32>;\n if (blend.blendMode < 0.5) {\n result = blendNormal(src, dst);\n } else if (blend.blendMode < 1.5) {\n result = blendMultiply(src, dst);\n } else if (blend.blendMode < 2.5) {\n result = blendScreen(src, dst);\n } else {\n result = blendAdd(src, dst);\n }\n return result * input.color;\n}\n";
|
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import { WgslVertexOutput } from "../common/SharedWgsl";
|
|
2
|
+
/**
|
|
3
|
+
* @description テクスチャコピー用フラグメントシェーダー(スケール・オフセット付き)
|
|
4
|
+
* Texture copy fragment shader with scale and offset
|
|
5
|
+
*
|
|
6
|
+
* @type {string}
|
|
7
|
+
* @constant
|
|
8
|
+
*/
|
|
2
9
|
export const TextureCopyFragment = /* wgsl */ `
|
|
3
10
|
${WgslVertexOutput}
|
|
4
11
|
|
|
@@ -17,6 +24,13 @@ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
|
17
24
|
return textureSampleLevel(inputTexture, textureSampler, uv, 0);
|
|
18
25
|
}
|
|
19
26
|
`;
|
|
27
|
+
/**
|
|
28
|
+
* @description ブラー用テクスチャコピーフラグメントシェーダー(境界クランプ付き)
|
|
29
|
+
* Blur texture copy fragment shader with boundary clamping
|
|
30
|
+
*
|
|
31
|
+
* @type {string}
|
|
32
|
+
* @constant
|
|
33
|
+
*/
|
|
20
34
|
export const BlurTextureCopyFragment = /* wgsl */ `
|
|
21
35
|
${WgslVertexOutput}
|
|
22
36
|
|
|
@@ -38,6 +52,13 @@ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
|
38
52
|
return select(vec4<f32>(0.0, 0.0, 0.0, 0.0), color, inBounds);
|
|
39
53
|
}
|
|
40
54
|
`;
|
|
55
|
+
/**
|
|
56
|
+
* @description フィルター出力用フラグメントシェーダー(境界チェック付きコピー)
|
|
57
|
+
* Filter output fragment shader with boundary-checked copy
|
|
58
|
+
*
|
|
59
|
+
* @type {string}
|
|
60
|
+
* @constant
|
|
61
|
+
*/
|
|
41
62
|
export const FilterOutputFragment = /* wgsl */ `
|
|
42
63
|
${WgslVertexOutput}
|
|
43
64
|
|
|
@@ -59,6 +80,13 @@ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
|
59
80
|
return select(vec4<f32>(0.0, 0.0, 0.0, 0.0), color, inBounds);
|
|
60
81
|
}
|
|
61
82
|
`;
|
|
83
|
+
/**
|
|
84
|
+
* @description カラー変換フラグメントシェーダー(乗算・加算カラー適用)
|
|
85
|
+
* Color transform fragment shader with multiply and add color application
|
|
86
|
+
*
|
|
87
|
+
* @type {string}
|
|
88
|
+
* @constant
|
|
89
|
+
*/
|
|
62
90
|
export const ColorTransformFragment = /* wgsl */ `
|
|
63
91
|
${WgslVertexOutput}
|
|
64
92
|
|
|
@@ -82,6 +110,13 @@ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
|
82
110
|
return color;
|
|
83
111
|
}
|
|
84
112
|
`;
|
|
113
|
+
/**
|
|
114
|
+
* @description Y軸反転付きカラー変換フラグメントシェーダー
|
|
115
|
+
* Y-flip color transform fragment shader
|
|
116
|
+
*
|
|
117
|
+
* @type {string}
|
|
118
|
+
* @constant
|
|
119
|
+
*/
|
|
85
120
|
export const YFlipColorTransformFragment = /* wgsl */ `
|
|
86
121
|
${WgslVertexOutput}
|
|
87
122
|
|
|
@@ -108,6 +143,13 @@ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
|
108
143
|
return color;
|
|
109
144
|
}
|
|
110
145
|
`;
|
|
146
|
+
/**
|
|
147
|
+
* @description カラーマトリクスフィルター用フラグメントシェーダー
|
|
148
|
+
* Color matrix filter fragment shader
|
|
149
|
+
*
|
|
150
|
+
* @type {string}
|
|
151
|
+
* @constant
|
|
152
|
+
*/
|
|
111
153
|
export const ColorMatrixFilterFragment = /* wgsl */ `
|
|
112
154
|
${WgslVertexOutput}
|
|
113
155
|
|
|
@@ -132,12 +174,26 @@ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
|
132
174
|
return result;
|
|
133
175
|
}
|
|
134
176
|
`;
|
|
177
|
+
/**
|
|
178
|
+
* @description ノードクリア用フラグメントシェーダー(透明色出力)
|
|
179
|
+
* Node clear fragment shader that outputs transparent color
|
|
180
|
+
*
|
|
181
|
+
* @type {string}
|
|
182
|
+
* @constant
|
|
183
|
+
*/
|
|
135
184
|
export const NodeClearFragment = /* wgsl */ `
|
|
136
185
|
@fragment
|
|
137
186
|
fn main() -> @location(0) vec4<f32> {
|
|
138
187
|
return vec4<f32>(0.0, 0.0, 0.0, 0.0);
|
|
139
188
|
}
|
|
140
189
|
`;
|
|
190
|
+
/**
|
|
191
|
+
* @description 位置指定テクスチャサンプリング用フラグメントシェーダー
|
|
192
|
+
* Positioned texture sampling fragment shader
|
|
193
|
+
*
|
|
194
|
+
* @type {string}
|
|
195
|
+
* @constant
|
|
196
|
+
*/
|
|
141
197
|
export const PositionedTextureFragment = /* wgsl */ `
|
|
142
198
|
${WgslVertexOutput}
|
|
143
199
|
|
|
@@ -149,6 +205,13 @@ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
|
149
205
|
return textureSampleLevel(inputTexture, textureSampler, input.texCoord, 0);
|
|
150
206
|
}
|
|
151
207
|
`;
|
|
208
|
+
/**
|
|
209
|
+
* @description ビットマップ同期用フラグメントシェーダー(テクスチャ直接サンプリング)
|
|
210
|
+
* Bitmap sync fragment shader with direct texture sampling
|
|
211
|
+
*
|
|
212
|
+
* @type {string}
|
|
213
|
+
* @constant
|
|
214
|
+
*/
|
|
152
215
|
export const BitmapSyncFragment = /* wgsl */ `
|
|
153
216
|
${WgslVertexOutput}
|
|
154
217
|
|
|
@@ -160,6 +223,13 @@ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
|
160
223
|
return textureSampleLevel(inputTexture, textureSampler, input.texCoord, 0);
|
|
161
224
|
}
|
|
162
225
|
`;
|
|
226
|
+
/**
|
|
227
|
+
* @description 汎用ブレンドフラグメントシェーダー(Normal/Multiply/Screen/Add)
|
|
228
|
+
* Generic blend fragment shader supporting Normal, Multiply, Screen, and Add modes
|
|
229
|
+
*
|
|
230
|
+
* @type {string}
|
|
231
|
+
* @constant
|
|
232
|
+
*/
|
|
163
233
|
export const BlendGenericFragment = /* wgsl */ `
|
|
164
234
|
struct VertexOutput {
|
|
165
235
|
@builtin(position) position: vec4<f32>,
|
|
@@ -1,3 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description グラデーション塗りフラグメントシェーダー(頂点カラー乗算付き)
|
|
3
|
+
* Gradient fill fragment shader with vertex color multiplication
|
|
4
|
+
*
|
|
5
|
+
* @type {string}
|
|
6
|
+
* @constant
|
|
7
|
+
*/
|
|
1
8
|
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";
|
|
9
|
+
/**
|
|
10
|
+
* @description ステンシル用グラデーション塗りフラグメントシェーダー
|
|
11
|
+
* Gradient fill fragment shader for stencil rendering
|
|
12
|
+
*
|
|
13
|
+
* @type {string}
|
|
14
|
+
* @constant
|
|
15
|
+
*/
|
|
2
16
|
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";
|
|
17
|
+
/**
|
|
18
|
+
* @description テクスチャ座標ベースのグラデーションフラグメントシェーダー
|
|
19
|
+
* Texture coordinate-based gradient fragment shader
|
|
20
|
+
*
|
|
21
|
+
* @type {string}
|
|
22
|
+
* @constant
|
|
23
|
+
*/
|
|
3
24
|
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";
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @description グラデーションのUniform定義とスプレッドモード処理のWGSLコード
|
|
3
|
+
* WGSL code for gradient uniform definitions and spread mode handling
|
|
4
|
+
*
|
|
5
|
+
* @type {string}
|
|
6
|
+
* @constant
|
|
7
|
+
*/
|
|
8
|
+
const $GradientUniformsAndSpread = `
|
|
2
9
|
struct GradientUniforms {
|
|
3
10
|
inverseMatrix: mat3x3<f32>,
|
|
4
11
|
gradientType: f32,
|
|
@@ -25,7 +32,14 @@ fn applySpread(t: f32) -> f32 {
|
|
|
25
32
|
}
|
|
26
33
|
}
|
|
27
34
|
`;
|
|
28
|
-
|
|
35
|
+
/**
|
|
36
|
+
* @description 線形・放射グラデーションのt値計算WGSLコード
|
|
37
|
+
* WGSL code for calculating t value in linear and radial gradients
|
|
38
|
+
*
|
|
39
|
+
* @type {string}
|
|
40
|
+
* @constant
|
|
41
|
+
*/
|
|
42
|
+
const $GradientCalculation = `
|
|
29
43
|
var t: f32;
|
|
30
44
|
if (GRADIENT_TYPE == 0u) {
|
|
31
45
|
let a = gradient.linearPoints.xy;
|
|
@@ -67,6 +81,13 @@ const GradientCalculation = `
|
|
|
67
81
|
t = applySpread(t);
|
|
68
82
|
let gradientColor = textureSampleLevel(gradientTexture, gradientSampler, vec2<f32>(t, 0.5), 0);
|
|
69
83
|
`;
|
|
84
|
+
/**
|
|
85
|
+
* @description グラデーション塗りフラグメントシェーダー(頂点カラー乗算付き)
|
|
86
|
+
* Gradient fill fragment shader with vertex color multiplication
|
|
87
|
+
*
|
|
88
|
+
* @type {string}
|
|
89
|
+
* @constant
|
|
90
|
+
*/
|
|
70
91
|
export const GradientFillFragment = /* wgsl */ `
|
|
71
92
|
struct VertexOutput {
|
|
72
93
|
@builtin(position) position: vec4<f32>,
|
|
@@ -74,16 +95,23 @@ struct VertexOutput {
|
|
|
74
95
|
@location(1) bezier: vec2<f32>,
|
|
75
96
|
@location(2) color: vec4<f32>,
|
|
76
97
|
}
|
|
77
|
-
${GradientUniformsAndSpread}
|
|
98
|
+
${$GradientUniformsAndSpread}
|
|
78
99
|
|
|
79
100
|
@fragment
|
|
80
101
|
fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
81
102
|
let p = input.v_uv;
|
|
82
|
-
${GradientCalculation}
|
|
103
|
+
${$GradientCalculation}
|
|
83
104
|
let result = gradientColor * input.color;
|
|
84
105
|
return vec4<f32>(result.rgb * result.a, result.a);
|
|
85
106
|
}
|
|
86
107
|
`;
|
|
108
|
+
/**
|
|
109
|
+
* @description ステンシル用グラデーション塗りフラグメントシェーダー
|
|
110
|
+
* Gradient fill fragment shader for stencil rendering
|
|
111
|
+
*
|
|
112
|
+
* @type {string}
|
|
113
|
+
* @constant
|
|
114
|
+
*/
|
|
87
115
|
export const GradientFillStencilFragment = /* wgsl */ `
|
|
88
116
|
struct VertexOutput {
|
|
89
117
|
@builtin(position) position: vec4<f32>,
|
|
@@ -91,27 +119,34 @@ struct VertexOutput {
|
|
|
91
119
|
@location(1) bezier: vec2<f32>,
|
|
92
120
|
@location(2) color: vec4<f32>,
|
|
93
121
|
}
|
|
94
|
-
${GradientUniformsAndSpread}
|
|
122
|
+
${$GradientUniformsAndSpread}
|
|
95
123
|
|
|
96
124
|
@fragment
|
|
97
125
|
fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
98
126
|
let p = input.v_uv;
|
|
99
|
-
${GradientCalculation}
|
|
127
|
+
${$GradientCalculation}
|
|
100
128
|
return vec4<f32>(gradientColor.rgb * gradientColor.a, gradientColor.a);
|
|
101
129
|
}
|
|
102
130
|
`;
|
|
131
|
+
/**
|
|
132
|
+
* @description テクスチャ座標ベースのグラデーションフラグメントシェーダー
|
|
133
|
+
* Texture coordinate-based gradient fragment shader
|
|
134
|
+
*
|
|
135
|
+
* @type {string}
|
|
136
|
+
* @constant
|
|
137
|
+
*/
|
|
103
138
|
export const GradientFragment = /* wgsl */ `
|
|
104
139
|
struct VertexOutput {
|
|
105
140
|
@builtin(position) position: vec4<f32>,
|
|
106
141
|
@location(0) texCoord: vec2<f32>,
|
|
107
142
|
@location(1) color: vec4<f32>,
|
|
108
143
|
}
|
|
109
|
-
${GradientUniformsAndSpread}
|
|
144
|
+
${$GradientUniformsAndSpread}
|
|
110
145
|
|
|
111
146
|
@fragment
|
|
112
147
|
fn main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
113
148
|
let p = input.texCoord;
|
|
114
|
-
${GradientCalculation}
|
|
149
|
+
${$GradientCalculation}
|
|
115
150
|
let result = gradientColor * input.color;
|
|
116
151
|
return vec4<f32>(result.rgb * result.a, result.a);
|
|
117
152
|
}
|
|
@@ -1 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description インスタンス描画用フラグメントシェーダー(カラー変換付き)
|
|
3
|
+
* Instanced rendering fragment shader with color transform
|
|
4
|
+
*
|
|
5
|
+
* @type {string}
|
|
6
|
+
* @constant
|
|
7
|
+
*/
|
|
1
8
|
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";
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description インスタンス描画用フラグメントシェーダー(カラー変換付き)
|
|
3
|
+
* Instanced rendering fragment shader with color transform
|
|
4
|
+
*
|
|
5
|
+
* @type {string}
|
|
6
|
+
* @constant
|
|
7
|
+
*/
|
|
1
8
|
export const InstancedFragment = /* wgsl */ `
|
|
2
9
|
struct VertexOutput {
|
|
3
10
|
@builtin(position) position: vec4<f32>,
|
|
@@ -1 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description ベジェ曲線ベースのマスク用フラグメントシェーダー
|
|
3
|
+
* Bezier curve-based mask fragment shader
|
|
4
|
+
*
|
|
5
|
+
* @type {string}
|
|
6
|
+
* @constant
|
|
7
|
+
*/
|
|
1
8
|
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";
|
|
@@ -1,2 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description ステンシル書き込み用フラグメントシェーダー(ベジェ曲線アンチエイリアス)
|
|
3
|
+
* Stencil write fragment shader with bezier curve anti-aliasing
|
|
4
|
+
*
|
|
5
|
+
* @type {string}
|
|
6
|
+
* @constant
|
|
7
|
+
*/
|
|
1
8
|
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";
|
|
9
|
+
/**
|
|
10
|
+
* @description ステンシル塗り用フラグメントシェーダー(プリマルチプライドアルファ出力)
|
|
11
|
+
* Stencil fill fragment shader with premultiplied alpha output
|
|
12
|
+
*
|
|
13
|
+
* @type {string}
|
|
14
|
+
* @constant
|
|
15
|
+
*/
|
|
2
16
|
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";
|