Panda3D/Manual/Compressão de Texturas: diferenças entre revisões

Origem: Wikilivros, livros abertos por um mundo aberto.
[edição não verificada][edição não verificada]
Conteúdo apagado Conteúdo adicionado
Sem resumo de edição
Sem resumo de edição
Linha 31: Linha 31:
'''Formato de arquivo DDS'''
'''Formato de arquivo DDS'''


In addition to Panda's native TXO file format, there is a fairly standard format called DDS, which has some of the same properties of TXO. Like TXO, you can store pre-compressed images in a DDS file. The biggest advantage of the DDS file format is that there are already several tools available on the internet to generate DDS files, including GIMP and Photoshop plugins. (Note, however, that loading DDS files is a new feature of Panda, and these files are not supported in Panda versions before 1.6.)
Em adição ao formato nativo TXO, existe um relativo padrao chamado DDS, que tem as mesmas propriedades do TXO. Como o TXO voce pode armazenar imagens pre-comprimidas em um arquivo DDS. A maior vantagem do formato DDS é que existem varias ferramentas disponiveis na internet que geram arquivos DDS, incluindo o GIMP e plugins Photoshop. Note contudo que o carregamento de arquivos DDS é uma nova habilidade do panda, e esse arquivos nao eram suportados antes da versai 1.6)


Gerar seus proprios arquivos DDS tem varias vantagens; a maior dentre elas é que voce tem controle total sobe os artefatos de compressao de sua textura. Contudo existem os mesmos problemas de protabilidade que armazenar imagens de texturas pre-comprimidas em arquivos TXO: existe a possibilidade que algumas placas de video nao reconheçam a compressao de textura que voce usou, caso em que ela simplesmente nao vai carregar.
Generating your own DDS files has several advantages; chief among them is that you have complete control over the compression artifacts of your texture. However, it has the same portability issues as storing pre-compressed texture images in TXO files: there is a possibility some graphics cards don't support the texture compression you have used, in which case it simply won't load.
Texture cache


'''Texture cache'''
There is a compromise between dynamic compression and pre-compressed textures: you can ask Panda to compress textures on the fly, and then save the resulting compressed image to a TXO file on disk. The next time you load that particular texture, it will load quickly from its TXO file. Since the TXO file was generated by the user's graphics driver, it will presumably use a supported compression algorithm.


Existe um compromisso enre compressao dinamica e texturas pre-comprimidas: voce pode pedir ao panda que comprima as texturas na hora, e depois salvar a imagem comprimida resultante para um arquivo TXO no disco. A proxima vez que voce carregar aquela textura particular, ela carregara rapidamente de seu arquivo TXO. Ja que o arquivo TXO foi gerado pelo driver de video do usuario final, ela vai presumidamente usar um algoritmo de compressao suportado.
To enable this feature, simply insert the following lines in your Config.prc file:

Para habilitar essa habilidade, simplesmente insira as seguintes linhas no seu arquivo Config.prc:


compressed-textures 1
compressed-textures 1
Linha 44: Linha 45:
model-cache-compressed-textures 1
model-cache-compressed-textures 1


