您好!欢迎光临工博士智能制造网!
15601785639
您好,欢迎光临工博士,我们将竭诚为您服务 点击这里给我发消息
您当前的位置:首页 » 新闻中心 » ABB机器人代理商---听说华为手机能玩光线追踪游戏,动作比NVIDIA还快?
产品分类
新闻中心
ABB机器人代理商---听说华为手机能玩光线追踪游戏,动作比NVIDIA还快?
发布时间:2020-03-03        浏览次数:41        返回列表

去年年底的软件绿色联盟开发者大会上,华为EMUI和网易宣布在游戏《遇见逆水寒》中实现光线追踪渲染,也就是在手机游戏上做到实时光线追踪(ray tracing)运算。这听起来是件大事,虽然光线追踪的硬件实现早在上世纪90年代就有了,而且在如今的3D动画作品与游戏CG中也常见,但实时(real time)的光线追踪在桌面PC平台尚且刚刚开始,手机现在竟然也有了?


游戏《遇见逆水寒》光线追踪开启前后的对比
 
我们在去年的Imagination新品发布会报道中曾经提过[1],Imagination预计将会在2020年的B-Series GPU中加入光线追踪架构。至少就商业应用来看,GPU的实时光线追踪在移动平台的应用还并不能算是眼下的事情。比较有趣的是,2020年伊始,Imagination宣布苹果再度与其签署多年的授权协议,虽然具体获取的是哪方面的IP我们并不清楚。国外有分析师认为,苹果可能是对Imagination的光线追踪技术感兴趣。

苹果A系列芯片的GPU是个黑匣子,我们也无从探究其GPU从硬件层面对光线追踪支持做到何种程度。在去年的WWDC 2019开发者大会上,苹果曾经做过一个名为metal for Accelerating Ray Tracing的主题演讲[2],表明在软件层面,苹果已经在做针对光线追踪的筹备。这个演讲的简介提到,“metal Performance Shaders利用GPU的大规模并行能力,为当代光线追踪与光线投射(ray casting)技术计算做加速。”从这样的描述合理猜测,苹果的GPU尚未在硬件层面针对光线追踪做出特别的支持。

那么《遇见逆水寒》这款游戏的光线追踪又是怎么做到的?是否海思Kirin SoC已经从硬件层面实现了光线追踪?这是我们期望去理解的问题。由于文章篇幅比较长,非技术爱好者可略过本文的第二、三部分,而仅阅读**与第四部分。

光线追踪有什么用?

消费电子市场上,推实时光线追踪技术比较积极的无非就是英伟达(Nvidia)和Imagination两家公司,分别对应PC端与移动端。这也就成为我们能够更清晰地理解当代光线追踪技术发展到何种程度,及其趋势的窗口。不过在此之前,还是花点笔墨回顾一下,究竟什么是光线追踪。

从这种技术能做什么的角度来说,有了光线追踪,相对狭义的讲,在游戏或图形计算相关的动画中,我们就能看到各种更真实的光线反射、折射、阴影等光影关系。这些反射、折射、阴影需要的因素很多,比如图形对象的材质,不同材质对光的吸收、反射都是不一样的,镜子能够反射出实物,而大理石地面虽然也有光线反射,但程度与方式有异。另外,光线从光源发出被反射后碰到新的对象还会再次反射或折射、吸收,其复杂程度可见一斑。

就现实生活来看,这似乎是理所应当的。但在过往的3D图形世界里,它在外显方面就只是一种模拟现实世界的特效。而要实现这些效果,是从硬件到软件中间层,及开发共同努力才可达成的。举两个简单的例子:

在上面这个来自英伟达的例子中,光线追踪(英伟达将自家的光线追踪技术称为RTX)关闭与开启后的区别,这两张图的主要差异在阴影的呈现上。在人物脚下,及身体各部位考虑光影关系时,这个场景才显得自然;如果阴影计算不完整,则人物就像漂浮在画面中一样。

如上图这样的反射,区别相当显著,也就不需要多谈了。不过实际上,传统的rasterization(光栅化)方案仍然可以做出反射效果,只是其开发复杂度会明显更高,且经常会出现缺失,包括处在画面外的反射并不会加入进来。上面这个场景中,一旦火焰处在屏幕显示以外的区域,rasterization通常都不会再将其显现在汽车外面的反射效果中。

在这个问题上比较有趣的一个设想是,玩如主视角射击竞技游戏时,借由光线追踪,如果有敌方在窗户下方潜行,玩家躲藏在角落位置,从某些视角依然能够从窗户玻璃中看到潜行的敌人——这也算是游戏的技术外挂吧。

