XNA Game Studio 4: Profiles comparison

Microsoft’s Shawn Hargreaves posted a really handy table comparing the Reach & HiDef profile available in the XNA Game Studio 4.0 development toolkit.

  • The features listed in black are required and supported consistently across all platforms and hardware
  • The few features which are not 100% consistent are listed in red
  • HiDef is a strict superset of Reach
  • If you run a Reach game on a HiDef platform, the framework will still enforce Reach rules. This lets you test your phone game on Xbox 360 or a high end Windows PC, and get helpful exception messages if you accidentally try to use a feature that is not supported on the phone.
 

Reach

HiDef

Supported platforms Windows Phone 7 Series, Xbox 360, and any Windows PC with a DirectX 9 GPU that supports at least shader model 2.0 Xbox 360, and any Windows PC with a DirectX 10 (or equivalent: see below) GPU
Shader model 2.0  (but Windows Phone does not support custom shaders) 3.0+  (Xbox 360 supports custom shader extensions such as vfetch, which are not available on Windows)
Max texture size 2048 4096
Max cubemap size 512 4096
Max volume texture size Volume textures are not supported 256
Non power of two textures Conditional: cannot use wrap addressing mode, mipmaps, or DXT compression when the size is not a power of two Yes
Non power of two cubemaps No Yes
Non power of two volume textures Volume textures are not supported Yes
Max primitives per draw call 65535 1048575
Index buffer formats 16 bit 16 and 32 bit
Vertex element formats Color, Byte4, Single, Vector2, Vector3, Vector4, Short2, Short4, NormalizedShort2, NormalizedShort4 All of the Reach formats, plus HalfVector2, HalfVector4
Texture formats Color, Bgr565, Bgra5551, Bgra4444, NormalizedByte2, NormalizedByte4, Dxt1, Dxt3, Dxt5 All of the Reach formats, plus Alpha8, Rg32, Rgba64, Rgba1010102, Single, Vector2, Vector4, HalfSingle, HalfVector2, HalfVector4. Floating point texture formats do not support filtering.
Vertex texture formats Vertex texturing is not supported Single, Vector2, Vector4, HalfSingle, HalfVector2, HalfVector4
Render target formats Variable (see below) Variable (see below)
Multiple render targets No Up to 4. Must all have the same bit depth. Supports alpha blending and independent write masks per rendertarget.
Occlusion queries No Yes
Separate alpha blend No Yes
Blend.SourceAlphaSaturation Only for SourceBlend, not DestinationBlend Yes
Max vertex streams 16 16
Max stream stride 255 255

As you can see the Reach profile is the one used to develop Windows Phone 7 applications/games. Programmable shaders on WP7 are not supported yet in this version of XNA, but Microsoft is providing 5 predefined Shaders for developers (BassidEffect, DualTexttureEffect, AplhaTestEffect, SkinnedEffect & EnvironementMapEffect) check them out in action here:

BassicEffect:
- 0-3 Directional lights
- Blinn-Phong Shading
- Optional Texture
- Optional Fog
- Optional Vertex Color

DualTextureEffect:
- For lightmaps, detail textures, decals
- Blends two textures
- Separate texture coordinates
- Modulate 2X combine mode
- Good visuals at low pixel cost

AplhaTestEffect:
- For billboards & imposters
- Adds alpha test operations (pixel kill)
- Standard blending is free with all effects
- Only need alpha test if you want too disable depth/stencil writes

SkinnedEffect:
- For animated models and instancing
- Game code animates bones on GPU
- Vertex skinning performed by the GPU
- Up to 72 bones
- One, tow or four weights per vertex

EnvironementMapEffect:
- Oh Shinny!
- Difuse Texture + cube environement map
- Cheap way to fake many complex lights
- Frsnel term simulates behaviour when lights reaches a surface and some reflects, some penetrates

Don’t forget to follow Shawn’s awesome blog here .