渲染流水线详解 |《GPU编程与CG语言》笔记(一)

最近几天看了《GPU编程与CG语言之阳春白雪下里巴人》这本书,书的内容和之前看的《Unity Shader入门精要》很相似,但是侧重点有所不同。因此,下面的三篇文章是在阅读《GPU》之后,结合之前一本书的内容,做一些更深入的理解或逻辑的理顺。


这一篇文章是对渲染流水线的知识做一下进一步理解。老生常谈地,渲染流水线分为应用阶段、几何阶段、光栅化阶段。

应用阶段

主要使用高级语言,在应用层面准备数据。本书中举例如碰撞检测、场景图建立、空间八叉树更新、视锥裁剪等。

我理解的是:我们在Unity的shader文件中声明了变量(例如vertex、normal等),应用阶段是在这些变量被传到shader之前做的事情。

几何阶段

包括顶点坐标变换、光照、裁剪、投影、屏幕映射等操作。

顶点坐标变换

顶点坐标变换就是《Unity》一书第四章中的几个坐标系之间的转换。其余的几个步骤其实包含在顶点坐标变换的过程中。

  • 模型空间
    需要注意的是从模型空间转变到世界空间下,不只顶点坐标要变换,法线也要跟着变化,法线的变换矩阵是顶点变换矩阵的逆转置矩阵。推导过程详见《Unity》一书第四章4.7节。

  • 世界空间

  • 相机空间
    相机空间到裁剪空间的映射过程通常称为投影,可分为透视投影和正交投影。

  • 投影/裁剪空间
    在裁剪空间做裁剪,把视锥之外的顶点剔除。
    这一个步骤将模型作为一个整体,对顶点进行剔除。如果一个模型对所有顶点都在视锥里,则保留;如果顶点全不在视锥里,则剔除;如果一部分在一部分不在则依具体算法计算。这一步不涉及到对具体三角形片元的裁剪。

  • NDC空间

  • 屏幕空间

图元装配

上述变换都是对顶点的操作,在这一步骤中,我们根据顶点坐标和索引构建出三角形网格。

  • 三角形剔除
    不在视锥内的三角形剔除。

  • 三角形裁剪
    对有一部分在视锥内的三角形裁剪,先裁剪成四边形,再拆成两个三角形。

  • 背面剔除
    使用右手定则确定法线方向,法线方向和视线方向的点积为正,说明该三角形正面朝向相机,否则该三角形背对相机,会被剔除。但是可以设置是否进行背面剔除,如《Unity》一书使用透明度检测实现透明效果时,就关闭了背面剔除。

这一阶段结束后,我们得到了一些三角形面片用于下一步的光栅化。

光栅化阶段

像素位置计算

将顶点的屏幕坐标转换为像素位置,并使用一定的算法计算出每一条线(三角形设置)和面(三角形遍历)占用的像素位置。

像素颜色计算

  1. 深度/模版检测
  2. 纹理
  3. 混合(Blending)

深度缓冲(Z-buffer)

Z-buffer中储存的z值并不是欧氏距离,而是一个相对的值。我们只储存了顶点的z值,内部像素点的z值需要通过插值获得,而得到的z值并不能反应真实的空间点的深度关系,有可能获得错误的结果。

如下图所示,A、E是顶点,B、C、D为真实的深度,而B'、C'、D'为插值计算出来的深度。


Tips:
坐标变换时旋转、缩放、平移的顺序:
--缩放变换不改变坐标轴的走向,也不改变原点的位置,所以两个坐标系仍然重合。
--旋转变换改变坐标轴的走向,但不改变原点的位置,所以两个坐标系坐标轴不再处于相同走向。
--平移变换不改变坐标轴走向,但改变原点位置,两个坐标系原点不再重合。
因此,变换顺序只能是 缩放 -> 旋转 -> 平移 。


图片来自 东隆咚
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,183评论 6 516
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,850评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,766评论 0 361
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,854评论 1 299
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,871评论 6 398
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,457评论 1 311
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,999评论 3 422
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,914评论 0 277
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,465评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,543评论 3 342
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,675评论 1 353
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,354评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,029评论 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,514评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,616评论 1 274
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,091评论 3 378
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,685评论 2 360