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)的更多相关文章

  1. Spark调度管理(读书笔记)

    Spark调度管理(读书笔记) 转载请注明出处:http://www.cnblogs.com/BYRans/ Spark调度管理 本文主要介绍在单个任务内Spark的调度管理,Spark调度相关概念如 ...

  2. 《Linux内核设计与实现》读书笔记(十七)- 设备与模块

    本章主要讨论与linux的设备驱动和设备管理的相关的4个内核成分,设备类型,模块,内核对象,sysfs. 主要内容: 设备类型 内核模块 内核对象 sysfs 总结 1. 设备类型 linux中主要由 ...

  3. Understanding Scroll Views 深入理解 scroll view 读书笔记

    Understanding Scroll Views 深入理解 scroll view  读书笔记   It may be hard to believe, but a UIScrollView is ...

  4. 6 Specialzed layers 特殊层 第一部分 读书笔记

    6 Specialzed layers 特殊层  第一部分  读书笔记   Specialization is a feature of every complex organization. 专注是 ...

  5. 读书笔记汇总 - SQL必知必会(第4版)

    本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...

  6. 读书笔记--SQL必知必会18--视图

    读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...

  7. 《C#本质论》读书笔记(18)多线程处理

    .NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...

  8. C#温故知新:《C#图解教程》读书笔记系列

    一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...

  9. C#刨根究底:《你必须知道的.NET》读书笔记系列

    一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...

随机推荐

  1. Android-Lopper类的介绍(Handler背后的类)

    转载来自:http://www.open-open.com/lib/view/open1325668588515.html Android中的Looper类,是用来封装消息循环和消息队列的一个类,用于 ...

  2. ASP.NET(转自wiki)

    ASP.NET是由微软在.NET Framework框架中所提供,开发Web应用程序的类库,封装在System.Web.dll文件中,显露出System.Web名字空间,并提供ASP.NET网页处理. ...

  3. 树莓派(Raspberry Pi)日期时间不准的修正方法

    在树莓派上,打date命令可以看到系统的日期时间: 后面的CST表示中国标准时间 小知识: 树莓派没有电池,断电后无法保存时间. 树莓派默认安装了NTP(Network Time Protocol)服 ...

  4. BarTender是怎么做出雪花状文字

    一些小伙伴在做标签时,发现有的人做的标签上的文字颜色不是纯色的,问我是怎么做的.这种雪花状文字要设置出来其实很简单,只要用到字体颜色填充工具就可以了.下面,小编就来给大家简单介绍一下BarTender ...

  5. JavaScript使用XMLHttpRequest 發送GET/Post 請求

    <!DOCTYPE HTML> <html> <head> <title>Demo</title> <script type=&quo ...

  6. laravel/lumen 单元测试

    Testing Introduction Application Testing Interacting With Your Application Testing JSON APIs Session ...

  7. 一种扩大View点击范围的方法

    Rect rect = new Rect();mBt0.getHitRect(rect); rect.bottom += 400; TouchDelegate touchDelegate = new ...

  8. vscode配置

    默认的挺难看的 颜色主题换成 Monokai Dimmed 用户设置 // 将设置放入此文件中以覆盖默认设置 { "editor.fontFamily": "Monaco ...

  9. Keep-Alive 总结

    一.简介 Keep-Alive是http请求头信息中的一个配置参数,开启之后俗称保持HTTP长连接,HTTP 1.0和HTTP 1.1都支持,HTTP1.0中该属性默认是关闭的,可在头信息中配置开启( ...

  10. mssql整理

    select charindex( 'a ', 'bcad ') 1 删除女性数据2.SELECT * FROM Group2 where PATINDEX('%[吖-做]%',[Nick])=0 找 ...