directx是什么()

【简介】DirectX(Direct eXtension,简称DX)是微软公司创建的多媒体编程接口,是一种应用程序接口(API)。DirectX可以使基于win

【简介】

DirectX(Direct eXtension,简称DX)是微软公司创建的多媒体编程接口,是一种应用程序接口(API)。DirectX可以使基于windows的游戏或多媒体程序实现更高的执行效率,增强3D图形和声音效果,并为设计人员提供一个通用的硬件驱动程序标准,使游戏开发人员不必为每个品牌的硬件编写不同的驱动程序,同时也降低了用户安装和设置硬件的复杂性。DirectX已经广泛应用于微软Windows、微软XBOX、微软XBOX 360和微软XBOX ONE视频游戏的开发中。

功能介绍

Microsoft DirectX是一组技术,旨在使基于Windows的计算机成为运行和显示具有丰富多媒体元素(如全色图形、视频、3D动画和丰富音频)的应用程序的理想平台。DirectX包括安全和性能更新,以及许多涵盖所有技术的新功能。应用程序可以通过使用DirectX API来访问这些新功能。

功用

从字面上来说,Direct就是直接的意思,而后面的x则代表了很多意思。从这一点可以看出,DirectX的出现是为了给很多软件提供直接服务。

比如以前硬核玩家在DOS下玩游戏,装了之后就玩不了了。他们通常必须首先设置声卡的品牌和型号,然后设置IRQ(中断)、I/O(输入和输出)和DMA(访问模式)。如果这些设置中的任何一个错误,游戏声音都不会出来。这部分设定不仅让玩家们伤透了脑筋,也让游戏开发者们更加头疼。

为了让游戏能在很多电脑上正确运行,开发者在游戏制作之初就必须收集市场上所有声卡的硬件数据,然后根据不同的API(应用编程接口)编写不同的驱动。对于游戏制作公司来说,很难完成,所以当时很少有多媒体游戏。微软正是看到了这个问题,为众多厂商推出了一个通用的应用程序接口——DirectX。只要游戏是按照DirectX开发的,不管显卡和声卡的型号都可以玩,也能玩出最好的效果。当然前提是使用的显卡和声卡的驱动必须支持DirectX。

组成

DirectX由许多API组成,按其性质可分为四个部分:显示部分、声音部分、输入部分和网络部分。

显示部分

显示是图形处理的关键,分为DirectDraw(DDraw)和Direct3D(D3D)。前者主要负责2D图像加速。包括很多方面:我们用DDraw玩mpg,DVD电影,看图片,玩小游戏等。你可以理解为所有带下划线的部分都用DDraw。后者主要负责3D效果的显示,比如CS中的场景和人物,FIFA中的人物等。,都是用DirectX的Direct3D。

声音部分

声音部分最重要的API是DirectSound,不仅可以播放声音和处理混音,还可以增强3d音效和提供录音功能。上面这个声卡兼容性的例子是用DirectSound解决的。

输入部分

部分输入DirectInput可以支持很多游戏输入设备,可以让这些设备发挥出最佳状态和全部功能。除了键盘和鼠标,你还可以连接手柄,操纵杆,模拟器等。

网络部分

网络DirectPlay部分主要是针对具有网络功能的游戏开发的,提供了多种连接方式,如TCP/IP、IPX、调制解调器、串口等。,让玩家可以使用各种联网模式进行对战。此外,它还提供网络对话功能和安全措施。

分类

