Games101 着色笔记(二):插值,纹理的其他作用

三角形内插值:
目的:在三角形内部获得平滑过渡
插值的内容:纹理、颜色、法线(Phong)等等。
怎么做插值:重心坐标

重心坐标的定义:
在这里插入图片描述
满足三个顶点的系数之和为1(作用是限制点在三角形所在的平面内),且均非负,三角形内任意一点的属性可表示为顶点属性的线性组合。
顶点自身的重心坐标:
在这里插入图片描述
三角形内任意一点的重心坐标:
可通过面积比求出来,各顶点系数等于”对面“三角形面积/总面积
在这里插入图片描述
在这里插入图片描述

三角形重心的坐标:
系数各为1/3,将三角形均等分为三份
在这里插入图片描述
利用重心坐标做插值的一个问题:
在投影变换下,不能够保证重心坐标不变,即当三角形在三维空间中投影后,其重心坐标可能会改变,方法是在三维空间中做插值,结果投影到二维平面上去。

纹理放大问题–>双向插值:
原因:纹理范围过小,导致纹理被拉大,如何定位映射到纹理上的坐标?
解决办法:
(1)双向线性插值
在这里插入图片描述
在这里插入图片描述
(2)更精确的插值:Bibubic
双向线性插值是取周围邻近的四个,Bicubic是取周围邻近的十六个

纹理缩小问题–>双向插值:
原因:近处纹理覆盖范围小,远处纹理覆盖范围大,导致走样(一个像素覆盖大片纹理)
在这里插入图片描述
从信号角度考虑解决方案:在小范围内信号频率高,按照之前抗锯齿的方案,在小片像素范围内增加采样点即可。
另一种方案:避免采样!转而获得纹理范围内的平均值,映射到小片像素范围。
如何获取纹理范围内的平均值?–> 范围查询问题(Range Query),不仅是平均值。

利用MipMap做范围查询:
MipMap–快,近似正方形范围查询
在这里插入图片描述
”图像金字塔“:
在这里插入图片描述
MipMap引入的空间复杂度:4/3,较原本的图存储多1/3。

近似过程:
(1)用正方形近似像素纹理区域,L为正方形区域的边长
在这里插入图片描述

(2)用MipMap查询正方形区域的平均值
如上图,映射的纹理面积是2*2,则在图像金字塔的第二层其覆盖面积变为1,可获得对应的平均值。
总之就是在D = log2L层上会对应到一个像素,并因此获得平均值。

(3)解决不连续的问题:
因为层数都是整数,因此层数计算都是不连续的,导致如下现象:
在这里插入图片描述
解决方法还是插值-三线性插值。
在这里插入图片描述
(4)MipMap的缺陷:
过分模糊:
在这里插入图片描述
原因:MipMap只在正方形区域内查询,而有一些图无法用规则正方形分割:
在这里插入图片描述
部分解决:各向异性过滤(Anisotropic Filtering)
在这里插入图片描述
各向异性过滤适用于长条形区域,对于不规则区域(如上图斜着的区域)也无法解决。
EWA过滤能较好的解决这一问题,代价是性能。

纹理的另外作用:

(1)模拟环境光
纹理可以模拟环境光照(假设环境光线来自无限远处,只记录方向信息),用来执行渲染。
用环境光表示纹理的实例,把环境光记录在球面上:
在这里插入图片描述
将环境光记录在球面上会带来扭曲问题(对信息的不均匀描述),是由于球本身的形状导致的。
在这里插入图片描述
解决方法:使用包围盒,将信息存储到立方体的表面上,得到六张图。
在这里插入图片描述

(2)凹凸贴图,减少着色的计算量
原因是纹理可以定义任意不同点的属性,而不单单是在Phong模型中定义kd值。使用凹凸贴图则是定义了不同点的高度,进而改变了法线,进而影响着色,而不会改变原本的几何信息。
在这里插入图片描述

(2)位移贴图
与凹凸贴图一样,都会定义不同点的高度,但位移贴图还会真正改变几何信息,因此更加真实,凹凸贴图在边缘和阴影处会“露馅”。位移贴图的“代价”是要求几何体的三角形要比较细密,顶点间隔要小于纹理频率。
在这里插入图片描述

(3)体积渲染
多用于医学,如人体成像

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值