Posts tagged "pixel bender"

February 10, 2010

more Pixel Bender learning resources from the community

Still so many cool things getting posted out there in the Pixel Bender developer community. This time, I’m going to point out some tutorials and guides that I’ve seen recently:

The AS3 to Pixel Bender Guide by Corey von Birnbaum. This is a short post with some good analysis by Corey on good ways to get good performance out of Pixel Bender in the Flash Player and also some good links to other Pixel Bender reference and tutorial sites.

Pixel Bender Tutorial by Matthew Butt. Nice, quick, tutorial which covers the basics and covers a couple of the easily messed up bits when using Pixel Bender in Flex.

CodeDependent Video on using Pixel Bender Effects in Flex 4. Ok, this isn’t strictly from the community, but it is still a nice video showing some of the cool Pixel Bender support added to Flex4. (Oh, and ignore the comment he makes about the history of Pixel Bender at the beginning, uh, that is way incorrect). I link to the page because it has a demo and the source in it.

Cory McMahon gave a talk at the LA Flex group on using Pixel Bender and doing HDR in Flex. There is some nice simple explanations of gaussian kernels before he talks about PB and he gives us some (deserved) barbs on how Pixel Bender is limited in Flash. Overall, it is a nice talk on doing image processing in Flex with and without PB.

11:12 PM Permalink
January 11, 2010

new Pixel Bender resources on Adobe.com

Pixel Bender has been living on Adobe labs since it was first introduced at MAX 2007. Since CS4 and Flash Player 10 though it has joined the ranks of “real” Adobe technologies.

We’ve finally created “official” areas for Pixel Bender in the Adobe Developer Connection and Adobe Cookbook sites. We’ve also moved the Pixel Bender forum out of the labs forums area and into the main Adobe forums site. These join the Pixel Bender exchange as great resources for Pixel Bender developers.

The Pixel Bender Technology Center

PBTechCenter.jpg

This is now the main page for the Pixel Bender technology. Currently it features information on learning Pixel Bender and links to tutorial videos, references, the latest official downloads and more.

The Pixel Bender Cookbook
PBCookbook.jpg

Looking for a place to post useful Actionscript or Pixel Bender code, or find code from other folks? This is the new place. You can also request recipes from the community.

The Pixel Bender Forum

PBForums.jpg

The forum has been around since Pixel Bender was first announced. This is where you can ask questions and report bugs. The Pixel Bender team follows this forum and we try to answer any questions that other developers can’t. This is a good go-to place if you are stuck on something.

PBExchange.jpg

The Pixel Bender Exchange has also been around for a while and is THE place to post your Pixel Bender filters or browse filters created by other developers.

The Pixel Bender area on labs isn’t gone. Watch that space for future public betas or pre-releases.

4:25 PM Permalink
December 22, 2009

Pixel Bender and 3D (catching up on Links, pt 2)

Pixel Bender’s heritage is from the 3D Pixel Shading languages, but we carefully removed most of that to make it specialized for signal processing. The lineage is there though, right below the surface, and Pixel Bender’s utility for doing a lot of math fast makes it really attractive for doing 3D. I’ve written about 3D experiments from the community in the posts Some cool experiments with Pixel Bender and More Cool Pixel Bender Experiments. There has been a lot of really cool work done in the community since then, and I wanted to highlight that:


David Lenaerts has been busy combining Away3D and Pixel Bender, especially for Normal maps: Away3D 3.4.2: Pixel Bender to the max!


Kris Temmerman has also been experimenting with Pixel Bender and Normal Maps.


This is a demo video of a different ray tracer written in Pixel Bender by macduyhai.


Here is an article on integrating Pixel Bender and Papervision3D


Tom Beddard has been doing really cool fractal tools with Pixel Bender. His new Mandelbulbs are really beautiful.


Jerzy Drozda Jr did some experiments with Pixel Bender for UV Mapping in After Effects.

Stay tuned for more links!

4:09 PM Permalink
December 18, 2009

So, so, so far behind on cool Pixel Bender links

I have over 100 links stored in my bookmarks of pages that Pixel Bender developers have created that I want to feature here, but I’ve been working so hard on the next version of our stuff that I’ve obviously gotten very far behind. With the end of the year approaching, I’m going to try and rectify that somewhat… starting today.

The links today are in no particular order, they are literally the tabs I have open in Firefox right now:


Elad Elrom – Using Pixel Bender to do heavy lifting calculations, makes Flash Player multi-thread

Eugene Zatepyakin – Canny Edge Detector [AS3 + PixelBender]

Daniel Rinehart – Image Rotation with Pixel Bender


David Lenaerts (Der Schmale) – Render Bender v0.1: optimizing my Flash+Pixel Bender workflow

Nicolas Barradeau – PIXEL BENDER #1 color tweaking

Brooks Andrus – Bilinear Resampling, ShaderJob, Pixel Bender And Flash Player

That is it for this post, but expect more soon!

3:17 PM Permalink

recordings from my recent panels

He is the panel on Flash Games from MAX 2009 in Los Angeles:

and here is the panel titled “Preparing the world for ubiquitous Parallelism” at the SC09 conference in Portland
Youtube link

3:10 PM Permalink
November 18, 2009

Friday 11/20 in Portland, OR

