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