百人计划图形1.3——纹理
纹理中储存着数据,类似于数组的形式
纹理可以用来储存高度、纹理通道、法线等各种信息
纹理的对象除了包含储存的信息外还包含纹理采样的一些设置

纹理的出现——划算、节约成本、工作量?
实际上是为了可以使用图像函数或者其他数据源来修正模型的表现从而模拟物体表面的一项技术

纹理如何用——纹理管线

纹理投影(纹理函数)——获取所需渲染的位置,将之从模型空间投影到纹理坐标空间中,转化成纹理坐标,俗称为UV坐标
常规情况下投影函数通常汇总模型建模流程“展UV”的阶段中使用,将投影的结果储存在顶点数据中,一般不会使用该函数而是直接使用储存的结果

纹理采样设置中常见且重要——Warp Mode

fillter Mode决定了当纹理由于变化而产生拉伸时,选择一种滤波模式来调整自身的表现,使采样更合理






纹理缩小时会出现几个纹理覆盖一个像素的情况,常见缩小过滤方法有最邻近和双线性差值

降低纹理频率常见方法mipmap——通过预处理纹理并且创建数据结构有助于实时工作时快速计算一组纹素对一个像素的效果的近似值

mipmap具有严重缺陷——过度模糊

用于解决过度模糊的方法——各项异性过滤
其指代的是一种思想或者是各种方法的总称

积分法为创建一个和纹理大小相同,但是储存颜色精度更高的数组


CPU渲染优化方向其一——降低DrawCall
纹理显示在屏幕上时需要CPU跟GPU一起协作完成,然后为了CPU和GPU可以并行工作,需要一个命令缓冲区,命令缓冲区有一个命令队列,CPU添加指令GPU读取指令,这使得CPU与GPU可以相互独立工作。DrawCall为缓冲区里的一种代码,CPU大量时间会用于提交DrawCall。

降低DrawCall常见方式有纹理图集、纹理数组以及无约束纹理,其目的在于降低频繁改变纹理所带来的消耗但实际应用上最常见的还是纹理图集(将大量的小图集合并为一个大图集)
GPU渲染优化思路从带宽入手,显存带宽指GPU读写专用内存时的速度,若游戏速度受限于显存带宽的haul,往往是实验纹理过大GPU没有办法快速处理。


