ユーザ用ツール

サイト用ツール


opengl:texturefileformat

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
opengl:texturefileformat [2015/07/04 02:57]
oga [KTX]
opengl:texturefileformat [2015/07/04 03:11]
oga [ASTC]
行 2: 行 2:
  
  
-^ file format  ^  R  ^  RG  ^ RGB  ^ RGBA ^ sRGB  ^ mip  ^ cube ^ volume ^ array  ^  float           ^^^     int          ^^^ S3TC/DXT    ^ 3Dc      ^ BPTC     ^ ATITC   ^ PVRTC        ^^ ETC1    ^  ETC2  ^  ASTC      ^^ +^ file format  ^  R  ^  RG  ^ RGB  ^ RGBA ^ sRGB  ^ mip   ^ cube ^ volume ^ array  ^  float           ^^^     int          ^^^ S3TC/DXT    ^ 3Dc      ^ BPTC     ^ ATITC   ^ PVRTC        ^^ ETC1    ^  ETC2  ^  ASTC      ^^ 
-^  :::         ^ ::: ^  ::: ^ :::  ^ :::  ^ :::   ^ :::  ^ :::  ^  3D    ^  :::    16   ^ 32  ^  64  ^  8    16  ^  32  ^ BC1/BC2/BC3 ^ BC4/BC5  ^ BC6H/BC7 ^ :::      v1    ^ v2   ^ :::      EAC    2D  ^  3D  ^ +^  :::         ^ ::: ^  ::: ^ :::  ^ :::  ^ :::   ^ :::   ^ :::  ^  3D    ^  :::    16   ^ 32  ^  64  ^  8    16  ^  32  ^ BC1/BC2/BC3 ^ BC4/BC5  ^ BC6H/BC7 ^ :::      v1    ^ v2   ^ :::      EAC    2D  ^  3D  ^ 
-| DDS (.dds)    Y  |  Y    Y    Y    Y    |  Y   |  Y    Y      Y(e)  |  Y    |  Y  |  -    Y    Y    Y    Y          |        |        |  y(a)    y(b)  |  -    y(a)        |  Y    -   | +| DDS (.dds)    Y  |  Y    Y    Y    Y    |  Y    |  Y    Y      Y(d)  |  Y    |  Y  |  -    Y    Y    Y    Y          |        |        |  y(a)    y(b)  |  -    y(a)        |  Y    -   | 
-| KTX (.ktx)    Y  |  Y    Y    Y    Y    |  Y   |  Y    Y      Y      Y    |  Y  |  Y    Y    Y    Y    Y          |        |        |  Y      |  Y      Y    Y      |      |  Y    -   | +| KTX (.ktx)    Y  |  Y    Y    Y    Y    |  Y    |  Y    Y      Y      Y    |  Y  |  Y    Y    Y    Y    Y          |        |        |  Y      |  Y      Y    Y      |      |  Y    -   | 
-| PVR (.pvr)    Y  |  Y    Y    Y    Y    |  Y   |  Y    Y      Y      Y    |  Y  |  -    Y    Y    Y    Y          |        |        |  -      |  Y      Y    Y      |      |  Y    -   | +| PVR (.pvr)    Y  |  Y    Y    Y    Y    |  Y    |  Y    Y      Y      Y    |  Y  |  -    Y    Y    Y    Y          |        |        |  -      |  Y      Y    Y      |      |  Y    -   | 
-| PKM (.pkm)            |      |      |  -    |  Y   |  -    -      -      -    |  -  |  -    -    -    -    -          |        |  -        -      |  -      -    Y      |      |  -    -   | +| PKM (.pkm)            |      |      |  -    |  y(e) |  -    -      -      -    |  -  |  -    -    -    -    -          |        |  -        -      |  -      -    Y      |      |  -    -   | 
-| ASTC (.astc) |          |      |      |  -    |  -   |  -    y(d)  |  -      -    |  -  |  -    -    -    -    -          |        |  -        -      |  -      -    -      |      |  Y    Y   |+| ASTC (.astc) |          |      |      |  -    |  -    |  -    y(f)  |  -      -    |  -  |  -    -    -    -    -          |        |  -        -      |  -      -    -      |      |  Y    Y   | 
  
   * (a) = Qualcomm(ATI) のコンバータが FourCC を使って格納。おそらく独自仕様。元は Direct3DM 向け。Array 不可   * (a) = Qualcomm(ATI) のコンバータが FourCC を使って格納。おそらく独自仕様。元は Direct3DM 向け。Array 不可
   * (b) = PVRTC 独自仕様。FourCC で格納。Array 不可   * (b) = PVRTC 独自仕様。FourCC で格納。Array 不可
