Question and Suggestion about pixel shaders.

hilalpro

Member
is there a way to incorporate custom shader effects to the scene after the downscale ? from what i heard its better process the shaders after the resizing is done.

i have some special softer and sharpen shader effects that i wanna implement to video

special softer
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 PI acos(-1)

#define dx one_over_width
#define dy one_over_height

#define val0 0.3
#define val1 0.6

float4 main(float2 tex : TEXCOORD0) : COLOR
{
float4 current = tex2D(s0, tex);

float4 Total = current ;
float n = 1;

float4 c0 = tex2D( s0, tex + float2( -dx , -dy ) );
if( length( current - c0 ) < val0 )
{
Total += c0*val1;
n += val1 ;
}


c0 = tex2D( s0, tex + float2( 0 , -dy ) );
if( length( current - c0 ) < val0 )
{
Total += c0*val1;
n += val1 ;
}

c0 = tex2D( s0, tex + float2( dx , -dy ) );
if( length( current - c0 ) < val0 )
{
Total += c0*val1;
n += val1 ;
}

c0 = tex2D( s0, tex + float2( -dx , 0 ) );
if( length( current - c0 ) < val0 )
{
Total += c0*val1;
n += val1 ;
}

c0 = tex2D( s0, tex + float2( dx , 0 ) );
if( length( current - c0 ) < val0 )
{
Total += c0*val1;
n += val1 ;
}

c0 = tex2D( s0, tex + float2( -dx , dy ) );
if( length( current - c0 ) < val0 )
{
Total += c0*val1;
n += val1 ;
}

c0 = tex2D( s0, tex + float2( 0 , dy ) );
if( length( current - c0 ) < val0 )
{
Total += c0*val1;
n += val1 ;
}

c0 = tex2D( s0, tex + float2( dx , dy ) );
if( length( current - c0 ) < val0 )
{
Total += c0*val1;
n += val1 ;
}

return( Total / n );
}

SharpenFlou

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 PI acos(-1)

float4 main( float2 tex : TEXCOORD0 ) : COLOR
{
float dx = one_over_width;
float dy = one_over_height;

// recupperation de la matrice de 9 points
// [ 1, 2 , 3 ]
// [ 4,ori, 5 ]
// [ 6, 7 , 8 ]

float4 ori = tex2D(s0, tex);
float4 c1 = tex2D(s0, tex + float2(-dx,-dy));
float4 c2 = tex2D(s0, tex + float2(0,-dy));
float4 c3 = tex2D(s0, tex + float2(dx,-dy));
float4 c4 = tex2D(s0, tex + float2(-dx,0));
float4 c5 = tex2D(s0, tex + float2(dx,0));
float4 c6 = tex2D(s0, tex + float2(-dx,dy));
float4 c7 = tex2D(s0, tex + float2(0,dy));
float4 c8 = tex2D(s0, tex + float2(dx,dy));

// calcul image floue (filtre gaussien)
float multipliers[9]=
{1,2,1,
2,4,2,
1,2,1};

float4 total=0;
total += c1 * multipliers[0];
total += c2 * multipliers[1];
total += c3 * multipliers[2];
total += c4 * multipliers[3];
total += ori * multipliers[4];
total += c5 * multipliers[5];
total += c6 * multipliers[6];
total += c7 * multipliers[7];
total += c8 * multipliers[8];

// 1/(1+2+1+2+4+2+1+2+1) = 1/ 16 = .0625
total *= 0.0625f;

// soustraction de l'image flou a l'image originale
total = 2*ori - total;
//return ori;
return total;
}

this is what it looks like without the effects
http://i.imgur.com/SpTu1.png

with the effects
http://i.imgur.com/YEydx.png

if that is possible it would be really cool to just browse for any effects on the computer and be able easily add them to obs

tnx for reading
 

Lain

Forum Admin
Lain
Forum Moderator
Developer
custom shader filtering on the output or individual sources is something I have do maybe* have planned down the line in the future. though I want to make sure everything still has maximum performance -- I'm need to be very careful about how I go about these things.

edit: *changed to maybe from definitely just because I underestimated the amount of features people would ask for
 

hilalpro

Member
Jim said:
custom shader filtering on the output or individual sources is something I have do definitely have planned down the line in the future. though I want to make sure everything still has maximum performance -- I'm need to be very careful about how I go about these things.
very good point, i guess it also depends on the effect itself some effects can cause a bit of delay/frame lags and trash output , while others are much simpler (those that just play with the color ranges).. i guess you can give it a try with test build some time
 

JohnB

New Member
Jim said:
custom shader filtering on the output or individual sources is something I have do definitely have planned down the line in the future. though I want to make sure everything still has maximum performance -- I'm need to be very careful about how I go about these things.

I do apologize for bringing up a thread that's several months old, but this suggestion still quite interests me.

Jim, are you able to at least plan some time to give this a go, even if it's not prime performance, so that we have something to go on? I understand you're very busy as is, and you're all doing a fantastic job, so I'm asking this courteously.
 

Lain

Forum Admin
Lain
Forum Moderator
Developer
I have to change that to a maybe from definitely because there are just so many features everyone wants and I'm only one guy, I seriously underestimated the amount of important things I'd have to be doing down the line. There are literally countless potential features and minor issues that I have to fix constantly, and every time I add a new feature I have to deal with it's potential issues down the line, so I'm trying to slow down on the features and focus more on getting rid of bugs and making the app more solid and stable.
 

JohnB

New Member
Jim said:
I have to change that to a maybe from definitely because there are just so many features everyone wants and I'm only one guy, I seriously underestimated the amount of important things I'd have to be doing down the line. There are literally countless potential features and minor issues that I have to fix constantly, and every time I add a new feature I have to deal with it's potential issues down the line, so I'm trying to slow down on the features and focus more on getting rid of bugs and making the app more solid and stable.

Roger that.

You're doing it fantastically well. Thanks for all your effort.
 
Top