快捷导航
查看: 364|回复: 0

周锡健 《NVIDIA VR策略及技术分享》

[复制链接]

我是来自英伟达NVIDIA的周锡健。谈起NVIDIA英伟达大家可能有一些比较直观的感觉,例如玩游戏一定要买一张英伟达NVIDIAGPU的显卡,才能玩的比较畅顺,如果谈起这个很热门的VR,可能要买一张980,效果会比较好一点。其实我们现在最新一代的显卡是1080,在VR的性能上接近980的3倍,希望对大家有用。
每个人都觉得VR很有机会,无论是教育、军事,或者是游戏内容、体验店,各方面都有非常多的机会。那跟NVIDIA成为伙伴在VR的优势有什么呢,我可以介绍一下,我们在显卡市场里面的占比是85%到100%,高端的几乎是100%,全球有2亿个GeForce玩家,玩家基数很好,如果大家基于NVIDIA的技术去开发VR内容,在装机量方面大家是完全不用担心的。全球包括美国、中国的上海,我们有很多实验室测试开发者开发的内容,以免在平台上不能流畅的运行,这个道理就跟在网吧一样,网吧是打开门做生意,是B端的一个很大的市场,包括现在VR也是一个2B很大的市场。用户在家里如果玩游戏死机了,OK那重启,但如果你在网吧里面经常死机重启,就不太好,所以我们这1000台机器不断地进行稳定性和兼容性的测试。那最后一个就比较重要了,我们有300位资深的工程师在从事VRSDK的开发,这个就是我今天要讲的一个非常重要的内容。就是我们NVIDIA 的VRWorks。
NVIDIAVRWorks是一个综合性的SDK,它覆盖面很广,首先它是针对头盔开发者,什么叫头盔开发者呢?就是我们很熟悉的Oculus、HTC、包括国内的3Glasses、大朋,我们都可以认为他们是头盔的开发者,内容的开发者,我们都是针对他们有一系列的SDK,那我们也会花一些时间跟大家简单介绍一下,同时补充一下,对用户,对我们内容的开发者跟游戏开发者的SDK部分呢,在我们developer.NVIDIA.com上是可以免费下载的。
我们有5项技术是原版的,2015年推出 VRWorks的时候,我们觉得首先要做出自己的方面,把视觉部分做的漂亮,因为VR沉浸式的体验,视觉方面很重要,2016年随着1080 发布之后,我们发现原来VR世界不仅仅有图像,还有声音、触觉、还有一些互动,都是非常重要的,那NVIDIA在这方面可以做些什么呢?针对视觉、听觉、触觉跟交互我们都有API跟engine去支持,稍后会给大家详细介绍,主要是分为图像、头显、声效还有一些专业级的应用。

图像