而在上图的Imagination示例中,左边通过常规rasterization方式计算得到的阴影似乎已经算是比较到位了——实际由于rasterization方案流程问题,造就的阴影经常出现各种失真(比如锯齿)。再加上计算阴影边缘模糊的效果——这种所谓的半影(penumbra)效果对rasterization来讲已经很难。而像右图这样阴影的半透明化对rasterization而言又是个难点,但对光线追踪来说就简单很多。

用比较简单的话来说,光线追踪就是在生成某个3D场景时在某个阶段所采用的一种技术,这种技术能够模拟现实世界中光的行为。而利用光线追踪,就需要为开发者提供开发工具,并且生产更具真实感的视觉效果。

光线追踪在电影行业的应用已经非常广泛了,而电影所需的光线追踪会用上专业图形计算工作站,可能花几个月时间把*终画面给渲染出来。这对于实时的电子游戏来说是不现实的,一方面是因为游戏需要实时地生成每秒至少30帧画面;另一方面光线追踪对于图形计算性能要求也是疯狂的,过去是不可能用一块显卡就搞定3D游戏实时光线追踪的。

如果我们仅从“光线追踪”字面理解,处理器需要追踪所有光源发射的光线,并且场景中不同对象表面还会对光源的光进行反射、吸收、折射,而且不同材料表面实现这些效果的特性还不同,成千上万的光线需要计算。一个ray tracer性能度量因此就要达到每秒数百万、千万光线的计算能力,相当于GPU像素填充率的GPixels/sec级别,以及算力的GFLOPs级别[3]。

这个量级是Imagination在自家有关光线追踪的白皮书中提到的,它或许还不够具体。几年前三星**技术研究院(SAMSUNG Advanced Institute of Technology)和几所韩国、美国的高校曾联合发表过一篇题为《SGRT: A Mobile GPU Architecture for Real-Time Ray Tracing(为实时光线追踪设计的一种移动GPU架构)》的paper[4],其中提到“在720p分辨率下,实时光线追踪(30fps)的实际应用,要求的性能至少是300Mrays/s(单精度要求大约1-2TFLOPs)。”现在的手机GPU即便全速跑,与此都还有比较大的差距。

这个数据当然可能并不**,而且并没有标明更具体的计算环境和要达成的目标。但似乎要让现在的手机GPU硬跑光线追踪,难度还实在是颇大的。


来源:Imagination

如果我们抛开光线追踪对算力的贪婪需求不谈,光线追踪能够实现的特性并不仅限于游戏,更高阶的应用是AR(现实增强)。比如像上面这张图片,原场景是用摄像头实拍的,AR则在场景中加入了一辆汽车。要让这辆汽车更真实,就必须让汽车在光影方面融入到场景中去。当然这种应用的要求就比较高级了,因为相机需要分析场景的光分布,考量各种光线因素后加入到虚拟汽车的渲染中去。
除此之外,可畅想有关光线追踪的应用也与汽车电子相关——环视摄像头收集数据所呈现的画面,将光影也考虑进去,那么中控板显示的画面不仅更真实,而且也易于进行障碍物距离的估计和判断。

主流的光线追踪实现

相对硬核的3A大作玩家应该很清楚,前文提到的这些反光、阴影、折射等效果,并不是光线追踪特有的。前面提到的rasterization(光栅化)有时也能达到这样的效果。那么我们就不妨简单地谈一谈,什么是rasterization,以及光线追踪又是怎么回事。

Rasterization光栅渲染的过程,本质上也是一种将3D对象在2D屏幕上显示出来的技术。3D对象就是一堆三角形或多边形,构建起的不同形状、大小。三角形的角或者顶点,包含了很多信息,包括它在空间中的位置、色彩、贴图、法线等。而3D模型的这些三角形,要显示到屏幕上,则*终都需要将其转化为像素。这就是rasterization的过程。每个像素都会分配一个初始色彩值——这个值来自于三角形顶点中存储的数据。像素随后还会得到进一步的处理或者shading(着色),比如说基于场景中的光源来改变其色彩,并且应用一个或更多贴图,*终生成像素色彩。


本文摘自:网络  日期:2020-03-03
详情点击:ABB机器人代理商

 

联系热线:156 0178 5639 联系人:黄经理 联系地址:上海市宝山区富联一路98弄6号

技术和报价服务:星期一至星期六 8:00-22:00 ABB机器人系统集成商