Unity里加速纹理压缩

Unity 渲染优化 节省带宽 利用分辨率缩放 安卓 using UnityEngine; public class SetResolution : MonoBehaviour { private int scaleWidth = 0; private int scaleHeight = 0; public void setDesignContentScale() { #if UNITY_ANDROID ... 阅读详情

使用Unity开发跨平台项目的人都知道,Build Settings里切换平台时,会根据每个纹理指定的对应平台的压缩格式去压缩纹理,并根据mipmap相关的设置自动生成纹理的mipmap。这两个过程非常慢,并且打包机器上的CPU性能不同会有不同的时间占比。公司里的项目反映会占用总时间的一多半,我在自己2017年春购买的Macbook pro上测试一个工程,目测占据了95%的时间。那能不能把这个时间降下来呢?2018年秋就接到了公司的这个需求。

网上看到有人之前尝试着解决这个问题,说白了就是把纹理处理的工作从烂CPU(作者指的主要是Mac)转移到强大的CPU上(主频高、核多),见云风的 BLOG: 用分布式压缩贴图加快 Unity3D 的打包过程。这个方案为我打开了一个有启发性的思路。

但是,上面的方案理论上来说最多快上几倍,压缩纹理还是会占用很长时间,因为普通民用CPU的单核主频不会差别太大。

那怎么才能大幅提升速度呢?想起了开发引擎时经常会使用联合编译,从这得到灵感(UE4里的Lightmass烘焙Lightmap很慢,所以实现了个Swarm,可以分布式烘焙,也是这个做法):为什么不将纹理拆分开,用分布式的方式来压缩呢,压缩完毕后拼合成一张完整的纹理。我们都知道公司工位上的机器大部分时间CPU都是闲置状态,还有公司内部也有很多淘汰下来的服务器。如果这么做,理论上来说能提高几个数量级。很兴奋,搞嘛。

幸好公司购买了Unity源码,很快就搞清楚了纹理压缩的流程:Unity根据压缩格式的不同会启动不同的命令行工具的进程进行处理,例如PVRTexTool.exe、etccompress.exe;ASTC比较特殊一些,将一个ASTC压缩的开源库直接编译进了引擎里,先不管这个,技术Demo没有处理这种情况。压缩工具进程完成后,Unity再继续运行。自己写代码编译出Proxy工具,这些工具命名成PVRTexTool.exe和etccompress.exe,将Unity里的替换成掉。这些Proxy工具只是个中转站,将命令参数和未压缩的纹理数据分别上传到中心服务器和数据服务器。服务器分拆纹理,并将小块的纹理交给不同的任务服务器去压缩。压缩完毕后合并成完整的纹理,通过网络返回给Unity编辑器。对于ASTC这种特殊方式,可以用Hook的技术转发命令参数和纹理数据,不过没有时间去尝试这个(其实强烈建议Unity官方将这个开源库编译成接收命令行参数的可执行程序,这样就处理起来统一了)。

分布式压缩的图:

其实也没什么技术难题,也就分拆PVR格式的纹理时卡了下,因为PVR里的纹素是Z字形排列的。主要时间还是工程化的比重比较多,所以细碎的活很多,需要支持Windows、MacOS和Linux,需要用到多种语言和IDE。但由于人手严重不足,只能完成了个技术Demo。技术Demo到产品化还有很长的距离要走的,需要解决各种细枝末节的问题,所以需要一个团队。

经实测,确实有明显的性能提升:测试了在三台电脑上分布式压缩,压缩性能基本上跟服务器数量的增加成正比。

当然,这种方式也有缺点:拆分纹理很麻烦,例如纹理有很多种格式,还分2D、3D、Cubemap,还有Mipmap。性能也有不小的损失,因为拆分、网络传输、合并都需要时间。

前两天看到一篇文章,Unity官方终于出手解决这个问题了:《Unity 2021.1 beta 中的纹理优化,提速最高达 3.1 倍》,见Unity 2021.1 beta 中的纹理优化,提速最高达 3.1 倍。采用的方式是应用 SIMD 或线程优化,以及采用最新压缩库或优化压缩库本身来进行纹理压缩。

不过,经常做性能优化的人都有一个常识:针对语言层面的优化一般最多只能优化出几倍的速度(别抬杠,写的太烂的代码优化出来几百倍的速度也正常);而如果选用不同的架构或者算法,性能的提升有可能达到几个数量级以上。

那有没有更好的方法呢?我觉得理论上来说,“分布式异步压缩”是个可以考虑的方案(我之前做的demo属于“分布式同步压缩”,打包机、数据服务器、工作服务器之间的协同工作,还有网络传输和文件操作,会有很多额外耗时)。也就是压缩纹理时不要同步执行,将需要压缩的纹理直接扔出去让联网的工作机器去执行,Unity继续执行其它的切换平台的工作。当然,选择异步的方式是需要一个前提的:没有任何工作的执行需要依赖于纹理的压缩完成,除了打包这种。这样就把绝大部分的时间都节省了。

是不是感觉有点意思?有的话可以联系我,一起试着玩玩。

Unity美术资源导入优化指南:纹理压缩、模型设置与性能调优 在实时渲染和游戏开发中,纹理压缩与模型优化是提升应用性能、控制内存占用的核心技术。其原理在于通过特定算法减少纹理和网格数据量,以适应不同硬件平台的存储与读取特性,从而在画质与效率间取得平衡。这项技术的核心价值在于显著降低包体大小、提升加载速度并优化运行时性能,尤其对移动端和跨平台项目至关重要。常见的应用场景包括移动游戏开发、VR/AR应用以及任何对资源开销敏感的项目。本文将聚焦Unity引擎中的具体实践,深入探讨如何通过合理设置纹理的压缩格式(如PVRTC、ASTC)与模型导入参数,来规避常见的性能陷阱,例 阅读详情

相关推荐

Unity移动端纹理压缩优化:ASTC格式原理、配置与内存节省实战

纹理压缩是计算机图形学中提升渲染效率、降低内存占用的核心技术。其原理是通过特定算法减少纹理数据的存储空间,在保证视觉质量的前提下,显著降低GPU内存带宽和容量压力。这项技术的核心价值在于,它使得在资源受限的移动设备上运行复杂图形应用成为可能,广泛应用于游戏开发、移动应用和嵌入式系统等领域。ASTC(自适应可伸缩纹理压缩)作为新一代块压缩标准,通过自适应可变块大小和灵活的比特率控制,在相同压缩率下提供了优于ETC2、PVRTC等传统格式的视觉质量,并支持广泛的比特率范围以满足不同质量需求。在Unity引擎中,

weixin_31497453的博客 253

Unity3D学习笔记9——加载纹理

详细论述了Unity中加载纹理的几种方式。

Charlee44的技术驿站 2157

Unity纹理生成工具Mixture深度评测与选型指南

在游戏开发与计算机图形学中,纹理(Texture)是构建虚拟世界视觉表现的基础元素,它直接影响着场景的真实感与艺术风格。其生成原理从传统的手绘、软件处理,发展到如今主流的程序化生成技术,通过数学函数与算法自动创建纹理,极大地提升了内容生产的效率与一致性。这项技术的核心价值在于将复杂的视觉设计转化为可参数化、可迭代的流程,降低了美术创作的技术门槛,并支持大规模资产的高效生成。在应用场景上,程序化纹理生成广泛适用于游戏开发、影视特效、模拟仿真等领域,用于快速创建地形材质、角色皮肤、UI元素以及各种环境细节。本文

weixin_30642869的博客 389

Unity实现将图片上传到服务器功能

Unity实现将图片上传到服务器功能 前言

波波斯维奇 7896

Unity贴图接缝修复:基于邻接掩码的智能纹理混合方案

在游戏开发与计算机图形学中,纹理贴图是构建虚拟世界视觉细节的基础。当重复平铺贴图以覆盖大面积表面时,相邻贴图边缘常会出现生硬的接缝,破坏视觉连贯性。其核心原理在于纹理坐标的映射与采样,传统静态无缝贴图方案缺乏应对动态场景的灵活性。为解决此问题,邻接掩码算法应运而生,它通过程序化分析每个贴图单元的周边环境状态,动态选取并混合预制的边缘纹理片段,实现了实时的、上下文感知的接缝修复。这一技术的核心价值在于将美术从手工绘制海量边缘组合中解放出来,通过规则与数据驱动,显著提升了开发效率与视觉效果的一致性。在游戏开发领

weixin_34413802的博客 375

Unity微信小游戏包体优化实战:字体、图片、音频压缩技巧

在移动应用与游戏开发中,资源优化是提升用户体验和降低分发成本的核心环节。其原理在于通过数据压缩、格式转换与尺寸控制,减少应用安装包与运行时内存占用。这项技术的价值不仅在于满足平台(如微信小游戏20MB主包)的硬性限制,更能显著缩短首次加载时间、节省CDN流量,对性能与成本控制至关重要。应用场景广泛覆盖了手游、小程序、H5等对包体敏感的所有领域。本文聚焦于Unity项目转微信小游戏这一具体场景,深入探讨了针对字体、图片、音频三大‘体积大户’的‘物理压缩’实战方案,例如通过字体子集化将中文字体从10MB压缩至百

weixin_33843947的博客 448

Lightmap压缩和重排

前段时间项目做缩减包体大小的工作,自己在大佬的指导下做了个缩减lightmap的工具,抽时间整理一下思路。下面涉及到的代码是用python写的 1.获取模型的lightmap数据   一张lightmap包含了一个或多个模型的光照数据,所以首先需要将每个模型自己的那一部分数据从一个完整的lightmap中提取出来。 2.计算lightmap可以压缩的等级   拿到数据后可以通过比较压缩前和压缩后的图片相似度来计算是否可以压缩以及压缩等级。我使用的是图像的PSNR来判断的。实际测试中将psnr值大于30判.

xdedzl的博客 879

CSP-J 入门级第一轮认证 2025 详细解析

2025年CSP-J入门级第一轮认证模拟赛提供10套免费试题,含选择题与解析。选择题涉及计算机科学基础,如32位无符号整数最大值计算(约42.9亿,选A)、C++位运算(255&254=254,选B)、递归函数分析(calc(5)=6,选B)、哈夫曼树构造(带权路径长度186,选B)等。其他题目涵盖图论(有向图边数等于入度/出度和,选B)、组合数学(120种选法,选C)、布尔逻辑(选项C不恒等)、模运算周期性(f[2025]=6,选D)、C++字符串特性(支持string+char,选B)及引用传参

lan_in的博客 2939

LightMap 没有CPU硬件加速,减少烘焙时间

Unite 2018 | Lightmap烘焙最佳实践柳振东 Unity官方平台 昨天从Unity 5.0版本我们推出了Enlighten烘焙系统,在Unity 5.6版本开始增加了Progressive烘焙系统作为备选,但是直到Unity 2018.1正式版本才脱离Preview状态。现在国内大部分开发者主要都使用Enlighten系统进行Lightmap烘焙。作为Progressive系统极大...

danteshenqu的博客 2221

Python通用编程规范-09 安全编程规范

1.9 安全编程规范 1.9.1 异常行为 1.9.1.1 禁止抑制或者忽略已检查异常 【说明】: 编码人员常常会通过一个空的或者无意义的catch块来抑制捕获的已检查异常。每一个catch块都应该确保程序只会在继续有效的情况下才会继续运行下去。因此,catch块必须要么从异常情况中恢复,要么重新抛出适合当前catch块上下文的另一个异常以允许最邻近的外层try-catch语句块来进行恢复工作。异常会打断应用原本预期的控制流程。例如,try块中位于异常发生点之后的任何表达式和语句都不会被执行。因此,异常必须

zhao12501的博客 2871

晟矽微MC32F7361定时器的使用案例说明

110所以TIMER0所用的频率是FCPU的1/64,也就是8/64MHZ. 为1/8MHZ。//io口下拉电阻 1:enable 0:disablea。//io口上拉电阻 1:enable 0:disable。//io口下拉电阻 1:enable 0:disable。//io口上拉电阻 1:enable 0:disable。//io口下拉电阻 1:enable 0:disable。//io口上拉电阻 1:enable 0:disable。

liyanfei123456的博客 1130

Android平台压缩纹理ETC2 VS ASTC

UWA一下,你就知道~

UWA—简单优化,优化简单! 2804

Pcileech(DMA)开源项目简述

希望大DMA家能正确认识FPGA,正确使用DMA技术,对于市场上各类伪装成花里胡哨设备的FPGA板卡它的本质是不会变的,不要上当受骗。

2301_79773847的博客 5961

unity纹理导入设置与优化

unity纹理基础概念:模型表面用来增加细节的位图图像。通常一个模型需要一张或者多张纹理。纹理需要材质着色器映射到表面。或者烘焙生成。纹理可以放到模型,ui ,精灵,地图等。

qq_21820591的专栏 976

车辆TBOX科普 第69次 TBOX行业发展趋势与就业前景深度解析

TBOX技术革新驱动汽车智能化发展 Telematics BOX(TBOX)正快速从车辆状态监控器进化为整车智能核心,市场年增速超25%,2025年规模将达150亿美元。技术呈现四大革新方向:5G与V2X集成实现多模通信网关,支持10-20Gbps高速传输;多模GNSS融合定位精度达厘米级,北斗系统提供独特优势;边缘计算架构使TBOX具备本地AI处理能力,减少95%数据上传;硬件安全模块(HSM)成为标配,满足EVITA标准的安全需求。这些技术突破正重塑TBOX架构,使其从单纯通信管道升级为智能网联汽车的关

IT深耕十余载,大道之简 1827

深入解析NRF52832安全DFU Bootloader实现机制与蓝牙OTA升级流程

本文深入解析了NRF52832芯片安全DFU Bootloader的实现机制与蓝牙OTA升级流程。详细阐述了Bootloader的核心概念、双区升级策略、源码初始化流程以及蓝牙DFU服务的数据传输协议,并提供了从环境搭建、密钥生成到编译烧录、生成升级包的完整实战指南,帮助开发者构建安全可靠的无线固件更新系统。

weixin_29188043的博客 490

Unity包体瘦身实战:三步精准压缩纹理与音频,优化移动端游戏性能

在移动应用与游戏开发中,资源优化是提升用户体验与产品成功率的关键环节。其核心原理在于通过有损压缩算法,在保证感知质量的前提下,大幅减少纹理和音频等核心资源的存储与内存占用,从而实现更快的下载速度、更低的存储压力与更流畅的运行性能。这项技术的核心价值在于,它能直接解决用户因安装包过大导致的下载流失与存储空间不足等痛点,对产品的留存率与口碑有显著影响。在Unity引擎开发,尤其是移动端游戏项目中,纹理和音频资源通常是包体膨胀的主要因素。针对这一场景,一套行之有效的优化方案通常遵循“源头规范、中期优化、终局清理”

WGH100817的博客 836

硅基半导体量子点:单电子自旋量子比特技术手册

现在我们已经了解了从硅片到容错计算的全部环节,让我们用一张总览图把碎片拼成完整拼图。fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;important;important;important;color:#000!important;important;important;important;important;color:#000!

VectorShift的博客 371

移动游戏开发中ASTC与ETC2纹理压缩格式的选型与实战优化指南

纹理压缩是计算机图形学中一项关键的渲染优化技术,其核心原理是通过特定的有损压缩算法,将纹理图像数据以压缩格式直接存储在GPU内存中,并由硬件实时解压采样。这项技术能大幅降低GPU内存占用和带宽消耗,对于资源受限的移动平台尤为重要。其技术价值在于,它直接决定了应用的内存效率、加载速度和运行稳定性,是移动端应用性能优化的基石。在移动游戏开发、图形密集型应用等场景中,选择合适的纹理压缩格式是项目成功的关键。本文聚焦于移动端主流的ASTC和ETC2格式,深入探讨它们在不同硬件兼容性、压缩率与画质要求下的选型策略,并

aqc802886的博客 334

Python APP反爬实战:Frida+Charles抓包,破解签名校验

Charles抓包定位参数 → jadx-gui反编译找函数 → Frida Hook拿密钥/规则 → Python还原签名算法;Frida的核心价值:Hook住APP的加密函数,拿到“输入(密钥/参数)+输出(签名)”,无需懂复杂的逆向底层;严格对齐APP的参数排序、拼接规则、加密算法,差一点都会验证失败。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1535

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

UABEA纹理处理深度解析:从PVRTexLib到ISPC压缩技术的完整指南

你是否曾经好奇Unity游戏中的精美纹理是如何被高效压缩和处理的?🤔 UABEA作为一款强大的Unity Asset Bundle编辑器,其核心功能之一就是纹理处理。本文将深入解析UABEA如何利用PVRTexLib和ISPC压缩技术来处理Unity游戏中的纹理资源,让你全面了解现代游戏纹理处理的奥秘! ## 🔍 UABEA纹理处理架构概览 UABEA的纹理处理系统采用了模块化设计,主要通

gitblog_01023的博客 1092

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

如何用GPU加速的纹理生成引擎重构你的PBR材质工作流?

你是否还在为复杂的PBR材质制作流程而头疼?传统工作流中,从基础贴图到完整的法线、高度、AO、金属度、粗糙度贴图,往往需要在多个软件间来回切换,参数调整滞后,渲染效率低下。今天,我们将深入探索一个革命性的解决方案——AwesomeBump 5.1,这款基于Qt框架的GPU加速纹理生成工具,将彻底改变你对材质创作的认知。 ## 纹理生成领域的效率革命:传统 vs GPU加速 在3D图形和游戏开发

gitblog_00849的博客 746

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

TextureLab:免费跨平台GPU加速程序化纹理生成器完全指南

欢迎来到TextureLab的终极指南!🎨 如果你是游戏开发者、3D艺术家或数字创作者,那么你一定会爱上这个强大的免费工具。TextureLab是一个完全免费、跨平台的GPU加速程序化纹理生成器,它能够帮助你快速创建高质量的游戏纹理和材质,无需昂贵的软件或复杂的编码知识。 ## 🌟 什么是TextureLab? TextureLab是一个基于节点的程序化纹理生成工具,专为游戏开发者和3D艺

gitblog_00761的博客 616

5分钟精通Photoshop纹理压缩:Intel Texture Works插件完全指南

想在Photoshop中直接完成专业级游戏纹理压缩吗?厌倦了在不同工具间来回切换处理DDS格式和BCn压缩吗?Intel Texture Works插件为您提供了完美的解决方案!这款强大的Photoshop扩展插件集成了业界领先的BCn/DXT压缩技术,让设计师和游戏开发者能在熟悉的创作环境中完成高效的纹理优化工作。无论您是游戏美术师、UI设计师还是3D内容创作者,这款免费工具都能大幅提升您的工作

gitblog_01415的博客 991

Unity 的资源导入:为什么源文件“不能直接用“,以及 Library 里到底藏了什么

然而,随着项目规模的不断扩大,编译和构建的时间成本也随之增加。在Unity开发中,尤其是针对iOS平台的构建,编译时间往往是一个重要的考虑因素。增量编译的核心思想是利用文件的时间戳信息来判断哪些文件需要重新编译,从而避免不必要的重复工作。通过实现上述增量编译策略,Unity开发者可以显著提高iOS项目的构建效率,减少不必要的编译时间。具体来说,编译器会存储使用到的文件的时间戳信息,并在后续编译时检查这些时间戳。如果文件的内容没有变化(即时间戳相同),则可以使用之前的编译缓存,从而加快编译速度。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 1069

unity 字体压缩_Unity中数据压缩的未来

unity 字体压缩 大家好! (Hello everybody!) My name is Rich Geldreich, and I’m a game developer, graphics programmer, and data compression specialist. I’ve been in the trenches working on the creation, optimiz...

culiao6493的博客 526
上一篇: Ubuntu上构建Godot的VS Code工程
下一篇: Crazy Engine 3.0(又名盘古引擎)的技术特性
CrazyEngine
博客等级 码龄10年 111粉丝 37原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值