Hi guys,

In my view the PC blending approach has the following pros/cons:

PROS

+ Cheaper than HW based solutions

+ More resolution options (e.g. 2350 x 1000 @ 75 Hz effective)

+ Orbiting to avoid burn-in (this is question mark if and only if Powerstrip works with dual heads, so take it with a grain of salt).

CONS

- High risk project. May not work at all.

*This is the biggest con by far.*
- Requires an engineering degree and lot's of time to get it right

- Only PC sources, even limited to a single player (MPC, VLC, etc.) and only compatible with certain hardware; this means no HD-DVD/Blu-Ray for the time being.

Having said that I experimented a bit with a pixel shader approach to the blending are. This is a piece of cake in terms of processing power, but it still needs quite some work to get it right. I am attaching some code that should be used in Media Player Classic.

Code:

sampler s0 : register(s0);
float4 p0 : register(c0);
float4 p1 : register(c1);
#define width (p0[0])
#define height (p0[1])
#define counter (p0[2])
#define clock (p0[3])
#define one_over_width (p1[0])
#define one_over_height (p1[1])
#define BZ 0.05
#define BZ2 BZ/2
#define PI acos(-1)
float4 main(float2 tex : TEXCOORD0) : COLOR
{
float4 c0 = 0;
if (tex.x<(0.5 - BZ2))
c0 = tex2D(s0, float2(tex.x +BZ2 , tex.y));
else if (tex.x <=0.5)
c0 = mul(tex2D(s0, float2(tex.x +BZ2 , tex.y)), lerp(1, 0.1f, (tex.x-0.5+BZ2)/BZ2));
else if (tex.x<=(0.5 + BZ2))
c0 = mul(tex2D(s0, float2( tex.x -BZ2 , tex.y)), lerp(1, 0.1f, (0.5+BZ2-tex.x)/BZ2));
else
c0 = tex2D(s0, float2(tex.x - BZ2, tex.y));
return c0;

The above is known to be buggy and does linear blending only, which would result in a brighter line if combined. This could be changed by replacing:

lerp(1, 0.1f, (tex.x-0.5+BZ2)/BZ2)

with an exponential rolloff curve to account for the correct gamma addition. Of course the code can be optimized in many other ways. Feel free to use this code in the RAC spec.

If only the HW approach was less expensive...

rgs - Andres