イベント
テクスチャ圧縮技術ソムリエが紹介する「テクスチャ圧縮技術の選び方」[GDC 2026]
![]() |
講演者は,開発会社のJin&Jaw所属のJad Deeb氏。氏が携わった最近のゲームとしては,非常に評価の高い「Dispatch」や,「Unknown 9: Awakening」がある。
![]() |
テクスチャ制作ワークフローの「123」
入門者向けセッションなので,内容は基本的な事項が中心だった。テクスチャ制作に関する基礎知識を体系的に整理できる良い講演であった。
ちなみに,最近話題の「ニューラルテクスチャ圧縮」のような,最新技術には触れていない。本講演のテーマは,現行GPUで一般的に利用されているテクスチャ圧縮技術だ。
Deeb氏はまず,出発点となるツールとして,Adobe Systemsの「Substance 3D Painter」や「Photoshop」を挙げた。
前者は,3Dグラフィックス用テクスチャ制作に特化した専門ツールだ。後者は,言わずと知れた画像編集ソフトで,ゲーム制作においては,デカール画像や写真素材,ハンドペイント系テクスチャの制作に広く用いられている。
![]() |
これらのツールで制作されたテクスチャデータは,ゲーム向けのテクスチャとしては,中間ファイルに相当する。これらはPNGやTGAといったファイル形式を用いることが多い。
UI素材や2Dゲーム素材,画像テクスチャは,可逆圧縮形式のPNGが好まれる。ただ,ツールによっては透明要素の扱いが異なる場合がある。その意味では,RGBAの4チャンネルを完全に独立して扱えるTGAのほうが,ゲーム開発では好まれる傾向にあるそうだ。
とくに,近年のゲームグラフィックスでは,物理ベースレンダリング(PBR:Physically Based Rendering)が事実上の標準となっている。
PBR素材では,RGBAのそれぞれに,独立したモノトーンのテクスチャデータを格納するケースが多い。たとえば,「R」にアンビエントオクルージョン,「G」に金属的な質感(メタリック)の度合い,「B」にラフネスといった具合だ。
このような用途でも,TGA形式は意図しない情報欠落が起こりにくいので,業界では高く評価されているという。
![]() |
ゲームグラフィックスにおけるテクスチャの解像度やフォーマット
Deeb氏は,テクスチャ解像度の基礎についても説明した。
まず,GPU内に圧縮した状態で置けるテクスチャの解像度には,条件がある。
高解像度テクスチャを起点として,一辺の解像度を半分にした低解像度テクスチャを階層的に保持する仕組みを「MIPMAP」と呼ぶ。最も低解像度のレベルは1×1テクセルだ。
このMIPMAP形式に対応した圧縮テクスチャフォーマットを利用するには,テクスチャ一辺の解像度は,2のべき乗である必要がある。
今どきのGPUでは,2のべき乗であれば正方形だけでなく,長方形でも問題ない。
![]() |
もし,MIPMAPを使わない場合,今どきのGPUでは,2のべき乗だけでなく,4の倍数でもいいそうだ。なお数学上,2の2乗以上の2のべき乗値は,必ず4の倍数となる。
テクスチャ一辺あたりの解像度を4の倍数にすべき理由には,GPUのテクスチャ圧縮技術が関係している。今どきのGPUでは,テクスチャを4×4ピクセル単位を最小ブロックとして分割圧縮,あるいは展開する構造になっているためだ。
一方,MIPMAPつきテクスチャの一辺あたり解像度が2のべき乗である理由は,最も低解像度なMIPMAPテクスチャは,1×1テクセルに収める必要があるという絶対条件があるためだ。
たとえば,100×100テクセルのテクスチャ解像度は4の倍数であるが,半分にすると50×50テクセルとなり,さらに半分にすると整数にならない。こうした理由から,MIPMAPを正しく生成できないので,要件から外れるわけだ。
![]() |
テクスチャ圧縮技術を選ぶポイントとは
Deeb氏は,「一言でテクスチャといっても,用途によって適する圧縮形式は違ってくる」と説明して,「Unreal Engine」系を使ったゲーム開発で用いる代表的なテクスチャ圧縮形式を紹介した。
![]() |
最も注意すべき点は,圧縮対象のテクスチャの値が,リニア空間の値なのか,それともsRGB色空間のものかを正しく判断することであると,「Super Duper Important!」(超マジで重要!)と強調する。
ここを間違えると,PBRベースのグラフィックスシステムと整合しなくなるので,意図しない色や階調が発生する原因となり,開発プロセスの後になってハマることになるという。
sRGB色空間で圧縮すべきなのは,PBR系素材ではランタイム時にリアルタイムライティングなどを行わない,以下の素材群だ。
- ベースカラー(アルベド)
- テクスチャ
- UIパーツ
- ロゴ
- 2Dスプライト
発光するエミッシブ要素,たとえば暗めの看板や,卓上のライト,ディスプレイの画面やLEDの発光などを含むテクスチャマップも,それほど高輝度に光らない部分は,sRGB色空間テクスチャで圧縮することもある。
PBRベースのグラフィックスシステムにおいては,ライティングやシェーディングの演算は,絶対にリニア数値空間(ガンマ1.0空間)で行うのが前提だ。
それならば,そもそも非線形な約2.2のガンマ補正を前提とするsRGB色空間を扱う必要はないのでは,と考える人もいるかもしれない。
しかしsRGB色空間は,人間の目が敏感な階調を優先して,整数8bit,256段階の階調にマッピングした色空間である。いうなればsRGB色空間は,階調圧縮技術の一部であり,便利なのだ。
しかも,多くのテクスチャ圧縮形式は「_SRGB」(属性/フラグ)を付けて圧縮すれば,HDRレンダリングや,リニア空間での演算が必要時に,このsRGB色空間で圧縮済みのテクスチャにアクセスした場合,GPUであればハードウェアでほぼ無償でリニア空間の値として取り出せる。取り扱いさえ間違いなければ,メリットの方が大きいのだ。
さて,Deeb氏が「逆にsRGB色空間で圧縮していけないもの」として挙げたのは,データやパラメータ,ベクトルといった数値系テクスチャである。具体的には以下のとおり。
- 微細な凹凸量を記録したハイトマップテクスチャ(H)
- 法線ベクトルを記録した法線マップ
- PBR系のパラメータとして定番のラフネス(R)
- アンビエントオクルージョン(O)
- 金属度(メタリック)(M)
- HDRテクスチャ
![]() |
リニア空間の値は,小数点以下の値や8bitの0〜255では収まらない範囲の数値を含むことがある。そのため,先述したデータは,16bit以上の整数形式や浮動小数点形式で表現して,それらに対応するテクスチャ圧縮技術を選択する必要があるのだ。
補足すると,浮動小数点テクスチャやHDRテクスチャが圧縮できるようになったのは,DirectX 11世代のGPUが「BC6H」形式がサポートしてから。
ゲーム機の世代でいうなら,PlayStation 4やXbox Oneからとなる。Nintendo Switchは,GPU世代的にはBC6Hに対応していたが,同機がモバイル寄りの設計だったこともあり,メモリバス帯域を節約できるテクスチャ圧縮技術「ASTC」(Adaptive Scalable Texture Compression,HDRプロファイルあり)を採用するケースが多かったという。
テクスチャ圧縮技術ソムリエがおすすめする「本日のメニュー」
セッション終盤では,Deeb氏が,自らを「テクスチャ圧縮ソムリエ」に見立て,用途別のおすすめフォーマットを紹介した。次のスライドがメニューである。
![]() |
画質重視なら,BC7がおすすめ。ただし,低品質でも問題ないのであればメモリバス帯域を節約できるBC1(DXT1)がおすすめとのこと。
![]() |
αチャンネル(透明度)やグレースケール画像のハイトマップ(H)といったシングルチャンネルのテクスチャには,BC4が適するとDeeb氏は説明する。
BC4は,圧縮率が1/2固定と高いわけではないが,他のチャンネルの値に影響されずに圧縮できるので,グラデーションや補間品質が自然で美しい利点があるのだ。
HDRテクスチャは,先述のとおりBC6H一択だ。
また法線マップについては,Deeb氏はBC5が最適だと述べた。ただ,氏はその理由を述べなかったので,筆者から補足しよう。
BC5はかつてATI Technologies(現AMD)が「3Dc」という名称で開発,提供していた圧縮技術で,それがリネームのうえで業界標準となったものだ。
圧縮技術としては,BC4と同系統で,BC4の2チャンネル版という位置付けである。他のBCx系圧縮技術と違って,各チャンネルごとに独立した圧縮となるので,グラデーションの品質が高い。
圧縮率は,BC4と同じく1/2固定である。
処理効率を上げたい場合は,個別に分かれた複数のシングルチャンネルテクスチャを,1枚のテクスチャにまとめて(パッキング)圧縮することで,「品質は多少下がるが,処理効率は上がるのでお試しあれ」とDeeb氏。
たとえば,3〜4枚のシングルチャンネルテクスチャを,BC4で個別に圧縮するのではなく,各テクスチャを1枚のRGBAテクスチャの各チャンネルにまとめてから,BC7で圧縮するというテクニックだ。
![]() |
PBR系素材であれば,先述したラフネス(R),アンビエントオクルージョン(O),メタリック(M)のテクスチャに,ハイトマップ(H)も合わせて1枚のテクスチャにまとめてから,BC7で圧縮する最適化の手法である。
また補足しておくと,BC7では,RGBチャンネル間の相関性を応用して圧縮するので,独立したシングルチャンネルのテクスチャは多少の圧縮劣化が発生する可能性がある。
それでも,BC1よりは品質はだいぶマシ。また,αチャンネルは独立して圧縮するため,劣化はしにくい。
ハイトマップ(H)は,視差遮蔽マッピングに応用することが多いので,品質劣化が目立つ。それに対してラフネス,アンビエントオクルージョン,メタリックは,ライティングパラメータに過ぎないので,多少劣化しても描画結果への影響は目立ちにくい。
そのため,BC7で圧縮する場合は,R/O/MをRGBに,Hはαに入れるケースが多いそうだ。
さらにDeeb氏は,応用編として,2D画像や2Dマスク的な画像テクスチャを,ベクター画像のような解像度に依存しない品質で描画できる「SDF」(Signed Distance Field,符号付き距離場)テクスチャの圧縮や,透明部分を含んだテクスチャのカラーブリーディング現象の防ぎ方も説明した。
![]() |
まず,SDFテクスチャについては,通常の4チャンネルテクスチャとしてBC7で圧縮しても問題なかったとのことだ。
![]() |
透明部分を含んだテクスチャのカラーブリーディング現象は,ちょっと手間がかかるとのこと。
テクスチャブリーディングとは,透明部分を含んだテクスチャのMIPMAPを読み出すと,テクスチャ圧縮による画質劣化やそのほかの弊害によって,想定外の色を読み出してしまう現象である。
この問題を回避する方法としてDeeb氏は,Flaming Pear製のPhotoshop用プラグイン「Solidify」フィルタを活用する方法が定番であると述べていた。
Solidifyプラグインは,処理対象テクスチャの透明部分(αチャンネル)を,マスクテクスチャ(型抜きテクスチャ)として,RGBカラーテクスチャから分離する。
そのうえでSolidifyは,カラーテクスチャの最外周テクセルの色(≒輪郭色)で,透明として扱っていた領域全体を塗ってしまうのだ。
輪郭色がはみ出したRGB画像が描かれそうだが,実際の描画時には,先に分離したマスクテクスチャを適用して切り出すので,想定どおりの映像が得られるという理屈である。
![]() |
このテクニックのポイントは,テクスチャフィルタが低解像度MIPMAPを読み出すときに,UV座標が微妙にずれたテクセルを参照しても,Solidifyフィルタで塗りつぶした輪郭色を読み出すという点だ。
その結果,見た目上の透明部分は保たれて,意図しない色がテクスチャの輪郭周辺に出現するカラーブリーディング現象を抑止できる。
最後はやや応用的な内容になったものの,講演終了時には会場から大きな拍手が起こっていた。
![]() |
- この記事のURL:

