Where model-cache-dir specifies any folder on the disk (it will be created if it doesn't already exist). Note that the model-cache-dir may already be specified; the default distribution of Panda specifies a model-cache to speed up loading bam files.
Onde model-cache-dir especifica qualquer pasta no disco ( ela sera criada se nenhuma existir ). Note que model-cache-dir ja pode ter sido especificado; a distribuição padrão do panda especifica o model-cache para agilizar o carregamento de arquivos BAM.


Like DDS file format, the model-cache-compressed-textures variable is a new feature in Panda, and isn't available in versions prior to 1.6.
Como o formato de arquivo DDS, a variavel model-cache-compressed-textures é uma nova habilidade do panda, e não existia antes da versao 1.6

Revisão das 22h11min de 8 de novembro de 2009

Voce deve estar familiar com formatos de imagem como JPEG, que pode comprimir dados de imagem dramaticamente e fazer arquivos de imagem muito menores do que eles seriam, em troca de sacrificar um pouco da qualidade da imagem original.

Compressão JPEG apenas é aplicavel ao tamanho da imagem em disco, contudo, assim que que vice carregar uma imagem de textura na memoria, seja ela vindo em JPEG, PNG ou TGA, elas sempre ocupam a mesma quantidade de memoria na sua placa de video ( baseada no tamanho de suas texturas).

Porem existe uma opção diferente, para comprimir imagens de textura dentro da memoria. A maioria das placas de video pode usar varios algoritmos de compressao durante o momento de execução para renderizar diretamente a textura que estava comprimida dentro da memoria. Isso é chamado redução DXT. Não é muti como a compressao JPEG internalmente, mas voce pode pensar nela da mesma forma. Elas possuem algumas coisas em comum: elas reduzem o tamanho da imagem drasticamente ( 4 ou ate 8 vezes menor ), e elas sacrificam parte da qualidade da imagem.

Compressao da textura durante a execução

A forma mais facil de habilitar a compressao de imagens de textura é colocar o seguinte no seu arquivo Config.prc:

compressed-textures 1

Isso falará ao seu driver de graficos para comprimir cada textura assim que ela o carregar. Isso significa que demorará um pouco mais para carregar a textura, mas a textura resultante ocupara muito menos espaço na memoria.

Existe uma importante vantagem em comprimir textura na hora da execução dessa forma: a placa de video sera capaz de comprimir todas as texturas usando qualquer algoritmo de compressao de textura que ela entenda, DXT ou outro. Nem todas as placas suportam algoritmos de compresssao, entao usando essa opção permite que o driver escolha o melhor algoritmo que ele suporte. Se a placa de video não suporta qualquer algoritmo de compressao, ele simplesmente vai carregar a textura sem comprimir. De qualquer forma sua aplicação ainda vai rodar e todas suas texturas serão visiveis.

Formato de arquivo TXO

Panda tem um dormato de arquivo nativo usado para armazenar imagens de textura chamado TXO ( abreviação para "Objeto Textura" ). Isso é similar á arquivos BAM. Um arquivo TXO contem todos os dados da imagem de textura em um formato muito similar a representaçao interna do panda, entao ele carrega na memoria bem rapidamente.

Mais importante, talvez, arquivos TXO podem opcionalmente armazenar imagens de textura pre-comprimidas. Voce pode usar o comando.

egg2bam -txo -ctex model.egg -o model.bam

para converter o modelo para um arquivo BAM, e todas as suas texturas para arquivos TXO, com os dados de imagem pre-comprimidos dentro do arquivo TXO, de forma que não sera preciso comprimi-lo na hora da execução. Voce pode precisar especificar "pandagl" ao inves de "pandadx9" como motor de renderização enquanto voce roda o comando egg2bam - no momento desse texto, existiam problemas usando o driver directx do panda em modo offline como esse. Contudo, os arquivos TXO resultantes serao carregados ou na OpenGL ou no DirectX na hora da execução.

Arquivos TXO tem os mesmo problemas de arquivo BAM: Eles estao ligados á uma versao particular do panda, entao voce precisara regenera-los quando voce faz um upgrade para uma nova versao do panda.

Um grande contratempo ao armazenar imagens de texturas pre-comprimidas dessa forma é que sua aplicação pode nao rodar em todas as placas de video. Nem todas as placas de video suportam todos os tipos de compressao DXT, e se voce tentar carregar um arquivo TXO em uma placa de video que nao o entenda, ele simplesmente nao vai carregar. Então, pre-comprimir todas suas texturas faz a aplicação menos portavel.

Formato de arquivo DDS

Em adição ao formato nativo TXO, existe um relativo padrao chamado DDS, que tem as mesmas propriedades do TXO. Como o TXO voce pode armazenar imagens pre-comprimidas em um arquivo DDS. A maior vantagem do formato DDS é que existem varias ferramentas disponiveis na internet que geram arquivos DDS, incluindo o GIMP e plugins Photoshop. Note contudo que o carregamento de arquivos DDS é uma nova habilidade do panda, e esse arquivos nao eram suportados antes da versai 1.6)

Gerar seus proprios arquivos DDS tem varias vantagens; a maior dentre elas é que voce tem controle total sobe os artefatos de compressao de sua textura. Contudo existem os mesmos problemas de protabilidade que armazenar imagens de texturas pre-comprimidas em arquivos TXO: existe a possibilidade que algumas placas de video nao reconheçam a compressao de textura que voce usou, caso em que ela simplesmente nao vai carregar.

Texture cache

Existe um compromisso enre compressao dinamica e texturas pre-comprimidas: voce pode pedir ao panda que comprima as texturas na hora, e depois salvar a imagem comprimida resultante para um arquivo TXO no disco. A proxima vez que voce carregar aquela textura particular, ela carregara rapidamente de seu arquivo TXO. Ja que o arquivo TXO foi gerado pelo driver de video do usuario final, ela vai presumidamente usar um algoritmo de compressao suportado.

Para habilitar essa habilidade, simplesmente insira as seguintes linhas no seu arquivo Config.prc:

compressed-textures 1 model-cache-dir /c/temp/panda-cache model-cache-compressed-textures 1

Onde model-cache-dir especifica qualquer pasta no disco ( ela sera criada se nenhuma existir ). Note que model-cache-dir ja pode ter sido especificado; a distribuição padrão do panda especifica o model-cache para agilizar o carregamento de arquivos BAM.

Como o formato de arquivo DDS, a variavel model-cache-compressed-textures é uma nova habilidade do panda, e não existia antes da versao 1.6