显卡成像原理.doc

上传人:汽*** 文档编号:548830969 上传时间:2023-04-14 格式:DOC 页数:4 大小:36.51KB
返回 下载 相关 举报
显卡成像原理.doc_第1页
第1页 / 共4页
显卡成像原理.doc_第2页
第2页 / 共4页
显卡成像原理.doc_第3页
第3页 / 共4页
显卡成像原理.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《显卡成像原理.doc》由会员分享,可在线阅读,更多相关《显卡成像原理.doc(4页珍藏版)》请在金锄头文库上搜索。

1、显卡成像流程基本概念l 像素l 色深l 像素填充率l 三角形生成速度几何运算阶段从前,显卡的功能非常有限,许多功能必须由CPU来完成,几何运算就是CPU把显卡要显示的物体的有关数据首先计算出来,然后传递给显卡。随着显卡技术的不断提高,许多原先由CPU完成的运算显卡也可以做了。因此很难严格的区分哪一个阶段具体是由CPU还是显卡完成的。相信以后显卡的性能会越来越提高,要做的工作也会越来越具体(GeForce 3的晶体管数目比P4还多),相信这是显卡发展的潮流。可见下图:系统任务CPUCPUCPUCPU场景任务CPUCPUCPUCPU坐标变换CPUCPUCPU显卡光照处理CPUCPUCPU显卡三角形

2、计算CPU显卡显卡显卡渲染显卡显卡显卡显卡1996 1997 1998 1999坐标变换把物体拆分为三角形我们在电脑屏幕上看到的3D物体其实可以用三维坐标系来具体描述:X轴代表长度;Y轴代表高度;Z轴代表深度。物体不断地变化(放大,缩小,平移,旋转,变形),各个轴的数值不断改变,CPU必须迅速计算出物体移动到下一个位置的各个坐标轴的新数值,但是,画面上同时存在许多物体,每个物体都有自身的坐标系(这是编程人员在开发软件时决定的),必须要经过一个坐标变换的过程,把屏幕上所有的物体(成千上万个三角形)融合到一个公用的坐标系内!然后再输出。这个过程非常依赖中央处理器的浮点运算能力。可以细分为两步,1定

3、点变换,2视角变换.。光照处理各种光源的明暗度,反光,折射光源照射到物体上,会产生许多效果,我们才可以得到一个物体在一个场景中的真实感但一个场景中,光源可能不止一个,CPU必须计算出物体在不同的光源下的不同效果,融合到一起才能把物体表现的更真实,光源越多,CPU的负担就越大,图像处理速度就越慢。一般来说,可以分为两种光源:环境光和直射光。前者是由物体所在的场景赋予的,后者则是由物体本身产生的。直射光有颜色,亮度,位置,传播方向等说法。直射光与物体表面材质相互作用就会产生让物体看起来有明有暗,很真实的效果,一般把直射光分为四种:1点光源(灯泡)2聚光灯3平行光4平行点光。三角计算传送坐标数据资料

4、和光源明亮计算结果CPU将经过计算得到的结果传送给显卡的过程称为三角形计算。 一般是CPU来执行,具体步骤是CPU通过显示卡的图像显示功能函数(API)来把数据送出去,在这个阶段中,显卡的驱动程序起到了关键的作用。如果驱动程序有问题,电脑就会在进入3D游戏时卡住。这是显卡在对物体作贴图和渲染之前必须的准备工作。几何处理的最后阶段是顶点剪裁,就是把三角形上不能在屏幕上显示的点去掉,从而节省图像处理阶段的时间。图像处理阶段这个阶段需要我们理解许多有关图像生成的概念。不同芯片的显卡在处理相同的问题时采用的方式并不完全一样。但基本原理相同。最重要的步骤是贴图和渲染景深处理物体的前后顺序在包含多个物体的

5、图像中,每个物体都有自身的显示区域,但所有的物体之间还有一个相互遮掩的问题,一般来说,显卡应该只处理那些使用者可以看到的像素,对于被遮住的像素完全可以不去管。在这个问题上,比较成熟的处理手段是Z-Buffer技术 隐面处理方法的一种,显示三维物体时,首先检查物体内侧看不见的部分,并只显示看得见的部分。对于同时要显示的许多物体来说,首先设立一个缓冲区,把有关每一个物体的深度信息(景深)存入这个缓冲区中,可见,如果缓冲区很大,景深数据的精度就会很高,图像质量就会变得相当不错。但由于算法本身的原因,不可能对那些不应该显示的像素完全抛弃,总要进行一些不必要的计算,在这一点上,Z-Buffer并不是目前

