Unity 4 と Unity 5 でテクスチャ圧縮の処理が異なる

高橋 啓治郎 -

(この情報は Unity 5.0 の時点のものであり、最新版とは異なる可能性があります。)

Unity 4 と Unity 5 では iOS/Android 向けテクスチャ圧縮の処理の内容が異なっています。

Unity 4 の時点では次のような処理になっていました。

  • PVRTC 変換には PVRTexTool を、ETC 変換には etcpack を用いる。
  • etcpack の引数には常に “-s fast” と “-e perceptual” が与えられる(Unity 側の Compression Quality 設定は無視される)。
  • PVRTexTool の引数には “-q pvrtcfast”, “-q pvrtcnormal”, “-q pvrtcbest” のいずれかが与えられる(Compression Quality 設定に基づく)。

これが Unity 5 では次のように変更されています。

  • PVRTC, ETC ともに PVRTexTool を用いる。
  • ETC の場合、PVRTexTool の引数には “-q etcfast”, “-q etcfastperceptual”, “-q etcfastperceptual” のいずれかが与えられる(Compression Quality 設定に基づく)。
  • PVRTC の場合、PVRTexTool の引数には “-q pvrtcfast”, “-q pvrtcnormal”, “-q pvrtcbest” のいずれかが与えられる(Compression Quality 設定に基づく)。
  • Texture Import Settings の “Alpha Is Transparency” がオンの場合、PVRTexTool の引数に “-l” が追加される(bleed filter を有効にするオプション)。

この仕様変更の影響があらわれやすいのは、ETC 変換にかかる時間です。Compression Quality 設定が反映されるようになったため、デフォルト設定でもそこそこの時間がかかるようになりました。Compression Quality を落とすことにより以前と同等の速度を得られると思われますが、それは画質とのトレードオフになります。

また、Unity 5 では PVRTexTool のバージョンが更新されています。このバージョンアップによって、画質の向上や劣化が生じる可能性もあります。

どうしても以前の PVRTexTool の方が好ましい、という場合は、Unity 4 に同梱されていた PVRTexTool を拾ってきて、Unity 5 の PVRTexTool と無理やり差し替える、というハック的な技も考えられます(もちろん、そのような使い方は推奨しませんし、動作の保証もありません……)。

他にご質問がございましたら、リクエストを送信してください

1 コメント

  • 2
    Avatar
    中村 大悟様

    Unity 5にて
    テクスチャ圧縮処理でPVRTexToolを呼び出しているプログラムを自前のものに差し替える事は可能でしょうか?
    またはテクスチャ(PNGなど)をビルド時に .pvr ファイルに差し替える事は可能でしょうか?

    Unity5で以下のような事をできればと考えております。
    http://qiita.com/otmb/items/3afe822bb83497f2e2de

    ハック的な事でもできればお教え頂ければと思います。

    よろしくお願いいたします。

ログインしてコメントを残してください。
Powered by Zendesk