Кодировать два буфера R11G11B10F в один, используя Y'CbCr?

8

Мы пытаемся оптимизировать освещение по скорости заполнения. Интегрированные графические чипы очень медленно обращаются к памяти.

Есть два Light Buffers: один для Diffuse и один для Specular. Оба используют формат R11G11B10F. Есть ли способ упаковать два буфера в один? Например, используя цветовую модель Y'CbCr:введите описание изображения здесь

skif_engineer
источник
Это для отложенного освещения трубопровода, верно? Вы используете мозаичную реализацию для уменьшения пропускной способности? Кроме того, рассматривали ли вы мозаичное отложенное затенение или мозаичное прямое затенение?
JarkkoL

Ответы:

5

Возможно, вы захотите взглянуть на Компактный кадровый буфер YCoCg . Он использует 2-канальный буфер для хранения яркости для каждого пикселя и двух компонентов цветности по половине пикселей каждый, образуя шахматную доску. Он также использует фильтр повышающей дискретизации с распознаванием краев в конце кадра, чтобы восстановить отсутствующие компоненты цветности и преобразовать их обратно в RGB.

Вы можете расширить его до одного 3-канального буфера, чтобы хранить диффузную яркость, зеркальную яркость и насыщенную цветность (с учетом диаграммы в вашем вопросе, что достаточно сохранить только одну пару значений цветности).

Вы также можете использовать формат R10G10B10A2, если вам не нужен диапазон формата с плавающей запятой. Это та же самая полоса пропускания, но она даст вам гораздо большую точность (R11G11B10F дает только 5–6 бит мантиссы на компонент). Кроме того, вы можете использовать 2 бита альфа для хранения пары флагов, таких как ваш диффузный / зеркальный флаг.

Натан Рид
источник
2

Если у вас все в порядке с зеркальным отображением только белого цвета, вы можете поместить диффузный и зеркальный в RGBA.

Похоже, именно это и делает единство для отложенного рендеринга.

Кто-то обнаружил эту проблему: http://forum.unity3d.com/threads/specular-color-based-on-light-color.134412/

Документы, упоминающие это: https://docs.unity3d.com/Manual/RenderTech-DeferredLighting.html

Алан Вульф
источник
спасибо, все еще и Diffuse и Specular должны быть цветными
skif_engineer