Rasterization and Shading

   光栅化,我们可以将几何图形转化成屏幕上的像素。Direct3D使用scanline的渲染来产生像素。 当顶点处理结束之后,所有的primitives将被转化到screen space,在屏幕空间一个单位就是像素。点,线,三角形通过一组光栅规则被转化成像素。光栅规则定义了一套统一的法则来产生像素。

   光栅得到的像素一般会携带深度值,一个RGBA diffuse 颜色,一个RGB specular 颜色,一个雾化系数和一组或者多组纹理坐标。这些值都会被传给流水线的下一个阶段像素的处理,然后注入到render target。

 

Shading 和 Filling

   Shading 指Direct3D 怎么样为像素计算颜色,Filling指怎样为primitive的内部产生像素。

   RS Shade mode 定义三种shading 的方法,包括Flat, Gouraud, Phong。 Flat shading 在每个Primitive的内部选择一种颜色,这个颜色就是这个primitive 的第一个顶点的颜色信息。Gouraud shading 采取了线性插值的方法为primitive的内部像素产生颜色。Phong shading 现在不被Direct3D支持,这里就不仔细谈了。

   RS Fill Mode 定义filling的方法, 它包括point, wireframe, solid。 Point filling只是填充primitive的顶点,wire frame 只取每条边的像素。 Soild fill mode 将填充primitive内部。

   Shading 和 Filling 不光只是插值diffuse color,direct3D可以对顶点所有的信息插值,包括顶点的透明度(alpha), specular color, depth, 雾化系数,纹理坐标。

   D3DCAPS9:: ShadeCaps 定义了设备shading 的能力,所有的设备都支持flat shading。 ShadeCaps的每个位都定义了顶点颜色组件的,如D3DPSHADECAPS_COLORGOURAUDRGB,D3DPSHADECAPS_SPECULARGOURAUDRGB 等等。

 

像素的产生

   利用扫描线,我们能够很自然的判断一个像素的中心是否在三角形primitive的内部,这样就很容易判断这个像素是否应该产生。但是,当一个像素被多个primitive所共享的时候,为了让每个像素只产生一次。这个时候,就引入一个left-filling 的法则。 left filling就是对扫描线的span的左端是取, 右端的像素舍去。

   处理线primitive, 一般有两种方法,需要取决于线段的倾斜度。

 

像素数据

   扫描线rendering 能够确定每个像素的x, y坐标,其他值一般都是通过插值来获取。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值