Donner SVG 0.8.0-pre
SVG editor and embeddable C⁠+⁠+⁠20 engine.
Loading...
Searching...
No Matches
donner::geode::GeodeMaskPipeline Class Reference

Caches a compiled render pipeline for the path-clip mask shader (shaders/slug_mask.wgsl) plus its bind-group layout. More...

#include "donner/svg/renderer/geode/GeodePipeline.h"

Public Member Functions

 GeodeMaskPipeline (GeodeWgpuAdapterDevice &adapterDevice)
 Create a Slug mask pipeline for the given device.
 GeodeMaskPipeline (const GeodeMaskPipeline &)=delete
GeodeMaskPipelineoperator= (const GeodeMaskPipeline &)=delete
 GeodeMaskPipeline (GeodeMaskPipeline &&) noexcept=default
GeodeMaskPipelineoperator= (GeodeMaskPipeline &&) noexcept=default
const gpu::RenderPipelinepipeline () const
 The compiled render pipeline.
const gpu::BindGroupLayoutbindGroupLayout () const
 The bind group layout used by the pipeline.
gpu::TextureFormat colorFormat () const
 The color format the pipeline targets. Always RGBA8Unorm.

Detailed Description

Caches a compiled render pipeline for the path-clip mask shader (shaders/slug_mask.wgsl) plus its bind-group layout.

The mask pipeline is a stripped-down sibling of GeodePipeline - it reuses the same vertex shader and band/curve storage SSBOs. The fragment stage replicates scalar analytic coverage into an RGBA8Unorm color attachment. The resulting mask texture is then sampled by GeodePipeline and GeodeGradientPipeline as a clip coverage multiplier.

The bind group layout is:

  • binding 0: uniform buffer (mvp, viewport, fillRule).
  • binding 1: storage buffer (read-only) - Band[].
  • binding 2: storage buffer (read-only) - curve data (flat f32[]).
  • bindings 3 and 4: nested clip-mask texture + sampler.
  • bindings 5 and 6: vertical Band[] and canonical curve data.
  • bindings 7 and 8: horizontal and vertical dense band grids.
  • bindings 9 and 10: horizontal and vertical curve-reference indexes.

Multiple paths belonging to a single clip layer are unioned on the hardware side via BlendOperation::Max.

Constructor & Destructor Documentation

◆ GeodeMaskPipeline()

donner::geode::GeodeMaskPipeline::GeodeMaskPipeline ( GeodeWgpuAdapterDevice & adapterDevice)
explicit

Create a Slug mask pipeline for the given device.

Renders into a single-sampled RGBA8Unorm texture.


The documentation for this class was generated from the following file: