功能介绍
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图像加速。它包括很多方面:我们在播放mpg、DVD电影、查看图片、玩小游戏等时都使用DDraw。你可以理解为所有划线部分都使用了DDraw。后者主要负责3D效果的显示,比如CS中的场景和人物,FIFA中的人物等等,都使用了DirectX的Direct3D。
声音部分
声音部分中最重要的API是DirectSound。除了播放声音和处理混音之外,它还增强3D 音效并提供录音功能。我们之前给出的声卡兼容性示例是通过使用DirectSound来解决的。
输入部分
输入部分DirectInput可以支持很多游戏输入设备,这可以让这些设备充分发挥其最佳状态和全部功能。除了键盘和鼠标之外,还可以连接控制器、摇杆、模拟器等。
网络部分
DirectPlay的网络部分主要是针对具有网络功能的游戏而开发的。它提供了多种连接方式,TCP/IP、IPX、Modem、串口等,让玩家可以使用各种联网方式进行比赛。此外,它还提供网络会话功能和保密措施。
分类
DirectX 不是一个简单的图形API。它是由微软开发的广泛使用的API。它包括Direct Graphics(Direct 3D+Direct Draw)、Direct Input、Direct Play、Direct Sound、Direct Show、Direct Setup、Direct Media Objects等组件,提供了一整套多媒体接口解决方案。只是其在3D图形方面的出色表现,让其其他方面显得乏善可陈。 DirectX最初是为了弥补Windows 3.1系统图形和声音处理能力的不足而开发的。现在它已经发展成为对整个多媒体系统的各个方面都具有决定性影响的接口。 DirectX 是一组低级“应用程序编程接口(API)”,为Windows 程序提供高性能、硬件加速的多媒体支持。 Windows 支持DirectX 8.0,可增强计算机的多媒体功能。使用DirectX 访问图形和声卡的功能,使程序能够提供逼真的三维(3D) 图形以及身临其境的音乐和音效。 DirectX 使程序能够轻松确定计算机硬件的功能,然后设置与之匹配的程序参数。该程序使多媒体软件程序能够在具有DirectX兼容硬件和驱动程序的基于Windows的计算机上运行,同时确保多媒体程序能够充分利用高性能硬件。 DirectX 包含一组API,可提供对高性能硬件(例如3D 图形加速芯片和声卡)的高级功能的访问。这些API 控制低级功能(包括二维(2D) 图形加速)、支持输入设备(例如操纵杆、键盘和鼠标),并控制音频混合和声音输出。构成DirectX 的以下组件支持低级功能: Microsoft DirectDraw Microsoft DirectDraw API 提供对计算机视频适配器的加速硬件功能的快速访问。它支持在所有视频适配器上显示图形的标准方法,并在使用加速驱动程序时提供更快、更直接的访问。 DirectDraw 为程序(例如游戏和2D 图形包)和Windows 系统组件(例如数字视频编解码器)提供了一种独立于设备的方式来访问特定显示设备的功能,而不需要用户提供该设备。有关功能的附加信息。
Microsoft Direct3D API (Direct3D) : 为大多数新型视频适配器中内置的3-D 色彩校正功能提供了一个接口。 Direct3D 是一种低级3-D API,它为软件程序提供独立于设备的方法,以便与加速器硬件进行高效、强大的通信。 Direct3D 包括专用CPU 指令集支持,为较新的计算机提供进一步的加速支持。
Microsoft DirectSound API : 提供程序与音频适配器的混合、声音播放和声音捕获功能之间的链接。 DirectSound 提供低延迟混合、硬件加速以及多媒体软件程序对声音设备的直接访问。提供此功能的同时保持与现有设备驱动程序的兼容性。
Microsoft DirectMusic API : 是DirectX 的交互式音频组件。与捕获和播放数字声音样本的DirectSound API 不同,DirectMusic 处理数字音频和基于消息的音乐数据,这些数据由声卡或其内置软件合成器转换为数字音频。 DirectMusic API 支持乐器数字接口(MIDI) 格式以及压缩和未压缩数字音频格式的输入。 DirectMusic 使软件开发人员能够创建沉浸式动态音轨,以响应软件环境中的各种变化,而不仅仅是直接用户输入的变化。
Microsoft DirectInput API : 为游戏提供高级输入功能,并处理来自操纵杆和其他相关设备(包括鼠标、键盘和电源反馈游戏控制器)的输入。
Microsoft DirectPlay API: 支持通过调制解调器、互联网或LAN 连接游戏。 DirectPlay 简化了对通信服务的访问,并为游戏提供了一种不受协议或在线服务限制的相互通信方式。 DirectPlay 提供了多种游戏服务,可简化多媒体播放器游戏的初始化,同时还支持可靠的通信协议,以确保重要的游戏数据不会通过网络丢失。 DirectPlay 8.0 的新增功能是对网络语音通信的支持,这极大地提高了多媒体播放器组游戏的娱乐潜力,同时该组件还通过提供与玩游戏的其他人交谈的能力,使组游戏更具吸引力。
Microsoft DirectShow API : 可在您的计算机和Internet 服务器上提供高质量的多媒体文件捕获和播放。 DirectShow 支持多种音频和视频格式,包括高级流格式(ASF)、音频视频交错(AVI)、数字视频(DV)、动画专家组(MPEG)、MPEG 音频第3 层(MP3)、Windows Media 音频/视频(WMA/WMV) 和WAV 文件。 DirectShow 还具有视频捕获、DVD 播放、视频编辑和混合、硬件加速视频解码以及广播模拟和数字电视信号的调谐等功能。
发展历史
DirectX 1.0
第一代DirectX非常不成功。当它推出时,很多硬件都不支持它。当时基本使用的是专业图形API——OpenGL。缺乏硬件支持成为其普及的最大障碍。
DirectX 1.0版是第一个可以直接读取硬件信息的程序。它提供了对图形硬件功能(例如显示卡上的块移动功能)和基本声音和输入设备功能(功能)的更直接访问,允许游戏开发实现二维(2D)图像。加速。第一代DirectX 并未包含所有3D 功能,仍处于起步阶段。
DirectX 2.0
DirectX 2.0对二维图形做了一些改进,增加了一些动态效果,并采用了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年Windows 95最后一个版本发布后不久推出的。此时,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最大的特点是对TL的支持,TL的中文名称是“坐标变换和光源”。 3D 游戏中的每个对象都有一个坐标。当物体移动时,其坐标发生变化,即坐标转换。 3D游戏除了场景+物体之外,还需要灯光。没有灯光,就没有3D物体的表现。不论是实时3D游戏还是3D图像渲染,带光照的3D渲染是最消耗资源的。虽然OpenGL中存在相关技术,但之前从未在消费级硬件中出现过。
在TL出现之前,位置转换和照明都需要CPU计算。 CPU 速度越快,游戏性能越流畅。使用TL功能后,这两种效果的计算都由显卡的GPU来计算,使CPU能够从繁忙的工作中解脱出来。也就是说,使用TL显卡和DirectX 7.0,即使没有高速CPU,你仍然可以流畅地运行3D游戏。
DirectX 8.0
DirectX 8.0的推出引发了显卡的革命。它首次引入了“像素渲染”的概念,同时具有像素渲染引擎(Pixel Shader)和顶点渲染引擎(Vertex Shader),体现在动态光影效果的特效上。与硬件TL仅实现的固定光影转换相比,VS和PS单元更加灵活,使GPU真正成为可编程处理器。这意味着程序员可以使用它们轻松构建3D 场景。通过VS和PS的渲染,可以轻松打造出逼真的水面动态波纹光影效果。至此DirectX的权威地位终于确立。
DirectX 9.0
2002年底,微软发布了DirectX9.0。 DirectX 9中PS单元的渲染精度已经达到浮点精度,传统的硬件TL单元也被取消。新的VertexShader(顶点着色引擎)编程将比以前复杂得多。新的VertexShader标准增加了过程控制、更多常量,每个程序的着色指令数量增加到1024条。
PS 2.0具有完全可编程的架构,可以实时计算纹理效果和动态纹理贴图,而不占用显存。理论上,材质贴图的分辨率精度可以无限提高;另外,PS1.4只能支持28条硬件指令。同时操作6种材质,但PS2.0可以支持160条硬件指令,同时操作16种材质。新的高精度浮点数据规范可以使用多个纹理图,并且可操作指令的数量可以是任意长的。轻松实现电影级显示效果。
VS 2.0通过增加Vertex程序的灵活性,显着提高了VS旧版本(DirectX8)的性能。新的控制指令可以用通用程序代替以前的专用单独着色程序,效率提高很多倍;添加循环操作指令,减少工作时间,提高处理效率;将着色指令的数量从128 条扩展到256 条。
增加处理浮点数据的功能。以前,只能处理整数。这提高了渲染精度,并使最终处理后的颜色格式达到电影级别。突破了此前限制PC图形和图像质量的数学精度障碍,其每条渲染管线均升级为128位浮点颜色,使游戏程序员更容易创造出更精美的效果。程序员更容易编程。
DirectX 9.0c
与过去的DirectX 9.0b和Shader Model 2.0相比,DirectX 9.0c最大的改进是引入了对Shader Model 3.0的全面支持(包括Pixel Shader 3.0和Vertex Shader 3.0两种着色语言规范)。例如,DirectX 9.0b的Shader Model 2.0支持的Vertex Shader指令的最大数量只有256条,Pixel Shader指令的最大数量也只有96条。在最新的Shader Model 3.0中,这两个Vertex Shader的最大指令数量Pixel Shader 大幅增加至65535 个,具有新的动态程序流控制、位移贴图、多渲染目标(MRT)、次表面散射和软阴影。柔和阴影、环境和地面阴影以及全局照明等新技术功能使GeForce 6、GeForce 7 系列和Radeon X1000 系列立即为新一代游戏以及极其逼真、奇幻和复杂的游戏做好了准备。由数字世界和在电影质量环境中移动的栩栩如生的角色提供支持。
因此,DirectX 9.0c和Shader Model 3.0标准的推出可以说是DirectX发展的一个重要转折点。在DirectX 9.0c中,Shader Model 3.0除了取消指令数限制、增加位移图等新功能外,还有更多的功能在努力解决游戏的执行效率和质量上。 Shader Model 3.0诞生后,人们对待游戏的态度也开始从过去单纯追求速度转变为兼顾游戏图像质量和运行速度。因此,Shader Model 3.0对游戏行业产生了深远的影响。
DirectX 10.0
它包含在Windows Vista 操作系统中,无法单独下载。
新的DirectX 为您提供更好的图形、可扩展的多人游戏,并包括更好的音频。增强了DirectDraw和Direct3D的接口,简化了应用程序扩展并提高了性能;改进了图形创建工具,使创建最佳3D 角色和环境变得更加容易;点光源光影和像素光影使图像更加真实;增强了DirectSound和DirectMusic,简化了它们的应用扩展; DLS2音频合成功能提高了乐器音频的真实感; DirectInput的设备映射功能使设备支持变得更加容易; DirectPlay 改进了多人游戏的性能和可扩展性; DirectPlay提供IP声音通信; DirectShow应用程序编程接口提供音频/视频的实时合成和即时编辑; DirectShow支持Windows Media音频和视频(WMA和WMV)的读写;微软电视技术可以支持数字电视节目。当然,最重要的是一些新游戏需要它。 DirectX Redist 通常每两个月更新一次,包含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和驱动程序页面错误的方式也更加成熟。
由微软主办的Gamefest 2008大会将于7月22-23日在西雅图举行。 Gamefest 2008大会是微软一年一度的游戏技术讨论盛会,因此有关下一代游戏技术接口API的消息自然是不可或缺的话题。
DirectX 11引入的最大的新技术特性无疑是Tessellation/Displacement。我们还听说,多线程渲染和Compute Shaders也将是DirectX 11的重要组成部分。还有消息称,DirectX 11还将引入Shader Model 5.0。具体细节尚不清楚。中,对于Ray Tracing(光线追踪)和Rasterization(光栅化)技术的支持还没有提及。
DirectX 11
2009年1月9日星期五,微软将向公众发布Windows 7客户端Beta 1测试版。此前一天,即1月8日,微软将率先发布Windows 7服务器版Beta 1测试版。
在微软发布的Windows 7 Beta版本中,一些安装过的用户发现已经包含了DirectX 11。 DirectX 11作为3D图形接口,不仅支持未来的DX11硬件,而且还向后兼容当前的DirectX 10和10.1硬件。 DirectX 11增加了新的计算着色器技术,可以让GPU从事更通用的计算工作,而不仅仅是3D运算,这可以鼓励开发人员更好地使用GPU作为并行处理器。
DirectX 11已经包含在微软发布的Windows 7 Beta版本中
此外,DirectX 11还支持曲面细分技术,可以帮助开发者创建更加细腻、流畅的模型,实现高质量的实时渲染和预渲染场景。多线程是DirectX 11的另一大亮点。DX11可以更好地利用多线程资源,让游戏更有效地利用多核处理器。
DirectX 11.1
微软于2011年10月15日发布了《Windows开发者预览版中的Windows驱动程序模型增强》白皮书,深入介绍了Windows 8在图形技术方面的改进。根据白皮书,Windows 8将支持新的驱动程序模型增强功能。显示驱动程序模型WDDM 1.2,高于Windows 7 WDDM 1.1,但也将放弃服务器系统中对XDDM 的支持,并完全切换到WDDM。
DirectX最关键的当然是Direct3D 11.1的引入,其中还将包括平滑旋转、立体3D、D3D11 Video等功能技术。微软表示,即使是低端硬件,只要能够利用DirectX,也能在Windows 8上获得更好的性能。
DirectX 11.2
2013年6月28日,微软发布了Directx 11.2(Alpha版本)。重要功能之一是允许游戏使用系统内存和视频存储来存储纹理数据。微软的Antoine Leblond在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首次支持硬件TL、DirectX 8.0/8.1开始支持Pixel ShaderVertex Shader……)那么这一次的DirectX 12 Ultimate(以下简称DX12U),它相比DX12有哪些升级,又带来了哪些下一代黑科技呢?
四大关键黑科技,DX12U升级很实用
首先,DirectX 12 Ultimate主要有四个新功能,分别是DirectX Raytrac
ing 1.1、可变速率渲染、Mesh渲染器和采样器反馈(Sampler Feedback)。 DirectX Raytracing 1.1 DirectX Raytracing(DXR)是微软在2018年为DirectX 12引入的新特性,让它支持实时光线追踪处理。1.0版本的DXR在软件特性上比较基础,可以说它是围绕着Turing架构的硬件实现而设计的,当时也没有从软件开发角度去考虑如何实现光追。而1.1版本扩展了DirectX 12在光线追踪方面的软件特性,让它的效率更高,同时对开发者也更友好。主要有三点: 允许GPU直接调用光追 跑在GPU上面的着色器在1.1版本中可以直接调用光线追踪,而无需折返CPU来调用。这项功能对于自适应光线追踪场景非常有用,尤其是在基于着色器实现的剔除、排序、分类和细化等场景中。基本上今后的光线追踪工作可以在GPU上面准备并立即生成。 按需加载光线追踪着色器 当玩家在游戏世界中移动、新的物件变为可见的过程中,流式引擎可以根据此时的画面需求来加载新的光线追踪着色器,提高处理过程的效率。 内联光线追踪 内联光线追踪(Inline raytracing)是目前基于动态着色器的光线追踪的一种替代形式,你可以将其理解为一种简化的光线追踪。开发者在内联光线追踪过程中将有更大的控制权,并且可以在任意的着色阶段调用它,包括计算着色和像素着色阶段。它与传统基于动态着色器的光线追踪可以混合使用,对于简单的场景,内联光线追踪将会提供更好的性能表现,而在复杂场景中,基于动态着色器的光线追踪将会提供更好的运行效果。 可变速率渲染 可变速率渲染(Variable Rate Shading)是一项由NVIDIA在其Turing GPU上率先引入的加速渲染特性,具体介绍可以看我们的课堂文章:《超能课堂(212):VRS可变速率着色为什么可以提高帧数?》,这边就简单讲一下它的原理,而不再赘述细节了。 简单来说,VRS的原理是通过改变单次像素着色器操作所处理的像素数量,来改变屏幕不同区域的着色质量。简单来说,它可以改变同个画面中不同部分的渲染精细度,它的用处是提高画面帧数。 在不开启VRS的情况,也就是正常情况下,一帧画面的所有像素都是独立着色的;而开启VRS之后,原本独立的像素被分成了一个个像素块,它们会共享着色结果,此时GPU会根据程序员设定的重要性分级为所有像素块分配不同的着色精细度。拿上面的图片为例,车辆和远景部分的像素仍然是独立着色的,但快速变动的道路和路边的像素块就是区块共同着色的,此时由于显卡的计算资源得到了节约,所以游戏的帧数会有所提高。 在NVIDIA以外,Intel已经在Ice Lake处理器中的第11代核显中加入了针对VRS的支持,而AMD方面则暂时没有相关支持,不过他们也已经宣布将会在RDNA 2架构中加入相关支持。 Mesh着色器:下一代几何处理管线的基础 在过去的二十年中,传统的几何图形处理管线已经增加了好几个阶段了,不过它的核心理念仍然基于传统的光栅化预着色方法的,放在今天已经过于复杂,并且拖累处理效率。硬件和软件开发者都希望改变这一现状,于是,DirectX 12引入了Mesh着色器,它为开发者提供了前所未有的可编程能力。 原本的管线中,GPU硬件的并行能力被隐藏,或者说是被自动化了,硬件会帮助打包操作然后并行执行它,这很高效,但也存在问题——灵活性不够。 Mesh着色器就完全改变了这一过程,它不再是针对单一顶点或图元的单一函数,而是工作在整个计算线程组中。在某一阶段中,Mesh着色器的每个线程都是针对一个顶点,而在另外一个阶段,每个线程针对着一个图元。整个线程组的内存是共享的,访问灵活度很高,同时开发人员对硬件的控制权也更大,甚至还能启发新的技术,节约内存使用量和内存带宽。 与Mesh着色器一同出现的还有一个可选的放大着色器(Amplification Shader)阶段,它运行在Mesh着色器之前,计算得到需要多少个Mesh着色器,并启动他们。 采样器反馈 最后一个大特性就是采样器反馈(Sampler Feedback),先说效果:更好的视觉质量、更短的加载时间和更少的卡顿。它的核心思想实际上就是让程序只加载必要的纹理,把资源交给更有需要的地方。 采样器反馈是允许游戏引擎去跟踪纹理采样器的使用方式,让后者向引擎提供反馈,方法是生成“反馈图(Feedback Map)”,它会记录不同纹理区域的不同驻留等级,然后程序可以根据这些反馈信息来做决策——包括该如何使用纹理采样器和要在显存中保留哪些资源等。这比原先的流程更为精确,可以更好地分配计算资源。简单来说它的实际效果就是用更少的显存渲染更大、更详细的纹理。 另外,采样器反馈还允许了一项新技术——纹理空间着色。它可以在不栅格化对象的情况下进行对象着色,其中心目的就是缓存和重用着色结果,减少GPU的计算量。 总结:面向新图形架构和下世代主机 在微软推出DirectX 12 Ultimate之后,NVIDIA和AMD就迅速地宣布已经/将要支持它,实际上,DirectX 12 Ultimate的绝大部分新特性可以说是基于Turing架构来的,NVIDIA在设计Turing架构之处是预留了相当部分的新特性没有公开的。而AMD方面在目前只能说是一个跟进者,要用上新特性,首先要等到年底的RDNA 2架构。标签:
用户评论
看了这篇文章,终于明白DirectX是什么了!以前玩游戏总是卡,现在知道是显卡驱动没跟上,要赶紧升级了。
有17位网友表示赞同!
DirectX,这个名字听起来好高级,这篇文章解释得挺清楚,希望能用得上。
有9位网友表示赞同!
哈哈哈,原来DirectX这么重要,以后装机再也不怕被坑了。
有5位网友表示赞同!
DirectX,这个名字听起来像是科幻电影里的技术,现在知道了,感觉离高科技又近了一步。
有14位网友表示赞同!
文章写得太棒了,以前我对DirectX一无所知,现在感觉自己成了半个专家。
有14位网友表示赞同!
DirectX,听起来好复杂,但作者用简单易懂的语言解释了,赞一个!
有13位网友表示赞同!
以前觉得DirectX很神秘,现在终于揭开了它的面纱,感谢《IT百科》的文章。
有19位网友表示赞同!
这篇文章让我对DirectX有了更深入的了解,看来我得重新审视我的电脑配置了。
有20位网友表示赞同!
DirectX,这个词太专业了,如果不是这篇文章,我还真不知道它的作用。
有14位网友表示赞同!
终于找到一篇能让我看懂DirectX的文章了,感谢作者,希望以后还有更多这样的科普。
有20位网友表示赞同!
DirectX,听起来很厉害的样子,但我还是不太懂,希望能有更详细的解释。
有19位网友表示赞同!
这篇文章让我对DirectX有了新的认识,以前觉得它只是个名词,现在知道它的重要性了。
有13位网友表示赞同!
DirectX,这个词太常见了,但之前一直搞不清楚,现在终于明白了,感谢分享。
有14位网友表示赞同!
我对DirectX一直很感兴趣,这篇文章让我对它的原理有了更深的了解。
有14位网友表示赞同!
DirectX,听起来很高级,但我觉得这篇文章解释得太简单了,希望能有更深入的探讨。
有12位网友表示赞同!
这篇文章让我对DirectX有了全新的认识,看来我得重新研究一下我的电脑了。
有14位网友表示赞同!
DirectX,这个词太专业了,如果不是这篇文章,我还真不知道它在游戏中的重要性。
有16位网友表示赞同!
感谢《IT百科》的文章,让我对DirectX有了全新的认识,也让我对电脑有了更深的了解。
有7位网友表示赞同!
DirectX,这个词听起来很酷,现在终于明白它对游戏的重要性了,以后装机再也不敢马虎了。
有11位网友表示赞同!
这篇文章让我对DirectX有了全新的认识,原来它不仅仅是驱动那么简单,太有用了!
有15位网友表示赞同!