#rend3 #imgui #wgpu #3d #3d-graphics #graphics

rend3-imgui

rend3渲染库的Imgui渲染例程

1个不稳定版本

0.3.0 2022年2月12日

#86 in 渲染引擎

MIT OR Apache-2.0 OR Zlib

265KB
5.5K SLoC

rend3

GitHub Workflow Status Crates.io Documentation License Matrix Matrix Discord

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

库处于积极开发中。虽然内部结构可能会在未来发生变化,但外部API保持稳定,随着新功能的添加,只有少量更改发生。

示例

请参阅示例以了解如何开始使用API。示例将展示如何使用核心库和辅助库。

屏幕截图

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

scifi-base example bistro emerald-square

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

核心

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

扩展

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

  • 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 第5代
  • Apple A13 = iPhone 11, iPad 第9代

用途

rend3试图满足以下用例

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

rend3不是

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

未来计划

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

Matrix聊天室

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

Matrix Matrix

如果你更喜欢discord,我们的元项目有一个频道,与matrix房间类似。

Discord

帮忙

我们欢迎所有贡献和想法。如果你想参与或为此库提供想法,我们非常乐意听取!

许可:MIT OR Apache-2.0 OR Zlib

依赖项

~26–38MB
~643K SLoC