Mipmap - Mipmap
Em computação gráfica , mipmaps (também mapas MIP ) ou pirâmides são sequências de imagens otimizadas e pré-calculadas , cada uma das quais é uma representação de resolução progressivamente mais baixa da anterior. A altura e largura de cada imagem, ou nível, no mipmap é um fator de dois menor que o nível anterior. Mipmaps não precisam ser quadrados. Eles têm como objetivo aumentar a velocidade de renderização e reduzir o aliasing artefatos. Uma imagem mipmap de alta resolução é usada para amostras de alta densidade, como para objetos próximos à câmera; imagens de baixa resolução são usadas quando o objeto aparece mais longe. Esta é uma maneira mais eficiente de filtrar ( reduzir ) uma textura do que amostrar todos os texels na textura original que contribuiria para um pixel da tela ; é mais rápido obter um número constante de amostras das texturas filtradas corretamente. Mipmaps são amplamente usados em jogos de computador 3D , simuladores de vôo , outros sistemas de imagem 3D para filtragem de textura e software GIS 2D e 3D . Seu uso é conhecido como mapeamento mip . As letras MIP no nome são um acrônimo da frase latina multum in parvo , que significa "muito em pouco".
Como os mipmaps, por definição, são pré-alocados , é necessário espaço de armazenamento adicional para aproveitá-los. Eles também estão relacionados à compressão wavelet . As texturas Mipmap são usadas em cenas 3D para diminuir o tempo necessário para renderizar uma cena. Eles também melhoram a qualidade da imagem reduzindo os padrões de aliasing e Moiré que ocorrem em grandes distâncias de visualização, ao custo de 33% a mais de memória por textura.
Visão geral
Mipmaps são usados para:
- Nível de detalhe (LOD)
- Melhorando a qualidade da imagem. Renderizar a partir de grandes texturas onde apenas pequenos subconjuntos de texels são usados pode facilmente produzir padrões de Moiré ;
- Acelerar os tempos de renderização, seja reduzindo o número de texels amostrados para renderizar cada pixel ou aumentando a localidade da memória das amostras tomadas;
- Reduzindo o estresse na GPU ou CPU .
Origem
Mipmapping foi inventado por Lance Williams em 1983 e é descrito em seu artigo Pyramidal parametrics . Do resumo: "Este artigo avança uma geometria de pré-filtragem e amostragem 'paramétrica piramidal' que minimiza os efeitos de serrilhado e garante a continuidade dentro e entre as imagens alvo." A pirâmide referenciada pode ser imaginada como o conjunto de mipmaps empilhados um em frente ao outro.
A origem do termo mipmap é um inicialismo da frase latina multum in parvo ("muito em um pequeno espaço") e mapa, modelado em bitmap. O termo pirâmides ainda é comumente usado em um contexto GIS . No software GIS, as pirâmides são usadas principalmente para acelerar os tempos de renderização.
Mecanismo
Cada imagem de bitmap do conjunto mipmap é uma duplicata reduzida da textura principal , mas com um certo nível de detalhe reduzido. Embora a textura principal ainda seja usada quando a visualização for suficiente para renderizá-la em todos os detalhes, o renderizador irá alternar para uma imagem mipmap adequada (ou de fato, interpolar entre as duas mais próximas, se a filtragem trilinear estiver ativada) quando a textura for visto à distância ou em tamanho pequeno. A velocidade de renderização aumenta, pois o número de pixels de textura ( texels ) sendo processados por pixel de exibição pode ser muito menor para resultados semelhantes com as texturas mipmap mais simples. Se estiver usando um número limitado de amostras de textura por pixel de exibição (como é o caso da filtragem bilinear ), os artefatos serão reduzidos, uma vez que as imagens mipmap já possuem suavização de borda . Redimensionar e aumentar também é mais eficiente com mipmaps.
Se a textura tem um tamanho básico de 256 por 256 pixels, então o conjunto de mipmap associado pode conter uma série de 8 imagens, cada uma com um quarto da área total da anterior: 128 × 128 pixels, 64 × 64, 32 × 32 , 16 × 16, 8 × 8, 4 × 4, 2 × 2, 1 × 1 (um único pixel). Se, por exemplo, uma cena está renderizando esta textura em um espaço de 40 × 40 pixels, então uma versão ampliada de 32 × 32 (sem interpolação trilinear ) ou uma interpolação de 64 × 64 e 32 × 32 mipmaps (com interpolação trilinear) seriam usados. A maneira mais simples de gerar essas texturas é por meio de médias sucessivas; no entanto, algoritmos mais sofisticados (talvez baseados no processamento de sinal e nas transformadas de Fourier ) também podem ser usados.
O aumento no espaço de armazenamento necessário para todos esses mipmaps é um terço da textura original, porque a soma das áreas 1/4 + 1/16 + 1/64 + 1/256 + ⋯ converge para 1/3. No caso de uma imagem RGB com três canais armazenados como planos separados, o mipmap total pode ser visualizado como se encaixando perfeitamente em uma área quadrada duas vezes maior que as dimensões da imagem original em cada lado (duas vezes maior em cada lado é quatro vezes a área original - um plano do tamanho original para cada vermelho, verde e azul perfaz três vezes a área original e, como as texturas menores ocupam 1/3 do original, 1/3 de três é um, então ocupará o mesmo espaço total que apenas um dos planos originais vermelho, verde ou azul). Essa é a inspiração para a tag multum in parvo .
Filtragem anisotrópica
Quando uma textura é vista em um ângulo acentuado, a filtragem não deve ser uniforme em cada direção (deve ser anisotrópica em vez de isotrópica ) e uma resolução de compromisso é necessária. Se uma resolução mais alta for usada, a coerência do cache diminui e o aliasing é aumentado em uma direção, mas a imagem tende a ser mais nítida. Se uma resolução mais baixa for usada, a coerência do cache é melhorada, mas a imagem fica excessivamente desfocada. Isso seria uma compensação do nível de detalhe (LOD) do MIP para serrilhado e borrar. No entanto, a filtragem anisotrópica tenta resolver essa compensação amostrando uma pegada de textura não isotrópica para cada pixel em vez de simplesmente ajustar o MIP LOD. Esta amostragem de textura não isotrópica requer um esquema de armazenamento mais sofisticado ou um somatório de mais buscas de textura em frequências mais altas.
Tabelas de áreas somadas
As tabelas de áreas somadas podem economizar memória e fornecer mais resoluções. No entanto, eles novamente prejudicam a coerência do cache e precisam de tipos mais amplos para armazenar as somas parciais, que são maiores do que o tamanho da palavra da textura base. Portanto, o hardware gráfico moderno não os suporta.
Veja também
- Filtragem anisotrópica
- Modulação hierárquica - técnica semelhante em transmissão
- Pirâmide (processamento de imagem)
- Escala de espaço
- Anti-aliasing espacial
