DXT compression for normalmaps

If you apply DXT compression to a normal map texture, the results are usually pretty awful. But there are some simple things you can do to improve the quality. First off, notice how in a tangent space normalmap, the Z component always faces roughly outwards (which is why tangent space normalmaps have a bluish tint)….


Is DXT texture compression worth it?

Artists don’t like lossy compression. They particularly don’t like DXT texture compression. "I spent hours slaving away to create this beautiful, pristine image, and now you want to do WHAT to it?" But the thing is, you don’t get to make a simple choice between uncompressed vs. lossy compressed textures. Consoles like Xbox 360 only…


Texture compression

If you are doing 3D graphics with the XNA Framework, you are probably already using compressed textures, even if you don’t realize it. It occurred to me it might be interesting to explain what these are and how they work. Note that texture compression is not the same thing as the new .xnb compression feature…


Instances and indices and vfetch – oh my!

I’m cross posting this discussion from an internal Microsoft mailing list, because I’m so awesomely cool that I just can’t bear the thought of everything I ever wrote not being indexed and archived for posterity 🙂   My reply to a question about hardware instancing on Xbox 360: The 360 doesn’t support vertex stream frequency…


Dishwasher localization

The latest post from James Silva discusses the drudgeful process of localizing Dishwasher. This triggered a range of incoherent and rambling thoughts, which for some reason I am inspired to post here. It is amazing how much work can be involved in finishing a game, even one like Dishwasher that was already looking great a…


SendDataOptions.Chat in XNA Game Studio 3.0

Xbox LIVE encrypts all network traffic. This makes it hard for people to cheat by intercepting and modifying packets. However, communication data is required to be sent via an unencrypted channel. Because of this, each LIVE packet contains two sections. The first part contains encrypted gameplay data, while the second contains unencrypted voice or text…


NetworkGamer.Id in XNA Game Studio 3.0

All network games need to send data from one machine to another. To make sense of this data, it is important to know which player it refers to. For peer-to-peer games, this is trivial. When you call LocalNetworkGamer.ReceiveData, you get an output parameter telling you who the packet is from. Client/server games do not have…


Did you know our samples have docs?

Dear Reader, I have another question for you… I sometimes notice people using samples from creators.xna.com, having trouble with them, but not realizing their problem is answered in the sample doc. The first time this happened, I could dismiss it as just a stupid user. But I have seen it too often for that to…


Have you ever used a profiler? If not, why not?

Dear Reader, I have a question for you… I am frequently amazed when smart developers ask questions about performance problems, but then it turns out they haven’t so much as tried a profiling tool on it. I’m curious to understand why this is, and if there is anything I could write that might help people…


FBX improvements in XNA Game Studio 3.0

One of the less obvious changes in our 3.0 release is that we picked up an updated version of the FBX SDK from our partners at Autodesk, which enables some cool new functionality in our FBX importer: Multiple textures Multiple texture coordinate channels Effect materials Material name strings are now imported correctly To use this…