ED & SweetFX - Screenshots and DL link

Ported the Watch Dogs shader from ReShade 2.x last night.

Before:
33482604584_a795c57eb6_b.jpg

After:
34166274392_044faee3ea_b.jpg


Code:
/*

									Watch Dogs Tonemap: 
		Enables one of the numerous watch dogs tonemapping algorithms. No tweaking values.
		
		Full credits to the ReShade team.
		Ported by Insomnia

*/


#include "ReShade.fxh"

float3 ColorFilmicToneMappingPass(float4 position : SV_Position, float2 texcoord : TexCoord) : SV_Target
{
	float3 x = tex2D(ReShade::BackBuffer, texcoord);
	// Filmic tone mapping
	const float3 A = float3(0.55f, 0.50f, 0.45f);	// Shoulder strength
	const float3 B = float3(0.30f, 0.27f, 0.22f);	// Linear strength
	const float3 C = float3(0.10f, 0.10f, 0.10f);	// Linear angle
	const float3 D = float3(0.10f, 0.07f, 0.03f);	// Toe strength
	const float3 E = float3(0.01f, 0.01f, 0.01f);	// Toe Numerator
	const float3 F = float3(0.30f, 0.30f, 0.30f);	// Toe Denominator
	const float3 W = float3(2.80f, 2.90f, 3.10f);	// Linear White Point Value
	const float3 F_linearWhite = ((W*(A*W+C*B)+D*E)/(W*(A*W+B)+D*F))-(E/F);
	float3 F_linearColor = ((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F))-(E/F);

    // gamma space or not?
	return pow(saturate(F_linearColor * 1.25 / F_linearWhite),1.25);
}


technique WatchDogsTonemapping
{
	pass
	{
		VertexShader = PostProcessVS;
		PixelShader = ColorFilmicToneMappingPass;
	}
}
 
Last edited:
Thx Insomnia for informing us and for your work in porting some shaders. I'm using some of your ported ones and found a setting wich is verry nice for me :)
Any hint how i can post Screenshots here in this forum?
Thx
 
Thx Insomnia for informing us and for your work in porting some shaders. I'm using some of your ported ones and found a setting wich is verry nice for me :)
Any hint how i can post Screenshots here in this forum?
Thx

https://imgur.com/ is free and quite easy to use. Although it also appears to be down at the moment, so that wasn't quite as helpful as I'd intended :)
 
Flickr is popular, but unfortunately Flickr has started to compress pictures a lot it resembles jpg conversions. But it has its own app. :)
 

rootsrat

Volunteer Moderator
Flickr is popular, but unfortunately Flickr has started to compress pictures a lot it resembles jpg conversions. But it has its own app. :)

Oh? When did this happen? That was the reason I'm using flickr, because it didn't use to compress photos...
 
Oh? When did this happen? That was the reason I'm using flickr, because it didn't use to compress photos...

Yeah that's what I heard. Apparently it's been this way for a year or so. And when I started to look it up I saw a whole lot more compression artifacts than before. But, it's important to mention that I haven't read an official response from Flickr, just observations from screenshots gurus. :)
 
I use flickr but I haven't noticed that my pics would be ruined by it. I don't see any bad artefacts in the pics.

34157702641_4ef0cc6f2c_h.jpg
 
Been working to port some more shaders the last few days..

2B3's Levels Input/Output shader - controls white and black levels only
Code:
////-----------//
///**LevelIO**///
//-----------////

uniform float lin_bp <
	ui_type = "drag";
	ui_min = 0.0; ui_max = 255.0;
	ui_step = 1.0;
	ui_tooltip = "black point for input";
> = 0.0;
uniform float lin_wp <
	ui_type = "drag";
	ui_min = 0.0; ui_max = 255.0;
	ui_step = 1.0;
	ui_tooltip = "white point for input";
> = 255.0;
uniform float lin_g <
	ui_type = "drag";
	ui_min = 0.1; ui_max = 10.0;
	ui_step = 0.10;
	ui_tooltip = "gamma";
> = 1.00;
uniform float lout_bp <
	ui_type = "drag";
	ui_min = 0.0; ui_max = 255.0;
	ui_step = 1.0;
	ui_tooltip = "black point for output";
