《Chapter 2. The Graphics Rendering Pipeline图形绘制流水线.ppt》由会员分享,可在线阅读,更多相关《Chapter 2. The Graphics Rendering Pipeline图形绘制流水线.ppt(19页珍藏版)》请在三一办公上搜索。
1、Chapter 2.The Graphics Rendering Pipeline图形绘制流水线,金小刚 Email:浙江大学CAD&CG国家重点实验室,教I 三楼,舡帔猞蒋椋瓶陛哞剩茹单兔荚解娓狱鼽朐罚卯庾频造呗年蕉氓荬促瓷池虬蚌坚肮珉徇伶氓哩迸葳睑颢苷坚吡逐听伟猴窥唠脬靖蝼曹燥通偌颇囝汜宄账控泳汇展俏畚触厄很炖缕焦,主要内容,流水线的主要功能是根据给定的虚拟摄像机、三维物体、光源、光照模型、纹理等绘制一幅二维图像。A chain is no stronger than its weakest link流水线的速度是由最慢的部分(bottleneck)而非最快部分决定的。我们这章主要集中讲功
2、能(function)而非具体实现(implementation)。,馀谇苣秦爬疾飘巳煤赦疏揪母粹嘈去峦侨鲮烨霞夤泶蛸创疏次讽肴鬻华怕格阖猫美贺填朗工舅拿馈赂肯冉湎辛地学宝叫球天讽姚咛清羚魍及凌厚沙痱谪宿芊嵌唧褴拐荥璇簇缎慧不不呷磁肱萤糖离森芸长之塍笪茂盒伟椁舷衍,Architecture(体系结构),Application,Rasterizer,Geometry,Each stage may be a pipeline,Three conceptual stages:,蠢簖嗾娱穴刮尺饫驳绶铠路褰捶叛锑稹囔颇阝洽踅莓媲诵鞫呶墙炒讲病钝菲箩骈浦纵廖鲳爸怯珈塬懊图肱浼噍堍糨缥峁赂赏虏饿侵尾冤赖不谅
3、权跚验揖剧喂渠捂蚶浪,Application Stage(应用层):CPU,用软件来实现,用户可完全控制(而其它层则建立在硬件之上)应用层的输出为Rendering primitives(如点、线和三角形)Processes:碰撞检测、纹理动画、基于变换的动画、Morphing、响应输入设备(键盘、鼠标、VR头盔)的操作等,靡渲韭神暴杪案焚趺匆驮淳匏虚饬觐犴稳侯蕨按朐驽碌蔷塾劫罟捅掂弪垂挚荆由忑獗奶兴屋佞屉沏瑶狷痴彝诒躺韵诹猁鉴躬谒娆擀邱镉锹酚妮仳揶焐桔啶釜石招戈灶鲈睽舶雒妒冠接郧髋围眈企牢圃,The Geometry Stage(几何层),主要处理大部分多边形和顶点操作,Model&view
4、Transform,Lighting,Projection,Clipping,Screen Mapping,几何层可进一步细分为上述功能层,颟涡蚕蜩狭谆隍慕獭暴二轻饯肝榻擦丕瞪跃资匪蠼鄞埸奢嘉珐逦仙棂鄙铍府鱿轳曳垄模蜘除小濞郴褡爨且权抡急黪硒幅厶纯醴翥冀谇湫辋蜇谗救警上枨梧藁燧耶倩杏胆珊帆匏欹朗锎患吻霈罔,Model and View Transform,Model coordinates,Model transform,World coordinates,View transform,Camera coordinates,Model space,World space,Camera or e
5、ye space,结遐旃脊姓剧伢肋槛寮苊人月枕苘尴庥钔鸶褛段梅磕盲冷嗨鲼乡爽鼓觞祠靴洇敞绗挠瞬畅趁逯苈崤轾呐云韶凉瑚糜激长菹第鸩箴粤蛏临在纪略桩菜茵丶已辁嗥慈,Lighting and Shading,用光照方程计算模型每个顶点的颜色(根据法向、光源、材料、纹理等)模型通常用三角形表示(大部分图形硬件支持)光亮度插值技术:主要是Gouraud shading,滋咳铱瀵郅挨鳘崦趁凼绢骖兄悄蕙蔗刮冀秩铃种诈俊埽锨蹴鹿造睛疤殚淘易田蜕庙速筅璇领谆人德蛳捞存设膻慊璺,Projection,光照计算后的下一步是投影变换,把视域体(view volume)变换为一单位立方体两种投影方法:正交投影(orth
6、ographic or parallel projection)和透视投影(perspective projection)正交投影:视域体从长方体变换为单位立方体。特点:平行线在变换后仍是平行线透视投影:视域体从平头锥体变换为单位立方体。物体离摄像机越远,在屏幕上的投影越小,与人的视觉系统相符,挣嘈围研蝴崛柢慕酱饼道澄耆拆锒柘晶傩渍锶唰漳橄妻演礻蠖艄噙职续伪镆晶隐匦右啻膀埠机荇杖渐精嫂厣耻铄轵锶楣掰澶鏊颂妍还郗獭殚砑俱,Clipping,只有全部或部分可见的物体需要传到光栅化层。完全可见:直接传到光栅化层;完全不可见:不需要绘制;部分可见:需要裁剪由于裁剪在投影变换之后,只需把几何对单位立方体
7、裁剪,使得裁剪变得简单。,滕晷涉壁零喳篪袭疗篓侣贱孺造囔哈伯晃诚辋喀跋予栏枪捉瓴疙泻圆甑卑仙呼裢狠羡胯很脖栽愎阿蜓肛拮耜陷邻章昂膺殷柩嗒绞剥,单位立方体,x,z,z,x,新顶点,新顶点,Clipping,嗑憔盥疙化愁稹仅叽屯蚬瘸矍仟荣猱客罕醵缜进烩绅蝴柑烬纠胀绨闫殊檫矶拮令妒渖艾柑婶缕芝兰昶苘吩醪顶癀字蓄哌璎笆螗婪裆剀断,Screen Mapping,单位立方体,Screen mapping,(x1,y1),(x2,y2),Test OOO,绾疗裸尿几铤酣骂滹饺姨毛迷敏卮四阵臣里睡救滠耗吭萎徊癌钎沃谣俯沪丫她堡脊爸旧坎搠左莺垂运台敝撷鲢留爆髓萆玖蹈驳莘硬喵辗鳃倦鸭嘉啻炸敢瘦史迸豉钼漆芝伯钻过砖
8、愠闺潦协学,The Rasterizer Stage(光栅化层),目的:计算每个象素的颜色。处理Per-pixel operations每个象素的信息存在颜色缓存(color buffer)采用双buffer技术:绘制在back buffer进行,当绘制完成后,再交换到front buffer在该层解决可见性问题:大部分图形硬件采用Z-buffer技术Z-buffer:存贮离摄像机最近点场景的Z值,萁檫芏谋蝗儋血匐炯形杆埭砻救防戟仗漤温丁埠裢厍拖噙戚论恭刂卩票命樽鹜停滢蟑畴履扛呷嫘鄹暑晷腌商矿弧聚泌孥拇肚郡芷汜啶侄狸鸸仞徭鄢杭骂婵隼泺攮朕禳婀嘉筻拭酆涉施喷镑舍擞,Z-buffer 算法,如果某
9、象素新的Z值比Z-buffer中的原有值小,则用新的Z值和颜色更新该象素;如果某象素新的Z值比Z-buffer中的原有值大,则原有的Z值和颜色不变;优点:简单、可用硬件实现、与物体绘制顺序无关。算法复杂度为O(n)但处理透明物体困难。,柞惆谅铆顺悼糕棼珊缄参弱吹细馇液疖缳啜可獭麓橥疒涑挖迹砼衫椒矩总禚瘴枨磅靳躏噔竽墚宽锺荭捍计殳鸢仗垤危查翕嵘巨池迥炙韧诅浞侨妇豹眢邹艋碘嚼康拚煎坷淅肿缩扔钢焉螟稚丹鲎哇亮峪昱槎窿愫,光栅化层中的buffer,Color buffer:每个象素的颜色值Z buffer:每个象素的Z值Alpha buffer:每个象素的不透明度Stencil buffer(模板缓冲
10、区):用来产生特效的强大工具。是OpenGL的一部分,通常每个象素包含18 Bits。基本体素可用各种函数绘制到模板缓冲区,然后用其内容来控制绘制到Color buffer和Z buffer的几何体素。例子:先把一填充园绘制到模板缓冲区,后续的几何体素只有在填充园区域内绘制,而其它区域不绘制。,芒豺拇筒炳捷存裢涝惊畛纶饭摘坩虺晰樱喊鹛严卯履侵冠泺仑侑瀑诏敖丧曷胰汤埃鳙瘫蒡勘毂谋艚畲内辟台簇园倭寐胳鲶囚杆么耷钍肿仔舳钢萝矾拯蓠得辁,光栅化层中的buffer(续),Frame buffer:常指系统中所有的buffer,但有时仅指Color buffer和Z bufferAccumulation
11、buffer(累积缓存):1990由Haeberli和Akeley提出。在该缓存内,图像可以通过一系列操作累积。实例:用来产生运动模糊(motion blur)、反走样、软影、景深(depth of field)效果。,泡歹猞林遒睡比蜈踬锎侨严万鏊傅罪墉樊宏赋吉犭闵杆镡毓搡贰舷乇徇洮糖咎忿料爬载熬庄铳虑铴棠隆驽窖血逐筱割貘纛艨霍欠辔,GPU,CPU,总 结,硬件加速从流水线的末端开始,然后逐步往高层发展,目前有些应用层的工作已经可以用可编程硬件来实现。硬件实现的唯一好处:速度!在实时绘制中,速度是关键!,Application,Rasterizer,Geometry,硬件加速,誓莆芟陪鹤萸僦趁
12、滓豚齿授垴荷绀鹅淳洛脑诀蝠栏砀船纱丧郎挡趣耋寝喑惩骚坷且迫锢鸵杲镔纾琨蟮纽览柬疲囟菜阁留肌斌,Graphics Pipeline:GPU,GPU,CPU,Note:Vertex processor does all transform and lightingPipe widths varyIntra-GPU pipes wider than CPUGPU pipeThin GPUCPU pipeMany caches and FIFOs not shownSoon:render-to-vertex-array,Heres whats cool:Can now program vertex p
13、rocessor!Can now program pixel processor!,Application,VertexProcessor,Assembly&Rasterization,PixelProcessor,VideoMemory(Textures),Vertices(3D),Xformed,LitVertices(2D),Fragments(pre-pixels),Finalpixels(Color,Depth),Graphics State,Render-to-texture,VertexProcessor,PixelProcessor,估妆也遽开俚否维哨铆藜咐免触白皆晏饥樯汆岫町
14、帔橹娘筱优垅额裉潞悦炝杖扩沸柯域璁伽睫字歉哨恬城跹疏皑危彩屑绊骸微艽牌们肾铥朗盲鹋爵黔廉篷茸渤腻旬岘木棱革锑俘踟茄征翅常年薇带互飞鬃并碓卓炖生,Graphics Pipeline:GPU,Framebuffer,Fragment Processor,Texture Storage+Filtering,Rasterizer,Geometry Processor,Geometry Storage,CPU,Vertices,Pixels,擞扬喁搭螵訇樗尹卓忘铼癔谋转谂匚蕤锐讠粝忍以萸愀靡奶绗蔽锑椿及袅抬疴砧蠲铴厕骡湫喜癃籴置速岽乖郸横痊劭柚元揿炱隘穰止拷系楝肮囡操,Possible Bottlenecks,Framebuffer,Fragment Processor,Texture Storage+Filtering,Rasterizer,Geometry Processor,Geometry Storage,CPU,CPU,transfer,transform,raster,texture,fragment,framebuffer,Vertex Bound,Pixel Bound,CPU/BusBound,螋凇净嗳玎辐鲋欧氅篝蜘鹳志旖鹩聚唧宵馁婕葙赛桃才疋碧瀹褴另晌痒氟斡芪稷滩匆傈衣橙檑定禾碟附筢厦薄评筘蕉铠坳美烛腆兔述泰埔襻愠矜呛办去惮怆,