长久以来“光栅化(rasterization)”一直统治着实时渲染领域,其实并不是说这种渲染方式有多么的好,主要是因为它更便于实现硬件加速。光栅化渲染的基本算法很简单,但是要想达到好的渲染效果,就需要不断打补丁。你想要阴影吗?那你需要一种特殊的算法实现。你想要反射、折射吗?每个都需要一个特殊的方式去实现,更不要提全局照明了。这些不禁让我想起早些年“固定渲染管线”显卡发展到鼎盛的时候,图形程序员不得不调整各种参数添加 Environment Map、Bump Map等等,后来“可编程渲染管线”推出,那些 tricky 的做法都没必要了。而现在 GPU 越来越强大,性能在不断提高,也更具通用计算能力。另一方面 low level 图形 API 的出现也让图形程序员有更多的想象空间去控制 GPU,这一切都在将实时渲染技术推向下一代:Real-time ray tracing。这可是几十年来实时渲染、游戏渲染技术领域最大的进步!
NVIDIA 已经在 8 月份的 SIGGRAPH 2018 大会上发布了新的图灵架构 GPU,新一代消费级 GeForce 显卡也已经呼之欲出!新架构的最大亮点无疑是支持 Real-time ray tracing 硬件加速以及使用 AI 技术对光线追踪的计算结果进行降噪!下面这篇文章就主要介绍一下 DirectX Ray Tracing 定义的这个渲染管线长什么样。
DirectX Raytracing(以下简称 DXR )并不是一套全新的 API,而是在 DirectX 12 的一个新的 feature。它主要引入了这么四个新的东西:
- Acceleration Structure
- 一个新的 Command List 方法:DispatchRays ,它用来了启动 Ray Tracing 的渲染流程;
- 一系列在 Ray Tracing Pipeline 过程中的 Shader 类型:
- Ray generation shader
- Intersection shader
- Miss shader
- Closest-hit shader <