1
Fork 0

MariENB FO4 3.3.1

This commit is contained in:
Marisa the Magician 2019-04-07 17:49:13 +02:00
commit d7c2c2ea85
8 changed files with 238 additions and 429 deletions

View file

@ -144,22 +144,22 @@ GradientHorizonColorFilterDusk=0.973, 0.259, 0.133
GradientHorizonColorFilterNight=0.655, 0.816, 0.976 GradientHorizonColorFilterNight=0.655, 0.816, 0.976
GradientHorizonColorFilterInteriorDay=1, 1, 1 GradientHorizonColorFilterInteriorDay=1, 1, 1
GradientHorizonColorFilterInteriorNight=0.851, 0.863, 0.89 GradientHorizonColorFilterInteriorNight=0.851, 0.863, 0.89
CloudsIntensityDawn=0.92 CloudsIntensityDawn=0.74
CloudsIntensitySunrise=1.070001 CloudsIntensitySunrise=0.920001
CloudsIntensityDay=1.240001 CloudsIntensityDay=1.240001
CloudsIntensitySunset=1.040001 CloudsIntensitySunset=0.910001
CloudsIntensityDusk=0.900001 CloudsIntensityDusk=0.750001
CloudsIntensityNight=0.790001 CloudsIntensityNight=0.440001
CloudsIntensityInteriorDay=1.17 CloudsIntensityInteriorDay=1.17
CloudsIntensityInteriorNight=0.7 CloudsIntensityInteriorNight=0.49
CloudsCurveDawn=1.13 CloudsCurveDawn=0.9
CloudsCurveSunrise=1.09 CloudsCurveSunrise=0.95
CloudsCurveDay=1.0 CloudsCurveDay=1.0
CloudsCurveSunset=1.1 CloudsCurveSunset=0.97
CloudsCurveDusk=1.16 CloudsCurveDusk=0.91
CloudsCurveNight=1.25 CloudsCurveNight=0.86
CloudsCurveInteriorDay=1.02 CloudsCurveInteriorDay=1.02
CloudsCurveInteriorNight=1.2 CloudsCurveInteriorNight=0.83
CloudsDesaturationDawn=0.0 CloudsDesaturationDawn=0.0
CloudsDesaturationSunrise=0.0 CloudsDesaturationSunrise=0.0
CloudsDesaturationDay=0.0 CloudsDesaturationDay=0.0

View file

@ -1 +1 @@
3.3.0 "Red Sunset" 3.3.1 "Red Sunset"

View file

