Note: He is NOT a baby working at Microsoft. He says the baby picture is all he could find. What he looks like now is anyone’s guess.
I have very fond memories of Windows screensavers. One day, I would be sitting in the cockpit of a spaceship traveling through the stars of a very pixellated universe, the next day, I’m a plumber building the internet using a series of tubes. Today, in an energy conscious world, our monitors turn off the moment we stop moving the mouse. But another era of energy-wasting and screen-destroying screensavers is upon us. I got in touch with Stephen Coy, the mastermind behind nearly all of the screensavers in Windows Vista (except for “Windows Energy” which was made by an external design firm) to ask about his career and Windows Vista.
Getting in touch with Stephen Coy was a challenge in itself really. I found his name embedded in some hidden resources inside the screensaver files. Through some intensive Googling, the best I could come up with was he worked at Microsoft in the late 90’s. Through the help of some good friends, I got an email address. I could have never guessed there were two Stephen Coy’s at Microsoft. To make things even tougher, I naturally reached the wrong Stephen, but at least he knew who to forward the email to. In the end, (this) Stephen Coy wrote, “Getting each other’s email has become kind of traditional.” I can’t help think what type of personal emails they get mis-sent too. 😛
My commentary are surrounded with [square brackets] in italics.
The opinions expressed by Stephen Coy herein are his own personal opinions and do not represent his employer’s views in any way. So please don’t sue Microsoft, they have enough lawsuits already.
(Robert Scoble style) Who are you?
I’m Stephen Coy and I’m a dev working on Vista in the UI Strategy team. Well anyway, development is my job but I don’t know if I’m quite happy with that being the definition of who I am [Yeah you show ’em who you are!]. I love computer graphics and have been actively involved in graphics for the last 18 or so years. I think spheres are perfect and they are an endlessly fascinating source of fodder for abstract renderings (check out http://www.infiniteinstant.com/images.html). I enjoy red wine, IPAs and Belgian ales and I eat food, too. [Food….mmmmm.]
You’ve been at Microsoft for a while, what have you done over the years?
I first came to MS in ’93 and eventually worked as part of the team that did the technical evaluation of SOFTIMAGE prior to our purchase of the company [Microsoft buying a company? That’s a first.]. After the purchase we also did the first port of the 3D tools to NT. Most of the team then moved to the DirectX group and worked on D3D. I was there for the DX5 and DX6 releases. Next I went to the flight sim team and worked on Combat Flight Simulator for a short time before leaving MS in ‘98.
By ’02 it was time to come back and I rejoined to work in the games group on the sports sim team. After a cancelled soccer title I landed on the NFL Fever team and worked on graphics for the 2004 release. Eventually the 2005 release was cancelled and finally the whole group was shut down. Still wanting to work on graphics I then went to the Office organization where I got to work on the 3d graphics for Office 12 bringing Office graphics out of the 80’s and firmly into the 90’s.
While on the Office team I heard through friends that most of the screensavers had been cut from Vista and they had nothing to replace them with [Microsoft cutting Vista features? Nooo.]. During my time away from MS I had written a bunch of graphics hacks that I thought would make good screensavers so I dusted them off and wrapped them into an updated screensaver framework. These eventually became Aurora, Mystify, Ribbons and Bubbles. For reasons beyond my understanding the Windows people were happy with this and offered me a job so a moved across campus about 6 months ago.
How did you get into Microsoft? What sort of education/experience did you need and why did you want to join Microsoft?
Prior to MS I worked for Boeing on various flight sim/image processing/CAD projects. During that time I finished my thesis and earned my master’s degree in CS. I also co-authored a book on ray tracing, Photorealism and Ray Tracing in C with Chris Watkins. Getting to MS was a bit of serendipity. My cubicle mate was at Tower Books browsing the computer section (back when they had a decent computer section) and he ran into a guy from MS who was buying a copy of every graphics book he could find. They got to talking and my book was brought up. The store was out of copies but the MS guy passed on his business card and asked to have me call him. I called, he asked if I’d ever consider working for MS and the rest is history.
You’ve been working with DirectX for a long long time. How has DirectX evolved over the years? Where is DirectX heading?
I first started looking at DirectX and Direct3D in particular back when DX3 was out. At that time everything was still architected toward software rendering and execute buffers. Then DrawPrimitive was introduced (DX5), hardware transform and lighting (DX6), multi-pass texturing (DX7) etc. Now, it seems we’re almost going back to software but it’s all shaders on the GPU now. DX8 started us on the path of programmable shaders and DX9 has moved us well along to the point where we’re kind of back to where we started except now instead of execute buffers we use vertex buffers, all the transform and lighting code has to be written again (this time as shaders) and multi-pass texturing is no longer hardwired but is also controlled by shaders. [You lost me at DrawPrimative. But go on.]
While DX10 has lots of cool new features there are two that I’m particularly excited about. First, the requirements for compatibility will be much more strict. Yes, this may not be exciting for the end users but for developers this is incredibly important. Game developers currently have to write for and test on potentially hundreds of different card/driver combinations. This make writing and testing games much harder than it should be. This also means that the users have more potential for running into problems with a particular game. With the DX10 requirements being stricter game developers can focus more of their efforts on making a great game rather than chasing down some obscure graphics card “feature”. The real fun with DX10 will be with the introduction of geometry shaders. Now you’ll be able to write shaders that create and modify geometry on the fly. This will allow better particle systems, smooth surfaces, displacement mapping, etc. while not tying up the CPU, or worse tying up the bandwidth between the CPU and the GPU. I’m really looking forward to seeing how creative people will get with this new capability. [DirectX 10 also introduces abusive comments on blog if you publish comparisons.]
Tell me about the new screensavers in Vista.
Most of the screensavers I wrote are mostly done out of a desire to create a dynamic light show without the hard edges normally associated with computer graphics [Ah yes. I remember when Lara Croft had hard edges.]. I wanted them to be bright, colorful and fluid while not being repetitive. I’d rather have a screensaver that gives me one moment of beauty in an hour than one that always looks the same.
Artistically I’m least happy with Aurora. The goal was obviously to pick up the aurora theme in the Vista graphics but I never felt like I quite got it to move right. Maybe it’s time for a field trip north to become inspired by the real thing. [Sounds like a great excuse to get off work! I mean, research.]
Bubbles on the other hand just reflects my fascination with spheres. [It also reflects my fascination with bath tub bubbles. I’ve said too much.]
Some of these screensavers, especially Windows Energy is very system intensive. Why is that?
The Windows Energy screensaver was written to show off the Vista Flare graphic element and to show off the brand so we wanted something that pushed the system a bit. The blur and soft glow effects require multiple passes and filtering making this the most graphics processing intensive of the screensavers. [Sounds like a good way to provide heating during winter.]
What new capabilities do screensaver designers have in Vista over XP?
DX10! (at least when DX10 capable cards start showing up). [I would have never thought screensavers could be a selling point for graphics cards.]
Added: Extra questions
Will we ever see interactive screensavers? Which might respond to user-initiated or background actions like moving the mouse or music playing in the background (visualizers)?
I don’t see why not although if you have too much interaction I think you’ve gone from having a screensaver to having a game. That said, I think it would be a blast to have a screensaver that uses your system’s web cam for input. Being able to tie the computer’s environment into what’s being seen on screen opens up huge possibilities for fun stuff. Today’s modern GPU’s have an amazing amount of processing power just waiting to be tapped. Can you imagine walking by someone’s office and seeing them dancing in front of their web cam while watching their processed/distorted image dancing on screen? [I can imagine, yes.] Or maybe have the computer detect when something in range of the camera changes and keep a snapshot for use as a texture later. This would provide a constantly morphing visual history of what went on in front of your computer while you were away. Beyond obvious “traditional” inputs such as these there’s also a lot of potential for using live data from the network or off the internet for a screensaver. I’ve seen one which generates a live map of wireless networks for laptop computers. Not only does it look good but it’s also functional. Stock quotes, weather stats, news headlines… it’s all easy to get online and opens up new worlds for screensavers.
I can imagine making a screensaver isn’t as easy as it looks. Exactly how hard is it to make one?
The screensavers themselves are really quite simple. Of course, if you’re writing your own you can make it as complicated as you want. The only feature that’s different from most D3D programming is that you have to be aware of correctly handling multimon. Most of the hard work is in the framework code. Luckily that only has to be done once. Moving to Vista did required some extra work. The original code relied on the D3DX library to load texture images but D3DX is not shipping in the box for Vista. This meant we had to roll our own texture loading routines using the new WinFX library. This was actually pretty easy and had the added benefit of being much more secure than the old libraries. Perhaps the biggest challenge is making sure that the screensavers all run well on whatever graphics hardware the users have. Ribbons and Mystify had to have their approach to blending changed because what worked well on my ATI card at home didn’t work so well on Nvidia hardware. The cause turned out to be a difference of opinion about how rounding should work. (This is one of the issues that DX10 should fix) The Windows Energy screensaver also needed some work to play well with Intel’s integrated graphics chips. It still runs slowly but at least it runs.
I want to thank Stephen Coy for a great overview of Microsoft, DirectX and screensavers in Windows Vista. The new Windows Vista screensavers are a much needed refresh over the legacy Windows 3.1 screensavers. So if Windows Vista reduces the lifespan of your monitors, you know who to blame.
If you haven’t seen the screensavers yourself, then I recommend you to check out my screencast on Vista screensavers.