Kevin Goldsmith
Kevin is an Engineering Manager working on image processing technologies that live in many Adobe products.
- Hydra course at FITC Amsterdam
I thought I'd give a quick plug to Joa Ebert who is teaching a course entitled Chop The Hydra at FITC Amsterdam in February. If you're attending FITC, you should definitely check it out.
- Some hydra changes for the next AIF Toolkit release
I've been working on the next version of the toolkit and I'm hoping it will make a bunch of you hydra developers happy. I've rolled in a lot of feature requests from the forums and the big news is that it should work on ALL supported platforms (OS 10.4.10+, XP, Vista) REGARDLESS OF YOUR VIDEO CARD. We're still tuning CPU performance, so if you don't have a supported graphics card, the performance won't be stellar, but it will let you start playing with Hydra. I'm hoping to have it out to you all some time next month.
We have made a language change to Hydra that will be in this next release. It is small, but it will break any existing filters. Sorry about that, but at the moment, this is a technology preview after all. I'll include a script we wrote that will fix up your hydra files automagically. The change is that images are now parameters. This is a small change, but it has a big effect. Images will now be available by name in kernel scope instead of EvaluatePixel scope and that means that they can be used in per-frame functions like EvaluateDependents and the region reasoning functions more simply.
Here's an example of the old and new syntax:
kernel OldSyntax
{
parameter float k;void evaluatePixel(
in image4 foreground,
in image4 background,
out pixel4 result)
{
pixel4 fp = sample( foreground, outCoord() );
pixel4 bp = sample( background, outCoord() );
result = mix( fp, bp, k );
}region needed(
region output_region,
int input_index,
region input_DOD[])
{
if (input_index == imageIndex( background ))
return input_DOD[ imageIndex( background ) ];
else
return output_region;
}
}
kernel NewSyntax
{
parameter float k;
input image4 foreground;
input image4 background;
output pixel4 result;void evaluatePixel()
{
pixel4 fp = sample( foreground, tCoord() );
pixel4 bp = sample( background, tCoord() );result = mix( fp, bp, k );
}region needed(
region output_region,
imageRef input_image)
{
if( input_image == background ) )
return dod( background );
else
return output_region;
}
}
As always, we always want to hear what you think. Either reply here or on the forum.
[Updated 11/19/07 to fix a typo made under the influence of too much caffeine]
- Cool hydra filters
So, I've been meaning to post about some of the cool hydra filters that folks have been posting to their blogs and the Hydra Filter Gallery. I've been pretty busy working on the next release of the AIF Toolkit, but the whole team has been really digging some of the cool filters that everyone has been posting. Here are some of my favorites so far (in no particular order)... This is just a subset of what has been posted to the gallery...
Double Plasma by Martin 'Cifko' Stefcek - This is just so wonderfully trippy.
Fuzz by Tyler Glaiel - This would be the start of a cool cross-disolve filter.
Colored Spotlight by Andy Zupko - I like this one because it is simple, but very effective.
Spherize by Joa Ebert - The first non-Adobe hydra developer contribution is something pretty cool: a simple, yet powerful spherize filter. Joa has posted a ton of filters, I just had to pick one to be fair.
AIF's own Mangler mashed up two of Joa's filters: Technodots and Twirl and came up with this beauty: TechoTwirl
SineNoise: The lack of a built-in noise or random function (currently) in Hydra prompted Mario Klingerman to see what he could do to create noise. Very cool. He's also posted some great gradient generators in the gallery.
Polar Coordinates: This is another fun kernel to play with. by wf
Zeh has created an adjustable threshhold filter that is pretty cool and yet pretty simple and easy to understand.
The Vortex filter by Jan is also amazingly trippy, this thing looks awesome animated.
In a future post, I'll link to some of the stuff that the hydra developers have been posting on their blogs.
What are your favorite filters? Also, what kinds of things would you like me to cover in future posts? Let me know in the comments or on the forum.
- The FadeToHistory Hydra Filter in action
I figured that the static pictures were boring, so I decided to show what the FadeToHistory might look like in action.
yes. this is a movie, not some secret feature in Flash Player 9. I left in the rewind Flash to make it explicit.
- Writing a FadeToHistory Hydra Filter, part 3
Previous parts to this tutorial:
Steps 1-3
Steps 4-6At this point, we have a hydra filter which does an interactive cross-disolve from a color image to a luminance based black and white image: Download Hydra Filter
The current version of the filter is:
kernel FadeToHistory < nameSpace : "Kevin's Tutorial Filters"; vendor : "Kevin's Filters, Inc"; version : 1; description : "Fade from color to B&W to sepia"; > { parameter float crossfade; const float3 lumMult = float3(0.3, 0.59, 0.11);