It seemed like such a good idea at the time.
How did Shazzam ended up with a dependency on the DirectX SDK? You see there’s a couple ways to compile a pixel shader in DirectX. The technique you frequently see mentioned is to use the command line utility called FXC.exe. FXC works great but there is one tiny problem. It’s only available in the DirectX SDK. This might be a good time to mention that the current SDK is nearly 1 GB in size. Yes, that means to run Shazzam you have to download this gargantuan installer and wait 30 minutes for it to finish installing before you can even use Shazzam.
To remove the the dependency all you need to do is remove the call to FXC and find a way to invoke the DirectX DLLs directly. There are a couple techniques to accomplish this, and they all rely on making PInvoke calls. Earlier releases of Shazzam attempted to get the correct PInvoke code but it was never quite right. Short story, we keep relying on FXC to do the job.
DirectX Ninja to the rescue
http://jmorrill.hjtcentral.com/
Jeremiah Morrill, or Jer to his friends, has a long history of working with .NET and DirectX. He created the WPF media kit and the Laser Graffiti application. He’s busy in the Silverlight world too, working on the SilverlightEncoder and SilverlightViewport. He’s the hero of this story because he’s the guy that wrote the new compiler code for Shazzam 1.3.
Three months ago, Jer and I got together during the Expression Blend event at MIX10. Over a few Irish beers we got to talking about the trouble with the SDK. He volunteered to take a look at the problem and a couple months later he sent me the PInvoke code to make the DirectX compiler work.
It wasn’t all a cakewalk however. Jer’s code worked great but we struggled with making the DirectX calls work and ensure that the correct DLLs were in place. There were a number of complications which were discovered during testing but we worked them all out.
No more SDK
It’s with great pleasure that I can announce that Shazzam 1.3 is SDK free and works as soon as you install it on your computer. Time to celebrate.
- On the main stage – by Larry Brown.
Change to Settings Pane
One side effect of this change is that you no longer need to configure the path to FXE.exe in the Shazzam settings pane. The setting has been removed.
Release date: July 12, 2010
Do you know about the Shazzam twitter feed?

[...] « Oh, shiny! Animated Mandelbrot shader effect Feature list V1.3 – Remove dependency on DirectX SDK [...]
[...] Remove dependency on DirectX SDK [...]