Re: XNA Game Studio Express HLSL's tex2Dlod (Vertex Shader texture fetch) difference between PC and XBOX360?
Shawn Hargreaves - MSFT
For textures, Xbox supports pretty much every format there is,
including 128 bit Vector4 textures (I say "pretty much" because I can't
be bothered to go through the entire huge list in the native docs
checking them all off right now, but I've never met one it doesn't
support).
For rendertargets, the support is more limited: you have Color,
10.10.10.2, Rg32, Rgba64, HalfVector2, HalfVector4, Single, and
Vector2. Notably you cannot render to Vector4 surfaces.
You cannot alpha blend when using a floating point rendertarget, and
cannot do filtering when sampling from floating point textures, so make
sure you select point sampling when using such data. I'm guessing this
is the problem the original poster is running into: if you use anything
other than point sampling on a floating point texture, it will probably
just try to do linear interpolation as if the bit values were integers,
which gives garbage results for float data.
We're working on getting the HLSL docs updated to cover the Xbox shader model in more detail.
Addendum: I found this table in the native XDK docs, listing Windows
texture formats that are not supported on Xbox. Probably quicker than
listing all the ones that are:
// The following are not supported on Xbox 360:
//
// D3DFMT_A8R3G3B2
// D3DFMT_R3G3B2
// D3DFMT_S1D15
// D3DFMT_S8D24
// D3DFMT_X8D24
// D3DFMT_X4S4D24
// D3DFMT_A8P8
// D3DFMT_P8
// D3DFMT_A4L4
// D3DFMT_R8G8B8
// D3DFMT_D16_LOCKABLE
// D3DFMT_D15S1
// D3DFMT_D24X4S4
// D3DFMT_D32F_LOCKABLE
// D3DFMT_LIN_D32
// D3DFMT_D32