mirror of
https://github.com/WinampDesktop/winamp.git
synced 2025-06-17 06:25:46 -04:00
Add crt-hyllian-sinc.fx, crt-geo-zfast.fx and update others (#3252)
* Add crt-hyllian-sinc.fx, crt-geo-zfast.fx and update others - Add crt-hyllian-sinc.fx; - Add crt-geo-zfast.fx; - Updated bicubic.fx and lanczos3.fx to allow prescaling; - Add include folder and mask.fxh and geom.fxh; * Update psx.jpg - No logos anymore.
This commit is contained in:
@ -32,15 +32,21 @@ uniform int BICUBIC_FILTER <
|
||||
ui_tooltip = "Bicubic: balanced. Catmull-Rom: sharp. B-Spline: blurred. Hermite: soft pixelized.";
|
||||
> = 0;
|
||||
|
||||
uniform float B_PRESCALE <
|
||||
ui_type = "drag";
|
||||
ui_min = 1.0;
|
||||
ui_max = 8.0;
|
||||
ui_step = 1.0;
|
||||
ui_label = "Prescale factor";
|
||||
> = 1.0;
|
||||
|
||||
uniform bool B_ANTI_RINGING <
|
||||
ui_type = "radio";
|
||||
ui_label = "Bicubic Anti-Ringing";
|
||||
ui_label = "Anti-Ringing";
|
||||
> = false;
|
||||
|
||||
uniform float2 NormalizedNativePixelSize < source = "normalized_native_pixel_size"; >;
|
||||
uniform float2 BufferToViewportRatio < source = "buffer_to_viewport_ratio"; >;
|
||||
uniform float2 ViewportSize < source = "viewportsize"; >;
|
||||
uniform float BufferWidth < source = "bufferwidth"; >;
|
||||
|
||||
texture2D tBicubic_P0{Width=BUFFER_WIDTH;Height=BUFFER_HEIGHT;Format=RGBA8;};
|
||||
sampler2D sBicubic_P0{Texture=tBicubic_P0;AddressU=CLAMP;AddressV=CLAMP;AddressW=CLAMP;MagFilter=POINT;MinFilter=POINT;};
|
||||
@ -89,9 +95,9 @@ float3 bicubic_ar(float fp, float3 C0, float3 C1, float3 C2, float3 C3)
|
||||
float4 PS_Bicubic_X(float4 vpos: SV_Position, float2 uv_tx : TEXCOORD) : SV_Target
|
||||
{
|
||||
// Both dimensions are unfiltered, so it looks for lores pixels.
|
||||
float2 ps = NormalizedNativePixelSize;
|
||||
float2 ps = NormalizedNativePixelSize/B_PRESCALE;
|
||||
float2 pos = uv_tx.xy/ps - float2(0.5, 0.0);
|
||||
float2 tc = (floor(pos) + float2(0.5, 0.5)) * ps;
|
||||
float2 tc = (floor(pos) + 0.5.xx) * ps;
|
||||
float2 fp = frac(pos);
|
||||
|
||||
float3 C0 = tex2D(ReShade::BackBuffer, tc + ps*float2(-1.0, 0.0)).rgb;
|
||||
@ -108,9 +114,9 @@ float4 PS_Bicubic_X(float4 vpos: SV_Position, float2 uv_tx : TEXCOORD) : SV_Targ
|
||||
float4 PS_Bicubic_Y(float4 vpos: SV_Position, float2 uv_tx : TEXCOORD) : SV_Target
|
||||
{
|
||||
// One must be careful here. Horizontal dimension is already filtered, so it looks for x in hires.
|
||||
float2 ps = float2(1.0/(ViewportSize.x*BufferToViewportRatio.x), NormalizedNativePixelSize.y);
|
||||
float2 ps = float2(1.0/BufferWidth, NormalizedNativePixelSize.y/B_PRESCALE);
|
||||
float2 pos = uv_tx.xy/ps - float2(0.0, 0.5);
|
||||
float2 tc = (floor(pos) + float2(0.5, 0.5)) * ps;
|
||||
float2 tc = (floor(pos) + 0.5.xx) * ps;
|
||||
float2 fp = frac(pos);
|
||||
|
||||
float3 C0 = tex2D(sBicubic_P0, tc + ps*float2(0.0, -1.0)).rgb;
|
||||
|
@ -28,14 +28,22 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
http://www.gnu.org/copyleft/gpl.html
|
||||
*/
|
||||
|
||||
uniform float L3_PRESCALE <
|
||||
ui_type = "drag";
|
||||
ui_min = 1.0;
|
||||
ui_max = 8.0;
|
||||
ui_step = 1.0;
|
||||
ui_label = "Prescale factor";
|
||||
> = 1.0;
|
||||
|
||||
|
||||
uniform bool LANCZOS3_ANTI_RINGING <
|
||||
ui_type = "radio";
|
||||
ui_label = "Lanczos3 Anti-Ringing";
|
||||
> = true;
|
||||
|
||||
uniform float2 NormalizedNativePixelSize < source = "normalized_native_pixel_size"; >;
|
||||
uniform float2 BufferToViewportRatio < source = "buffer_to_viewport_ratio"; >;
|
||||
uniform float2 ViewportSize < source = "viewportsize"; >;
|
||||
uniform float BufferWidth < source = "bufferwidth"; >;
|
||||
|
||||
texture2D tLanczos3_P0{Width=BUFFER_WIDTH;Height=BUFFER_HEIGHT;Format=RGBA8;};
|
||||
sampler2D sLanczos3_P0{Texture=tLanczos3_P0;AddressU=CLAMP;AddressV=CLAMP;AddressW=CLAMP;MagFilter=POINT;MinFilter=POINT;};
|
||||
@ -59,7 +67,7 @@ float3 lanczos3ar(float fp, float3 C0, float3 C1, float3 C2, float3 C3, float3 C
|
||||
float3 w1 = weight3(0.5 - fp * 0.5);
|
||||
float3 w2 = weight3(1.0 - fp * 0.5);
|
||||
|
||||
float sum = dot( w1, float3(1.,1.,1.)) + dot( w2, float3(1.,1.,1.));
|
||||
float sum = dot(w1, 1.0.xxx) + dot(w2, 1.0.xxx);
|
||||
w1 /= sum;
|
||||
w2 /= sum;
|
||||
|
||||
@ -83,9 +91,9 @@ float3 lanczos3ar(float fp, float3 C0, float3 C1, float3 C2, float3 C3, float3 C
|
||||
float4 PS_Lanczos3_X(float4 vpos: SV_Position, float2 uv_tx : TEXCOORD) : SV_Target
|
||||
{
|
||||
// Both dimensions are unfiltered, so it looks for lores pixels.
|
||||
float2 ps = NormalizedNativePixelSize;
|
||||
float2 ps = NormalizedNativePixelSize/L3_PRESCALE;
|
||||
float2 pos = uv_tx.xy/ps - float2(0.5, 0.0);
|
||||
float2 tc = (floor(pos) + float2(0.5, 0.5)) * ps;
|
||||
float2 tc = (floor(pos) + 0.5.xx) * ps;
|
||||
float2 fp = frac(pos);
|
||||
|
||||
float3 C0 = tex2D(ReShade::BackBuffer, tc + ps*float2(-2.0, 0.0)).rgb;
|
||||
@ -104,9 +112,9 @@ float4 PS_Lanczos3_X(float4 vpos: SV_Position, float2 uv_tx : TEXCOORD) : SV_Tar
|
||||
float4 PS_Lanczos3_Y(float4 vpos: SV_Position, float2 uv_tx : TEXCOORD) : SV_Target
|
||||
{
|
||||
// One must be careful here. Horizontal dimension is already filtered, so it looks for x in hires.
|
||||
float2 ps = float2(1.0/(ViewportSize.x*BufferToViewportRatio.x), NormalizedNativePixelSize.y);
|
||||
float2 ps = float2(1.0/BufferWidth, NormalizedNativePixelSize.y/L3_PRESCALE);
|
||||
float2 pos = uv_tx.xy/ps - float2(0.0, 0.5);
|
||||
float2 tc = (floor(pos) + float2(0.5, 0.5)) * ps;
|
||||
float2 tc = (floor(pos) + 0.5.xx) * ps;
|
||||
float2 fp = frac(pos);
|
||||
|
||||
float3 C0 = tex2D(sLanczos3_P0, tc + ps*float2(0.0, -2.0)).rgb;
|
||||
|
Reference in New Issue
Block a user