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/)的最新技术心 ...
随机推荐
- Lua 调用 Opencv 的方法
Lua 调用 Opencv 的方法 最近想用 Lua 调用 Opencv 进行相关像素级操作,如:bitwise_and 或者 bitwise_or,从而完成图像 IoU 的计算. 那么,怎么用 Lu ...
- C++语法
http://stackoverflow.com/questions/4269034/what-is-the-meaning-of-prepended-double-colon
- XSD(XML Schema Definition)用法实例介绍以及C#使用xsd文件验证XML格式
XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD),作用是定义 XML 文档的合法构建模块,类似 DTD,但更加强大. 作用有: ①定义 ...
- python之错误和异常
错误 分为语法错误和逻辑错误,如下: 语法错误指示软件的结构上有错误,导致不能被解释器解释或编译器编译. 逻辑错误可能是由于不完整或是不合法的输入所致,或者是无法生成.计算.或是输出结果需要的过程无法 ...
- koa知识点
1. Koa 不支持 直接调用底层 res 进行响应处理.请避免使用以下 node 属性: res.statusCode res.writeHead() res.write() res.end() 2 ...
- AlwaysOn添加高可用性自定义登陆用户的方法
1.在主服务器添加自定义登陆用户,比如TestUser 2.在主服务器执行如下SQL,在master数据库创建存储过程sp_hexadecimal,sp_help_revlogin USE maste ...
- OpenStack部署工具总结
目前感觉比较简单直观的部署工具有RDO.devstack.Fuel等: 1. RDO https://openstack.redhat.com/Quickstart REDHAT出品,支持Redhat ...
- 升级Dell的R810固件版本
1.到下面链接去下载win32版本的EXE固件 http://www.dell.com/support/home/cn/zh/cndhs1/Drivers/DriversDetails?driverI ...
- ASP.NET在IIS7.5(IIS7)配置伪静态
http://jingyan.baidu.com/article/67508eb4ff92c69cca1ce49a.html 我相信不少站长都遇到个头疼的问题..NET如何在IIS7或者IIS7.5下 ...
- R语言—图像初阶
dev.new() 创建一个新图像之前打开一个新的窗口 win.graph() 同上 pch() 指定绘制点时使用的符号 cex() 指定符号的大小,是一个数值,表示绘图符号相当于默认大小的缩放倍数 ...