实时光线追踪技术:发展近况与未来挑战
当前业界主流的实时光线追踪技术都普遍采用了 混合渲染管线(Hybrid Rendering Pipeline)架构。混合渲染管线能充分利用光栅化(Rasterization),计算着色器(Compute Shader)和光线追踪(Ray Tracing)各自的优势,对于管线的每一个渲染阶段,在光栅化,计算着色器和光线追踪中择优使用。 目前主流的混合渲染管线(Hybrid Rendering Pipeline)架构的渲染流程可以总结为: 延迟着色阶段(光栅化)Deferred Shading (rasterization) 直接阴影阶段(光线追踪或光栅化)Direct shadows (ray trace or rasterization) 光照阶段(计算着色器+光线追踪)Lighting (compute + ray trace) 反射阶段(光线追踪或计算着色器)Reflections(ray trace or compute) 全局光照阶段(计算着色器+光线追踪)Global Illumination (compute and ray trace) 环境光遮蔽阶段(光线追踪或计算着色器) Ambient occlusion (ray trace or compute) 透明与半透明渲染阶段(光线追踪+计算着色器)Transparency & Translucency (ray trace and compute) 后处理阶段(计算着色器)Post processing (compute) 3.2 实时光线追踪:反射渲染 ![]() 众所周知,《战地5》具有非常赞的实时光线追踪反射渲染表现。 ![]() 而业界当前进行实时光线追踪反射的主流思路是,每像素需要多于1条光线才能完全表达基于物理的渲染管线可描述的从粗糙到光滑的材质范围。对于多层材质来说,则会更加复杂。 下图是实时光线追踪反射渲染管线(Real Time Ray Tracing Reflection Pipeline)的图示: ![]() 根据上图,可以将混合光线追踪反射管线的渲染步骤总结为如下六步: Step 1。 通过BRDF重要性采样生成光线,以提供符合材质特性的光线。 Step 2。 通过屏幕空间光线步进(screen-space raymarching)或光线追踪(ray tracing)来完成场景相交运算。 Step 3。 在相交运算找到交点(intersections)之后,便可以重建反射图像。该过程可以就地完成,也可以分别完成,以提高一致性(coherency)。 Step 4。 内核跨像素重用ray hit信息,将图像采样到全分辨率。 Step 5。 为时域累积通道(temporal accumulation pass)计算有用信息 Step 6。 最终,以交叉双边滤波器(cross-bilateral filter)的形式对噪声进行最后的清理 3.3 实时光线追踪:环境光遮蔽 当然,另一种可以很好地迁移到实时光线追踪领域的技术是环境光遮蔽(Ambient Occlusion)。 ![]() Ray Tracing AO可以通过对半球可见度函数的积分,获得更接近Ground Truth的结果,因为采样期间使用的所有随机方向实际上都最终出现在场景中的。 其实,这就是Ray Tracing AO与屏幕空间AO技术(如SSAO)的主要不同点,因为在屏幕空间技术中,光线会出射到屏幕之外或几何体的后方,而此时命中点是不可见的。 在Ray Tracing AO中,可以通过围绕法线进行余弦半球采样来完成运算。光线通常是从G-buffer发出的,miss shader用于找出是否有击中目标。每帧可以发射多于1束光线,但是如果限制了光线的距离,即使每帧只有一条光线,也应该得到一些很好的渐变效果。 不过,可能最终需要过滤和重建,因为Ray Tracing AO可能会有一些噪声。 下图是Ray Tracing AO与SSAO对比,我们可以完全看到光线追踪AO将环境光遮蔽的渲染表现提升到了新的高度。 ![]() ![]() 3.4 实时光线追踪:阴影渲染 阴影渲染显然是光线追踪另一个出彩的领域。 ![]() 上图是基于UE4实时光线追踪渲染的场景,其展示了出色的实时光线追踪阴影表现如何让画面更加真实。 (编辑:应用网_阳江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |