Requests for effect ports to ReShade 3.0
- Sassy
The UI-Mask "Shader"!
Oh and I really liked the ColorMap part from TuningPalette!
- Insomnia
- Myashi
crosire wrote: Added martinsh's film grain effect (the one ALo81 had ported) as FilmGrain2
Added DPX effect
Added Sepia effect
Replaced YACA with CeeJay's CA
Thanks Crosire!
I've almost got back all my fav Ceejay shaders.
The last one i miss it is Bloom ( sorry but i don't like the other one ).
While from the old reshade i miss these other two: Spherical Tonemap and Reinhard ( both of Marty ).
- MrFreud
Bloom by Gannosa
Gauss by Ioxa (gaussian bloom, gaussian blur, unsharpmask)
Thank you!
- XIIICaesar
- Nerd
- Ioxa
MrFreud wrote: from Reshade 2.0.3f1:
Bloom by Gannosa
Gauss by Ioxa (gaussian bloom, gaussian blur, unsharpmask)
Thank you!
Gaussian blur is on GitHub, its been changed a little so it can be adjusted in the GUI but you should be able to get the same results.
I made an unsharpmask shader based off the new gaussian blur but I didn't put it on GitHub because there are already a few sharpening shaders on there. But here it is if you want to try it, just paste the code into a .fx file.
//UnsharpMask by Ioxa
//Version 1.0 for ReShade 3.0
//Settings
uniform int BlurRadius <
ui_type = "drag";
ui_min = 0; ui_max = 4;
ui_tooltip = "[0|1|2|3|4] Adjusts the blur radius. Higher values increase the radius";
> = 1;
uniform float BlurOffset <
ui_type = "drag";
ui_min = 0.00; ui_max = 1.00;
ui_tooltip = "Additional adjustment for the blur radius. Values less than 1.00 will reduce the radius.";
ui_step = 0.20;
> = 1.00;
uniform float BrightClamp <
ui_type = "drag";
ui_min = 0.00; ui_max = 0.50;
ui_tooltip = "Clamps the amount of sharpening done to bright pixels.";
> = 0.040;
uniform float DarkClamp <
ui_type = "drag";
ui_min = 0.00; ui_max = 0.50;
ui_tooltip = "Clamps the amount of sharpening done to dark pixels.";
> = 0.040;
uniform float Strength <
ui_type = "drag";
ui_min = 0.00; ui_max = 1.00;
ui_tooltip = "Adjusts the strength of the effect.";
> = 0.30;
#include "ReShade.fxh"
texture UnsharpMaskTex { Width = BUFFER_WIDTH; Height = BUFFER_HEIGHT; Format = R8; };
sampler UnsharpMaskSampler { Texture = UnsharpMaskTex;};
float3 UnsharpMaskFinal(in float4 pos : SV_Position, in float2 texcoord : TEXCOORD) : COLOR
{
float blur = tex2D(UnsharpMaskSampler, texcoord).rgb;
if(BlurRadius == 0)
{
float offset[4] = { 0.0, 1.1824255238, 3.0293122308, 5.0040701377 };
float weight[4] = { 0.39894, 0.2959599993, 0.0045656525, 0.00000149278686458842 };
blur *= weight[0];
[loop]
for(int i = 1; i < 4; ++i)
{
blur += tex2D(UnsharpMaskSampler, texcoord + float2(0.0, offset[i] * ReShade::PixelSize.y) * BlurOffset).r * weight[i];
blur += tex2D(UnsharpMaskSampler, texcoord - float2(0.0, offset[i] * ReShade::PixelSize.y) * BlurOffset).r * weight[i];
}
}
if(BlurRadius == 1)
{
float offset[6] = { 0.0, 1.4584295168, 3.40398480678, 5.3518057801, 7.302940716, 9.2581597095 };
float weight[6] = { 0.13298, 0.23227575, 0.1353261595, 0.0511557427, 0.01253922, 0.0019913644 };
blur *= weight[0];
[loop]
for(int i = 1; i < 6; ++i)
{
blur += tex2D(UnsharpMaskSampler, texcoord + float2(0.0, offset[i] * ReShade::PixelSize.y) * BlurOffset).r * weight[i];
blur += tex2D(UnsharpMaskSampler, texcoord - float2(0.0, offset[i] * ReShade::PixelSize.y) * BlurOffset).r * weight[i];
}
}
if(BlurRadius == 2)
{
float offset[11] = { 0.0, 1.4895848401, 3.4757135714, 5.4618796741, 7.4481042327, 9.4344079746, 11.420811147, 13.4073334, 15.3939936778, 17.3808101174, 19.3677999584 };
float weight[11] = { 0.06649, 0.1284697563, 0.111918249, 0.0873132676, 0.0610011113, 0.0381655709, 0.0213835661, 0.0107290241, 0.0048206869, 0.0019396469, 0.0006988718 };
blur *= weight[0];
[loop]
for(int i = 1; i < 11; ++i)
{
blur += tex2D(UnsharpMaskSampler, texcoord + float2(0.0, offset[i] * ReShade::PixelSize.y) * BlurOffset).r * weight[i];
blur += tex2D(UnsharpMaskSampler, texcoord - float2(0.0, offset[i] * ReShade::PixelSize.y) * BlurOffset).r * weight[i];
}
}
if(BlurRadius == 3)
{
float offset[15] = { 0.0, 1.4953705027, 3.4891992113, 5.4830312105, 7.4768683759, 9.4707125766, 11.4645656736, 13.4584295168, 15.4523059431, 17.4461967743, 19.4401038149, 21.43402885, 23.4279736431, 25.4219399344, 27.4159294386 };
float weight[15] = { 0.0443266667, 0.0872994708, 0.0820892038, 0.0734818355, 0.0626171681, 0.0507956191, 0.0392263968, 0.0288369812, 0.0201808877, 0.0134446557, 0.0085266392, 0.0051478359, 0.0029586248, 0.0016187257, 0.0008430913 };
blur *= weight[0];
[loop]
for(int i = 1; i < 15; ++i)
{
blur += tex2D(UnsharpMaskSampler, texcoord + float2(0.0, offset[i] * ReShade::PixelSize.y) * BlurOffset).r * weight[i];
blur += tex2D(UnsharpMaskSampler, texcoord - float2(0.0, offset[i] * ReShade::PixelSize.y) * BlurOffset).r * weight[i];
}
}
if(BlurRadius == 4)
{
float offset[18] = { 0.0, 1.4953705027, 3.4891992113, 5.4830312105, 7.4768683759, 9.4707125766, 11.4645656736, 13.4584295168, 15.4523059431, 17.4461967743, 19.4661974725, 21.4627427973, 23.4592916956, 25.455844494, 27.4524015179, 29.4489630909, 31.445529535, 33.4421011704 };
float weight[18] = { 0.033245, 0.0659162217, 0.0636705814, 0.0598194658, 0.0546642566, 0.0485871646, 0.0420045997, 0.0353207015, 0.0288880982, 0.0229808311, 0.0177815511, 0.013382297, 0.0097960001, 0.0069746748, 0.0048301008, 0.0032534598, 0.0021315311, 0.0013582974 };
blur *= weight[0];
[loop]
for(int i = 1; i < 18; ++i)
{
blur += tex2D(UnsharpMaskSampler, texcoord + float2(0.0, offset[i] * ReShade::PixelSize.y) * BlurOffset).r * weight[i];
blur += tex2D(UnsharpMaskSampler, texcoord - float2(0.0, offset[i] * ReShade::PixelSize.y) * BlurOffset).r * weight[i];
}
}
float3 orig = tex2D(ReShade::BackBuffer, texcoord).rgb;
float luma = dot(orig,float3(0.2126, 0.7152, 0.0722));
float sharp = (luma - blur) * Strength;
sharp = clamp(sharp, -DarkClamp, BrightClamp);
orig += sharp;
return saturate(orig);
}
float UnsharpMask1(in float4 pos : SV_Position, in float2 texcoord : TEXCOORD) : COLOR
{
float3 blur = tex2D(ReShade::BackBuffer, texcoord).rgb;
if(BlurRadius == 0)
{
float offset[4] = { 0.0, 1.1824255238, 3.0293122308, 5.0040701377 };
float weight[4] = { 0.39894, 0.2959599993, 0.0045656525, 0.00000149278686458842 };
blur *= weight[0];
[loop]
for(int i = 1; i < 4; ++i)
{
blur += tex2D(ReShade::BackBuffer, texcoord + float2(offset[i] * ReShade::PixelSize.x, 0.0) * BlurOffset).rgb * weight[i];
blur += tex2D(ReShade::BackBuffer, texcoord - float2(offset[i] * ReShade::PixelSize.x, 0.0) * BlurOffset).rgb * weight[i];
}
}
if(BlurRadius == 1)
{
float offset[6] = { 0.0, 1.4584295168, 3.40398480678, 5.3518057801, 7.302940716, 9.2581597095 };
float weight[6] = { 0.13298, 0.23227575, 0.1353261595, 0.0511557427, 0.01253922, 0.0019913644 };
blur *= weight[0];
[loop]
for(int i = 1; i < 6; ++i)
{
blur += tex2D(ReShade::BackBuffer, texcoord + float2(offset[i] * ReShade::PixelSize.x, 0.0) * BlurOffset).rgb * weight[i];
blur += tex2D(ReShade::BackBuffer, texcoord - float2(offset[i] * ReShade::PixelSize.x, 0.0) * BlurOffset).rgb * weight[i];
}
}
if(BlurRadius == 2)
{
float offset[11] = { 0.0, 1.4895848401, 3.4757135714, 5.4618796741, 7.4481042327, 9.4344079746, 11.420811147, 13.4073334, 15.3939936778, 17.3808101174, 19.3677999584 };
float weight[11] = { 0.06649, 0.1284697563, 0.111918249, 0.0873132676, 0.0610011113, 0.0381655709, 0.0213835661, 0.0107290241, 0.0048206869, 0.0019396469, 0.0006988718 };
blur *= weight[0];
[loop]
for(int i = 1; i < 11; ++i)
{
blur += tex2D(ReShade::BackBuffer, texcoord + float2(offset[i] * ReShade::PixelSize.x, 0.0) * BlurOffset).rgb * weight[i];
blur += tex2D(ReShade::BackBuffer, texcoord - float2(offset[i] * ReShade::PixelSize.x, 0.0) * BlurOffset).rgb * weight[i];
}
}
if(BlurRadius == 3)
{
float offset[15] = { 0.0, 1.4953705027, 3.4891992113, 5.4830312105, 7.4768683759, 9.4707125766, 11.4645656736, 13.4584295168, 15.4523059431, 17.4461967743, 19.4401038149, 21.43402885, 23.4279736431, 25.4219399344, 27.4159294386 };
float weight[15] = { 0.0443266667, 0.0872994708, 0.0820892038, 0.0734818355, 0.0626171681, 0.0507956191, 0.0392263968, 0.0288369812, 0.0201808877, 0.0134446557, 0.0085266392, 0.0051478359, 0.0029586248, 0.0016187257, 0.0008430913 };
blur *= weight[0];
[loop]
for(int i = 1; i < 15; ++i)
{
blur += tex2D(ReShade::BackBuffer, texcoord + float2(offset[i] * ReShade::PixelSize.x, 0.0) * BlurOffset).rgb * weight[i];
blur += tex2D(ReShade::BackBuffer, texcoord - float2(offset[i] * ReShade::PixelSize.x, 0.0) * BlurOffset).rgb * weight[i];
}
}
if(BlurRadius == 4)
{
float offset[18] = { 0.0, 1.4953705027, 3.4891992113, 5.4830312105, 7.4768683759, 9.4707125766, 11.4645656736, 13.4584295168, 15.4523059431, 17.4461967743, 19.4661974725, 21.4627427973, 23.4592916956, 25.455844494, 27.4524015179, 29.4489630909, 31.445529535, 33.4421011704 };
float weight[18] = { 0.033245, 0.0659162217, 0.0636705814, 0.0598194658, 0.0546642566, 0.0485871646, 0.0420045997, 0.0353207015, 0.0288880982, 0.0229808311, 0.0177815511, 0.013382297, 0.0097960001, 0.0069746748, 0.0048301008, 0.0032534598, 0.0021315311, 0.0013582974 };
blur *= weight[0];
[loop]
for(int i = 1; i < 18; ++i)
{
blur += tex2D(ReShade::BackBuffer, texcoord + float2(offset[i] * ReShade::PixelSize.x, 0.0) * BlurOffset).rgb * weight[i];
blur += tex2D(ReShade::BackBuffer, texcoord - float2(offset[i] * ReShade::PixelSize.x, 0.0) * BlurOffset).rgb * weight[i];
}
}
return dot(blur,float3(0.2126, 0.7152, 0.0722));
}
technique UnsharpMask
{
pass Blur1
{
VertexShader = PostProcessVS;
PixelShader = UnsharpMask1;
RenderTarget = UnsharpMaskTex;
}
pass BlurFinal
{
VertexShader = PostProcessVS;
PixelShader = UnsharpMaskFinal;
}
}
As for gaussian bloom, I kinda gave up on it. I just can't get it to look the same as it did in Boulotaur2024's original shader.
Surface blur is like gaussian blur but it won't blur across edges. Its good for noise reduction or subtle blurring without creating halos.Nerd wrote: What is SurfaceBlur for in particular? It's a very subtle effect. It doesn't do what either the storybook or cel shaders do though, so I hope someone can port those.
If you're going for a cel shaded look you could try over sharpening the image to bring out more edges then use cartoon, and then use surface blur to smooth things out. If you need more blurring from surface blur you can add this to the Preprocessor Definitions in the settings tab,
SurfaceBlurIterations=2
or
SurfaceBlurIterations=3
- Insomnia
Aw that's a shame you gave up on adding gauss bloom. I hope you will be able to port it sometime. I think it was a great little shader and I've used it ever since you ported it to Reshade 0.18 up until 2.0.
/ Insomnia
- MrFreud
- Insomnia
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//LICENSE AGREEMENT AND DISTRIBUTION RULES:
//1 Copyrights of the Master Effect exclusively belongs to author - Gilcher Pascal aka Marty McFly.
//2 Master Effect (the SOFTWARE) is DonateWare application, which means you may or may not pay for this software to the author as donation.
//3 If included in ENB presets, credit the author (Gilcher Pascal aka Marty McFly).
//4 Software provided "AS IS", without warranty of any kind, use it on your own risk.
//5 You may use and distribute software in commercial or non-commercial uses. For commercial use it is required to warn about using this software (in credits, on the box or other places). Commercial distribution of software as part of the games without author permission prohibited.
//6 Author can change license agreement for new versions of the software.
//7 All the rights, not described in this license agreement belongs to author.
//8 Using the Master Effect means that user accept the terms of use, described by this license agreement.
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//For more information about license agreement contact me:
//https://www.facebook.com/MartyMcModding
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//Copyright (c) 2009-2015 Gilcher Pascal aka Marty McFly
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//Credits :: Ubisoft
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//Amateur port by Insomnia
uniform float ReinhardLinearSlope <
ui_type = "drag";
ui_min = 1.0; ui_max = 5.0;
ui_tooltip = "how steep the color curve is at linear point";
> = 1.250;
uniform float ReinhardLinearWhitepoint <
ui_type = "drag";
ui_min = 0.0; ui_max = 20.0;
ui_tooltip = "...";
> = 7.250;
uniform float ReinhardLinearPoint <
ui_type = "drag";
ui_min = 0.0; ui_max = 2.0;
ui_tooltip = "...";
> = 0.150;
#include "ReShade.fxh"
float3 ReinhardLinearPass(float4 position : SV_Position, float2 texcoord : TexCoord) : SV_Target
{
float3 color = tex2D(ReShade::BackBuffer, texcoord).rgb;
float3 x = color.rgb;
//float x = color;
const float W = ReinhardLinearWhitepoint; // Linear White Point Value
const float L = ReinhardLinearPoint; // Linear point
const float C = ReinhardLinearSlope; // Slope of the linear section
const float K = (1 - L * C) / C; // Scale (fixed so that the derivatives of the Reinhard and linear functions are the same at x = L)
float3 reinhard = L * C + (1 - L * C) * (1 + K * (x - L) / ((W - L) * (W - L))) * (x - L) / (x - L + K);
// gamma space or not?
color.rgb = (x > L) ? reinhard : C * x;
return color;
}
technique ReinhardLinear
{
pass
{
VertexShader = PostProcessVS;
PixelShader = ReinhardLinearPass;
}
}
- XIIICaesar
Dude, how do you port them over though? I been trying to find any material or tutorials on how. Thanx for this too.Insomnia wrote: I "ported" the Reinhard Linear shader to 3.0. Honestly I had no idea what I was doing, but it ended up working. Somewhat....
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //LICENSE AGREEMENT AND DISTRIBUTION RULES: //1 Copyrights of the Master Effect exclusively belongs to author - Gilcher Pascal aka Marty McFly. //2 Master Effect (the SOFTWARE) is DonateWare application, which means you may or may not pay for this software to the author as donation. //3 If included in ENB presets, credit the author (Gilcher Pascal aka Marty McFly). //4 Software provided "AS IS", without warranty of any kind, use it on your own risk. //5 You may use and distribute software in commercial or non-commercial uses. For commercial use it is required to warn about using this software (in credits, on the box or other places). Commercial distribution of software as part of the games without author permission prohibited. //6 Author can change license agreement for new versions of the software. //7 All the rights, not described in this license agreement belongs to author. //8 Using the Master Effect means that user accept the terms of use, described by this license agreement. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //For more information about license agreement contact me: //https://www.facebook.com/MartyMcModding //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //Copyright (c) 2009-2015 Gilcher Pascal aka Marty McFly //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //Credits :: Ubisoft //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //Amateur port by Insomnia uniform float ReinhardLinearSlope < ui_type = "drag"; ui_min = 1.0; ui_max = 5.0; ui_tooltip = "how steep the color curve is at linear point"; > = 1.250; uniform float ReinhardLinearWhitepoint < ui_type = "drag"; ui_min = 0.0; ui_max = 20.0; ui_tooltip = "..."; > = 7.250; uniform float ReinhardLinearPoint < ui_type = "drag"; ui_min = 0.0; ui_max = 2.0; ui_tooltip = "..."; > = 0.150; #include "ReShade.fxh" float3 ReinhardLinearPass(float4 position : SV_Position, float2 texcoord : TexCoord) : SV_Target { float3 color = tex2D(ReShade::BackBuffer, texcoord).rgb; float3 x = color.rgb; //float x = color; const float W = ReinhardLinearWhitepoint; // Linear White Point Value const float L = ReinhardLinearPoint; // Linear point const float C = ReinhardLinearSlope; // Slope of the linear section const float K = (1 - L * C) / C; // Scale (fixed so that the derivatives of the Reinhard and linear functions are the same at x = L) float3 reinhard = L * C + (1 - L * C) * (1 + K * (x - L) / ((W - L) * (W - L))) * (x - L) / (x - L + K); // gamma space or not? color.rgb = (x > L) ? reinhard : C * x; return color; } technique ReinhardLinear { pass { VertexShader = PostProcessVS; PixelShader = ReinhardLinearPass; } }
- Insomnia
XIIICaesar wrote: Dude, how do you port them over though? I been trying to find any material or tutorials on how. Thanx for this too.
I copied an existing ReShade 3.0 shader and compared the old Reinhard shader with the new one and took it from there. I was just lucky it worked lol.
- XIIICaesar
Oh, okay. I attempted to do that with Marty McFly's FILMICCURVE & HPD tonemaps but was blown away by the lines in the old shader files Lol. Thanx again man. I'm using a preset for Arkham Knight that used FILmICCURVE (HPD PERSONAL SWAP/TWEAK) but Reinhard Linear adjusted looks very similar to the FILMICCURVE.[/strike]Insomnia wrote:
XIIICaesar wrote: Dude, how do you port them over though? I been trying to find any material or tutorials on how. Thanx for this too.
[strike]I copied an existing ReShade 3.0 shader and compared the old Reinhard shader with the new one and took it from there. I was just lucky it worked lol.
I've successfully ported HPD & FILMICCURVE tonemaps by Marty McFly to ReShade 3.x. I'm posting them in a thread I created in the Presentation forum. Marty McFly Tonemaps ported to v3.x I'll try to port more of them later.
- Insomnia
/*
Amateur port by Insomnia, credits goes to the original author
*/
uniform float fRatio <
ui_type = "drag";
ui_min = 0.0; ui_max = 3.0;
ui_label = "Strength";
ui_tooltip = "Amount of moody coloring you want";
> = 0.250;
uniform float moodR <
ui_type = "drag";
ui_min = 0.0; ui_max = 2.0;
ui_label = "Red";
ui_tooltip = "How strong dark red colors shall be boosted";
> = 1.0;
uniform float moodG <
ui_type = "drag";
ui_min = 0.0; ui_max = 2.0;
ui_label = "Green";
ui_tooltip = "How strong dark green colors shall be boosted";
> = 1.0;
uniform float moodB <
ui_type = "drag";
ui_min = 0.0; ui_max = 2.0;
ui_label = "Blue";
ui_tooltip = "How strong dark blue colors shall be boosted";
> = 1.0;
#include "ReShade.fxh"
float3 ColorMoodPass(float4 position : SV_Position, float2 texcoord : TexCoord) : SV_Target
{
float3 color = tex2D(ReShade::BackBuffer, texcoord).rgb;
float3 colInput = color.rgb;
float3 colMood = 1.0f;
colMood.r = moodR;
colMood.g = moodG;
colMood.b = moodB;
float fLum = ( colInput.r + colInput.g + colInput.b ) / 3;
colMood = lerp(0, colMood, saturate(fLum * 2.0));
colMood = lerp(colMood, 1, saturate(fLum - 0.5) * 2.0);
float3 colOutput = lerp(colInput, colMood, saturate(fLum * fRatio));
color.rgb=max(0, colOutput);
return color.rgb;
}
technique ColorMood
{
pass
{
VertexShader = PostProcessVS;
PixelShader = ColorMoodPass;
}
}
- Darksider-J
- Cross Process by MartyMcFly.
Thank you in advance.
- Nerd
Thanks for the tip for oversharpening + cartoon + blur. It's a LOT more noisy and blurry than that GSDX celshader but it will work I guess.
Really hoping someone will port the Storybook shader though, you can't replicate that one.
- Kleio420
isnt there a file that states the basic layout of shaders reshade will understand ? used to be on 2.0 buildsInsomnia wrote:
XIIICaesar wrote: Dude, how do you port them over though? I been trying to find any material or tutorials on how. Thanx for this too.
I copied an existing ReShade 3.0 shader and compared the old Reinhard shader with the new one and took it from there. I was just lucky it worked lol.
- JBeckman
- crosire
- Topic Author
Markdown (a text markup language).JBeckman wrote: no idea what "MD" is
- Sh1nRa358
-LunaMoo's Scalable Scanlines (always look great nomatter the resolution)
forums.ppsspp.org/showthread.php?tid=6594
-MDEC Filter (blurs low rez pixelated videos only -- like a gaussian blur that only activates on videos)
*from Pete's OpenGL 2.9 video plugin for playstation emulators*
-ScaleFX x9 (identical to 6xbrz but it's a shader form)
(don't remember if reshade has multpass support or not)
github.com/libretro/common-shaders/blob/...scalefx/scalefx9.cgp