Unity 常见的图像压缩格式优缺点

news2024/11/15 5:54:30

 在Unity中,将图像压缩至更小的大小,既可以加快加载速度,也可以减少内存的占用。根据不同的目标平台,Unity提供了以下几种常见的图像压缩格式:

1. RGBA Compressed: 是一种通过压缩的方式来存储RGBA(红色、绿色、蓝色和透明度)的四个通道的图片格式。

优点:

  • 体积小,节省空间:通过对RGBA通道进行压缩,相较于未压缩的RGBA格式,可以大大降低文件的体积,节省存储空间。  

  • 完整的色彩信息:由于RGBA Compressed同时包含了红色、绿色、蓝色和透明度四个通道,因此能够完整且详细地表现图像的色彩信息。 

  • 透明度通道:不仅可以存储RGB色彩信息,还可以存储透明度信息,在进行复杂的图像编辑和动画制作时非常有用。

缺点:

  • 有损压缩:虽然RGBA Compressed可以有效地减少文件大小,但它是一种有损压缩,因此可能会在一定程度上降低图片的质量。

  • 兼容性问题:尽管RGBA Compressed格式可以提供丰富的色彩和透明度信息,但并非所有的图像处理软件或设备都能完全支持此格式,可能存在兼容性问题。

  • 处理速度:由于需要进行压缩和解压缩操作,所以在处理大量的或者高分辨率的图像时,可能会相较于其他未压缩的格式更为耗时。

2. DXT:全称DirectX Texture Compression Format,是由Nvidia开发的一种在计算机图形绘制中常见的纹理压缩格式,常见于Windows平台的游戏中,包括DXT1,DXT3和DXT5。其中,DXT5是一种常见的压缩方式,它提供高达6:1的压缩比,但可能会牺牲一些图像详细度。在Unity中,DXT格式是默认的PC平台和游戏主机平台的纹理压缩格式。

优点:

  • 空间效率:DXT格式是一种有损压缩格式,能够将原始数据的体积减小到1/8或者1/4,为图形绘制提供更大的空间。

  • 显存效率:在运行时,DXT格式直接存储在GPU的显存中,提升了纹理读取的效率。

  • 兼容性:DXT格式得到了广泛的硬件支持,无论是桌面、移动设备或者游戏主机,大部分的设备都能够直接处理DXT格式的纹理。

缺点:

  • 图像质量:DXT格式是一种有损压缩格式,虽然能够显著减小数据体积,但是也会带来不可避免的图像质量损失。

  • 色彩问题:DXT格式在处理高色彩深度的图像时,可能会出现色块或者色带问题。

  • 压缩速度:相较于其他格式,DXT格式的压缩速度可能会稍慢一些。

3. PVRTC: PowerVR Texture Compression(PVRTC)是专为PowerVR系列的图形处理器设计的,主要用在iOS设备上。PVRTC的压缩比很高,可以达到8:1或4:1,但这种压缩方式可能会牺牲一部分图像质量。

优点:

  • 高压缩比:PVRTC提供了极高的压缩比,可以将图片体积减小到原来的1/2、1/4、1/8等,极大地节省了存储空间和带宽。

  • 支持多通道:PVRTC支持RGBA四通道,因此能够展示丰富的颜色和透明效果。

  • 实时解压:PVRTC可以在GPU侧实时解压,避免占用CPU资源,提高了性能。

缺点:

  • 图像质量:由于其是一种有损压缩方式,可能会导致一些图像质量损失。

  • 兼容性问题:PVRTC主要是为Imagination Technologies的PowerVR系列GPU设计的,对于非PowerVR GPU,可能会遇到兼容性问题。

  • 需要专门的工具进行压缩:创建PVRTC纹理需要使用专门的PVRTexTool,可能对某些开发者来说不太方便。

  • 压缩速度较慢:在某些情况下,PVRTC的压缩速度可能相比其他压缩格式较慢。

PVRTC格式通常在需要高效压缩和处理图像的移动设备上使用,但在使用时需要考虑到其可能的图像质量损失和兼容性问题。

4. ETC: 全称Ericsson Texture Compression(ETC)是一种面向OpenGL ES和WebGL的纹理压缩格式,专为Android设备设计的一种压缩格式。ETC1只支持RGB压缩,不支持Alpha通道,而ETC2则提供了对Alpha通道的支持。

优点:

  • 高压缩比:ETC能有效减少图像文件大小并维持相当高的图像质量,有利于在有限的内存空间和带宽下优化应用运行表现。

  • 广泛兼容:ETC拥有较好的跨平台性,适用于各种类型的设备,被广大基于OpenGL ES和WebGL的应用所接受。

  • 实时解压:ETC格式的纹理可以在GPU侧实时解压,避免占用CPU资源。

