推荐关注:

火鸟双搜商人、玩家?是什么造就了3D图形产业的“以X乱真”?

收集整理:九站网 更新时间:2021-04-16 18:15 文章来源:禾谁说

火鸟双搜商人、玩家?是什么造就了3D图形产业的“以X乱真”?生活在时下这样一个充满便捷的时候无疑是非常幸福的,作为一名电脑游戏爱好者,我们都知道,现在好多游戏以及应用程

原标题:《商人、玩家?是什么造就了3D图形产业的“以X乱真”?》

火鸟双搜商人、玩家?是什么造就了3D图形产业的“以X乱真”?生活在时下这样一个充满便捷的时候无疑是非常幸福的,作为一名电脑游戏爱好者,我们都知道,现在好多游戏以及应用程序都离不开一种叫做DirectX的技术,正是在它的加持下,才能让我们享受到图形界进步为我们带来的各种便利,尤其是我们体验大型游戏以及感受3D画面时,享受足以以X乱真的连贯画面,是偶然?当然不。

火鸟双搜

火鸟双搜这一切都要归功于一项名为视觉虚拟现实理论的提出,换言之,我们日常的游戏体验并非提前录制好的画面场景,而是充满了随机X与自由度,这就需要通过数学的方式构建一个可以被硬件执行的函数集合,程序员会在这个集合内将一切可视的信息进行渲染、演算、操作,达到无限接近“现实”的地步,在将图像输出到输出装置上。

火鸟双搜

火鸟双搜但要知道,最初的运算能力以及算法是无法与当下相媲美的,这就也导致,现在看到相对简单的目标变成了一个几乎无法达到的目的。

火鸟双搜商人追逐图形业界最大利益化

火鸟双搜值得庆幸的是,这个世界上,总是有着一群追求利益的商人,只要有市场的地方,商人便会追本逐利。而当时他们看中的市场便是游戏。这一点,从当下游戏产业的蓬勃发展足以证明,图形界造就了游戏产业的蓬勃,游戏也促进了图形业界的前进。

火鸟双搜推动这一切的“商人”便是微软。

火鸟双搜

火鸟双搜而DirectX便是微软创建的多媒体编程接口,是一种计算机成为运行和显示具有丰富多媒体元素的应用程序的理想平台。而之所以3D图形产业能够越来越接近真实的实时演算图像,离不开微软自身强大的影响力以及其对图形编程领域的认知,可以说正是在微软DirectX的影响下,整个3D图形产业才坚定不移的向视觉虚拟现实这一目标前进。

DirectX9.0C:一切图形特效

碍于篇幅限制,我们今天直接从光栅化的一切特效得到真正实现的DirectX9.0C说起。虽然在这之前,DirectX已经经历了两个划时代的API引入(DirectX7引入T&L,DirectX8引入shader),让人类终于可以准确而又实时的操作纹理上像素的.se彩,但由于精度的问题,数据的上下溢等无法解决,这也就导致,所谓的真实特效不过是“错误”的特效,并没有现实意义。

之所以说DirectX9.0C的出现彻底改变了这一问题,主要原因在于微软在DirectX中引入了动态程序流控制,也就是将分支和跳转能力彻底开放,同时通过多目标渲染以及延迟渲染保证光栅化的整体效率。简单而言,DirectX9.0C的出现,基本上解决了ALU利用率和效率意外的一切问题。

而正是将分支和跳转能力彻底开放的举动让程序员拥有了尽情堆砌的能力,在当时,DirectX9.0C成了DirectX史上支持度最高的版本。

DirectX10:效率催促统一架构的出现

虽然DirectX9.0C很成功,但要知道,传统的shader单元由于需求不同,会被分解为Vertexshader单元和Pixelshader单元,虽然各司其职,但当某一段单元全力运作时,另一部分单元便会处于欠载状态。无法将指令密度做到完全平均化也就导致,DirectX9.0C虽然成功,但shader单元的动作效率并不高。

有时候真的不得不佩服追求效率的商人思维中对于事物的简单化处理方式——既然分立会出现问题,那就统一起来。

新指令格式shader实例:GS

全新的API——DirectX10应运而生,将VertexShader和PixelShader单元统一后有了一个新的名字:US(UnifiedShader)单元。这就意味着指令可以直接面向底层的ALU,而不是之前DirectX9.0C时代的特定单元,硬件层面的US可以吞吐一切shader指令(不会进行修改)。

可以说,DirectX10的出现意味着商人将视觉功能的放缓,开始转向提升shader的效率。在这一过程中,DirectX10虽然不会对shaderprogram的编写模式提出任何的强迫X的改变要求,但由于US直面ALU的特点,程序员可以在DirectX10环境下大胆的直接使用1D、2D指令以及各种算数函数,对于DirectX10来说,更加灵活的shader让人类在接近视觉虚拟现实的道路上更近一步。

DirectX11:多样化提升整体效率

统一架构带来了DirectX10在效率方面的提升,但却只是单纯通过统一shader的方式直接向ALU提供更加领先的shader,而如果想要提升图形处理的效率,便需要并行度和shader多样X的需求,在这方面,DirectX11要更复杂的多。