MULTI-RESSHADING LENS MATCHED SHADING ,简单说一些头盔的基本情况,人眼的FOV是很厉害的,有170、180度,所以我直视前方,可以看到两边。为了追求大FOV,ID soft的大神约翰·卡马克,现在是Oculus的CTO,提出一个概念,通过一个光学的元件,一些畸变达到更大的视场角。那其实我们戴上头盔是有凸透镜的,对GPU要做多一点事情,所以我们的显卡首先要做一个畸变的图像,然后负负得正,经过凸透镜的反畸变,最后就变成正常的。那问题就来了,GPU一开始怎么会算出一张畸变的图片呢?
我们可以看到,GPU一开始会算一张长方形或正方形有规则的图片,绿色部分就是眼睛的视野中心点,目光最注意的地方,绿色部分永远都要最清晰,因为如果你眼睛看到的最中央部分都不清晰,那么就没什么用了,然后红色有一部分就已经挂了,因为四周变黑色,它这里一部分就不需要了。还有一部分就发生了形变。这样就会造成第二个问题,帧数不够或者刷新率不够,会导致眩晕,现在虽然我们有类似1080这么厉害的显卡,但是我们觉得还是不够的,MULTI-RESSHADING就是为了解决这个问题,我们叫“九宫格”,对于游戏开发者来讲,是一个很好的工具,用MULTI projection的一个多投影的特性,GPU可以生成一个九宫格,九宫格里面每个格的分辨率都可以不一样人眼看到中间的部分,那个宫格就保持是最高的像素密度,永远都最清晰。四个角可以稍微没有这么精心,对开发者来讲是非常好的,black shield也用这个技术,这样他去专心做自己的游戏,远处模糊中间非常清晰的那些技术就交给我们去做,因为我们是桥梁给大家提供工具。这样有什么好处呢?视觉的中心需要最清晰的,两边的余光密度没有这么高,但是GPU原来比较勤奋,一直以最高级别去算,性能有点浪费,那我们用九宫格,保守一点吧,把中间的宫格画大一点,那就1.3倍,如果进取一点,我只需要中间最重要的那个部分,那就直接两倍的pixelshader性能提升,如果用眼球追踪技术的话,那可能50%都不用,那个技术我们一直还在持续研究,在成熟的时候,我们就要以SDK的方式交给大家去帮忙。大家最关心的问题就是说,你不会把一堆源码给我吧,其实现在全球最著名的两大游戏引擎,Unreal跟Unity已经把我们的技术整合进去了。以unreal虚幻4作为例子,在GitHub已经有完整的一个代码,大家可以去下载,最高性能可以50%,大家觉得会不会很难呢?其实不会,我举个例子,北京有一个做房地产的开发商,直接用我们这个技术,一个礼拜性能提高了30%,把省的那30%是用在一些更好的光照里面,房子漂亮一点就卖多一点。
刚刚讲那个MULTI projection技术,是980,970时候的一个技术,到1080我们升级了叫Simultaneous Multi-Projection,先讲一个简单的例子,有一些土豪玩家,玩PC游戏要买3个显示器一字排开,三联屏你会发现两边的东西看不了,超出他的视觉范围,现在用了Perspective Surround视图修正之后,就会很变好。简单来讲,显示器就相当于view point,显示器对着哪些物品,看到的就是哪一个物品,所以如果一些玩家像三联屏这样摆,修正后两边就可以看到了。所以原来一些就是没有角度的问题,它就会看到各种更高的视觉空间,还有一些原来不正确的一些图,它都会变正常出来。
view point 视点,就相当于我们的眼睛,透过view point 去看这个世界。我们用这个技术,叫做Lens Match
刚才我们九宫格,现在不用了,现在四个格摆成一定角度,包住你的眼睛,符合人眼的形状。这个技术节省了很多的系统开销,为什么呢,因为这样的4个view point ,以菱形的这个角度包围在你眼睛那里。
然后它在平面上的投射就是一个风车形,变风车形有什么好处呢?刚刚讲到畸变,因为我生成一张照片最后经过头盔的畸变它就变成一个畸变的图片,那你既然要畸变,那我就直接生成一张这样的图片,再进行畸变的处理的话,就节省了很多的一个系统开销
还有一个技术就是这样的,在虚拟现实里面,左眼跟右眼看到的东西基本上是一样的,传统平面的话,左眼只能看到左眼的东西,右眼只能看右眼的东西。那我们显卡就比较辛苦了,左眼右眼要做重复的物体,那开销就高了很多。
刚才我们说view point可以以一定的角度去摆,那我们摆成这样,一次就可以搞定。
左右眼的一个几何平均上,就可以共用一个cycle可以进行两个眼睛的几何体,大概会百分之六七十的性能增长。那刚才那个Simultaneous Multi-Projection它可以提供1.5倍的Pixel Throughput 和2倍的Geometry Throughput,这个是针对游戏开发者的一个很重要的功能。

音效
我们发现除了看到的东西之外,声音我们也非常重视,VR的声音原来必须有一个音源,到底它是在吹喇叭还是在弹小提琴呢?因为它有方向,它必须要有方向,例如我和对面的人讲话,那我至少面对他,这声音传到他那里,因为声音原来还是在空间传播的,就像在我们这个房间,这里有二楼,有沙发、木质的桌子还有一个KT板,这些对我们声音的传播都起到关键作用。
以前有一个很轻捷的就HRTF模式它就考虑到双耳听到声音的时间差,声音的强度差,还有声音的绕射,进行一个立体声定位,很简单最后一个就是绕射,其实也是跟一些频响特性有关的,就是声音如果经过我这么胖的躯体之后,一般高音都没什么事,低音就衰减很厉害,其实这些也要考虑进去。
传统的声音是怎么样的呢?其实它应该是这样的,它好像个波浪一样。我们决定这样做,这就用了我们的optix引擎,就是光线追踪
我们如果把声音也看做一个光线,我们在一个声源那里发射16000条射线,比如在一个环境里面我们算12次,最后叠结在这里,我做一个卷积的方式,卷进的滤镜,这个VR Works Audio我们最后也会整合到游戏引擎,大家直接调用就好。
那我们可以看到就像我们初中看方程一样,输入有什么呢,声音源,位置方向,环境的几何结构就是这有个凳子,这有个桌子,他的物理材质是什么样,它这个会不会吸收声音等等,然后经过Optix跟 Audio引擎运算,最后做一个卷积滤镜,那他最后会有什么样的东西出来,声音的遮挡,吸收与反射,还有HRTF模型,基于距离的衰减跟混响都会计算出来,就例如我们聊天,中间有一个风洞、一个大峡谷,那肯定是我喊一声,它就会有回响,这个我们得考虑进去。

