Slide 1

Similar documents
Slide 1

Microsoft Word - VRP物理引擎应用.doc

untitled

幻灯片 1

2 2 3 DLight CPU I/O DLight Oracle Solaris (DTrace) C/C++ Solaris DLight DTrace DLight DLight DLight C C++ Fortran CPU I/O DLight AM

coverage2.ppt

入 指 令 如 : 鍵 盤 鼠 標 多 點 觸 控 重 力 感 應 陀 螺 儀 等 4. 圖 形 用 戶 接 口 掌 握 引 擎 API 中 GUI 與 GUILayout 類 中 方 法 和 變 量 的 使 用, 能 夠 通 過 GUI Skin 為 應 用 的 界 面 定 制 不 同 風 格 主

“2010年全国职业院校技能大赛”高职组

GDC 2005

摘 要 本 校 多 媒 體 設 計 系 與 上 海 戲 劇 學 院 創 意 學 院 在 多 次 聯 繫 交 流 之 下, 已 簽 署 合 作 備 忘 錄, 積 極 尋 求 兩 校 合 作 教 學 與 共 同 創 作 之 機 會 藉 由 本 系 學 生 作 品 腦 殘 公 寓 入 圍 第 五 屆 中

Paratune用户手册

epub83-1

17 Prelight Apply Color Paint Vertex Color Tool Prelight Apply Color Paint Vertex Color Tool 242 Apply Color, Prelight Maya Shading Smooth

Move Component Object selection Component selection UV Maya Hotkeys editor Maya USING MAYA POLYGONAL MODELING 55

Basic System Administration

目錄... ivv...vii Chapter DETECT


ICD ICD ICD ICD ICD

Microsoft Word - Web Dynpro For ABAP跟踪测试工具简介 _2_.doc

基于UML建模的管理管理信息系统项目案例导航——VB篇

Microsoft Word - FPKLSC_21.docx

... 12


RUN_PC連載_12_.doc

藍牙網路在資訊家電的應用

A. 城 市 化 是 我 国 发 展 的 必 由 之 路 B. 单 纯 发 展 大 城 市 不 利 于 城 市 化 的 推 进 C: 要 实 现 城 市 化, 就 必 须 让 城 市 充 分 吸 纳 农 村 人 口 D: 大 城 市 对 外 地 农 村 人 口 的 吸 引 力 明 显 低 于 中 小

Bus Hound 5

声 明 本 公 司 及 全 体 董 事 监 事 高 级 管 理 人 员 承 诺 不 存 在 任 何 虚 假 记 载 误 导 性 陈 述 或 重 大 遗 漏, 并 对 其 真 实 性 准 确 性 完 整 性 承 担 个 别 和 连 带 的 法 律 责 任 本 公 司 负 责 人 和 主 管 会 计 工

WinMDI 28

邏輯分析儀的概念與原理-展示版

Microsoft PowerPoint - Aqua-Sim.pptx

閱 讀 素 材 V.S 分 組 方 式 的 差 異 化 教 學 工 具 表 班 級 :( ) 閱 讀 素 材 V.S 分 組 方 式 獨 立 閱 讀 夥 伴 閱 讀 ( 同 質 性 ) 夥 伴 閱 讀 ( 異 質 性 ) 友 善 陪 伴 虛 心 受 教 國 語 日 報 新 聞 生 活 文 藝 兒 童

Microsoft Word - 1HF12序.doc

Microsoft Word - 讀報看科普─人體篇_橫_.doc

鍟嗗搧瑙傚療鈥㈤挗鏉

席 远 杨 一 人 了, 正 当 她 开 枪 时 却 发 现 子 弹 没 了 该 死, 只 能 赤 手 空 拳 了 洛 水 云 与 席 远 杨 交 起 手 来, 洛 水 云 出 手 招 招 致 命 想 那 席 远 杨 也 不 是 泛 泛 之 辈, 很 快 掌 握 了 洛 水 云 出 招 路 数 看

