A change of direction… sort of

Well folks, I’m still employed at MS (or rather re-employed at MS after having been canned with the rest of the group).  And I’m working on an as-yet-unannounced project.  So as long as the muzzle is still on, I’ll try to cover some FSX stuff and some general technical art stuff.  I don’t know how often I’ll be posting (it’s not like it can be any less frequent than it has been in the past ; P ) but I will try to get some useful information out there about making art for FSX or making art for games in general.  I’ve been doing a lot of shader writing recently, which I am really excited about (expecially now that the years of legacy code and requirements for supporting backwards-compatibility restrictions have been lifted).  It’s been very freeing to be able to write a shader that does something incredibly ridiculous like use 5 separate world space cube-map lookups (diffuse w/ alpha, normal, specular, reflection and refraction).  Whether a shader like that would actually ever be used in production is totally beside the point.  It’s just nice to see something really cool in the viewport, because there’s always a way to optimize and make something almost as cool for half the performance cost.

I will say one thing.  Performance is about priority number one from day one on the new project.  I definitely learned my lessons from FSX.  Creating a flexible content-driven shader system when there is already mountains of legacy content not necessarily authored specifically for that system, and no time to go back and touch every single asset is a BAD idea.  If you’re in games and you are carrying forward legacy content and you decide to change your shader or draw system, make absolutely sure you can either touch manually or at least do some kind of scripting pass on every piece of content.  Better yet, design a schema-based extensible shader system right from the start that can handle creating new values with defaults.

Maybe my next post will be a performance post-mortem on the Flight Simulator engine and content system.  If you’ve got topics you’d like to get info on, feel free to post in the comments, I’ll try to cover them.  And when I can talk about what I’m working on now, I’ll let you know.

Comments (3)

  1. marllt2 says:

    Hope to hear more about this unannounced product soon.

    Are you allowed to say when you started working on this project ?

    And when the project started (if not the same as previous question) ?


  2. Matthieu Laban says:

    I’d love to read that performance post-mortem :)

    I hope you’ll find some time to write it!


  3. Mike (lotus) says:

    Hey Torgo. Congrats on the new project. As sad as I was to see Aces canned and FS11 lost, I do know how you feel having a fresh slate to work with, and as you say the ability to run wild trying new things. :)

    I too am looking forward to the performance postmortem. I’ve learned a ton from your blog posts.

    Anyway, I’d like to ask one more arcane FSX sdk question if you don’t mind? It’s another of those things that probably only you know the answer to, hehe. You mentioned in an older post that the model compiler does some automatic welding of vertices in an object within a certain threshold, about 4mm I think? I was wondering if there’s a hidden way to keep it from doing that? I have a situation where I have several layers of nearly coplanar polys in a single object that absolutely need to be within 4mm of each other and I can’t allow the compiler to weld them. Letting it do so seems to freak some videocards out, having 10 polys sharing 4 vertices hehe.

    Breaking them into separate objects is one way around it I guess but I’d like to avoid more draw calls. Would making the object a skinned mesh also work for keeping them from being welded by the compiler, because it would have to maintain them separately to keep their weight values intact? I’ve tried it but it’s hard to know if it succeeded or not, thought you might know how the compiler deals with stuff like that. If I’m way off target there, please let me know.

    Anyway, sorry for the long winded question. I would ask it in one of the developer forums but it would be pointless I think. I doubt anyone would know the answer except the person that wrote this stuff. :)

    Cheers mate, and best of luck on the new gig!