为了提供一些上下文,我有几个光照贴图,用于 3D 场景中的不同对象,我想将它们打包到一个纹理中。光照贴图是正方形的,并且具有不同的大小,不一定是 2 的幂(尽管可以包括这个限制,如果它可以提供更好的解决方案)。生成的纹理的大小是任意的,但应尽可能为方形。我必须保持像素完美,不能使用旋转。速度不是问题,这不用于对时间要求严格的应用程序。
我在 GameDev.SE找到的基本算法是这样工作的:
- 按区域对光照贴图进行排序,从大开始
- 以光栅扫描顺序遍历输出纹理[固定宽度或根据需要增加]
- 将光照贴图放置在第一个可能的位置
- 重复下一个光照贴图,直到完成
虽然这听起来合理且易于实现,但我想知道该算法是否适合我的目的,或者是否有更简单的解决方案。特别是,我对以下内容感兴趣:
- 我可以以某种方式利用只有方形纹理吗?
- 有没有办法预先计算输出的最佳方形尺寸?
- 我可以充分利用只有“二的力量”纹理吗?