I was testing a game i've done with my engine (a 3d Vertical Shooter) on my laptop (with an Intel X3100 card) and i've found this discrepancies between DX9 and DX10...
1024x768 Fullscreen DX10 : 140 FPS without shield, 58 FPS with shield (7 ms vs 17 ms)
1024x768 Fullscreen DX9 : 200 FPS without shield, 160 FPS with shield. (5 ms vs 6.25 ms)
The "shield" is a sphere drawed over the player (the player is large 1/9 of the screen) with a texture almost all transparent (except for a mark) with a color as diffuse light. The texture is 64x64, the sphere is very little in polygon count. (well, the scene is generally 10000-15000 triangles, the sphere is like 200. :D)
On the area blended there are other than the player like 10-15 particles from the space behind.
Every mesh except for the shield are drawed without blending active.
Why the blending on DX10 is causing a major slowdown? (10 ms of increase is a big hit for blending 1/9 of the screen one time. :|)
Here's the code related to the PS and Blend state in DX9 and DX10.
DX10
AlphaToCoverageEnable = FALSE;
BlendEnable[0] = TRUE;
SrcBlend = SRC_ALPHA;
DestBlend = INV_SRC_ALPHA;
BlendOp = ADD;
SrcBlendAlpha = SRC_ALPHA;
DestBlendAlpha = INV_SRC_ALPHA;
BlendOpAlpha = ADD;
RenderTargetWriteMask[0] = 0x0F;
/////////////////////////////////////////////////////////////
float4 outputColor = g_texture.Sample( samLinear, input.Tex ) * input.color;
return outputColor;
DX9
AlphaBlendEnable = true;
SrcBlend = 5;
DestBlend = 6;
BlendOp = ADD;
SrcBlendAlpha = 5;
DestBlendAlpha = 6;
BlendOpAlpha = ADD;
/////////////////////////////////////////////////////////////
float4 outputColor = g_texture.Sample( samLinear, input.Tex ) * input.color;
return outputColor;
Thanks for the help.