DirectX不是一个简单的图形API,它是微软开发的一个广泛使用的API。包含Direct graphics(Direct 3d+DirectDraw)、直接输入、直接播放、直接声音、直接显示、直接设置、直接媒体对象等多个组件。它提供了一整套多媒体接口解决方案。只是它在3D图形方面的出色表现,让它的其他方面显得黯淡无光。DirectX开发之初是为了弥补Windows 3.1系统图形和声音处理能力的不足,现在已经发展成为对整个多媒体系统各个方面都有决定性影响的接口。DirectX是一组底层应用编程接口(API),可以为Windows程序提供高性能的硬件加速多媒体支持。Windows支持DirectX 8.0,可以增强电脑的多媒体功能。使用DirectX可以访问显卡和声卡的功能,使程序能够提供生动的三维(3D)图形和引人入胜的音乐和声音效果。DirectX使程序能够轻松确定计算机的硬件性能,然后设置与之匹配的程序参数。该程序使多媒体软件程序能够在具有DirectX兼容硬件和驱动程序的基于Windows的计算机上运行,并确保多媒体程序能够充分利用高性能硬件。DirectX包含一组API,通过这些API可以访问高性能硬件的高级功能,例如3D图形加速芯片和声卡。这些API控制低级功能(包括二维(2D)图形加速),支持输入设备(如操纵杆、键盘和鼠标),并控制声音混合和声音输出。以下组成DirectX的组件支持低级功能:Microsoft DirectDraw Microsoft DirectDraw API支持快速访问计算机视频适配器的加速硬件功能。它支持在所有视频适配器上显示图形的标准方法,并且在使用加速驱动程序时可以更快更直接地访问。Draw为程序(如游戏和2D图形包)和Windows系统组件(如数字视频编解码器)提供了一种独立于设备的方法来访问特定显示设备的功能,而不需要用户提供有关设备功能的其他信息。

Microsoft Direct3D API (Direct3D):为大多数新视频适配器的内置三维颜色匹配功能提供接口。Direct3D是一种低级3d API,它为软件程序提供了一种与设备无关的方法,以便与加速器硬件进行有效而强大的通信。Direct3D包括专用CPU指令集支持,可以为新计算机提供进一步的加速支持。

Microsoft DirectSound API:提供程序和音频适配器的混音、声音播放和声音捕获功能之间的链接。DirectSound为多媒体软件程序提供低延迟混音、硬件加速和对声音设备的直接访问。当保持与现有设备驱动程序的兼容性时,提供此功能。

微软DirectMusic API:它是DirectX的一个交互式音频组件。与捕获和播放数字声音样本的DirectSound API不同,DirectMusic处理数字音频和基于消息的音乐数据,这些数据由声卡或其内置的软件合成器转换为数字音频。DirectMusic API支持乐器数字接口(MIDI)格式的输入,以及压缩和未压缩的数字音频格式。DirectMusic为软件开发人员提供了创建令人陶醉的动态音轨的能力,以响应软件环境中的各种变化,而不仅仅是用户直接输入这些变化。

Microsoft DirectInput API:为游戏提供高级输入功能,可以处理操纵杆和其他相关设备(包括鼠标、键盘和强大的反馈游戏控制器)的输入。

微软DirectPlay API:支持通过调制解调器、互联网或局域网连接游戏。DirectPlay简化了对通信服务的访问,并提供了一种使游戏能够相互通信而不受协议或在线服务限制的方法。DirectPlay提供了多种游戏服务,可以简化多媒体播放器游戏的初始化。同时还支持可靠的通信协议,保证重要的游戏数据不会在网络上丢失。DirectPlay 8.0的新功能是支持通过网络进行语音交流,可以大大提高基于多媒体玩家群体的游戏的娱乐性。同时,该组件还通过提供与其他玩游戏的人对话的功能,使团体游戏更具吸引力。

Microsoft DirectShow API:它提供了在您的计算机和互联网服务器上捕获和回放高质量多媒体文件的功能。DirectShow支持各种音频和视频格式,包括高级流格式(ASF)、音频-视频交错(AVI)、数字视频(DV)、动画专家组(MPEG)、MPEG音频层3 (MP3)、Windows Media音频/视频(WMA/WMV)和WAV文件。DirectShow还具有视频捕获、DVD播放、视频编辑和混合、硬件加速视频解码以及调谐广播模拟和数字电视信号的功能。

发展历史

DirectX 1.0

第一代DirectX非常不成功。刚推出的时候,很多硬件都不支持。当时基本采用的是专业的图形API——OpenGL,缺乏硬件支持成为其普及的最大障碍。

