|
|
多边形打包(Polygon Packing)技术概况
主流引擎支持
引擎 支持情况 说明
Unity 原生支持 2D Sprite 的 Tight Mesh 模式,SpriteRenderer 直接渲染多边形网格,减少 overdraw
Cocos2d-x / Cocos Creator 原生支持 从 Cocos2d-x 3.x 起支持 polygon sprite,Creator 中叫 Auto Trim + Polygon 模式
Unreal Engine Paper2D 支持 UE 的 2D 模块支持自定义 sprite 几何体
Godot 支持 Sprite2D 可加载带多边形数据的图集
Egret / LayaAir / Phaser 通过工具支持 引擎本身支持自定义顶点,需配合 TexturePacker 等工具导出对应格式
最主流的消费方是 Unity 和 Cocos Creator,尤其是手游 2D 项目,因为移动端 GPU 的 fill rate(填充率)有限,减少透明像素的 overdraw 对性能提升显著。
技术出现时间线
时间 事件
2013年 TexturePacker 3.2 首次引入 Polygon Packing 算法,这是该技术的标志性事件
2014年 Cocos2d-x 3.4 开始原生支持 PolygonInfo 和 AutoPolygon,可直接渲染多边形精灵
2015年 Unity 4.6/5.x 的 SpritePacker 开始支持 Tight 模式(多边形裁切)
2017年 Unity 2017 引入 Sprite Atlas 系统,Tight Packing 成为推荐选项
至今 业界标准做法,几乎所有主流 2D 图集打包工具都支持
核心收益
图集面积减少 20%-40%:去掉矩形留白,同样数量的精灵可以塞进更小的纹理
GPU overdraw 降低 30%-50%:不再渲染大片透明像素,在移动端尤其重要
内存占用降低:更小的纹理 = 更少的显存
技术原理
传统矩形打包: 多边形打包:
┌─────────────┐ 用多边形(顶点+三角形)
│ ░░░░████░░░░│ 贴合实际像素轮廓
│ ░░████████░░│ ┌──╲
│ ░████████░░░│ → │████╲
│ ░░████████░░│ │██████│
│ ░░░░████░░░░│ └──────┘
└─────────────┘ 面积更小,无透明浪费
大量透明像素浪费
SpriteSheetPacker 输出的 .plist 中包含每个精灵的 vertices(顶点)和 triangles(三角形索引),引擎加载后直接用这些数据构建渲染网格,而非矩形 quad。
总结:这项技术 2013年由 TexturePacker 开创,目前是 2D 手游开发的行业标准,Unity 和 Cocos 是最主要的使用引擎。
|
|