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

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

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

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

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

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

商人追逐图形业界最大利益化

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

推动这一切的“商人”便是微软。​

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

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

DirectX 9.0C:一切图形特效

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

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

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

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

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

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

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

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

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

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

​新指令格式shader实例:GS

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

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

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

DirectX 11:多样化提升整体效率

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

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

​Thread与kernel的关系

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

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

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

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

​Compute Shader的树状结构

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

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

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

DirectX 12:更高效版的DirectX 11

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

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

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

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

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

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

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

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

​​​​

展开阅读全文

页面更新:2024-03-21

标签:商人   图形   以假乱真   虚拟现实   高效   微软   线程   程序员   指令   像素   单元   特效   效率   命令   视觉   状态   玩家   产业   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top