Federação sigma renderware graphics logo sigma sigmaco renderware, criterion software, file format, gta, gta san andreas, gta vice city, manhunt, txd texture dictionary, literalmente dicionário de textura, frequentemente referido apenas como txd, é um arranjo conveniente para armazenamento de texturas do formato renderware stream (. Rws). Este arquivo é apenas um arquivo. Rws, o formato binário de recurso do middleware renderware, contendo apenas um subconjunto de aninhamento de texturas, representando uma estrutura homônima na api renderware.

Texture Dictionary (.txd)

Texture Dictionary, literalmente Dicionário De Textura, frequentemente referido apenas como TXD, é um arranjo conveniente para armazenamento de texturas do formato RenderWare Stream (.rws). Este arquivo é apenas um arquivo .rws, o formato binário de recurso do middleware RenderWare, contendo apenas um subconjunto de aninhamento de texturas, representando uma estrutura homônima na API RenderWare.

TXDs são arquivos de fácil localização devido ao uso da extensão de nome de arquivo .txd, podendo ser observados em diretórios ou pacotes de games populares, tais como GTA III, GTA Vice City, GTA San Andreas, e Manhunt.

Especificação

Um arquivo TXD é uma representação binária, escrevível a e legível de disco, de um RwTexDictionary, uma estrutura de dados da API de RenderWare 3. Dentro desta estrutura, encontra-se descritores de texturas e imagens cujo a grade de pixel pode ser empacotado ou indexado (a.k.a. paletizado). Tais imagens podem armazenar dados em formato genérico mas, visando melhor desempenho computacional, tendem a armazenar de dados optimizados para um renderizador premeditado; diz-se de imagem dependente de dispositivo.

O que é chamado de formato genérico nada mais é que um pixel representado linearmente entre 1 a 4 canais (isto é, em R, RG, RGB ou RGBA), com determinada quantidade de bits de precisão e qualidade, que ocorrem em 1, 4, 5, 8 para cada canal. Já o chamado formato optimizado, na maioria das incidências, é um formato de comprimido em blocos denominado S3TC e popularmente conhecido sobre o nome DXT. Considerando que todas as versões de PC da RenderWare que estudamos usavam Direct3D e OpenGL.

A seguir, descreveremos uma estrutura binária de um arquivo TXD exportado para um renderizador Direct3D, numa abordagem mais habitual a um programador. Tentamos usar offsets mas não funcionou bem devido as capacidades expansivas do formato RenderWare, que parece um fita bidimensional de Turing.

struct
{
    uint32_t txdId; // 0x16
    uint32_t txdLen;
    uint32_t txdVer;
    struct
    {
        uint32_t txdStrucId; // 0x01
        uint32_t txdStrucLen;
        uint32_t txdStrucVer;
        struct
        {
            uint16_t nofTextures;
            uint16_t deviceId;
        } txdStruc;
        
        // array of native textures, if is there anyone. The following block repeats as much as rws.txd.struc.nofTextures determine.
        struct
        {
            uint32_t texNatId; // 0x15
            uint32_t texNatLen;
            uint32_t texNatVer;
            struct
            {
                uint32_t texNatStrucId; // 0x01
                uint32_t texNatStrucLen;
                uint32_t texNatStrucVer;
                struct
                {
                    int32_t deviceId;
                    int32_t filterAndAddr;
                    int8_t name;
                    int8_t maskName;
                    
                    // Here we are working with Direct3D-dependent raster.
                    uint32_t rasterFormat;
                    int32_t rasterD3dFormat;
                    uint16_t rasterWidth;
                    uint16_t rasterHeight;
                    uint8_t rasterDepth;
                    uint8_t rasterNumMipLevels;
                    uint8_t rasterType;
                    uint8_t rasterFlags; // This raster has an alpha component, automipmapgen, etc
                } texNatStruc;
                
                // colormap, indexmap, etc
                
                // extension
                uint32_t texNatExtId; // 0x03
                uint32_t texNatExtLen;
                uint32_t texNatExtVer;
                struct
                {
                    // extension entries
                } texNatExt;
            } texNat;
        } texture[rws.txd.txdStruc.nofTextures];
        
        // extension
        uint32_t txdExtId; // 0x03
        uint32_t txdExtLen;
        uint32_t txdExtVer;
        struct
        {
            // extension entries
        } txdExt;
    } txd;
} rws;

NOTA: A descrição do formato não está completa, necessitando de ser continuada.

Faça login e contribua para a base de conhecimento da Federação SIGMA fornecendo novas informações e recursos a respeito do conteúdo tratado aqui.

Responses

Translate »