Search Unity

現在 ベータ版が公開されている Unity 2021.1 で重点が置かれているのはエディターのパフォーマンスで、皆さんのプロジェクトでのイテレーションをさらに高速化することを目指しています。テクスチャのインポートと圧縮の最適化は、この目標を達成するための重要な要素です。

他のゲームアセットと比較して、テクスチャは通常、ハードディスクの容量を多く取ります。また、総インポート時間の約 3 分の 2 を占めます。複雑なプロジェクトで作業している時に、テクスチャのインポートや圧縮を待っていると貴重な時間を浪費することになります。Unity Accelerator など、チーム向けに作られた Unity ツールはこの問題の影響を軽減する上で役立ちますが、私たちに出来ることはもっとたくさんあるはずです。そこで私たちは、テクスチャのインポートと圧縮プロセスの最適化に取り組み始めました。

以下の時間計測結果は、AMD ThreadRipper 1950X CPU を搭載した PC で、プロジェクトフォルダーを SSD ディスクに保存した場合のプロジェクトで時間計測を行った時のものです。他の構成(Mac など)でも同様の速度向上が見られました。Unity 2020.2 の以前のバージョン(alpha 21)と Unity 2021.1(beta 5)での比較結果になります。

Boat Attack プロジェクトのすべてのテクスチャ(118 個のテクスチャ、合計 720MB)をインポートするのにかかった時間は以下の通りです。

  • PC プラットフォーム:102 → 94 秒(1.1 倍スピードアップ)
  • Android プラットフォーム、ETC2 圧縮:203 → 101(2.0 倍スピードアップ)
  • Android プラットフォーム、ASTC 圧縮:536 → 172 秒(3.1 倍スピードアップ)
  • PC プラットフォームで Android と同じテクスチャサイズ設定を使った場合:30 → 22 秒(1.4 倍スピードアップ)プロジェクト内のテクスチャの多くについて、PC 向けのものは Android プラットフォーム向けのものに比べて、テクスチャサイズが大きくなっています。

より大規模なプロジェクトでの例として、「 Book of the Dead: Environment」のすべてのテクスチャ(425 個のテクスチャ、1.9 GB)をインポートするためにかかった時間も計測しました。

  • PC プラットフォーム:161 → 133 秒(1.2 倍スピードアップ)
  • Android プラットフォーム、ETC2 圧縮:1140 → 494 秒(2.3 倍スピードアップ)
  • Android プラットフォーム、ASTC 圧縮:3162 → 1204 秒(2.6 倍スピードアップ)

このようなスピードアップを成し遂げられたのは、以下の 2 つの領域に重点を置いて最適化を進めたためです。
1) テクスチャインポートの処理で行われたピクセルデータの変換やコピー。合わせて、sRGB 変換やパノラマレイアウトのキューブマップ処理など、処理に時間がかかる部分への SIMD やスレッディング最適化を追加。
2) テクスチャ圧縮。圧縮ライブラリの最新バージョンへのアップデートや圧縮ライブラリ自体の最適化を実施。

ETC 形式の圧縮最適化(1.4 倍スピードアップ)のリスクの低い部分については、Unity 2020.2.0、Unity 2020.1.15、および Unity 2019.4.16 の各バージョンにすでにバックポートされています。

今後に向けて

Unity 2021.2 では、テクスチャの読み込み時間と圧縮のさらなる改善が見込まれています。ベータ版のテストページベータ版フォーラムで、次回のパブリックリリースがあるまでお待ちください。

Unity 2021.1 ベータ版

今回ご紹介した内容が皆様のお役に立てれば幸いです。また、Unity 2021.1 をお使いいただくことで、皆様がインポートのプログレスバーをにらんで待つ時間が実際に短くなることを願います。最新のベータ版は Unity Hub またはダウンロードページから入手できます。本記事の公開日の時点で、1,900 以上の修正と 260 以上の新機能および変更点が盛り込まれています。ぜひお試しいただき、何か問題が発生した場合はバグレポートをご提ください。バグレポートを提出してくださった方の中から抽選で 4 名様に、ウルトラワイド IPS 34 インチ 144 Hz をプレゼントいたします(応募のルール全文はこちらからご覧ください(英語))。ベータ版は本制作に入っているプロジェクトでの使用を想定していないことにご留意ください。既存のプロジェクトをベータ版で使用する場合は、必ずバックアップを取るようにしてください。

Unity 2021.1 で、この記事で示したものと同じように、テクスチャのインポート時間が短縮された方はぜひ体験談をお寄せください。ご意見は、こちらのフォーラムのスレッドにご投稿ください。

25 replies on “Unity 2021.1 のテクスチャ最適化”

This is great! Unrelated request, but that would be a great improvement: being able to run Texture2D.Compress (or something similar) on a separate thread. Improvements on mesh manipulations a couple years back were great news. Being able to compress textures at runtime without spikes would be awesome!

Would it be possible to move texture importing to a background process?
Most of the time we do not need (the full resolution version of) most textures immediately after dragging them into the project folder or after updating our Unity version (or anything else that triggers an asset reimport).

So ideally Unity should only create a placeholder texture which can already be used (applied to a Material) but which gets replaced with higher and higher resolution versions as it continues being imported in the background. With mipmapping enabled the lower resolution versions could even be reused (I think).
And to finish it off, add a new EdiorWindow which shows a reorderable list of texture-import tasks so that *when* a specific texture if required faster it can be moved to the top of the priority list.

Please fix the bad global illumination and verify the realtime global illumination.
Can we use deferred renderer in urp on upcoming unity version?

Performance improvements in the editor are always welcome. Great job Aras, Florian, and anyone else involved. I would love to see more blog posts like this. Thank you!

Very nice improvements! Thanks

Any news about only compressing the textures that are used in the build at build time?
and not all the textures in the project folder?

You may want to see how the compression (crunch) affect the graphics while in editor. How much space it takes etc.

Well it could be configurable / on-demand. Although the editor isn’t comparable to the runtime in many ways already.

really nice but… what’s the value of importing textures faster if Book of the Dead: Environment doesn’t work since 2018 versions?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です