> = 0.0;
uniform float lout_wp <
	ui_type = "drag";
	ui_min = 0.0; ui_max = 255.0;
	ui_step = 1.0;
	ui_tooltip = "white point for input";
> = 255.0;

#define lio_s 1.0 	// [0.0:2.0] //-saturation (0 - zero sat; 1 - real; 2 - x2 sat)

#include "ReShade.fxh"

float3 LIOPass(float4 position : SV_Position, float2 texcoord : TexCoord) : SV_Target
{
	float3 color = tex2D(ReShade::BackBuffer, texcoord).rgb;

	float ib = lin_bp/255.0;
	float iw = lin_wp/255.0;
	float ob = lout_bp/255.0;
	float ow = lout_wp/255.0;
	
	color.rgb=min(max(color.rgb-ib, 0)/(iw-ib), 1);
	//if(lin_g != 1) color.rgb=saturate(pow(abs(color.rgb), 1/lin_g));
	if(lin_g != 1) color.rgb=pow(abs(color.rgb), 1/lin_g);
	color.rgb=min( max(color.rgb*(ow-ob)+ob, ob), ow);	//output levels (needed min, max for sure :S)
	if (lio_s != 1)
	{
		float cm=(color.r+color.g+color.b)/3;
		color.rgb=cm-(cm-color.rgb)*lio_s;
	}
	
	return color;
}


technique LevelIO
{
	pass
	{
		VertexShader = PostProcessVS;
		PixelShader = LIOPass;
	}
}

2B3's CEOG - contrasts, gamma bla bla..
Code:
////-----------//
///***CEOG***//
//-----------////

//Preprocessor
#define ceog_min 0.00 // [0.00:1.00] //-min value
#define ceog_max 1.00 // [0.00:1.00] //-max value

uniform float ceog_ctr <
	ui_type = "drag";
	ui_min = -100.0; ui_max = 100.0;
	ui_step = 0.01;
	ui_tooltip = "Contrast";
	ui_label = "Contrast";
> = 0.0;
uniform float ceog_e <
	ui_type = "drag";
	ui_min = -20.0; ui_max = 20.0;
	ui_step = 0.01;
	ui_tooltip = "Exposure";
	ui_label = "Exposure";
> = 0.0;
uniform float ceog_o <
	ui_type = "drag";
	ui_min = -1.0; ui_max = 1.0;
	ui_step = 0.0001;
	ui_tooltip = "Offset";
	ui_label = "Offset";
> = 0.00;
uniform float ceog_g <
	ui_type = "drag";
	ui_min = 0.0; ui_max = 10.0;
	ui_step = 0.01;
	ui_tooltip = "Gamma";
	ui_label = "Gamma";
> = 1.0;


#include "ReShade.fxh"

float3 CEOGPass(float4 position : SV_Position, float2 texcoord : TexCoord) : SV_Target
{
	float3 color = tex2D(ReShade::BackBuffer, texcoord).rgb;

	float mn=min(color.r, min(color.g, color.b));
	float mx=max(color.r, max(color.g, color.b));
	
	if(mn >= ceog_min && mx <= ceog_max)
	{
		float ctr=ceog_ctr;
		float3 color_tmp=color.rgb;
		
		ctr=(ctr < 0.0) ? max(ctr/100.0, -100.0) : min(ctr, 100.0);
		color.rgb=(color.rgb-0.5)*max(ctr+1.0, 0.0)+0.5;
		
		color.rgb=pow(saturate(color.rgb*pow(2, ceog_e)+ceog_o), 1/ceog_g);

		if(ceog_min > 0 && ceog_max < 1)
		{
			float dlt=(ceog_max-ceog_min)*0.25;
			if(mn <= (ceog_min+dlt)) color.rgb=lerp(color_tmp, color.rgb, (mn-ceog_min)/dlt);
			else if(mx >= (ceog_max-dlt)) color.rgb=lerp(color_tmp, color.rgb, (ceog_max-mx)/dlt);
		}
	}
	
	return color;
}


technique CEOG
{
	pass
	{
		VertexShader = PostProcessVS;
		PixelShader = CEOGPass;
	}
}