![画像ギャラリー No.002のサムネイル画像 / テクスチャ圧縮技術ソムリエが紹介する「テクスチャ圧縮技術の選び方」[GDC 2026]](/games/999/G999902/20260310070/TN/002.jpg)
![画像ギャラリー No.003のサムネイル画像 / テクスチャ圧縮技術ソムリエが紹介する「テクスチャ圧縮技術の選び方」[GDC 2026]](/games/999/G999902/20260310070/TN/003.jpg)
![画像ギャラリー No.004のサムネイル画像 / テクスチャ圧縮技術ソムリエが紹介する「テクスチャ圧縮技術の選び方」[GDC 2026]](/games/999/G999902/20260310070/TN/004.jpg)
![画像ギャラリー No.005のサムネイル画像 / テクスチャ圧縮技術ソムリエが紹介する「テクスチャ圧縮技術の選び方」[GDC 2026]](/games/999/G999902/20260310070/TN/005.jpg)
![画像ギャラリー No.006のサムネイル画像 / テクスチャ圧縮技術ソムリエが紹介する「テクスチャ圧縮技術の選び方」[GDC 2026]](/games/999/G999902/20260310070/TN/006.jpg)
![画像ギャラリー No.007のサムネイル画像 / テクスチャ圧縮技術ソムリエが紹介する「テクスチャ圧縮技術の選び方」[GDC 2026]](/games/999/G999902/20260310070/TN/007.jpg)
![画像ギャラリー No.008のサムネイル画像 / テクスチャ圧縮技術ソムリエが紹介する「テクスチャ圧縮技術の選び方」[GDC 2026]](/games/999/G999902/20260310070/TN/008.jpg)
![画像ギャラリー No.009のサムネイル画像 / テクスチャ圧縮技術ソムリエが紹介する「テクスチャ圧縮技術の選び方」[GDC 2026]](/games/999/G999902/20260310070/TN/009.jpg)
![画像ギャラリー No.010のサムネイル画像 / テクスチャ圧縮技術ソムリエが紹介する「テクスチャ圧縮技術の選び方」[GDC 2026]](/games/999/G999902/20260310070/TN/010.jpg)
![画像ギャラリー No.011のサムネイル画像 / テクスチャ圧縮技術ソムリエが紹介する「テクスチャ圧縮技術の選び方」[GDC 2026]](/games/999/G999902/20260310070/TN/011.jpg)
![画像ギャラリー No.012のサムネイル画像 / テクスチャ圧縮技術ソムリエが紹介する「テクスチャ圧縮技術の選び方」[GDC 2026]](/games/999/G999902/20260310070/TN/012.jpg)
![画像ギャラリー No.013のサムネイル画像 / テクスチャ圧縮技術ソムリエが紹介する「テクスチャ圧縮技術の選び方」[GDC 2026]](/games/999/G999902/20260310070/TN/013.jpg)
![画像ギャラリー No.014のサムネイル画像 / テクスチャ圧縮技術ソムリエが紹介する「テクスチャ圧縮技術の選び方」[GDC 2026]](/games/999/G999902/20260310070/TN/014.jpg)
![画像ギャラリー No.015のサムネイル画像 / テクスチャ圧縮技術ソムリエが紹介する「テクスチャ圧縮技術の選び方」[GDC 2026]](/games/999/G999902/20260310070/TN/015.jpg)
![画像ギャラリー No.016のサムネイル画像 / テクスチャ圧縮技術ソムリエが紹介する「テクスチャ圧縮技術の選び方」[GDC 2026]](/games/999/G999902/20260310070/TN/016.jpg)