DirectX版是第一个可以直接读取硬件信息的程序。它提供了更直接的读取图形硬件的性能(例如,显卡上的块移动功能)以及声音和输入设备的基本功能(函数),使得开发的游戏可以加速二维(2D)图像。第一代DirectX并没有包含所有的3D功能,目前还处于起步阶段。

DirectX 2.0

DirectX 2.0在2D图形方面做了一些改进,增加了一些动态效果,采用了Direct 3D的技术。所以DirectX 2.0和DirectX 1.0差别很大。在DirectX 2.0中,采用两种模拟方法“平滑模拟和RGB模拟”来加速三维(3D)图像的计算。DirectX 2.0还采用了更友好的用户设置程序,并纠正了应用程序接口的许多问题。从DirectX 2.0开始,整个DirectX设计框架的雏形已经基本完成。

DirectX 3.0

DirectX 3.0是在1997年Windows95的最后一个版本发布后不久推出的。此时3D游戏开始深入人心,DirectX也逐渐被软硬件厂商认可。1997年有三个应用程序接口标准,分别是专业的OpenGL接口、微软的DirectX D接口和3DFX公司的Glide接口。当时3DFX公司是最有实力的显卡厂商,其Glide接口自然是应用最广泛的。但是随着3DFX公司和Voodoo显卡的没落,Glide界面逐渐消失。

DirectX 3.0是DirectX 2.0的简单升级版,对DirectX 2.0的改动并不多。包括对DirectSound(针对3D音效功能)和DirectPlay(针对游戏/网络)的一些修改和升级。DirectX 3.0集成了简单的3D特效,还不是很成熟。

DirectX 5.0

微软没有推出DirectX 4.0,而是直接推出了DirectX 5.0。该版本对Direct3D做了很大的改动,加入了雾化效果、Alpha混合等3D特效,增强了3D游戏中的空感和真实感,还加入了S3纹理压缩技术。

同时,DirectX 5.0在其他组件上得到了加强,在声卡和游戏手柄上得到了改进,支持更多的设备。所以DirectX发展到DirectX 5.0才真正成熟。此时DirectX的性能并不逊色于其他3D API,有后来居上的潜力。

DirectX 6.0

DirectX 6.0推出时,其最大的竞争对手之一Glide逐渐衰落,而DirectX则得到了大多数厂商的认可。DirectX 6.0增加了双线性过滤、三线性过滤等技术来优化3D图像的质量,游戏中的3D技术也逐渐进入成熟阶段。

DirectX 7.0

DirectX 7.0最大的特点是支持T&L,中文名字叫“坐标变换与光源”。3D游戏中的任何物体都有一个坐标。当这个物体移动时,它的坐标发生变化,也就是坐标变换。3D游戏中,除了场景和物体,还需要灯光。没有灯光,就没有3D物体的表现。无论是实时3D游戏还是3D图像渲染,带灯光的3D渲染都是最耗费资源的。OpenGL中虽然有相关技术,但之前从未在民用硬件中出现过。

在T&L出现之前,位置转换和照明都需要CPU来计算。CPU速度越快,游戏性能越流畅。使用T&L函数后,两个效果由显卡的GPU计算,让CPU从繁忙的工作中解脱出来。换句话说,如果你有一个T&L显卡,并使用DirectX 7.0,即使没有高速CPU,你也可以流畅地运行3D游戏。

DirectX 8.0

DirectX 8.0的推出引发了一场显卡革命。它首次引入了“像素渲染”的概念,同时拥有像素着色器和顶点着色器,在特效中体现了动态的光影效果。相比硬件T&L只实现固定光影转换,VS和PS单元更加灵活,使得GPU真正成为可编程处理器。这意味着程序员通过它们构建3D场景的难度要小得多。通过VS和PS的渲染,我们可以轻松地在水面上营造出真实的动态波纹光影效果。此时,DirectX的权威地位终于确立。

DirectX 9.0

2002年底,微软发布了DirectX9.0,DirectX9中PS单元的渲染精度已经达到浮点精度,传统的硬件T&L单元也被取消。新的VertexShader (VertexShader引擎)编程会比以前复杂很多。新的顶点着色器标准增加了流量控制,更多的常数,每个程序的着色指令增加到1024条。

