Vulkan Real-Time Ray Tracing

本文会介绍使用Vulkan来实现实时光线追踪的过程。

Vulkan是一个低开销、跨平台的二维、三维图形与计算的API,比起OpenGL更加底层,更加底层意味着可以优化性能表现的地方更多,可以提供较高的性能表现。

光线追踪(英语:ray tracing)是三维计算机图形学中的特殊渲染算法,追踪光线从来源开始照射到物体上,再由物体反射的光线“路径”,由于完整运算所有路径十分消耗运算资源,因此现有光线追踪技术仅运算“目所能及”的光线路径。

实时光线追踪(Real-Time Ray Tracing)原理上与光线追踪没有区别,而是使用了硬件加速、减少采样量、步进长度来减少计算量,最后可以达到实时水平(每秒可以绘制多帧画面)。细节可以参考高质量实时渲染:实时光线追踪

图1是实时光追在 Wolfenstein: Youngblood 中的应用对比。

图1 (左侧没有开启反射 右侧开启光线追踪的反射)

技术路线

1 学习vulkan

过程: 通过学习https://vulkan-tutorial.com/https://vkguide.dev/ 来初步掌握Vulkan的基本概念
https://github.com/yufeiran/LearnVulkan

2 搭建一个可以渲染多个物体的小框架

https://github.com/yufeiran/miniVulkanRender
Vulkan:用dynamic uniform绘制多个物体

3 开始学习Ray Tracing

准备学习一些tutorial:NVIDIA Vulkan Ray Tracing Tutorials,然后自己实现一个小的光线追踪框架
同时学习gltf格式:https://github.khronos.org/glTF-Tutorials/gltfTutorial/

硬件加速光线追踪原理解析

我对显卡如何实现硬件加速光追的细节比较感兴趣,查了一些资料,整理成ppt:

CSIG竞赛相关材料

比赛链接

DemoVideo

0:00
/

文档

渲染器实现

在完成竞赛后,我也自行实现了一个自己的渲染器 https://github.com/yufeiran/miniVulkanRenderer2

参考链接

原理

高质量实时渲染:实时光线追踪
深入GPU硬件架构及运行机制

tutorial

RayTracingInVulkan
NVIDIA Vulkan Ray Tracing Tutorials

AMD 硬件加速光追原理

https://zhuanlan.zhihu.com/p/337151778