Donner SVG 0.8.0
0.8.0 ยท ebf353960.8.0 main
SVG editor and embeddable C⁠+⁠+⁠20 engine.
Loading...
Searching...
No Matches
SolidFill.h File Reference

The complete solid-fill (Slug analytic dual-ray) pipeline program as shader IR. More...

Include dependency graph for SolidFill.h:

Namespaces

namespace  donner
 Top-level Donner namespace, which is split into different sub-namespaces such as donner::svg and donner::css.

Functions

ShaderResult< IrModule > donner::gpu::shader::programs::BuildSolidFillModule ()
 Builds the native solid-fill IR module with the analytic dual-ray coverage rules used by donner/gpu/shader/programs/SlugFillSource.h.

Detailed Description

The complete solid-fill (Slug analytic dual-ray) pipeline program as shader IR.

Function Documentation

◆ BuildSolidFillModule()

ShaderResult< IrModule > donner::gpu::shader::programs::BuildSolidFillModule ( )

Builds the native solid-fill IR module with the analytic dual-ray coverage rules used by donner/gpu/shader/programs/SlugFillSource.h.

Native adapter contracts define the 352-byte Uniforms struct, Band (32 bytes), InstanceTransform (32 bytes), and 12 bindings at group 0. The module includes the kNoBand sentinel constant, the vs_main vertex stage (per-instance matrix construction, the convex bounding fan expanded from vertex_index, and its per-edge half-pixel dilation with both AABB fallbacks), and the fs_main fragment stage (dense band-grid lookup, accumulateHoriz/accumulateVert analytic ray coverage with owns_axis_sample and the Citardauq-form solve_quadratic, calc_coverage blending, bounded NonZero interval integration with exact-tie grouping and paired legacy fallback, EvenOdd folding, convex clip-polygon planes, clip-mask coverage, and the solid premultiplied color and repeat-tiled pattern paint paths).

Entry points are named vs_main / fs_main; struct-typed WGSL stage IO is flattened to annotated parameters/outputs with identical locations and builtins, and .rgba swizzles are transliterated to .xyzw. The Metal and Vulkan solid-fill tests compare their renders against the renderer's literal_fill_solid golden, so behavior-affecting constructs must remain semantically identical.