@ -39,40 +39,6 @@ float distcha
string UIName = "Distortion Chromatic Aberration"; string UIName = "Distortion Chromatic Aberration";
string UIWidget = "Spinner"; string UIWidget = "Spinner";
> = {10.0}; > = {10.0};
bool waterenable
<
string UIName = "Enable Underwater";
string UIWidget = "Checkbox";
> = {false};
float3 uwm
<
string UIName = "Underwater Frequency";
string UIWidget = "Vector";
float3 UIMin = {0.0,0.0,0.0};
> = {1.4,1.6,1.4};
float3 uwf
<
string UIName = "Underwater Speed";
string UIWidget = "Vector";
float3 UIMin = {0.0,0.0,0.0};
> = {10.0,8.0,16.0};
float3 uws
<
string UIName = "Underwater Amplitude";
string UIWidget = "Vector";
float3 UIMin = {0.0,0.0,0.0};
> = {0.3,0.5,0.8};
float uwz
<
string UIName = "Underwater Zoom";
string UIWidget = "Spinner";
float UIMin = 0.0;
> = {1.5};
bool wateralways
<
string UIName = "Always Underwater";
string UIWidget = "Checkbox";
> = {false};
bool heatenable bool heatenable
< <
string UIName = "Enable Hot Air Refraction"; string UIName = "Enable Hot Air Refraction";
@ -123,148 +89,37 @@ float heatfactor_dw
< <
string UIName = "Heat Factor Dawn"; string UIName = "Heat Factor Dawn";
string UIWidget = "Spinner"; string UIWidget = "Spinner";
float UIMin = 0.0;
> = {0.2}; > = {0.2};
float heatfactor_sr float heatfactor_sr
< <
string UIName = "Heat Factor Sunrise"; string UIName = "Heat Factor Sunrise";
string UIWidget = "Spinner"; string UIWidget = "Spinner";
float UIMin = 0.0;
> = {0.5}; > = {0.5};
float heatfactor_dy float heatfactor_dy
< <
string UIName = "Heat Factor Day"; string UIName = "Heat Factor Day";
string UIWidget = "Spinner"; string UIWidget = "Spinner";
float UIMin = 0.0;
> = {1.0}; > = {1.0};
float heatfactor_ss float heatfactor_ss
< <
string UIName = "Heat Factor Sunset"; string UIName = "Heat Factor Sunset";
string UIWidget = "Spinner"; string UIWidget = "Spinner";
float UIMin = 0.0;
> = {0.7}; > = {0.7};
float heatfactor_ds float heatfactor_ds
< <
string UIName = "Heat Factor Dusk"; string UIName = "Heat Factor Dusk";
string UIWidget = "Spinner"; string UIWidget = "Spinner";
float UIMin = 0.0;
> = {0.1}; > = {0.1};
float heatfactor_nt float heatfactor_nt
< <
string UIName = "Heat Factor Night"; string UIName = "Heat Factor Night";
string UIWidget = "Spinner"; string UIWidget = "Spinner";
float UIMin = 0.0;
> = {0.0}; > = {0.0};
float heatfactor_i float heatfactor_i
< <
string UIName = "Heat Factor Interior"; string UIName = "Heat Factor Interior";
string UIWidget = "Spinner"; string UIWidget = "Spinner";
float UIMin = 0.0;
> = {0.0}; > = {0.0};
bool heatalways
<
string UIName = "Heat Always Enable";
string UIWidget = "Checkbox";
> = {false};
bool frostenable
<
string UIName = "Enable Screen Frost";
string UIWidget = "Checkbox";
> = {false};
float frostpow
<
string UIName = "Frost Contrast";
string UIWidget = "Spinner";
float UIMin = 0.0;
> = {1.0};
float froststrength
<
string UIName = "Frost Strength";
string UIWidget = "Spinner";
float UIMin = 0.0;
> = {1.0};
float frostrpow
<
string UIName = "Frost Radial Contrast";
string UIWidget = "Spinner";
float UIMin = 0.0;
> = {1.0};
float frostrmult
<
string UIName = "Frost Radial Intensity";
string UIWidget = "Spinner";
float UIMin = 0.0;
> = {1.0};
float frostrbump
<
string UIName = "Frost Radial Offset";
string UIWidget = "Spinner";
> = {0.0};
float frostblend
<
string UIName = "Frost Texture Blend";
string UIWidget = "Spinner";
float UIMin = 0.0;
> = {1.0};
float frostbpow
<
string UIName = "Frost Texture Blend Contrast";
string UIWidget = "Spinner";
float UIMin = 0.0;
> = {1.0};
float frostsize
<
string UIName = "Frost Texture Size";
string UIWidget = "Spinner";
float UIMin = 0.0;
> = {1.0};
float frostfactor_dw
<
string UIName = "Frost Factor Dawn";
string UIWidget = "Spinner";
float UIMin = 0.0;
> = {0.1};
float frostfactor_sr
<
string UIName = "Frost Factor Sunrise";
string UIWidget = "Spinner";
float UIMin = 0.0;
> = {0.0};
float frostfactor_dy
<
string UIName = "Frost Factor Day";
string UIWidget = "Spinner";
float UIMin = 0.0;
> = {0.0};
float frostfactor_ss
<
string UIName = "Frost Factor Sunset";
string UIWidget = "Spinner";
float UIMin = 0.0;
> = {0.0};
float frostfactor_ds
<
string UIName = "Frost Factor Dusk";
string UIWidget = "Spinner";
float UIMin = 0.0;
> = {0.1};
float frostfactor_nt
<
string UIName = "Frost Factor Night";
string UIWidget = "Spinner";
float UIMin = 0.0;
> = {0.25};
float frostfactor_i
<
string UIName = "Frost Factor Interior";
string UIWidget = "Spinner";
float UIMin = 0.0;
> = {0.0};
bool frostalways
<
string UIName = "Frost Always Enable";
string UIWidget = "Checkbox";
> = {false};
string str_focus = "Focusing Parameters"; string str_focus = "Focusing Parameters";
/* /*
focus modes: focus modes:
@ -1197,22 +1052,6 @@ Texture2D TextureHeat
string ResourceName = "menbheat.png"; string ResourceName = "menbheat.png";
#endif #endif
>; >;
Texture2D TextureFrost
<
#ifdef FROST_DDS
string ResourceName = "menbfrost.dds";
#else
string ResourceName = "menbfrost.png";
#endif
>;
Texture2D TextureFrostBump
<
#ifdef FROSTBUMP_DDS
string ResourceName = "menbfrostbump.dds";
#else
string ResourceName = "menbfrostbump.png";
#endif
>;
SamplerState Sampler0 SamplerState Sampler0
{ {
@ -1541,21 +1380,6 @@ float4 PS_SSAOApply( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
return res*mud; return res*mud;
} }
/*
Underwater distortion, which currently has no real use due to Boris being
lazy. fWaterLevel doesn't yet provide any usable values.
*/
float2 UnderwaterDistort( float2 coord )
{
if ( !wateralways ) return coord;
float2 ofs = float2(0.0,0.0);
float siny = sin(pi*2.0*(coord.y*uwm.x+Timer.x*uwf.x*100.0))*uws.x;
ofs.y = siny+sin(pi*2.0*(coord.x*uwm.y+Timer.x*uwf.y*100.0))*uws.y;
ofs.x = siny+sin(pi*2.0*(coord.x*uwm.z+Timer.x*uwf.z*100.0))*uws.z;
ofs -= (coord-0.5)*2.0*uwz;
return coord+ofs*0.01;
}
/* Distant hot air refraction. Not very realistic, but does the job. */ /* Distant hot air refraction. Not very realistic, but does the job. */
float2 DistantHeat( float2 coord ) float2 DistantHeat( float2 coord )
{ {
@ -1565,8 +1389,8 @@ float2 DistantHeat( float2 coord )
float distfade = clamp(pow(max(0,dep),heatfadepow)*heatfademul float distfade = clamp(pow(max(0,dep),heatfadepow)*heatfademul
+heatfadebump,0.0,1.0); +heatfadebump,0.0,1.0);
if ( distfade <= 0.0 ) return coord; if ( distfade <= 0.0 ) return coord;
float todpow = todx_ind(heatfactor); float todpow = max(0.0,todx_ind(heatfactor));
if ( !heatalways && (todpow <= 0.0) ) return coord; if ( todpow <= 0.0 ) return coord;
if ( (fixed.x > 0) && (fixed.y > 0) ) bresl = fixed; if ( (fixed.x > 0) && (fixed.y > 0) ) bresl = fixed;
else bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w); else bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
float2 nc = coord*(bresl/HEATSIZE)*heatsize; float2 nc = coord*(bresl/HEATSIZE)*heatsize;
@ -1575,7 +1399,7 @@ float2 DistantHeat( float2 coord )
ofs = (ofs-0.5)*2.0; ofs = (ofs-0.5)*2.0;
ofs *= pow(length(ofs),heatpow); ofs *= pow(length(ofs),heatpow);
ofs *= todpow; ofs *= todpow;
if ( !heatalways ) ofs *= max(0.0,warmfactor-coldfactor); /*ofs *= max(0.0,warmfactor-coldfactor);*/
odep = TextureDepth.SampleLevel(Sampler1,coord+ofs*heatstrength odep = TextureDepth.SampleLevel(Sampler1,coord+ofs*heatstrength
*distfade*0.01,0).x; *distfade*0.01,0).x;
float odistfade = clamp(pow(max(0,odep),heatfadepow)*heatfademul float odistfade = clamp(pow(max(0,odep),heatfadepow)*heatfademul
@ -1592,7 +1416,6 @@ float4 PS_Distortion( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
if ( (fixed.x > 0) && (fixed.y > 0) ) bresl = fixed; if ( (fixed.x > 0) && (fixed.y > 0) ) bresl = fixed;
else bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w); else bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
float2 ofs = coord; float2 ofs = coord;
if ( waterenable ) ofs = UnderwaterDistort(ofs);
if ( heatenable ) ofs = DistantHeat(ofs); if ( heatenable ) ofs = DistantHeat(ofs);
ofs -= coord; ofs -= coord;
float4 res; float4 res;
@ -1843,61 +1666,11 @@ float4 PS_DoFPostBlur( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
return res; return res;
} }
/* Screen frost shader. Not very realistic either, but looks fine too. */
float2 ScreenFrost( float2 coord )
{
float2 bresl;
if ( (fixed.x > 0) && (fixed.y > 0) ) bresl = fixed;
else bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
float2 nc = coord*(bresl/FROSTSIZE)*frostsize;
float2 ofs = TextureFrostBump.Sample(Sampler2,nc).xy;
ofs = (ofs-0.5)*2.0;
ofs *= pow(length(ofs),frostpow)*froststrength;
float todpow = todx_ind(frostfactor);
if ( !frostalways ) ofs *= max(0.0,coldfactor-warmfactor)*todpow;
else ofs *= todpow;
float dist = distance(coord,float2(0.5,0.5))*2.0;
ofs *= clamp(pow(dist,frostrpow)*frostrmult+frostrbump,0.0,1.0);
return coord+ofs;
}
/* screen frost overlay */ /* screen frost overlay */
float4 PS_FrostPass( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target float4 PS_DebugFocus( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
{ {
float2 coord = IN.txcoord.xy; float2 coord = IN.txcoord.xy;
float2 bresl; float4 res = TextureColor.Sample(Sampler1,coord);
if ( (fixed.x > 0) && (fixed.y > 0) ) bresl = fixed;
else bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
float4 res;
[branch] if ( frostenable )
{
float2 ofs = ScreenFrost(coord);
ofs -= coord;
if ( (distcha != 0.0) && (length(ofs) != 0.0) )
{
float2 ofr, ofg, ofb;
ofr = ofs*(1.0-distcha*0.01);
ofg = ofs;
ofb = ofs*(1.0+distcha*0.01);
res = float4(TextureColor.Sample(Sampler1,coord+ofr).r,
TextureColor.Sample(Sampler1,coord+ofg).g,
TextureColor.Sample(Sampler1,coord+ofb).b,1.0);
}
else res = TextureColor.Sample(Sampler1,coord+ofs);
float2 nc = coord*(bresl/FROSTSIZE)*frostsize;
float bmp = pow(max(0,TextureFrost.SampleLevel(Sampler2,nc,
0).x),frostbpow);
float dist = distance(coord,float2(0.5,0.5))*2.0;
dist = clamp(pow(dist,frostrpow)*frostrmult+frostrbump,0.0,
1.0)*frostblend;
float todpow = todx_ind(frostfactor);
/* Weathers not implemented in FO4 ENB as of 0.291 */
if ( !frostalways )
dist *= max(0.0,coldfactor-warmfactor)*todpow;
else dist *= todpow;
res.rgb *= 1.0+bmp*dist;
}
else res = TextureColor.Sample(Sampler1,coord);
if ( !focusdisplay || (focuscircle == -1) ) return res; if ( !focusdisplay || (focuscircle == -1) ) return res;
if ( focuscircle == -2 ) if ( focuscircle == -2 )
{ {
@ -2032,7 +1805,7 @@ technique11 Prepass8
pass p0 pass p0
{ {
SetVertexShader(CompileShader(vs_5_0,VS_Quad())); SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_FrostPass())); SetPixelShader(CompileShader(ps_5_0,PS_DebugFocus()));
} }
} }
@ -2105,7 +1878,7 @@ technique11 PrepassB8
pass p0 pass p0
{ {
SetVertexShader(CompileShader(vs_5_0,VS_Quad())); SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_FrostPass())); SetPixelShader(CompileShader(ps_5_0,PS_DebugFocus()));
} }
} }

