So che l'algoritmo Floyd–Steinberg dithering non può essere implementato con pixel shader, poiché tale algoritmo è strettamente sequenziale. Ma forse esiste un algoritmo di dithering ad alta parallela che dal suo output visivo è simile all'algoritmo di Floyd-Steinberg?Alternative di dithering Floyd-Steinberg per pixel shader
Quindi la domanda è: quali sono gli algoritmi di dithering adatti all'implementazione su pixel shader (preferibilmente GLSL) e con qualità di output (molto) simile al dithering di Floyd-Steinberg?
BTW. Gli algoritmi multi-pass sono consentiti fino a quando non ci sono più di 2 passaggi e l'overhead della CPU tra questi passaggi è piccola.
Qualche idea?
EDIT:
ho bisogno di dithering da colori a 24 bit per colore 21-bit.
(Che è -. Ho bisogno di convertire da 8 bit/canale da 7 bit/canale)
EDIT 2 Forse non ho spiegato problema molto bene. Quindi proverò ad espandermi un po 'sul problema esatto. problema è questo - considerare abbiamo questa immagine:
E abbiamo foto sopra, ma elaborati con algoritmo di dithering:
Ora, questa è la procedura che metterà alla prova il vostro dithering è un bene per me o no:
1. Caricare queste immagini in Photoshop come un'unica immagine con 2 livelli.
2. Scegliere la modalità di fusione Livelli su "Differenza".
3. Eseguire l'operazione "Unisci visibili" sui livelli per ottenere un solo livello.
4. Eseguire un'operazione => Immagine/Regolazioni/Equalize
Dopo di che è necessario ottenere tale immagine:
Come si vede - pixel medie che era di colore rosso monotono non era dithered affatto. Anche il dithering delle zone dell'immagine sinistra e destra è leggermente diverso. Prova a ricostruire l'algoritmo di dithering con tale comportamento.
Non riesco a capire il risultato. L'immagine di differenza implica che l'output di Floyd-Steinberg contiene componenti con valori di 0 e 255, ma questo non ha senso con 7 bit; dovrebbe essere 0 e 254, o 1 e 255. A meno che non stiate usando i colori pari da 0-126 e quelli dispari da 129-255? –
Il problema è che non conosco mappature di bit troppo esatte, ecco perché ho creato tale domanda - per cercare l'algoritmo di dithering del programma X. –
Se potessi pubblicare l'immagine del risultato potremmo essere in grado di capire la mappatura dei bit. –