1 个不稳定版本

0.1.0 2020 年 10 月 2 日

#562 in 图形 API

373 个星标 & 15 个关注者

310KB
6.5K SLoC

Rust 5.5K SLoC // 0.0% comments · Rust 包仓库 GLSL 1K SLoC // 0.0% comments · Rust 包仓库 Batch 26 SLoC · Rust 包仓库 Shell 19 SLoC · Rust 包仓库

包含 (DOS exe, 56KB) tools/SDFGen.exe

Rust & Vulkan 测试项目

包含 Rust & Vulkan 的测试项目和工具。

  • rendersdf
  • sdf2tilemap
  • sdftool
  • vbufferbench

rendersdf

Screenshot

SDF 渲染测试项目 (rendersdf) 渲染 100 万个立方体,每个立方体包含一个 950 MB(未压缩)的距离场体积。它使用优化的立方体渲染器,仅渲染每个立方体的前表面。

一个改进版本正在使用稀疏八叉树存储距离场体积的层次结构,每个距离场体积砖块都作为立方体进行光栅化。这将减少 SDF 体积内存消耗 98%,并使运行时更快,因为大多数未击中对象的射线根本不会被发射,剩余的射线将非常接近表面。

SDF 渲染器使用了一个 GPU 驱动的剔除解决方案,类似于我们在 SIGGRAPH 2015 上展示的解决方案(Media Molecule Dreams 和 UE5 Nanite 也使用了类似的剔除):https://advances.realtimerendering.com/s2015/aaltonenhaar_siggraph2015_combined_final_footer_220dpi.pdf

将在这个原型基础上测试各种优化技术。

待办事项

  • 保守深度输出
  • SDF 处理的命令行工具(sdf.rs 功能)
  • 稀疏 SDF 测试项目
  • 多个 SDF 体积(对于稀疏 SDF 实现起来很容易)

vbufferbench

一个简单的基准工具,用于比较不同 V-buffer 三角形-id 渲染技术的性能。

安装说明

如何使用原型

  • 开始(命令行):cargo run --release --bin TEST_NAME
  • WASD = 飞行
  • 拖动鼠标左键 = 旋转相机
  • 鼠标滚轮 = 向后/向前跳跃

如何导入新的 SDF(从 .obj 文件)

许可证

此仓库内容根据 MIT 许可证发布。有关完整文本,请参阅 LICENSE.md

依赖项

~20MB
~387K SLoC