UnityShader——03图形硬件简史与可编程管线

这篇具有很好参考价值的文章主要介绍了UnityShader——03图形硬件简史与可编程管线。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

图形硬件简史与可编程管线

GPU发展简史

GPU英文全称Graphic Processing Unit,中文翻译为“图形处理器”,在现代计算机系统中的作用变得越来越重要

20世纪六七十年代,受硬件条件的限制,图形显示器只是计算机输出的一种工具,限于硬件发展水平。人们只是纯粹从软件实现的角度来考虑图形用户界面的规范问题,此时还没有GPU的概念

GPU概念在20世纪70年代末和80年代初被提出,使用单片集成电路作为图形芯片,此时的GPU被用于视频游戏和动画方面,它能够很快的进行几张图片的合成(仅限于此)。在20世纪80年代末到90年代初这段时间内,基于数字信号处理芯片的GPU被研发出来,与前代相比速度更快,功能更强,当然价格是非常的昂贵。在1991年,S3 Graphics公司研制出第一个单芯片2D加速器,到了1995年,主流的PC图形芯片厂商都在自己的芯片上增加了对2D加速器的支持

1998年NVIDA公司宣布modern GPU研发成功,标志着GPU研发的历史性突破成为现实,通常将20世纪70年代末到1998年的这一段时间,称为pre-GPU时期,而自1998年往后的GPU称为modern GPU,在pre-GPU时期,一些图形厂商如SGI、Evans & Sutherland,都研发了各自的GPu,这些GPU在现在并没有被淘汰,依然在持续改进和被广泛的使用,当然价格也是非常的高昂。modern GPU使用晶体管( transistors)进行计算,在微芯片( microchip)中,GPU所使用的晶体管已经远远超过CPU。例如,Intel在2.4GHz 的Pentium lV上使用5千5百万(55million)个晶体管;而NVIDIA在GeForce FX GPU上使用超过1亿2千5百万( 125 million)个晶体管,在NVIDDIA 7800 GXT上的晶14体管达到3亿2百万( 302 million)个。

回顾GPU的发展历史,自1998年后可以分为4个阶段。NVIDIA于1998年宣布Modern GPU研发成功,这标志着第一代Modern GPU的诞生,第一代GPU包括NVIDIA TNT2,ATI 的Rage和3Dfx的Voodoo。这些GPU可以独立于CPU进行像素缓存区的更新,并可以光栅化三角面片以及进行纹理操作,但是缺乏三维顶点的空间坐标变换能力,这意味着“必须依赖于CPU执行顶点坐标变换的计算”。这一时期的GPU功能非常有限,只能用于纹理组合的数学计算或者像素颜色值的计算。

1999年,nvidia推出了一款可以用“惊变”来形容的显示核心代号NV10的geforce 256。nVidia率先将硬体T&L整合到显示核中。T&L原先由CPU负责,或者由另一个独立处理机处理。T&L是一大进步,原因是显视核心从CPU接管了大量工作。硬件T&L引擎带来的效果是,3D模型可以用更多的多边形来描绘,这样就拥有了更加细腻的效果。而对于Lighting来说,CPU不必冉计算大重的光照数据,直接通过显卡就能获得更好的效能。同时,这一阶段的GPU对于纹理的操作也扩展到了立方体纹理(cube map) 。NVIDIA的GeForce MAX,ATI的Radeon 7500等都是在这一阶段研发的。

2001年是第三代modern GPU的发展时期,这一时期研发的GPU提供vertex programmability (顶点编程能力),如GeForce 3,GeForce 4Ti,ATI的8500等。这些GPU允许应用程序指定一个序列的指令进行顶点操作控制(GPU编程的本质! ),这同样是一个具有开创意义的时期,这一时期确立的GPU编程思想一直延续到今天,不但深入到工程领域帮助改善人类日常生活(医疗、地质勘探、游戏、电影等),而且开创或延伸了计算机科学的诸多研究领域(体绘制、光照模拟、人群动画、通用计算等)。同时,Direct8和OpenGL都本着与时俱进的精神,提供了支持vertexprogrammability 的扩展。不过,这一时期的GPU还不支持像素级的编程能力,即fragment programmability (片段编程能力)。

