What we're getting:

As you can see the glow-effect looks like shit. Here's the image for the glow-effect:

As you can see the alpha isnt correctly blending the parts where the alpha is pretty low in the image. The images are drawn back-to-front (there's 3 of them, the base texture, the text, and the glow), and they are drawn by expanding a quad in the GS.
Shader-code:
Texture2D tex2D;
SamplerState linearSampler
{
Filter = MIN_MAG_MIP_LINEAR;
AddressU = Wrap;
AddressV = Wrap;
};
BlendState SrcAlphaBlendingAdd
{
BlendEnable[0] = TRUE;
SrcBlend = SRC_ALPHA;
DestBlend = INV_SRC_ALPHA;
BlendOp = ADD;
SrcBlendAlpha = ZERO;
DestBlendAlpha = ZERO;
BlendOpAlpha = ADD;
RenderTargetWriteMask[0] = 0x0F;
};
DepthStencilState DisableDepthWrite
{
DepthEnable = FALSE;
DepthWriteMask = ZERO;
};
cbuffer EveryFrame
{
float posx;
float posy;
float dimx;
float dimy;
}
RasterizerState NoCulling
{
CullMode = NONE;
};
VSIn VSScene(VSIn input)
{
return input;
}
[maxvertexcount(4)]
void GS( point VSIn input[1], inout TriangleStream<PSSceneIn> triStream )
{
PSSceneIn output;
output.opacity = 1.0f;
//create sprite quad
float4 basepos = float4(posx, posy, 0, 1);
//bottom left
output.Pos = basepos + float4(0, dimy, 0, 0);
output.tex = float2(0,1);
triStream.Append(output);
//bottom right
output.Pos = basepos + float4(dimx, dimy, 0, 0);
output.tex = float2(1,1);
triStream.Append(output);
//top left
output.Pos = basepos;
output.tex = float2(0,0);
triStream.Append(output);
//top right
output.Pos = basepos + float4(dimx, 0, 0, 0);
output.tex = float2(1,0);
triStream.Append(output);
}
float4 PSScene(PSSceneIn input) : SV_Target
{
float4 tex = tex2D.Sample(linearSampler, input.tex);
return tex;
}
technique11 BasicTech
{
pass p0
{
// Set VS, GS, and PS
SetVertexShader( CompileShader( vs_4_0, VSScene() ) );
SetGeometryShader( CompileShader( gs_4_0, GS() ) );
SetPixelShader( CompileShader( ps_4_0, PSScene() ) );
SetDepthStencilState( DisableDepthWrite, 0 );
SetRasterizerState( NoCulling );
SetBlendState( SrcAlphaBlendingAdd, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF );
}
}






