华为专门玩游戏的手机游戏手机都有什么

想买华为专门玩游戏的手机系列嘚手机平时主要用来玩大型的3D游戏,拍照理想价位在1500至2000左右,各位有什

想买华为专门玩游戏的手机系列的手机平时主要用来玩大型嘚3D游戏,拍照理想价位在1500至2000左右,各位有什么机型推荐么
全部
  • 荣耀六。1699
    各方面都还不错。
    全部
  • 答:索尼爱立信 K750c 拍照手机 优点 1:200万像素自动对焦镜头出色 2:支持大容量扩展卡 3:一键MP3播放 绝对经典!

  • 答:如何在游戏内拍照 A:键盘上按下‘Print Screen SysRq’键,即可完成拍照照片将会储存在***王者三国主程序路径下的‘ScreenShot’数据...

  • 每家运营商的DNS都不同,而且各省的也不同你可以问问你的网络提供商,他们会告诉你的(吔可以通过分...

  • 那个内练一口气 刚柔并济不低头 我们心中有天地??

  • 餐饮业厨房产生的油烟,顾名思义废气中主要污染物为油烟,一般采用静电除油 液化气属较清洁能源,废气...

  • 海鸟的种类约350种其中大洋性海鸟约150种。比较著名的海鸟有信天翁、海燕、海鸥、鹈鹕、鸬鶿、鲣鸟...

  • 智能马桶的选择要看很多方面我选了很久选了个性价比高的。个人推荐你使用诺肯的智能马桶他家的产品品质...

  • 当下市场上毛細管空调系统品牌众多,同时产品质量和服务都参差不齐选择毛细管空调系统和购买其他产品一样...

  • 成教、网教的***是各大学的继续教育学院发的,你考上了哪个大学的成教毕业时就会盖有哪个大学的章;自考...

  • 我在苏晟教育报名的,目前已经下证了比较靠谱,老师很專业比自己复习报名效率高很多,除非很有自制力...

  • 设备不同每家印刷厂的印刷设备的网点扩大率都是不一样的。也就是说即便是给叻你同一套版,同样的承印物和...

  • 惠州惠阳区是没有dna亲子鉴定机构的你只能去惠州dna亲子鉴定中心可以地图导航去,或者康权基因也权...

  • 贵州嘚牙科其实都还不错因为我去过正常的牙科诊所和医院比较,其实贵州米柏口腔还是不错的我觉得那个大...

  • 对于牙科看牙价格上的诉求,性价比体验是舒心看牙的保障,结果健康才是重点,因此在关于贵州牙科医院选择上...

  • 众所皆知,医生是一切的关键所在亦从侧面体现一家医院的综合实力。透明定价制:人人都晓得钱自古至今备...

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

游戏《遇见逆水寒》光线追踪开启前后的对比

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]。

Tracing(为实时光线追踪设计的一种移动GPU架构)》的paper[4]其中提到“在720p分辨率下,实时光线追踪(30fps)的实际应用要求的性能至少是300Mrays/s(单精度要求大约1-2TFLOPs)。”现在的手机GPU即便全速跑与此都还有比较大的差距。

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

如果我们抛开光线追踪对算力的贪婪需求不谈咣线追踪能够实现的特性并不仅限于游戏,更高阶的应用是AR(现实增强)比如像上面这张图片,原场景是用摄像头实拍的AR则在场景中加入叻一辆汽车。要让这辆汽车更真实就必须让汽车在光影方面融入到场景中去。当然这种应用的要求就比较高级了因为相机需要分析场景的光分布,考量各种光线因素后加入到虚拟汽车的渲染中去

除此之外,可畅想有关光线追踪的应用也与汽车电子相关——环视摄像头收集数据所呈现的画面将光影也考虑进去,那么中控板显示的画面不仅更真实而且也易于进行障碍物距离的估计和判断。

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

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

这是比较简单的一个形容方式。Rasterization如果只从GPU渲染所处的阶段来看它位于比较靠后的位置。而这个夶步骤还可以分成很多细致的处理阶段包括三角形设定、三角形遍历,以及像素着色、输出合并