Thread与kernel的关系

要知道,在编程的视角下,一个像素不管多复杂,它所对应的shaderprogram都可以构成一个线程(Thread),而实际图像中像素的不同导致每个像素之间互相影响,这种相互关系和程序的固定格式使得多个Thread组成一个kernel。根据复杂程度的不一,处理的先后顺序也不同,如何平衡好Thread和kernel之间效率的关系有利于整个图形流水线面对任务时的整体效率。

但在传统的API环境下,这二者属于串行关系,kernel会被事先排进队列,依次通过线程仲裁结构被泵送到整个运算部分的外围,然后被接力成一个个的Thread供运算单元去执行。当整个kernel中所有的Thread被执行完离开寄存器后,下一个kernel进入,这样的方式并不利于ALU动作效率的提升。

ComputeShader的树状结构

而在DirectX11中,微软直接引入了immediateContext(立即执行)和DeferredContext(延迟执行),不同优先级的Thread和kernel分别执行不同的部分,两部分分别管理自己的Thread和kernel,只有在需要的时候才会合并成一个并行的队列,并在正确的时刻向他们同时输送到不同的空闲可用ALU团簇甚至ALU当中,已达到运算密度最大化的目的。同时,由于传统合适的shader无法满足业界更加灵活高效的需求,微软想出了ComputerShader。

通俗理解便是,因为并行kernel,导致线程之间的数据共享可以通过DeferredContext和重组的缓存空间来完美的解决,如果硬件支持非可预期延迟的随机读写,此时引入cache体系,通过ComputerShader便能更高的管理并行Thread甚至kernel。此外,程序员还可通过ComputerShader全方位掌控像素以及对应的Threada,哪怕添加再复杂的交互关系也不用担心出现延迟大的问题。也因此,它可以实现很多传统PixelShader无法实现的高级特效,例如景深特效DOF。

DirectX12:更高效版的DirectX11

对于DirectX12的效率提升,我们大可看做是同建立在DirectX11基础上的效率提升,也就是俗称的高效版。虽然说DirectX12在编程模式上较DirectX11有很大的不同,允许应用程序更接近Metal。除在DX11的基础上加缓冲,加uX和uX操作,改线程并行度以外。DX12还做了这些事。

DirectX12基于命令列表引入了一个新的工作提交模型,该命令列表包含在GPU上执行特定工作负载所需的全部信息。每个新命令列表都包含诸如要使用的PSO,所需的纹理和缓冲区资源以及所有绘制调用的参数等信息。由于每个命令列表都是自包含的并且不继承任何状态,因此驱动程序可以预先以自由线程方式预先计算所有必需的GPU命令。唯一需要的串行过程是通过命令队列向GPU最终提交命令列表,这是一个高效的过程。

而因为延时导致开销增大的问题,DirectX12通过将大部分管道状态统一到不可变管道状态对象(PSO)来解决此问题,这些对象在创建时已完成。这允许硬件和驱动程序立即将PSO转换为任何硬件本机指令,并且执行GPU工作需要状态。PSO在使用中仍然可以动态更改,这意味着显着降低绘制调用开销,并且每帧更多绘制调用。

此外,DirectX12还提供了一个描述符堆,它可以为GPU提供一种机制,直接将资源描述(描述符)写入内存,以极低成本进行操作,以提高X能。同时,DirectX12还允许在Shader中进行动态索引资源,提供前所未有的灵活X并解锁新的渲染技术。

统一构架以来,DirectX为我们在游戏界以及我们周围的生活带来了巨大的变化,但总的来说,视觉虚拟现实的演变,除了科学家和程序员,离不开商人在这一过程中孜孜不倦的推动。

火鸟双搜商人、玩家?是什么造就了3D图形产业的“以X乱真”?生活在时下这样一个充满便捷的时候无疑是非常幸福的,作为一...

阅读全文

띲띪띺火鸟双搜商人、玩家?是什么造就了3D图形产业的“以X乱真”?》一文由九站智能AI收集整理,不代表本站支持其观点
如无意侵犯您的权益,请及时与我们联系,我们将在第一时间处理您的诉求。

热门频道推荐 建站经验 策划盈利 搜索优化 业界动态 境外动态 网络评论 传媒播报 产品运营 交互设计 网站推广 免费资源 网络游戏 网页游戏 电商要闻 电商分析 移动通讯 数码咨讯 移动应用 数码评测 创业模式 创业资本 创业点评 创业经验 电商淘客 电商微商

九站草根门户 服务草根站长 集结网络群体的力量!
免责申明:本站为非盈利性网站,不刊登或转载任何完整的新闻内容,其版权归原作者所有。如无意侵犯您的权益,请及时与我们联系,我们将在第一时间处理您的诉求。
PHP程序订制开发,九站系统销售联系QQ 1142088012 蜀ICP备06021074号-10 Copyright 2011-2022 © Www.O9z.Net .All Rights Reserved