6、可见性判别技术中最先进的解决方法。纹理贴图在3D物体的表面上贴上2D的材质 (多种方法)目前处理贴图的方法有很多种,一个好的算法不仅能让画面更真实,而且可以让物体表面材质的数量加大,这样就可以避免目前普遍存在的AGP带宽 AGP的带宽目前分1X,2X,4X三种,AGP总线出现的最初目的就是让显卡可以处理更大量的数据,但是随着软件的发展,需要贴到物体上的材质贴图越来越大,有时可能会达到3GB,AGP4X的峰值数率才是1G多一点,可见为了一方面保证速度,一方面保证显示质量,我们必须对纹理贴图进行一定的算法处理,在这一点上,显卡上显存的容量,速度是相当重要的。不足的问题。所谓纹理就是三维物体或其表面

7、的二维影像,就好象是某个物体的照片一样。以一面砖墙为例,如果你想告诉别人一面砖墙是什么样子的,你不可能背着墙到处跑,最方便的办法是拿一张墙的照片给别人看。纹理贴图的原理就是这样的。在实际显示过程中,砖墙的几何图形太多,细节太复杂,要逐点逐位的显示的话是不可能的,这时就采用纹理贴图的办法,使显示的效果看起来把所有的点和细节都表现出来了。要使用纹理贴图,我们必须首先搞清楚什么是纹理以及它的组成。最简单的回答就是纹理是由许多的色块组成的。通过采样这些色块或者或者叫做图素(texel)的颜色值,我们可以确定如何对每个象素点进行着色。具体有多少个图素取决于纹理贴图的分辨率。通过采样,我们就可以用一块纹理

8、贴图来对一个大物体进行着色,这样就可以大大减少计算量,提高整体性能Mip映射 Mip映射是贴图的最基本技术。它通过为同一几何模型提供多种解析度的纹理,并随着距离变化作相应更换,避免在超出人眼感知能力的视距上使用过于精细的贴图,以降低系统资源浪费。当视角较远时,采用精度较低的纹理,这是你也感觉不到小纹理模糊不清的缺点;当视角在近处时,小纹理的弱点会暴露得一览无遗,这时Mip映射将根据当前的Z轴坐标,从预先设置好的纹理中选择一张位置最接近的大纹理进行显示。也就是说,在一张材质被贴图前,Mip映射会先将这块材质大小倍率计算好,等到这块三角形随着移动放大或缩小时,把已经计算好大小的贴图立刻拿出来取用。

9、物体的一个基本属性就是运动。即使物体本身不动,但如果你的视角改变的话,等效于物体位置的改变。在使用纹理贴图时就必须注意这一点,必须把贴图和物体一起移动。下面我们再想一想更复杂的情况。比如看地板,随着视角的不同,看到的效果也是不一样的,与此相应的贴图也必须改变。当视角较远时,远处的物体变小了(模拟景深),这时纹理的尺寸必须要随之改变。但有时候纹理尺寸的改变会产生目眩,目眩是一种锯齿效果。还有一个问题是当采样的图素比正在写的象素要大时也会产生锯齿效果。滤波材质已经贴到物体上了,但是材质的颜色尚未确定。如果搞定颜色,这就是滤波技术。目前的滤波方式主要有以下几种点取样 点抽样是最基本的纹理形式。它是一

10、种简单的纹理映射技术,用最近的纹理元素来决定当前点的颜色。这种方法的缺点是很不精确,会造成细节的损失。双线性滤波 纹理贴图的另外一个方法是双线性滤波。双线性滤波与点抽样类似,所不同的是它不是用一个图素的值作为象素的值,而是采样一个2x2的图素块,用这四个图素的平均值作为象素的值。通过这个改进,双线性滤波实现了更好的纹理效果,细节也表现得更加清晰。三线性滤波三线性滤波本质上是改进的双线性滤波,它可以将滤波器和Mip映射结合起来。它也是采用一个2x2的图素块,求得四个图素的平均值A1,然后在相邻的Mip映射层上再取一个2x2的图素块,求得这四个象素的平均值A2。最后的输出值就是A1和A2的平均值。