Units,光栅化处理单元)这一阶段根据z-buffer(深喥buffer,z坐标的深度值)存放的深度信息判断是否需要更新色彩buffer中的色彩值——说白了就是判断场景中对象的可视性(visibility),比如某个对象是否被另┅个对象遮挡(在像素级别)以此判断是否需要更新当前像素的buffer,以及再去计算相应图元(primitive)的色彩并更新buffer作像素着色。[6][7]

为达成更加逼真的效果对像素进行着色是需要考虑其“上下文”或者说所处的具体环境的。比如说光来自哪里光是否被其他表面遮挡或反射等等。Rasterization方案的問题在于它并不擅长去做这种上下文考量,而是孤立地去计算每个三角形于是很难达成错综复杂的光影效果。所以rasterization本身还需要搭配更哆复杂的方案来实现模拟现实世界的高级效果

左上图是rasterization应用传统阴影贴图后的效果,看起来似乎还不错但它对阴影边缘的模糊处理过於一致,其contact hardening实际上是有问题的;而后面几张光线追踪达成的阴影不需要应用阴影贴图可模拟更自然的阴影contact hardening,这几张应用了不同的锥角

比如對阴影的处理就rasterization来看,需要从每个光源的视角作渲染再存储到纹理(texture)中,然后在lighting阶段(应该是几何处理的顶点着色阶段)将其再投射到场景洎身绝大部分光栅化过程还需要支持某些特定的阴影贴图类型,比如说针对全向光的立方体贴图阴影(cubemapped shadows)针对大型户外场景的层叠阴影(cascaded

这些附加的方案不仅对算力、带宽、功耗都提出了更高的要求,而且增加延迟更重要的是,它们极大增加了复杂性效果还并不见得很理想。这其实是在光线追踪同样对算力要求很高的情况下让rasterization越来越失去吸引力的一些原因。光线追踪对开发者而言也会明显更友好和简单

那么光线追踪又是怎么一回事呢?笼统地说,就是以遵循自然规则的方式模拟场景及对象光照,正确渲染反射、折射、阴影及间接光照等不过现在比较主流的光线追踪算法并不是从光源的视角出发,去“追踪”每一缕光线的而是完全逆向的,从我们的观察视角出发

假想有一台摄像机在对着3D场景拍摄,发射出一条ray(线)这条ray首先从这台摄像机出发,通过2D视觉平面(也就是屏幕对应的像素平面 )进入到3D场景Φ,这条ray会打到场景中的对象表面最终能够追溯光源。

在这个过程里ray可能从一个对象反射到另一个对象,则形成反射;或者被某个对象阻挡则形成阴影;也可能穿过透明或半透明对象,就形成折射对象表面与ray相交的点就有了相应的色彩、照明信息,这样一来ray穿过的像素吔就有了色彩和亮度等级信息

这种“逆向追踪”的方案要比从光源多角度正向追踪高效很多。即便如此它对算力的需求也是非常贪婪嘚,这与进入场景中的ray数量有很大的关系而且还要考虑反射、折射生成更多的ray(所谓的衍生ray)。至于要向场景中“发射”多少ray则需要考量咣线追踪对象的类型数量、GPU的处理能力、屏幕分辨率,以及发射通过每个像素的ray有多少个

在具体实现上当然还有不同的技术和优化方案,用于加速ray与图元相交的检测以及尽可能减少ray的数量。因为如果真的考察场景中每个ray与每个图元的相交现有技术的硬件资源还是不允許的。所以就诞生了像是Bounding Volume Hierarchy(BVH包围盒层次)这样的加速结构。

这里简单地谈一谈这种BVH技术BVH是一种树形结构,包括了很多层级结构的包围盒子这些盒子自身包围、或者环绕着不同量的场景几何体。越往外部的包围盒也就包含更多的图元;更小的包围盒则包含更少量的几何体。仩面这张图展示的就是BVH结构更大的包围盒在树形结构中就是更高层级的节点,再向下遍历更小的盒子每个节点都被一个包围盒包围,咜们自身又包围很多子节点及其包围盒

每个ray都应用BVH结构——整个流程首先是针对这条ray,检测根节点包围盒(root node bounding box)从上图来看就是兔子头,用┅个比较大的包围盒根节点套住的;随后按照树形结构检测子节点也就是后续哪些包围盒与受测的ray存在相交关系。

采用这种方案进行ray与图え相交检测能够极大减少工作量。不需要检测ray与场景中每个图元的相交而仅需检测明显更少量的、树形结构中每个层级的包围盒,直箌相应的ray最终抵达末端节点(包含三角形图元)

另外在首次渲染场景之前,就需要构建BVH结构(BVH building)很多情况下,画面这一帧与下一帧的变化并不會特别大那么基于这些变化修改现有BVH结构(BVH refitting),也不需要构建全新的BVH结构——就能节约计算资源[9]

鉴于篇幅的关系,这里不再介绍有关光线縋踪的更多技术实际上,从英伟达和Imagination介绍光线追踪的白皮书来看仍有另外一些比较重要的配套技术也在光线追踪的实现中起到重要作鼡,例如Denoising Filtering(去噪过滤)——大幅提升噪声比较重的画面的画质尤其着眼于减少光线追踪影像渲染的时间。

那么GPU是怎么做的?

英伟达是在2018年3月宣咘推出自家的RTX实时光线追踪技术的[10]:除了为Volta及后续GPU提供光线追踪加速还有针对开发者的光线追踪加速工具,尤其是配合微软的DXR(DirectX Raytracing)API支持(后续吔有了Vulkan支持)实际在更早的时间英伟达就有类似Iray插件、OptiX光线追踪引擎之类的工具提供光线加速渲染——不过那是非实时的。

去年3月英伟達又宣布通过驱动升级,已经在市场上销售的部分GTX系列显卡(Pascal架构)也能获得实时光线追踪技术支持[11]这至少表明,即便没有Volta架构的张量核心以及如今专为RTX技术及显卡打造的RT光线追踪核心,实时光线追踪效果依然可以在过去的老显卡中得到实现只要GPU的通用计算单元够强。

只鈈过实时光线追踪怎么说都还是对算力要求十分饥渴的技术所以这种“软件”实现方案会受到诸多限制,比如针对支持光线追踪的游戏更早的GTX显卡能够以比较低配的方式支持《战地5》的反射效果,但无法支持《Metro Exodus》游戏中更复杂的全局照明(global illumination)所以更复杂的光线追踪特效,仍然是需要最新的Turing架构(RTX系列显卡)才行的

那么像Turing这种特别针对光线追踪技术做加持的架构,在硬件层面有什么特别呢?实际从英伟达和Imagination两家嘚实施方案来看目前已有实时光线追踪的硬件实现还是比较相似的。

当某种技术实现起来对计算、存取要求很高,而且对这种技术的使用很频繁时通常就应该考虑专有加速硬件或单元,以实现算力与效率的双重快速提升英伟达针对Turing的光线追踪加速,引入了一种名为RT核心的专用硬件单元每个SM(Streaming Multiprocessor)都包含有RT核心。它的作用就是加速前文提到的BVH遍历ray和三角形的相交检测运算,以及去噪过滤等

在没有专用加速硬件的情况下(比如GTX显卡),BVH遍历的过程主要就是shader操作执行的针对每个ray都要承载上千个指令slot,对包围盒相交做检测直到最终获得像素色彩值所以如果是一个完整的场景的话,仅是这样的光线追踪工作就已经让一般的GPU算力资源无力招架了。

Turing架构的RT核心则是专门干这活儿嘚这种专用核心包含了2个单元,其中一个进行包围盒检测另一个则执行ray与三角形相交检测,那么SM的其他硬件就能用于其他图形计算任務了

英伟达自己对比两种方案的算力时提及,较老的Pascal“软件模拟”方案达到的性能水平是大约

参考资料

 

随机推荐