Film Grain from ReShade 2.x CustomFX
Code:
/*
Film Grain post-process shader v1.1	
Martins Upitis (martinsh) devlog-martinsh.blogspot.com
2013

--------------------------
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
So you are free to share, modify and adapt it for your needs, and even use it for commercial use.
I would also love to hear about a project you are using it.

Have fun,
Martins
--------------------------

Perlin noise shader by toneburst:
http://machinesdontcare.wordpress.com/2009/06/25/3d-perlin-noise-sphere-vertex-shader-sourcecode/

----------------------------------------------------------
Ported to Reshade by Angelo Gonzalez
----------------------------------------------------------
*/


//Preprocessor
#define GrainColored 0 //[0:1] //-Whether grain should be colored or not. Colored grain is not as noticeable, so it helps to increase grain power.

//GUI available knobs

uniform float GrainPower <
	ui_type = "drag";
	ui_min = 0.0; ui_max = 2.0;
	ui_step = 0.01;
	ui_tooltip = "Intensity of applied grain";
	ui_label = "Strength";
> = 0.02;
uniform float GrainColorAmount <
	ui_type = "drag";
	ui_min = 0.0; ui_max = 2.0;
	ui_step = 0.01;
	ui_tooltip = "Amount of colored grain: Enable GrainColored in preprocessor for this to have effect";
	ui_label = "Color Amount";
> = 0.150;
uniform float GrainSize <
	ui_type = "drag";
	ui_min = 1.25; ui_max = 2.50;
	ui_step = 0.05;
	ui_tooltip = "Size of individual pieces of grain. Below 1.25 the pattern becomes noticeable";
	ui_label = "Strength";
> = 1.50;
uniform float GrainLuma <
	ui_type = "drag";
	ui_min = 0.0; ui_max = 2.0;
	ui_step = 0.05;
	ui_tooltip = "Grain brightness. 0 makes grain not visible";
	ui_label = "Brightness";
> = 0.80;

/*
#define GrainPower 0.02 //[0.00:1.00] //-Intensity of applied grain

#define GrainColorAmount 1.00 //[0.00:1.00] //-Amount of color to add to grain
#define GrainSize 1.50 //[1.25:2.50] //-Size of individual pieces of grain. Below 1.25 the pattern becomes noticeable.
#define GrainLuma 0.80 //[0.00:1.00] //-Grain brightness. 0 makes grain not visible.  
*/

#include "ReShade.fxh"

static const float width = BUFFER_WIDTH;
static const float height = BUFFER_HEIGHT;
uniform float timer < source = "timer"; >;
    
// a random texture generator, but you can also use a pre-computed perturbation texture
float4 rnm(in float2 tc) 
{
	float noise = sin(dot(float3(tc.x, tc.y, timer), float3(12.9898, 78.233, 0.0025216))) * 43758.5453;

    float noiseR =  frac(noise)*2.0-1.0;
    float noiseG =  frac(noise*1.2154)*2.0-1.0; 
    float noiseB =  frac(noise*1.3453)*2.0-1.0;
    float noiseA =  frac(noise*1.3647)*2.0-1.0;
    
    return float4(noiseR,noiseG,noiseB,noiseA);
}

float fade(in float t) {
    return t*t*t*(t*(t*6.0-15.0)+10.0);
}

