96编辑器旗下产品
找图
终身
ID:0
到期时间:永久
退出登录
您的位置:首页 > 百科管理 > 详情

矢量图 纹理-图形学自问自答4――图片和纹理

原创:找图网 2023-04-28 15:56:31
  • 求这个纹理的矢量图 跪求

  • 兔宝宝在各地都有专卖店的,你可以到当地专卖店看下,主要是看自己心仪的。

  • 为什么用fireworks所画矢量图形放大后会出现马赛克现象

  • fireworks模糊了矢量图与位图之间的差别,fireworks对象的路径是可编辑的矢量路径,但他仍然有较宽的纹理,可以在其中添加颜色图案浮雕、光晕等效果,扩大任意对象到一定程度都可以发现它的像素本质,而像素在重画时,却又可以当成矢量来编辑。虽然fireworks文档是基于矢量路径的,但它的外表仍然是由像素点组成的,因此在放大带有像素效果的矢量图时,虽然矢量图象本身的形状变化不大,但位图效果会有部分损失。

  • 图形学自问自答4――图片和纹理

  • 图片格式,如 jpg/png 等

    纹理格式,如 ETC1/ETC2/PVRTC/ASTC等

    电脑硬盘上的图片文件用来保存图形或图像的信息,包括大小、颜色等。图片的格式很多,但总体上可以分为

    点阵图

    和矢量图两种。

    常见的位图格式:

    考虑无压缩的 bmp 格式位图,文件在硬盘上的大小和以下几个因素有关

    图片文件被加载到内存后,被转换为显卡能够识别的

    纹理

    提交到显存中,供 GPU 进行采样,纹理采样是根据 uv 坐标获得对应纹理中

    纹素

    颜色值的过程。

    不同的显卡和图形API对纹理格式的支持不一样,RGBA32被显卡和图形API完全支持,DirectX特有的DXTx只有微软的部分设备支持,Android设备广泛支持ETC系列,iOS则支持 PVRTC 系列。

    CPU将图片从硬盘加载到内存中,进行解码得到 RGBA32 格式位图,然后在 CPU 端进行编码,得到GPU支持的纹理格式,提交到显存供 GPU 采样访问。

    这个过程中需要进行解码、重新编码,非常消耗 CPU,为了减少 CPU 的消耗,因此可以把图片预先转换成某种纹理格式放到硬盘上,CPU 加载后不需要解码和重新编码,直接提交给 GPU。大大节省了纹理从加载到使用的性能。

    在Unity中,任何图片文件格式都存在一个导入过程,导入后的文件格式都是Texture2D,在Texture2D的导入设置选项中需要针对不同平台设置纹理压缩格式,在构建时,会直接将转换后的纹理格式构建到安装包或 assetbundle 中。

    使用纹理压缩格式的好处

    GPU 通常并行处理若干数据,无法预测纹理中纹素被访问的先后顺序,因此纹理格式必须支持GPU的

    随机访问

    :

    几乎所有的纹理压缩算法都

    以块为单位

    压缩和存储纹素,可以理解为,每个纹素块(通常为4x4)占用的字节数是确定的,所以当我们需要访问某一个坐标的纹素时,可以明确得到该纹素所在块的数据,GPU纹理采样单元针对该块进行解压,读取对应纹素数据即完成采样。

    而jpeg/png这类压缩算法考虑了图片的整体数据,像素数据之间互相依赖,无法针对其中某一块进行解压,必须全部解压才能正确访问纹素,所以不适宜作为纹理格式。

    纹理压缩算法几乎都是有损压缩,通常情况下有限度的信息损失换到的性能上的提升是值得的。

    如果使用了硬件不支持的纹理压缩格式,Unity在运行时会对纹理进行解压所到无压缩格式,而这种无压缩格式只是格式上是无压缩的,但是因为原始数据是有损压缩,所以视觉上纹理精度和压缩格式是一致的,因此单从视觉上很难察觉,而且占用的内存是双份纹理的开销,而带宽开销是无压缩格式的纹理大小所占用的开销。

    例如:ETC格式在PC端Dx11的显卡是不支持的,如果使用,开销计算如下

    1024 x 1024 ETC2 8bit的格式在PC端,会产生5M的内存开销(1M压缩的原图+4M解压出来的RGBA32bit图)

    1024 x 1024 ETC 4bit格式在PC端,会产生4.5M的内存开销(0.5M压缩的原图+4M解压出来的RGBA32bit图)

    而如果贴图格式在目标设备上支持,则不会发生内存中的解压缩操作,压缩过的图大小是多少,在内存中的设备上大小就是多少:

    1024 x 1024 ETC2 8bit的格式在Android端,会产生1M的内存开销(1M压缩的原图)

    1024 x 1024 ETC 4bit格式在Android端,会产生0.5M的内存开销(0.5M压缩的原图)

    纹理压缩是一次性的工作,例如 Unity 在导入资源时会有一段转换时间,图片被处理成对应的纹理格式后存储了下来,此时纹理压缩的速度慢一些是可以接受的

    GPU 对纹理进行采样时,通常只会解压一个纹素块,不会全部解压,这个过程本身就是很快的

    最新文章 更多
    最新素材 更多
    公司介绍 网站地图 图片资讯
    Copyright © 2010-2022 山东找图网络科技有限公司  鲁ICP备18007836号-3  邮箱:15653358549@163.com