Rasterizer Stage(读书笔记3 --- Real-Time rendering)
rasterizer stage的目标:计算和设置每个像素的颜色。将屏幕空间的二维顶点和每个顶点的shading信息转换为屏幕上的像素。
rasterizer stage可以分为几个阶段:triangle setup, triangle traversal, pixel shading, and merging

1. Triangle Setup 这个阶段是计算三角形surface的微分及其他数据的。此阶段生成的数据用来做扫描转换(scan conversion)和对不同的shading数据进行插值。
这个阶段是由fixed-operation hardware(固定操作硬件)完成的.
2. Triangle Traversal
寻找哪些采样点或者像素在三角形内部的过程叫triangle traversal 或者 scan conversion.
每个三角形fragment的属性都是用三角形顶点之间的插值生成的,这些属性包含depth,从geometry stage来的shading data
扫描转换:把顶点表示转换为点阵表示,即从给定的边界出发求出位于内部的各像素
3. Pixel Shading
所有的像素着色都是在这一步完成,输入数据是shading data的插值,输出数据是一个或者多个颜色值。
和前两个阶段不同的是,这一阶段是在可编程GPU核上执行的。
大量的技术被用在这一阶段,其中最重要的就是texturing。

4. Merging(混合)
每个像素的信息被存储在color buffer中,color buffer是一个颜色数组。
Merging stage负责将shading stage产生的fragment color混合到buffer中现有的color里面。
Merging stage也负责解决可见性问题,一般GPU是通过Z-buffer algorithm来解决的,详情见下面一节。
Merging stage不完全是可编程的,但是可以高度配置,可以enable各种效果
5. Z-buffer(depth buffer) algorithm
Z-buffer和color buffer一样大小和形状,每个像素存储着从相机到当前primitive的z轴距离。
当一个图元被选入到某个像素时,需要计算这个图元在这个像素的z值并和同一个像素上的z-buffer内容比较,如果新的z值比z-buffer中的小,那么说明图元离相机更近,所以要用图元的z值和颜色去更新这个像素的z值和颜色;如果新的z值比z-buffer中的大,说明图元距离相机更远,那么color buffer和z-buffer就不需要更新。
6. 其他buffer
alpha通道与color buffer有关系,它存储每个像素的透明度。 在depth test之前可以先做alpha test,先用某些特定的test来比较fragment的alpha值和参考值,如果fragment没有通过测试,就不对它做进一步处理。alpha test是用来确保完全透明的fagment不会影响z-buffer
stencil buffer是用来记录rendered primitive的位置的离屏buffer,它通常包含8bit. Stencil buffer是一个可以生成特殊效果的强大工具。
7. double buffering
为了避免人眼看到正在被光栅化的图元,一般使用double buffering。在这个方法中,渲染发生在back buffer,当back buffer被渲染完成时,back buffer中的内容被置换到front buffer,也就是显示屏幕内容的buffer,这个交换发生在vertical retrace,即vblank(扫描点扫描完一帧后要从图像的右下角返回到图像的左上角,开始新的一帧扫描,即一帧最后一行到下一帧的第一行之间的时间)
Rasterizer Stage(读书笔记3 --- Real-Time rendering)的更多相关文章
- Spark调度管理(读书笔记)
Spark调度管理(读书笔记) 转载请注明出处:http://www.cnblogs.com/BYRans/ Spark调度管理 本文主要介绍在单个任务内Spark的调度管理,Spark调度相关概念如 ...
- 《Linux内核设计与实现》读书笔记(十七)- 设备与模块
本章主要讨论与linux的设备驱动和设备管理的相关的4个内核成分,设备类型,模块,内核对象,sysfs. 主要内容: 设备类型 内核模块 内核对象 sysfs 总结 1. 设备类型 linux中主要由 ...
- Understanding Scroll Views 深入理解 scroll view 读书笔记
Understanding Scroll Views 深入理解 scroll view 读书笔记 It may be hard to believe, but a UIScrollView is ...
- 6 Specialzed layers 特殊层 第一部分 读书笔记
6 Specialzed layers 特殊层 第一部分 读书笔记 Specialization is a feature of every complex organization. 专注是 ...
- 读书笔记汇总 - SQL必知必会(第4版)
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
- 读书笔记--SQL必知必会18--视图
读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...
- 《C#本质论》读书笔记(18)多线程处理
.NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...
- C#温故知新:《C#图解教程》读书笔记系列
一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...
- C#刨根究底:《你必须知道的.NET》读书笔记系列
一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...
随机推荐
- 关于python如何简单跳出多层循环
上述代码的逻辑是,在跳出子循环之前定义一个变量flag为Ture,第一层循环跳出之后,如果要跳出第二个循环,直接调用变量flag,可以直接跳出第二层循环.这里要注意的是缩进,不然会出错误. 如果是多层 ...
- 在树莓派上部署InfoPi
如果仅仅想试用InfoPi,请参照此文在Windows上试用.在Windows上部署比在树莓派上部署简单得多. 先说明一下,我用的系统是Raspbian(2014-06-20发布的). 用户pi,工作 ...
- JavaScript数据类型之隐式类型转换
JavaScript的数据类型分为七种,分别为null,undefined,boolean,string,number,object,symbol ( ECMAScript 2015新增).objec ...
- MVC视图请求流程视图
/* *视图请求流程 *当接受到home/index请求时 *先去找viewstart.cshtml视图,再去加载index.cshtml视图 ...
- Delphi_OD_代码_调试_Delphi反调试技术(以OD为例附核心原代码) (转)
1.程序窗口[chuang kou]句柄[ju bing]检测原理:用FindWindow函数[han shu]查找[cha zhao]具有相同窗口[chuang kou]类名和标题的窗口[chuan ...
- ios 写项目的时候遇到的问题及解决方案(1)
1.解决headerView不随cell一起滚动的问题 解决方案:myHeaderView为自己创建的view加在tableHeadView上, self.tableView.tableHeadVie ...
- 提供VR定制开发、AR定制开发(VR游戏定制、应用定制)
设置输出路径 添加烘培输出的贴图类型 添加“LightingMap”类型 设置烘培贴图大小和目标贴图位置为“自发光” 设置烘培材质,选择“输出到源” 点击“渲染”即可 24.标准材质贴图的烘培光影处理 ...
- CFDebug.template
{ "AWSTemplateFormatVersion" : "2010-09-09", "Description" : "Cre ...
- 十大Intellij IDEA快捷键(转)
1 智能提示 Intellij首当其冲的当然就是Intelligence智能!基本的代码提示用Ctrl+Space,还有更智能地按类型信息提示Ctrl+Shift+Space,但因为Intellij总 ...
- ORA-12519, ORA-00020异常产生原因及解决方案
近期在做项目的过程中,使用oracle时碰到了如下两个异常: ORA-12519, TNS:no appropriate service handler found: ORA-00020:maximu ...