物理效果
那刚才讲了两个重要的,还有一个就是PhysXPhysX其实就是我们所说的物理效果,那它其实有很多种了,你看就是有PhysX,还有Flex,Destruction,还有头发,头发我简单介绍一下,我的头发有几万根,应该有5万根到10万根头发,因为我每一根头发要做成像广告那样飘柔的效果,其实预算是很高的,女孩子用的Cloth,就是你的衣服,你的裙子,是要轻舞飞扬,也是要也用很多的一个运算,其实在VR的世界里面更需要物理,因为只对着一个屏里面,现在你进入VR的360度,你希望得到的数据都是真实的。
还有粒子效果,就是Flex效果,波涛汹涌,真的是波涛汹涌,这个是流体的效果。那给大家汇报一下,就是说有了这么好的物理效果那怎么办?我们决定多做一步,就是我们有物理,PhysX,API,然后还有PhysXConstraintSolver,是什么意思呢,我们把这些数据做一个input,交给我们的外设厂商,让他们把这个真实的反馈做出来。
举个例子《The Lab》,steam上面现在排名第一的游戏,第二就是我们《Fun House》了。《The Lab》里面有一个射箭游戏,我们NVIDIA也做了一个技术demo,叫《FunHouse》,也有射箭的游戏,例如你拿个箭,拉,其实如果箭没搭到弓上,怎么拉都没用,你一放到弓上手柄就会震动,你拉大一点,它就震动大一点,你“唰”地放出去就没有震动了,当然这是最简单的一种体现,其实威力更大的还是技术上的厂商要有支持,因为现在力反馈背心,像数娱科技,他们的力反馈背心只有8个砝码,理论上还有一些新的技术可以做到一平方分米里面会有10个微型的芯片马达,他的马达足够可以做功的时候,他就甚至可以算出冲击波的型,例如一个手榴弹在那边爆了,碎片打到这里我就割一下,它可以模拟这个,如果冲击波是打在我肚子的下边有个涟漪,他都会计算出来,这个对用户来讲是非常好所以我们也在寻求一些伙伴去完成这一些。
各种黑科技