PS 2.0拥有完全可编程的架构,可以即时计算纹理效果,动态映射纹理,不占用显存。理论上可以无限提高纹理映射的分辨率精度。另外,PS1.4只能支持28条硬件指令,同时操作6个素材,而PS2.0可以支持160条硬件指令,同时操作16个素材。新的高精度浮点数据规范可以使用多个纹理图,可操作指令的数量可以任意长,因此可以轻松实现电影级的显示效果。

通过增加顶点程序的灵活性,VS 2.0显著提升了旧版本(DirectX8)的VS性能。有了新的控制指令,通用程序可以代替以前专用的单独着色程序,效率提高了很多倍。增加循环作业指令,减少工作时间,提高加工效率;着色指令的数量从128个增加到256个。

增加浮点数据的处理功能。以前只能处理整数,提高了渲染精度,使最终处理的色彩格式达到电影级别。它突破了过去限制PC图形图像质量的数学精度壁垒,每一条渲染流水线都升级为128位浮点色彩,让游戏程序员更容易创作出更精美的效果,让程序员更容易编程。

DirectX 9.0c

与过去的DirectX 9.0b和Shader Model 2.0相比,DirectX 9.0c最大的改进是引入了对Shader Model 3.0(包括像素着色器3.0和顶点着色器3.0)的全面支持。例如,DirectX 9.0b的着色器模型2.0支持的顶点着色器指令的最大数量仅为256,像素着色器指令的最大数量仅为96。在最新的着色器模型3.0中,顶点着色器和像素着色器的最大指令数增加到了65,535。新的动态程序流程控制、位移贴图、MRT、亚表面散射亚表面散射、软阴影、环境和地面阴影的环境和地面阴影、全局照明等新技术特性,GeForce 6、GeForce 7系列和镭龙X1000系列立即为新一代游戏提供强大的动力,以及具有无与伦比的真实感和幻想性的复杂数字世界和逼真的人物在影视质量的环境中运动。

因此,DirectX 9.0c和Shader Model 3.0标准的推出可以说是DirectX发展的一个重要转折点。在DirectX 9.0c中,Shader Model 3.0除了取消了指令数限制,增加了位移贴图等新特性之外,还有更多专注于解决游戏执行效率和质量的特性。Shader Model 3.0诞生后,人们对游戏的态度从过去单纯追求速度转变为兼顾游戏质量和运行速度。因此,着色器模型3.0对游戏行业产生了深远的影响。

DirectX 10.0

它包含在Windows Vista操作系统中,不能单独下载和使用。

新的DirectX使您能够获得更好的图像显示质量,使多人游戏可扩展,并包括更好的音频效果。它增强了DirectDraw和Direct3D的接口,简化了应用程序扩展并提高了性能;改进的图形创建工具,更容易制作最好的3d角色和环境;点光和像素光使图像更真实;加强DirectSound和DirectMusic,简化其应用扩展;DLS2音频合成功能提高乐器音频的真实感;DirectInput的设备映射功能更容易支持设备;DirectPlay提高了多人游戏的性能和可扩展性;DirectPlay提供IP语音通信;DirectShow的API提供实时音频/视频合成和实时编辑;DirectShow支持Windows media音频和视频的读写(WMA和WMV);微软电视技术可以支持数字电视节目。当然最重要的是一些新游戏需要。DirectRedist通常每两个月更新一次,包含DirectX运行时的所有更新,可以替代之前发布的旧版本。适用于Windows XP、Windows Server 2003、Windows Vista等操作系统,但不支持Windows 9x/2000。最新的3D游戏等一般应用需要新的DirectX接口,强烈建议更新。

Vista DX10用户也需要。

显卡支持的DirectX版本已经成为评价显卡性能的标准。从显卡支持哪个版本的DirectX,用户就可以分辨出显卡的性能,从而选择适合自己的显卡产品。

DirectX 10.1

