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 在 游戏开发
每月12,690次下载
在 bevy_fsl_box_frame 中使用
43KB
794 行
Bevy Polyline
Bevy的高性能实例折线渲染
https://user-images.githubusercontent.com/2632925/164312056-2812d46c-6111-40b8-bbb2-087f7ee9afb2.mp4
关于
Bevy Polyline 是一个针对 Bevy 引擎 的插件,它添加了 Polyline
的实例渲染功能。此插件由 Foresight Mining Software Corporation 赞助其创建和维护。特别感谢 mtsr 为此插件进行的初始实现。
实现
Bevy Polyline 与 Bevy 中 Mesh
的渲染方式非常相似。它在内部通过向 GPU 传递一个包含仅线段端点的最小实例缓冲区来工作,然后在顶点着色器中完全确定所有顶点位置,使得三角形围绕其纵向轴旋转以面向相机。着色器代码基于 Rye Terrell 的这篇优秀教程。
用法
请参阅 minimal
示例以了解基本用法。
变换
Polyline
通过 GlobalTransform
尊重定位,因此您可以直接定位它们或通过使用 Transform
层次结构。
PolylineMaterial
目前,定制 Polyline
的主要方式是更改 PolylineMaterial
,如上所述,它具有 width
、color
和 perspective
字段。在非透视模式下,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 是免费和开源的!本存储库中的所有代码都根据您选择的双许可协议
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
- Apache 许可证,版本 2.0 (LICENSE-APACHE 或 http://apache.ac.cn/licenses/LICENSE-2.0)
在您的选择下。这意味着您可以选择您喜欢的许可证!这种双许可方法在 Rust 生态系统中的确是事实上的标准,并且包含这两个许可证都有很好的理由。
除非您明确表示,否则根据 Apache-2.0 许可证定义,您提交的任何有意包含在作品中的贡献都应按照上述方式双许可,不附加任何额外的条款或条件。
依赖关系
~35–72MB
~1.5M SLoC