还有一个就是内容开放商,特别是房地产开发商很开心的,就是我们叫VR SLI,我们以前两张GPU出数据,第一张卡做第一帧,第二张卡做第二帧,你看我最后就scan out出来,两帧出来,latency会比较强,那VR不是这样,VR是所有的左眼都是一张卡去做,所有的右眼都是第二张卡去做。
contextpriority,上下文优先,这是针对头盔开发者的一个技术,里面也用到了约翰·卡马克的一些论述,因为卡马克有一个重要的,我们叫Time warp,直译就叫时空扭曲,在DK1,DK2时代这个非常明显,因为这个时候显卡的性能不是特别高,我们来看一下标准的,没有timewarp是什么样的,头部有个simple head pose在这里,GPU说,你的头在那里哦,你要算我头的位置对到的空间,那GPU就算,算完时间到,当然我们的头都不是特别听话,经常要扭来扭曲。Time warp技术就是在每一次屏幕要scan out之前,例如DK1的时候是60赫兹,现在的趋势是90赫兹,我们在scan out之前来一个叫Time warp,再一个,例如我们用HTC作为例子,在11毫秒内GPU还没算完一帧那怎么办,如果按照平常没有Time warp就很麻烦了,这次scan out出不去,等下一次scan out,直接延迟double了,像HTC 11毫秒,double等第二个时间scan out出去,就变成22毫秒了,还没有算其他的传感器、break形变各种的损耗。所以约翰·卡马克就说那,我每次在scan out之前,执行一个小程序,就是Time warp,什么叫Time warp,其实人的头虽然不是很听话,但是大家有没有计算过你的头的角速度是多少,因为一次scan out,或者一个LED或者OLED刷新一次11毫秒,这11毫秒你的头最大可以做多大角速度的变化,其实不会太大,所以技术就在这里,Time warp就是用上一帧的图像作为素材,然后简单的建一些模,重算一些三角形,然后再贴回去,这样它就不用完整的做一次,但是这个新的小程序就会考虑到头部位置的变化,做出来的修正。
我们的技术就是让Time warp可以以最高效率去执行。我们在pascal preemption,简单来讲就是说我们在1080的时候,因为大家一定要做Time warp,但是Time warp是有一个问题,原来我们的显卡前几代是这样的,你要插队,你要执行这一段代码,在一个传统的GPU pipeline里面,指令是要分先后顺序的, 那我们即使给了你一个很高的优先级,对不起,在我们前一代显卡里面,你要插队没问题,让我喝完水,那我在买饭,你要等我买完饭你才可以插队,所以就发生一个问题,我来不及,我一定要在scan out之前搞定,我现在就开始插队,但是我的饭没买完,这就不对了。现在不一样了,现在我们要插队,赶紧走,你在买饭,你不要买了,我先买,为什么要这样呢,很简单,因为头部运动引起的头晕是最可恶的,所以我们一定要解决问题,所以在VR里要优先搞定头部运动带起来的图像变化,很简单就是感知与行动一致,我看到应该是这个东西,我不希望它延迟。
还有一个针对头盔开发者很实用的功能,我们叫direct mode,direct mode的意思是怎么样的呢,因为我们很多还是用微软来操作系统,在没有direct mode的情况下你插入一个头显,HTC或者Oculus插进去,微软的操作系统就是windows,它说你多了一个显示器,然后你就会在头盔里面看到一个windows的界面。用了direct mode之后,就简单多了,因为头盔是接在HDMI或VGA上面的,那只要我的白名单里面有你,我知道你是Oculus的头盔,我不告诉Microsoft,Microsoft就没发现这里有一个显示器,你到我这里读launch等等,都可以在这里去做。还有一个最直观的好处,就是减少了延迟,因为你的VR的内容已经不是用扩展模式去执行,不用扩展模式就不是一个视窗的系统对不对,系统上面就不是交给OS去做switch,延迟就变低就不用说了。
最后一个针对头盔开发者,我们还有一个黑科技,比较复杂,我们叫front buffer rendering,其实大家知道显卡工作,它是有两个buffer,back buffer和frontbuffer ,其中游戏引擎,数字,图片我们通常,图像我们先放在back buffer,放好一帧之后,马上back buffer就变成front buffer,这一帧就缩回去,有个不同的切换,那有个黑科技是,如果你觉得你有足够的信心,我可以让你取消前后缓冲,就没有后缓冲,全部灌到前缓冲中去。
那有什么问题呢,就是说你甚至可以连front buffer 跟back buffer切换的时间都可以省略掉,有多少你就scan out多少,当然这个是很危险,所以头盔开发者用要非常小心,你要注意到它的同步性,万一它慢了怎么办,Time warp没这么快,scan out到最后也出现断层,所以这个是一个黑科技,也是约翰·卡马克研究出来的一个技术,那我们也可以帮他实现。
关于这个游戏开发者跟内容开发者的部分,可以在NVIDIA的develop.com免费下载,给大家介绍一下,NVIDIA做的一个技术demo,刚才我讲吹牛逼的所有技术都在这里体现,这个游戏叫FUN HOUSE,翻译成中文是游乐场,这是一个小型的游乐场。另外有一个非常著名的游戏叫EVEREST VR,是一个比较早的开发商叫Sólfar,Sólfar去开发,用UE引擎做了一年,用了20多万张超高清的图片,重建了一个喜马拉雅山的主峰,RAW DATA、black shield,还有米粒星核他们都会用到我们的一些技术。
我们普通1080p的显示器,最低要求是30帧,那它需要的数据量是60,那如果在虚拟世界3024*1080的90帧的情况下,它的游戏性能 7.5倍,所以我们性能还是很强悍的,我们看其实这里需要说的重要一点,以前在显示器玩游戏的时候,我们比较注重帧数,我们的IBS可能是一个平均的帧数,有时候掉到60帧我也忍了,40帧我也忍了,高的时候100多帧转起来感觉还是很不错的,但是VR真的非常讨厌的是,如果头盔是90帧的,你永远要高于90帧,死守在90帧才会有最好的用户体验,平均帧数90帧和最低帧数90帧是完全不同的概念,以后Oculus或者HTC的第二代出来,144,那对我们显卡来讲又有任务要抗,他如果是120赫兹那相当于说我任何时候最低又要120赫兹,所以我们才有这么多VRWORKS。
我们VRWorks最近又新增了一个猛将,叫VRWorks 360 Video。我非常赞成现在的360 Video不能算是VR Video,所以我们那个叫360 Video,它对应我们quadro的工作站,在离线的情况下可以32路的4HD的输入,在线的话,4路没有压缩的4K输入,我们进行一些全景的拼接。然后大概呢还有我们的输入跟捕捉设备

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