Power of 2 (贴图宽高要是2的幂的长度):
根据不同平台,选择合理的纹理压缩格式,iOS选择RGBA ASTC 4* 4 block(从iOS9开始支持,显示效果更好,不需要把图片设置成方形),Android选择RGBA ETC 2 8bits
Android平台:如果有一个贴图大小为200 * 512,会被变成256 * 512。
如果贴图大小为257 * 512,会被变成512 * 512。宽度只是比256多了1像素,也会变成512。
iOS平台:如果有一个贴图大小为200 * 512,会被变成512 * 512。
如果贴图大小为257 * 512,也会被变成512 * 512,iOS平台,要求贴图的宽高是一致的,也就是贴图需要是正方形,之前的PVRTC压缩纹理格式要求正方形,现在可以采用ASTC压缩格式,就不需要一定是正方形了。
anisoLevel
纹理的各向异性过滤等级
指相机视野与场景的角度很小时,是否增强模型的纹理精度,分为1-9级,1级没有过滤,9级过滤等级最大,等级越大,纹理精度越大,也就越清晰。
WrapMode
贴图间的拼接模式,也称为纹理寻址模式
Repeat 纹理本身重复平铺,创建重复图案。如果纹理坐标超过1或小于0,那么整数部分将会被舍弃,直接使用小数部分进行采样。这样的结果是纹理将会不断重复。
Clamp 纹理拉伸,也就是单个图片,不重复平铺。纹理坐标被限制在0-1之间,当UV大于1或小于0时,边界像素将被使用。
Mirror 纹理镜像,创建重复图案,对其应用的所有行和列都是前一行或前一列的镜像。
BorderColor 边框颜色,对纹理坐标超过1或小于0,用设定颜色填充。
FilterMode
纹理的采样方式
当一个比较小的贴图,贴到一个比较大的3D模型上,就会存在一个问题,3D模型上的点,不会正好对应贴图上的像素,3D模型上的点可能就会落在贴图上像素点与像素点之间。
纹理对应3D模型上的点,距离最近的一个纹理像素点,来插值采样,如果纹理大小与屏幕原始图像大小相似,这是一种快速有效的处理纹理的方法。如果不是,则必须放大或缩小纹理,导致看起来就会一块块的模糊的,形似马赛克的图像。
纹理对应3D模型上的点,周围的四个纹理像素点,来插值采样,看起来就会过渡的更加自然。
如果选择Trilinear模式,还会在Mip map(多级渐远纹理)之间进行混合,如果纹理没有采用Mip map技术,那么Trilinear得到结果跟Bilinear是一样的。
Point:点过滤 - 纹理像素变得块状紧密,
Bilinear:双线性插值
Trilinear:三线插值 - 用于Mip map,对不同的Mip层进行插值,使其过渡的更自然
UV map(UV贴图,纹理映射)
将2D图像上的每一点精确对应到3D模型物体表面,在点与点之间的间隙位置进行图像光滑插值处理,这就是UV mapping。UV坐标是以左下角为(0,0),右上角为(1,1)
Mip maps(多级渐远纹理)
Mip maps是将原纹理用滤波处理得到8张不断降采样的纹理,每一层都是对上一层纹理降采样的结果,用于优化实时3D引擎的性能。
最大分辨率的纹理放在第一位,mipmap中每一级比前一级别纹理的高度和宽度均减少2的幂。
远离相机的物体使用较小的纹理,靠近相机使用较大的纹理。
使用Mip maps需要使用33%以上的内存,但不使用它会导致巨大的性能损失。
缺点:运行时占用更多内存,且增加包的容量。因为Mip maps会根据摄像机远近不同而生成对应的八个贴图,运行会加载到内存中。
优点:优化显存带宽,用来减少渲染。因为可以根据距离摄像机远近,选择适合的贴图来渲染。
一般不需要距离摄像机靠近清晰,否则模糊的这种效果,取消勾选Generate Mip Maps选项。
勾选Mip maps,对处理锯齿和闪烁的很有用。
Normal map
为了计算光照,我们需要使用网格的法线,每一个法线都是垂直于切线平面指向外面的向量。法线贴图是一个RGB贴图,其中每个像素表示相对于未修改的法线向量,表面应该面向的方向的差异。 由于矢量存储在RGB值中,这些纹理往往具有蓝紫色调。
法线纹理存储的是表面的法线方向,用法线经过映射后得到的像素值表示。由于法线方向的分量范围在[-1, 1],而像素的分量范围为[0, 1],因此我们需要做一个映射,通常的映射就是:
pixel = (normal + 1)/ 2
这就要求我们在Shader中对法线纹理进行纹理采样后,还需要对结果进行一次反映射的过程,已得到原先的法线方向。反映射的过程就是使用上面函数的逆函数:
normal = pixel * 2 - 1
在实际开发中,我们往往采用的是切线空间的法线纹理。对于每一个顶点,都有一个属于自己的切线空间,这个切线空间的原点就是该顶点本身,而z轴是顶点的法线方向,x轴是顶点的切线方向,y轴可由法线和切线的叉积得到,也被称为副切线或副法线。
切线空间的法线纹理优点:
法线纹理总是显示浅蓝色的原因:
法线纹理存储了每个点在各自的切线空间中的法线方向。如果一个点的法线方向不变,那么在它的切线空间中,z轴就是法线方向,即为(0,0,1),经过映射后存储在纹理中就对应了RGB(0.5, 0.5, 1)浅蓝色。
Normal mapping
是一个游戏编程技巧,在为低面数网格模型计算光照时,使用高面数网格模型的法线贴图,从而使低面数网格模型看起来包含更多细节。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删