Pixel-Fillrate

  “填充率“以每秒钟填充的像素点为单位,“三角形(多边形)生成速度“则表示每秒钟三角形(多边形)生成个数。现在的3D显卡的性能也主要看着两项指标,这两项指标的数值越大,显卡三维图像的处理能力就越强,显卡的档次也就越高。

  

填充率的故事

  谈到3D加速卡,最常用的一个词就是填充率。各大厂商在介绍和推广自己的产品时,填充率总是作为一个重要指标而大肆宣扬。甚至一场宣传战的争夺焦点也是填充率。那么,填充率到底意味着什么?为什么有些公司用texels(纹理填充率)而另一些用pixels(像素填充率)来定义呢?

  首先让我们来看看厂商们对填充率相关的声明:

  “ATi的下一代Rage 128 GL图形芯片将为高端PC市场提供最好的性能和功能,Rage 128 GL具有超标量渲染引擎和单通道多纹理技术,将是第一个突破1 G texel/s大关的3D芯片。”

  -引自ATI的多年前的一次产品宣传

  “nVIDIA Geforce 2,历史上第一款填充率破G的图形芯片!(1.0 Gigapixels)”

  nVIDIA当年的的新闻声明:

  

[理论峰值填充率]

  大多数公司所谓的填充率实际指的是理论峰值填充率,那么那些填充率的数值是怎么得来的呢?要获得一块显卡的填充率的前提条件是必须知道3D芯片的时钟。将芯片时钟、像素渲染管线的数目相乘,即可得到芯片的填充率数值。下面的几个例子有助于理解:

  3dfx Banshee处理器通常在100MHz下运行。它只有一条像素渲染管线,(这样每个周期它只能计算出一个双线性过滤像素并在屏幕上显示出来)。根据填充率的定义,Banshee的理论峰值填充率就是100MHzX1=100M pixels/s。

  nVIDIA RIVA TNT有两条像素渲染管线,芯片时钟为90MHz,很容易算出TNT的理论填充率为180M pixels/s。

  

  

  nVIDIA Geforce FX 5800 Ultra处理器通常在500MHz下运行。它有八条像素渲染管线,每条管线一个纹理单元。根据填充率的定义,Geforce FX 5800 Ultra的理论峰值填充率就是

  500MHzX8X1=4000M pixels/s。

  ATi Radeon 9700 Pro处理器通常在325MHz下运行。它有八条像素渲染管线,每条管线一个纹理单元。根据填充率的定义,Radeon 9700 Pro的理论峰值填充率就是325MHzX8X1=2600M pixels/s。

  原来如此,我明白了!先别太得意,事情可不是想的那么简单。上面的填充率都是在极端的条件下得到的。某些图形处理器面临限制,它们的像素渲染管线只能为同一个屏幕像素工作,如果像素为单纹理的话,那么第二个像素渲染管线就只好闲置了,这时填充率实际上很低。这里我要告诉大家的主要问题是:在不同的条件下,填充率可能有所不同。理论峰值填充率是3D芯片时钟与像素渲染管线数目的乘积。但这种填充率是在特定的工作环境下获得的,要求像素渲染管线可以同时工作。

  让我们来体验一个复杂些的情况:试着计算一下nVIDIA Geforce Ti 4600的填充率,Ti 4600有四条像素渲染管线,每条管线两个纹理单元,芯片时钟为300MHz, Geforce Ti 4600的理论峰值填充率怎么计算?300MHzX4X2=2400M pixels/s?嗯,算来不错,可实际上呢?300MHzX4=1200M pixels/s,这才是正确的计算!那么300MHzX4X2=2400M是什么呢?答案就是:2400M texels /s。这里,texels /s这个英文就是我们下面要讲的——纹理填充率。

  

[纹理填充率与像素填充率]

  为什么有的厂商广告词中填充率的数字怎么比理论填充率还要高?难道是厂商骗人吗?这里你所看到的填充率很可能就是纹理填充率而不是理论填充率!

  纹理填充率是指一秒钟内纹理渲染的数目,计算公式同理论填充率相似:3D芯片时钟x像素渲染管线数目x单个纹理使用的texel数目。

  哇,太难受了!不要紧,我们还是举例子:

  ATi Rage 128GL原打算设计为125MHz,有两条像素渲染管线。每条管线可以为一个双线性过滤像素上色,而双线性过滤需要4个texles。因此Rage 128GL纹理填充率为:125(时钟)X 2(像素渲染管线条数)x 4(texels)= 1000 Mtexels/s或1G texels/s。

  让我们回首上文那段新闻稿:

  “ATi Rage 128 GL图形芯片将为PC市场提供最好的性能和功能,Rage 128 GL具有超标量渲染引擎和单通道多纹理技术,将是第一个突破1 G texel/s大关的3D芯片。”

  许多人都迷惑不解,因为他们认为上面所说的1G texels是理论峰值填充率,我个人认为不应该使用纹理填充率,那样做的唯一目的就是欺骗和愚弄人们。所以当你看到一个近似天文数字或比同一代其他显卡高的多的填充率,你应当意识到那很可能是纹理填充率而不是理论峰值填充率。

  这里,我们要注意的是,纹理填充率从来都是以Mtexels表示,而不用Mpixels!

