mirror of
				https://github.com/RetroDECK/Duckstation.git
				synced 2025-04-10 19:15:14 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			77 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			HLSL
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			HLSL
		
	
	
	
	
	
| /*
 | |
|     Scanlines Sine Absolute Value
 | |
|     An ultra light scanline shader
 | |
|     by RiskyJumps
 | |
| 	license: public domain
 | |
| */
 | |
| 
 | |
| #include "ReShade.fxh"
 | |
| 
 | |
| uniform float texture_sizeY <
 | |
| 	ui_type = "drag";
 | |
| 	ui_min = 1.0;
 | |
| 	ui_max = BUFFER_HEIGHT;
 | |
| 	ui_label = "Scanlines Height [Scanlines-Absolute]";
 | |
| > = 240.0;
 | |
| 
 | |
| uniform float amp <
 | |
| 	ui_type = "drag";
 | |
| 	ui_min = 0.0;
 | |
| 	ui_max = 2.0;
 | |
| 	ui_step = 0.05;
 | |
| 	ui_label = "Amplitude [Scanlines-Absolute]";
 | |
| > = 1.25;
 | |
| 
 | |
| uniform float phase <
 | |
| 	ui_type = "drag";
 | |
| 	ui_min = 0.0;
 | |
| 	ui_max = 2.0;
 | |
| 	ui_step = 0.05;
 | |
| 	ui_label = "Phase [Scanlines-Absolute]";
 | |
| > = 0.0;
 | |
| 
 | |
| uniform float lines_black <
 | |
| 	ui_type = "drag";
 | |
| 	ui_min = 0.0;
 | |
| 	ui_max = 1.0;
 | |
| 	ui_step = 0.05;
 | |
| 	ui_label = "Lines Blacks [Scanlines-Absolute]";
 | |
| > = 0.0;
 | |
| 
 | |
| uniform float lines_white <
 | |
| 	ui_type = "drag";
 | |
| 	ui_min = 0.0;
 | |
| 	ui_max = 2.0;
 | |
| 	ui_step = 0.05;
 | |
| 	ui_label = "Lines Whites [Scanlines-Absolute]";
 | |
| > = 1.0;
 | |
|  
 | |
| #define freq             0.500000
 | |
| #define offset           0.000000
 | |
| #define pi               3.141592654
 | |
| 
 | |
| float4 PS_ScanlinesAbs(float4 pos : SV_POSITION, float2 tex : TEXCOORD0) : SV_TARGET 
 | |
| {
 | |
|     float3 color = tex2D(ReShade::BackBuffer, tex).xyz;
 | |
|     float grid;
 | |
|  
 | |
|     float lines;
 | |
| 	
 | |
| 	float omega = 2.0 * pi * freq;  // Angular frequency
 | |
| 	float angle = tex.y * omega * texture_sizeY + phase;
 | |
|  
 | |
|     lines = sin(angle);
 | |
|     lines *= amp;
 | |
|     lines += offset;
 | |
|     lines = abs(lines) * (lines_white - lines_black) + lines_black;
 | |
|     color *= lines;
 | |
|  
 | |
|     return color.xyzz;
 | |
| }
 | |
| 
 | |
| technique ScanlinesAbs {
 | |
| 	pass ScanlinesAbsolute{
 | |
| 		VertexShader = PostProcessVS;
 | |
| 		PixelShader = PS_ScanlinesAbs;
 | |
| 	}
 | |
| } | 