float pnoise3D(in float3 p)
{
	static const float permTexUnit = 1.0/256.0;        // Perm texture texel-size
	static const float permTexUnitHalf = 0.5/256.0;    // Half perm texture texel-size
    float3 pi = permTexUnit*floor(p)+permTexUnitHalf; // Integer part, scaled so +1 moves permTexUnit texel
    // and offset 1/2 texel to sample texel centers
    float3 pf = frac(p);     // Fractional part for interpolation

    // Noise contributions from (x=0, y=0), z=0 and z=1
    float perm00 = rnm(pi.xy).a ;
    float3  grad000 = rnm(float2(perm00, pi.z)).rgb * 4.0 - 1.0;
    float n000 = dot(grad000, pf);
    float3  grad001 = rnm(float2(perm00, pi.z + permTexUnit)).rgb * 4.0 - 1.0;
    float n001 = dot(grad001, pf - float3(0.0, 0.0, 1.0));

    // Noise contributions from (x=0, y=1), z=0 and z=1
    float perm01 = rnm(pi.xy + float2(0.0, permTexUnit)).a ;
    float3  grad010 = rnm(float2(perm01, pi.z)).rgb * 4.0 - 1.0;
    float n010 = dot(grad010, pf - float3(0.0, 1.0, 0.0));
    float3  grad011 = rnm(float2(perm01, pi.z + permTexUnit)).rgb * 4.0 - 1.0;
    float n011 = dot(grad011, pf - float3(0.0, 1.0, 1.0));

    // Noise contributions from (x=1, y=0), z=0 and z=1
    float perm10 = rnm(pi.xy + float2(permTexUnit, 0.0)).a ;
    float3  grad100 = rnm(float2(perm10, pi.z)).rgb * 4.0 - 1.0;
    float n100 = dot(grad100, pf - float3(1.0, 0.0, 0.0));
    float3  grad101 = rnm(float2(perm10, pi.z + permTexUnit)).rgb * 4.0 - 1.0;
    float n101 = dot(grad101, pf - float3(1.0, 0.0, 1.0));

    // Noise contributions from (x=1, y=1), z=0 and z=1
    float perm11 = rnm(pi.xy + float2(permTexUnit, permTexUnit)).a ;
    float3  grad110 = rnm(float2(perm11, pi.z)).rgb * 4.0 - 1.0;
    float n110 = dot(grad110, pf - float3(1.0, 1.0, 0.0));
    float3  grad111 = rnm(float2(perm11, pi.z + permTexUnit)).rgb * 4.0 - 1.0;
    float n111 = dot(grad111, pf - float3(1.0, 1.0, 1.0));

    // Blend contributions along x
    float4 n_x = lerp(float4(n000, n001, n010, n011), float4(n100, n101, n110, n111), fade(pf.x));

    // Blend contributions along y
    float2 n_xy = lerp(n_x.xy, n_x.zw, fade(pf.y));

    // Blend contributions along z
    float n_xyz = lerp(n_xy.x, n_xy.y, fade(pf.z));

    // We're done, return the final noise value.
    return n_xyz;
}

//2d coordinate orientation thing
float2 coordRot(in float2 tc, in float angle)
{
    float aspectr = width/height;
    float rotX = ((tc.x*2.0-1.0)*aspectr*cos(angle)) - ((tc.y*2.0-1.0)*sin(angle));
    float rotY = ((tc.y*2.0-1.0)*cos(angle)) + ((tc.x*2.0-1.0)*aspectr*sin(angle));
    rotX = ((rotX/aspectr)*0.5+0.5);
    rotY = rotY*0.5+0.5;
    return float2(rotX,rotY);
}

float4 GrainPass(float4 position : SV_Position, float2 texcoord : TEXCOORD) : SV_Target
{
    float3 color = tex2D(ReShade::BackBuffer, texcoord).rgb;
	float grainamount = GrainPower;
	int colored = GrainColored;
	float coloramount = GrainColorAmount;
	float grainsize = GrainSize;
	float lumamount = GrainLuma;
	float width = BUFFER_WIDTH;
	float height = BUFFER_HEIGHT;

    float3 rotOffset = float3(1.425,3.892,5.835); //rotation offset values  
    float2 rotCoordsR = coordRot(texcoord, timer + rotOffset.x);
    float2 rot = rotCoordsR*float2(width/grainsize,height/grainsize);
    float pNoise = pnoise3D(float3(rot.x,rot.y,0.0));
    float3 noise = float3(pNoise, pNoise, pNoise);
  
    if (colored == 1)
    {
        float2 rotCoordsG = coordRot(texcoord, timer + rotOffset.y);
        float2 rotCoordsB = coordRot(texcoord, timer + rotOffset.z);
        noise.g = lerp(noise.r,pnoise3D(float3(rotCoordsG*float2(width/grainsize,height/grainsize),1.0)),coloramount);
        noise.b = lerp(noise.r,pnoise3D(float3(rotCoordsB*float2(width/grainsize,height/grainsize),2.0)),coloramount);
    }
    
    float3 col = tex2D(ReShade::BackBuffer, texcoord).rgb;

    //noisiness response curve based on scene luminance
    float3 lumcoeff = float3(0.299,0.587,0.114);
    float luminance = lerp(0.0,dot(col, lumcoeff),lumamount);
    float lum = smoothstep(0.2,0.0,luminance);
    lum += luminance;
    
    float2 thepow = pow(lum, 4.0);
    
    noise = lerp(noise,float3(0.0, 0.0, 0.0),pow(lum,4.0));
    col += noise*grainamount;
   
    return float4(col,1.0);
}

