1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     tpl_PackagerType.h
4 
5   Copyright (C)2010 Nintendo Co., Ltd.  All rights reserved.
6 
7   These coded instructions, statements, and computer programs contain
8   proprietary information of Nintendo of America Inc. and/or Nintendo
9   Company Ltd., and are protected by Federal copyright law.  They may
10   not be disclosed to third parties or copied or duplicated in any form,
11   in whole or in part, without the prior written consent of Nintendo.
12 
13   $Rev: 24687 $
14  *---------------------------------------------------------------------------*/
15 
16 #ifndef NN_TPL_CTR_TPL_PACKAGERTYPES_H_
17 #define NN_TPL_CTR_TPL_PACKAGERTYPES_H_
18 
19 
20 namespace nn { namespace tpl { namespace CTR {
21 
22 // 最大のMipMapレベル
23 #define MAX_MIPMAPLEVEL     8       // 1024×1024dot
24 
25 /*!
26     @brief    GPUのテクスチャフォーマットを表す列挙型。
27 
28     各フォーマットについて、0xf との論理和をとることで
29     PICA のレジスタ(0x8e[3:0] など)に設定可能な値を定義しています。
30     (TEXFMT_REF, TEXFMT_UNSUPPORT を除く)
31 */
32 enum CtrTexFormat
33 {
34     TEXFMT_RGBA8888 = 0,        //!< R:8bit / G:8bit / B:8bit / A:8bit
35     TEXFMT_RGB888   = 1,        //!< R:8bit / G:8bit / B:8bit
36     TEXFMT_RGBA5551 = 2,        //!< R:5bit / G:5bit / B:5bit / A:1bit
37     TEXFMT_RGB565   = 3,        //!< R:5bit / G:6bit / B:5bit
38     TEXFMT_RGBA4444 = 4,        //!< R:4bit / G:4bit / B:4bit / A:4bit
39     TEXFMT_LA88     = 5,        //!< Luminance:8bit / Alpha:8bit
40     TEXFMT_HL8      = 6,        //!< R:8bit / G:8bit
41     TEXFMT_L8       = 7,        //!< Luminance:8bit
42     TEXFMT_A8       = 8,        //!< Alpha:8bit
43     TEXFMT_LA44     = 9,        //!< Luminance:4bit / Alpha:4bit
44     TEXFMT_L4       = 10,       //!< Luminance:4bit
45     TEXFMT_A4       = 11,       //!< Alpha:4bit
46     TEXFMT_ETC1     = 12,       //!< ETC1圧縮フォーマット
47     TEXFMT_ETC1_A4  = 13,       //!< Alpha付きETC1圧縮フォーマット
48 
49     TEXFMT_SHADOW   = 0x10,     //!< shadowテクスチャ(unsigned int)
50     TEXFMT_GAS      = 0x20,     //!< gas用テクスチャ(unsigned short)
51     TEXFMT_REF      = 0x30,     //!< 1次元テクスチャ(float)
52 
53     TEXFMT_UNSUPPORT = 0xff,    //!< 非サポートフォーマットを表す識別子。
54 
55     TEXFMT_ForceInt32 = 0x7fffffff
56 };
57 
58 /*!
59     @brief    一枚のテクスチャを表すデータ
60 
61     このデータ構造体はテクスチャパッケージ内に含まれているデータの構造を示しています。
62     この構造体のサイズは意図して32byteにしています。
63 */
64 struct CtrTextureInfo
65 {
66     unsigned int        filePathOffset;     //!< ファイル名へのオフセット(ファイルの先頭から)
67     unsigned int        texDataSize;        //!< 画像データのサイズ
68     unsigned int        texDataOffset;      //!< 画像データへのオフセット(データ領域の先頭から)
69     CtrTexFormat        texFormat;          //!< フォーマット
70     unsigned short      width;              //!< 幅
71     unsigned short      height;             //!< 高さ
72     unsigned char       mipLevel;           //!< ミップマップの枚数
73     unsigned char       type;               //!< 0: Cube / 1: 1D / 2: 2D
74     unsigned short      cubeDir;            //!< 0: x / 1:-x / 2: y / 3: -y / 4: z / 5: -z
75     unsigned int        bitmapSizeOffset;   //!< 各MipMapでの画像サイズの配列へのオフセット。実際のオフセットの1/4が代入される。
76     unsigned int        srcFileTime;        //!< 入力画像ファイルのタイムスタンプ(変更の確認用)
77 };
78 
79 #define CTR_TEXTURE_PACKAGE_VERSION     1
80 
81 
82 }}} // namespace
83 
84 
85 #endif  // ifndef NN_TPL_CTR_TPL_PACKAGERTYPES_H_
86