Im Fall von Softlight:
// ChannelBlend_SoftLight(A,B) ((uint8)((B < 128)?(2*((A>>1)+64))*((float)B/255):(255-(2*(255-((A>>1)+64))*(float)(255-B)/255))))
Hierbei wird davon ausgegangen, dass jeder Kanal 8Bit Farbtiefe hat, der Wertebereich liegt daher bei 0 bis 255.
Für den RPG Maker brauche ich R5G6B5-Format. D.h. rot und blau haben 5 bit, grün hat 6 Bit. Die maximalen Werte sind als 31 für rot und blau und 63 für grün.
In der Originalformel sind die Werte 128 und 64 verwendet, also 255+1 / 2 oder auch 4~ ich verwendet als anstatt diesen Werten dann die Hälfte oder ein Viertel von 31+1(rb) bzw. 63+1(g).
Nachtrag:
Softlight ist ähnlich Overlay und Hardlight ist Overlay mit vertauschen Quelle/Ziel-Pixel. Wenn ich die Pixel der beiden Bildquellen vertausche kommt das hier aus:
Sieht dem Softlight ähnlicher. (oh... Fehlerfixel )
Gibt es Grafikprogramme, die Blending in R5G6B5 machen können, so dass ich einen Vergleich in gleichem Farbraum habe?
Edit: Oh crap, 33 statt 31~, dadurch kamen die Fehlerpixel.
Status:
Es funktioniert, allerdings sieht es nicht ganz aus wie es das müsste. Ich weiss dabei nicht, ob es meine Fehlimplementierung ist oder aufgrund der viel gröberen Zahlenwerte passiert.