探索未来渲染:NVIDIA DevTech的Donut框架
donut项目地址:https://gitcode.com/gh_mirrors/donut2/donut
项目介绍
Donut是由NVIDIA DevTech开发的一款实时渲染框架,旨在为原型渲染器和代码示例提供可重用且扩展性良好的渲染通道集合。它的设计目标不是成为一款游戏引擎,而是专注于场景加载、组件图维护以及一系列先进的渲染技术。
Donut源自VRWorks Multi-Projection SDK,并在此基础上不断演进和发展,曾经用于构建Asteroids演示、DLSS SDK和RTXDI SDK等项目。
项目技术分析
Donut采用C++ 17编写,支持Windows和Linux(包括x64和ARM64)平台,依赖于CMake 3.10进行构建。它与多种库集成,如cgltf用于加载glTF场景,JsonCpp处理JSON文件,stb用于读写纹理和图像。此外,还支持NVRHI、ImGUI和glfw进行渲染,TaskFlow进行多线程处理,以及其他可选功能如tinyexr、LZ4和miniz。
Donut由四个主要子系统组成:
- donut_core 提供基础功能,包括数学计算、虚拟文件系统、日志记录和JSON工具。
- donut_engine 实现场景导入与管理、动画、材料、纹理缓存等功能。
- donut_render 包含一系列渲染通道,如前向着色、延迟着色、Temporal AA等。
- donut_app 则是一个用于创建交互式应用的框架,包含了图形设备管理和UI绑定。
所有图形API的交互都通过NVRHI抽象层完成,支持Vulkan 1.2、Direct3D 12和Direct3D 11。
应用场景
Donut适用于对高质量实时渲染有需求的应用,例如:
- 虚拟现实和增强现实体验的原型开发
- 渲染引擎的研究与测试
- 高级视觉效果的演示制作
- 教育或培训中的图形模拟环境
项目特点
- 跨平台:Donut可在Windows和Linux上运行,支持x64和ARM64架构。
- 强大的渲染通道:提供了包括向前/延迟着色、Tempora AA、SSAO、阴影映射等多种高级渲染技术。
- 灵活的API支持:通过NVRHI抽象层,可以轻松切换不同的图形API,如Vulkan、DX12和DX11。
- glTF 2.0 支持:能够导入和处理glTF模型,支持多种扩展标准,包括光照和材质定义。
- 自定义场景布局:支持自己的JSON格式来组合和扩展glTF模型,添加灯光、摄像机和动画。
- 源码开放:遵循MIT许可证,允许自由使用和修改。
Donut不仅是NVIDIA技术的结晶,也是一个开放创新的平台,对于开发者来说,它是探索现代图形技术的理想工具。无论你是研究人员还是软件工程师,Donut都能助你一臂之力,让你在实时渲染领域走得更远。现在就开始使用Donut,开启你的渲染之旅吧!