![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
GPU与CG
feng鸽
一点点的成长,最终会成为参天大树.
展开
-
GPU介绍
GPU发展第一阶段: 这些GPU可以独立于CPU进行像素缓存区的更新,并可以光栅化三角面片以及进行纹理操作,但是缺乏三维顶点的空间坐标变换能力,这意味着“必须依赖于GPU执行顶点坐标变换的计算。”这一时期GPU的功能非常有限,智能用于纹理组合的数学计算或者像素颜色值的计算。 GPU发展第二阶段: 这一时期的GPU可以进行三维坐标转换和光照计算,并且Ope原创 2016-11-20 21:07:22 · 833 阅读 · 0 评论 -
GPU内存架构
从物理结构而言,寄存器是cpu或gpu内部的存储单元,即寄存器是嵌入在cpu或者gpu中的,而内存则可以独立存在;从功能上而言,寄存器是有限存储容量的高速存储部件,用来暂存指令,数据,和位址。Shader编成是基于计算机图形硬件的,这其中就包括GPU上的寄存器类型,glsl和hlsl的着色虚拟机版本就是基于GPU的寄存器和指令集而区分的。原创 2016-11-21 04:33:38 · 1265 阅读 · 0 评论 -
Z Buffer与Z值
Z buffer应该是大家最为熟悉的缓冲区类型,又称为depth buffer,即深度缓冲区,其中存放的是视点到每个像素所对应的空间点的距离衡量,称之为Z值或者深度值。可见物体的Z值范围位于[0,1]区间,默认情况下,最接近眼睛的顶点(近裁减面上)其Z值为0.0,离眼睛最远的顶点(远裁减面上)其Z值为1.0.使用z buffer可以用来判断空间点的遮挡关系,著名的深度缓冲区算法(depth-b原创 2016-11-21 04:39:55 · 4293 阅读 · 0 评论 -
Stencil Buffer
Stencil buffer,为“模板缓冲区”,它是一个额外的buffer,通常附加到z buffer中,15位的z buffer加上1 位的stencil buffer(总共2个字节);或者24位的z buffer 加上8位的stencil buffer(总共4个字节)。每个像素对应一个stencil buffer(其实就是对应一个Z buffer).原创 2016-11-21 05:09:08 · 512 阅读 · 0 评论 -
Frame Buffer
Frame buffer,称为帧缓冲器,用于存放显示输出的数据,这个buffer中的数据一般是像素颜色值。Frame buffer有时也被认为是color buffer(颜色缓冲器)和z buffer的组合。Frame buffer通常都在显卡上,但是有时显卡会集成到主板上,所以这种情况下frame buffer被放在内存区域。原创 2016-11-21 05:11:57 · 406 阅读 · 0 评论 -
Shader Language
任意一种shader language都必须基于图形硬件,所以GPU编程技术的发展本质上还是图形硬件的发展。在shader language存在之前,展示基于图形硬件的编程能力只能靠低级的汇编语言。顶点和片段处理器都拥有非常强大的并行计算能力,并且非常擅长于矩阵计算,片段着色器还可以高速查询纹理信息(目前顶点处理器还不行,这是顶点处理器的一个发展方向)顶原创 2016-11-21 05:29:32 · 404 阅读 · 0 评论 -
Vertex Shader Program
顶点着色程序从GPU前端模块(寄存器)中提取图元信息(顶点位置. 法向量 . 纹理坐标等),并完成顶点坐标空间转换,法向量空间转换,光照计算等操作。最后将计算好的数据传送到指定寄存器中。然后片段着色器从种获取需要的数据,通常为“纹理坐标,光照信息等”,并根据这些信息以及从应用程序传递的纹理信息进行每个片段的颜色计算,最后将处理后的数据送到光栅操作模块。如果只有顶点原创 2016-11-21 05:32:27 · 411 阅读 · 0 评论 -
Fragment Shader Program
片段着色程序对每个片段进行独立的颜色计算,最后输出颜色值的就是该片段最终显示的颜色。可以这样说,顶点着色程序主要进行几何方面的运算,而片段着色程序主要针对最终颜色值进行计算。片段着色器还有一个突出的特点是:拥有检索纹理的能力。对于GPU而言,纹理等价于数组,这意味着,如果要做通用计算,例如数组排序,字符串检索等,就必须使用片段着色程序。片段和像素的区别?原创 2016-11-21 05:53:47 · 771 阅读 · 0 评论 -
GPU待解决的问题
首先需要知道“我们想让着色语言提供那些特性”,首先,希望着色语言可以做到方便进行通用计算编程,而不被数据之间的独立性所限制,其次,我们希望在着色语言方面有所加强,此外,着色语言还需要引入继承机制,让其面向对象的特性更加明显,要加强调试功能,可以对程序执行过程进行调试(现阶段好像比较困难),如果没有很好的调试功能,也希望可以有一个比较通用的IDE提供给编程者。此外,未来的可编程图形硬件的顶点处理原创 2016-11-23 06:02:07 · 260 阅读 · 0 评论 -
像素操作的流程
Fragment& Associated Data ===>Pixel OwnershipTest ===>Scissor Test===>Alpha Test ===>Stencil Test===>Depth Test===>Blending===>Dithering===>Logic Op===>Color Buffer.原创 2016-11-20 23:56:00 · 338 阅读 · 0 评论 -
Pixel Operation
Pixel operator 又称为Raster Operation,是在更新帧缓存之前,执行最后一系列针对每个片段的操作。其目的是:计算出每个像素的颜色值。在这个阶段,被遮挡面通过一个被称为深度测试的过程而消除,这其中包含了很多种计算颜色的方法以及技术。1.消除遮挡面2.纹理操作 ,根据像素的纹理坐标,查询对应的纹理值3.混色 ,根据目前已经画好的颜色原创 2016-11-20 23:43:38 · 394 阅读 · 0 评论 -
CPU VS GPU
GPU具有高并行结构,所以GPU在处理图形数据结构和复杂算法方面拥有比CPU更高的效率。CPU大部分面积为控制器和寄存器,与之相比,GPU拥有更多的ALU(Arithmetic Logic Unit 逻辑运算单元)用于处理数据,而非数据高速缓存和流控制,这样的机构适合对密集型数据进行并行处理。CPU执行计算任务时,一个时刻只处理一个数据,不存在真正意义上的并行,而GPU具有原创 2016-11-20 21:23:17 · 336 阅读 · 0 评论 -
GPU图形绘制管线
图形绘制管线描述GPU渲染流程,即“给定视点,三维物体,光源,照明模式,和纹理等元素,如何绘制一幅二维图像”。将图形绘制管线分为三个主要阶段:应用程序阶段,几何阶段,光栅阶段。应用程序阶段: 主要和CPU,内存打交道;诸如碰撞检测,场景图建立,空间八叉树更新,视锥剪裁等经典算法都在此阶段。 该阶段的末端,几何体数据(顶点坐标、法向量、纹理坐标、纹理等)通过数据总线原创 2016-11-20 22:27:17 · 344 阅读 · 0 评论 -
顶点坐标空间变换流程
几何阶段的主要工作室“变换三维顶点坐标”和“光照计算”。(T &L)顶点坐标变换的顺序: 模型坐标空间===》世界坐标系空间====》观察坐标空间===》屏幕坐标空间.原创 2016-11-20 22:33:46 · 877 阅读 · 0 评论 -
从object space 到world space
object space coordinate就是模型文件中的顶点值,这些值是在模型建模时得到的,如,用3DMAX建立一个球体模型并导出.max文件,这个文件中包含的数据就是object space coordinate;其二,object space coordinate与其他物体没有任何参照关系,它是将object space coordinate和world space coordinate原创 2016-11-20 22:38:30 · 1219 阅读 · 0 评论 -
从eye space 到 project and clip space
一旦顶点坐标被转换为eye space 中,就需要判断哪些点是视点可见的。位于viewing frustum梯形体以内的顶点,被认定为可见,而超出这个梯形体之外的场景数据,会被视点去除(Frustum Culling,也称之为视锥裁剪)。这一步通常称之为“Clip(裁剪)”,识别指定区域或区域外的图形部分的过程称之为裁剪算法。多边形裁剪就是CVV(单位立方体或者规范立方体)中完原创 2016-11-20 23:02:50 · 339 阅读 · 0 评论 -
图元装配
图元装配,即将顶点根据primitive(原始的连接关系)还原成网格结构。网格由顶点和索引组成,在之前流水线中是对顶点的处理,在这个阶段是根据索引将顶点连接在一起,组成线、面单元。之后就是对超出屏幕外的三角形进行裁剪。想象一下:一个三角形其中一个顶点在画面外,另外两个顶点在画面内,这时我们在屏幕上看到的就是一个四边形,然后将四边形切成两个三角形。此外还有一个操作涉及到三角形的顶点顺原创 2016-11-20 23:16:44 · 4129 阅读 · 0 评论 -
光栅化
光栅化:决定哪些像素被集合图元覆盖的过程。我们得到每个点的屏幕坐标值,也就知道我们需要绘制的图元(点、线、面),存在两个问题.问题一: 点的屏幕坐标值是浮点数,但像素都是由整数点来表示的,如何确定屏幕坐标值所对应的像素?问题二:在屏幕上需要绘制的有点,线,面,如何根据两个已经确定位置的2个像素点绘制一条线段,如何根据已经确定了位置的3个像素点绘制一个三角面片?原创 2016-11-20 23:31:15 · 407 阅读 · 0 评论 -
经典的光照模型
原理的阐述的过程难免是枯燥的,我们会尽量在逻辑安排和讲解方式上减轻这种感觉。环境光:从物体表面所产生的反射光的统一照明,称为环境光或背景光。通常我们认为理想的环境光有如下特性: 没有空间或方向性,在所以方向上和物体表面投射的环境光强度是统一的恒定值。由于环境光给予物体各个点的明暗程度均一样,因此,只有环境光是不能产生具有真实感的图形效果。原创 2016-11-23 19:52:53 · 2419 阅读 · 0 评论