12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- // Based on libretro shader https://github.com/libretro/common-shaders/blob/master/test/lab/misc/sharpness.cg
- // Converted to obs effect file by Nibbles
- uniform float4x4 ViewProj;
- uniform texture2d image;
- uniform float sharpness;
- uniform float texture_width;
- uniform float texture_height;
- sampler_state def_sampler {
- Filter = Linear;
- AddressU = Clamp;
- AddressV = Clamp;
- };
- struct VertInOut {
- float4 pos : POSITION;
- float2 uv : TEXCOORD0;
- };
- struct VertOut {
- float4 pos : POSITION;
- float2 uv : TEXCOORD0;
- float4 t1 : TEXCOORD1;
- float4 t2 : TEXCOORD2;
- float4 t3 : TEXCOORD3;
- };
- VertOut VSDefault(VertInOut vert_in)
- {
- VertOut vert_out;
- vert_out.pos = mul(float4(vert_in.pos.xyz, 1.0), ViewProj);
- vert_out.uv = vert_in.uv;
- float2 ps = float2(1.0/texture_width, 1.0/texture_height);
- float dx = ps.x;
- float dy = ps.y;
- vert_out.t1 = vert_in.uv.xxxy + float4( -dx, 0, dx, -dy); // A B C
- vert_out.t2 = vert_in.uv.xxxy + float4( -dx, 0, dx, 0); // D E F
- vert_out.t3 = vert_in.uv.xxxy + float4( -dx, 0, dx, dy); // G H I
- return vert_out;
- }
- float4 PSDrawBare(VertOut vert_in) : TARGET
- {
- float4 E = image.Sample(def_sampler, vert_in.uv);
- float4 color = 8*E;
- float4 B = image.Sample(def_sampler, vert_in.t1.yw);
- float4 D = image.Sample(def_sampler, vert_in.t2.xw);
- float4 F = image.Sample(def_sampler, vert_in.t2.zw);
- float4 H = image.Sample(def_sampler, vert_in.t3.yw);
- color -= image.Sample(def_sampler, vert_in.t1.xw);
- color -= B;
- color -= image.Sample(def_sampler, vert_in.t1.zw);
- color -= D;
- color -= F;
- color -= image.Sample(def_sampler, vert_in.t3.xw);
- color -= H;
- color -= image.Sample(def_sampler, vert_in.t3.zw);
- color = ((E!=F && E!=D) || (E!=B && E!=H)) ? saturate(E + color*sharpness) : E;
- return color;
- }
- technique Draw
- {
- pass
- {
- vertex_shader = VSDefault(vert_in);
- pixel_shader = PSDrawBare(vert_in);
- }
- }
|