View file

@ -6,12 +6,6 @@ Depth Cutoff=999998.0
Near Z=0.05 Near Z=0.05
Far Z=3098.0 Far Z=3098.0
Distortion Chromatic Aberration=9.5 Distortion Chromatic Aberration=9.5
Enable Underwater=false
Underwater Frequency=2.36, 3.39, 2.72
Underwater Speed=24.3, 21.9, 26.5
Underwater Amplitude=0.1, 0.11, 0.07
Underwater Zoom=0.15
Always Underwater=false
Enable Hot Air Refraction=true Enable Hot Air Refraction=true
Heat Texture Size=11.71 Heat Texture Size=11.71
Heat Speed=0.56 Heat Speed=0.56
@ -20,31 +14,13 @@ Heat Fade Intensity=1.14
Heat Fade Offset=-0.81 Heat Fade Offset=-0.81
Heat Intensity=0.45 Heat Intensity=0.45
Heat Contrast=1.19 Heat Contrast=1.19
Heat Factor Dawn=0.0 Heat Factor Dawn=-0.17
Heat Factor Sunrise=0.62 Heat Factor Sunrise=0.62
Heat Factor Day=1.06 Heat Factor Day=1.06
Heat Factor Sunset=0.54 Heat Factor Sunset=0.54
Heat Factor Dusk=0.0 Heat Factor Dusk=-0.14
Heat Factor Night=0.0 Heat Factor Night=-0.51
Heat Factor Interior=0.0 Heat Factor Interior=0.0
Heat Always Enable=true
Enable Screen Frost=false
Frost Contrast=1.67
Frost Strength=0.02
Frost Radial Contrast=1.67
Frost Radial Intensity=0.83
Frost Radial Offset=-0.66
Frost Texture Blend=0.94
Frost Texture Blend Contrast=2.44
Frost Texture Size=0.85
Frost Factor Dawn=0.0
Frost Factor Sunrise=0.0
Frost Factor Day=0.0
Frost Factor Sunset=0.0
Frost Factor Dusk=0.0
Frost Factor Night=1.06
Frost Factor Interior=0.0
Frost Always Enable=true
Focus Mode=1 Focus Mode=1
Display Focus Points=false Display Focus Points=false
Enable Manual Focus=false Enable Manual Focus=false
@ -156,9 +132,9 @@ Depth Grading Intensity Interior=1.73
Depth Grading Shift Night=-1.41 Depth Grading Shift Night=-1.41
Depth Grading Shift Day=-1.27 Depth Grading Shift Day=-1.27
Depth Grading Shift Interior=-1.37 Depth Grading Shift Interior=-1.37
Depth Grading Blend Night=1.0 Depth Grading Blend Night=0.3
Depth Grading Blend Day=1.0 Depth Grading Blend Day=0.4
Depth Grading Blend Interior=1.0 Depth Grading Blend Interior=0.5
Enable RGB Grading=true Enable RGB Grading=true
Grading Intensity Night Red=1.0 Grading Intensity Night Red=1.0
Grading Intensity Night Green=1.0 Grading Intensity Night Green=1.0

