使用 NVIDIA 新技术来提升游戏体验 : Ansel, ShadowPlay Highlights 及 HDR 扩展 冉庆森, 李元亨 开发者技术工程师
摘要 Ansel 简介功能介绍核心功能介绍常见问题和解决方法 ShadowPlay Highlights 简介核心功能介绍使用案例分析
Ansel 简介 为运行在 GeForce 平台上的游戏提供强大的拍照功能 核心功能集成在显卡驱动中 开发者只需集成少量的代码
Ansel 功能介绍 自由视角 滤镜 HDR 截图 超高分辨率截图 360 度截图
https://www.youtube.com/watch?v=pffuwerluom
超高分辨率截图
360 度截图
Ansel 支持的平台 NVIDIA ANSEL SDK UE 4.14+ Unity Plugin Coming soon Gameworks Github
Ansel 架构 Graphics API driver shim Game GeForce Game Profile Ansel core Ansel SDK 驱动层架构 游戏层架构
Ansel 核心概念介绍 Configuration Session Camera Hints ( 可选 )
Configuration
Session Ansel 激活的时间段称之为 Session Session 通常是由玩家主动的打开和关闭
Session 时间线 time 玩家关闭 Ansel Present k+n 触发 stopsessioncallback Render frame k Render frame k+1. Render frame n Render frame n+1 Ansel session Present k-1 Present k 触发 startsessioncallback 玩家摁下 ALT+F2 打开 Ansel
Camera
Ansel 集成过程中常见问题 双鼠标光标截图中包含有 粉刺 截图中充满了 鬼影 和部分后处理效果的兼容性问题
双鼠标光标游戏必须在 Ansel 激活期间隐藏所有 UI
TAA 引起的 粉刺
FOV 错误引起的 鬼影
Motion Blur 引起的模糊
正确使用 Vignette 普通截图 ( 开启 vignette) 高分辨率截图 ( 关闭 vignette) + 使用 Ansel 过滤器中的 vignette
THE WITCHER 3: WILD HUNT 200,000 ANSEL WORKS OF ART
WATCH DOGS 2 It's a joy to witness what our players can create with Ansel and how easily it allows for high-quality, professional results! FLORIN SANDA, UBISOFT PRODUCER Photo by Treebsquire
WAR THUNDER When you see that Nvidia Ansel is added to the game. Life is complete. MOTOR_STORM, WAR THUNDER GAMER Photo by Vachtar
SHADOWPLAY 录制并分享您超棒的游戏时刻 200M videos per year 2x year over year growth
ShadowPlay Highlights
设计初衷 便利性玩家忙着打游戏, 没工夫思考何时摁下快捷键开始录屏 游戏能够自动的为玩家录屏? 如果玩家打算分享截图或者视频, 玩家希望非常简单 智能化对于长达 2 个小时的录屏, 玩家不想浪费时间去寻找最精彩的部分 游戏能够只录制最精彩的时刻并且展示给玩家?
设计方法 使用 GeForce Experience 的录屏技术 当游戏中精彩的事件发生时, 游戏通知 GeForce Experience 保存特定部分的游戏内容为视频或者截图 使用 GeForce Experience 的 Overlay 游戏比赛结束后, 游戏可以通过 GeForce Experience 显示所有已录制的 Highlights 供玩家查看和分享
主要特性 游戏自定义不同类型的 Highlights 通过 GFE 图库查看已录制的 Highlights 通过游戏 UI 查看或者跳过已录制的 Highlights 自定义 Highlights 使用的硬盘空间录制时不影响游戏的 FPS 只需要非常少的系统资源
配置 ( 用户 ) 视频 ( 游戏 ) 截图 ( 游戏 ) 查看 ( 游戏 ) 分享 ( 用户 ) Video 配置 Highlights 配置 Notifications 配置 4K 60 FPS H.264 不会影响到游戏性 4K PNG images 不会影响到游戏性 In-game overlay 查看, 剪辑, 上传 Facebook YouTube Imgur 更多...
ShadowPlay Highlights 架构 Share Overlay Game Recording GFE Client SDK 驱动层架构 游戏层架构
API NVGSDK_Create NVGSDK_Highlights_Configure NVGSDK_Highlights_StartSession NVGSDK_Highlights_SetScreenshotHighlight NVGSDK_Highlights_SetVideoHighlight NVGSDK_Highlights_StopSession NVGSDK_Highlights_OpenSessionSummary NVGSDK_Release // Construct the main SDK interface. // Provide a list of possible highlight types to GFE // Begin a session which groups several highlights together // Captures a screenshot highlight of given type for current session // Captures a video highlight of given type for current session // Stop a session which groups several moments together // Ask GFE to display summary for all highlights in the last session // Release the main SDK interface
使用示例 GAME 游戏比赛开始 玩家杀死 5 个敌人 游戏触发一段时的间 Highlights 游戏比赛结束 玩家点击 Highlights 按钮 游戏继续 GFE SDK (via API) GFE 用户通知 GFE 录制 Pentakills GFE 保存一段时间的视频 用户通过 Overlay 查看录制的 Highlights 用户上传视频到 Facebook
配置 Highlight NVGSDK_Highlights_SetVideoHighlight ( hsdk, 5v5Fight, { kill, startdelta = -4000, enddelta = -1000} ); Video highlight saved to file now - 5000ms now - 4000ms now - 3000 ms now - 2000 ms now - 1000ms now
应用案例分析
为什么游戏应该集成 ShadowPlay Highlights 自动录制最精彩的游戏内容 便捷的分享到社交媒体 游戏不需要额外的修改游戏自定义一些 UI 来快捷的访问 Highlights 同时适用于单人和多人游戏游戏单独开发类似系统需要大量的投资 注册 SDK: https://developer.nvidia.com/shadowplay-highlights
HDR HDR 的现在与未来 色调映射 HDR 显示管线 最佳实践 QA
HDR LDR
HDR 的现在与未来
HDR 的现状 Rendering ToneMapping Encoding Scene HDR LDR Display 显示器最大亮度 200-300 尼特 srgb 标准 :33% 可见色域范围, 最大亮度 80 尼特
新的显示设备 高端专业显示器 Dolby Pulsar (4000 尼特 ), SONY X300 (1000 尼特 OLED) 超高清电视 LG, SONY, Samsung (1000 尼特, 高对比度, 杜比视觉等 ) 新的 HDR 显示器 ACER HDR G-Sync(1000 尼特, 支持 HDR10 标准 )
新 HDR 技术标准 UHD Alliance Premium Certified HDR10,HDR10+ Dolby Vision
新 HDR 技术标准 高亮度范围及对比度 DCI-P3 或 BT. 2020 宽色域色彩空间 10 位及以上色深 SMPTE ST-2084 杜比感知量化电光转换函数 (Dolby Perceptual Quantizer Electro-Optical Transfer Function) SMPTE ST-2094 动态元数据规范 (Dynamic metadata specification)
HDR 的未来 更高的亮度范围 更广的色域 更好的色彩精度更高的分辨率
更高的亮度范围 亮度 : 单位面积上发光强度的度量 动态范围 : 最暗到最亮的跨度范围 人眼的亮度感应范围 10^5 10^6 太阳光 10^8 尼特 金属光泽 10000 尼特 阴影处 1 尼特 * 图片来自互联网亮度单位 : 尼特 (nit), 1 nit = 1 cd / m2
更高的亮度范围 色彩更鲜艳 Hunt Effect 对比度高, 细节多 Stevens Effect 亮的更亮, 暗的更暗 减少了压缩 / 裁剪问题 http://rit-mcsl.org/fairchild/pdfs/appearancelec.pdf
更广的色域 Image credit: W3C Image credit: Sony
更好的色彩精度
更好的色彩精度 [Barten 1999]
更好的色彩精度 srgb
更好的色彩精度 SMPTE ST-2084
色调映射
什么是色调映射 压缩 / 裁剪颜色数据到合适的输出范围内压缩阴影及高亮部分 增加中间色调 (mid-tone) 的对比度 不可逆, 数据已丢失
为什么 HDR 中还需要色调映射? 目前 HDR 显示设备的输出范围仍不足 处理不同设备的亮度输出范围处理 HDR 带来的其他问题
ACES - Academy Color Encoding System 数字后期处理的行业标准 美国电影艺术与科学学会主导 提供端对端的数据处理与存储框架 支持各种不同输出范围的显示设备使用 CTL 语言进行颜色转换 开源, 代码可从 GitHub 上获取
ACES 显示管线
ACES 色调映射
参数化的 ACES 使用英伟达开发参数化的输出设备变换 (ODT) 允许各种参数的调整以适应更广泛的应用 修改中间灰的输出水平修改输入及输出的色调映射范围饱和度调整对比度调整
参数化的 ACES
HDR 显示管线
目前较实际的 HDR 实现方案 场景制作仍在 srgb 空间下进行使用基于物理的渲染得到高质量的 HDR 数据后处理及色彩校准在色调映射之前 (scene referred) 进行使用衍生自 ACES 的色调映射方案使用 scrgb FP16 格式的的 BackBuffer UI 像往常一样, 在 ToneMapping 之后
HDR 逻辑管线
使用 NVAPI 打开 HDR 扩展 NvAPI_Disp_HdrColorControl Mastering data: Display Primaries White Point Max/Min Master Max CLL Max FALL
最佳实践
渲染 使用基于物理的渲染 高光不应该亮过光源本身 * 图片来自虚幻引擎 4 SunTemple 示例场景
色调映射 Tone Mapper 要能适配不同的亮度输出范围 中间灰应被映射到一个合理的亮度水平 80 尼特 8 尼特 <1 尼特
UI UI 可能看起来比预想中的要昏暗 半透明的 UI 在混合时可能直接被高亮的场景 穿透 * 图片来自虚幻引擎 4 SunTemple 示例场景
了解更多 英伟达 HDR 白皮书 https://developer.nvidia.com/sites/default/files/akamai/game works/hdr/uhdcolorforgames.pdf 英伟达 HDR 扩展示例程序 https://developer.nvidia.com/hdr-display-sample 英伟达 HDR 扩展已经集成到 UE4 https://github.com/ehartnv/unrealengine_hdr