缺点:

  • 只支持RGB信息:ETC的标准版本仅支持RGB颜色,ETC1不支持透明度,而且压缩后图像质量可能会下降。ETC2虽然支持透明度,但是不是所有Android设备都支持ETC2。

  • 图像质量:与许多有损压缩算法一样,ETC压缩可能会牺牲一部分图像质量。

总的来说,ETC是为OpenGL ES和WebGL设计的优秀纹理压缩格式。它提供了一种平衡图像质量和存储需求的有效方式,适用于各种计算资源受限制的场景。

5. ASTC:全称 Adaptive Scalable Texture Compression(ASTC)是由ARM开发的一种高效的纹理压缩格式,是一种更加先进的压缩格式,支持各种纹理类型和细节级别。它在许多现代移动设备上都有支持。

优点:

  • 高效压缩:ASTC提供了高度适应的压缩能力,能够非常有效地减小纹理所占用的存储空间和内存带宽。

  • 灵活性:ASTC支持的纹理大小范围非常广,从4x4到12x12像素,甚至可以压缩3D纹理,提供了极大的灵活性。

  • 高质量:ASTC提供了良好的图像质量,并支持包括RGBA在内的多种颜色格式和渐变效果。

  • 硬件解压缩:ASTC格式的纹理可以在GPU侧进行解压,这有助于提高渲染性能并减低CPU的压力。

缺点:

  • 容性问题:虽然ASTC正在成为新标准,但仍存在一些设备不支持ASTC格式的情况,开发者需要考虑向后兼容问题。

  • 压缩速度:ASTC提供的块大小和压缩选项较多,这增加了压缩时间,压缩过程可能相对较长。

    总的来说,尽管ASTC在压缩时间和设备兼容性上可能有些问题,但其灵活性和压缩效果无疑使其成为移动设备和性能有限环境中的理想选择。

    每种纹理压缩格式都有其优点和缺点,所有这些压缩格式在选择时,都需要综合考量适应设备、图像质量要求、存储大小限制及性能需求等因素,确保最后的效果达到最佳。

好了,这一章就写到这,欢迎大家加入QQ群:280993838 。或者关注我的公众号:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1423063.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Flask框架开发学习笔记《6》前后端不分离基础框架

Flask框架开发学习笔记《6》前后端不分离基础框架 Flask是使用python的后端,由于小程序需要后端开发,遂学习一下后端开发。 主要包含如下文件: static 目录中存储了图片templates 目录中存储了 html 文件utils.py 包含了 log 函数server.p…

开发工具git分支冲突解决

在团队协作的软件开发过程中,Git是一款广泛使用的版本控制系统。然而,当多个开发者同时修改同一文件或代码段时,就会产生分支冲突。解决这些冲突需要仔细的协调和技术知识。本篇博客将介绍Git分支冲突的解决方法,以及开发工具和最…

Android 系统启动过程

当按下电源时,引导芯片代码会从预定义的地方(固化在ROM) 开始执行,加载引导程序BootLoader到RAM,然后执行。 启动内核的第一个进程idle(pid0),idle进程是Linux系统第一个进程,是init进程和kthreadd进程的父进程。 idle的主要作用 初始化进程以及内存管…

Modern C++ std::get<n>(tuple)的原理

1. 前言 前面我们讲过std::tuple的实现原理,但没有讲如何取出数据,本节着重讲讲这点。本节与之前的blog有较大关联,如果您没看,这里有链接,链接已按由浅入深排好序,您可以按顺序阅读。如果时间少可以直接看…

【新书推荐】4.2节 字符编码规则

本节内容:字符编码规则。 ■字符编码规则:ASCII码、ANSI字符集、Unicode字符集。 ■变形国标码:国标码是16位编码,高8位表示汉字符的区号,低8位表示汉字符的位号。 4.2.1 字符编码规则 计算机只能存储二进制数0和1&a…

API管理协作工具:Apipost

相信无论是前端,还是后端的测试和开发人员,都遇到过这样的困难。不同工具之间数据一致性非常困难、低效。多个系统之间数据不一致,导致协作低效、频繁出问题,开发测试人员痛苦不堪。 API管理的难点在哪? 开发人员在 …

【WPF.NET开发】优化性能:图形呈现层

本文内容 图形硬件呈现层定义其他资源 呈现层为运行 WPF 应用程序的设备定义图形硬件功能和性能级别。 1、图形硬件 对呈现层级别影响最大的图形硬件功能包括: 视频 RAM - 图形硬件中的视频内存量决定了可用于合成图形的缓冲区大小和数量。 像素着色器 - 像素着…

点餐APP开发需要用到的一些源代码