View file

@ -6,6 +6,107 @@
*/ */
#include "menbglobaldefs.fx" #include "menbglobaldefs.fx"
string str_misc = "Miscellaneous";
/* fixed resolution, keeps blur filters at a consistent internal resolution */
int2 fixed
<
string UIName = "Fixed Resolution";
string UIWidget = "Vector";
int2 UIMin = {0,0};
> = {1920,1080};
string str_dist = "Distortion Filters";
float distcha
<
string UIName = "Distortion Chromatic Aberration";
string UIWidget = "Spinner";
> = {10.0};
bool frostenable
<
string UIName = "Enable Screen Frost";
string UIWidget = "Checkbox";
> = {false};
float frostpow
<
string UIName = "Frost Contrast";
string UIWidget = "Spinner";
float UIMin = 0.0;
> = {1.0};
float froststrength
<
string UIName = "Frost Strength";
string UIWidget = "Spinner";
float UIMin = 0.0;
> = {1.0};
float frostrpow
<
string UIName = "Frost Radial Contrast";
string UIWidget = "Spinner";
float UIMin = 0.0;
> = {1.0};
float frostrmult
<
string UIName = "Frost Radial Intensity";
string UIWidget = "Spinner";
float UIMin = 0.0;
> = {1.0};
float frostrbump
<
string UIName = "Frost Radial Offset";
string UIWidget = "Spinner";
> = {0.0};
float frostblend
<
string UIName = "Frost Texture Blend";
string UIWidget = "Spinner";
float UIMin = 0.0;
> = {1.0};
float frostbpow
<
string UIName = "Frost Texture Blend Contrast";
string UIWidget = "Spinner";
float UIMin = 0.0;
> = {1.0};
float frostsize
<
string UIName = "Frost Texture Size";
string UIWidget = "Spinner";
float UIMin = 0.0;
> = {1.0};
float frostfactor_dw
<
string UIName = "Frost Factor Dawn";
string UIWidget = "Spinner";
> = {0.1};
float frostfactor_sr
<
string UIName = "Frost Factor Sunrise";
string UIWidget = "Spinner";
> = {0.0};
float frostfactor_dy
<
string UIName = "Frost Factor Day";
string UIWidget = "Spinner";
> = {0.0};
float frostfactor_ss
<
string UIName = "Frost Factor Sunset";
string UIWidget = "Spinner";
> = {0.0};
float frostfactor_ds
<
string UIName = "Frost Factor Dusk";
string UIWidget = "Spinner";
> = {0.1};
float frostfactor_nt
<
string UIName = "Frost Factor Night";
string UIWidget = "Spinner";
> = {0.25};
float frostfactor_i
<
string UIName = "Frost Factor Interior";
string UIWidget = "Spinner";
> = {0.0};
string str_noise = "Film Grain"; string str_noise = "Film Grain";
bool ne bool ne
< <
@ -109,14 +210,13 @@ string str_tonemap = "Tone Mapping";
3 : Uncharted 2 3 : Uncharted 2
4 : Hejl Dawson 4 : Hejl Dawson
5 : Haarm-Peter Duiker 5 : Haarm-Peter Duiker
6 : SweetFX
*/ */
int tmapenable int tmapenable
< <
string UIName = "Tonemapping Method"; string UIName = "Tonemapping Method";
string UIWidget = "Spinner"; string UIWidget = "Spinner";
int UIMin = -1; int UIMin = -1;
int UIMax = 6; int UIMax = 5;
> = {3}; > = {3};
float tmapexposure_n float tmapexposure_n
< <
@ -262,126 +362,6 @@ float unW_i
string UIName = "Uncharted2 Linear White Interior"; string UIName = "Uncharted2 Linear White Interior";
string UIWidget = "Spinner"; string UIWidget = "Spinner";
> = {10.0}; > = {10.0};
float sfxgamma_n
<
string UIName = "SweetFX Gamma Night";
string UIWidget = "Spinner";
float UIMin = 0.0;
float UIMax = 2.0;
> = {1.0};
float sfxgamma_d
<
string UIName = "SweetFX Gamma Day";
string UIWidget = "Spinner";
float UIMin = 0.0;
float UIMax = 2.0;
> = {1.0};
float sfxgamma_i
<
string UIName = "SweetFX Gamma Interior";
string UIWidget = "Spinner";
float UIMin = 0.0;
float UIMax = 2.0;
> = {1.0};
float sfxexposure_n
<
string UIName = "SweetFX Exposure Night";
string UIWidget = "Spinner";
float UIMin = -1.0;
float UIMax = 1.0;
> = {0.0};
float sfxexposure_d
<
string UIName = "SweetFX Exposure Day";
string UIWidget = "Spinner";
float UIMin = -1.0;
float UIMax = 1.0;
> = {0.0};
float sfxexposure_i
<
string UIName = "SweetFX Exposure Interior";
string UIWidget = "Spinner";
float UIMin = -1.0;
float UIMax = 1.0;
> = {0.0};
float sfxsaturation_n
<
string UIName = "SweetFX Saturation Night";
string UIWidget = "Spinner";
float UIMin = -1.0;
float UIMax = 1.0;
> = {0.0};
float sfxsaturation_d
<
string UIName = "SweetFX Saturation Day";
string UIWidget = "Spinner";
float UIMin = -1.0;
float UIMax = 1.0;
> = {0.0};
float sfxsaturation_i
<
string UIName = "SweetFX Saturation Interior";
string UIWidget = "Spinner";
float UIMin = -1.0;
float UIMax = 1.0;
> = {0.0};
float sfxbleach_n
<
string UIName = "SweetFX Bleach Night";
string UIWidget = "Spinner";
float UIMin = 0.0;
float UIMax = 1.0;
> = {0.0};
float sfxbleach_d
<
string UIName = "SweetFX Bleach Day";
string UIWidget = "Spinner";
float UIMin = 0.0;
float UIMax = 1.0;
> = {0.0};
float sfxbleach_i
<
string UIName = "SweetFX Bleach Interior";
string UIWidget = "Spinner";
float UIMin = 0.0;
float UIMax = 1.0;
> = {0.0};
float sfxdefog_n
<
string UIName = "SweetFX Defog Night";
string UIWidget = "Spinner";
float UIMin = 0.0;
float UIMax = 1.0;
> = {0.0};
float sfxdefog_d
<
string UIName = "SweetFX Defog Day";
string UIWidget = "Spinner";
float UIMin = 0.0;
float UIMax = 1.0;
> = {0.0};
float sfxdefog_i
<
string UIName = "SweetFX Defog Interior";
string UIWidget = "Spinner";
float UIMin = 0.0;
float UIMax = 1.0;
> = {0.0};
float3 sfxfogcolor_n
<
string UIName = "SweetFX Defog Color Night";
string UIWidget = "Color";
> = {0.0,0.0,1.0};
float3 sfxfogcolor_d
<
string UIName = "SweetFX Defog Color Day";
string UIWidget = "Color";
> = {0.0,0.0,1.0};
float3 sfxfogcolor_i
<
string UIName = "SweetFX Defog Color Interior";
string UIWidget = "Color";
> = {0.0,0.0,1.0};
/* Color grading */ /* Color grading */
string str_grade = "Color Grading Suite"; string str_grade = "Color Grading Suite";
@ -720,6 +700,14 @@ Texture2D TextureTonemap
< <
string ResourceName = "menbfilmlut.png"; string ResourceName = "menbfilmlut.png";
>; >;
Texture2D TextureFrost
<
#ifdef FROST_DDS
string ResourceName = "menbfrost.dds";
#else
string ResourceName = "menbfrost.png";
#endif
>;
SamplerState Sampler0 SamplerState Sampler0
{ {
@ -733,6 +721,13 @@ SamplerState Sampler1
AddressU = Clamp; AddressU = Clamp;
AddressV = Clamp; AddressV = Clamp;
}; };
SamplerState Sampler2
{
Filter = MIN_MAG_MIP_LINEAR;
AddressU = Wrap;
AddressV = Wrap;
};
SamplerState SamplerLUT SamplerState SamplerLUT
{ {
Filter = MIN_MAG_MIP_LINEAR; Filter = MIN_MAG_MIP_LINEAR;
@ -875,31 +870,6 @@ float3 TonemapHejlDawson( float3 res )
float3 x = max(0.0,res-0.004); float3 x = max(0.0,res-0.004);
return (x*(6.2*x+.5))/(x*(6.2*x+1.7)+0.06); return (x*(6.2*x+.5))/(x*(6.2*x+1.7)+0.06);
} }
/* The standard tonemap from sweetfx */
float3 TonemapSFX( float3 res )
{
float Gamma = tod_ind(sfxgamma);
float Exposure = tod_ind(sfxexposure);
float Saturation = tod_ind(sfxsaturation);
float Bleach = tod_ind(sfxbleach);
float Defog = tod_ind(sfxdefog);
float3 FogColor = tod_ind(sfxfogcolor);
float3 tcol = res;
tcol = saturate(tcol-Defog*FogColor*2.55);
tcol *= pow(2.0,Exposure);
tcol = pow(tcol,Gamma);
float lum = luminance(tcol);
float L = saturate(1.0*(lum-0.45));
float3 A2 = Bleach*tcol;
float3 res1 = 2.0*tcol*lum;
float3 res2 = 1.0-2.0*(1.0-lum)*(1.0-tcol);
float3 newc = lerp(res1,res2,L);
float3 mixrgb = A2*newc;
tcol += (1.0-A2)*mixrgb;
float3 gray = dot(tcol,1.0/3.0);
float3 diff = tcol-gray;
return (tcol+diff*Saturation)/(1+(diff*Saturation));
}
float3 Tonemap( float3 res ) float3 Tonemap( float3 res )
{ {
float3 tcol = pow(max(res,0.0),1.0/2.2); float3 tcol = pow(max(res,0.0),1.0/2.2);
@ -907,8 +877,7 @@ float3 Tonemap( float3 res )
res *= tod_ind(tmapexposure); res *= tod_ind(tmapexposure);
float tblend = tod_ind(tmapblend); float tblend = tod_ind(tmapblend);
float3 mapped; float3 mapped;
if ( tmapenable == 6 ) mapped = TonemapSFX(res); if ( tmapenable == 5 ) mapped = TonemapHaarmPeterDuiker(res);
else if ( tmapenable == 5 ) mapped = TonemapHaarmPeterDuiker(res);
else if ( tmapenable == 4 ) mapped = TonemapHejlDawson(res); else if ( tmapenable == 4 ) mapped = TonemapHejlDawson(res);
else if ( tmapenable == 3 ) mapped = TonemapUC2(res); else if ( tmapenable == 3 ) mapped = TonemapUC2(res);
else if ( tmapenable == 2 ) mapped = TonemapReinhard(res); else if ( tmapenable == 2 ) mapped = TonemapReinhard(res);
@ -1111,15 +1080,87 @@ float2 Adaptation( float2 coord )
#endif #endif
} }
/* Screen frost shader. Not very realistic either, but looks fine too. */
float2 ScreenFrost( float2 coord )
{
float2 bresl;
if ( (fixed.x > 0) && (fixed.y > 0) ) bresl = fixed;
else bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
float2 nc = coord*(bresl/FROSTSIZE)*frostsize;
float2 ofs = TextureFrost.Sample(Sampler2,nc).xy;
ofs = (ofs-0.5)*2.0;
ofs *= pow(length(ofs),frostpow)*froststrength;
float todpow = max(0.0,todx_ind(frostfactor));
ofs *= todpow;
/*ofs *= max(0.0,coldfactor-warmfactor);*/
float dist = distance(coord,float2(0.5,0.5))*2.0;
ofs *= clamp(pow(dist,frostrpow)*frostrmult+frostrbump,0.0,1.0);
return coord+ofs;
}
float4 PS_Draw( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target float4 PS_Draw( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
{ {
float2 coord = IN.txcoord0.xy; float2 coord = IN.txcoord0.xy;
float4 res = TextureColor.Sample(Sampler0,coord); float2 bresl;
if ( (fixed.x > 0) && (fixed.y > 0) ) bresl = fixed;
else bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
float4 res, mud;
[branch] if ( frostenable )
{
float2 ofs = ScreenFrost(coord);
ofs -= coord;
if ( (distcha != 0.0) && (length(ofs) != 0.0) )
{
float2 ofr, ofg, ofb;
ofr = ofs*(1.0-distcha*0.01);
ofg = ofs;
ofb = ofs*(1.0+distcha*0.01);
res = float4(TextureColor.Sample(Sampler0,coord+ofr).r,
TextureColor.Sample(Sampler0,coord+ofg).g,
TextureColor.Sample(Sampler0,coord+ofb).b,1.0);
#ifdef SKYRIMSE #ifdef SKYRIMSE
float4 mud = TextureBloom.Sample(Sampler1,coord); mud = float4(TextureBloom.Sample(Sampler1,coord+ofr).r,
TextureBloom.Sample(Sampler1,coord+ofg).g,
TextureBloom.Sample(Sampler1,coord+ofb).b,1.0);
#else #else
float4 mud = TextureBloom.Sample(Sampler1,Params01[4].zw*coord); mud = float4(TextureBloom.Sample(Sampler1,
Params01[4].zw*(coord+ofr)).r,
TextureBloom.Sample(Sampler1,Params01[4].zw
*(coord+ofg)).g,TextureBloom.Sample(Sampler1,
Params01[4].zw*(coord+ofb)).b,1.0);
#endif #endif
}
else
{
res = TextureColor.Sample(Sampler0,coord+ofs);
#ifdef SKYRIMSE
mud = TextureBloom.Sample(Sampler1,coord+ofs);
#else
mud = TextureBloom.Sample(Sampler1,Params01[4].zw
*(coord+ofs));
#endif
}
float2 nc = coord*(bresl/FROSTSIZE)*frostsize;
float bmp = pow(max(0,TextureFrost.SampleLevel(Sampler2,nc,
0).z),frostbpow);
float dist = distance(coord,float2(0.5,0.5))*2.0;
dist = clamp(pow(dist,frostrpow)*frostrmult+frostrbump,0.0,
1.0)*frostblend;
float todpow = max(0.0,todx_ind(frostfactor));
dist *= todpow;
/* Weathers not implemented in FO4 ENB as of 0.291 */
/*dist *= max(0.0,coldfactor-warmfactor);*/
res.rgb *= 1.0+bmp*dist;
}
else
{
res = TextureColor.Sample(Sampler0,coord);
#ifdef SKYRIMSE
mud = TextureBloom.Sample(Sampler1,coord);
#else
mud = TextureBloom.Sample(Sampler1,Params01[4].zw*coord);
#endif
}
/* Insert MariENB filters here */ /* Insert MariENB filters here */
float2 adapt = Adaptation(coord); float2 adapt = Adaptation(coord);
if ( bloomdebug ) res.rgb *= 0; if ( bloomdebug ) res.rgb *= 0;

View file

@ -1,5 +1,24 @@
[ENBEFFECT.FX] [ENBEFFECT.FX]
TECHNIQUE=1 TECHNIQUE=1
Fixed ResolutionX=1920
Fixed ResolutionY=1080
Distortion Chromatic Aberration=9.5
Enable Screen Frost=false
Frost Contrast=1.67
Frost Strength=0.02
Frost Radial Contrast=1.67
Frost Radial Intensity=0.83
Frost Radial Offset=-0.66
Frost Texture Blend=0.94
Frost Texture Blend Contrast=2.44
Frost Texture Size=0.85
Frost Factor Dawn=0.0
Frost Factor Sunrise=0.0
Frost Factor Day=0.0
Frost Factor Sunset=0.0
Frost Factor Dusk=0.0
Frost Factor Night=1.06
Frost Factor Interior=0.0
Enable Grain=true Enable Grain=true
Grain Speed=25.0 Grain Speed=25.0
Grain Intensity=0.250001 Grain Intensity=0.250001

Binary file not shown.

Before

Width:  |  Height:  |  Size: 737 KiB

After

Width:  |  Height:  |  Size: 2.6 MiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 MiB