#rend3 #3d-graphics #gltf #3d #graphics #wgpu #3d-model

rend3-gltf

rend3渲染库的gltf场景和模型加载器

9个不稳定版本 (3个重大变更)

0.3.0 2022年2月12日
0.2.0 2021年10月9日
0.1.0 2021年9月11日
0.0.6 2021年8月22日
0.0.5 2021年3月11日

#56 in 渲染引擎

Download history 3/week @ 2024-03-14 1/week @ 2024-03-21 13/week @ 2024-03-28 7/week @ 2024-04-04 3/week @ 2024-05-23 7/week @ 2024-05-30

每月72次下载
用于 2 crates

MIT OR Apache-2.0 OR Zlib

560KB
12K SLoC

Rust 10K SLoC // 0.0% comments WebGPU Shader Language 1.5K SLoC // 0.0% comments GLSL 1K SLoC // 0.0% comments

rend3

GitHub Workflow Status Crates.io Documentation License Matrix Matrix Discord

基于wgpu的简单易用、可定制、高效的3D渲染库。

库处于积极开发中。虽然内部结构可能会在未来发生变化,但外部API保持稳定,仅在添加新功能时进行小的更改。

示例

查看示例以了解如何使用API。示例将展示如何使用核心库和辅助crates。

截图

这些截图来自场景查看器示例。

scifi-base example bistro emerald-square

crates

rend3生态系统由几个核心crates组成,这些crates为库提供了大多数功能性和扩展性,以及扩展crates和集成crates。

核心

  • rend3:核心crates。处理所有世界数据,提供Renderer和RenderGraph,并定义词汇类型。
  • rend3-routine:在RenderGraph之上实现各种“渲染例程”。还提供了可重用的图形工作。提供PBR渲染、天空盒、阴影渲染和色调映射。

扩展

有一些扩展crates不是必需的,但提供了我推荐使用的一些有用的代码片段。

  • rend3-framework:极大地简化了跨平台正确处理窗口和表面的工作。
  • rend3-gltf:模块化的gltf文件和场景加载器。

集成

还提供了与其他外部库的集成。由于外部依赖项,这些库的版本可能会以远高于整个生态系统的速度增加。

  • rend3-egui:与egui即时模式GUI集成。
  • rend3-imgui:与 imgui 立即模式 GUI 的集成。

功能和平台支持

rend3 支持两种不同的渲染配置,一个用于速度,一个用于兼容性。

配置特性

现代配置不仅将更多工作卸载到 GPU 上,还能进行更激进的性能优化,包括仅绘制所需的三角形。

配置 纹理访问 对象剔除 三角形剔除 绘制调用
GPU 驱动 无绑定 在 GPU 上 在 GPU 上 合并间接
CPU 驱动 已绑定 在 CPU 上 实例直接

配置支持

以下表格显示了各种 API/平台对各种配置的支持。这可能会帮助您判断您的目标受众支持哪些配置。

操作系统 API GPU GPU 驱动 CPU 驱动
Windows 7+ Vulkan AMD / NVIDIA
Vulkan Intel 6XXX+
Dx11 Intel 2XXX+ 🚧
Windows 10+ Dx12 Intel 6XXX+ / AMD GCN 2+ / NVIDIA 6XX+ 🚧
MacOS 10.13+ iOS 11+ Metal Intel / Apple A13+ / M1+
Apple A9+
Linux Vulkan Intel 6XXX+ / AMD GCN 2+ / NVIDIA 6XX+
Intel 4XXX+
Android Vulkan 所有

脚注

  • ✅ 支持
  • 🚧 进行中
  • ❌ 不支持
  • — 使用现代配置
  • Intel 6XXX = Skylake
  • Intel 4XXX = Haswell
  • Intel 2XXX = Sandy Bridge
  • AMD GCN 2 = Rx 200+, RX 5000+
  • Apple A9 = iPhone 6S, iPad 5th Gen
  • Apple A13 = iPhone 11, iPad 9th Gen

目的

rend3 旨在满足以下用例

  1. 需要可定制且高效的渲染器的游戏和可视化。
  2. 只需在屏幕上放置对象,但想要光照和效果的工程项目。
  3. 大型机器中的一个小齿轮:一个不会干扰程序其他部分的渲染器。

rend3 不是

  1. 一个框架或引擎。它不包含制作高级游戏或模拟所需的所有部分,也不关心您如何结构程序。如果您需要一个处理窗口和事件循环管理的非常基础的框架,rend3-framework 可以帮助您。这将始终是可选的,只是在那里帮助它在能帮助的有限情况下提供帮助。

未来计划

我对这个库有宏伟的计划。概述可以在问题跟踪器下的 增强 标签下找到。

Matrix 聊天室

我们有一个 matrix 聊天室,如果您想讨论使用 rend3 或开发它,可以加入。

Matrix Matrix

如果您更喜欢 discord,我们的元项目有一个频道,它反映了 matrix 房间。

Discord

帮忙

我们欢迎所有贡献和想法。如果您想参与或为此库提供想法,我们很乐意听听。

许可证:MIT OR Apache-2.0 OR Zlib

依赖项

~25–38MB
~494K SLoC