《3D游戏与计算机图形学中的数学方法》学习笔记 第一章

第一章 渲染管线

前几章都是比较基础的内容,未涉及太多数学部分(大多为一些向量的基础性质证明),前几章内容看之前的《计算机图形学原理及实践》的笔记即可。这里只做少量的内容记录。

1.1 图形处理器

CPU 与 GPU 的交互:
在这里插入图片描述

1.2 顶点变换

在这里插入图片描述

1.3 光栅化与段操作

注意,本书将 片段 简称为 段

从逻辑上讲,我们会先对 片段 进行着色,然后再进行 一系列判断,这一系列判断称为段操作,如 深度测试、模板测试。但显然,如果我们把这些片段放在 着色之前,那么会大大减少运算量,所以实际上大多 GPU 会尽量多地在执行片段着色前进行这些判断。

光栅化:
在这里插入图片描述

段操作:
在这里插入图片描述

注意图上线条的虚实,在段操作中,只有 像素包含测试是不可忽略的操作。

像素包含测试:像素包含测试仅判断某个段数据位于显示器当前的视见区内。当其它窗口覆盖了视见区的一部分时,像素包含测试会失败,位于被覆盖区的段数据将不会被绘制。

裁剪测试:应用程序可以在视见区内定义一个矩形,该矩形被称为裁剪矩形,通过裁剪矩形来现在裁剪区域。所有裁剪矩形以外的段数据都会被忽略。

Alpha测试:在计算段数据颜色时,应用程序可以同时计算表示该段数据的 透明度 即 Alpha值。Alpha测试将段数据最终的 Alpha值 与 应用程序预先设定的常数相比,这两个数值之间的关系(小于、大于 或 等于)(该关系我们可以由 应用程序预设),可以作为是否通过 Alpha测试的依据。如果 该段数据的Alpha值 不满足这个关系,则该段数据会被忽略。

模板测试:模板测试首先从模板缓冲区段数据对应的位置读出一个数值(模板缓冲中存储的东西可由程序控制),将该数值与应用程序预先设定的数值进行比较。只有这两个数值的比较结果满足某一关系时(该关系可以由应用程序预设),才可以通过模板测试,否则该段数据将被忽略。

深度测试:深度测试将段数据中的最终深度值与深度缓冲区中的当前深度值进行比较。如果段数据的深度值和深度缓冲区的深度值不满足应用程序预设的关系,则段数据会被忽略。一般情况下,该关系为 当前片段数据的深度值 小于或等于 深度缓冲上对应的深度值时 段数据通过深度测试(即 同一个像素位置上 更近的物体会遮挡掉远处的物体)。 通过深度测试后,深度缓冲区中的数值会更新为该段数据的深度值,这样便于后续几何元素渲染的隐藏面剔除操作的执行。

混合:经过上面的这些测试后,段数据的最终颜色会被混合到图像缓冲区。段数据的 Alpha值 和 保存在图像缓冲区中的 Alpha值 也可以用来决定视见区中显示的最终颜色。最简单的混合操作就是用段数据的最终颜色替换图像缓冲区的颜色值(src:1 dst:0)。混合操作也可用来产生透明一类的特殊视觉效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值