Shader的纹理

一直在看《Unity shader入门精要》,纹理这章的划线重点部分笔记,关于纹理采样的内容。

  • 纹理是使用一张图片来控制模型的外观。纹理映射技术,把一张图“黏”在模型表面,逐纹素地控制模型的颜色。
  • 在OpenGL中纹理空间的原点位在左下角,在DirectX中,原点位于左上角。Unity做了在DirectX平台上翻转屏幕图像纹理
  • 第一个属性是纹理类型,选择合适的类型,让Unity知道我们的意图
  • texture Shape可以选择2d或者cube,cube是高级纹理类型
  • Alpha Source 可以选择Alpha from Grayscale,透明通道的值将会由每个像素的灰度值生成
  • Wrop Mode.决定当纹理坐标超过[0,1]范围后将会如何被平铺。
    Repeat,整数部分被舍弃,用小数部分进行采样,纹理不断重复
    Clamp,纹理坐标大于1,截取到1。小于0,截取到0.
  • Filter Model有3种模式:Point,Bilinear以及Trilinear。图片滤波效果依次提升,消耗性能依次增大。
    ​* 纹理滤波会影响放大或者缩小纹理时得到的图片质量。

  • 抗锯齿问题,是用多级渐远纹理(mipmapping)。原理是提前用滤波处理来得到很多更小的图像,形成一个图像金字塔,每一层都是对上一层图像采样的结果。在实时运行时候,就可以快速得到结果像素。

  • 当物体远离摄像机时,可以直接使用较小的纹理。缺点是需要使用一点空间存储这些多级渐远纹理。多占用33%内存空间
    用空间换取时间的方法
  • 在Advanced中,在勾选Generate Mip Maps,即可开启多级渐远纹理技术。

  • Point模式使用近邻滤波,在放大或者缩小时,它的采样像素数目通常只有一个,有像素风格的效果

  • Bilinear 滤波使用线性滤波,每个像素点,找到4个邻近像素,进行线性差值混合得到最终的像素,图像看起来被模糊了。
  • Trilinear 在Bilinear的基础上做了和多级渐远纹理之间的混合。

  • Non Power of Two,非2的幂大小纹理,这些纹理往往会占用更多的内存空间,GPU的读取纹理的速度也会下降。iOS平台会把图缩成最近的2的幂次大小

文章目录
|