基于 Rust + Vulkan 1.3+ 的实时渲染引擎,覆盖从 RHI、RenderGraph 到光线追踪应用层的完整链路。
- 光线追踪:支持 Cornell Box 与 Sponza 等典型场景
- RenderGraph:按 pass 添加顺序录制,并基于 image 声明自动同步
- Slang 工具链:自动编译 shader 并生成 Rust 绑定
- Bindless 渲染:统一资源访问模型,降低绑定切换开销
- ImGui 集成:便于实时调试和参数调整
- C++ FFI 资产加载:通过 Assimp 支持 FBX / glTF / OBJ 等格式
- Rust 1.75+
- Vulkan SDK 1.3+
- CMake 3.20+
- Visual Studio 2019+(Windows)
# 1) 拉取资源与工具
cargo run --bin fetch_res
# 2) 构建 C++ 模块
cargo run --bin cxx-build
# 3) 编译 Shader(运行渲染程序前必须执行)
cargo run --bin shader-build
# 4) 构建 Workspace
cargo build --allcargo run --bin triangle
cargo run --bin rt-cornell
cargo run --bin rt-sponza
cargo run --bin shader-toy- 平台入口:
truvis-winit-app通过WinitApp::run_app(...)启动渲染线程 - App 适配:demo state 实现
RenderAppHooks,由truvis-frame-runtime::RenderAppShell包装成 render loop 需要的RenderApp - 帧骨架:
truvis-frame-runtime::RenderAppShell持有RenderBackend与输入事件队列,负责input -> update -> plugin update -> prepare -> render -> present固定顺序 - Plugin 组合:demo state 通过
RenderAppHooks::visit_plugins_mut声明标准生命周期 Plugin 顺序;GUI 与渲染管线的特有能力通过具体类型方法暴露 - 渲染后端:
truvis-render-backend::RenderBackend聚焦 backend 执行与 GPU 数据上传 - swapchain 重建:渲染线程通过
RenderApp::recreate_swapchain_if_needed触发,RenderAppShell在实际重建后通知 demo state 并批量调用 Plugin resize
- 架构总览:
ARCHITECTURE.md - AI 协作规则:
AGENTS.md - 模块说明:各关键目录下
README.md(如engine/、engine/crates/、engine/shader/)
使用 HashGrid 缓存 diffuse 表面的光照信息,提升全局光照阶段的复用效率。
支持剖切体与填充面的效果渲染。
在光追路径中按材质类型重排执行,提高线程一致性与缓存命中率。


