Pixel Bender - 1. Ăşvod
November 2nd, 2008
V následujĂcĂ sĂ©rii dĂlĹŻ se vám pokusĂm odkrĂ˝t taje rozšiĹ™ovánĂ grafickĂ˝ch moĹľnostĂ Photoshopu CS4, AfterEffects CS4 a Flash Playeru 10. Jedná se o tzv. “OhĂ˝baÄŤ pixelĹŻ”.
Pixel Bender je jazyk pro vytvářenĂ HW nezávislĂ˝ch grafickĂ˝ch filtrĹŻ. Pixel Bender Toolkit je jednoduchĂ© vĂ˝vojovĂ© prostĹ™edĂ pro psanĂ kernelovĂ˝ch skriptĹŻ, kterĂ© se v ideálnĂm pĹ™ĂpadÄ› provedou pomocĂ GPU.
Â
PĹ™edem bych chtÄ›l Ĺ™Ăct, Ĺľe jsem zastánce kreativity a nÄ›kterĂ© moje ÄŤlánky nemusĂ bĂ˝t obaleny dostateÄŤnou omáčkou a polopatickĂ˝m postupem, za to pĹ™esnÄ› ukazujĂ postup, kterĂ˝ bych byl rád kdybyste si opravdu vyzkoušeli naprogramovat a následnÄ› vám vÄ›ci do sebe krásnÄ› zapadnou. Proto opravdu doporuÄŤuju, zvlášť pĹ™i psanĂ filtrĹŻ, kde si nejste jistĂ, kĂłd opsat a patriÄŤnÄ› otestovat a vĹľdy si trošku pohrát a zinovovat.Â
Â
1. Pixel Bender je součástà všech kolekcà CS4, stáhnout si jej však můžete již nynà zde (verze: Windows, Mac), nainstalujte jej a spusťte:
2. Načtěte obrázek (File -> Load Image 1) a dejte Create New Filter
kernel NewFilter < namespace : "Your Namespace"; vendor : "Your Vendor"; version : 1; description : "your description"; > { input image4 src; output pixel4 dst; void evaluatePixel() { dst = sampleNearest(src,outCoord()); } }
Â
Kernel (jádro) zaÄŤĂná metadaty, následuje tÄ›lo obsahujĂcĂ vstup+vĂ˝stup a evaluatePixel, coĹľ je funkce, která se provadĂ v kaĹľdĂ©m framu a která zpravidla pracuje se vstupem a vĂ˝stupem. V tuto chvĂli nám staÄŤĂ znát pouze tuto funkci.
3. JednoduchĂ˝ pĹ™Ăklad prohozenĂ barev
kernel BarevnyFiltr < namespace : "Tomuv Playground"; vendor : "Tom Krcha"; version : 1; description : "Muj filtr"; > { input image4 src; output pixel4 dst; void evaluatePixel() { float2 aktualni_pozice = outCoord(); float4 aktualni_pixel = sampleNearest(src, aktualni_pozice); // cervena bude mit hodnoty modre aktualni_pixel.r = aktualni_pixel.b; dst = aktualni_pixel; } }
MĹŻĹľete pĹ™istupovat k následujĂcĂm parametrĹŻm:
aktualni_pixel.r|g|b|a|y|x|y|z|w|s|t|p|q
i kombinovanÄ› (tzv. swizzling):
aktualni_pixel.rgb = aktualni_pixel.bgr;
4. Parametry
S parametry pĹ™icházĂ opravdovĂ© hranĂ. RozšĂĹ™Ăme náš pĹ™Ăklad o sĂlu zelenĂ© barvy:
kernel BarevnyFiltr < ... > { ... parameter float power < minValue:1.0; maxValue:5.0; defaultValue:1.0; >; void evaluatePixel() { float2 aktualni_pozice = outCoord(); float4 aktualni_pixel = sampleNearest(src, aktualni_pozice); aktualni_pixel.g *= power; dst = aktualni_pixel; } }
Po spuštěnà nám Toolkit vytvořà slider, který je propojený s parametrem.
5. Kompatibilita Pixel Benderu s grafickými kartami (k datu vydánà článku)
Manufacturer | Series | Model Numbers |
---|---|---|
NVIDIA | QuadroFX Series | FX 5500 SDI, FX 4500 SDI, FX 5600, FX 5500, FX 4600, FX 4500 X2, FX 4500, FX 4400 (discontinued, replaced by the FX 4500), FX 4000 SDI, FX 3500, FX 3450, FX 1700, FX 1500, FX GO 1400, FX 1400, FX 1300, FX 570, FX 560, FX 550, FX 540, FX 370, FX 350 |
 | 9 Series | GeForce 9800 GTX, GeForce 9800 GX2 |
 | 8 Series | GeForce 8800 GTS/GTX/Ultra, GeForce 8600M GT, GeForce 8500 GT |
 | 7 Series | GeForce 7950 GT/GS, GeForce 7900, GeForce 7800, GeForce 7600, GeForce 7300, GeForce 7200 GS, GeForce 7100 |
 | 6 Series | 6800 Ultra, 6800 GT, 6800 GS, 6800, 6800 XT, 6600, 6500, 6200, 6200 TurboCache, 6200 LE, 6100, 6150 |
AMD/ATI | Radeon HD3800 series | Â |
 | Radeon HD2000 Series | HD2900, HD2600, HD2400 |
 | Radeon X1000 Series | X1950, X1900, X1800, X1650, X1600, X1300, “All In Wonder” X1900 (X1900 GPU), “All In Wonder” 2006 PCI Express cards (Based on X1300 GPU) |
 | FireGL | Avivo PCI Express, V8650, V8600, V7600, V5600, V3600, V3300, V3400, V5200, V7200, V7300, V7350 |
Â
6. Pixel Bender ve Flash Playeru 10
PomocĂ Pixel Bender Toolkitu si mĹŻĹľeme vyexportovat binárnĂ soubor *.pbj a pouĹľĂt tak filtr pĹ™Ămo ve Flashi. Flash Player však neobsahuje tentýž PB runtime jako Photoshop ÄŤi After Effects, ale je optimalizovanĂ˝ pro grafickou kompatibilitu se zbytkem FP, coĹľ ho částeÄŤnÄ› zbavuje nÄ›kterĂ˝ch moĹľnostĂ a hlavnÄ› vykreslovánĂ pomocĂ GPU. PB filtry se v FP10 vykreslujĂ pomocĂ CPU nikoliv GPU, coĹľ ovšem neznamená, Ĺľe by to bylo nepouĹľitelnĂ© - naopak - pouĹľĂvánĂ PB ve Flashi je aĹľ neuvěřitelnÄ› rychlĂ© a osobnÄ› ho doporuÄŤuji pĹ™ed pĹ™edchozĂ technikou - aplikacĂ trasformaÄŤnĂch matic na BitmapData apod.
Jak naimportovat filtry Pixel Benderu do Flashe si ukážeme pĹ™ĂstÄ›. StejnÄ› tak vyuĹľitĂ ve Photoshopu a AfterEffects aĹľ budou ke staĹľenĂ trial verze.
Pokud vás Pixel Bender zaujal, doporučuju jako inspiraci Pixel Bender Exchange.
Facebook comments:
11 Comments »
RSS feed for comments on this post. / TrackBack URL
Tomáši, nechystáš v nejbližšà době nějaké menšà školenà ohledně Adobe AIR či Flash?
Comment by Jakub Brabec — November 2, 2008 @ 5:35 pm
Chystám teÄŹ nÄ›co pro HP. Je urÄŤitÄ› moĹľnĂ© to následnÄ› nÄ›kde zrekapitulovat, kdyĹľ se udÄ›lá skupina aspoĹ patnácti lidĂ se zájmem o Flex, AIR a Blaze DS. Taky budeme urÄŤitÄ› ÄŤasem pořádat Devel sezenĂ pĹ™Ămo v Adobe ÄŚR.
Comment by tom — November 2, 2008 @ 5:40 pm
to Jakub: Jinak ve ÄŤtvrtek probĂhá Flex Camp ve VĂdni, urÄŤitÄ› zajimá akce s lidma, kteřà si sáhli na velkĂ© aplikace … spousta inspirace a pohodová atmosfĂ©ra. Je to odpolednÄ› veÄŤernĂ “komornÄ›jšÔ seslošt, kde se proberou backendy (BlazeDS, LCDS, FMS apod.), ty se následnÄ› propoji s client-side, ostyluje se to grafikou a pak se vytvořà AIR aplikace postavená na zkušenostech všech částĂ. Začátek 16:00, konec 20:30. Já tam mám na starosti backend a AIR. Tato Akce probĂhá v tu samou chvĂli ještÄ› v Hamburgu a Bukurešti a nese název Flex Triangle. Vstup zdarma.
Comment by tom — November 2, 2008 @ 7:37 pm
No chytrá vÄ›ciÄŤka to je… Ale doufám, Ĺľe se objevĂ nÄ›jakĂ© fakt praktickĂ© ukázky uplatnÄ›nĂ pro oĹľivenĂ GUI běžnĂ˝ch aplikacĂ. Jinak to zĹŻstane jen hraÄŤkou pro dema. A samozĹ™ejmÄ› je to asi ve Flashi hlavnÄ› proto, aby ÄŤasem mohlo Adobe udÄ›lat plnohodnotnĂ˝ Photoshop online.
Comment by pas — November 3, 2008 @ 11:14 am
To asi joo, ale kazdopadne se to hodi Myslim, ze to bude pouzivat vic projektu nez jen Photoshop.com, napr. Picnik apod. Pokusim se vymyslet nejake prakticke vyuziti a napisu o tom.
Comment by tom — November 3, 2008 @ 5:10 pm
[...] Pixel Benderem blĂĹľe seznámit, pĹ™ĂpadnÄ› si napsat vlastnĂ filtr? Tom Krcha se na svĂ©m blogu The Platform rozhodl technologii pĹ™edstavit a pĹ™ipravil sĂ©rii ÄŤlánkĹŻ, kterĂ© vás seznámĂ s tĂm, jak [...]
Pingback by Horká novinka Pixel Bender nebo OhĂ˝baÄŤ pixelĹŻ « Blog Michala MetliÄŤky o technologiĂch, Adobe, atd. — November 3, 2008 @ 11:00 pm
Kdyby se nekdo peklil s prikladem prace s parametrem, tak tam za > chybi strednik.
Comment by pp — November 5, 2008 @ 12:52 am
fixed… dik za try
Comment by tom — November 5, 2008 @ 11:40 am
[...] minulĂ©m dĂle (http://tom.krcha.com/pixel-bender-1-uvod/) jsme si pĹ™edstavili v kostce jazyk Pixel Bender. Vzhledem k tomu, Ĺľe je jiĹľ koneÄŤnÄ› ke [...]
Pingback by Pixel Bender 2. - filter ve Flashi | The Platform — November 26, 2008 @ 12:07 am
Many real estate experts argue that keeping an existing monthly payment mortgage…Its nice post..
Comment by Samsung UN55C8000 Review — November 18, 2010 @ 5:51 pm
Thanks, I just found your site and wanted to say that I’ve truly enjoyed browsing your blog posts. I have subscribed to your feed and I hope you write again very soon!
Comment by Winter Garden FL Bank Foreclosures — May 21, 2011 @ 6:50 am