#render #3d #graphics #vector

barg

图形用户界面工具包 & 3D 图形渲染器

5 个不稳定版本

0.2.0 2019 年 8 月 2 日
0.1.0 2019 年 7 月 7 日
0.0.3 2018 年 12 月 10 日
0.0.2 2018 年 12 月 8 日
0.0.1 2018 年 11 月 26 日

#1052 in 图形 API

每月 27 次下载

MIT / BSL-1.0

63KB
450

Barg

图形用户界面工具包 & 3D 图形渲染器。

命名

名称是 "bar"(如 "foo bar baz qux" 中的 "bar")和 "g"(如 "graphics" 中的 "g")的组合。叫起来也很有趣,因为 "BARG!!!" 听起来像 "ARGH!!!!"。

未来想法

像 Vulkan、Metal 和 OpenGL 这样的 API 在处理某些事物(如抗锯齿(通常通过多采样 "解决"))和如何制作完美的球体(实际上并不可能)方面存在困难。

这个渲染器将会有很多基于 CPU 的函数调用,所以不需要 GPU - 但如果你安装了 vulkan,将使用计算着色器来加快速度。为了 更快,将使用 SIMD!希望 SIMD + CPU 渲染的 Vulkan 计算能够与正常 GPU 渲染一样快(或者至少接近)。

支持 3D 曲线不仅可以使某些事物(尤其是生物,如植物和人)看起来更好,还可以减少绘制具有曲线的模型所需的内存中存储的顶点数量。

另一个将得到改进的因素是颜色混合,以及如何进行混合以及使其看起来准确。对于混合效果,将根据线性 sRGB 对 HSV 进行插值。

更多未来想法

渲染是逐面进行的。因此,一个立方体将有 6 次绘制调用(每个面一次),但当然至少有 3 个面将被裁剪。球体需要 4 次绘制调用/ 4 个面,这些面将是 3D 面而不是立方体。

将按逆序进行 Alpha 混合。无论最近的面是哪个,都会首先绘制。Alpha 值将存储在我们要渲染的表面上。如果是 255,则像素将被裁剪。如果是其他值,则面将在当前渲染缓冲区中的面之后混合。

功能

  • 渲染 2D 图形
  • 渲染文本

待办事项

  • 渲染 3D 图形
  • 渲染 GUI 元素/小部件

Cala

此 crate 是 cala 项目的组成部分。

依赖关系

约 5MB
~73K SLoC