Luz 引擎
我正在开发的 Vulkan 引擎,用于学习和实现 AAA 游戏中使用的现代渲染技术。
功能特性
- 完整的 Vulkan 封装(包括 BLAS 和 TLAS 创建)
- 三种体积光实现方式:Froxels、Polygonon 网格和屏幕空间
- 时间抗锯齿
- 阴影贴图
- 大气散射
- 场景序列化(JSON)
- 延迟渲染
- 实时光线追踪阴影和环境遮蔽
- PBR 着色,支持金属度、粗糙度、法线、环境遮蔽和自发光
- Vulkan 无绑定资源
- 视口摄像机,支持透视和正交投影,以及飞行和环绕控制
- ImGui 停靠式用户界面
图集
- 基于 Froxel 的体积光
- 多边形网格体积光
- 屏幕空间体积光
- 延迟渲染(光照、反照率、法线、材质、自发光和深度)
- 光线追踪阴影和环境光遮蔽

- PBR 着色和 glTF 模型

- 纹理拖放

需求
- 支持 VK_KHR_ray_query 扩展的 GPU(支持的 GPU 列表)
- C++17 编译器。已在 `
Visual Studio 2019、Clang和GCC上测试 - CMake 3.7 或更高版本
- Vulkan SDK
Linux 平台
该项目使用 GLFW 库,若在带 X11 的 Linux(如默认的 Ubuntu 20.04)下编译,需要:
sudo apt-get install xorg-dev
如果您使用的是其他窗口管理器(如 Wayland),您可以在此处查看依赖项。构建与运行
git clone --recursive https://github.com/hadryansalles/Luz
cd Luz
mkdir build
cmake . -Bbuild
cmake --build build --parallel 4
./bin/Luz
- Visual Studio:打开
build/Luz.sln并编译/运行项目Luz`。
参考文献与致谢
- GLFW 用于打开应用程序窗口
- glm 用作数学库
- ImGui 用于制作用户界面
- ImGuizmo 用于创建3D小工具
- spdlog 用作日志库
- stb_image 用于加载图像文件
- tiny_obj_loader 用于加载Wavefront .obj文件
- optick 用于引擎性能分析
- pbr-sky 用作大气天空模型参考