I’m going to be in Portland, Oregon this Friday. At 10:30 I’ll be on a panel at the Supercomputing 2009 conference with folks from Intel, NVidia, AMD, Dreamworks and Contra Costa College talking about preparing developers for new parallel programming paradigms.

At 3pm, I’ll be at Kells Irish Pub in the Pearl District for a Pixel Bender tweetup.

Portland Pixel Bender Developers (or interested folk), C’mon down! Looking forward to meeting you. I’ll be wearing the bright red Adobe jacket.

4:30 PM Permalink
September 29, 2009

Pixel Bender BOF at Adobe MAX

It is MAX time again, and this year looks like it will be over the top. There are some exciting things that will be shown related to Pixel Bender. None of which I can discuss right now, of course!

I’ll be hosting a Pixel Bender Birds of a Feather on Wednesday at noon at Table 1. Please join us to discuss your Pixel Bender feature requests and ask any of your burning questions.

If you can’t wait until Wednesday, tweet a message to @pixelbender (after Monday’s keynote) and if I have time, I’d love to talk to any Pixel Bender developers who will be in Los Angeles during MAX.

See you in LA!

5:01 PM Permalink
September 8, 2009

New release of the Pixel Bender Toolkit 1.5.1

Last week, we posted a new revision of the Pixel Bender Toolkit (1.5.1) into the downloads area on Adobe labs. This version fixes a couple bugs from the previous release in exporting Pixel Bender Bytecode for Flash. Booleans should now work correctly.

A request we’ve had a few times on the Pixel Bender forum and over on twitter has been that we post the language reference and developer’s guide separate from the Toolkit download itself. Those documents are now available as well on the downloads page.

11:58 AM Permalink
August 21, 2009

Matrices and Pixel Bender

This is a guest post from Bob Archer, a Development Lead in the Adobe Image Foundation team. I ofter see people doing a lot of extra math in their kernels when they could have simply done a matrix multiplication. This post won’t explain linear algebra to you, but if you’ve been confused by Pixel Bender’s column major order or aren’t sure how it works, it should hopefully give you some pointers… [End of intro]

I thought this would be of interest to everyone – I finally have the definitive guide on how matrix math works within Pixel Bender.

Pixel Bender matrixes are in column-major order. This means that this line:

float3x3 m = float3x3( a, b, c, d, e, f, g, h, i );

Sets up a matrix that looks like this:

a  d  g
b  e  h
c  f  i

If I access a matrix using a single [] operator I get these results:

m[ 0 ] == float3( a, b, c );
m[ 1 ] == float3( d, e, f );
m[ 2 ] == float3( g, h, i );

If I set up a vector like this:

float3 v = float3( X, Y, Z );

and do some vector / matrix or matrix / vector multiplications I get these results:

v * m == float3( Xa+Yb+Zc, Xd+Ye+Zf, Xg+Yh+Zi )
m * v == float3( Xa+Yd+Zg, Xb+Ye+Zh, Xc+Yf+Zi )

i.e. v * m does this calculation:

( X  Y  Z  )  *  a  d  g
b  e  h
c  f  i

while m * v does this calculation:

a  d  g     X
b  e  h  *  Y
c  f  i     Z

If we are multiplying two matrices together:

float3x3 m1 = float3x3( a, c, b, d, e, f, g, h, i );
float3x3 m2 = float3x3( J, K, L, M, N, O, P, Q, R );

m1 * m2 does this calculation:

a  d  g     J  M  P      aJ+dK+gL  aM+dN+gO  aP+dQ+gR
b  e  h  *  K  N  Q  ==  bJ+eK+hL  bM+eN+hO  bP+eQ+hR
c  f  i     L  O  R      cJ+fK+iL  cM+fN+iO  cP+fQ+iR

Some references:
http://en.wikipedia.org/wiki/Row-major_order
http://everything2.com/title/Column+major+arrays+vs.+row+major+arrays

10:52 PM Permalink
August 19, 2009

Pixel Bender audio processing sample code

I’ve been doing some playing around with processing audio using Pixel Bender in Flash and I realized that it was hard to find some working code to get started with. So i wrote up this sample. I tried to do a minimal app that actually did something interesting and would be a start for someone else. To that end, this AIR app sample loads an MP3 file and then the embedded Pixel Bender kernel lets you change the level of the individual channels separately.

The MXML code is below:

All the action is in the ProcessAudio function, that pulls samples from the input file and executes a ShaderJob across them. There is something important to reference here:

effectShader.data["source"].width = BUFFER_SIZE / 1024;
effectShader.data["source"].height = 512;
effectShader.data["source"].input = shaderBuffer;
effectShader.data["volume"].value = [ leftSlider.value, righttSlider.value ];

var effectJob:ShaderJob = new ShaderJob( effectShader, event.data, BUFFER_SIZE / 1024, 512 );
effectJob.start(true);

I pass the buffer into the shader job as a 2D buffer instead of a buffer with a height of one. This may make less sense logically, but the Flash player breaks the data up by rows for multi-threading, so this should make that perform faster.

Here is the kernel:

One thing to notice here is that rather than using an image2 as input and a pixel2 as output (which may make more sense logically again), I instead just use the buffer layout and process 2 stereo samples at the same time. This should also give you better performance for filters that can do this.

Here are the files:

For more info, the following references might be helpful

3:10 AM Permalink