Microsoft Word - 2B802內文.doc

東區校園中法治教育種子師資教學研習營

Microsoft Word - SupplyIT manual 3_cn_david.doc

1 o o o CPU o o o o o SQL Server 2005 o CPU o o o o o SQL Server o Microsoft SQL Server 2005

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7.

ebook66-15

ebook 132-6

2

使 小 趙 有 機 可 趁 二 員 工 法 紀 觀 念 薄 弱 小 趙 身 為 主 管, 竟 假 藉 職 務 之 便, 利 用 平 時 得 經 常 申 請 出 差 之 機 會, 虛 立 出 差 名 目, 實 係 法 紀 觀 念 薄 弱 使 然 肆 具 體 改 進 措 施 或 建 議 一 訂 定 或

6 喝 酒 不 開 車 勿 疲 勞 駕 駛 勿 闖 平 交 道 後 座 繫 安 全 帶 宣 導 低 頭 族 開 車 罰 則 勿 任 意 變 換 車 道 兒 童 後 座 繫 安 全 帶 財 團 法 人 臺 北 國 際 社 區 文 化 基 金 會 (ICRT 電 台 ) 安 全 上 路 停 看 聽 (

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

PPI ( 2. / 3. AIS R VRM EBL R R U/6X 5

PowerPoint Presentation

HOL-CHG-1695

第 153 期 司 律 一 試 Q/A 大 解 惑 講 座 陳 介 中 / 006 司 律 一 試 Q/A 大 解 惑 講 座 苗 星 / 018 律 師 選 試 - 海 洋 法 重 點 概 念 準 備 方 式 與 方 向 名 揚 / 033 電 子 監 控 能 解 決 監 獄 擁

勞動條件檢查執行重點(雲林)_ [相容模式]

醋 水 法 在 水 盆 內 放 入 約 七 分 滿 的 水 與 1/2 到 1 小 杯 的 醋 量, 將 髒 襪 子 浸 泡 一 晚, 隔 天 再 丟 入 洗 衣 機, 就 能 洗 得 相 當 乾 淨 醋 有 殺 菌 除 臭 和 漂 白 功 效, 使 用 過 的 醋 水, 還 可 清 理 地 板,

穨 PDF

第一冊 第四章 分裂與再統一 班級 座號 姓吊

Microsoft Word - 完全手冊-課程.doc

rz_Newsletter2016_en_ indd

Microsoft Word zw

01

德阳市文化馆​德阳市作协举办儿童诗人杨一郎诗集《初心》座谈交流会

003 就 是 取 各 種 學 說 療 法 的 優 點 來 治 療 的 意 思, 我 兼 取 中 西 醫 理 人 體 生 理 解 剖 經 脈 穴 位 易 理 學 說 臨 床 經 驗 等 各 種 學 理 經 驗 的 優 點, 並 且 採 用 氣 功 薰 臍 耳 穴 手 足 推 拿 按 摩 等 十 餘

指導老師 : 陳建宏

她 氣 色 很 差 我 跟 她 打 了 兩 次 招 呼 她 才 回 我 這 樣 妳 去 打 個 電 話 給 她 看 看 她 現 在 人 在 哪 裡 好 資 料 應 該 在 這 裡 這 地 方 是 前 幾 天 不 是 怎 麼 了 在 找 什 麼 尹 小 姐 下 午 就 出 去 到 現 在 還 沒 回

Oracle Database 10g: SQL (OCE) 的第一堂課

A Preliminary Implementation of Linux Kernel Virus and Process Hiding

(➂)11. 炎 炎 夏 日, 即 使 下 起 滂 沱 大 雨, 都 消 除 不 了 令 人 心 煩 的 暑 氣 這 句 話 主 要 想 表 達 什 麼? ➀ 夏 日 裡 經 常 下 著 滂 沱 大 雨, 令 人 心 煩 ➁ 下 著 滂 沱 大 雨 的 日 子, 可 以 消 除 暑 氣 ➂ 夏 日

高雄市立五福國民中學九十四學年度第一學期第三次段考二年級本國語文學習領域試題卷

台北老爺校外實地參訪結案報告




Microsoft Word 養生與保健_中山大學_講義


萬里社區老人健康照護手冊

Microsoft Word - 強制汽車責任保險承保及理賠作業處理辦法 doc

Microsoft Word - 06.Understanding of Pregnancy and Birth.doc

範本檔

附 件 一 : 办 理 集 中 式 银 期 转 账 业 务 网 点 名 单 序 号 地 区 网 点 名 称 地 址 联 系 人 电 话 23 工 商 银 行 安 徽 省 铜 陵 百 大 支 行 铜 陵 市 长 江 东 路 50 号 鲁 桂 珍 工 商 银 行 安 徽

2. 二 年 級 吳 毓 秀 老 師 : 感 謝 午 餐 公 司 平 時 均 能 準 時 送 餐, 但 希 望 能 不 要 使 用 加 工 品, 且 學 生 反 映 希 望 能 多 加 蛋 品 的 食 物 3. 三 年 級 柯 阿 青 老 師 : 雞 肉 有 血 水 味, 請 午 餐 公 司 能 調

糖尿病食譜


,,,,,,, (,, ),,,,,,,,,,,,,,, ,,, 4 11,, ( ),,,, ( ), :, ( ),,, 1995, 66 ; ( ),, 1996, , 3-4,,

2002 4,,, 1941,,,,,,,,,,,,,,,,,, : ;:, 1991,

人 物 春 秋 杨 永 泰 将 其 削 藩 策 略 概 括 为 : 以 经 济 方 法 瓦 解 冯 玉 祥 的 第 二 集 团 军, 以 政 治 方 法 解 决 阎 锡 山 的 第 3 集 团 军, 以 军 事 方 法 解 决 李 宗 仁 的 第 四 集 团 军, 以 外 交 方 法 对 付 张 学

Photoshop CS6 艺术设计案例教程 ( 第二版 ) 1.1 Photoshop 的应用领域 Photoshop,,, Photoshop Photoshop 的用途 Photoshop CIS ( ) ( ) 案例展现 ~ 1

《嵌入式系统设计》教学大纲

手册 doc

Microsoft Word - 3圓來如此.doc

【专题聚焦】

mvc

untitled

Concept of Hyper Kamiokande (20 times Super K) 48m x 50m x 250m x 2 Total mass ~ 1 Mton Photocathode coverage ~40% of surface ~200,000 PMTs => prohibi

<4D F736F F D C2E0BEC7A6D2A4ADB14DB0EAA4E52DB8D5C344A8F72E646F63>

Epson

PPBSalesDB.doc

目次 

1 Visual Studio.NET Linux C++ JBuilder 4 RJ45 RS3 Modem 6 MAC IP TCP Socket UDP FTP ; Windows 000 Serve : 8 Windows 000 Serve DNS DHCP Web FTP E

优化点1:移除重复的Set Texture

FPGAs in Next Generation Wireless Networks WPChinese

CC213

Transcription:

使用 Nvidia 开发工具提升 VR 游戏开发体验 阎安 图形工具 QA 经理 1

Nsight 介绍与入门 分析 Geometry 错误 目录 调试 VR 程序 针对 GPU 的 Range Profiling 2

Compile Debug Profile Getting Started C/C++ JetPack Trace NVTX NVIDIA Tools extension IDE Integration Standalone and CLI Hardware Support 3

NSIGHT VISUAL STUDIO EDITION 5.1 高级图形剖析和 VR 程序的支持 新的 Range Profiler, 支持 DirectX 12 新的 Geometry View 支持 Oculus VR SDK 支持 CUDA 8.0 4

UE4 的 VR 例子 - Showdown 发布于 Oculus Connect 沉浸式的战斗场景 体验黑客帝国里的子弹时间 引擎先渲染左眼看到的场景, 再渲染右眼看到的场景 双眼使用同样的 Render Target 5

UE4 的 VR 引擎 VR 处理流程 UE4 渲染完成场景之后, 对应的帧被发送给 Oculus 进程处理 6

UE4 的 VR 引擎每个眼睛进行一次渲染 Depth Pass Lighting Pass 时间 View 0 Left View 1 Right View 0 Left View 1 Right... 7

入门 8

入门 配置你工程的 Nsight User Settings 点击 VS 中的 Nsight 菜单, 选择 Start Graphics Debugging 程序启动后, 可以看到 Nsight 的 HUD 状态, FPS GPU 性能图示使用快捷键 Ctrl-Z 可以移动, 缩放 HUD 内的元素 9

入门 按下空格键, 捕捉当前帧实时捕捉, 程序依旧运行, 只是被暂停了 HUD 允许你 : 查看当前场景的 Drawcall 查看贴图和 Render Target 以上功能可以脱离 Visual Studio 使用可以序列化当前的一帧, 并生成 C++ 的源代码和工程, 支持 VR API! 10

入门 转到 Visual Studio Scrubber 视图 允许你查看当前的所有 Drawcall, 从 Perf Markers 上获得当前 Drawcall 的上下文信息 Event 视图 显示所有的 API 调用, 附带参数信息 和 Scrubber 视图同步 根据关键字过滤 draw pssetshader\( 如果使用了现成的中间件或者引擎, 开发者可能没有办法选择需要的 Perfmarker API. Nsight 允许显示指定的 Perfmarker, 开发者可以混用不同的 API Current Targets 视图 显示当前 Drawcall 绑定的所有 RTV 和 DSV 11

选中某一个 Drawcall, 打开 API Inspector 视图 视图左边显示了基本的 GPU 管线, 分为一个个 Stage 每个 Stage 表示当前 Drawcall 在对应管线的 Stage 上的状态 IA: 渲染管线的输入状态设置 VS, HS, DS, PS, CS: shader 状态 SO Raster OM 入门 12

入门 打开 API Statistics 视图, 有一千左右的 Draws, 但有三万九千多的其他类型的 API 调用 其中有 AddRef/Release 调用大概一万三千左右 如果你过滤 GetDesc, 会发现有大约六百个, 但是 Desc 是不可更改的, 可以缓存下来 根据 GetDesc 的 Object 排序 可以发现有一些 Texture Object 被调用了 GetDesc 大约 8-12 次 但是缓存一个 D3D11_TEXTURE2D_DESC 只需要 44 字节! 13

入门 其他 Nsight 的功能也对 VR 程序的调试有所帮助 Scrubber 视图新功能 : 根据 Drawcall 不同的特性添加不同的 Scrubber 的 Range 选择 + 按钮, 选择 viewport, 提供针对双眼的各自 Drawcall 的 Range 当你没有配置自定义的 Perfmarker 的时候, 特别有用 14

欢迎使用 Nsight HUD 显示的 performance 图表和 Drawcall scrubbing 入门 Visual Studio 集成的视图 Scrubber, Events & Current Target API Inspector & API Statistics Geometry & Resources 使用基本视图功能来定位潜在的 CPU 性能问题 15

错误的 Geometry 16

通过 Nsight 来启动对应的程序 错误的 Geometry 仅仅用来模拟 Nsight 用户曾遇到过的一类问题 : 我的渲染结果为什么变成这样了? 17

错误的 Geometry 暂停并截取一帧, 拖动 HUD 上的 scrubber 到错误的 Drawcall 问题的根源可能有很多, 使用 Nsight 来逐一检查 API Inspector VS stage Vertex Shader 出问题了? API Inspector RS stage 光栅化设置出问题了? Etc. 18

错误的 Geometry API Inspector VS stage, 展开所有的项, 检查各个 buffer, 有地方不对劲么? 19

错误的 Geometry API Inspector RS stage, 光栅化里面的 cull mode 设置, fill mode 设置, depth bias 设置, 等等, 有地方不对劲么? 20

错误的 Geometry 看上去渲染管线的设置都没问题, 可能是数据的问题? 打开 Geometry 视图 21

打开 Geometry View [Nsight 5.1 新功能 ] Nsight 已经检测到一些浮点数异常 : Floating Point Specials Detected In Vertex Data! Graphical 子视图 新的 Geometry View 可以映射任何顶点属性为渲染需要的位置 / 颜色 / 法线信息 显示法线或者 UV 信息为颜色 一直维持顶点属性的设置, 直到 vertex layout 改变 Memory 子视图 错误的 Geometry 每一个顶点为一行, 列为顶点对应的各个属性 可以以 index buffer order 或者 vertex buffer order 显示 数据显示已经考虑到了对应的 offset 22

错误的 Geometry 进一步查看 Float Point Special Detected In Vertex Data! 还可以使用 Resource 视图中的 tag 功能来显示场景中所有使用了这个 buffer 的 Drawcall. 不仅仅标记 vertex buffer, 还支持任意资源, 例如 texture 资源 23

顶点数据错误 错误的 GEOMETRY API Inspector 视图帮助检查渲染管线设置 Geometry 视图帮助检查变形前的数据 Resources 视图 + tag 来显示何处使用了资源 24

VR 但不那么立体 25

视差和双目视觉 看向前方, 选择一个物体作为前景, 例如你的手指, 或者某个人的头部交替的遮住你的左右眼睛当你切换遮住的眼睛的时候, 注意到你选择的物体相对于背景是移动的这个叫做视差, 是人类双目视觉系统本能的一部分赋予我们感知深度的能力, 同时 VR 利用其来实现更加沉浸式的体验 26

视差和双目视觉 27

VR 但不那么立体 有些时候, VR 渲染的立体感被破坏, 进而影响体验 看到过立体场景里面的物体像是若干个不同深度的 billboard? 注意下面场景截图中飞在半空的水泥块 如果是在实际的 VR 头戴显示器上观察, 就会发现这些物体不正常的贴在半空, 就像一个 UI 或者狙击枪的十字标线一样 28

1.VR Not R 29

VR 但不那么立体 通过 Nsight 来启动对应的程序截取当前帧 (Ctrl-Z + Space 作为快捷键 ) 打开 Resources 视图, 来看看水泥块对应的深度是否会导致这个问题首先, 找到导致 不那么立体 效果的水泥块的 Drawcall 30

VR 但不那么立体 找到渲染左眼 Render Target 的 Drawcall 在 Event 视图中按下 Ctrl+F2 来收藏这个 event 找到渲染右眼 Render Target 的 Drawcall 在 Event 视图中按下 Ctrl+F2 来收藏这个 event 如果你没有自定义 PerfMarker, 可以使用 Scrubber 视图中自定义的 Viewport 项添加新的一行 Range 集合, 进而确认这些 Drawcall 对应不同的眼睛 打开 Current Target 视图, 选择并点击当前的深度图, 来打开 Resources 视图, 进而检查对应深度贴图的详细信息 31

32

VR 但不那么立体 在 Resources 视图中检查当前的 DSV 注意, 你可能只能看到全黑或者全白的图像 打开 histogram and renormalize (texture 图片右下角的小箭头 ), 拖动 max 箭头来调整当前显示值的范围, 这样就可以看到深度贴图的细节信息 注意水泥块在每个眼睛下的深度信息 33

34

VR 但不那么立体 使用 API Inspector 视图来确认渲染管线的设置, 看上去都没问题还有其他因素可能影响么? 我们需要查看 VR 的设置! 打开 VR Inspector 视图可以查看 Swap Chains, Mirror Textures, Render Desc Queries, HMD 信息 35

36

VR 但不那么立体 点击其中的 Show API Usage 可以在 Events 视图中显示所有的 VR API 调用 37

VR 但不那么立体 仔细查看 VR Inspector 视图里面的 Render Desc Queries VR 程序 query 了左眼的状态两次这可能是在 copy-paste 的时候, 忘记更改右眼的状态了 改回左右眼 query 各一次, 重新启动, 问题解决了! 38

VR 但不那么立体 在 Events 视图中收藏特定的 Drawcall 在 Resources 视图中查看贴图图像的柱状图查看器及重映射在 API Inspector 视图中检查渲染管线的设置在 VR Inspector 视图中检查 VR 的设置 39

瓶颈在哪儿? 40

瓶颈在哪儿? 通过 Nsight 来启动对应的程序 如果是 GPU bound 的话, 你希望使用 profiler 来定位渲染管线的那一部分是瓶颈, 会导致程序性能下降 在 Scrubber 视图上右键单击, 选择 Profile Frame 来打开新的 Range Profiler 视图 传统的 Profiler 是以 Drawcall 为中心, 允许按照管线状态来分类 Drawcall 新的 Profiler 是以 Range 为中心 : 一系列的 Drawcall 定义了一个 Range. 41

瓶颈在哪儿? 新的范式是 Range, 基于渲染管线的状态定义通过 Perf Markers 来定义 Range 通过 Shader Program 来定义 Range ( 支持所有 6 种 Shader) 通过 Viewport 来定义 Range ( 适用于 VR 程序 ) 通过 Render Target 来定义 Range ( 显示那一组 RTV, DSV 使用时间最长 ) 用户自定义的 Range 通过拖动来创建一个 Range 42

瓶颈在哪儿? Range Profiler 在 Range Scrubber 下面提供了 3 个面板以提供更加详细的信息 Range Info Summary 显示当前 Range 的基本信息 ( 图元, 像素, compute shader, 等等 ) 右上方的组合框里还提供 Action Details, 允许你查看每个 Drawdcall 或者 Dispatch call 的信息 Range Profiler 相较于以前的一项关键性改进是可以有选择的获取性能剖析所需要的数据. 这对于现代的图形程序十分有用, 因为 Drawcall 的个数已经从几千个增长到以万为单位! 43

瓶颈在哪儿? Pipeline Overview Summary, 显示效率最低的前 4 个 stage Range Details, 显示传统的管线示意图, 可以看到每个 stage 的瓶颈是多少 Action Details, 显示每个 Drawcall 对应管线单元的详细信息 44

瓶颈在哪儿? Memory Summary, 显示基本的 memory 使用统计信息, 例如 L2, Framebuffer 等等 Range Details, 显示管线里面每个使用 memory 的 stage 之间的 request 和 bytes Action Details, 显示对应每个 Drawcall 的更加详细的信息 45

瓶颈在哪儿? Range Profiler 和 Dynamic Shader Edit 在 Profiler 视图中选取一个真正耗时的 Drawcall, 创建一个 User Range, 并选中转到 API Inspector 视图点击 Shader 的链接, 打开 Shader 源代码在 Shader 源码中点击右键, 选择 Shader Edit, 对代码进行一些优化点击 Profiler 视图上的 Lock 按钮, 并点击 Clone 按钮, 打开一个新的 Profiler 视图在新的 Profiler 视图中重新运行 profiler, 确认你的修改确实让性能得到提升 46

Range Profiler Scrubber 和 Ranges 瓶颈在哪儿? 新的数据视图 可以一边优化一边重跑 Profiler 动态的编辑 Shader, 对其进行优化 重跑 Profiler, 确认优化确实起作用了 47

Questions? Nsight 支持论坛 : https://devtalk.nvidia.com/default/board/84/nsight-visual-studio-edition/ 开发工具支持邮箱 : devtools-support@nvidia.com 欢迎进行询问, 讨论和建议 48

谢谢! 49