1 个不稳定版本
0.1.0 | 2020 年 10 月 2 日 |
---|
#562 in 图形 API
373 个星标 & 15 个关注者
310KB
6.5K SLoC
包含 (DOS exe, 56KB) tools/SDFGen.exe
Rust & Vulkan 测试项目
包含 Rust & Vulkan 的测试项目和工具。
- rendersdf
- sdf2tilemap
- sdftool
- vbufferbench
rendersdf
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 渲染技术的性能。
安装说明
- 安装 rustup: https://rust-lang.net.cn/tools/install
- 安装 Vulkan SDK: https://vulkan.lunarg.com/sdk/home
- 安装 git LFS: https://git-lfs.github.com/
- 运行(命令行):git lfs install
- 克隆仓库(命令行):git clone https://github.com/sebbbi/rust_test.git
- 重要:ZIP 下载不支持 git LFS!
- 运行(命令行):cargo run --release --bin TEST_NAME
- 如果您想重新编译着色器,运行(命令行):compile_shaders.bat(或 Mac 的 .sh)
如何使用原型
- 开始(命令行):cargo run --release --bin TEST_NAME
- WASD = 飞行
- 拖动鼠标左键 = 旋转相机
- 鼠标滚轮 = 向后/向前跳跃
如何导入新的 SDF(从 .obj 文件)
- 克隆我的 SDFGen 分支:https://github.com/sebbbi/SDFGen
- SDFGen 的这个版本有 16 位二进制输出,与 rust_test 兼容。
- 使用您选择的 C++ 编译器编译项目(使用 x64 目标)
- 运行(命令行):SDFGen.exe your_file.obj 0.125 32(0.125 是体素大小,如果 SDF 分辨率太大,请使用更大的值)
- 将此行替换为 load_sdf("your_file.sdf"): https://github.com/sebbbi/rust_test/blob/main/src/main.rs#L59
许可证
此仓库内容根据 MIT 许可证发布。有关完整文本,请参阅 LICENSE.md。
依赖项
~20MB
~387K SLoC