Shaderlab编程入门二

齐次裁剪空间

裁剪空间:完全位于这个空间内的图元将会被保留,完全位于这个空间外的图元将会被剔除,而介于空间边缘的图元将会被裁剪。

视锥体:是一块区域,这块区域决定了摄像机可以看到的空间,视锥体有6个面组成,每个面都被称为裁剪平面。有两种类型:正交和透视。

透视效果:

正交效果

可以看出透视效果,摄像机视锥体呈现锥形,同时具有远近层次,模拟的人眼观看的效果;而在正交效果中,视锥体呈现矩形,图形的网格大小都一样。所以一般在3D环境中采用透视,而在2D环境中采用正交。

在视锥体中,有2个裁剪面比较特殊,被称为近裁剪面与远裁剪面。

在unity中,通过Camera组件的Field Of View属性来改变视锥体的FOV,Near和Far属性可以控制视锥体的近裁剪面和远裁剪面的远近。

于是就有了:近裁剪面高度 = 2*近裁剪面距离*tan(FOV/2);远裁剪面高度= 2* 远裁剪面距离*tan(FOV/2);

通过等腰三角形与相似三角形,假设当前的横纵比为Aspect,可以得到Aspect = 近裁剪面宽度/近裁剪面高度 = 远裁剪面宽度/远裁剪面高度

设近裁剪面为near,远裁剪面为far,可以得到如下矩阵:

投影的目的,主要是将观察空间转换到齐次裁剪空间:

投影矩阵本质上就是对x,y和z轴的分量进行了不同程度的缩放,方便裁剪。可以看出原w分量不再是1,而是-z,一个顶点在视锥体内,必须满足-w≤x≤w,-w≤y≤w,-w≤z≤w,任何不满足条件的图元都需要被剔除或者裁剪。

视锥体经过投影矩阵变换后如图所示,可以看出距离摄像机越远,Z值越大。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值