A Textura de Oodle fornece codificação rápida e de alta qualidade de texturas para os vários formatos BCn/DXTn. Uma vez configurada, a Textura de Oodle operará automaticamente em segundo plano. Você pode definir a Textura de Oodle globalmente e, em seguida, defini-la mais especificamente para grupos de LOD e texturas individuais.
A Textura de Oodle não codifica ASTC ou outros formatos para dispositivos móveis.
Como habilitar a Textura de Oodle
O plugin para Textura de Oodle é ativado por padrão na Unreal Engine.
Além do plugin, a Textura de Oodle requer uma configuração no arquivo DefaultEngine.ini.
\Engine\Config\DefaultEngine.ini
[AlternateTextureCompression]
TextureCompressionFormat="TextureFormatOodle"
TextureFormatPrefix="OODLE_"
bEnableInEditor=TrueComo a Textura de Oodle está habilitada por padrão na Unreal Engine, essas linhas já devem estar presentes no arquivo BaseEngine.ini.
Recomendamos deixar bEnableInEditor=true para manter um comportamento consistente entre o editor e as versões empacotadas. Se definida como false, os artistas que revisam os resultados da codificação no editor verão resultados diferentes dos produzidos pelo sistema de preparação.
Você pode verificar se a Textura de Oodle está habilitada examinando o log:
LogTextureFormatOodle: Display: Oodle Texture 2.9.0 init RDO On with DefaultRDOLambda=30
Quando Oodle for usado para uma determinada textura, o formato terá o prefixo OODLE_:
LogTexture: Display: Building textures: test (OODLE_AutoDXT, 256X256)
Conceitos importantes para Textura de Oodle
Há dois conceitos que você precisa entender para usar a Textura de Oodle: RDO (Rate Distortion Optimization) e Lambda.
O que é RDO
RDO é um termo que se refere à troca de qualidade (distorção) por tamanho (taxa). Para a codificação de textura, isso parece estranho — texturas DXTn/BCn não variam em tamanho com a qualidade, elas têm um tamanho fixo baseado no formato, resolução e contagem de mip.
A opção Textura de Oodle expõe uma maneira de gerenciar os dados de textura codificados resultantes. Assim, quando um uasset que contém uma textura for comprimido para distribuição por meio do sistema de arquivos IOStore/.pak, ele é comprimido para um tamanho menor. Portanto, a RDO em Oodle textura reduz apenas os tamanhos de distribuição.
Além disso, ele foi ajustado para funcionar com o formato de compressão do Kraken. Consulte Dados do Oodle para obter mais informações.
O que é o Lambda
O parâmetro que determina quanta distorção é introduzida e, portanto, quão menor é o arquivo resultante é chamado de lambda.
O Lambda pode ser definido entre 0 e 100, com números menores representando menor distorção e, portanto, resultados de maior qualidade. Um valor de lambda por volta de 30 ainda produz resultados de alta qualidade. Um valor de lambda de 0 desabilita totalmente a RDO, resultando na melhor qualidade possível. No entanto, mesmo ao buscar a melhor qualidade, recomendamos usar um valor de Lambda de 1, pois a relação custo/benefício ainda é muito boa, resultando em muito pouca distorção, mas com ganhos razoáveis de tamanho de distribuição.
De modo geral, esperamos que o lambda seja definido globalmente e não seja substituído com frequência. Determinar um valor adequado para o projeto será um esforço colaborativo com base nas necessidades de tamanho da distribuição. É melhor definir o lambda global como o valor mais alto (qualidade mais baixa) e definir seletivamente a qualidade mais alta/lambda mais baixa em grupos de LOD ou texturas específicas, conforme necessário.
Texturas que não sejam mapas difusos/albedo provavelmente exigirão um lambda mais baixo (geralmente de 5 a 20), especialmente mapas de normais, pois a distorção invisível a olho nu pode ser mais perceptível com texturas como reflexos especulares.
Como configurar a Textura de Oodle
A Textura de Oodle é configurada principalmente usando o arquivo DefaultEngine.ini, mas também expõe o lambda em grupos de LOD de textura e por textura.
Configuração global
A seção TextureFormatOodle no arquivo DefaultEngine.ini contém as configurações globais para Textura de Oodle.
\Engine\Config\DefaultEngine.ini
[TextureFormatOodle]
DefaultRDOLambda=30
GlobalLambdaMultiplier=1.0
bForceAllBC23ToBC7=False
bForceRDOOff=False
bDebugColor=False| Configuração | Definição |
|---|---|
| Esta é o lambda de RDO que será usado se não estiver definido em outro lugar. |
| Isso escala o lambda passado ao codificador. Ele é fornecido como um controle de última hora para gerenciar tamanhos de distribuição sem ter que perseguir texturas individuais ou grupos de LOD. O valor é aplicado diretamente ao lambda. Ou seja, um valor de multiplicador maior que 1 adiciona distorção e reduz a qualidade, e um valor de multiplicador entre 0 e 1 reduz a distorção e aumenta a qualidade. O resultado é arredondado para o número inteiro mais próximo para uso. Isso não pode desabilitar a RDO (o resultado será pelo menos 1). |
| Quando habilitado, sempre que um BC2 ou BC3 (ou seja, DXT3 e DXT5) for solicitado, o Oodle compacta uma textura BC7. O BC7 costuma ter uma qualidade melhor, mas, dependendo das especificações mínimas, pode não estar disponível. |
| Quando habilitado, a RDO será desabilitado sempre, independentemente de qualquer configuração de RDO específica da textura. |
| Quando essa opção é habilitada, as texturas serão comprimidas como uma cor sólida representando seu formato codificado para identificação visual. Formato - Cor BC1 - Vermelho (0xff0000) BC2 - Verde-escuro (0x008000) BC3 - Verde (0x00ff00) BC4 - Amarelo-escuro (0x808000) BC5 - Amarelo (0xffff00) BC6 - Roxo (R = .5f, G = 0,0f, B = .8f) BC7 (opaco) - Azul-escuro (0x8080ff) BC7 (transparente) - Azul (0x0000ff) |
Como configurar grupos de LOD de textura
O parâmetro "LOD Group" que representa o lambda de RDO é chamado de Valor de compressão com perda. Este parâmetro é definido para grupos de LOD no arquivo DefaultDeviceProfiles.ini.
TextureLODGroups=(Group=TEXTUREGROUP_WorldNormalMap,MinLODSize=1,MaxLODSize=8192,LODBias=0,MinMagFilter=aniso,MipFilter=point,MipGenSettings=TMGS_SimpleAverage,**LossyCompressionAmount=TLCA_Low**)O "Valor de compressão com perda" pode ter os seguintes valores:
| Valor | Descrição |
|---|---|
TLCA_Default | Inherit. Se definido em uma textura, herda do grupo de LOD. Se definido em um grupo de LOD, herda de |
TLCA_None | Disable RDO (0) |
TLCA_Lowest | 1 - Melhor qualidade, maior tamanho de arquivo. |
TLCA_Low | 10 |
TLCA_Medium | 20 |
TLCA_High | 30 |
TLCA_Highest | 40 - Pior qualidade, menor tamanho de arquivo. |
Como configurar texturas individuais
O Lambda de RDO também pode ser definido para texturas individuais usando o parâmetro "Valor de compressão com perda" e usa os mesmos valores mostrados acima.
Para definir o parâmetro para uma única textura:
Clique duas vezes na textura para a qual você quer definir o Lambda de RDO no Navegador de Conteúdo para abri-la na janela Editor de Texturas.
No painel Detalhes, expanda a seção Compressão e clique no ícone de seta para mostrar as opções Avançadas.
Use o menu suspenso ao lado do parâmetro Valor de compressão com perda para selecionar o valor desejado.