3D数学 学习笔记(10) 背面剔除(Clipping)、裁切(Backface Culling)、光栅化(Rasterzation)

3D数学 学习笔记(10) 背面剔除(Clipping)、裁切(Backface Culling)、光栅化(Rasterzation)

参考书籍:
《3D数学基础:图形与游戏开发》
《Unity Shader 入门精要》


背面剔除(Backface Culling)

移除没有面对这镜头的三角形,只考虑三角形与摄像机的相对位置而不依赖与摄像机朝向。依靠三角形顶点顺序直接判断法向量方向(左手法则)。

顺时针法向量朝外,逆时针朝内,剔除。

在这里插入图片描述

下图圈中法向量方向虽然和镜头方向大致相同(小于180度),但实际上是看得到的。

在这里插入图片描述


裁切(Clipping)

把不在视锥体内或不完全在的三角形清除或剪切。输出裁切后的顶点。每条边分四种情况:

在这里插入图片描述

多边形裁剪:

在这里插入图片描述


光栅化(Rasterzation)

在裁切后,顶点会投影到屏幕坐标。概念性的有以下5个执行步骤:

  1. 插值(Interpolate),大部分计算如:顶点级别的纹理坐标、颜色、法线都要在着色前计算好。
  2. 深度测试(Depth test),剔除掉被遮住的像素。这里计算也可能是在着色后计算。
  3. 着色(Shader):为像素计算颜色。一般先光照后雾化,输出的颜色包含透明值,即RGBA。
  4. 透明测试(Alpha test),丢弃过度透明的物体。有透明的物体不需要写入深度缓冲。
  5. 写入(Write),通过深度和透明测试的像素,会更新帧缓存和深度缓冲。深度缓存用新值直接替换旧值。帧缓存没有开启混合,则可直接替换,否则需要用alpha值混合。
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值