所谓Vertex,就是我们熟悉的组成3D图形的顶点,由于设计3D模型是基于坐标空间内部设计的,所以Vertex信息包含了3D模型在空间内的坐标等信息。Vertex Shader则是对于Vertex信息的运算编程器,可以通过赋予特定的算法而在工作中改变3D模型的外形,Vertex Shader顶点运算单元可以直接检索显存中的材质数据。现在的游戏场景越来越复杂了。所涉及到的材质和多边形数量都非常惊人。顶点材质技术可以极大的提高GPU在处理复杂的游戏场景时的效率。并且游戏开发人员还可以利用Vertex Shader的这一新的特性,充分发挥想象,实现很多非常漂亮的特效。例如在星际争霸2demo片中展示的神族母舰黑洞的技能效果。

第四代GPU的发展时期从2002年末到2003年。NVIDIA的GeForceFX和ATI Radeon 9700同时在市场的舞台上闪亮登场,这两种GPU都支持vertex programmability和fragmentProgrammability。同时DirectX和OpenGL也扩展了自身的API,用以支持vertex programmability和fragment programmability。自2003年起,可编程图形处理器正式诞生,并且由于DirectX和OpenGL锲而不舍的追赶潮流,导致基于图形硬件的编程技术简称GPU编程,也宣告诞生。

GPU的优越性

由于GPU具有高并行结构,所以GPU在处理图形数据和复杂算法方面拥有比CPU更高的效率。CPU大部分面积为控制器和寄存器,与之相比,GPU拥有更多的ALU (Arithmetic Logic Unit,逻辑运算单元)用于数据处理,这样的结构适合对密集型数据进行并行处理。

UnityShader——03图形硬件简史与可编程管线,UnityShader,unity

GPU采用流式并行计算模式,可对每个数据进行独立的并行计算,所谓“对数据进行独立计算”,即,流内任意元素的计算不依赖于其它同类型数据,例如,计算一个顶点的世界位置坐标,不依赖于其他顶点的位置,所谓“并行计算”是指“多个数据可以同时被使用,多个数据并行运算的时间和1个数据单独执行的时间是一样的”。所以,在顶点处理程序中,可以同时处理N个顶点数据。

GPU的缺陷

由于“任意一个元素的计算不依赖于其它同类型数据”,导致“需要知道数据之间相关性的”算法,在GPU上难以得到实现,一个典型的例子是射线与物体的求交运算。GPU中的控制器少于cPU,致使控制能力有限。另外,进行GPU编程必须掌握计算机图形学相关知识,以及图形处理APl,入门门槛较高,学习周期较长,尤其国内关于GPU编程的资料较为匮乏,这些都导致了学习的难度。在早期,GPU编程只能使用汇编语言,开发难度高、效率低,不过,随着高级Shader language的兴起,在GPU上编程已经容易多了。

GPU的更多应用

科学可视化计算:由于人体CT、地质勘探、气象数据、流体力学等科学可视化计算处理的数据量极大,仅仅基于CPU进行计算完全不能满足实时性要求,而在GPU上进行计算则可以任双率上运到质的突破,许多在CPU上非常耗时的算法,如体绘制中的光线投射算法,都可以成功移植到GPu上,所以基于GPU的科学可视化研究目前已经成为主流。

通用算法:基于GPU进行通用计算的研究逐渐成为热点,被称之为GPGPU ( General-Purpose Computing on Graphics ProcessingUnits,也被称为GPGP,或GP2),很多数值计算等通用算法都已经在GPU上得到了实现,并有不俗的性能农现,日E,线t八效,物理仿真和光线跟踪算法都已经成功的移植到GPu上。在国内,中国科学院计算技术研究所进行了基于GPU的串匹配算法的实现。文章来源地址https://www.toymoban.com/news/detail-825508.html

