Codificare due buffer R11G11B10F in uno usando Y'CbCr?


8

Stiamo cercando di ottimizzare l'illuminazione in fillrate. I chip grafici integrati sono molto lenti nell'accesso alla memoria.

Esistono due Light Buffer: uno per Diffuse e uno per Specular. Entrambi utilizzano il formato R11G11B10F. C'è un modo per impacchettare due buffer in uno? Ad esempio, utilizzando il modello di colore Y'CbCr:inserisci qui la descrizione dell'immagine


Questo è per la pipeline di illuminazione differita, giusto? Stai usando l'implementazione piastrellata per ridurre la larghezza di banda? Inoltre, hai preso in considerazione l'ombreggiatura differita piastrellata o l'ombreggiatura in avanti piastrellata?
JarkkoL,

Risposte:


5

Potresti voler dare un'occhiata a The Compact YCoCg Framebuffer . Utilizza un buffer a 2 canali per memorizzare la luminanza per ogni pixel e i due componenti chroma in metà dei pixel ciascuno, formando una scacchiera. Utilizza anche un filtro di upsampling attento ai bordi alla fine del frame per ricostruire i componenti chroma mancanti e riconvertire in RGB.

Potresti estenderlo a un singolo buffer a 3 canali per memorizzare la luminanza diffusa, la luminanza speculare e il croma a scacchiera (supponendo in base al diagramma nella tua domanda che sia sufficiente memorizzare solo una coppia di valori cromatici).

Potresti anche prendere in considerazione l'utilizzo del formato R10G10B10A2, a meno che tu non abbia davvero bisogno dell'intervallo del formato a virgola mobile. È la stessa quantità di larghezza di banda ma ti darà molta più precisione (R11G11B10F ti dà solo 5-6 bit di mantissa per componente). Inoltre, puoi utilizzare i 2 bit di alfa per memorizzare un paio di flag, come il tuo flag diffuso / speculare.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.