【翻(xue)译(xi)】3D Game Programming With DirectX11 - 5.10

5.10 光栅化阶段

光栅化阶段的主要工作是根据已投影的3D三角形中计算像素颜色。

翻译存疑:

rasterization stage: 光栅化阶段

5.10.1 观察变换
在裁剪之后,硬件可以做投影除法来转换到NDC空间中了。在NDC控件之后,组成2D图像的xy坐标就被转换到后台缓存中,被称作视口。在这个变换中,xy坐标的单位是像素。通常视口转换不会改变z坐标。因为它被用作深度缓存,它可以被D3D11_VIEWPORT结构体的MinDepth和MaxDepth值改变。这两个值都在0到1之间。

5.10.2 背面消隐
一个三角形有两个面。为了分辨两个面我们使用如下约定。如果三角形的顶点是按照v0, v1, v2的顺序定义的,那么我们如下计算面的法线n:

这个法线向量指向的方向叫做正面,另一面叫做背面。
我们说一个三角形是朝向正面的,如果观察者看到这个三角形的正面;是朝向反面的,如果观察者看到的是这个三角形的背面。在我们的透视图(图略)中,左边的那个三角形是正面的,右边那个是反面的。进一步的,左边那个三角的三个顶点的定义的顺序是顺时针方向的,右边那个是逆时针方向的。这不是巧合。顺时针(相对于观察者所观测到的那个方向)定义的三角形,都是朝向正面的,逆时针定义的三角形都是朝向背面的。
3D世界里的大多数物体都是封闭的固体。假设我们用这样的方法来为每个闭合的固体构造三角形:让他的发现总是向外的。那么,摄像机将看不见那些向后的那些三角形,因为朝向前边的三角形挡住了朝向后边的三角形。图5.31和图5.32分别从2D和3D的角度阐明了这一点。因为朝向正面的三角形挡住了朝向背面的三角形,我们没有理由去画它。背面消隐就是从管线中剔除朝向背面的三角形。这大约会让需要画的三角形数量减少一半。
默认的,Direct3D把顺时针方向定义的三角形当做正面的,逆时针方向定义的作为反面的。这一点可以通过定义Direct3D状态来翻转。

5.10.3 顶点插值
会议一下我们使用三角形的顶点来定义一个三角形。除了位置以外,我们可以给顶点增加诸如颜色、法线方向、贴图坐标。在进行了视角变换之后,这些属性需要被重新插值来覆盖这个三角形。除了顶点的属性之外,顶点深度值也需要被重新插值,这样每个像素才能有一个自己的深度值以供深度缓存程序使用。顶点属性在屏幕空间中,通过线性的方式来插值。这就需要传说中的透视修正插值了。很重要的一点是,插值可以让我们利用顶点的值来计算三角形内部的像素。
我们不需要担心透视修正插值的数学细节,硬件会帮我们做。有兴趣的同学自己去查【Eberly01】这本书。图5.34显示了它的大致要做的东西。

翻译存疑:

Vertex attribute interpolation: 顶点插值
perspective correct interpolation:透视修正插值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值