RayTracingInAction[1/3]--overview

在这里插入图片描述

距离这个置顶图上线的gdc18已经过去两年了,raytracing在多个产品中逐渐开始落地,有比较轻量级的
战地的反射,cod的shadow,也有在地铁中的GlobalIllumination方案。
很高兴看到业界逐渐开始在这些方面落地,目前nvidia的raytracing方面进展蛮好,基于amd的gpu的两代console上也是有raytracing的支持,not bad。

raytracing vs rasterization

nvidia自家视频里提到说raytracing是图形方面自2002以来最大的技术飞跃,略显夸张,但也是有道理的。
raytracing就是按照光线真正传播的方式来渲染场景,这样可以避免掉大量的rasterization的局限性。
目前的turing gpu上把raytracing的能力硬件化,进而可以让这个过程可以做到实时,我们也可以大量的应用。
在最新版的directx12 raytracing中,这里的RayTracing求交可以inline到各个shader里,so:
习惯于rasterization下编程的程序员,可以在大量地方去thinking/programming in raytracing了。

nvidia的raytracing

目前nvidia的raytracing进展较好,资料和应用也多。
nvidia是专门有硬件rt core来做raytracing的加速,对场景专门建的BVH(bounding volume hierarchy)遍历和求交。
在这里插入图片描述
这块的专门硬件加速,带来raytracing相关的计算速度显著优于我们用compute shader来做的性能。

DirectXRayTracing

微软在directx上对raytracing有了支持。
我们在使用的时候主要有两种方式可以做:

DispatchRay系列

就是专门的发出ray,然后求交
在这里插入图片描述
可以通过这个示意图了解整体:

  • TopLevelAccelerationStructure(TLAS)–加速结构
  • BottomLevelAccelerationStructure(BLAS)–加速结构
  • shader table:包含ray generate shader, hit group(ray hit之后执行的shader), miss shader

这块指令就像dispatch一个compute shader一样,相当于一个专门做ray tracing的事情。

TraceRayInline

这块就是在任何一个shader里都可以调用的一个指令,指令返回intersect的obj的一系列信息。
具体应用中我们可以根据bindless pipeline去取具体texture,shader指令等等来达到和直接DispatchRay中hit shader类似的事情。
这块预计是amd后续硬件会倾向使用的方式了。

RayTracing应用

这里目前几个典型游戏中的应用:

  • reflection : 战地5
  • shadow : cod和坦克世界
  • global illumination : 这里有probe base(e.g. RTXGI)和stochastic base两个,metro exodos是用的stochastic base,也是用的比较好的一个

目前来看,就当前的画面进展来说,对于global illumination的需求是最高的,在reflection和shadow中,虽然做ab对比时候也能看到不同,但是相对于当前的shadow和reflection来说,对于游戏整体提升有限。
一个是现在游戏普遍reflection情况不多,画面还没有进展到必须要physically based reflection有明显区别的那个点,所以对ScreenSpaceReflection+ReflectionVolume在游戏品质上影响较小。
shadow则更是。
全动态的global illumination(indirect diffuse lighting,也带上ao相关)是当前短板比较厉害的地方,而且在游戏中时刻伴随,提升是比较好的。

StochasticBased RayTracingGlobalIllumination难点

在这里插入图片描述
整体上加速结构构建和ray相关,都是比较容易的部分,对于pipeline冲击甚至在taa之下。
就是基于stochastic的方法,在denoise上面是一个比较麻烦的点。
真的是:rt难点不在rt,在乎denoise之间也!

reference

  • https://microsoft.github.io/DirectX-Specs/d3d/Raytracing.html#inline-raytracing
  • https://www.nvidia.com/content/dam/en-zz/Solutions/design-visualization/technologies/turing-architecture/NVIDIA-Turing-Architecture-Whitepaper.pdf
FC(光纤通道)是一种用于存储阵列和服务器之间传输数据的协议。而FC-NVMe(NVMe over FC)是在光纤通道上使用NVMe的组合通道。在FC-NVMe中,SCSI命令被封装在FC帧内,以实现对共享NVMe闪存的访问。对于已经部署了FC SAN基础设施的用户来说,NVMe-over-FC是一种平滑的升级方案。通过升级至最新的HBA Firmware和Driver,用户可以在Linux Kernel中获得对NVMe-over-FC的支持。因此,投资新型的16Gb或32Gb FC HBA和SAN基础设施可以为将来升级到NVMe-over-FC存储阵列做好准备。此外,SCSI和NVMe可以共存于同一个FC网络中,因此,基于FC-SCSI的旧存储和新的NVMe SSD存储可以同时运行。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [[元带你学NVMe协议] 端到端NVMe?| NVMe-OF或FC-NVMe](https://blog.csdn.net/vagrant0407/article/details/130444305)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [高性能算力中心 — NVMe/NVMe-oF — NVMe-oF Overview](https://blog.csdn.net/Jmilk/article/details/125382660)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值