KTX フォーマット: Khronos テクスチャ コンテナーの完全ガイド
KTX (Khronos Texture) は、Khronos Group によって開発および保守されているテクスチャ コンテナ形式の公式オープン スタンダードです。 KTX は、OpenGL、OpenGL ES、Vulkan などの最新のグラフィックス API 向けに特別に設計されたロイヤリティフリーのベンダー中立形式であり、さまざまなプラットフォームやアプリケーション間で圧縮テクスチャを保存および転送するための標準化された方法を提供します。従来の OpenGL アプリケーション用の KTX1 と最新の Vulkan ベースのワークフロー用の KTX2 という 2 つのメジャー バージョンを備えた KTX は、プロフェッショナルなグラフィックス開発におけるテクスチャ アセット パイプラインのバックボーンとして機能します。
KTXフォーマットとは何ですか?
KTX は、グラフィックス ハードウェアで直接利用できる方法でテクスチャ データを保存するように設計されたコンテナ形式です。 PNG や JPEG などの画像形式とは異なり、KTX は GPU テクスチャの読み込み用に特に最適化されており、ETC、ASTC、BCn、PVRTC などのさまざまな圧縮形式をサポートしています。この形式には、テクスチャを適切に解釈するために不可欠なメタデータが含まれているため、クロスプラットフォームのグラフィックス アプリケーションに最適です。
この形式はもともと、さまざまなプラットフォームや API にわたるテクスチャ圧縮形式の断片化に対処するために作成されました。 KTX が登場する前は、開発者は DirectX の DDS、PowerVR の PVR、およびさまざまなプラットフォーム固有のフォーマットなど、複数の独自フォーマットを処理する必要がありました。 KTX は、直接 GPU 読み込み機能を備えた、OpenGL、OpenGL ES、および Vulkan にわたって機能する統合ソリューションを提供します。
KTX はその導入以来大幅に進化しており、KTX2 は機能と機能の点で大きな進歩を遂げています。新しいバージョンでは、Basis Universal などの超圧縮スキームのサポート、データ フォーマット記述子 (DFD) によるメタデータ処理の改善、テクスチャ配列、3D テクスチャ、キューブマップなどの最新のテクスチャ機能のサポートが追加されています。
KTXフォーマットの主な特徴
クロノススタンダード
幅広い業界での採用とクロスプラットフォーム互換性を保証するクロノス グループの公式標準
フォーマットに依存しない
ETC、ASTC、BCn、PVRTC、非圧縮フォーマットなど、ほぼすべてのテクスチャ圧縮フォーマットをサポート
豊富なメタデータ
方向、色空間、圧縮設定、カスタムのキーと値のペアを含む包括的なメタデータのサポート
完全なミップマップのサポート
ミップマップ チェーン、テクスチャ配列、3D テクスチャ、キューブマップのネイティブ サポート
高度なテクスチャ タイプ
テクスチャ配列、3D テクスチャ、キューブマップ、およびその他の高度なテクスチャ タイプのサポート
クロスプラットフォーム
Windows、macOS、Linux、iOS、Android、および Web プラットフォーム間でシームレスに動作します
KTXバージョン比較
KTX1 と KTX2 の違いを理解することは、アプリケーションに適切な形式を選択するために重要です。
KTX1 (レガシー)
OpenGL および OpenGL ES アプリケーション用に設計されたオリジナルの KTX 形式。 OpenGL テクスチャ パラメータに基づいたシンプルな構造。
KTX1 は、単純なヘッダー構造を使用し、その後にキーと値のデータ、そして画像データが続きます。古い OpenGL バージョンと互換性があり、基本的なテクスチャ ストレージ機能を提供します。まだ広くサポートされていますが、KTX2 の高度な機能がありません。
KTX2(モダン)
Vulkan および次世代グラフィックス アプリケーション向けに設計された最新の KTX フォーマット。強化された機能と超圧縮のサポート。
KTX2 では、Basis Universal 超圧縮、データ フォーマット記述子 (DFD)、効率的なデータ アクセスのためのレベル インデックス、テクスチャ配列と 3D テクスチャのサポートの向上など、大幅な改善が行われています。新しいプロジェクトにはこれをお勧めします。
サポートされている圧縮形式
KTX はさまざまな圧縮形式のコンテナとして機能するため、非常に多用途です。
ETC (エリクソン テクスチャ圧縮)
モバイル デバイス向けの標準圧縮。RGB 圧縮には ETC1、RGBA 圧縮には ETC2
ASTC (適応型スケーラブル テクスチャ圧縮)
4x4 から 12x12 ピクセルまでのさまざまなブロック サイズをサポートする最新の高品質圧縮
BCn (ブロック圧縮)
デスクトップ ゲームおよび Windows アプリケーション用の BC1 ~ BC7 を含む DirectX 圧縮形式
PVRTC (PowerVR テクスチャ圧縮)
iOS および組み込みシステム向けの PowerVR 固有の圧縮 (2bpp および 4bpp バリアント)
非圧縮フォーマット
RGB8、RGBA8、さまざまな HDR フォーマットなどの標準の非圧縮フォーマット
KTX ファイル構造
KTX ファイルは、次の 3 つの主要コンポーネントからなる構造化フォーマットに従います。
ファイルヘッダー
フォーマット識別、バージョン情報、および寸法やフォーマットなどの基本的なテクスチャ メタデータが含まれます
キーと値のデータ
追加のテクスチャ情報のカスタム キーと値のペアを含むメタデータ セクション
画像データ
ミップマップ レベルと配列レイヤーによって編成された実際の圧縮または非圧縮テクスチャ データ
KTX1 ヘッダー構造
KTX1 は、OpenGL テクスチャ パラメータに基づいた 64 バイトのヘッダーを使用します。
識別子(12バイト)
「«KTX 11»\r\n\x1A\n」 - 検証用のファイル形式識別子
エンディアンネス(4バイト)
バイトオーダーを指定します: リトルエンディアンの場合は 0x04030201、ビッグエンディアンの場合は 0x01020304
glType (4バイト)
OpenGL データ型 (例: GL_UNSIGNED_BYTE) - 圧縮形式の場合は 0
glFormat (4バイト)
OpenGL 形式 (GL_RGB など) - 圧縮形式の場合は 0
glInternalFormat (4バイト)
OpenGL 内部形式 (例: GL_COMPRESSED_RGB8_ETC2)
glBaseInternalFormat (4バイト)
古い OpenGL バージョンとの互換性のための基本 OpenGL 形式
ピクセル幅 (4 バイト)
ピクセル単位のテクスチャ幅
ピクセル高さ (4 バイト)
ピクセル単位のテクスチャの高さ (1D テクスチャの場合は 0)
ピクセル深度 (4 バイト)
ピクセル単位のテクスチャ深度 (2D テクスチャの場合は 0)
配列要素の数 (4 バイト)
配列要素の数 (非配列テクスチャの場合は 0)
顔の数 (4 バイト)
面の数 (キューブマップの場合は 6、通常のテクスチャの場合は 1)
ミップマップレベルの数 (4 バイト)
ミップマップ レベルの数 (ミップマップがない場合は 1)
bytesOfKeyValueData (4 バイト)
キーと値のデータ セクションのサイズ (バイト単位)
KTX2構造の改善
KTX2 には、機能を強化するためにいくつかの新しい構造コンポーネントが導入されています。
拡張ヘッダー
バージョン情報、フォーマット識別子、データサイズインジケーターを備えたヘッダー構造の改善
レベルインデックス
特定のミップマップ レベルとテクスチャ データに迅速にアクセスするための効率的なインデックス システム
データフォーマット記述子 (DFD)
OpenGL形式定数に代わる包括的な形式記述システム
キーと値のデータ
国際化と複雑なデータ型をサポートする強化されたメタデータ システム
超圧縮のグローバルデータ
Basis Universal などの超圧縮スキームのグローバル データ
メタデータと Key-Value データ
KTX ファイルには、キーと値のデータ セクションを通じて広範なメタデータを含めることができます。
テクスチャの方向
適切なレンダリングのためにテクスチャの方向(左上、右下など)を指定します。
フォーマット情報
圧縮形式、品質設定、エンコードパラメータの詳細
ライター情報
KTX ファイルを作成したツールまたはアプリケーションに関する情報
圧縮設定
使用される特定の圧縮パラメータと品質設定
色空間
sRGB、リニア、HDR カラー プロファイルを含む色空間情報
KTX 開発ワークフロー
KTX テクスチャの作成と管理には、次の主要な段階が含まれます。
ソースアセットの準備
適切なサイズとカラープロファイルを備えた高品質のソース画像を準備します
フォーマットの選択
ターゲット プラットフォームと品質要件に基づいて適切な圧縮形式を選択します
テクスチャ圧縮
toktx やアセット パイプラインなどのツールを使用して、ソース画像を KTX 形式に圧縮します
メタデータの追加
方向、色空間、カスタム プロパティなどの適切なメタデータを追加します。
ファイルの検証
KTX ファイルのターゲット プラットフォームとの互換性と正確性を検証します。
アプリケーションの統合
KTX のロードと処理をグラフィックス アプリケーションに統合
KTX 形式の主な利点
業界標準
長期サポートと幅広い業界での採用を保証するクロノス グループ標準
フォーマットの柔軟性
事実上あらゆる圧縮形式をサポートし、将来性と多用途性を実現
豊富なメタデータ
適切なテクスチャの解釈と管理のための包括的なメタデータ システム
高度な機能
配列、3D テクスチャ、超圧縮などの最新のテクスチャ機能のサポート
クロスプラットフォーム
変更や変換を行わずに、すべての主要なプラットフォームで動作します
将来に備えて
KTX2 と超圧縮のサポートにより、将来のグラフィックス テクノロジとの互換性が確保されます。
一般的な使用例
Vulkan アプリケーション
直接 GPU ロード機能を備えた最新の Vulkan アプリケーションの主要フォーマット
OpenGL アプリケーション
OpenGL および OpenGL ES アプリケーション用のクロスプラットフォーム テクスチャ形式
WebGL アプリケーション
KTX テクスチャ ローダーと WebGL を介した Web ベースのグラフィック アプリケーション
ゲーム開発
クロスプラットフォームのテクスチャ アセット パイプラインを使用したプロフェッショナルなゲーム開発
VR/ARアプリケーション
効率的なテクスチャ読み込みを必要とする仮想現実および拡張現実アプリケーション
モバイル開発
最適化されたテクスチャ圧縮フォーマットを備えた iOS および Android アプリケーション
KTX と他の形式
KTX を他のテクスチャ フォーマットと比較する方法を理解します。
KTX vs DDS
KTX はクロスプラットフォームで API に依存しないのに対し、DDS は DirectX 固有で Windows に重点を置いています。
KTX vs PVR
KTX は複数の圧縮形式をサポートし、PVR は PowerVR GPU と iOS 向けに最適化されています。
KTX1 対 KTX2
KTX2 は、従来の KTX1 に比べて超圧縮、より優れたメタデータ、最新の機能を提供します。
KTX vs ベーシスユニバーサル
KTX はコンテナ形式ですが、Basis Universal は KTX2 に保存できる圧縮形式です。
開発ツールとリソース
toktxツール
さまざまな画像形式から KTX ファイルを作成および変換するための公式コマンドライン ツール
KTX-ツールパッケージ
toktx、ktxinfo、ktxcheck、その他のユーティリティを含む完全なツール スイート
バルカンSDK
公式 Vulkan SDK には、KTX サポートと読み込みユーティリティが含まれています
OpenGL ライブラリ
KTX サポートが組み込まれたさまざまな OpenGL ライブラリとフレームワーク
Unity KTX のサポート
Unity エンジンは、プラグインとアセット パイプラインを介した KTX テクスチャの読み込みをサポートします
アンリアル エンジン KTX
Unreal Engine は、テクスチャ圧縮設定を通じて KTX テクスチャ サポートを提供します
KTX 開発のベスト プラクティス
新しいプロジェクトには KTX2 を使用し、最新の機能と超圧縮機能を活用してください。
ターゲット プラットフォームに基づいて適切な圧縮形式を選択します: モバイルには ETC、デスクトップには BCn
包括的なメタデータを含めて、プラットフォーム間でテクスチャを適切に解釈できるようにします。
互換性の問題を回避するために、開発の初期段階でターゲット ハードウェア上の KTX ファイルを検証します。
適切なミップマップ設定を使用して、さまざまな表示距離でのレンダリング パフォーマンスを最適化します。
最適なファイル サイズでのクロスプラットフォーム展開には、Basis Universal スーパー圧縮の使用を検討してください。
実際のターゲット ハードウェアとネットワーク条件を使用してテクスチャ読み込みパフォーマンスをテストします。
サポートされていない形式や機能に対する適切なエラー処理とフォールバック メカニズムを実装する
移行およびアップグレードのパス
KTX への移行またはバージョン間でのアップグレードのガイドライン:
KTX1 から KTX2 への移行
toktx を --ktx2 フラグとともに使用して、従来の KTX1 ファイルを最新の KTX2 形式に変換します
DDSからKTXへの変換
toktx またはテクスチャ変換ツールを使用して、DirectX テクスチャをクロスプラットフォーム KTX 形式に移行します
PVRからKTXへの変換
iOS 固有の PVR テクスチャを KTX に変換して、クロスプラットフォームの互換性を実現
基本ユニバーサル圧縮の追加
toktx を Basis Universal オプションとともに使用して、KTX2 ファイルに超圧縮を追加します
KTX2を選ぶ理由
KTX2 には、KTX1 や他の形式に比べて次のような大きな利点があります。
基本ユニバーサルサポート
Basis Universal 超圧縮のネイティブ サポートにより、ユニバーサル テクスチャの展開が可能になります
強化された圧縮
最新の圧縮スキームによる圧縮率と品質の向上
超圧縮スキーム
Basis Universal を超えたさまざまな超圧縮フォーマットのサポート
データフォーマット記述子
従来の OpenGL 定数を置き換える包括的な形式記述システム
将来性のある設計
最新および将来のグラフィックス API および圧縮テクノロジー向けに設計
結論
KTX 形式はクロスプラットフォームのテクスチャ管理の業界標準を表し、開発者にテクスチャ アセット パイプラインの堅牢かつ柔軟で将来性のあるソリューションを提供します。 OpenGL アプリケーションに従来の KTX1 を使用する場合でも、Vulkan ベースの開発に最新の KTX2 を使用する場合でも、KTX はプロフェッショナルなグラフィックス開発に必要なツールと機能を提供します。
グラフィックス業界がクロスプラットフォーム開発とより高度な圧縮テクノロジーに向けて進化し続ける中、Basis Universal 超圧縮と最新の機能をサポートする KTX2 は、テクスチャ管理の第一の選択肢としての地位を確立しています。 KTX 形式とその機能を理解することは、最新のグラフィックス アプリケーションを扱う開発者にとって不可欠です。
詳細な資料とリソース
以下の信頼できるリソースで知識を広げてください。
- KTX仕様 - 公式の KTX フォーマット仕様とドキュメント
- KTX-Tools GitHub リポジトリ - 公式 KTX ツールとソフトウェア ライブラリのソース コード
- Vulkan テクスチャの読み込み - Vulkan SDK およびテクスチャ読み込みユーティリティ
- 基本ユニバーサル超圧縮 - KTX2超圧縮の基本ユニバーサル圧縮
- OpenGL テクスチャ圧縮 - OpenGL テクスチャ圧縮の概要とベスト プラクティス
- クロノス開発者リソース - Khronos Group が提供する包括的な開発者リソース