战 争 雷 霆 中 的 海 洋 模 拟 和 渲 染 Tim Tcheblokov, NVIDIA
战 争 雷 霆 地 面 战 和 空 战 模 拟 游 戏 坦 克 模 式 拥 有 射 击 游 戏 一 样 的 细 节 可 分 辨 特 性 精 细 到 2-3 厘 米
战 争 雷 霆 地 面 战 和 空 战 模 拟 游 戏 被 坦 克 摧 毁, 轰 炸 机 的 反 击! 空 战 模 式 拥 有 飞 行 模 拟 器 的 细 节 视 野 范 围 高 达 160 公 里 可 分 辨 特 性 高 达 数 公 里
战 争 雷 霆 免 费 大 型 多 人 在 线 游 戏 与 付 费 游 戏 不 同, 玩 家 只 有 在 喜 欢 这 个 游 戏 后 才 会 消 费 需 要 在 任 何 客 户 端 上 流 畅 运 行, 并 且 效 果 出 众
战 争 雷 霆 可 扩 展 性 是 关 键 DX11, DX9, GL, GLES, PS4 Windows, Linux, Mobile, Mac 及 其 它 主 机 平 台 从 烤 面 包 机 到 Titan 显 卡
战 争 雷 霆 引 擎 永 远 都 需 要 提 升 新 的 效 果 性 能 优 化 水 面 技 术 进 展 缓 慢 我 们 需 要 新 的 水 面 技 术!
战 争 雷 霆 新 的 水 面 技 术 所 面 临 的 挑 战 逼 真 的 效 果 爆 炸, 尾 流, 海 岸, 河 流 和 湖 泊 高 性 能 的 模 拟 和 渲 染 游 戏 内 置 全 套 物 理 模 拟 可 适 用 于 每 一 位 用 户 的 硬 件 能 力 接 受 挑 战
海 洋 模 拟 经 典 方 法 Jerry Tessendorf 的 论 文 : Simulating Ocean Water ifft 基 于 经 验 模 型 : Phillips 谱 在 频 域 中 进 行 模 拟, 通 过 FFT 反 向 转 换 到 空 域 结 果 存 储 到 纹 理 中 R, G, B = Dx, Dy, Dz
海 洋 模 拟 经 典 方 法 近 看 较 自 然 远 看 会 出 现 重 复 可 以 增 大 FFT 尺 寸, 但 是 大 尺 寸 FFT 开 销 巨 大
海 洋 模 拟 基 于 多 级 叠 加 的 方 法 将 谱 分 为 4 个 层 级 在 频 域 中 进 行 4 次 模 拟, 然 后 转 换 到 空 域 ifft 1 公 里 输 出 一 组 纹 理 5 米 叠 加 各 层 级 结 果 得 到 最 终 结 果
海 洋 模 拟 基 于 多 级 叠 加 的 方 法 高 动 态 范 围 的 波 长 近 距 离 观 察 有 更 多 细 节 远 距 离 观 察 时 极 少 重 复
海 洋 的 模 拟 和 渲 染 基 于 多 级 叠 加 的 方 法 逐 渐 淡 出 在 远 距 离 处 逐 渐 排 除 层 级 叠 加 层 级 0 层 级 0+1 层 级 0+1+2 层 级 0+1+2+3 噪 点 更 少 GPU 的 计 算 量 更 少
海 洋 的 模 拟 和 渲 染 基 本 泡 沫 模 拟 Jerry Tessendorf 建 议 : 使 用 雅 各 比 变 换 来 产 生 位 移 信 息 J > 1 J > 0.3 J < 0.3 J < 0 J > 1: 拉 伸 J < 1: 挤 压 J < 0: 重 叠 出 现 破 浪! 我 们 使 用 J < M M ~ 0.3.. 0.5
海 洋 的 模 拟 基 本 泡 沫 模 拟 通 过 saturate(k*(-j+m)) 来 混 合 泡 沫 纹 理 破 浪 区 域 看 起 来 效 果 更 好 泡 沫 却 不 见 了!
海 洋 的 模 拟 和 渲 染 高 级 泡 沫 模 拟 破 浪 将 湍 流 能 量 注 入 到 层 级 中 能 量 在 空 间 中 随 着 时 间 逐 渐 消 散 随 着 时 间 消 散 ( 指 数 型 逐 渐 消 失 ) 随 着 时 间 消 散 + 在 空 间 中 消 散 ( 模 糊 ) 使 用 PS 为 每 一 个 层 级 进 行 模 拟 将 结 果 结 合 在 一 起
海 洋 的 模 拟 和 渲 染 高 级 泡 沫 模 拟 泡 沫 的 模 拟 结 果, 使 用 颜 色 表 示 : 破 浪 区 域 湍 流 能 量 表 面 拉 伸 拉 伸 对 泡 沫 层 非 常 重 要 : 拉 伸 变 薄 挤 压 变 厚
海 洋 的 模 拟 和 渲 染 高 级 泡 沫 模 拟 及 渲 染 湍 流 能 量 = 泡 沫 强 度 通 过 能 量 和 拉 伸 来 混 合 泡 沫 纹 理 在 破 浪 区 域 添 加 密 集 的 泡 沫 效 果
海 洋 的 模 拟 和 渲 染 高 级 泡 沫 模 拟 及 渲 染 湍 流 能 量 = 泡 沫 强 度.. 别 忘 了 把 气 泡 混 合 进 去! 水 下 泡 沫 的 颜 色 体 现 在 折 射 颜 色 中, 按 能 量 来 混 合 乳 白 色
海 洋 的 模 拟 和 渲 染 海 洋 表 面 网 格 使 用 视 锥 体 定 义 的 四 叉 树 运 行 时 快 速 创 建 每 个 结 点 是 规 则 的 顶 点 网 格 + 边 界 处 用 条 带 无 缝 连 接 预 先 计 算 的 VB/IB, indexed triangle lists
海 洋 的 模 拟 和 渲 染 海 洋 表 面 网 格 使 用 视 锥 体 定 义 的 四 叉 树 好 的 LOD 平 衡 : 近 距 离 时 较 密 集 远 距 离 时 较 稀 疏 LOD 会 产 生 突 变!
海 洋 的 模 拟 和 渲 染 海 洋 表 面 网 格 网 格 过 渡 在 不 同 网 格 LOD 之 间 平 滑 过 渡 在 VS 中 完 成 使 用 曲 面 细 分 技 术 更 方 便! 使 用 曲 面 细 分 不 用 曲 面 细 分
海 洋 的 模 拟 和 渲 染 海 洋 表 面 网 格 网 格 过 渡 处 理 后 的 效 果 : 平 滑 过 渡 自 动 调 整 的 LOD 可 对 每 个 客 户 端 调 整 网 格 密 度
海 洋 的 模 拟 和 渲 染 海 岸 交 互 自 然 现 象 : 近 岸 水 波 出 现 在 浅 水 区 基 本 与 海 岸 线 相 平 行 可 用 距 离 场 进 行 描 述!
海 洋 的 模 拟 和 渲 染 海 岸 交 互 距 离 场 将 海 岸 距 离 作 为 水 波 的 相 位 值 在 GPU 上, 距 离 场 通 过 加 载 4k*4k 的 纹 理 来 描 述 65km*65km 大 小 的 世 界 RGBA8 纹 理 : R: 深 度 G: 海 岸 距 离 B,A: 距 离 场 的 梯 度 水 深 距 离
海 洋 的 模 拟 和 渲 染 海 岸 交 互 河 流 和 湖 泊 : 地 表 对 风 和 海 浪 形 成 障 碍 没 有 近 岸 水 波 没 有 海 浪
海 洋 的 模 拟 和 渲 染 海 岸 交 互 岛 屿 : 风 向 地 表 对 风 和 海 浪 形 成 障 碍 物 较 小 的 近 岸 水 波 较 小 的 海 浪 下 风 区 域
海 洋 的 模 拟 和 渲 染 海 岸 交 互 地 表 对 水 波 的 阻 碍 作 用 有 多 大? 在 一 定 方 向 范 围 内 采 样 1 ( 表 示 地 表 ) 0 ( 表 示 水 域 ) 总 和 -> [0..1] 值 大 的 纹 素 -> 模 糊 风 向
海 洋 的 模 拟 和 渲 染 水 面 和 海 岸 的 互 相 交 互 下 风 向 纹 理 一 种 测 量 开 放 度 的 方 法 更 小 的 海 浪 / 近 岸 水 波 在 河 流 和 湖 泊 中 没 有 海 浪 / 近 岸 水 波! 河 流 和 湖 泊 自 动 获 取 适 当 的 开 放 度 数 值
海 洋 的 模 拟 和 渲 染 海 岸 交 互 Gerstner 波 波 向 A = 特 征 波 幅 ω, 从 A 导 出 的 角 速 度 法 线 由 解 析 法 算 出 泡 沫 使 用 锯 齿 波
海 洋 的 模 拟 和 渲 染 海 岸 交 互 Gerstner 波 A = 特 征 波 幅 ω, 从 A 导 出 的 角 速 度 法 线 由 解 析 法 算 出 泡 沫 使 用 锯 齿 波
海 洋 的 模 拟 和 渲 染 海 岸 交 互 近 岸 水 波 按 水 深 缩 放 波 峰 向 前 倾 斜 来 自 海 床 的 牵 引 力
海 洋 的 模 拟 和 渲 染 海 岸 交 互 近 岸 水 波 按 水 深 缩 放 波 峰 向 前 倾 斜 来 自 海 床 的 牵 引 力 沿 海 洋 -> 海 岸 方 向 对 位 移 和 法 线 进 行 插 值
海 洋 的 模 拟 和 渲 染 海 岸 交 互 去 除 水 波 的 规 整 性 添 加 噪 音 应 用 群 速 度 ( 相 速 度 / 2)
海 洋 的 模 拟 和 渲 染 海 岸 交 互 去 除 水 波 的 规 整 性 添 加 噪 音 应 用 群 速 度 ( 相 速 度 / 2)
海 洋 的 模 拟 和 渲 染 海 岸 交 互 地 表 着 色 沙 滩 变 得 潮 湿 且 反 光 水 和 泡 沫 被 击 退
海 洋 的 模 拟 和 渲 染 海 岸 交 互 远 视 角 观 察
海 洋 的 模 拟 和 渲 染 渲 染 性 能 性 能 <-> 图 形 质 量 的 调 整 近 景 中 景 远 景 位 移 及 法 线 所 有 层 级 部 分 层 级 最 大 层 级 水 面 网 格 高 密 度 网 格 低 密 度 网 格 平 面 四 边 形 折 射 扭 曲 效 果 简 单 效 果 无 反 射 扭 曲 效 果 模 糊 模 糊 海 岸 交 互 全 开 全 开 法 线 + 泡 沫 尾 浪 及 水 花 全 开 只 计 算 法 线 只 计 算 法 线 散 射 光 有 有 无
海 面 模 拟 与 游 戏 物 理 的 结 合 物 理 模 拟 面 临 的 挑 战 从 高 端 的 PC 到 烤 面 包 机, 尽 可 能 快 : WaveWorks: CUDA, DC 和 CPU 模 拟 Gaijin: 对 一 些 其 它 平 台 的 GPU 也 提 供 了 支 持 每 一 个 玩 家 都 需 要 相 同 的 物 理 模 拟 结 果 物 理 水 面 位 移 vs 图 形 水 面 位 移 与 游 戏 世 界 交 互 将 水 面 位 移 值 反 馈 给 船 只 和 水 上 飞 机
海 面 模 拟 与 游 戏 物 理 的 结 合 游 戏 内 物 理 的 模 拟 物 理 模 拟 运 行 于 CPU 上 保 证 每 个 玩 家 有 相 同 的 物 理 模 拟 服 务 器 + 每 一 个 客 户 端 固 定 时 长, 48 次 / 秒 为 图 形 而 进 行 的 模 拟 运 行 于 CPU 或 GPU 上 尽 可 能 使 用 GPU 仅 在 客 户 端 上 模 拟 每 帧 时 长 可 变
海 洋 模 拟 游 戏 内 物 理 的 模 拟 大 尺 寸 FFT 对 CPU 而 言 极 其 费 时! 512x512 256x256 128x128 降 低 频 谱 尺 寸 物 理 : 128x128 图 形 : 128x128.. 512*512 非 常 接 近! 3m 波 幅 下 差 异 < 5 cm
海 面 模 拟 与 游 戏 物 理 的 结 合 游 戏 内 物 理 的 模 拟 战 争 雷 霆 是 一 个 在 线 游 戏 客 户 端 -> 服 务 器 延 时 达 到 500 毫 秒 在 服 务 器 端, 最 差 情 况 下 需 用 高 达 24 步 来 重 新 模 拟 正 常 的 情 况 下 需 要 0 到 2 步 来 重 新 模 拟 导 致 最 高 2 倍 的 计 算 量 服 务 器 -> 客 户 端 延 时 达 到 1500 毫 秒 在 客 户 端, 最 差 情 况 下 需 用 高 达 72 步 来 进 行 重 新 模 拟 正 常 的 情 况 下 需 要 0 到 5 步 来 重 新 模 拟 导 致 最 高 5 倍 的 工 作 量 重 新 模 拟 海 洋 表 面 非 常 的 昂 贵!
海 面 模 拟 与 游 戏 物 理 的 结 合 游 戏 内 物 理 的 模 拟 对 模 拟 结 果 进 行 缓 存 模 拟 一 次, 保 存 结 果 当 需 要 先 前 的 结 果 时, 可 重 新 读 回 将 模 拟 结 果 存 放 到 数 组 中 (2D 水 面 位 移 数 组 ) N( 片 ) * 4( 层 级 )*128x128(FFT 尺 寸 )*3(dx,dy,dz) 每 一 片 需 要 ~800 kb 最 大 延 时 = 1.5 秒, 48 次 / 秒 -> 72 切 片 -> ~57MB 可 以 去 除 小 波 浪 的 层 级 可 以 半 速 进 行 物 理 模 拟
海 面 模 拟 与 游 戏 物 理 的 结 合 为 游 戏 内 置 物 理 提 供 数 值 反 馈 为 船 只 和 漂 浮 物 提 供 水 面 高 度 值 反 馈 从 所 有 的 层 级 得 到 位 移, 求 和 后 返 回 给 应 用 程 序 在 CPU 端 完 成 少 量 的 回 读 + 一 点 数 学 运 算 = 真 实 可 信 的 船 只 运 动 不 适 用 于 向 水 中 投 射 物 体!
海 面 模 拟 与 游 戏 物 理 的 结 合 射 线 求 交 投 射 物 需 要 做 射 线 / 表 面 的 相 交 测 试 投 射 物 与 水 的 碰 撞 通 过 射 线 求 交 来 完 成 需 要 沿 射 线 对 水 体 进 行 追 踪 这 比 数 值 反 馈 更 费 时 可 能 出 现 无 穷 次 迭 代 当 前 误 差 < 阀 值 ( 比 如 5 cm) 时, 退 出 迭 代 或 步 数 > 预 设 值 N 时, 退 出 迭 代 每 一 步 追 踪 也 不 是 一 个 简 单 的 反 馈 过 程!
海 面 模 拟 与 游 戏 物 理 的 结 合 射 线 求 交 追 踪 水 体 Position += direction * (current_y - water_y) start = (x0,y0,x0) step 1 step 2 step 3 4 5 intersection = (x5,y5,z5)?
海 面 模 拟 与 游 戏 物 理 的 结 合 射 线 求 交 假 设 位 移 是 局 部 线 性 的 在 一 个 猜 测 点 x,z 处 采 样 读 取 猜 测 点 的 位 移 值, 然 后 根 据 x,z 的 偏 移 量 将 猜 测 点 往 回 移 动 反 馈 在 海 面 平 均 猜 高 测 度 点 上 的 点 (y=0) dy (dx,dz) 重 复 N 次. 4 步 足 够 了! 水 面 垂 直 位 移 =? (dx,dy,dz)
海 面 模 拟 与 游 戏 物 理 的 结 合 射 线 求 交 假 设 位 移 是 局 部 线 性 的 在 一 个 猜 测 点 x,z 处 采 样 读 取 猜 测 点 的 位 移 值, 然 后 根 据 x,z 的 偏 移 量 将 猜 测 点 往 回 移 动 重 复 N 次. 4 步 足 够 了! 猜 (dx2,dz2) 测 点 2 (-dx,-dz) 反 馈 2 (dx2,dy2,dz2)
海 面 模 拟 与 游 戏 物 理 的 结 合 射 线 求 交 假 设 位 移 是 局 部 线 性 的 在 一 个 猜 测 点 x,z 处 采 样 读 取 猜 测 点 的 位 移 值, 然 后 根 据 x,z 的 偏 移 量 将 猜 测 点 往 回 移 动 重 复 N 次. 4 步 足 够 了! (-dx2,-dz2) 反 馈 3 猜 测 点 3 dy3 (dx3,dy3,dz3)
海 面 模 拟 与 游 戏 物 理 的 结 合 射 线 求 交 结 果 计 算 量 不 小, 但 是 只 有 少 数 飞 行 中 的 投 射 物 需 要 射 线 求 交 在 每 秒 进 行 48 次 模 拟 的 频 率 下, 最 多 支 持 ~2000 个 飞 行 中 投 射 物
已 集 成 至 战 争 雷 霆 中 尚 未 公 开 WaveWorks 发 行 版 中 包 含 演 示 及 示 例 程 序
已 集 成 至 战 争 雷 霆 中 尚 未 公 开 WaveWorks 发 行 版 中 包 含 演 示 及 示 例 程 序 : 海 洋 模 拟 渲 染 几 何 过 渡 海 岸 交 互 射 线 求 交 数 值 反 馈
演 示 D3D11 WaveWorks 示 例 程 序 Android 测 试 程 序
谢 谢! 问 答 时 间 Tim Tcheblokov, NVIDIA