← 블로그 목록

[Core2026] Fill Gradient - Conic Seam AA

Core2026 › Issue

@Nor-s
  • #ThorVG
  • #Core
목차

1. Conic Gradient와 seam AA

원본 _conicT: 110도에서 출발한 샘플과 LUT 포인터가 함께 움직이고 350도에서 375도로 seam을 넘어 index를 되감는 영상
0:00
  • Conic wrap: 각도에서 이미 [0, 1)로 들어오므로 일반 spread의 범위 밖 처리와 구별
static inline float _conicT(const SwFill* fill, float rx, float ry)
{
    auto t = atan2f(ry, rx) * (0.5f / MATH_PI) + fill->conic.offset;
    return t - floorf(t);
}

// fillConic(..., SwBlenderA op, uint8_t a)
for (uint32_t i = 0; i < len; ++i, ++dst) {
    *dst = op(_pixel(fill, _conicT(fill, rx, ry)), *dst, a);
    rx += conic->a11;
    ry += conic->a21;
}

1.1. seam AA 품질

1.2. AA가 필요한 구간만 남기기

원본 _conicPixel: NORMAL AA NO AA 첫 사례의 전체 경로를 추적하고 48개 픽셀을 순회해 surface에 Conic Gradient를 완성
0:00

Conic Anti-Aliasing

각도와 회전을 바꾸며 경계의 픽셀 처리 결과를 비교하세요.

직접 조작