k067 A real-time refraction renderer for volume objects using a polygon-rendering scheme

Zhangwenniu 于 2025-03-19 发布

论文重点与难点

1. 重点

2. 难点

论文详细讲解

研究背景

论文提出了一种名为 pVRT(per Vertex Ray Tracing) 的方法,用于实时折射渲染。传统图形硬件在实时生成逼真的全局光照和环境效果方面存在困难,尤其是处理反射和折射时。现有的多边形渲染技术无法准确处理全局光照特性,如阴影投射和环境映射。pVRT 方法旨在解决这一问题,通过结合光线追踪和多边形渲染技术,实现实时的折射效果。

pVRT 方法概述

pVRT 方法包含两个主要阶段:预处理阶段渲染阶段

  1. 预处理阶段
    • 目标:计算光线穿过透明物体后的方向和目标点。
    • 方法:使用光线追踪技术,为每个透明物体的每个顶点计算两个参数:
      • $P$:光线的出发点。
      • $D$:光线在 $P$ 点的折射方向。
    • 优化:通过空间细分(ray space subdivision)和特殊条件(如只计算正面朝向的多边形)减少计算量。
  2. 渲染阶段
    • 目标:利用预处理阶段计算的参数,从图像缓冲区中获取折射颜色。
    • 方法:使用深度近似算法计算折射光线在图像缓冲区中的交点地址。具体公式如下: \(P' = P + D \times P_z\) 其中,$P_z$ 是 $P$ 点的深度值,$P’$ 是折射光线在图像缓冲区中的交点地址。
    • 深度修正:通过多步近似算法修正深度值误差,确保折射效果的准确性。

硬件实现

pVRT 方法完全基于硬件实现,利用了 PeM2 多媒体处理器的浮点运算模块(FAM)进行预处理阶段的计算,并在渲染硬件中实现了折射映射模块。

  1. 预处理阶段的硬件实现
    • 使用 PeM2 的 32 个处理单元(PE)进行并行计算。
    • 通过流水线处理提高效率。
    • 使用空间细分技术减少目标多边形数量,提高计算速度。
  2. 渲染阶段的硬件实现
    • 折射映射模块支持三级深度近似,能够高效计算折射光线的交点地址。
    • 模块包括三个部分:
      • 计算折射地址。
      • 计算透明度衰减。
      • 计算菲涅尔系数(Fresnel coefficient)。
    • 使用 32 位精度存储深度值,确保计算精度。

性能评估

  1. 预处理阶段
    • 通过软件模拟,预处理阶段的平均计算速度为 458,907 多边形/秒(241,530 顶点/秒),满足实时渲染的要求(30 帧/秒)。
    • 使用空间细分技术后,所有测试对象(如大钢琴、玫瑰、南瓜和苹果)的处理时间均在 30 帧/秒以内。
  2. 渲染阶段
    • 渲染阶段的性能为每个时钟周期生成一个着色和折射映射的像素。
    • 通过硬件实现,渲染阶段的性能不会因读取、修改和写入操作而降低。

实验结果

论文通过软件模拟展示了 pVRT 方法的效果,包括以下两个场景:

  1. 杯子和蓝色液体:展示了不同折射率的物体(杯子和液体)以及不透明物体(棍子)的折射效果。
  2. 带凹凸效果的折射板:展示了结合凹凸映射的折射效果,通过修改折射映射的地址来实现凹凸效果。

结论

pVRT 方法通过预处理阶段的光线追踪和渲染阶段的深度近似算法,实现了高效的实时折射渲染。该方法完全基于硬件实现,性能评估表明其能够满足实时渲染的要求。pVRT 方法适用于 3D 游戏和混合现实应用,能够生成与光线追踪器相媲美的逼真折射图像。

论文方法部分详细讲解

pVRT 方法概述

pVRT(per Vertex Ray Tracing)方法是一种实时折射渲染技术,旨在通过结合多边形渲染和光线追踪技术,实现高效且高质量的折射效果。该方法分为两个主要阶段:预处理阶段渲染阶段

预处理阶段

预处理阶段的目标是为每个透明物体的每个顶点计算光线的方向和目标点。具体步骤如下:

  1. 计算光线方向和目标点
    • 对于每个透明物体的每个顶点,使用光线追踪方法计算两个参数:
      • $P$:光线的出发点(即光线离开透明物体的点)。
      • $D$:光线在点 $P$ 处的折射方向。
    • 这两个参数将用于后续渲染阶段的折射颜色计算。
  2. 空间细分优化
    • 为减少光线与物体相交计算的次数,采用空间细分技术。将物体周围的三维空间划分为多个子空间(体素),光线在每个子空间内搜索与物体的交点。
    • 使用 ray-box intersection algorithm(光线与体素相交算法)来快速确定光线在子空间中的路径,并减少目标多边形的数量。
  3. 特殊条件优化
    • 仅计算满足特定条件的多边形,以进一步减少计算量:
      • 光线的起始点满足条件 $N \cdot V = 0$,即仅计算正面朝向的多边形。
      • 检索点满足条件 $N_s \cdot N_d = 0$,即两个测试的法线在深度坐标上必须符号相反。

渲染阶段

渲染阶段的目标是利用预处理阶段计算的参数,从图像缓冲区中获取折射颜色。具体步骤如下:

  1. 计算折射光线的交点地址
    • 使用预处理阶段计算的参数 $P$ 和 $D$,结合深度缓冲区中的深度值 $P_z$,计算折射光线在图像缓冲区中的交点地址 $P’$: \(P' = P + D \times P_z\)
    • 为修正深度值误差,采用多步近似算法(类似于牛顿法)逐步逼近实际交点。
  2. 深度近似算法
    • 由于透视变换的影响,直接计算的深度值可能不准确。通过多步近似算法逐步修正深度值,确保折射光线目标点的计算精度。
    • 具体实现中,使用以下公式进行深度修正: \(P'_x = \alpha_x + \beta_x \times z_f \\ P'_y = \alpha_y + \beta_y \times z_f\) 其中,$z_f$ 是深度缓冲区中的深度值,$\alpha_x, \alpha_y, \beta_x, \beta_y$ 是通过插值得到的参数。
  3. 着色模型
    • 考虑透明度衰减和菲涅尔系数(Fresnel coefficient),计算折射和反射的着色效果: \(I = F_T \times (H \cdot L) \times G_T \times t_T + F_R \times (H \cdot L) \times G_R \times t_R\) 其中,$F_T$ 和 $F_R$ 分别是折射和反射的菲涅尔系数,$G_T$ 和 $G_R$ 是透明度衰减系数,$t_T$ 和 $t_R$ 是路径长度。

复杂场景处理

对于包含多个折射率不同的物体(如杯子和液体)的复杂场景,pVRT 方法通过以下步骤处理:

  1. 预处理阶段
    • 分别计算光线在不同物体中的折射路径。例如,对于杯子和液体,分别计算光线在杯子内表面、液体和杯子外表面的折射。
    • 根据渲染顺序,确定光线的起始点和终止点(虚拟出口点)。
  2. 渲染阶段
    • 按照从内到外的顺序渲染多边形,通过线性距离插值合成不同材料的折射效果。

硬件实现

pVRT 方法完全基于硬件实现,利用 PeM2 多媒体处理器的浮点运算模块(FAM)进行预处理阶段的计算,并在渲染硬件中实现折射映射模块。

  1. 预处理阶段的硬件实现
    • 使用 PeM2 的 32 个处理单元(PE)进行并行计算,每个 PE 包含多个浮点运算单元(FPU)。
    • 采用流水线处理技术,将预处理过程安排为流水线操作,提高计算效率。
  2. 渲染阶段的硬件实现
    • 折射映射模块支持三级深度近似,能够高效计算折射光线的交点地址。
    • 模块包括三个部分:
      • 计算折射地址。
      • 计算透明度衰减。
      • 计算菲涅尔系数。

通过上述方法,pVRT 方法能够在实时渲染中生成高质量的折射效果,适用于各种多边形基体积物体。

评论