图形学基础——纹理

什么是纹理

宏观的角度上来说就是一张2D图片,每个像素上都有 RGB 值

为什么要出现纹理

降低建模工作量,牺牲几何细节
降低存储空间
提高读取速度

纹理采样设置——Wrap Mode

Repeat :重复
Mirror :重复左右镜像,上下反转
Clamp  :超出的部分为Texture的边
Border :使用定值进行填充

纹理采样设置——Filter Model

过滤设置,当纹理通过变化产生拉伸的时候,要使用哪种滤波来进行纹理的表现

在这里插入图片描述

	最近邻 —— 向最近的像素进行纹理取样表现,这个形式带来的问题就是,因为是从邻近像素采集的信息,所以很容易出现块状像素,也就让纹理
变得像素化,处理效果最差,但是因为是从邻近纹理取样的,所以所涉及的计算要少很多,在性能上表现不错

图片比显示区域小,1对多,马赛克
在这里插入图片描述
图片比显示区域大:会丢弃掉一部分,变的模糊
在这里插入图片描述

	双线性插值 —— 对于每一个像素点都寻找邻近的四个像素点,在二维空间进行的线性插值得到的最终混合值

就近四个点采样
在这里插入图片描述

	立方卷积插值 —— 相比较双线性插值,在这个计算方法中不仅采取周围一圈的像素点,还考虑到了它们变化率的影响,画面表现效果比前两种都
要好,也正是牺牲了性能提高了表现效果
	从 128*128就近取4个点的像素,然后从64*64在就近取4个点两部分像素叠加除以2,丢弃的像素更少、更平滑

MipMap

Mipmap:128*128  ==> 64*64  32*32  16*16  8*8  4*4  2*2  1*1
预处理纹理,创建数据结构。实时计算中快速计算一组纹理对一个像素效果的近似值,将 2x2 的4个相邻的纹理平均值作为下一级的新的纹理值,所以新一级的纹理是上一级的1/4大。直到 1x1 ,在存储空间多了1/3大 。

在这里插入图片描述
如何选择正确的 level

使用像素 XX (什么格?)格所形成的一个四边形的最长边来近似这个像素覆盖的范围,在 GPU 中并不是一个像素一个像素的去渲染执行,而是分成 2x2 一组并行进行处理,这样做的原因是用来计算 ddx  ddy,以及用来计算法线

在这里插入图片描述
缺陷:过度模糊

假设这个 Texture 在投射屏幕上是各向同性的,如果一个像素单元格在 U 上覆盖了大量的纹理,但是在 V 上覆盖了少量的纹理,在 MipMap 处理中缩小使用的是上一张纹理相邻四个纹理的平均值,也就是说在 MipMap 情况下,那些被平均过的纹理就会被限制到这些正方形中,于是就产生了各向异性过滤处理部分问题

纹理贴图的优化方式及原理

CPU 渲染优化常见方式 —— 纹理图集/数组
在这里插入图片描述
立方体贴图 Cubemap
在这里插入图片描述
凹凸贴图 Bump Mapping
在这里插入图片描述
位移贴图 Displacement Mappping
在这里插入图片描述

作业——Fliter Mode有哪几种

point:就近采样
bilinear:就近四个点采样
trilinear:从 128*128就近取4个点的像素,然后从64*64在就近取4个点两部分像素叠加除以2,丢弃的像素更少、更平滑

作业——纹理贴图的优化方式及原理

CPU:
GPU渲染速度快于CPU提交命令速度
降低DrawCall
纹理图集、纹理数组、约束纹理

GPU:
纹理过大,限于显卡带宽
解决方法是压缩纹理
纹理压缩,减小纹理占用的纹理内存
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值