ASTC (Adaptive Scalable Texture Compression) 圧縮テクスチャを三角形にロードする EbGL ベースの HTML アプリケーションを作成しています。ASTC を解析することにより、圧縮された ASTC 画像 (私の場合はリモート Web サーバー上にある可能性があります) の内部形式が「線形」であるか「srgb エンコード」であるかを知る方法が存在することを知りたいです。ヘッダ。取得した情報を使用してinternalFormat
、ASTC テクスチャを に渡すことができglCompressedTexImage2D()
ます。言い換えれば、例えば。内部フォーマットがASTC 圧縮イメージのヘッダーかどうCOMPRESSED_RGBA_ASTC_4x4_KHR
かを知りたいです。COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR
手がかりはありますか?
2 に答える
ASTC ファイルのヘッダーは、実際にはその内容を完全には説明していないようです。次元と、定数のように見えるいくつかの奇妙な「魔法の数」しかありません。
ファイル ヘッダーに関する情報: http://malideveloper.arm.com/downloads/Stacy_ASTC_white%20paper.pdf (4 ~ 5 ページ、さらに手がかりとして Mali Developer Center のコード サンプルも参照)。
ここで説明されている「マジック ナンバー」は単なる定数値です0x5CA1AB13
:
http://community.arm.com/thread/3981
Mali Developer Center フォーラムで質問してください。これらの人は非常に役に立ち、通常は非常に迅速に回答します。
編集: 外部リンクがダウンした場合のヘッダー形式:
struct astc_header
{
uint8_t magic [ 4 ];
uint8_t blockdim_x;
uint8_t blockdim_y;
uint8_t blockdim_z ;
uint8_t xsize [ 3 ];
uint8_t ysize [ 3 ];
uint8_t zsize [ 3 ];
};
ASTC ヘッダーにはそのような情報はありません。おそらく、.srgb.astc などのファイル名拡張子を試すことができます。Khronos の ASTC データ用の代替ストレージ コンテナーである KTX を使用すると、好きなキーと値のペアを追加できますが、この場合は glInternalFormat で十分です。
つまり、データを sRGB (非線形ガンマ) として ASTC ファイルに保存する場合、データを読み取るときに COMPRESSED_RGBA_ASTC_4x4_KHR または COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR を設定することで、データを非線形ガンマまたは線形ガンマとして読み取るかどうかを選択できます。つまり、sRGB 性はおそらくファイル形式のプロパティではなく、テクセル読み取り操作および/またはグラフィックス パイプラインのプロパティと見なされるべきです。適切な種類を使用して、必要な出力スタイルを生成します。