ProjectArcade
1/*
2Scanlines Sine Absolute Value
3An ultra light scanline shader
4by RiskyJumps
5license: public domain
6*/
7
8#include "ReShade.fxh"
9
10uniform float texture_sizeY <
11ui_type = "drag";
12ui_min = 1.0;
13ui_max = BUFFER_HEIGHT;
14ui_label = "Scanlines Height [Scanlines-Absolute]";
15> = 240.0;
16
17uniform float amp <
18ui_type = "drag";
19ui_min = 0.0;
20ui_max = 2.0;
21ui_step = 0.05;
22ui_label = "Amplitude [Scanlines-Absolute]";
23> = 1.25;
24
25uniform float phase <
26ui_type = "drag";
27ui_min = 0.0;
28ui_max = 2.0;
29ui_step = 0.05;
30ui_label = "Phase [Scanlines-Absolute]";
31> = 0.0;
32
33uniform float lines_black <
34ui_type = "drag";
35ui_min = 0.0;
36ui_max = 1.0;
37ui_step = 0.05;
38ui_label = "Lines Blacks [Scanlines-Absolute]";
39> = 0.0;
40
41uniform float lines_white <
42ui_type = "drag";
43ui_min = 0.0;
44ui_max = 2.0;
45ui_step = 0.05;
46ui_label = "Lines Whites [Scanlines-Absolute]";
47> = 1.0;
48
49#define freq 0.500000
50#define offset 0.000000
51#define pi 3.141592654
52
53float4 PS_ScanlinesAbs(float4 pos : SV_POSITION, float2 tex : TEXCOORD0, float angle : TEXCOORD2) : SV_TARGET
54{
55float3 color = tex2D(ReShade::BackBuffer, tex).xyz;
56float grid;
57
58float lines;
59
60float omega = 2.0 * pi * freq; // Angular frequency
61angle = tex.y * omega * texture_sizeY + phase;
62
63lines = sin(angle);
64lines *= amp;
65lines += offset;
66lines = abs(lines) * (lines_white - lines_black) + lines_black;
67color *= lines;
68
69return color.xyzz;
70}
71
72technique ScanlinesAbs {
73pass ScanlinesAbsolute{
74VertexShader = PostProcessVS;
75PixelShader = PS_ScanlinesAbs;
76}
77}