@next2d/webgpu 3.0.4 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +3 -3
- package/src/AtlasManager.d.ts +75 -6
- package/src/AtlasManager.js +106 -30
- package/src/AttachmentManager/service/AttachmentManagerCreateAttachmentObjectService.d.ts +2 -2
- package/src/AttachmentManager/service/AttachmentManagerCreateAttachmentObjectService.js +3 -3
- package/src/AttachmentManager/service/AttachmentManagerCreateColorBufferService.d.ts +4 -4
- package/src/AttachmentManager/service/AttachmentManagerCreateColorBufferService.js +4 -4
- package/src/AttachmentManager/service/AttachmentManagerCreateStencilBufferService.d.ts +5 -5
- package/src/AttachmentManager/service/AttachmentManagerCreateStencilBufferService.js +6 -6
- package/src/AttachmentManager/service/AttachmentManagerCreateTextureObjectService.d.ts +6 -6
- package/src/AttachmentManager/service/AttachmentManagerCreateTextureObjectService.js +7 -7
- package/src/AttachmentManager/service/AttachmentManagerGetColorBufferService.d.ts +6 -6
- package/src/AttachmentManager/service/AttachmentManagerGetColorBufferService.js +9 -9
- package/src/AttachmentManager/service/AttachmentManagerGetStencilBufferService.d.ts +6 -6
- package/src/AttachmentManager/service/AttachmentManagerGetStencilBufferService.js +10 -10
- package/src/AttachmentManager/service/AttachmentManagerGetTextureService.d.ts +7 -7
- package/src/AttachmentManager/service/AttachmentManagerGetTextureService.js +10 -10
- package/src/AttachmentManager/service/AttachmentManagerReleaseTextureService.d.ts +3 -3
- package/src/AttachmentManager/service/AttachmentManagerReleaseTextureService.js +7 -7
- package/src/AttachmentManager/usecase/AttachmentManagerGetAttachmentObjectUseCase.d.ts +10 -10
- package/src/AttachmentManager/usecase/AttachmentManagerGetAttachmentObjectUseCase.js +16 -16
- package/src/AttachmentManager/usecase/AttachmentManagerReleaseAttachmentUseCase.d.ts +6 -6
- package/src/AttachmentManager/usecase/AttachmentManagerReleaseAttachmentUseCase.js +10 -10
- package/src/AttachmentManager.d.ts +28 -6
- package/src/AttachmentManager.js +28 -23
- package/src/BezierConverter/BezierConverter.d.ts +9 -3
- package/src/BezierConverter/BezierConverter.js +5 -3
- package/src/BezierConverter/usecase/BezierConverterAdaptiveCubicToQuadUseCase.d.ts +2 -13
- package/src/BezierConverter/usecase/BezierConverterAdaptiveCubicToQuadUseCase.js +13 -25
- package/src/Blend/BlendInstancedManager.d.ts +19 -15
- package/src/Blend/BlendInstancedManager.js +35 -22
- package/src/Blend/usecase/BlendApplyComplexBlendUseCase.d.ts +9 -2
- package/src/Blend/usecase/BlendApplyComplexBlendUseCase.js +28 -17
- package/src/Blend.d.ts +20 -2
- package/src/Blend.js +20 -4
- package/src/BufferManager/service/BufferManagerReleaseUniformBufferService.js +2 -2
- package/src/BufferManager/service/BufferManagerReleaseVertexBufferService.js +2 -2
- package/src/BufferManager/service/BufferManagerUpdateIndirectBufferService.d.ts +1 -0
- package/src/BufferManager/service/BufferManagerUpdateIndirectBufferService.js +1 -0
- package/src/BufferManager/usecase/BufferManagerCleanupStorageBuffersUseCase.d.ts +1 -0
- package/src/BufferManager/usecase/BufferManagerCleanupStorageBuffersUseCase.js +1 -0
- package/src/BufferManager.d.ts +108 -43
- package/src/BufferManager.js +113 -153
- package/src/Context/service/ContextComputeBitmapMatrixService.d.ts +7 -0
- package/src/Context/service/ContextComputeBitmapMatrixService.js +7 -0
- package/src/Context/service/ContextComputeGradientMatrixService.d.ts +9 -1
- package/src/Context/service/ContextComputeGradientMatrixService.js +15 -7
- package/src/Context/service/ContextFillSimpleService.d.ts +14 -0
- package/src/Context/service/ContextFillSimpleService.js +14 -0
- package/src/Context/service/ContextFillWithStencilMainService.d.ts +11 -0
- package/src/Context/service/ContextFillWithStencilMainService.js +11 -0
- package/src/Context/service/ContextFillWithStencilService.d.ts +11 -0
- package/src/Context/service/ContextFillWithStencilService.js +11 -0
- package/src/Context/usecase/ContextApplyFilterUseCase.d.ts +17 -0
- package/src/Context/usecase/ContextApplyFilterUseCase.js +201 -62
- package/src/Context/usecase/ContextBitmapFillUseCase.d.ts +23 -0
- package/src/Context/usecase/ContextBitmapFillUseCase.js +47 -0
- package/src/Context/usecase/ContextBitmapStrokeUseCase.d.ts +23 -0
- package/src/Context/usecase/ContextBitmapStrokeUseCase.js +35 -0
- package/src/Context/usecase/ContextClipUseCase.d.ts +15 -0
- package/src/Context/usecase/ContextClipUseCase.js +19 -0
- package/src/Context/usecase/ContextContainerEndLayerUseCase.d.ts +21 -1
- package/src/Context/usecase/ContextContainerEndLayerUseCase.js +195 -104
- package/src/Context/usecase/ContextDrawArraysInstancedUseCase.d.ts +13 -0
- package/src/Context/usecase/ContextDrawArraysInstancedUseCase.js +41 -20
- package/src/Context/usecase/ContextDrawIndirectUseCase.d.ts +16 -1
- package/src/Context/usecase/ContextDrawIndirectUseCase.js +53 -30
- package/src/Context/usecase/ContextGradientFillUseCase.d.ts +23 -0
- package/src/Context/usecase/ContextGradientFillUseCase.js +47 -0
- package/src/Context/usecase/ContextGradientStrokeUseCase.d.ts +23 -0
- package/src/Context/usecase/ContextGradientStrokeUseCase.js +35 -0
- package/src/Context/usecase/ContextProcessComplexBlendQueueUseCase.d.ts +13 -1
- package/src/Context/usecase/ContextProcessComplexBlendQueueUseCase.js +126 -60
- package/src/Context.d.ts +445 -63
- package/src/Context.js +566 -144
- package/src/FillTexturePool.d.ts +39 -0
- package/src/FillTexturePool.js +70 -7
- package/src/Filter/BevelFilter/FilterApplyBevelFilterUseCase.d.ts +21 -2
- package/src/Filter/BevelFilter/FilterApplyBevelFilterUseCase.js +33 -26
- package/src/Filter/BlurFilter/FilterApplyBlurFilterUseCase.d.ts +5 -5
- package/src/Filter/BlurFilter/FilterApplyBlurFilterUseCase.js +81 -64
- package/src/Filter/BlurFilterUseCase.d.ts +15 -11
- package/src/Filter/BlurFilterUseCase.js +22 -17
- package/src/Filter/ColorMatrixFilter/FilterApplyColorMatrixFilterUseCase.d.ts +2 -2
- package/src/Filter/ColorMatrixFilter/FilterApplyColorMatrixFilterUseCase.js +5 -5
- package/src/Filter/ConvolutionFilter/FilterApplyConvolutionFilterUseCase.d.ts +15 -1
- package/src/Filter/ConvolutionFilter/FilterApplyConvolutionFilterUseCase.js +23 -17
- package/src/Filter/DisplacementMapFilter/FilterApplyDisplacementMapFilterUseCase.d.ts +20 -1
- package/src/Filter/DisplacementMapFilter/FilterApplyDisplacementMapFilterUseCase.js +37 -26
- package/src/Filter/DropShadowFilter/FilterApplyDropShadowFilterUseCase.d.ts +7 -7
- package/src/Filter/DropShadowFilter/FilterApplyDropShadowFilterUseCase.js +19 -31
- package/src/Filter/FilterGradientLUTCache.js +2 -0
- package/src/Filter/FilterUtil.d.ts +23 -0
- package/src/Filter/FilterUtil.js +33 -0
- package/src/Filter/GlowFilter/FilterApplyGlowFilterUseCase.d.ts +5 -5
- package/src/Filter/GlowFilter/FilterApplyGlowFilterUseCase.js +12 -21
- package/src/Filter/GradientBevelFilter/FilterApplyGradientBevelFilterUseCase.d.ts +6 -6
- package/src/Filter/GradientBevelFilter/FilterApplyGradientBevelFilterUseCase.js +16 -19
- package/src/Filter/GradientGlowFilter/FilterApplyGradientGlowFilterUseCase.d.ts +5 -5
- package/src/Filter/GradientGlowFilter/FilterApplyGradientGlowFilterUseCase.js +13 -16
- package/src/FrameBufferManager/service/FrameBufferManagerCreateRenderPassDescriptorService.d.ts +13 -1
- package/src/FrameBufferManager/service/FrameBufferManagerCreateRenderPassDescriptorService.js +30 -3
- package/src/FrameBufferManager/service/FrameBufferManagerCreateStencilRenderPassDescriptorService.d.ts +11 -1
- package/src/FrameBufferManager/service/FrameBufferManagerCreateStencilRenderPassDescriptorService.js +36 -6
- package/src/FrameBufferManager/usecase/FrameBufferManagerCreateAttachmentUseCase.d.ts +10 -10
- package/src/FrameBufferManager/usecase/FrameBufferManagerCreateAttachmentUseCase.js +15 -15
- package/src/FrameBufferManager/usecase/FrameBufferManagerReleaseTemporaryAttachmentUseCase.d.ts +4 -4
- package/src/FrameBufferManager/usecase/FrameBufferManagerReleaseTemporaryAttachmentUseCase.js +5 -5
- package/src/FrameBufferManager.d.ts +95 -3
- package/src/FrameBufferManager.js +97 -8
- package/src/Gradient/GradientLUTCache.d.ts +36 -4
- package/src/Gradient/GradientLUTCache.js +61 -5
- package/src/Gradient/GradientLUTGenerator.d.ts +26 -14
- package/src/Gradient/GradientLUTGenerator.js +74 -43
- package/src/Mask/service/MaskUnionMaskService.d.ts +16 -1
- package/src/Mask/service/MaskUnionMaskService.js +45 -31
- package/src/Mask.d.ts +57 -3
- package/src/Mask.js +75 -11
- package/src/Mesh/service/MeshFillGenerateService.d.ts +4 -4
- package/src/Mesh/service/MeshFillGenerateService.js +4 -4
- package/src/Mesh/service/MeshStrokeFillGenerateService.d.ts +4 -4
- package/src/Mesh/service/MeshStrokeFillGenerateService.js +4 -4
- package/src/Mesh/usecase/MeshBitmapStrokeGenerateUseCase.d.ts +3 -3
- package/src/Mesh/usecase/MeshBitmapStrokeGenerateUseCase.js +10 -3
- package/src/Mesh/usecase/MeshFillGenerateUseCase.d.ts +2 -2
- package/src/Mesh/usecase/MeshFillGenerateUseCase.js +9 -2
- package/src/Mesh/usecase/MeshGradientStrokeGenerateUseCase.d.ts +3 -3
- package/src/Mesh/usecase/MeshGradientStrokeGenerateUseCase.js +10 -3
- package/src/Mesh/usecase/MeshStrokeGenerateUseCase.d.ts +8 -14
- package/src/Mesh/usecase/MeshStrokeGenerateUseCase.js +214 -129
- package/src/PathCommand.d.ts +24 -23
- package/src/PathCommand.js +25 -79
- package/src/Shader/PipelineManager.d.ts +223 -6
- package/src/Shader/PipelineManager.js +308 -66
- package/src/Shader/ShaderInstancedManager.d.ts +17 -0
- package/src/Shader/ShaderInstancedManager.js +17 -0
- package/src/Shader/ShaderSource.d.ts +317 -12
- package/src/Shader/ShaderSource.js +328 -39
- package/src/Shader/wgsl/common/SharedWgsl.d.ts +28 -1
- package/src/Shader/wgsl/common/SharedWgsl.js +28 -9
- package/src/Shader/wgsl/fragment/BasicFragment.d.ts +14 -0
- package/src/Shader/wgsl/fragment/BasicFragment.js +14 -0
- package/src/Shader/wgsl/fragment/BitmapFragment.d.ts +7 -0
- package/src/Shader/wgsl/fragment/BitmapFragment.js +7 -0
- package/src/Shader/wgsl/fragment/EffectFragment.d.ts +42 -0
- package/src/Shader/wgsl/fragment/EffectFragment.js +42 -0
- package/src/Shader/wgsl/fragment/FillFragment.d.ts +7 -0
- package/src/Shader/wgsl/fragment/FillFragment.js +7 -0
- package/src/Shader/wgsl/fragment/FilterFragment.d.ts +70 -0
- package/src/Shader/wgsl/fragment/FilterFragment.js +70 -0
- package/src/Shader/wgsl/fragment/GradientFragment.d.ts +21 -0
- package/src/Shader/wgsl/fragment/GradientFragment.js +43 -8
- package/src/Shader/wgsl/fragment/InstancedFragment.d.ts +7 -0
- package/src/Shader/wgsl/fragment/InstancedFragment.js +7 -0
- package/src/Shader/wgsl/fragment/MaskFragment.d.ts +7 -0
- package/src/Shader/wgsl/fragment/MaskFragment.js +7 -0
- package/src/Shader/wgsl/fragment/StencilFragment.d.ts +14 -0
- package/src/Shader/wgsl/fragment/StencilFragment.js +14 -0
- package/src/Shader/wgsl/vertex/BasicVertex.d.ts +7 -0
- package/src/Shader/wgsl/vertex/BasicVertex.js +7 -0
- package/src/Shader/wgsl/vertex/BitmapVertex.d.ts +7 -0
- package/src/Shader/wgsl/vertex/BitmapVertex.js +7 -0
- package/src/Shader/wgsl/vertex/FillVertex.d.ts +7 -0
- package/src/Shader/wgsl/vertex/FillVertex.js +7 -0
- package/src/Shader/wgsl/vertex/FilterVertex.d.ts +77 -1
- package/src/Shader/wgsl/vertex/FilterVertex.js +135 -42
- package/src/Shader/wgsl/vertex/GradientVertex.d.ts +7 -0
- package/src/Shader/wgsl/vertex/GradientVertex.js +7 -0
- package/src/Shader/wgsl/vertex/InstancedVertex.d.ts +7 -0
- package/src/Shader/wgsl/vertex/InstancedVertex.js +7 -0
- package/src/Shader/wgsl/vertex/MaskVertex.d.ts +7 -0
- package/src/Shader/wgsl/vertex/MaskVertex.js +7 -0
- package/src/Shader/wgsl/vertex/StencilVertex.d.ts +14 -0
- package/src/Shader/wgsl/vertex/StencilVertex.js +14 -0
- package/src/TextureManager/service/TextureManagerInitializeSamplersService.d.ts +2 -2
- package/src/TextureManager/service/TextureManagerInitializeSamplersService.js +2 -2
- package/src/TextureManager.d.ts +36 -5
- package/src/TextureManager.js +36 -24
- package/src/TexturePool/service/TexturePoolCleanupService.d.ts +4 -4
- package/src/TexturePool/service/TexturePoolCleanupService.js +6 -6
- package/src/TexturePool/service/TexturePoolReleaseService.d.ts +4 -4
- package/src/TexturePool/service/TexturePoolReleaseService.js +5 -5
- package/src/TexturePool/usecase/TexturePoolAcquireUseCase.d.ts +10 -10
- package/src/TexturePool/usecase/TexturePoolAcquireUseCase.js +19 -18
- package/src/TexturePool.d.ts +36 -35
- package/src/TexturePool.js +44 -65
- package/src/WebGPUUtil.d.ts +79 -34
- package/src/WebGPUUtil.js +79 -36
- package/src/interface/IAttachmentObject.d.ts +36 -0
- package/src/interface/IBlendMode.d.ts +7 -0
- package/src/interface/IBlendState.d.ts +8 -0
- package/src/interface/IBounds.d.ts +23 -0
- package/src/interface/IColorBufferObject.d.ts +28 -0
- package/src/interface/IComplexBlendItem.d.ts +48 -0
- package/src/interface/IFilterConfig.d.ts +28 -2
- package/src/interface/IGradientStop.d.ts +20 -0
- package/src/interface/ILocalFilterConfig.d.ts +32 -2
- package/src/interface/IMeshResult.d.ts +8 -0
- package/src/interface/IPoint.d.ts +12 -0
- package/src/interface/IPooledTexture.d.ts +24 -0
- package/src/interface/IQuadraticSegment.d.ts +8 -0
- package/src/interface/IStencilBufferObject.d.ts +28 -0
- package/src/interface/IStorageBufferConfig.d.ts +8 -1
- package/src/interface/ITextureObject.d.ts +28 -0
- package/src/AttachmentManager/service/AttachmentManagerCreateRenderPassDescriptorService.d.ts +0 -5
- package/src/AttachmentManager/service/AttachmentManagerCreateRenderPassDescriptorService.js +0 -42
- package/src/Blend/service/BlendAddService.d.ts +0 -1
- package/src/Blend/service/BlendAddService.js +0 -8
- package/src/Blend/service/BlendAlphaService.d.ts +0 -1
- package/src/Blend/service/BlendAlphaService.js +0 -8
- package/src/Blend/service/BlendEraseService.d.ts +0 -1
- package/src/Blend/service/BlendEraseService.js +0 -8
- package/src/Blend/service/BlendGetStateService.d.ts +0 -12
- package/src/Blend/service/BlendGetStateService.js +0 -13
- package/src/Blend/service/BlendOneZeroService.d.ts +0 -1
- package/src/Blend/service/BlendOneZeroService.js +0 -8
- package/src/Blend/service/BlendResetService.d.ts +0 -1
- package/src/Blend/service/BlendResetService.js +0 -8
- package/src/Blend/service/BlendScreenService.d.ts +0 -1
- package/src/Blend/service/BlendScreenService.js +0 -8
- package/src/Blend/service/BlendSetModeService.d.ts +0 -2
- package/src/Blend/service/BlendSetModeService.js +0 -4
- package/src/Blend/usecase/BlendOperationUseCase.d.ts +0 -11
- package/src/Blend/usecase/BlendOperationUseCase.js +0 -31
- package/src/BufferManager/usecase/BufferManagerReleaseStorageBufferUseCase.d.ts +0 -9
- package/src/BufferManager/usecase/BufferManagerReleaseStorageBufferUseCase.js +0 -15
- package/src/Compute/ComputePipelineManager.d.ts +0 -61
- package/src/Compute/ComputePipelineManager.js +0 -313
- package/src/Compute/service/ComputeExecuteBlurService.d.ts +0 -21
- package/src/Compute/service/ComputeExecuteBlurService.js +0 -81
- package/src/Filter/BevelFilterShader.d.ts +0 -2
- package/src/Filter/BevelFilterShader.js +0 -107
- package/src/Filter/BitmapFilterShader.d.ts +0 -2
- package/src/Filter/BitmapFilterShader.js +0 -207
- package/src/Filter/BlurFilter/service/BlurFilterComputeShaderService.d.ts +0 -40
- package/src/Filter/BlurFilter/service/BlurFilterComputeShaderService.js +0 -51
- package/src/Filter/BlurFilter/usecase/FilterApplyBlurComputeUseCase.d.ts +0 -25
- package/src/Filter/BlurFilter/usecase/FilterApplyBlurComputeUseCase.js +0 -180
- package/src/Filter/BlurFilterShader.d.ts +0 -5
- package/src/Filter/BlurFilterShader.js +0 -109
- package/src/Filter/ColorMatrixFilterShader.d.ts +0 -4
- package/src/Filter/ColorMatrixFilterShader.js +0 -51
- package/src/Filter/ConvolutionFilterShader.d.ts +0 -2
- package/src/Filter/ConvolutionFilterShader.js +0 -115
- package/src/Filter/DisplacementMapFilterShader.d.ts +0 -2
- package/src/Filter/DisplacementMapFilterShader.js +0 -114
- package/src/Filter/DropShadowFilterShader.d.ts +0 -4
- package/src/Filter/DropShadowFilterShader.js +0 -93
- package/src/Filter/GlowFilterShader.d.ts +0 -4
- package/src/Filter/GlowFilterShader.js +0 -66
- package/src/FrameBufferManager/service/FrameBufferManagerFlushPendingReleasesService.d.ts +0 -11
- package/src/FrameBufferManager/service/FrameBufferManagerFlushPendingReleasesService.js +0 -19
- package/src/Mask/usecase/MaskBindUseCase.d.ts +0 -10
- package/src/Mask/usecase/MaskBindUseCase.js +0 -20
- package/src/Mesh/service/MeshLerpService.d.ts +0 -13
- package/src/Mesh/service/MeshLerpService.js +0 -17
- package/src/Mesh/usecase/MeshSplitQuadraticBezierUseCase.d.ts +0 -14
- package/src/Mesh/usecase/MeshSplitQuadraticBezierUseCase.js +0 -28
- package/src/Mesh/usecase/MeshStrokeFillGenerateUseCase.d.ts +0 -18
- package/src/Mesh/usecase/MeshStrokeFillGenerateUseCase.js +0 -54
- package/src/SamplerCache/service/SamplerCacheCreateCommonSamplersService.d.ts +0 -11
- package/src/SamplerCache/service/SamplerCacheCreateCommonSamplersService.js +0 -35
- package/src/SamplerCache/service/SamplerCacheGenerateKeyService.d.ts +0 -13
- package/src/SamplerCache/service/SamplerCacheGenerateKeyService.js +0 -15
- package/src/SamplerCache/service/SamplerCacheGetOrCreateService.d.ts +0 -15
- package/src/SamplerCache/service/SamplerCacheGetOrCreateService.js +0 -30
- package/src/SamplerCache.d.ts +0 -18
- package/src/SamplerCache.js +0 -61
- package/src/Shader/BlendModeShader.d.ts +0 -51
- package/src/Shader/BlendModeShader.js +0 -71
- package/src/Shader/GradientLUTGenerator/service/GradientLUTCalculateResolutionService.d.ts +0 -12
- package/src/Shader/GradientLUTGenerator/service/GradientLUTCalculateResolutionService.js +0 -28
- package/src/Shader/GradientLUTGenerator/service/GradientLUTGeneratePixelsService.d.ts +0 -13
- package/src/Shader/GradientLUTGenerator/service/GradientLUTGeneratePixelsService.js +0 -61
- package/src/Shader/GradientLUTGenerator/service/GradientLUTInterpolateColorService.d.ts +0 -19
- package/src/Shader/GradientLUTGenerator/service/GradientLUTInterpolateColorService.js +0 -37
- package/src/Shader/GradientLUTGenerator/service/GradientLUTParseStopsService.d.ts +0 -11
- package/src/Shader/GradientLUTGenerator/service/GradientLUTParseStopsService.js +0 -24
- package/src/Shader/GradientLUTGenerator/usecase/GradientLUTGenerateDataUseCase.d.ts +0 -14
- package/src/Shader/GradientLUTGenerator/usecase/GradientLUTGenerateDataUseCase.js +0 -24
- package/src/Shader/wgsl/fragment/BlendFragment.d.ts +0 -8
- package/src/Shader/wgsl/fragment/BlendFragment.js +0 -63
- package/src/TextureManager/usecase/TextureManagerCreateTextureFromImageBitmapUseCase.d.ts +0 -13
- package/src/TextureManager/usecase/TextureManagerCreateTextureFromImageBitmapUseCase.js +0 -30
- package/src/TextureManager/usecase/TextureManagerCreateTextureFromPixelsUseCase.d.ts +0 -15
- package/src/TextureManager/usecase/TextureManagerCreateTextureFromPixelsUseCase.js +0 -26
- package/src/TexturePool/service/TexturePoolEvictOldestService.d.ts +0 -11
- package/src/TexturePool/service/TexturePoolEvictOldestService.js +0 -24
- package/src/interface/ICachedBindGroup.d.ts +0 -8
- package/src/interface/ICachedBindGroup.js +0 -1
- package/src/interface/IGradientLUTData.d.ts +0 -8
- package/src/interface/IGradientLUTData.js +0 -1
- package/src/interface/IPooledBuffer.d.ts +0 -8
- package/src/interface/IPooledBuffer.js +0 -1
- package/src/interface/IRectangleInfo.d.ts +0 -13
- package/src/interface/IRectangleInfo.js +0 -1
|
@@ -3,8 +3,48 @@ import { $currentBlendMode } from "../../Blend";
|
|
|
3
3
|
import { renderQueue } from "@next2d/render-queue";
|
|
4
4
|
import { $isMaskTestEnabled, $getMaskStencilReference } from "../../Mask";
|
|
5
5
|
import { $getAtlasAttachmentObject } from "../../AtlasManager";
|
|
6
|
+
/**
|
|
7
|
+
* @description キャッシュ済みバインドグループ
|
|
8
|
+
* Cached bind group
|
|
9
|
+
*/
|
|
6
10
|
let $cachedBindGroup = null;
|
|
11
|
+
/**
|
|
12
|
+
* @description キャッシュ済みアトラステクスチャビュー
|
|
13
|
+
* Cached atlas texture view
|
|
14
|
+
*/
|
|
7
15
|
let $cachedAtlasView = null;
|
|
16
|
+
/**
|
|
17
|
+
* @description ブレンドモードに応じたインスタンスパイプライン名を返す
|
|
18
|
+
*/
|
|
19
|
+
const $getPipelineName = (mode) => {
|
|
20
|
+
switch (mode) {
|
|
21
|
+
case "add":
|
|
22
|
+
return "instanced_add";
|
|
23
|
+
case "screen":
|
|
24
|
+
return "instanced_screen";
|
|
25
|
+
case "alpha":
|
|
26
|
+
return "instanced_alpha";
|
|
27
|
+
case "erase":
|
|
28
|
+
return "instanced_erase";
|
|
29
|
+
case "copy":
|
|
30
|
+
return "instanced_copy";
|
|
31
|
+
default:
|
|
32
|
+
return "instanced";
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* @description インスタンス描画を実行する
|
|
37
|
+
* Executes instanced array drawing
|
|
38
|
+
* @param {GPUDevice} device GPUデバイス / GPU device
|
|
39
|
+
* @param {GPUCommandEncoder} command_encoder コマンドエンコーダ / Command encoder
|
|
40
|
+
* @param {GPURenderPassEncoder | null} render_pass_encoder レンダーパスエンコーダ / Render pass encoder
|
|
41
|
+
* @param {IAttachmentObject} main_attachment メインアタッチメント / Main attachment
|
|
42
|
+
* @param {BufferManager} buffer_manager バッファマネージャ / Buffer manager
|
|
43
|
+
* @param {FrameBufferManager} frame_buffer_manager フレームバッファマネージャ / Frame buffer manager
|
|
44
|
+
* @param {TextureManager} texture_manager テクスチャマネージャ / Texture manager
|
|
45
|
+
* @param {PipelineManager} pipeline_manager パイプラインマネージャ / Pipeline manager
|
|
46
|
+
* @return {GPURenderPassEncoder | null} レンダーパスエンコーダまたはnull / Render pass encoder or null
|
|
47
|
+
*/
|
|
8
48
|
export const execute = (device, command_encoder, render_pass_encoder, main_attachment, buffer_manager, frame_buffer_manager, texture_manager, pipeline_manager) => {
|
|
9
49
|
const shaderManager = getInstancedShaderManager();
|
|
10
50
|
if (shaderManager.count === 0) {
|
|
@@ -19,26 +59,7 @@ export const execute = (device, command_encoder, render_pass_encoder, main_attac
|
|
|
19
59
|
const maskReference = $getMaskStencilReference();
|
|
20
60
|
// 現在のブレンドモードを取得
|
|
21
61
|
const blendMode = $currentBlendMode;
|
|
22
|
-
|
|
23
|
-
// simpleBlendModes: normal, layer, add, screen, alpha, erase, copy
|
|
24
|
-
const getPipelineName = (mode) => {
|
|
25
|
-
switch (mode) {
|
|
26
|
-
case "add":
|
|
27
|
-
return "instanced_add";
|
|
28
|
-
case "screen":
|
|
29
|
-
return "instanced_screen";
|
|
30
|
-
case "alpha":
|
|
31
|
-
return "instanced_alpha";
|
|
32
|
-
case "erase":
|
|
33
|
-
return "instanced_erase";
|
|
34
|
-
case "copy":
|
|
35
|
-
return "instanced_copy";
|
|
36
|
-
default:
|
|
37
|
-
// normal, layer
|
|
38
|
-
return "instanced";
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
const pipelineName = getPipelineName(blendMode);
|
|
62
|
+
const pipelineName = $getPipelineName(blendMode);
|
|
42
63
|
const normalPipeline = pipeline_manager.getPipeline(pipelineName);
|
|
43
64
|
const maskedPipeline = pipeline_manager.getPipeline("instanced_masked");
|
|
44
65
|
// 実際にマスクを使用するか判定
|
|
@@ -3,4 +3,19 @@ import type { BufferManager } from "../../BufferManager";
|
|
|
3
3
|
import type { FrameBufferManager } from "../../FrameBufferManager";
|
|
4
4
|
import type { TextureManager } from "../../TextureManager";
|
|
5
5
|
import type { PipelineManager } from "../../Shader/PipelineManager";
|
|
6
|
-
|
|
6
|
+
/**
|
|
7
|
+
* @description Indirect描画を使用したインスタンス描画を実行する
|
|
8
|
+
* Executes instanced drawing with indirect draw support
|
|
9
|
+
* @param {GPUDevice} device GPUデバイス / GPU device
|
|
10
|
+
* @param {GPUCommandEncoder} command_encoder コマンドエンコーダ / Command encoder
|
|
11
|
+
* @param {GPURenderPassEncoder | null} render_pass_encoder レンダーパスエンコーダ / Render pass encoder
|
|
12
|
+
* @param {IAttachmentObject} main_attachment メインアタッチメント / Main attachment
|
|
13
|
+
* @param {BufferManager} buffer_manager バッファマネージャ / Buffer manager
|
|
14
|
+
* @param {FrameBufferManager} frame_buffer_manager フレームバッファマネージャ / Frame buffer manager
|
|
15
|
+
* @param {TextureManager} texture_manager テクスチャマネージャ / Texture manager
|
|
16
|
+
* @param {PipelineManager} pipeline_manager パイプラインマネージャ / Pipeline manager
|
|
17
|
+
* @param {boolean} use_indirect Indirect描画使用フラグ / Whether to use indirect drawing
|
|
18
|
+
* @param {boolean} use_storage_buffer StorageBuffer使用フラグ / Whether to use storage buffer
|
|
19
|
+
* @return {GPURenderPassEncoder | null} レンダーパスエンコーダまたはnull / Render pass encoder or null
|
|
20
|
+
*/
|
|
21
|
+
export declare const execute: (device: GPUDevice, command_encoder: GPUCommandEncoder, render_pass_encoder: GPURenderPassEncoder | null, main_attachment: IAttachmentObject, buffer_manager: BufferManager, frame_buffer_manager: FrameBufferManager, texture_manager: TextureManager, pipeline_manager: PipelineManager, use_indirect?: boolean, use_storage_buffer?: boolean) => GPURenderPassEncoder | null;
|
|
@@ -3,17 +3,40 @@ import { $currentBlendMode } from "../../Blend";
|
|
|
3
3
|
import { renderQueue } from "@next2d/render-queue";
|
|
4
4
|
import { $isMaskTestEnabled, $getMaskStencilReference } from "../../Mask";
|
|
5
5
|
import { $getAtlasAttachmentObject } from "../../AtlasManager";
|
|
6
|
+
/**
|
|
7
|
+
* @description キャッシュ済みバインドグループ
|
|
8
|
+
* Cached bind group
|
|
9
|
+
*/
|
|
6
10
|
let $cachedBindGroup = null;
|
|
11
|
+
/**
|
|
12
|
+
* @description キャッシュ済みアトラステクスチャビュー
|
|
13
|
+
* Cached atlas texture view
|
|
14
|
+
*/
|
|
7
15
|
let $cachedAtlasView = null;
|
|
8
|
-
|
|
16
|
+
/**
|
|
17
|
+
* @description Indirect描画を使用したインスタンス描画を実行する
|
|
18
|
+
* Executes instanced drawing with indirect draw support
|
|
19
|
+
* @param {GPUDevice} device GPUデバイス / GPU device
|
|
20
|
+
* @param {GPUCommandEncoder} command_encoder コマンドエンコーダ / Command encoder
|
|
21
|
+
* @param {GPURenderPassEncoder | null} render_pass_encoder レンダーパスエンコーダ / Render pass encoder
|
|
22
|
+
* @param {IAttachmentObject} main_attachment メインアタッチメント / Main attachment
|
|
23
|
+
* @param {BufferManager} buffer_manager バッファマネージャ / Buffer manager
|
|
24
|
+
* @param {FrameBufferManager} frame_buffer_manager フレームバッファマネージャ / Frame buffer manager
|
|
25
|
+
* @param {TextureManager} texture_manager テクスチャマネージャ / Texture manager
|
|
26
|
+
* @param {PipelineManager} pipeline_manager パイプラインマネージャ / Pipeline manager
|
|
27
|
+
* @param {boolean} use_indirect Indirect描画使用フラグ / Whether to use indirect drawing
|
|
28
|
+
* @param {boolean} use_storage_buffer StorageBuffer使用フラグ / Whether to use storage buffer
|
|
29
|
+
* @return {GPURenderPassEncoder | null} レンダーパスエンコーダまたはnull / Render pass encoder or null
|
|
30
|
+
*/
|
|
31
|
+
export const execute = (device, command_encoder, render_pass_encoder, main_attachment, buffer_manager, frame_buffer_manager, texture_manager, pipeline_manager, use_indirect = true, use_storage_buffer = true) => {
|
|
9
32
|
const shaderManager = getInstancedShaderManager();
|
|
10
33
|
if (shaderManager.count === 0) {
|
|
11
|
-
return
|
|
34
|
+
return render_pass_encoder;
|
|
12
35
|
}
|
|
13
36
|
// 既存のレンダーパスを終了
|
|
14
|
-
if (
|
|
15
|
-
|
|
16
|
-
|
|
37
|
+
if (render_pass_encoder) {
|
|
38
|
+
render_pass_encoder.end();
|
|
39
|
+
render_pass_encoder = null;
|
|
17
40
|
}
|
|
18
41
|
const isMasked = $isMaskTestEnabled();
|
|
19
42
|
const maskReference = $getMaskStencilReference();
|
|
@@ -38,10 +61,10 @@ export const execute = (device, commandEncoder, renderPassEncoder, mainAttachmen
|
|
|
38
61
|
}
|
|
39
62
|
};
|
|
40
63
|
const pipelineName = getPipelineName(blendMode);
|
|
41
|
-
const normalPipeline =
|
|
42
|
-
const maskedPipeline =
|
|
64
|
+
const normalPipeline = pipeline_manager.getPipeline(pipelineName);
|
|
65
|
+
const maskedPipeline = pipeline_manager.getPipeline("instanced_masked");
|
|
43
66
|
const useStencil = isMasked && maskedPipeline
|
|
44
|
-
&& (
|
|
67
|
+
&& (main_attachment.msaaStencil?.view || main_attachment.stencil?.view);
|
|
45
68
|
const pipeline = useStencil ? maskedPipeline : normalPipeline;
|
|
46
69
|
if (!pipeline) {
|
|
47
70
|
console.error("[WebGPU] Instanced pipeline not found");
|
|
@@ -51,21 +74,21 @@ export const execute = (device, commandEncoder, renderPassEncoder, mainAttachmen
|
|
|
51
74
|
let passEncoder;
|
|
52
75
|
if (useStencil) {
|
|
53
76
|
// MSAA対応
|
|
54
|
-
const useMsaa =
|
|
55
|
-
const colorView = useMsaa ?
|
|
56
|
-
const stencilView = useMsaa &&
|
|
57
|
-
?
|
|
58
|
-
const resolveTarget = useMsaa ?
|
|
59
|
-
const renderPassDescriptor =
|
|
60
|
-
passEncoder =
|
|
77
|
+
const useMsaa = main_attachment.msaa && main_attachment.msaaTexture?.view;
|
|
78
|
+
const colorView = useMsaa ? main_attachment.msaaTexture.view : main_attachment.texture.view;
|
|
79
|
+
const stencilView = useMsaa && main_attachment.msaaStencil?.view
|
|
80
|
+
? main_attachment.msaaStencil.view : main_attachment.stencil.view;
|
|
81
|
+
const resolveTarget = useMsaa ? main_attachment.texture.view : null;
|
|
82
|
+
const renderPassDescriptor = frame_buffer_manager.createStencilRenderPassDescriptor(colorView, stencilView, "load", "load", resolveTarget);
|
|
83
|
+
passEncoder = command_encoder.beginRenderPass(renderPassDescriptor);
|
|
61
84
|
}
|
|
62
85
|
else {
|
|
63
86
|
// 通常のレンダーパス(MSAA対応)
|
|
64
|
-
const useMsaa =
|
|
65
|
-
const colorView = useMsaa ?
|
|
66
|
-
const resolveTarget = useMsaa ?
|
|
67
|
-
const renderPassDescriptor =
|
|
68
|
-
passEncoder =
|
|
87
|
+
const useMsaa = main_attachment.msaa && main_attachment.msaaTexture?.view;
|
|
88
|
+
const colorView = useMsaa ? main_attachment.msaaTexture.view : main_attachment.texture.view;
|
|
89
|
+
const resolveTarget = useMsaa ? main_attachment.texture.view : null;
|
|
90
|
+
const renderPassDescriptor = frame_buffer_manager.createRenderPassDescriptor(colorView, 0, 0, 0, 0, "load", resolveTarget);
|
|
91
|
+
passEncoder = command_encoder.beginRenderPass(renderPassDescriptor);
|
|
69
92
|
}
|
|
70
93
|
passEncoder.setPipeline(pipeline);
|
|
71
94
|
if (useStencil) {
|
|
@@ -75,29 +98,29 @@ export const execute = (device, commandEncoder, renderPassEncoder, mainAttachmen
|
|
|
75
98
|
const instanceData = new Float32Array(renderQueue.buffer.buffer, renderQueue.buffer.byteOffset, renderQueue.offset);
|
|
76
99
|
// インスタンスバッファを作成または取得
|
|
77
100
|
let instanceBuffer;
|
|
78
|
-
if (
|
|
101
|
+
if (use_storage_buffer) {
|
|
79
102
|
// Storage Buffer最適化: プールから再利用してメモリアロケーション削減
|
|
80
103
|
// Storage BufferはVERTEXフラグ付きで作成されているため、setVertexBufferで使用可能
|
|
81
|
-
instanceBuffer =
|
|
82
|
-
|
|
104
|
+
instanceBuffer = buffer_manager.acquireStorageBuffer(instanceData.byteLength);
|
|
105
|
+
buffer_manager.writeStorageBuffer(instanceBuffer, instanceData);
|
|
83
106
|
}
|
|
84
107
|
else {
|
|
85
108
|
// 従来方式: プールから再利用
|
|
86
|
-
instanceBuffer =
|
|
109
|
+
instanceBuffer = buffer_manager.acquireVertexBuffer(instanceData.byteLength, instanceData);
|
|
87
110
|
}
|
|
88
111
|
// 頂点バッファ(矩形)を取得(キャッシュ済み)
|
|
89
|
-
const vertexBuffer =
|
|
112
|
+
const vertexBuffer = buffer_manager.getUnitRectBuffer();
|
|
90
113
|
// アトラステクスチャをバインド(複数アトラス対応)
|
|
91
114
|
// AtlasManagerから取得、フォールバックとしてFrameBufferManagerから取得
|
|
92
|
-
const atlasAttachment = $getAtlasAttachmentObject() ||
|
|
115
|
+
const atlasAttachment = $getAtlasAttachmentObject() || frame_buffer_manager.getAttachment("atlas");
|
|
93
116
|
if (!atlasAttachment) {
|
|
94
117
|
console.error("[WebGPU] Atlas attachment not found");
|
|
95
118
|
passEncoder.end();
|
|
96
119
|
return null;
|
|
97
120
|
}
|
|
98
121
|
// アトラス用サンプラーを取得(キャッシュ済み)
|
|
99
|
-
const sampler =
|
|
100
|
-
const bindGroupLayout =
|
|
122
|
+
const sampler = texture_manager.createSampler("atlas_instanced_sampler", false);
|
|
123
|
+
const bindGroupLayout = pipeline_manager.getBindGroupLayout("instanced");
|
|
101
124
|
if (!bindGroupLayout) {
|
|
102
125
|
console.error("[WebGPU] Instanced bind group layout not found");
|
|
103
126
|
passEncoder.end();
|
|
@@ -125,13 +148,13 @@ export const execute = (device, commandEncoder, renderPassEncoder, mainAttachmen
|
|
|
125
148
|
passEncoder.setVertexBuffer(0, vertexBuffer);
|
|
126
149
|
passEncoder.setVertexBuffer(1, instanceBuffer);
|
|
127
150
|
passEncoder.setBindGroup(0, $cachedBindGroup);
|
|
128
|
-
if (
|
|
151
|
+
if (use_indirect) {
|
|
129
152
|
// Indirect Drawing: CPU-GPU間のオーバーヘッドを削減
|
|
130
153
|
// 注意: 1フレーム内で複数回呼び出される場合があるため、
|
|
131
154
|
// 毎回新しいIndirect Bufferを作成する必要がある
|
|
132
155
|
// (共有バッファを使うとqueue.writeBufferの更新が全てGPU実行前に行われ、
|
|
133
156
|
// 全てのdrawIndirectが最後の更新値を使用してしまう)
|
|
134
|
-
const indirectBuffer =
|
|
157
|
+
const indirectBuffer = buffer_manager.createIndirectBuffer(6, // vertexCount (2 triangles = 6 vertices)
|
|
135
158
|
shaderManager.count, // instanceCount
|
|
136
159
|
0, // firstVertex
|
|
137
160
|
0 // firstInstance
|
|
@@ -1,4 +1,27 @@
|
|
|
1
1
|
import type { IPath } from "../../interface/IPath";
|
|
2
2
|
import type { BufferManager } from "../../BufferManager";
|
|
3
3
|
import type { PipelineManager } from "../../Shader/PipelineManager";
|
|
4
|
+
/**
|
|
5
|
+
* @description グラデーションフィル描画を実行する
|
|
6
|
+
* Executes gradient fill rendering
|
|
7
|
+
* @param {GPUDevice} device GPUデバイス / GPU device
|
|
8
|
+
* @param {GPURenderPassEncoder} render_pass_encoder レンダーパスエンコーダ / Render pass encoder
|
|
9
|
+
* @param {BufferManager} buffer_manager バッファマネージャ / Buffer manager
|
|
10
|
+
* @param {PipelineManager} pipeline_manager パイプラインマネージャ / Pipeline manager
|
|
11
|
+
* @param {IPath[]} path_vertices パス頂点配列 / Path vertices array
|
|
12
|
+
* @param {Float32Array} context_matrix コンテキスト変換行列 / Context transformation matrix
|
|
13
|
+
* @param {Float32Array} fill_style フィルスタイル(RGBA) / Fill style (RGBA)
|
|
14
|
+
* @param {number} type グラデーションタイプ / Gradient type
|
|
15
|
+
* @param {number[]} stops グラデーションストップ配列 / Gradient stops array
|
|
16
|
+
* @param {Float32Array} gradient_matrix グラデーション変換行列 / Gradient transformation matrix
|
|
17
|
+
* @param {number} spread スプレッドモード / Spread mode
|
|
18
|
+
* @param {number} interpolation 補間モード / Interpolation mode
|
|
19
|
+
* @param {number} focal 焦点距離 / Focal point
|
|
20
|
+
* @param {number} viewport_width ビューポート幅 / Viewport width
|
|
21
|
+
* @param {number} viewport_height ビューポート高さ / Viewport height
|
|
22
|
+
* @param {boolean} use_atlas_target アトラスターゲット使用フラグ / Whether to use atlas target
|
|
23
|
+
* @param {boolean} use_stencil_pipeline ステンシルパイプライン使用フラグ / Whether to use stencil pipeline
|
|
24
|
+
* @param {number} _clip_level クリップレベル(未使用) / Clip level (unused)
|
|
25
|
+
* @return {GPUTexture | null} LUTテクスチャまたはnull / LUT texture or null
|
|
26
|
+
*/
|
|
4
27
|
export declare const execute: (device: GPUDevice, render_pass_encoder: GPURenderPassEncoder, buffer_manager: BufferManager, pipeline_manager: PipelineManager, path_vertices: IPath[], context_matrix: Float32Array, fill_style: Float32Array, type: number, stops: number[], gradient_matrix: Float32Array, spread: number, interpolation: number, focal: number, viewport_width: number, viewport_height: number, use_atlas_target: boolean, use_stencil_pipeline?: boolean, _clip_level?: number) => GPUTexture | null;
|
|
@@ -4,16 +4,63 @@ import { execute as contextComputeGradientMatrixService } from "../service/Conte
|
|
|
4
4
|
import { $getLUTFromCache, $putLUTToCache } from "../../Gradient/GradientLUTCache";
|
|
5
5
|
import { $acquireFillTexture } from "../../FillTexturePool";
|
|
6
6
|
import { $isMaskDrawing, $getMaskStencilReference } from "../../Mask";
|
|
7
|
+
/**
|
|
8
|
+
* @description グラデーションサンプラーのキャッシュ
|
|
9
|
+
* Cached gradient sampler
|
|
10
|
+
*/
|
|
7
11
|
let $gradientSampler = null;
|
|
12
|
+
/**
|
|
13
|
+
* @description ユニフォームデータの事前確保配列(36要素)
|
|
14
|
+
* Pre-allocated uniform data array (36 elements)
|
|
15
|
+
*/
|
|
8
16
|
const $uniformData36 = new Float32Array(36);
|
|
17
|
+
/**
|
|
18
|
+
* @description ステンシルデータの事前確保配列(16要素)
|
|
19
|
+
* Pre-allocated stencil data array (16 elements)
|
|
20
|
+
*/
|
|
9
21
|
const $stencilData16 = new Float32Array(16);
|
|
22
|
+
/**
|
|
23
|
+
* @description ステンシル用動的バインドグループのキャッシュ
|
|
24
|
+
* Cached dynamic bind group for stencil operations
|
|
25
|
+
*/
|
|
10
26
|
let $stencilDynamicBindGroup = null;
|
|
27
|
+
/**
|
|
28
|
+
* @description ステンシル用動的バッファのキャッシュ
|
|
29
|
+
* Cached dynamic buffer for stencil operations
|
|
30
|
+
*/
|
|
11
31
|
let $stencilDynamicBuffer = null;
|
|
32
|
+
/**
|
|
33
|
+
* @description バインドグループエントリの事前確保配列
|
|
34
|
+
* Pre-allocated bind group entry array
|
|
35
|
+
*/
|
|
12
36
|
const $entries3 = [
|
|
13
37
|
{ "binding": 0, "resource": { "buffer": null } },
|
|
14
38
|
{ "binding": 1, "resource": null },
|
|
15
39
|
{ "binding": 2, "resource": null }
|
|
16
40
|
];
|
|
41
|
+
/**
|
|
42
|
+
* @description グラデーションフィル描画を実行する
|
|
43
|
+
* Executes gradient fill rendering
|
|
44
|
+
* @param {GPUDevice} device GPUデバイス / GPU device
|
|
45
|
+
* @param {GPURenderPassEncoder} render_pass_encoder レンダーパスエンコーダ / Render pass encoder
|
|
46
|
+
* @param {BufferManager} buffer_manager バッファマネージャ / Buffer manager
|
|
47
|
+
* @param {PipelineManager} pipeline_manager パイプラインマネージャ / Pipeline manager
|
|
48
|
+
* @param {IPath[]} path_vertices パス頂点配列 / Path vertices array
|
|
49
|
+
* @param {Float32Array} context_matrix コンテキスト変換行列 / Context transformation matrix
|
|
50
|
+
* @param {Float32Array} fill_style フィルスタイル(RGBA) / Fill style (RGBA)
|
|
51
|
+
* @param {number} type グラデーションタイプ / Gradient type
|
|
52
|
+
* @param {number[]} stops グラデーションストップ配列 / Gradient stops array
|
|
53
|
+
* @param {Float32Array} gradient_matrix グラデーション変換行列 / Gradient transformation matrix
|
|
54
|
+
* @param {number} spread スプレッドモード / Spread mode
|
|
55
|
+
* @param {number} interpolation 補間モード / Interpolation mode
|
|
56
|
+
* @param {number} focal 焦点距離 / Focal point
|
|
57
|
+
* @param {number} viewport_width ビューポート幅 / Viewport width
|
|
58
|
+
* @param {number} viewport_height ビューポート高さ / Viewport height
|
|
59
|
+
* @param {boolean} use_atlas_target アトラスターゲット使用フラグ / Whether to use atlas target
|
|
60
|
+
* @param {boolean} use_stencil_pipeline ステンシルパイプライン使用フラグ / Whether to use stencil pipeline
|
|
61
|
+
* @param {number} _clip_level クリップレベル(未使用) / Clip level (unused)
|
|
62
|
+
* @return {GPUTexture | null} LUTテクスチャまたはnull / LUT texture or null
|
|
63
|
+
*/
|
|
17
64
|
export const execute = (device, render_pass_encoder, buffer_manager, pipeline_manager, path_vertices, context_matrix, fill_style, type, stops, gradient_matrix, spread, interpolation, focal, viewport_width, viewport_height, use_atlas_target, use_stencil_pipeline = false, _clip_level = 1) => {
|
|
18
65
|
// MeshFillGenerateUseCaseで頂点データを生成(4 floats/vertex: position + bezier)
|
|
19
66
|
const mesh = meshFillGenerateUseCase(path_vertices);
|
|
@@ -1,4 +1,27 @@
|
|
|
1
1
|
import type { IPath } from "../../interface/IPath";
|
|
2
2
|
import type { BufferManager } from "../../BufferManager";
|
|
3
3
|
import type { PipelineManager } from "../../Shader/PipelineManager";
|
|
4
|
+
/**
|
|
5
|
+
* @description グラデーションストローク描画を実行する
|
|
6
|
+
* Executes gradient stroke rendering
|
|
7
|
+
* @param {GPUDevice} device GPUデバイス / GPU device
|
|
8
|
+
* @param {GPURenderPassEncoder} render_pass_encoder レンダーパスエンコーダ / Render pass encoder
|
|
9
|
+
* @param {BufferManager} buffer_manager バッファマネージャ / Buffer manager
|
|
10
|
+
* @param {PipelineManager} pipeline_manager パイプラインマネージャ / Pipeline manager
|
|
11
|
+
* @param {IPath[]} vertices パス頂点配列 / Path vertices array
|
|
12
|
+
* @param {number} thickness ストローク太さ / Stroke thickness
|
|
13
|
+
* @param {Float32Array} context_matrix コンテキスト変換行列 / Context transformation matrix
|
|
14
|
+
* @param {Float32Array} stroke_style ストロークスタイル(RGBA) / Stroke style (RGBA)
|
|
15
|
+
* @param {number} type グラデーションタイプ / Gradient type
|
|
16
|
+
* @param {number[]} stops グラデーションストップ配列 / Gradient stops array
|
|
17
|
+
* @param {Float32Array} gradient_matrix グラデーション変換行列 / Gradient transformation matrix
|
|
18
|
+
* @param {number} spread スプレッドモード / Spread mode
|
|
19
|
+
* @param {number} interpolation 補間モード / Interpolation mode
|
|
20
|
+
* @param {number} focal 焦点距離 / Focal point
|
|
21
|
+
* @param {number} viewport_width ビューポート幅 / Viewport width
|
|
22
|
+
* @param {number} viewport_height ビューポート高さ / Viewport height
|
|
23
|
+
* @param {boolean} use_atlas_target アトラスターゲット使用フラグ / Whether to use atlas target
|
|
24
|
+
* @param {boolean} use_stencil_pipeline ステンシルパイプライン使用フラグ / Whether to use stencil pipeline
|
|
25
|
+
* @return {GPUTexture | null} LUTテクスチャまたはnull / LUT texture or null
|
|
26
|
+
*/
|
|
4
27
|
export declare const execute: (device: GPUDevice, render_pass_encoder: GPURenderPassEncoder, buffer_manager: BufferManager, pipeline_manager: PipelineManager, vertices: IPath[], thickness: number, context_matrix: Float32Array, stroke_style: Float32Array, type: number, stops: number[], gradient_matrix: Float32Array, spread: number, interpolation: number, focal: number, viewport_width: number, viewport_height: number, use_atlas_target: boolean, use_stencil_pipeline: boolean) => GPUTexture | null;
|
|
@@ -3,13 +3,48 @@ import { generateGradientLUT, getAdaptiveResolution } from "../../Gradient/Gradi
|
|
|
3
3
|
import { execute as contextComputeGradientMatrixService } from "../service/ContextComputeGradientMatrixService";
|
|
4
4
|
import { $getLUTFromCache, $putLUTToCache } from "../../Gradient/GradientLUTCache";
|
|
5
5
|
import { $acquireFillTexture } from "../../FillTexturePool";
|
|
6
|
+
/**
|
|
7
|
+
* @description グラデーションサンプラーのキャッシュ
|
|
8
|
+
* Cached gradient sampler
|
|
9
|
+
*/
|
|
6
10
|
let $gradientSampler = null;
|
|
11
|
+
/**
|
|
12
|
+
* @description ユニフォームデータの事前確保配列(36要素)
|
|
13
|
+
* Pre-allocated uniform data array (36 elements)
|
|
14
|
+
*/
|
|
7
15
|
const $uniformData36 = new Float32Array(36);
|
|
16
|
+
/**
|
|
17
|
+
* @description バインドグループエントリの事前確保配列
|
|
18
|
+
* Pre-allocated bind group entry array
|
|
19
|
+
*/
|
|
8
20
|
const $entries3 = [
|
|
9
21
|
{ "binding": 0, "resource": { "buffer": null } },
|
|
10
22
|
{ "binding": 1, "resource": null },
|
|
11
23
|
{ "binding": 2, "resource": null }
|
|
12
24
|
];
|
|
25
|
+
/**
|
|
26
|
+
* @description グラデーションストローク描画を実行する
|
|
27
|
+
* Executes gradient stroke rendering
|
|
28
|
+
* @param {GPUDevice} device GPUデバイス / GPU device
|
|
29
|
+
* @param {GPURenderPassEncoder} render_pass_encoder レンダーパスエンコーダ / Render pass encoder
|
|
30
|
+
* @param {BufferManager} buffer_manager バッファマネージャ / Buffer manager
|
|
31
|
+
* @param {PipelineManager} pipeline_manager パイプラインマネージャ / Pipeline manager
|
|
32
|
+
* @param {IPath[]} vertices パス頂点配列 / Path vertices array
|
|
33
|
+
* @param {number} thickness ストローク太さ / Stroke thickness
|
|
34
|
+
* @param {Float32Array} context_matrix コンテキスト変換行列 / Context transformation matrix
|
|
35
|
+
* @param {Float32Array} stroke_style ストロークスタイル(RGBA) / Stroke style (RGBA)
|
|
36
|
+
* @param {number} type グラデーションタイプ / Gradient type
|
|
37
|
+
* @param {number[]} stops グラデーションストップ配列 / Gradient stops array
|
|
38
|
+
* @param {Float32Array} gradient_matrix グラデーション変換行列 / Gradient transformation matrix
|
|
39
|
+
* @param {number} spread スプレッドモード / Spread mode
|
|
40
|
+
* @param {number} interpolation 補間モード / Interpolation mode
|
|
41
|
+
* @param {number} focal 焦点距離 / Focal point
|
|
42
|
+
* @param {number} viewport_width ビューポート幅 / Viewport width
|
|
43
|
+
* @param {number} viewport_height ビューポート高さ / Viewport height
|
|
44
|
+
* @param {boolean} use_atlas_target アトラスターゲット使用フラグ / Whether to use atlas target
|
|
45
|
+
* @param {boolean} use_stencil_pipeline ステンシルパイプライン使用フラグ / Whether to use stencil pipeline
|
|
46
|
+
* @return {GPUTexture | null} LUTテクスチャまたはnull / LUT texture or null
|
|
47
|
+
*/
|
|
13
48
|
export const execute = (device, render_pass_encoder, buffer_manager, pipeline_manager, vertices, thickness, context_matrix, stroke_style, type, stops, gradient_matrix, spread, interpolation, focal, viewport_width, viewport_height, use_atlas_target, use_stencil_pipeline) => {
|
|
14
49
|
// グラデーションストローク用メッシュを生成(4 floats/vertex: position + bezier)
|
|
15
50
|
const mesh = meshGradientStrokeGenerateUseCase(vertices, thickness);
|
|
@@ -3,4 +3,16 @@ import type { BufferManager } from "../../BufferManager";
|
|
|
3
3
|
import type { FrameBufferManager } from "../../FrameBufferManager";
|
|
4
4
|
import type { TextureManager } from "../../TextureManager";
|
|
5
5
|
import type { PipelineManager } from "../../Shader/PipelineManager";
|
|
6
|
-
|
|
6
|
+
/**
|
|
7
|
+
* @description 複雑なブレンドモードキューを処理する
|
|
8
|
+
* Processes the complex blend mode queue
|
|
9
|
+
* @param {GPUDevice} device GPUデバイス / GPU device
|
|
10
|
+
* @param {GPUCommandEncoder} command_encoder コマンドエンコーダ / Command encoder
|
|
11
|
+
* @param {IAttachmentObject | null} main_attachment メインアタッチメント / Main attachment
|
|
12
|
+
* @param {FrameBufferManager} frame_buffer_manager フレームバッファマネージャ / Frame buffer manager
|
|
13
|
+
* @param {TextureManager} texture_manager テクスチャマネージャ / Texture manager
|
|
14
|
+
* @param {PipelineManager} pipeline_manager パイプラインマネージャ / Pipeline manager
|
|
15
|
+
* @param {BufferManager} buffer_manager バッファマネージャ / Buffer manager
|
|
16
|
+
* @return {void}
|
|
17
|
+
*/
|
|
18
|
+
export declare const execute: (device: GPUDevice, command_encoder: GPUCommandEncoder, main_attachment: IAttachmentObject | null, frame_buffer_manager: FrameBufferManager, texture_manager: TextureManager, pipeline_manager: PipelineManager, buffer_manager: BufferManager) => void;
|