到了这里,关于UnityShader——03图形硬件简史与可编程管线的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 可编程逻辑器件之数码管显示实验

    一、实验目标 能够熟练的进行可编程逻辑器件开发,能够通过具体工程需求进行需求分析、模块划分、代码编写、功能仿真、综合分析、板级验证,能够独立正确的进行实验操作,培养学生的工程实践研究能力和动手实践能力,具备借助可编程逻辑器件开发平台和仿真工具科

    2024年02月02日
    浏览(91)
  • SG-8201CJA(汽车可编程晶体振荡器)

    nbsp; nbsp; nbsp; nbsp; nbsp;爱普生的SG-8021CJA是一款符合AEC-Q100标准的晶体振荡器,专为要求苛刻的汽车/ADAS应用(如激光雷达和相机ECU)而设计。它采用爱普生的内部低噪声小数NPLL,输出nbsp;频率高达170MHz,相位抖动小于1/25,稳定性比之前的产品SG-8101CGA高出约2倍。此外,2.0*1.6m

    2024年02月21日
    浏览(33)
  • 可编程网关:如何助力智慧工厂实现智能化管理

    一个具体的实际案例,详细说明可编程网关在某汽车零部件智慧工厂中的应用细节: 案例背景: 某大型汽车零部件制造企业,致力于提升生产效率、降低运营成本、确保产品质量,决定对其传统工厂进行全面数字化改造,构建智慧工厂。其中,可编程网关作为关键组件,被

    2024年04月08日
    浏览(27)
  • FPGA的可编程逻辑单元(LUT和寄存器)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 1.根据PLD器件单片集成度的高低,可将PLD分为低密度可编程逻辑器件和高密度可编程逻辑器件。 2.按器件结构类型划分      

    2024年02月19日
    浏览(37)
  • 可编程交易区块为DeFi机器人提供强大动力

    对于选择基金投资的人来说,一个基本指导原则就是寻找那些管理费最低的基金。资本应该是在运转,而不是用于支付费用。同样,Mysten Lab的Capy交易机器人利用可编程交易区块(Programmable Transaction Blocks ,PTBs)将资本集中用于交易,而不是gas费,并且能够执行复杂的输入策

    2024年02月07日
    浏览(36)
  • SG-9101CGA(汽车+125°C可编程晶体振荡器)

    nbsp; nbsp; nbsp; nbsp;SG-9101CGA是用于汽车CMOS输出的可编程晶体振荡器,彩用2.5 x 2.0 (mm)封装,0.67 MHz至170 MHz频率范围、工作温度范围为-40℃~+125℃,符合车规级晶振,无铅,绿色环保,满足汽车工业标准,电源电压范围为1.62 V ~ 3.63 V,具有低功耗特性。广泛应用于汽车多媒体、车

    2024年01月22日
    浏览(39)
  • Verilog实现FPGA可编程电路中的RAM存储器

    Verilog实现FPGA可编程电路中的RAM存储器 在FPGA可编程电路的设计中,RAM存储器通常被广泛使用。而手写RAM存储器则可以提供更加灵活、高效的设计方案。本文将介绍如何使用Verilog语言来手写FPGA中的RAM存储器。 首先,我们需要确定RAM存储器的大小和宽度。假设我们需要实现一个

    2024年02月04日
    浏览(36)
  • 零基础学FPGA(八):可编程逻辑单元(基本结构,Xilinx+Altera)

          在写这篇文章之前,对这个专栏做一个补充解释。本来按我之前的想法是,把这个专栏写成一个比较层次化,一层一层慢慢深入的系统化专栏。但是,在工作的时候,刚好在做某一件事,在这个时间段,对这个知识点比较深刻,所以就提前把这篇文章写了,导致此专

    2024年02月01日
    浏览(36)
  • 使用 zk-SNARKs 的可编程零知识证明:第 3 部分

    之前,我们已经展示了如何使用称为零知识密钥声明证明 (ZKKSP) 的技术为以下声明构建零知识证明 (ZKP)。 基本上,它证明了不仅证明者知道给定公钥的密钥,而且还证明知道给定摘要的秘密哈希,而不会泄露秘密。 图片来自 CoinGeek 虽然 ZKKSP 有效,但它有一个严重的限制:它

    2024年02月02日
    浏览(26)
  • ARM Cortex-M0 全可编程SoC原理及实现笔记(1)

    对应全书的第九章   Cortex-M0架构分为硬件和软件部分,整个片上系统的内部结构如图1.1所示。 图1.1 硬件部分在FPGA上由纯数字逻辑实现,主要模块包括:   (1)系统时钟生成器(pll核)   (2)ARM Cortex-M0微处理器   (3)AHB-Lite系统总线:    控制信号,用于同步和

    2024年02月02日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包