14个版本 (9个破坏性更新)

0.10.0 2024年7月9日
0.8.1 2024年2月24日
0.7.0 2023年7月11日
0.6.0 2023年3月25日
0.1.4 2022年1月26日

#137游戏开发

Download history 275/week @ 2024-04-30 498/week @ 2024-05-07 646/week @ 2024-05-14 210/week @ 2024-05-21 1293/week @ 2024-05-28 1192/week @ 2024-06-04 632/week @ 2024-06-11 1116/week @ 2024-06-18 383/week @ 2024-06-25 917/week @ 2024-07-02 1743/week @ 2024-07-09 1080/week @ 2024-07-16 2446/week @ 2024-07-23 4784/week @ 2024-07-30 1638/week @ 2024-08-06 3729/week @ 2024-08-13

每月12,690次下载
bevy_fsl_box_frame 中使用

MIT/Apache

43KB
794

关于

Bevy Polyline 是一个针对 Bevy 引擎 的插件,它添加了 Polyline 的实例渲染功能。此插件由 Foresight Mining Software Corporation 赞助其创建和维护。特别感谢 mtsr 为此插件进行的初始实现。

实现

Bevy Polyline 与 Bevy 中 Mesh 的渲染方式非常相似。它在内部通过向 GPU 传递一个包含仅线段端点的最小实例缓冲区来工作,然后在顶点着色器中完全确定所有顶点位置,使得三角形围绕其纵向轴旋转以面向相机。着色器代码基于 Rye Terrell 的这篇优秀教程

用法

请参阅 minimal 示例以了解基本用法。

变换

Polyline 通过 GlobalTransform 尊重定位,因此您可以直接定位它们或通过使用 Transform 层次结构。

PolylineMaterial

目前,定制 Polyline 的主要方式是更改 PolylineMaterial,如上所述,它具有 widthcolorperspective 字段。在非透视模式下,width 直接与屏幕像素相关。在 perspective 模式下,width 被除以齐次坐标的 w 分量,这意味着它对应于近平面处的屏幕像素,并且随着距离的增加而逐渐变小。

走样/闪烁

Bevy Polyline 通过实现来自 https://acegikmo.com/shapes/docs/#anti-aliasing 的线条厚度渐变来减少混叠。但如果您的线段非常短,您仍然会看到由小于 1 像素大小的三角形引起的闪烁。这可以通过仅添加最小长度的段来减少。

性能

由于实例化,Bevy Polyline 对每个 PolyLine 只进行一次绘制调用,一个用于线段 和一个用于斜接连接(目前未启用)。我们测试了带有 4096 个段在每一帧更新(除了用于 nbody 模拟的 4 阶 Yoshida 积分器)的 nbody 示例,大约有 500 条线,以 60fps 运行。仍然有一些性能优化的空间,特别是将每个 Polyline 减少到一次绘制调用(取决于连接和帽类型)以及更有效的更新实例缓冲区以更新线条。

Bevy 版本支持

我们打算跟踪 Bevy 的 main 分支。欢迎提供支持此分支的 PR!

bevy bevy_polyline
0.14 0.10
0.13 0.9
0.12 0.8
0.11 0.7
0.10 0.5, 0.6
0.9 0.4
0.8 0.3
0.7 0.2
0.6 0.1

社区支持

如果您想使用此插件并获得一些帮助,您可以在 Bevy Discord 上提问 https://discord.gg/bevy

许可证

bevy_polyline 是免费和开源的!本存储库中的所有代码都根据您选择的双许可协议

在您的选择下。这意味着您可以选择您喜欢的许可证!这种双许可方法在 Rust 生态系统中的确是事实上的标准,并且包含这两个许可证都有很好的理由。

除非您明确表示,否则根据 Apache-2.0 许可证定义,您提交的任何有意包含在作品中的贡献都应按照上述方式双许可,不附加任何额外的条款或条件。

依赖关系

~35–72MB
~1.5M SLoC