就像之前的DX版本一样,DX10.1是DX10的超集,所以会支持DirectX 10的所有功能,同时会支持更多的功能,提供更高的性能。

DX10.1的主要改进之一是改进的着色器资源访问功能,在多样本AA中读取样本时具有更好的控制能力。此外,DX10.1将能够创建自定义的下采样滤镜。

DX10.1还会有更新的浮点混合功能,对渲染目标更有针对性。渲染目标混合会有新的格式,渲染目标可以独立混合。阴影功能一直是游戏的重要特效,Direct3D 10.1的阴影过滤功能也将得到提升,有望进一步提升画质。

在性能方面,DirectX 10.1将支持多核系统的更高性能。而在渲染、反射和散射方面,Direct3D 10.1会减少对API的调用次数,从而实现很好的性能提升。

其他方面,DX10.1改进了很多,包括32位浮点滤波,可以提高渲染精度,提高HDR渲染的图像质量。全面的抗锯齿应用控制也将是DX10.1的亮点,应用将能够控制多重采样和超级采样的使用,并选择在特定场景中出现的采样模板。DX10.1要求每个像素至少有四个样本。

DX10.1还将引入一个更新的驱动程序模型,WDDM 2.1。与DX10的WDDM2.0相比,2.1有一些显著的改进。

首先,有更多的内容转换功能。WDDM2.0支持在处理一个命令或三角形后进行内容转换,而WDDM2.1可以让内容转换瞬间发生。由于GPU要同时并行处理多个线程,所以内容转换的即时性既能保证转换质量,又能提高GPU效率,减少等待时间。此外,由于WDDM 2.1支持基于进程的虚拟内存分配,处理GPU和驱动程序页面错误的方式更加成熟。

预计微软将在两周内(2008年7月中旬)宣布一个新的API:DirectX 11。消息人士称,微软将在7月22日举行的Gamefest 2008上公布新一代API。此前,我们得到了关于DirectX 11的最新消息,NVIDIA将在8月底的“NVISION 08”大会上对DirectX 11进行说明。

由微软组织的Gamefest 2008将于7月22-23日在西雅图举行。Gamefest 2008是微软一年一度的游戏技术讨论盛会,所以关于下一代游戏技术接口API的消息自然是不可或缺的话题。

DirectX 11引入的最大新技术特性无疑是镶嵌/位移。我们还听说多线程渲染和计算着色器也将是DirectX 11中的重要环节。另外,据说在DirectX 11中也会引入Shader Model 5.0。具体细节还不清楚,光线追踪和光栅化技术的支持也没有提到。

DirectX 11

2009年1月9日星期五,微软将向公众发布Windows 7客户端的测试版。前一天,1月8日,微软将率先发布Windows 7服务器版Beta 1测试版。

在微软发布的Windows 7Beta测试版中,一些已经安装使用的用户发现DirectX 11已经被收录。DirectX 11作为一个3D图形界面,不仅支持未来的DX11硬件,在向后兼容性上也支持目前的DirectX 10和10.1硬件。DirectX 11增加了新的计算着色器技术,可以让GPU做更一般的计算工作,而不仅仅是3D计算,这可以鼓励开发者更好地使用GPU作为并行处理器。

微软发布的Windows 7测试版中已经包含了DirectX 11。

此外,DirectX 11还支持tessellation技术,有助于开发人员创建更加细腻平滑的模型,实现高质量的实时渲染和预渲染场景。多线程是DirectX 11的另一大亮点。DX11可以更好的利用多线程资源,让游戏更有效的利用多核处理器。

DirectX 11.1

2011年10月15日,微软发布白皮书《Windows开发者预览版中的Windows驱动模型增强》,洋洋洒洒地介绍了Windows 8中图形技术的改进。根据白皮书,Windows 8将支持新的显示驱动模型WDDM1.2,高于Windows 7 WDDM 1.1,但同时将放弃服务器系统对XDDM的支持,转向WDDM。

DirectX最关键的当然是Direct3D 11.1的推出,以及平滑旋转、立体3D、D3D11视频等功能技术。微软表示,只要能利用好DirectX的优势,即使是低端硬件也能在Windows 8上实现更好的性能。