参考:http://blog.csdn.net/pizi0475/article/details/7565067

【转】Pixel-Fillrate的更多相关文章

  1. Intel graphics processing units

    http://en.wikipedia.org/wiki/Comparison_of_Intel_graphics_processing_units Comparison of Intel graph ...

  2. Atitit  图像处理Depixelizing Pixel Art像素风格画的矢量化

    Atitit  图像处理Depixelizing Pixel Art像素风格画的矢量化 在去年的时候,偶然看到hqx算法. 一个高质量的插值放大算法. 与双线性插值等插值算法相比,这个算法放大后对人眼 ...

  3. 片元着色器(Fragment Shader)被称为像素着色器(Pixel Shader),但

    片元着色器(Fragment Shader)被称为像素着色器(Pixel Shader),但片元着色器是一个更合适的名字, 因为此时的片元并不是一个真正意义上的像素.

  4. 悲惨记忆。。QImage之 pixel() && setPixel()参数不要给反了。。。

    QImage repairImg(width, height, QImage::Format_Mono); ; row < height; row++) { // uchar* ucRow = ...

  5. Pixel VS Point, FrameBuffer VS RenderBuffer

    // How iOS app MVC works View, Window, AppDelegate ViewController, RootViewController // On Pixel VS ...

  6. 像素图的实时光照 Lighting on Pixel Art

    去年有这样一个工具,We got one toolkit last year. 他有什么功能呢?What is its function? 让你画出各个方向的照明图 That you can draw ...

  7. voxel 与 pixel

    中文名称:体素,即顾名思义是体积的像素.用来在三维空间中表示一个显示基本点的单位.类似于二维平面下的pixel(像素). voxel是三维空间中定义一个点的图象信息的单位.在平面中定义一个点要两个坐标 ...

  8. pixel art之 hqx 算法

    在去年的时候,偶然看到hqx算法. 一个高质量的插值放大算法. 与双线性插值等插值算法相比,这个算法放大后对人眼保护相对比较好. 没有双线性插值看起来模糊,固然,也抽空把算法简单优化了一下. 官网及代 ...

  9. sdut 2411:Pixel density(第三届山东省省赛原题,字符串处理)

    Pixel density Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 Pixels per inch (PPI) or pi ...

  10. SDUT 2411:Pixel density

    Pixel density Time Limit: 1000MS Memory limit: 65536K 题目描述 Pixels per inch (PPI) or pixel density is ...

随机推荐

  1. codechef Far Graphs

    codechef Far Graphs https://www.codechef.com/problems/TBGRAPH 题意 : 给一个简单无向图,要求构造一个序列\(a\),长度为\(n\),极 ...

  2. mock的使用二(根据数据模板生成模拟数据)

    Mock.mock( rurl?, rtype?, template|function( options ) ) 根据数据模板生成模拟数据. Mock.mock( template ) 根据数据模板生 ...

  3. WPF自适应可关闭的TabControl 类似浏览器的标签页(转)

    效果如图: 虽然说是自适应可关闭的TabControl,但TabControl并不需要改动,不如叫自适应可关闭的TabItem. 大体思路:建一个用户控件,继承自TabItem,里面放个按钮,点击的时 ...

  4. @Autowired & @Resource 区别 & 解读@Bean

    一样     Autowired & @Resource 都可以用来Bean的注入,可以写在属性(字段)上.也可以写在setter方法上 不一样 1.来源不一样 @Autowired 由Spr ...

  5. 读懂IL代码就这么简单 ---- IL系列文章

    读懂IL代码就这么简单 (一) 读懂IL代码就这么简单(二) 读懂IL代码就这么简单(三)完结篇 出处:http://www.cnblogs.com/zery/tag/IL%20%E7%B3%BB%E ...

  6. smarty核心思想 自制模板引擎

    <?php $tit = '今天下雨了,淋了半条街'; function tit($file){ //读文件 $h = file_get_contents($file); $h = str_re ...

  7. 在一个form中有两个submit,值分别为修改和删除,如何在提交时用js判断submit值为修改还是删除呢

    同一个form里,不管哪个 submit 都是直接提交form表单里的内容. 要达到你的目的,就不能用类型为 submit 的按钮,要用 button,然后加onclick 方法来自定义预处理参数,然 ...

  8. Quick 3.3 final 加载ccs的变化

    1,用self._topUIWidget = ccs.GUIReader:getInstance():widgetFromJsonFile("mapTopUI.json")就还是用 ...

  9. angular指令,异步调用数据,监控数据的变化(自定义一个表头的指令)

    angular框架中提供了很多有效的指令,指令的目的就是为了提高代码的复用率,提高工作效率. 下面我们自己来定义一个指令: 一点建议:写指令名字的时候,尽量不要用用大写,下划线等,否则会有很大的坑等着 ...

  10. HTML:target=_blank

    _blank -- 在新窗口中打开链接 _parent -- 在父窗体中打开链接 _self -- 在当前窗体打开链接,此为默认值 _top -- 在当前窗体打开链接,并替换当前的整个窗体(框架页) ...