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 .



Recent Comments