在数字化日益普及的今天,点餐APP已经成为人们日常生活的重要组成部分,从校园食堂到高级餐厅,从快餐外卖到定制化营养餐,点餐APP的多样性和便利性满足了不同用户的需求,本文将深入探讨在开发一款点餐APP时可能用到的源代…

24.Android中的列表--ListView

ListView 1.简单列表--ArrayAdapter <?xml version"1.0" encoding"utf-8"?> <ScrollView xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"xmlns:tools&qu…

C++ 入门(三)— 函数

文章目录 函数简介函数返回值Void 函数&#xff08;非值返回函数&#xff09;函数参数和参数局部范围函数的声明和定义具有多个代码文件的程序 函数简介 C 程序的方式工作。当程序遇到函数调用时&#xff0c;它将在一个函数内按顺序执行语句。函数调用是告诉 CPU 中断当前函数…

责任链模式在java中的实现

1 总览 2 概念 避免请求发送者与接收者耦合在一起&#xff0c;让多个对象都有可能接收请求&#xff0c;将这些对象连接成一条链&#xff0c;并且沿着这条链传递请求&#xff0c;直到有对象处理它为止。职责链模式是一种对象行为型模式。 3 实现 公共部分&#xff0c;一个系…

法大大入选2023德勤“中国明日之星”

1月30日&#xff0c;德勤审计及鉴定合伙人、华南区上市业务合伙人、资本市场服务部王杰森莅临法大大总部&#xff0c;为法大大颁发“2023德勤中国 高科技高成长 明日之星”奖杯&#xff0c;法大大联合创始人兼首席法务官梅臻代表领奖。 &#xff08;左为王杰森&#xff0c;右为…

海外代理IP推荐:5大最佳Luminati替代方案

在跨境出海业务中&#xff0c;海外代理IP是非常高效的助力工具&#xff0c;因此也衍生了非常多的代理服务商。想必大多数都知道Brightdata&#xff08;原名Luminati&#xff09;&#xff0c;但是&#xff0c;由于代理IP的高需求&#xff0c;慢慢地我们发现除了高价的卢米&#…

Prometheus的promQL语法

时间序列 node_cpu_guest_seconds_total{cpu"0"} #{}外的是监控项(指标数据) #{}内的是标签 #node使用cpu的描述统计&#xff0c;符合标签cpu0的时间序列&#xff0c;查询出的结果 #指标项标签就是Prometheus的时间序列_address_ #双下划线标签是Prometheus系统的默…

【小白学unity记录】使用unity播放声音

1. 示例 unity中播放声音涉及到两个组件。AudioSource和AudioClip。AudioSource可以理解为播放器&#xff0c;AudioClip可以理解为音频片段文件。AudioSource可以通过.clip属性切换音频片段。 using UnityEngine;public class PlayerController : MonoBehaviour {private int…

1.迭代与递归 - JS

迭代与递归是函数进阶的第一个门槛。迭代就是对已知变量反复赋值变换&#xff1b;递归就是函数体内调用自身。 迭代 一个迭代是就是一个循环&#xff0c;根据迭代式对变量反复赋值。 求近似根&#xff08;切线法&#xff09;&#xff1b; 迭代描述&#xff1a; x 0 x_0 x0…

安装并开始设置 Windows 终端(命令提示符或Windows PowerShell或Azure Cloud Shell)

安装 安装 若要试用最新的预览功能&#xff0c;可能还需要安装 Windows 终端预览。 ‼️备注 如果你无法访问 Microsoft Store&#xff0c;GitHub 发布页上发布有内部版本。 如果从 GitHub 安装&#xff0c;Windows 终端将不会自动更新为新版本。 有关使用包管理器&#xff…

品牌如何持续发展,重点在于把握消费动机

发展周期较短的品牌可能有很多原因&#xff0c;但是长效发展的品牌却有相似的共性。所有能长效发展的品牌&#xff0c;都牢牢把握住了顾客的消费动机&#xff0c;人们会因为很多原因去消费&#xff0c;这在营销界就被称为“消费动机”&#xff0c;有的消费动机是短暂的&#xf…

MySQL中的数据类型(五)

MySQL中的数据类型&#xff08;五&#xff09; 一、整数类型 数值类型中的长度 m 是指显示长度&#xff0c;并不表示存储长度&#xff0c;只有字段指定 zerofill 时有用 例如&#xff1a; int(3) &#xff0c;如果实际值是 2 &#xff0c;如果列指定了 zerofill &#xff0c;…

【UE 材质】球形遮罩材质

效果 步骤 1. 新建一个材质&#xff0c;这里命名为“M_Mask” 打开“M_Mask”&#xff0c;混合模式设置为已遮罩&#xff0c;勾选双面显示 在材质图表中添加如下节点 此时我们将一个物体赋予材质“M_Mask”并放置在世界坐标原点&#xff0c;可以看到如下效果 2. 如果我们希望能…