Я знаю, что алгоритм дизеринга Флойда – Стейнберга не может быть реализован с пиксельным шейдером, потому что этот алгоритм строго последовательный. Но, возможно, существует какой-нибудь высокопараллельный алгоритм дизеринга, который Визуальный вывод подобен алгоритму Флойда-Стейнберга?
Итак, возникает вопрос - какие алгоритмы дизеринга подходят для реализации в пиксельных шейдерах (предпочтительно GLSL) и с качеством вывода (очень) похожим на дизеринг Флойда-Стейнберга?
Кстати. Многопроходные алгоритмы разрешены до тех пор, пока не будет не более двух проходов, и нагрузка на процессор между этими проходами не будет небольшой.
Есть идеи?
РЕДАКТИРОВАТЬ:
Мне нужно сглаживание с 24-битного цвета на 21-битный цвет .
(То есть - мне нужно преобразовать из 8 бит на канал в 7 бит на канал.)
РЕДАКТИРОВАТЬ 2
Мне нужен дизеринг с 24-битного цвета на 21-битный.
(То есть - мне нужно преобразовать из 8 бит на канал в 7 бит на канал.)
РЕДАКТИРОВАТЬ 2
Мне нужен дизеринг с 24-битного цвета на 21-битный.
(То есть - мне нужно преобразовать из 8 бит на канал в 7 бит на канал.)
РЕДАКТИРОВАТЬ 2
Возможно, я не очень хорошо объяснил проблему. Так что я постараюсь немного подробнее остановиться на конкретной проблеме.
Проблема заключается в следующем - представьте, что у нас есть это изображение:
И у нас есть изображение выше, но обработанное с помощью алгоритма дизеринга:
Теперь это процедура, которая проверяет ваше дизеринг, подходит ли мне или нет:
1. Загрузите эти изображения в Photoshop как одно изображение с двумя слоями.
2. Выберите режим наложения слоев на «Разница».
3. Выполните операцию «Объединить видимое» на слоях, чтобы получить только один слой.
4. Выполните операцию => Изображение / Настройки / Выровнять
После этого вы должны получить такое изображение:
Как видите - средние пиксели, которые были в монотонном красном цвете, вообще не были размыты.
Также немного отличается дизеринг левой и правой зон изображения. Попробуйте реконструировать алгоритм дизеринга с таким поведением.