technique Grain_Tech
{
	pass
	{
		VertexShader = PostProcessVS;
		PixelShader = GrainPass;
	}
}

:)
 
Insomnia, can you tell us, wich shaders are you using in Elite? Your Flickr-Album looks fantastic. I know you can't tell us the exact settings, but maybe you can tell us wich you are using, so we can experiment to get the nice looking of Elite like you have. That would be verry kind. :)
Oh, and maybe your settings in Elite? I'm not familiar with Downsampling in Elite, do i need to set the Screenresolution AND the Supersampling? Thx
 
Last edited:
Insomnia, can you tell us, wich shaders are you using in Elite? Your Flickr-Album looks fantastic. I know you can't tell us the exact settings, but maybe you can tell us wich you are using, so we can experiment to get the nice looking of Elite like you have. That would be verry kind. :)
Oh, and maybe your settings in Elite? I'm not familiar with Downsampling in Elite, do i need to set the Screenresolution AND the Supersampling? Thx

Check your inbox. :)
 
I am trying to do this, i Downloaded Sweetfx and copy pasta into that directory (allthough the one i found didnt say DFRT says Fdev after forc) not really noticing a difference. Is there a way to tell it works or does it have to be turned on?

Specs are 1080GTX i74790k OC to 4.8 16gb ram and LG 27 4k
 
Last edited:
I am trying to do this, i Downloaded Sweetfx and copy pasta into that directory (allthough the one i found didnt say DFRT says Fdev after forc) not really noticing a difference. Is there a way to tell it works or does it have to be turned on?

Specs are 1080GTX i74790k OC to 4.8 16gb ram and LG 27 4k

Elite Dangerous is 64bit and I'm pretty sure the links in the OP are 32bit. Use ReShade instead. :) Also, check out https://sfx.thelazy.net/games/
 
Last edited:
And do the same thing just copy and paste? in same directory correct?

I made a simple preset for you to try out. It resembles the presets in the OP but with some added anti-color banding and other tweaks.

Just download the preset from this link: http://www.mediafire.com/file/os36tz2b0nk3jt3/ED_Simple.rar
Place it in your Elite Dangerous folder (my path is C:\Frontier\EDLaunch\Products\elite-dangerous-64), basically where your Elite Dangerous executable is found (not the Launcher).
Unpack it. Done.
Press F2 to see the in-game window where you can tweak everything. :)
 
Last edited:
I made a simple preset for you to try out. It resembles the presets in the OP but with some added anti-color banding and other tweaks.

Just download the preset from this link: http://www.mediafire.com/file/os36tz2b0nk3jt3/ED_Simple.rar
Place it in your Elite Dangerous folder (my path is C:\Frontier\EDLaunch\Products\elite-dangerous-64), basically where your Elite Dangerous executable is found (not the Launcher).
Unpack it. Done.
Press F2 to see the in-game window where you can tweak everything. :)

This worked! thanks for your help!

however still really looks the same... Still wondering if I am doing something wrong, or are they just really subtle changes?
 
I made a simple preset for you to try out. It resembles the presets in the OP but with some added anti-color banding and other tweaks.

Just download the preset from this link: http://www.mediafire.com/file/os36tz2b0nk3jt3/ED_Simple.rar
Place it in your Elite Dangerous folder (my path is C:\Frontier\EDLaunch\Products\elite-dangerous-64), basically where your Elite Dangerous executable is found (not the Launcher).
Unpack it. Done.
Press F2 to see the in-game window where you can tweak everything. :)

hi man, can I just use that package as it is or do I need reshade/edfx/sweetfx/whatever?
 
Back
Top Bottom