甜甜圈示例
本仓库提供了一系列使用 Donut 框架 构建的示例应用程序。
应用程序 | DX11 | DX12 | VK | 描述 |
---|---|---|---|---|
功能演示 | :white_check_mark: | :white_check_mark: | :white_check_mark: | 展示大多数基于光栅化的功能和效果的演示应用程序。 |
基础三角形 | :white_check_mark: | :white_check_mark: | :white_check_mark: | 绘制单个三角形的最基本示例。 |
无绑定光线追踪 | :white_check_mark: | :white_check_mark: | 使用光线追踪渲染场景,从主光线开始,并使用无绑定资源。包括骨骼动画。 | |
无绑定渲染 | :white_check_mark: | :white_check_mark: | 使用无绑定资源渲染场景,以最小化 CPU 开销。 | |
延迟着色 | :white_check_mark: | :white_check_mark: | :white_check_mark: | 将带纹理的立方体绘制到 G-buffer 中,并对其应用延迟着色。 |
无头设备 | :white_check_mark: | :white_check_mark: | :white_check_mark: | 通过加法运算测试无窗口图形设备的操作。 |
网格片 | :white_check_mark: | :white_check_mark: | 使用网格片渲染三角形。 | |
光线追踪粒子 | :white_check_mark: | :white_check_mark: | 在带镜子的环境中使用光线追踪渲染粒子系统。 | |
光线追踪反射 | :white_check_mark: | 光栅化 G-buffer 并渲染基本的光线追踪反射。使用本地根签名访问材质。 | ||
光线追踪阴影 | :white_check_mark: | :white_check_mark: | 光栅化 G-buffer 并渲染基本的光线追踪方向性阴影。 | |
光线追踪三角形 | :white_check_mark: | :white_check_mark: | 使用光线追踪渲染三角形。 | |
着色器特化 | :white_check_mark: | 使用同一着色器的不同特化版本渲染几个三角形。 | ||
多线程渲染 | :white_check_mark: | :white_check_mark: | 使用多个线程(每个面一个)渲染场景的立方体贴图视图。 | |
可变着色 | :white_check_mark: | :white_check_mark: | 使用由纹理指定的可变着色率渲染场景。 | |
顶点缓冲区 | :white_check_mark: | :white_check_mark: | :white_check_mark: | 为立方体创建顶点缓冲区并绘制立方体。 |
工作图 | :white_check_mark: | 通过分块延迟着色渲染器演示新的 D3D12 工作图 API,该渲染器为每个屏幕块动态选择着色器。需要支持着色器模型 6.8 的 DXC。 |
要求
与 Donut 的要求 相同。
构建
-
包含所有子模块克隆仓库:
git clone --recursive <URL>
-
创建构建文件夹。
cd donut_examples && mkdir build && cd build
- 任何名称都可以,但 git 配置为忽略名为 'build*' 的文件夹
- 此文件夹应放在步骤 #1 中由 'git clone' 创建的目录下
-
使用 CMake 配置构建并生成项目文件。
- Linux:
cmake ..
- Windows:建议使用 CMake GUI。确保为生成器选择 x64 平台。
- Linux:
-
在构建文件夹中构建 CMake 生成的解决方案。
- Linux:
make -j8
(8 核 CPU 的示例) - Windows:用 Visual Studio 打开生成的解决方案并构建它。
- Linux:
-
运行示例。它们应该构建在
bin
文件夹中。
命令行
大多数示例支持多种图形 API(在 Windows 上)。它们在同一可执行文件中构建支持所有 API,可以从命令行切换 API。使用以下命令行参数:
-dx11
用于 D3D11-dx12
用于 D3D12(默认)-vk
用于 Vulkan
功能演示支持其他命令行参数:
-debug
启用图形 API 调试层或运行时,以及 NVRHI 验证层。-fullscreen
以全屏模式启动。-no-vsync
启动时不使用垂直同步(可在 GUI 中切换)。-print-graph
在启动时将场景图打印到输出日志中。-width
和-height
设置窗口大小。<文件名>
从给定文件加载任何支持的模型或场景。
许可
Donut Examples 根据 MIT 许可证 授权。