DirectX 11.2

2013年6月28日,微软发布Directx11.2(Alpha版)。它的一个重要特性是允许游戏使用系统内存和视频内存来存储纹理数据。微软的安托万·勒布隆在BUILD大会上演示了它主要使用内存而不是视频内存来存储9GB的纹理数据。这个特性对于未来的高清游戏意义重大。不过有一个问题是,DirectX 11.2不支持Windows 8和之前的操作系统,只支持Windows 8.1和次世代主机Xbox One。

DirectX 12

2014年3月21日,微软正式发布新一代API DirectX 12。虽然不是全新的设计,虽然细节没有公布的特别多,但至少不是对Mantle的直接复制,有很多微软和合作伙伴设计的新东西。

DX12最重要的变化是底层API,很像AMD Mantle。它比以往任何时候都更深入硬件抽象层,同时可以减少CPU和GPU的过载。具体包括应用可追踪的GPU流水线、控制资源状态转换(比如从渲染目标到纹理)、控制资源重命名、少API和驱动追踪、可预测属性等等。

另外,DX12大大提高了多线程效率,可以充分发挥多线程硬件的潜力。DX11在这方面受到CPU性能的严重制约,主要是不能有效利用多核。微软声称,微软对多核CPU的利用率几乎是线性增长的,这意味着四核可以是单核的近四倍。

DirectX 12旗舰版

2020年3月20日,微软正式发布了新一代游戏图形API:DirectX 12 Ultimate,NVIDIA第一时间表示将完美支持其RTX 20**系列显卡。

资深玩家都知道,从DirectX 7.0开始,DirectX的每一次版本更新都会带来图形技术的重大升级(比如DirectX 7.0首次支持硬件T&L,DirectX 8.0/8.1支持像素着色器&顶点着色器……)。那么DirectX 12旗舰版(以下简称DX12U)相比DX12有什么升级,下一代黑科技是什么?

四大关键黑科技,DX12U升级很实在。

directx是什么()插图

首先,DirectX 12旗舰版有四个新特性,分别是DirectX光线追踪1.1、可变速率渲染、网格渲染器和采样器反馈。

DirectX光线跟踪1.1

DirectX光线追踪(DXR)是微软在2018年为DirectX 12推出的新功能,使其支持实时光线追踪处理。1.0 DXR版本在软件功能上比较基础。可以说是围绕图灵架构的硬件实现来设计的。当时并没有从软件开发的角度考虑如何实现光线追迹。1.1版本扩展了DirectX 12在光线追踪方面的软件特性,使其更加高效,对开发者更加友好。主要有三点:

允许GPU直接调用光线追踪

运行在GPU上的着色器可以直接调用1.1版本中的光线跟踪,而不需要转回CPU来调用。该函数对于自适应光线跟踪场景非常有用,尤其是在基于着色器的剔除、排序、分类和细化等场景中。基本上以后的光线追迹工作都可以在GPU上准备,马上生成。

按需加载光线跟踪着色器

当玩家在游戏世界中移动,新的物体变得可见时,流媒体引擎可以根据此时的屏幕需求加载新的光线跟踪着色器,从而提高处理效率。

内嵌光线追踪

线内光线跟踪是目前基于动态着色器的光线跟踪的一种替代形式,你可以把它理解为一种简化的光线跟踪。开发人员将对内嵌光线跟踪过程拥有更大的控制权,可以在任何着色阶段调用它,包括计算着色和像素着色。它可以与基于动态着色器的传统光线跟踪混合使用。对于简单场景,线内光线跟踪将提供更好的性能,而对于复杂场景,基于动态着色器的光线跟踪将提供更好的运行结果。

可变速率渲染

可变速率着色是NVIDIA在其图灵GPU上首次推出的加速渲染功能。具体可以参考我们的课堂文章:超级课堂(212):为什么VRS可变速率明暗处理可以增加帧数?这里先简单说一下它的原理,不赘述。

