| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Nov 2001 Ort: Köln
Beiträge: 106
| PixelBender Problem Alpha beefinlusst Brightness
Aloha, ich habe einen kleinen und eigentlich simplen PixelBender Kernel geschrieben, der allerdings ein merkwürdiges Verhalten zeigt. Weiss jemand Rat? Gewünschte Funktion: Versehe ein Bitmap "source" mit einem Alpha-Kanal, dessen Werte aus der Helligkeit eines Bitmaps "mask" entnommen werden. Source: HTML-Code: <languageVersion : 1.0;> kernel ApplyAlphaMask < namespace : "de.planneun"; vendor : "leif" version : 1; description : "creating an alpha channel out of a a greyscale mask"; > { input image3 source; // color image input image3 mask; // alpha mask, where black results in alpha 1.0, white in 0.0 output pixel4 dst; void evaluatePixel() { pixel3 maskColor = sampleNearest(mask, outCoord()); pixel3 sourceColor = sampleNearest(source, outCoord()); dst.rgb = sourceColor.rgb; dst.a = (maskColor.r + maskColor.g + maskColor.b) / 3.0; } } ![]() Links: Original Bitmap ("source") Mitte: Alpha-Maske ("mask") Rechts: Ergebnis nach Anwendung des Kernels vor Checkerboard-Hintergrund. Nun also zur Preisfrage: Woher kommen die hellen "Randpixel" im Übergang von Figur und Hintergrund? Als Farbe benutze ich ja "source", und hier kommen an den betreffenden Stellen keine so hellen Pixel vor. Als Alpha berechne ich einen Wert zwischen 0.0 und 1.0.. Zusammen sollte dies Zielpixel ergeben, die genau so hell wie in "source" sind und lediglich im Alpha-Wert abweichen. Irgendwie scheint mir aber die Farbe der Alpha-Maske ins Ergebnis mit einzufliessen...?!
__________________ http://www.rumbke.de |
| | |
| | #2 (permalink) |
| Neuer User Registriert seit: Jun 2010
Beiträge: 20
|
Hat dein Source Image einen Alpha Kanal mit einem Wert > 0 ? Falls ja, lies mal hier: Custom blend modes for Flash 10 Lost In Actionscript – Shane McCartney weiter unten "Tips for writing your own custom blend modes". Sollte das nicht Dein Problem beschreiben, würde ich mal eine andere Filtermethode (alternativ zu nearest neighbour) testen um zu sehen ob das Ergebnis dadurch beeinflusst wird. Geändert von desmo (11-06-2010 um 18:24 Uhr) |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Nov 2001 Ort: Köln
Beiträge: 106
|
Jawoll, genau das war der Punkt. Bin eben vor bemerken Deiner Antwort hier über Deinen frischen Thread samt Link gestolpert und dadurch dann auch drauf gekommen. Dankeschön! Richtig funktioniert der Kernel dann wie folgt: HTML-Code: <languageVersion : 1.0;> kernel ApplyAlphaMask < namespace : "de.planneun"; vendor : "leif"; version : 1; description : "creating an alpha channel out of a a greyscale mask"; > { input image4 source; // color image input image4 mask; // alpha mask, where black results in alpha 1.0, white in 0.0 output pixel4 dst; void evaluatePixel() { pixel4 maskColor = sampleNearest(mask, outCoord()); pixel4 sourceColor = sampleNearest(source, outCoord()); if (maskColor.a > 0.0) { maskColor.rgb *= (1.0 / maskColor.a); } if (sourceColor.a > 0.0) { sourceColor.rgb *= (1.0 / sourceColor.a); } dst.a = (maskColor.r + maskColor.g + maskColor.b) / 3.0; dst.rgb = sourceColor.rgb * (1.0 * dst.a); } } }
__________________ http://www.rumbke.de |
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Nov 2001 Ort: Köln
Beiträge: 106
|
... oder effektiver: HTML-Code: <languageVersion : 1.0;> kernel ApplyAlphaMask < namespace : "de.planneun"; vendor : "leif"; version : 1; description : "creating an alpha channel out of a greyscale mask"; > { input image3 source; // color image input image3 mask; // alpha mask, where black results in alpha 1.0, white in 0.0 output pixel4 dst; void evaluatePixel() { pixel3 maskColor = sampleNearest(mask, outCoord()); pixel3 sourceColor = sampleNearest(source, outCoord()); dst.a = (maskColor.r + maskColor.g + maskColor.b) / 3.0; dst.rgb = sourceColor.rgb * (1.0 * dst.a); } }
__________________ http://www.rumbke.de |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Pixelbender Machbarkeitsfrage | edding950 | ActionScript 3 | 2 | 20-06-2009 17:53 |
| tweener klasse: alpha und brightness gleichzeitig? | _lem45 | Flash CS3 Professional | 7 | 10-06-2008 14:59 |
| Alpha-Blending + Brightness? | Smiller | ActionScript 2 | 5 | 08-02-2007 13:01 |
| performance problem bei Filter+ brightness script | shinbo | Flash 8 | 3 | 28-01-2007 11:53 |
| problem mit brightness und colorobject | artheist | ActionScript 1 | 10 | 01-05-2004 00:35 |