¿Codificar dos memorias intermedias R11G11B10F en una usando Y'CbCr?

8

Estamos tratando de optimizar la iluminación en velocidad de llenado. Los chips gráficos integrados son muy lentos en el acceso a la memoria.

Hay dos Light Buffers: uno para Diffuse y otro para Specular. Ambos usan el formato R11G11B10F. ¿Hay alguna forma de empacar dos buffers en uno? Por ejemplo, usando el modelo de color Y'CbCr:ingrese la descripción de la imagen aquí

skif_engineer
fuente
Esto es para tubería de iluminación diferida, ¿verdad? ¿Está utilizando la implementación en mosaico para reducir el ancho de banda? Además, ¿ha considerado sombreado diferido en mosaico o sombreado hacia adelante en mosaico?
JarkkoL

Respuestas:

5

Es posible que desee ver The Compact YCoCg Framebuffer . Utiliza un búfer de 2 canales para almacenar la luminancia para cada píxel y los dos componentes de croma en la mitad de cada píxel, formando un tablero de ajedrez. También utiliza un filtro de muestreo ascendente con reconocimiento de bordes al final del cuadro para reconstruir los componentes de croma que faltan y convertirlos nuevamente a RGB.

Puede extender esto a un único búfer de 3 canales para almacenar la luminancia difusa, la luminancia especular y el croma con cuadros de verificación (suponiendo, según el diagrama en su pregunta, que es suficiente almacenar solo un par de valores de croma).

También puede considerar usar el formato R10G10B10A2, a menos que realmente necesite el rango del formato de punto flotante. Es la misma cantidad de ancho de banda, pero le dará mucha más precisión (R11G11B10F solo le da de 5 a 6 bits de mantisa por componente). Además, puede usar los 2 bits de alfa para almacenar un par de banderas, como su bandera difusa / especular.

Nathan Reed
fuente