视频加速


视频加速

文章插图
视频加速【视频加速】在586年代以前,计算机的3D及视频性能很弱,不能满足多媒体套用和3D 游戏的需求 。那个时代,除了我们现在常见的显示卡和音效卡外,还存在着另外一种与视频和声音又着密切关係的板卡,那就是“多媒体卡”或者称之为“视频加速卡” 。
基本介绍中文名:视频加速
外文名:Video acceleration
分类:硬体加速和软体加速
起源由于当时的CPU和显示卡性能有限,如果想通过计算机观看VCD级别的电影,就需要额外为计算机添加这样一块板卡,才可以实现 。家用电脑的视频加速一词,大概就起源于与哪个时代 。在586到来之时,CPU的性能得到了很大发展,特别是在Intel推出具备MMX多媒体指令集的奔腾(Pentium)1代时,家用电脑已经具备一定的的多媒体性能 。这是,已经可以不依靠专门的“视频加速卡”,只依靠软体,就可以进行VCD品质的视频回放 。此后,通过软体方式的视频加速技术,也在不断发展 。并且多媒体时代来临之际,显示卡的性能也有了长足发展,极大的促进了多媒体的普及与套用,特别是后来飞速发展的电脑3D游戏,以及MPEG-2、MPEG4、HDTV高清视频等媒体套用,使得性能再强的CPU,也难以应对,而显示卡的发展,恰到好处的补充了CPU在这方面的不足,从而使得显示卡在电脑中的地位,不断提升 。分类可以分为硬体加速和软体加速硬体加速简而言之,硬体加速就是利用硬体模组来替代软体算法以充分利用硬体所固有的快速特性,以增强计算机的视频性能 。视频播放方面在视频加速领域,显示卡一直扮演着重要的角色,从MPEG-1到MPEG-2,再到如今的H.264和VC-1,显示卡一直肩负着为CPU“减负”的重任,而这其中又经历了长期和曲折的发展,我们先来回顾一下显示卡视频硬体加速的发展历史 。3D初频加速3D加速卡在早期是由3dfx所开发,Voodoo系列是比较有名的产品,当时没有3D加速卡的称呼,都是称为3D子卡或附加卡较多,后来3D游戏慢慢成主流,许多3D厂商争相研发3D晶片,当时是2D显示卡比较多,后来渐渐的把3D功能加在2D显示卡上,使其既可以显示2D影像,也可以跑3D游戏,并最终演变成为3D加速卡 。展望随着国家对高清产业的大力支持,以及硬体一日千里的飞速发展,高清的全面普及是迟早的事情 。也许过不了多久,当前还被称为“硬体杀手”的高清解码就将会如同以前的VCD和DVD一样,变成计算机再普通不过的一项基本功能了,而到了那个时候,估计下一代更高一级的“高清”又将出现,硬体和软体之间相互追赶的竞赛还将继续进行下去 。软体视频加速所谓软体视频加速,是指通过软体,对视频及媒体套用,进行最佳化加速,一般用于专业图形设计软体的加速和网路视频加速方面,对于普通电脑用户来说,网路视频加速套用的比较多 。网路视频加速软体网路视频加速软体,是一种p2p外挂程式 。由于受到网速的限制或者遇到网路使用尖峰时段,看视频的时候便会出现很“卡”或缓冲慢等问题,以至于本想好好看视频,却在焦急等待缓冲过的程中度过 。视频加速就是在看视屏的时候不仅仅可以从伺服器下载视频,还可以通过p2p从同样安装此外挂程式的正在浏览此视频的用户那下载,一定程度上缓解了伺服器压力增加用户的浏览速度,不过在享受从别的客户那下载视屏增加自己浏览速度的同时,自己也得给别人上传,和BT的原理一样,会有点伤硬碟套用说起专业绘图卡,大家有什幺感觉呢?是不是“哇,好神圣!买不起!和我没关係!...”的敬而远之的态度呢?呵呵,其实 3D 加速卡最初是在专业领域发展起来并逐渐转变为民用 。所以,在了解到 3D 游戏卡的同时呢,我们大家也因该对它的前身—专业 3D 绘图卡有所了解 。好了,让我们来看专业绘图卡的职责 。大家来想像一下,如果游戏中所有的三角形,都不去填充,而只用直线把它们的三个边画出来… 你会看到什幺??哇,乱死了!是乱七八糟的一堆… :wacko: 呵呵,这就是 3D 绘图人员每天所面对的东西 。线筐的世界在专业领域,图形设计者往往要求不单看到物体的表面颜色和材质,更要求看到物体内部的结构和精确的形状轮廓 。这样呢,花里胡哨的纹理贴图和材质不仅不能起到应有的作用,反而还会干扰设计者对形状的掌握 。所以,快速,精确,大量的绘製线条就成了专业绘图卡的“基本功”了 呵呵 。两点确定一条直线,所以在专业领域,物体不一定要用三角形来表示也一样可以被编辑和显示出来 。所以专业绘图更偏向于使用四边形来绘製物体 。这样一来看起来整齐,二来容易和外部的一些採集设备,比如 3D 扫瞄器的数据接口 。在绘製游戏的过程中,要用少量的三角形,加上大量的纹理贴图来绘製场景 。由于纹理贴图的读取和颜色运算占绝大多数处理时间,所以游戏卡的显存频宽和像素处理能力就显得非常重要,因此出现了 4 条 乃至 8 条 像素管线并行运作的显示卡,和高达 256bits, 20GB/s 的显存频宽 。而在只绘製线筐这种情况下,专业绘图卡的工作模式以及瓶颈分布也和游戏卡有所不同了:在专业软体的编辑视窗里,线条填充了所有空间 。专业绘图卡需要可以接受的速度处理数量巨大的顶点数据,而这些数据量,通常都在游戏场景的成千上万倍 。而画线的过程相比顶点的处理过程,就显得比较轻鬆了 。这种工作方法,使得专业绘图卡需要有非常强劲的顶点处理能力 。这点,在顶点处理能力相似的显示卡专业性能也相近的表现中也能看得出来 。既然画线条是主要任务,人们当然想让专业卡把它的主要任务完成的更好 。所以,人们想到了用一种方法来让画出来的线更漂亮:线筐反锯齿 (Anti-Aliased Lines)如果用 Windows 的 画笔 画一条斜线,你看到了什幺?(当然是线啦)你看到的是锯齿!其实斜线也是由很短的水平或竖直的线段组成的 。这个就是线段光栅化的缺点 。怎幺才能让画出来的线更平滑,更漂亮呢?这就要用到光栅化的高级技巧了:浮点坐标光栅化法则(Floating Point Coordinate Rasterization: 具体的名字可能不是这样的,不过这个名字绝对能说明问题!) 。以往,在画线的时候,都要把线段顶点的坐标先转换成整数,再画在萤幕上,比如( 124.5, 11.2 ) => ( 125, 11 ) 。因为萤幕上像素的坐标都是整数的,所以这种方法简单快速,可是画出来的线就是那样的充满锯齿…而浮点光栅化法则呢,就是把浮点数表示的坐标直接映射到萤幕上,而取该点邻近的四个像素做颜色的权重分配(最複杂的地方喔,别急,我来慢慢讲):比如线上有一个点,它的坐标是 ( 124.5, 11.2 ) 。那幺我们来取这邻近四个点:( 124, 11 ), ( 125, 11 ), ( 124, 12 ), ( 125, 12 ) 。而用坐标的小数部分表示该点的权重的话,四个点的颜色浓度分别是这样的: ( 124(0.5), 11(0.2) ) : 50% * 20% = 10%, ( 125(-0.5), 11(0.2) ) : 50% * 20% = 10%;( 124(0.5), 12(-0.8) ) : 50% * 80% = 40%, ( 125(-0.5), 12(-0.8) ) : 50% * 80% = 40%;这样,就把一个浮点坐标映射到了四个整数坐标上,由于色彩的浓度是随浮点坐标在整数坐标映射的权重来计算的,所以整个线就变得非常的平滑了 。我上面介绍的只是反锯齿光栅化的方法之一,有很多种更快速的方法已经被广泛的使用了 。由于这些方法涉及到的知识太专业了,所以我就不再多做引申了(其实有的我也不很清楚…) 。线筐反锯齿在新型专业绘图卡里做了良好的最佳化,所以使用专业绘图卡时,可以通过使用线筐反锯齿而得到更清晰精确美观的线筐效果图 。专业 OpenGL 和后起之秀 D3D8/9说到专业绘图卡,我就不能不提起 OpenGL 。OpenGL 是什幺?你首先想到的一定是 Open Graphics Library 是由 Silicon Graphics Inc. 于 1992 年提出的专业绘图接口 。它被广泛的套用在了几乎所有的计算机绘图领域 。包括 SGI, DEC, IBM, PC 和MAC 等等,都提供了对它的支持,所以说 OpenGL 是一个跨平台的专业绘图接口 。大家平常玩的游戏里使用的 OpenGL,只是整个 OpenGL 绘图库函式的很小很小一部分,而这一部分足以让我们的广大玩家体验惊心动魄的 3D 世界了!呵呵 。既然这幺神,那幺支持它的软体肯定不少喽!对了 。像 3dsmax, Maya, SoftImage 这PC 3D 製作工具的“三巨头”就提供了对 OpenGL 图形接口的支持 。既然是接口,也就代表了“与硬体无关的隔离层” 。所以专业绘图卡只需要专心做好对 OpenGL 接口的支持,也就是支持了所有主流的 3D 製作软体 。这也是专业绘图卡价格高昂的原因,因为它的驱动研发也占了很大一部分的成本 。也许有不少朋友还在纳闷:OpenGL 到底是乾什幺用的?每天听你们说呀说,我怎幺没有看见!其实,OpenGL 的常用功能说起来让你吓一跳:画点,画线,画多边形,就是这些 。作为游戏,使用OpenGL 提供的这三个功能就足够了 。而在专业领域,它提供了曲线,曲面绘画的支持,三角形分割,顶点变形以及其他一些专业人士津津乐道的功能,而在最新版本的 OpenGL 之中,也引入了可程式图形流水线的概念(比 D3D8 晚了半拍)这样一来,也可以通过对显示卡编程来灵活的实现个性的图像效果 。也许大家从我的话里能看出来,OpenGL 在后来的发展中,正如大家所料的,掉到了 D3D 的后面 。说起 D3D,就要提一下 Microsoft 的 DirectX 娱乐多媒体引擎了 。DirectX 对广大玩家一定如雷贯耳吧 。事实上,採用 DirectX 的 D3D 图形引擎的远远多于OpenGL 。这也是受 OpenGL 和 D3D 开发使得定位不同所影响 。D3D 更偏向于为游戏设计者提供直接的,功能强大的与游戏绘图直接相关的功能,所以对于游戏设计者来说更具亲和力 。而 D3D 的快速发展也得益于它是独家技术:由 Microsoft 亲自製定,亲自研发,提供详细强大的技术支持 。以往的 D3D 总是给人小气的感觉,而 D3D 也把 OpenGL 作为竞争目标而努力的发展;而在 DirectX 8.0 推出的时候,D3D8 从功能和易用性上一举超越了 OpenGL 。它首先提出了可程式几何/像素处理流水线的概念 。配合当时上市的 nVIDIA GeForce 3 系列显示卡的完美硬体支持,从视觉上给了人们全新的震撼 。题归正传:当 D3D8 在游戏接口方面超越了 OpenGL 之后,贪婪的 Microsoft (!) 更开始让 D3D 在专业功能上也发展起来 。时至今日,D3D 得到了众多专业绘图软体的支持,比如 3dsmax 从 4.0 起加入了对 DirectX 8.0 的支持,使得近似最终渲染效果的材质/灯光在可程式GPU 的支持下,在预览视窗里显示了出来 。DirectX 9.0 的绘图组件 D3D9,又是一个里程碑 。它重新定义了可程式图形流水线的概念,使全浮点精度,无失真的图像在 PC 游戏里成为可能 。而且 D3D9 引入了另一个新的概念,就是在继承了 D3D8的彙编语言给显示卡编程的同时,提供了用高级语言来撰写显示卡的程式的功能,这个语言被命名为 HLSL(High Level Shader Language) 。到此,D3D 超越了 OpenGL,也使的 OpenGL 新版本的制定开始向 D3D 靠拢 。OpenGL 所支持的 Vertex Program / Fragment Shader 就是在 D3D 的 VertexShader / PixelShader 的基础上发展起来的 。D3D 的功能已经足够强劲,也在游戏领域得到了完全的支持 。可是要想在专业绘图领域真正的拥有一席之地,还需要各大专业绘图软体开发商对其表示肯定和投入支持 。让我们衷心的祝 D3D 和 OpenGL 一路走好...预览 vs. 渲染有很多专业绘图的初学者,常常分不清两个概念:预览和渲染的区别,以及图形加速卡是给哪里加速的 。下面我就来讲一下这些到底是什幺东西使用过专业绘图软体的朋友,一定见过它的互动式编辑视窗吧 。不同的软体和设定,开有不同数量的互动式编辑视窗,也被称为预览视窗 。这些视窗里的内容呢,就是由图形加速卡绘製的(如果启用硬体加速的话) 。一般除了有一个视窗里的物体是由颜色和纹理贴图填充的以外,其它的视窗里的图像都是线筐 。呵呵 说道这里,大家应该明白专业绘图卡对线筐加速的意义了吧 。其实,在专业绘图软体里,有且只有这部分的绘图工作是由图形加速卡来完成的 。另一部分绘图功能,则超越了图形加速卡的功能:这就是成品渲染 。当你调整好所有参数,包括摄像机的位置和灯光以后,按动“渲染”( Render )按钮,电脑在做的就是这一步 。稍微複杂的场景,这一步通常要花费数小时的时间,有的甚至于要好几天才能完成 。为什幺这幺慢呢?!你如果打开预览视窗的图像,和渲染好的成品对比一下,马上就能发现区别所在:成品比预览图细腻真实的多 。其实这一步是完全由 CPU 来完成的 。而它们所使用的算法的複杂度,也远在显示卡的光栅图形之上 。有的是用了 Ray-Tracing 光线追蹤来计算物体的材质和光线的反射/折射,有的甚至利用到了辐射度( Radiosity ) 来计算物体表面接受光线照射的强度 。这些真实的算法异常的複杂,而且灵活度很高 。因此 GPU 的可程式特性根本不能“代劳”,唯有我们可怜的 CPU 孤军奋战了 。到这里,大家应该明白,专业绘图卡在绘图软体的使用过程中充当了预览视口加速的功能 。别认为只能加速预览视口没有什幺大用处,其实绘图工作者们有 90% 的时间是用来绘製图形的,也就是图形加速卡在 90% 的时间里,都在为系统起着重要的加速作用 。好了,看着激动人心的 Hollywood 特效大片,欣赏着美轮美奂的 3D 卡通片的时候,让我们为默默无闻的专业绘图卡致敬…技术发展2004年12月20日,NVIDIA正式推出了基于GeForce 6系列图形晶片(NV 4x)的PureVideo技术,其目的是为了提升GeForce 6系列图形晶片的视频播放性能,主要作用是获得更低的CPU占用率与更清晰的画面 。总所周知,在电脑上播放的视频绝大部分都是从电视或电影中转换而来 。但在转换过程会遇到两个突出的矛盾:一是电视的片源为隔行扫描,而电脑上是逐行扫描;二是电影的帧数为每秒24帧,而电脑上播放的要求是每秒30帧 。虽然绝大部分视频编辑加工软体都能对其实行转换,但如果对这两个矛盾处理得不好,画面就会出现严重的重叠、模糊等失真 。而PureVideo技术就是为解决这些问题而出现的 。实际上,PureVideo是一项基于GeForce 6系列GPU中整合的可程式视频处理引擎,同时结合硬体与软体技术,能够对MEPG2(DVD)、WMV9以及HD Video等视频播放进行硬体加速的显示卡特色技术 。PureVideo的关键技术包括一个集成于GPU中的专门硬体——16路向量处理器,通过它来完成高清视频播放的硬体加速,从而达到减轻CPU负担的目的 。PureVideo技术在播放DVD视频、HD Video以及WMV(包括高清WMV)视频时可以获得比传统视频解决方案更清晰的画面,同时也会降低CPU占用率 。而要想发挥这项技术的优势,除了要有一块GerForce 6系列的显示卡外,还需要安装三个软体:包括WMV视频外挂程式、Windows Media Player 10(这两个用于支持WMV视频的加速)以及NVIDIA Decoder(用于支持DVD视频加速) 。PureVideo技术针对DVD回放的最佳化解码器全称为NVIDIA DVD Decoder,必须要该解码器配合GeForce 6系列GPU中的视频处理引擎才能对视频回放起到最佳化加速的作用 。安装了NVIDIA Decoder后,当插入DVD光碟或播放MPEG2视频档案时,无论採用什幺播放器,当播放器向系统提出挂接解码器的要求时,NVIDIA Decoder就会自动负责解码部分的任务,此时我们可以看到在桌面右下角系统托盘中会出现一个NVIDIA的图示 。解码器在默认状态下是按照最佳质量进行的设定,一般不建议读者更改,除非出现画面显示错误才有必要进行调试 。主界面右上部分的“Bitrate(Mbps)”能实时显示所播放档案的比特率,用户可凭此辨别DVD视频是否为真正的可变比特率格式 。需要注意的是,该控制台只有在播放DVD视频(包括DVD光碟和MPEG2档案)时才能打开 。在针对WMV格式档案的视频加速中,所要採用的WMV外挂程式主要包含两个档案:wmp.dll(10.0.0.3646)与wmvdmod.dll(10.0.0.3663) 。根据NVIDIA的官方说明,这款外挂程式可在Windows Media Player10的外挂程式下载中获得 。要想实现在Windows Media Player 10中播放高清格式的WMV档案,这两个外挂程式是必不可少的 。PureVideo技术的另一特点在于它是基于视频硬体级加速的技术,能分担CPU对视频的运算任务,从而减少CPU占用率 。相对NVIDIA的CUDA技术而言,AMD採用的Stream技术是一项开放性的技术 。实际上,最初ATI採用的流处理技术并非完全开放,而是仅针对单一的一个项目而研发的 。在2006年,ATI就曾经藉助非统一架构设计的Radeon X1950XTX显示卡为史丹福大学的Folding@Home (蛋白质摺叠的分布计算项目)项目进行科学计算 。而全新的流处理技术的改进就是要将这一技术全面开放,能够让更多的开发人员参与进来,藉助HD4000系列显示卡超强的浮点运算能力,为更多的并行计算套用进行加速 。