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
SharpenFlou
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
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 );
}
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;
}
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