-  * (d) = ASTC の 3D BLOCK 圧縮のみ格納可能。 +  * (d) = DXGI_FORMAT 表現可能なフォーマットのみ Array を格納可能。DX10 拡張ヘッダ必須。 
-  * (e) = DXGI_FORMAT 表現可能なフォーマットのみ Array を格納可能。D3D10 拡張ヘッダ必須。+  * (e) = ETC1 のみ格納可能。 
 +  * (f) = ASTC の 3D BLOCK 圧縮のみ格納可能
  
  
行 123: 行 125:
  
 <code cpp> <code cpp>
 +enum {
 +    KTX_HEADER_MAGIC0     0x58544bab,
 +    KTX_HEADER_MAGIC1     0xbb313120,
 +    KTX_HEADER_MAGIC2     0x0a1a0a0d,
 +    KTX_HEADER_ENDIAN     0x04030201,
 +};
 +
 struct T_KTXHEADER {       // 64byte struct T_KTXHEADER {       // 64byte
     UI32    Identifier[3];     UI32    Identifier[3];
行 166: 行 175:
     * PVRTC-2 対応     * PVRTC-2 対応
     * データ並びが KTX 順     * データ並びが KTX 順
 +
 +<code cpp>
 +struct T_PVR3HEADER {   // 13x4 = 52
 +    unsigned int    Version;        // 'PVR' 0x03
 +    unsigned int    Flags;
 +    unsigned int    PixelFormat[2]; // ('argb',08080808) or (PVR3_FORMAT_*,00000000)
 +    unsigned int    ColorSpace;
 +    unsigned int    ChannelType;    // PVR3_CHANNELTYPE_
 +    unsigned int    Height;
 +    unsigned int    Width;
 +    unsigned int    Depth;          // >=1
 +    unsigned int    Surfaces;       // >=1 texture array
 +    unsigned int    Faces;          // >=1 cubemap
 +    unsigned int    MipMapCount;    // >=1
 +    unsigned int    MetaDataSize;
 +};
 +</code>
  
 <code> <code>
行 177: 行 203:
     * PVRTC-2 非対応     * PVRTC-2 非対応
     * データ並びが DDS 順     * データ並びが DDS 順
 +
 +
  
 <code> <code>
 ( ( ( width * height ) * mip ) * [cube_face or volume_depth] ) ( ( ( width * height ) * mip ) * [cube_face or volume_depth] )
 +</code>
 +
 +
 +<code cpp>
 +struct T_PVR2HEADER {
 +    unsigned int    hsize;      // == 52 == sizeof(T_PVR2HEADER)
 +    unsigned int    height;
 +    unsigned int    width;
 +    unsigned int    miplevel;   // mipcount-1 (0=single plane)
 +    unsigned int    tformat;    // 0x10 0x08 0x01  bit0-7=PVR2_FORMAT_, bit8-31= PVR2_FLAG_
 +    unsigned int    datasize;   // byte size (one surface size)
 +    unsigned int    bpp;        // bpp
 +    unsigned int    redmask;    // RedMask
 +    unsigned int    greenmask;  // GreenMask
 +    unsigned int    bluemask;   // BlueMask
 +    unsigned int    alphamask;  // AlphaMask
 +    unsigned int    magic;      // == 0x21525650  "PVR!"
 +    unsigned int    depth;      // surfaces (volume or cube)
 +};
 </code> </code>
  
行 203: 行 250:
  
 <code> <code>
-version 1.0+version 1.0  (header.version == 10)
 type: 0=ETC1-RGB, 1=ETC1-RGBA, 2=ETC1-RGB-MIP, 3=ETC1-RGBA-MIP type: 0=ETC1-RGB, 1=ETC1-RGBA, 2=ETC1-RGB-MIP, 3=ETC1-RGBA-MIP
  
-version 2.0+version 2.0  (header.version == 20)
 type: 0=ETC1_RGB, 1=ETC2_RGB, 2=ETC2_RGBA_OLD, 3=ETC2_RGBA, 4=ETC2_RGBA1, 5=ETC2_R, 6=ETC2_RG, 7=ETC2_SIGNED_R, 8=ETC2_SIGNED_RG type: 0=ETC1_RGB, 1=ETC2_RGB, 2=ETC2_RGBA_OLD, 3=ETC2_RGBA, 4=ETC2_RGBA1, 5=ETC2_R, 6=ETC2_RG, 7=ETC2_SIGNED_R, 8=ETC2_SIGNED_RG
 </code> </code>
行 236: 行 283:
  
  
 +
 +===== 更新 =====
 +
 +  * 2015/07/04 : 表を更新、ASTC format 追加、ktx, pvr の header 構造を追加。
  
  
opengl/texturefileformat.txt · 最終更新: 2015/07/04 03:11 by oga