slughorn — GPU 矢量图形

Lobsters Hottest 工具

摘要

slughorn 是一个现代 C++20 GPU 矢量图形库,实现 Slug 渲染技术,支持从 SVG、FreeType、Skia 等导入,或通过 Canvas API 直接绘制,并上传至 OpenGL、Vulkan、WebGPU、DirectX 等后端,在构建时一次性完成栅格化以减少运行时开销。

<p><a href="https://lobste.rs/s/en7rby/slughorn_gpu_vector_graphics">评论</a></p>
查看原文
查看缓存全文

缓存时间: 2026/10/28 01:55

# slughorn — GPU 矢量图形 Source: https://slughorn.io/ slughorn (https://slughorn.io/index.html) - 文档 (https://slughorn.io/#resources) - 示例 (https://slughorn.io/#examples) - GitHub ↗ (https://github.com/AlphaPixel/slughorn) slughorn ## GPU 矢量图形,*重新定义\.* 一个采用现代 C\+\+20 编写的库,实现了 Slug GPU 矢量图形技术。支持导入 SVG、FreeType、Blend2D、Cairo、Skia —— ***也可以直接使用 slughorn 原生 Canvas API 创作图形*** —— 然后上传至 OpenGL、Vulkan、WebGPU、DirectX 等多种后端。 ## 文档与链接 ## 你需要的一切 ```python import slughorn # 创建一个图集(GPU 纹理后备存储) atlas = slughorn.Atlas(2048) canvas = slughorn.canvas.Canvas(atlas) # 构建分层复合图形 canvas.begin_composite() # 深色背景填充 canvas.rect(0.0, 0.0, 1.0, 1.0) canvas.fill(slughorn.Color(0.12, 0.12, 0.14, 1.0), 1.0) # 金色渐变圆角面板 canvas.rounded_rect(0.06, 0.06, 0.94, 0.94, 0.09) gradient = canvas.create_linear_gradient(0.0, 0.0, 1.0, 1.0, [ slughorn.GradientStop(0.0, slughorn.Color(0.55, 0.31, 0.02, 1.0)), slughorn.GradientStop(1.0, slughorn.Color(1.00, 0.85, 0.35, 1.0)), ]) canvas.fill_gradient(gradient, 1.0) # 镂空圆形(反向缠绕方向) canvas.arc(0.5, 0.5, 0.28, 0.0, 2.0 * math.pi, True) canvas.fill() canvas.finalize() # 构建 → 纹理就绪,可供 GPU 上传 atlas.build() curve_tex = atlas.curve_texture # RGBA32F band_tex = atlas.band_texture # RGBA16UI ``` ```cpp #include <slughorn/slughorn.hpp> // Atlas 是 GPU 纹理后备存储 slughorn::Atlas atlas(2048); slughorn::canvas::Canvas canvas(atlas); // 双色标金色渐变 auto gradient = canvas.createLinearGradient( 0_cv, 0_cv, 1_cv, 1_cv, { slughorn::GradientStop{0_cv, {0.55_cv, 0.31_cv, 0.02_cv, 1_cv}}, slughorn::GradientStop{1_cv, {1_cv, 0.85_cv, 0.35_cv, 1_cv}} } ); // 构建分层复合图形 canvas.beginComposite(); // 深色背景填充 canvas.rect(0_cv, 0_cv, 1_cv, 1_cv); canvas.fill({0.12_cv, 0.12_cv, 0.14_cv, 1_cv}, 1_cv); // 金色渐变圆角面板 canvas.roundedRect(0.06_cv, 0.06_cv, 0.94_cv, 0.94_cv, 0.09_cv); canvas.fillGradient(gradient, 1_cv); // 镂空圆形(反向缠绕方向) canvas.arc(0.5_cv, 0.5_cv, 0.28_cv, 0_cv, 2_cv * slughorn::PI_CV, true); canvas.fill(); canvas.finalize(); // 构建 → 纹理就绪,可供 GPU 上传 atlas.build(); const auto& curveTex = atlas.getCurveTextureData(); // RGBA32F const auto& bandTex = atlas.getBandTextureData(); // RGBA16UI ``` Canvas API 镜像了大家熟悉的浏览器 `<canvas>` 元素。复合图形将填充、描边和渐变堆叠进一个可供 GPU 上传的单一图集中,**运行时零细分开销** —— 重活在构建阶段一次性完成,让 GPU 管线保持简洁高效。

相似文章

SDF vs. MSDF vs. Slug:GPU 文字渲染

Hacker News Top

AlphaPixel 发布了 Slughorn,这是对 Eric Lengyel 提出的 Slug GPU 文字渲染技术的 C++20 实现(于 2026 年 3 月奉献至公有领域),并对比了 SDF、MSDF、纹理图集与 Slug 这几种方案,以在 GPU 上以任意缩放级别渲染清晰的矢量字形。

vgpu

Product Hunt

vgpu 是一个针对 WebGPU 的 TypeScript 库,具有类型化着色器导入、一个轻量级的 GPU 优先 API,并兼容浏览器、无头 Node 和测试环境。

编写一个无绑定GPU抽象层

Hacker News Top

一位开发者分享了他们实现的无绑定GPU抽象层Loon GPU,它基于Vulkan 1.3和Metal 4,灵感来自Sebastian Aaltonen的《No Graphics API》博客文章。该库使用GPU指针、顶点拉取和无绑定纹理堆来简化现代图形API。