笔记+作业
分析光线追踪、路径追踪、光线投射、光线步进在游戏中有哪些技术应用
光线追踪是相对于光栅化的概念,光栅化的过程是全局信息丢失的过程,从模型到顶点到离散化成像素。对于光线追踪,从相机出发,朝每个像素发射一条射线,和场景中的第一个物体相交,在交点处可以根据物体的材质、光源属性和光照模型计算交点的颜色。
应用场景:
①全局光照(GI)
光栅化难以解决光会弹射多次的问题,也就无法处理间接光。而全局光照是直接光照加间接光照的结果,要模拟真实世界的光照表现,就要实现全局光照,也就需要光线追踪。
②预计算和预烘焙(其实感觉也是GI的一部分)
UE4里的预烘焙Ao用的就是基于RayTracing的全局Ao,相较于SSAO需要用深度去进行可见性的近似,预烘焙Ao从着色点出发,沿着法线半球的随机方向发射,用光线追踪可以精确的得知该点的可见性。
软阴影也是同理,从着色点出发,沿着光线方向去做可见性测试。还有反射的计算,不同于需要深度图和屏幕空间限制的SSR,RayTracing反射可以精确的拿到碰撞点和碰撞点的颜色。
光线追踪是相对于光栅化来说的,是解决渲染问题的一个思路和流程,而路径追踪是一种具体的光线追踪的方法。路径追踪的理论基础是渲染方程。对于某点的入射光线,可能是经过另一点反射过后的出射光线,因此解渲染方程的过程是一个不断递归的过程。但当随机打出的光线过多后,场景的光线会呈指数级增长,因此每次只随机打出一条光线,这样计算光照的问题就转化为对整个场景进行路径采样,然后对每条路径的贡献值进行平均求和的蒙特卡洛积分运算(多次采样近似结果),用俄罗斯轮盘赌的思想停止递归。
应用场景:
①路径追踪算是一种具体的光线追踪的方法?)一般配合降噪来实现RayTracing的一些技术。
此外双向路径追踪同时从光源和视角出发进行PathTracing,应用于当光源面积较小时的全局光照计算。
光线投射从视线出发,穿过三维物体,物体的每一个体素都储存着所需要的信息,隔一段固定距离就停下来采样,利用插值计算出采样点的信息,之后,按照固定信息对光线上的采样点进行信息的合成,计算出光线对于屏幕上像素的颜色值。
应用场景:
①体绘制技术:医学CT图等(虽然不算游戏 但说不定要模拟呢 233)
体绘制技术是由离散的三维数据场生成二维图像。
可视化人体数据内部信息。
RayMarching指从某个指定点出发,沿着指定方向,按指定步长前进。
应用场景
①陡峭视差贴图
陡峭视差贴图相较于视差贴图来说,有着更精确的表现,最重要的原因就在于对于视线偏移值有相对更准确的近似。陡峭视差贴图将整个高度划分为n层,从着色点沿着视线方向出发,每步行进1/n个距离,当行进到的高度第一次超过了高度图里的高度,说明该点的高度为最合适的uv偏移量。
②SDF阴影
从某个着色点出发,朝光源方向做RayMarching,(如果之间有碰撞则证明完全处在阴影区),因为SDF知道某点离场景中最近点的距离,所以可以每一步行进离场景中最近物体的安全距离,通过离场景中最近点的值和所行进的距离可以计算出安全角的大小,根据安全角可以实现平滑的软阴影。
SDF引入安全角的概念,安全角越大,证明遮蔽率就越小,就越可视。
③屏幕空间技术:SSR
SSR是需要从着色点出发,朝着反射方向去做RayMarching,当行进的深度超过深度图里的深度,则判断碰撞,采样该碰撞点的颜色作为该着色点的颜色。
④RayMarching体积/体积云的绘制
同样是从相机出发做RayMarching,给定一个内范围return值配合Noise等就可以完成体积云的绘制。