简单来说,VRS的原理就是通过改变单个像素着色器操作处理的像素数量来改变屏幕不同区域的着色质量。简单来说就是可以改变同一张图片不同部分的渲染精细度,其目的是增加图片帧数。

directx是什么()插图(1)

不开启VRS时,也就是正常情况下,一帧的所有像素独立上色;打开VRS后,原来独立的像素被分成像素块,它们会共享着色结果。这时GPU会根据程序员设定的重要程度,给所有像素块分配不同的着色细度。以上图为例。车辆和远处部分的像素仍然是独立着色的,但是快速变化的道路和路边的像素块是一起着色的。这时候因为节省了显卡的计算资源,游戏的帧数就会增加。

在英伟达之外,英特尔已经在冰湖处理器第11代核显中加入了对VRS的支持,而AMD暂时没有相关支持,不过他们也已经宣布将在RDNA 2架构中加入相关支持。

网格着色器:下一代几何处理流水线的基础

在过去的二十年里,传统的几何图形处理流水线增加了几个阶段,但其核心思想仍然是基于传统的光栅预着色方法,在今天看来过于复杂,拖累了处理效率。硬件和软件开发者都想改变这种情况,所以DirectX 12推出了Mesh shader,为开发者提供了前所未有的可编程性。

directx是什么()插图(2)

在原来的流水线中,GPU硬件的并行能力是隐藏的,或者说是自动化的,硬件会帮助打包操作,然后并行执行。这样效率很高,但是也有一个问题——灵活性不足。

网格着色器完全改变了这一过程。它不再是单个顶点或图元的单个函数,而是在整个计算线程组中工作。在一个阶段,网格着色器的每个线程都针对一个顶点,而在另一个阶段,每个线程都针对一个图元。整个线程组的内存是共享的,访问灵活性很高。同时,开发者对硬件有更大的控制权,甚至可以激发新的技术,节省内存使用和内存带宽。

directx是什么()插图(3)

除了网格着色器,还有一个可选的放大着色器阶段,它在网格着色器之前运行,计算需要多少个网格着色器,并启动它们。

directx是什么()插图(4)

采样器反馈

最后一个大功能是采样器反馈。先说效果:视觉质量更好,加载时间更短,卡顿更少。它的核心思想其实就是让程序只加载必要的纹理,把资源给更需要的地方。

采样器反馈允许游戏引擎跟踪纹理采样器的使用,以便后者可以向引擎提供反馈。方法是生成一个“反馈图”,它记录了不同纹理区域的不同驻留级别,然后程序可以根据这些反馈信息做出决策——包括如何使用纹理采样器,以及在视频内存中保留哪些资源。这比原来的过程更准确,可以更好地分配计算资源。简单来说,它的实际效果就是用更少的显存渲染更大更细致的纹理。

directx是什么()插图(5)

此外,采样器反馈还允许一项新技术——纹理间着色空。它可以在不栅格化的情况下对物体进行着色,其思路是缓存并重用着色结果,从而减少GPU的计算量。

总结:面对新的图形架构和下一代主机

在微软推出DirectX 12 Ultimate之后,NVIDIA和AMD很快宣布已经/将要支持它。事实上,DirectX 12 Ultimate的大部分新功能都可以说是基于图灵架构的。NVIDIA在设计图灵架构时保留了相当多的新功能,没有公开。AMD目前只能说是跟随者。要使用新功能,我们必须先等到RDNA 2架构结束。

DirectX 12 Ultimate的这些功能显然有两个共同的目标,一是提高开发者对硬件的控制,二是提高整体的计算效率。这也是为了下一代主机——Xbox系列X和传说中的Xbox系列s,很难说我们还要等多久才能看到这些功能应用到实际游戏中——至少在今年。我们需要等待引擎开发者和游戏开发者对新一代主机进行适配或进行专门开发,才能也看到这些技术在PC游戏中的应用。

以上是DirectX 12 Ultimate的详细解读。由于我不是业内人士,对这些特性的理解只是一个点,难免存在认知上的错误。请指正。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/182152.html

发表回复

登录后才能评论