Codifique dois buffers R11G11B10F em um usando Y'CbCr?


8

Estamos tentando otimizar a iluminação na taxa de preenchimento. Os chips gráficos integrados são muito lentos no acesso à memória.

Existem dois amortecedores de luz: um para difuso e outro para especular. Ambos usam o formato R11G11B10F. Existe alguma maneira de empacotar dois buffers em um? Por exemplo, usando o modelo de cores Y'CbCr:insira a descrição da imagem aqui


Isso é para pipeline de iluminação diferida, certo? Você está usando a implementação lado a lado para reduzir a largura de banda? Além disso, você considerou o sombreamento diferido em mosaico ou o sombreamento para frente em mosaico?
JarkkoL

Respostas:


5

Você pode querer olhar para o Compact YCoCg Framebuffer . Ele usa um buffer de 2 canais para armazenar a luminância de cada pixel e os dois componentes de croma na metade dos pixels, formando um tabuleiro de xadrez. Ele também usa um filtro de upsampling com reconhecimento de borda no final do quadro para reconstruir os componentes de croma ausentes e converter novamente em RGB.

Você pode estender isso para um único buffer de 3 canais para armazenar a luminância difusa, luminância especular e croma quadriculado (supondo com base no diagrama da sua pergunta que basta armazenar apenas um par de valores de croma).

Você também pode considerar o uso do formato R10G10B10A2, a menos que realmente precise do intervalo do formato de ponto flutuante. É a mesma quantidade de largura de banda, mas oferece muito mais precisão (o R11G11B10F fornece apenas de 5 a 6 bits de manutenção por componente). Além disso, você pode usar os 2 bits de alfa para armazenar algumas bandeiras, como sua bandeira difusa / especular.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.