JA EN

ゲーム開発における画像フォーマット選定 - テクスチャ圧縮と描画パフォーマンスの最適化

· 約 9 分で読めます

ゲーム開発における画像フォーマットの特殊性

ゲーム開発で使用する画像フォーマットは、Web やデスクトップアプリケーションとは根本的に異なる要件を持ちます。Web では「ファイルサイズの最小化」と「ブラウザ互換性」が最優先ですが、ゲームでは「GPU での描画パフォーマンス」と「VRAM (ビデオメモリ) 使用量」が最重要です。

ゲーム画像の特殊要件:

一般的なゲームプロジェクトでは、テクスチャがアセット全体の 60-80% を占めます。AAA タイトルでは数十 GB のテクスチャデータを扱うため、フォーマット選定がゲームのダウンロードサイズ、ロード時間、描画パフォーマンスに直結します。適切なフォーマットを選ぶことで、VRAM 使用量を 50-75% 削減しながら視覚品質を維持できます。

GPU テクスチャ圧縮の仕組み - BCn ファミリー (DirectX)

BCn (Block Compression) は DirectX で標準的に使用される GPU テクスチャ圧縮フォーマットファミリーです。すべての BCn フォーマットは 4x4 ピクセルのブロック単位で圧縮し、GPU ハードウェアがリアルタイムでデコードします。

BCn フォーマットの種類:

BC7 は BC1 と比較して同じ 8bpp でも PSNR が 2-4dB 向上し、特にグラデーションやエッジ部分でのアーティファクトが大幅に軽減されます。エンコード時間は BC1 の 10-50 倍かかりますが、デコードは GPU ハードウェアで行うため実行時のコストは同等です。

ASTC - モバイルとクロスプラットフォームの標準

ASTC (Adaptive Scalable Texture Compression) は ARM が開発し、Khronos Group が標準化した次世代テクスチャ圧縮フォーマットです。iOS (A8 以降)、Android (多くの Adreno/Mali GPU)、Nintendo Switch で広くサポートされ、モバイルゲーム開発の事実上の標準となっています。

ASTC の革新的な特徴:

推奨ブロックサイズの選定:

Unity では TextureImporter の設定で ASTC ブロックサイズを指定でき、Unreal Engine では Texture Compression Settings から ASTC プロファイルを選択できます。ビルドパイプラインに astcenc (ARM 公式エンコーダ) を組み込むことで、高品質なオフラインエンコードが可能です。

コンテナフォーマット - DDS, KTX2, Basis Universal

GPU テクスチャ圧縮データを格納するコンテナフォーマットの選択も重要です。コンテナはテクスチャデータ本体に加え、ミップマップチェーン、キューブマップの面、配列テクスチャのレイヤーなどのメタデータを管理します。

主要コンテナフォーマット:

Basis Universal の仕組み:

ETC1S モードでは画像を ETC1 互換の中間表現に圧縮し、ランタイムで対象 GPU に合わせてトランスコードします。UASTC モードでは ASTC 4x4 互換の高品質中間表現を使用し、BC7 や ASTC への高速トランスコードが可能です。Web 向けの glTF 3D モデルでは KTX2 + Basis Universal が標準的な選択肢となっており、Three.js や Babylon.js でネイティブサポートされています。

選定の指針: PC 専用なら DDS (BC7)、モバイル専用なら KTX2 (ASTC)、クロスプラットフォームなら KTX2 + Basis Universal が最適です。

プラットフォーム別の最適フォーマット選定

ゲームのターゲットプラットフォームによって、使用可能なテクスチャ圧縮フォーマットは大きく異なります。各プラットフォームの GPU がハードウェアレベルでサポートするフォーマットを選択しないと、CPU デコードが発生してパフォーマンスが大幅に低下します。

プラットフォーム別推奨フォーマット:

マルチプラットフォーム開発のベストプラクティス:

テクスチャアトラスとストリーミングの設計

テクスチャフォーマットの選定に加え、テクスチャの管理方法もゲームパフォーマンスに大きく影響します。テクスチャアトラスとストリーミングは、ドローコール削減と VRAM 効率化の 2 大テクニックです。

テクスチャアトラスの設計:

テクスチャストリーミング (Virtual Texturing):

実装例として、Unreal Engine 5 の Virtual Texture Streaming は 16K テクスチャを 128 × 128のタイルに分割し、可視タイルのみを VRAM にストリーミングします。これにより、見た目の品質を維持しながら VRAM 使用量を 40-60% 削減できます。

関連記事

画像圧縮アルゴリズムの深層 - DCT、ウェーブレット変換、予測符号化の仕組み

画像圧縮の核心技術を深掘り解説。JPEG の DCT、JPEG 2000 のウェーブレット変換、H.265/AV1 の予測符号化、エントロピー符号化の数学的原理を理解します。

画像フォーマット比較表 - JPEG/PNG/WebP/AVIF/GIF/BMP の特徴と使い分け

主要な画像フォーマット 6 種類の技術的特徴を比較。圧縮方式、対応色深度、透過、アニメーション、ブラウザ対応状況を一覧表で整理し、用途別の最適な選択を解説します。

テクスチャ合成のアルゴリズムと応用 - パッチベースから深層学習まで

テクスチャ合成の主要アルゴリズムを網羅的に解説。パッチベース手法、Gram 行列による統計的手法、GAN ベースの最新技術まで原理と実装を詳しく紹介します。

WebGL で実現するリアルタイム画像エフェクト - シェーダー入門から実践まで

WebGL とフラグメントシェーダーを使ったリアルタイム画像エフェクトの実装方法を解説。ぼかし、色調補正、歪みなどの具体的なシェーダーコードと最適化手法を紹介します。

可逆圧縮 vs 非可逆圧縮 - 画像圧縮方式の選び方ガイド

可逆圧縮と非可逆圧縮の仕組み・特徴・用途を比較し、画像の種類や目的に応じた最適な圧縮方式の選び方を解説します。

画像圧縮の仕組みを徹底解説 - JPEG ・ PNG ・ WebP の違い

JPEG、PNG、WebP の圧縮アルゴリズムの違いを技術的に解説。非可逆圧縮と可逆圧縮の原理、各フォーマットの得意分野、実務での使い分けを具体的なデータとともに紹介します。

関連用語