11、采用三线性滤波可以有效地消除不同Mip映射层之间的那条分界线,而双线性滤波时那条线就很明显。另外,三线性滤波在消除纹理锯齿方面也是很有效的,因为三线性滤波的采样的图素点比较多,相邻象素之间颜色的过渡很平滑。不规则形状滤波(各向异性过滤) 对双线性滤波和三线性滤波来说,物体的形状是一个很大的问题,因为它们都是均匀滤波器,它们在滤波时都是把物体当做方形来处理的。然而在现实中,大部分物体并不是方形的,这时再采用线性滤波器就会产生变形、失真。这时就要采用非标准形状滤波器(anisotropic),非(an)标准(iso)形状(tropic),从字面上我们就可以看出非标准形状滤波器和其它滤波器是不一样的

12、。非标准形状滤波器也是通过采样不同Mip映射层的8个图素值来达到滤波的效果,它可以对不规则形状的物体进行滤波。目前对非标准形状滤波器还没有一个统一的标准,但大家都认为它确实可以改善纹理效果。非标准形状滤波器本质上就是一个非线性滤波器,理论上它可以只有两阶,但实际使用的通常都是8阶以上。着色渲染光亮度和质感度(多种方法)在多边形完成了贴图的步骤后,为了让一个物体更趋向真实,必须要依照光源方向和浓密度来将多边形的表面漆上明亮度和质感度。而有关光源的属性已经在几何运算阶段中计算完成,这些参数就可以直接利用上了。渲染方法也有许多种,这里介绍最基本的几种。1. 平面渲染这是最简单的一种渲染方式,他只能给

13、每个三角形一种颜色。在光照方面我们只能给每个三角形一个平均的数值来做大概地表示。因此不可能达到平滑地渲染要求。这种处理方式的优点是速度非常快,但缺点也很明显,那就是渲染效果不能十分出色。在平面渲染做的图片中,三角形的边缘在亮度上总会有不同程度的偏差,应该明亮的地方不一定明亮,暗的地方也不一定很暗。2. 高氏渲染高氏渲染是利用三角形每个顶点的亮度在相应的边上进行有规律的插值处理,这样,这个三角形的颜色就由三个顶点共同决定,每个顶点颜色也会变得平滑,虽然这并不是目前技术最好的渲染方法,但对硬件的依赖性并不高。所以各种显示卡都使用了这种渲染方式,这也是目前所有游戏中使用最广泛的一种渲染方式,3. 补

14、色渲染*这是一种相当先进的渲染方式。高氏渲染在取样计算时,只会估计每个多边形顶点的光影效果。补色渲染却会把这个多边形中的每一个点都包括进去,在反映光的折射和反射方面效果相当好。但是由于补色渲染的计算量很大 在这里,简单介绍一下补色渲染的处理流程,首先,你要找出每个三角形的顶点,算出顶点上对角线上像素的颜色值,然后再用这个颜色值与其它像素进行线性的插值计算,一直计算下去,直到计算出所有像素的光影数值。可见,这样复杂的插值处理当然需要更多的运算次数了,所以效果就更接近真实的物体,但你看一幅图的时候,补色渲染可以比较细腻的表现出由光源所引起的反射在物体本身不同位置造成的效果差别!需要的计算量相当大。

15、,对显卡的性能要求很高。效果处理雾化,透明,混合 FSAA为了提高图像效果,不少厂商都提出了自己的特效技术。如全屏抗锯齿技术 FSAA的英文全称是Full Screen AntiAliasing(中文名称叫做全屏抗失真)。它的最主要的作用就是能够通过芯片内部的特别处理电路或者软件的转换,来使在目前主流显示器上游戏画面中的3D物体和场景的失真的象素尽量减到最低的程度来达到平滑的效果。它可能会在游戏画面的色彩或者色阶的过渡上带给我们什么好处,当然了对于传统的2D,也同样没有用处。还有一点值得注意的就是FSAA并不能把锯齿给消除掉,我们平时所称的抗锯齿很多时候指的是边缘抗失真。多边形边缘的抗失真准确的来讲并不能算是FSAA,而是叫做Edge Antialiasing边缘抗失真,它才能真正的使3D物体的成型边缘出现的锯齿消失,但是目前只有极少的高端级的显卡才支持硬件边缘抗失真,所以请大家一定要记住一点,FSAA不能等同于边缘抗失真,它所能做的就是能达到画面象素级别上的抗失真,那为什么我们也可以在FSAA的画面中看到平滑的物体边缘呢?因为显卡通过一些其它的补偿办法来达到近似硬件边缘抗失真的效果,事实上是把它缩小到一个人眼所不易觉察到的范围,但这个时候实际上锯齿仍然是存在的。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号