From 08c16b7a3001ab394fdde1297765557e7a95a1cc Mon Sep 17 00:00:00 2001 From: Marisa Kirisame Date: Sun, 7 Apr 2019 17:44:26 +0200 Subject: [PATCH] MariENB Skyrim 2.4.4 --- enbseries/VERSION | 2 +- enbseries/enbbloom.fx.ini | 70 +++++++++++----------- enbseries/enbeffect.fx.ini | 10 ++-- enbseries/enbeffectprepass.fx.ini | 15 ++++- enbseries/menbprepassfilters.fx | 99 +++++++++++++++++++------------ enbseries/menbprepasssettings.fx | 78 +++++++++++++++++++++++- 6 files changed, 192 insertions(+), 82 deletions(-) diff --git a/enbseries/VERSION b/enbseries/VERSION index aaba714..825d54b 100644 --- a/enbseries/VERSION +++ b/enbseries/VERSION @@ -1 +1 @@ -2.4.2-1 "Crazy about weathers" +2.4.4-1 "The Bokehning" diff --git a/enbseries/enbbloom.fx.ini b/enbseries/enbbloom.fx.ini index 858cf8c..e5311f9 100644 --- a/enbseries/enbbloom.fx.ini +++ b/enbseries/enbbloom.fx.ini @@ -1,25 +1,25 @@ [ENBBLOOM.FX] TECHNIQUE=0 -Bloom Intensity Night=0.38 -Bloom Intensity Day=0.35 -Bloom Intensity Interior Night=0.34 -Bloom Intensity Interior Day=0.31 +Bloom Intensity Night=0.42 +Bloom Intensity Day=0.39 +Bloom Intensity Interior Night=0.35 +Bloom Intensity Interior Day=0.32 Bloom Contrast Night=0.99 Bloom Contrast Day=0.96 Bloom Contrast Interior Night=0.99 Bloom Contrast Interior Day=0.97 -Bloom Saturation Night=1.04 -Bloom Saturation Day=1.02 -Bloom Saturation Interior Night=1.01 -Bloom Saturation Interior Day=1.0 -Bloom Offset Night=-0.13 -Bloom Offset Day=-0.18 +Bloom Saturation Night=1.09 +Bloom Saturation Day=1.07 +Bloom Saturation Interior Night=1.06 +Bloom Saturation Interior Day=1.05 +Bloom Offset Night=-0.09 +Bloom Offset Day=-0.14 Bloom Offset Interior Night=-0.1 Bloom Offset Interior Day=-0.14 -Bloom Intensity Cap Night=35.0 -Bloom Intensity Cap Day=35.0 -Bloom Intensity Cap Interior Night=35.0 -Bloom Intensity Cap Interior Day=35.0 +Bloom Intensity Cap Night=25.0 +Bloom Intensity Cap Day=25.0 +Bloom Intensity Cap Interior Night=25.0 +Bloom Intensity Cap Interior Day=25.0 Bloom Blur Radius X=1.0 Bloom Blur Radius Y=1.0 Blue Shift Night Red=0.07 @@ -34,17 +34,17 @@ Blue Shift Interior Night Blue=1.77 Blue Shift Interior Day Red=0.08 Blue Shift Interior Day Green=-0.3 Blue Shift Interior Day Blue=1.39 -Blue Shift Intensity Night=0.16 -Blue Shift Intensity Day=0.13 -Blue Shift Intensity Interior Night=0.18 -Blue Shift Intensity Interior Day=0.15 +Blue Shift Intensity Night=0.22 +Blue Shift Intensity Day=0.19 +Blue Shift Intensity Interior Night=0.24 +Blue Shift Intensity Interior Day=0.21 Blue Shift Luminance Factor Per-pass=0.74 Blue Shift Color Factor Per-pass=0.85 Enable Anamorphic Bloom=true -Anamorphic Bloom Blend Night=0.54 -Anamorphic Bloom Blend Day=0.47 -Anamorphic Bloom Blend Interior Night=0.51 -Anamorphic Bloom Blend Interior Day=0.44 +Anamorphic Bloom Blend Night=0.59 +Anamorphic Bloom Blend Day=0.51 +Anamorphic Bloom Blend Interior Night=0.55 +Anamorphic Bloom Blend Interior Day=0.48 Anamorphic Bloom Blue Shift Night Red=0.06 Anamorphic Bloom Blue Shift Night Green=-0.44 Anamorphic Bloom Blue Shift Night Blue=1.39 @@ -57,20 +57,20 @@ Anamorphic Bloom Blue Shift Interior Night Blue=1.54 Anamorphic Bloom Blue Shift Interior Day Red=-0.03 Anamorphic Bloom Blue Shift Interior Day Green=-0.11 Anamorphic Bloom Blue Shift Interior Day Blue=1.65 -Anamorphic Bloom Blue Shift Intensity Night=0.33 -Anamorphic Bloom Blue Shift Intensity Day=0.29 -Anamorphic Bloom Blue Shift Interior Night=0.46 -Anamorphic Bloom Blue Shift Interior Day=0.39 -Anamorphic Bloom Contrast Night=1.25 -Anamorphic Bloom Contrast Day=1.33 -Anamorphic Bloom Contrast Interior Night=1.32 -Anamorphic Bloom Contrast Interior Day=1.33 +Anamorphic Bloom Blue Shift Intensity Night=0.46 +Anamorphic Bloom Blue Shift Intensity Day=0.41 +Anamorphic Bloom Blue Shift Interior Night=0.57 +Anamorphic Bloom Blue Shift Interior Day=0.5 +Anamorphic Bloom Contrast Night=1.2 +Anamorphic Bloom Contrast Day=1.25 +Anamorphic Bloom Contrast Interior Night=1.27 +Anamorphic Bloom Contrast Interior Day=1.28 Anamorphic Bloom Radius Multiplier=1.0 -Bloom Pass 1 Blend=0.33 -Bloom Pass 2 Blend=0.56 +Bloom Pass 1 Blend=1.29 +Bloom Pass 2 Blend=1.11 Bloom Pass 3 Blend=0.76 -Bloom Pass 4 Blend=0.83 -Bloom Pass 7 Blend=0.86 -Bloom Pass 8 Blend=0.97 +Bloom Pass 4 Blend=0.65 +Bloom Pass 7 Blend=0.49 +Bloom Pass 8 Blend=0.28 Bloom Prepass Blend=0.0 Bloom Base Blend=0.0 diff --git a/enbseries/enbeffect.fx.ini b/enbseries/enbeffect.fx.ini index 8d987b3..5f340b6 100644 --- a/enbseries/enbeffect.fx.ini +++ b/enbseries/enbeffect.fx.ini @@ -158,11 +158,11 @@ Grading Value Contrast Interior Night=1.05 Grading Value Contrast Interior Day=1.01 Colorize After HSV=true Enable Vanilla Imagespace=true -Vanilla Tint Blend=0.99 -Vanilla Vibrance Blend=0.94 -Vanilla Contrast Blend=0.85 -Vanilla Tint Contrast=0.95 -Vanilla Tint Strength=1.39 +Vanilla Tint Blend=0.92 +Vanilla Vibrance Blend=0.95 +Vanilla Contrast Blend=0.89 +Vanilla Tint Contrast=1.15 +Vanilla Tint Strength=0.94 Vanilla Vibrance Contrast=0.93 Vanilla Vibrance Strength=1.0 Enable LUT Grading=true diff --git a/enbseries/enbeffectprepass.fx.ini b/enbseries/enbeffectprepass.fx.ini index 7576db3..9e6b4c7 100644 --- a/enbseries/enbeffectprepass.fx.ini +++ b/enbseries/enbeffectprepass.fx.ini @@ -123,7 +123,7 @@ DOF Fog Blend Interior Day=1.0 Disable DOF=false Use Only Fixed DOF=false DOF Blur Radius=8.0 -DOF Blur Chromatic Aberration=1.5 +DOF Blur Chromatic Aberration=1.78 DOF Relative to FOV=true Default FOV=75.0 DOF Relative Factor Night=2.19 @@ -173,3 +173,16 @@ Sharpen Enable=true Sharpen Radius=0.8 Sharpen Clamp=0.1 Sharpen Blending=6.0 +DOF Fixed Focus Depth=0.0 +DOF Fixed Focus Cap=0.0 +DOF Fixed Unfocus Depth=0.0 +DOF Fog Depth=0.0 +Enable DOF Post-Blur=true +DOF Post-Blur Radius=1.0 +Enable DOF Highlights=true +DOF Highlight Threshold=0.71 +DOF Highlight Gain=1.93 +DOF Bokeh Edge Bias=0.5 +DOF Bokeh Fuzz=0.01 +DOF Gather Blur Radius=8.0 +DOF Bokeh Blur Radius=2.0 diff --git a/enbseries/menbprepassfilters.fx b/enbseries/menbprepassfilters.fx index 7802d34..9a4266e 100644 --- a/enbseries/menbprepassfilters.fx +++ b/enbseries/menbprepassfilters.fx @@ -347,20 +347,29 @@ float4 PS_DoFPrepass( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR float doffixedunfocusmult = tod_ind(doffixedunfocusmult); float doffixedunfocusbump = tod_ind(doffixedunfocusbump); float doffixedunfocusblend = tod_ind(doffixedunfocusblend); +#ifndef FALLOUT float doffogpow = tod_ind(doffogpow); float doffogmult = tod_ind(doffogmult); float doffogbump = tod_ind(doffogbump); float doffogblend = tod_ind(doffogblend); +#endif float dep = tex2D(SamplerDepth,coord).x; float foc = tex2D(SamplerFocus,coord).x; /* cheap tilt */ foc = foc+0.01*doftiltx*(doftiltxcenter-coord.x) +0.01*doftilty*(doftiltycenter-coord.y); - float dfc = abs(dep-foc); - float dff = abs(dep); - float dfu = dff; + float dff = abs(dep-doffixedfocusdepth); + dff = clamp(pow(dff,doffixedfocuspow)*doffixedfocusmult + +doffixedfocusbump,0.0,1.0); + if ( dep > doffixedfocuscap ) dff = 1.0; + float dfu = abs(dep-doffixedunfocusdepth); + dfu = clamp(pow(dfu,doffixedunfocuspow)*doffixedunfocusmult + +doffixedunfocusbump,0.0,1.0); +#ifndef FALLOUT + float dfog = abs(dep-doffogdepth); + dfog = clamp(pow(dfog,doffogpow)*doffogmult+doffogbump,0.0,1.0); +#endif if ( doffixedcut && (dep >= cutoff*0.000001) ) dfu *= 0; - float dfog = dff; /* Change power of dof based on field of view. Works only in Skyrim. The FieldOfView variable seems to hold bogus values in Fallout @@ -376,24 +385,43 @@ float4 PS_DoFPrepass( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR dofpow = max(0,dofpow+relfov*relfovfactor); } #endif + float dfc = abs(dep-foc); dfc = clamp(pow(dfc,dofpow)*dofmult+dofbump,0.0,1.0); - dff = clamp(pow(dff,doffixedfocuspow)*doffixedfocusmult - +doffixedfocusbump,0.0,1.0); - dfu = clamp(pow(dfu,doffixedunfocuspow)*doffixedunfocusmult - +doffixedunfocusbump,0.0,1.0); - dfog = clamp(pow(dfog,doffogpow)*doffogmult+doffogbump,0.0,1.0); if ( doffixedonly ) dfc *= 0; - dfc *= lerp(1.0,dff,doffixedfocusblend); dfc += lerp(0.0,dfu,doffixedunfocusblend); +#ifndef FALLOUT if ( doffogenable ) dfc += (weatherfactor(WT_TEMPERATE_FOG) +weatherfactor(WT_COLD_FOG)+weatherfactor(WT_HOT_FOG)) *lerp(0.0,dfog,doffogblend); +#endif + dfc *= lerp(1.0,dff,doffixedfocusblend); dfc = saturate(dfc); float4 res = tex2D(SamplerColor,coord); res.a = dfc; return res; } +/* helper code for simplifying these */ +#define gcircle(x) float2(cos(x),sin(x)) +float4 dofsample( float2 coord, float2 bsz, float blur, bool bDoHighlight ) +{ + float4 res; + float cstep = 2.0*pi*(1.0/3.0); + float ang = 0.5*pi; + res.r = tex2D(SamplerColor,coord+gcircle(ang)*bsz*dofpcha*0.1).r; + ang += cstep; + res.g = tex2D(SamplerColor,coord+gcircle(ang)*bsz*dofpcha*0.1).g; + ang += cstep; + res.b = tex2D(SamplerColor,coord+gcircle(ang)*bsz*dofpcha*0.1).b; + if ( bDoHighlight ) + { + float l = luminance(res.rgb); + float threshold = max((l-dofbthreshold)*dofbgain,0.0); + res += lerp(0,res,threshold*blur); + } + res.a = tex2D(SamplerColor,coord).a; + return res; +} /* gather blur pass */ float4 PS_DoFGather( VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR { @@ -418,11 +446,7 @@ float4 PS_DoFGather( VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR float4 sc; [unroll] for ( int i=0; i<32; i++ ) { - sc = float4(tex2D(SamplerColor,coord+poisson32[i]*bsz*(1 - +dofpcha*0.1)).r,tex2D(SamplerColor,coord+poisson32[i] - *bsz).g,tex2D(SamplerColor,coord+poisson32[i]*bsz*(1 - -dofpcha*0.1)).b,tex2D(SamplerColor,coord+poisson32[i] - *bsz).a); + sc = dofsample(coord+poisson32[i]*bsz,bsz,dfc,dofhilite); ds = tex2D(SamplerDepth,coord+poisson32[i]*bsz).x; sw = (ds>dep)?1.0:sc.a; tw += sw; @@ -452,29 +476,26 @@ float4 PS_DoFBorkeh( VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR */ if ( dfc <= dofminblur ) return res; float dep = tex2D(SamplerDepth,coord).x; - float sr = dofpradius*dfc; - float w = max(0,(1/(sr*sr+1))*luminance(res.rgb+0.01)); - res *= w; - float tw = w; - float2 bsz = bof*sr; - float4 pc; - float sc, ds; - [unroll] for ( int i=0; i<32; i++ ) + float2 sf = bof+(tex2D(SamplerNoise3,coord*(bresl/256.0)).xy*2.0-1.0) + *dofbnoise*0.001; + float2 sr = sf*dofbradius*dfc; + float tw = 1.0; + int rsamples; + float bstep, sw; + float2 rcoord; + #define dofbrings 7 + #define dofbsamples 3 + [unroll] for ( int i=1; i<=dofbrings; i++ ) { - pc = float4(tex2D(SamplerColor,coord+poisson32[i]*bsz*(1 - +dofpcha*0.1)).r,tex2D(SamplerColor,coord+poisson32[i] - *bsz).g,tex2D(SamplerColor,coord+poisson32[i]*bsz*(1 - -dofpcha*0.1)).b,tex2D(SamplerColor,coord+poisson32[i] - *bsz).a); - ds = tex2D(SamplerDepth,coord+poisson32[i]*bsz).x; - sc = abs(pc.a*dofpradius); - if ( sr < 0.0 ) sc = max(abs(sr),sc); - w = (1.0/(pow(sc,2)+1))*luminance(pc.rgb+0.01); - w *= saturate(1-smoothstep(sc,sc*1.1,length(poisson32[i]*bsz) - *abs(sr))); - w *= (ds>dep)?1.0:sc; - res += pc*w; - tw += w; + rsamples = i*dofbsamples; + [unroll] for ( int j=0; j 0) && (fixedy > 0) ) bresl = float2(fixedx,fixedy); else bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w); - float2 bof = 1.0/bresl; + float2 bof = (1.0/bresl)*dofpbradius; float2 ofs[16] = { float2(1.0,1.0), float2(-1.0,-1.0), @@ -506,13 +527,13 @@ float4 PS_DoFPostBlur( VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR float2(-1.41,1.41), float2(1.41,-1.41) }; float4 res = tex2D(SamplerColor,coord); + if ( !dofpostblur ) return float4(res.rgb,1.0); int i; [unroll] for ( i=0; i<16; i++ ) res += tex2D(SamplerColor,coord+ofs[i]*bof*dfc); res /= 17.0; res.a = 1.0; return res; - } /* Screen frost shader. Not very realistic either, but looks fine too. */ float2 ScreenFrost( float2 coord ) diff --git a/enbseries/menbprepasssettings.fx b/enbseries/menbprepasssettings.fx index 1e3b31d..f51cc8e 100644 --- a/enbseries/menbprepasssettings.fx +++ b/enbseries/menbprepasssettings.fx @@ -520,6 +520,20 @@ float doffixedfocusblend_id string UIWidget = "Spinner"; float UIMin = 0.0; > = {0.0}; +float doffixedfocusdepth +< + string UIName = "DOF Fixed Focus Depth"; + string UIWidget = "Spinner"; + float UIMin = 0.0; + float UIMax = 1.0; +> = {0.0}; +float doffixedfocuscap +< + string UIName = "DOF Fixed Focus Cap"; + string UIWidget = "Spinner"; + float UIMin = 0.0; + float UIMax = 1.0; +> = {0.0}; /* fixed unfocused depth factors */ float doffixedunfocusmult_n < @@ -613,12 +627,20 @@ float doffixedunfocusblend_id string UIWidget = "Spinner"; float UIMin = 0.0; > = {0.0}; +float doffixedunfocusdepth +< + string UIName = "DOF Fixed Unfocus Depth"; + string UIWidget = "Spinner"; + float UIMin = 0.0; + float UIMax = 1.0; +> = {0.0}; /* prevents fixed dof from blurring the skybox */ bool doffixedcut < string UIName = "DOF Fixed Use Cutoff"; string UIWidget = "Checkbox"; > = {true}; +#ifndef FALLOUT /* fixed dof for foggy weathers */ bool doffogenable < @@ -717,6 +739,14 @@ float doffogblend_id string UIWidget = "Spinner"; float UIMin = 0.0; > = {0.0}; +float doffogdepth +< + string UIName = "DOF Fog Depth"; + string UIWidget = "Spinner"; + float UIMin = 0.0; + float UIMax = 1.0; +> = {0.0}; +#endif /* disable depth of field */ bool dofdisable < @@ -730,15 +760,61 @@ bool doffixedonly > = {false}; float dofpradius < - string UIName = "DOF Blur Radius"; + string UIName = "DOF Gather Blur Radius"; string UIWidget = "Spinner"; float UIMin = 0.0; > = {6.0}; +bool dofpostblur +< + string UIName = "Enable DOF Post-Blur"; + string UIWidget = "Checkbox"; +> = {true}; +float dofpbradius +< + string UIName = "DOF Post-Blur Radius"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {1.0}; float dofpcha < string UIName = "DOF Blur Chromatic Aberration"; string UIWidget = "Spinner"; > = {0.0}; +bool dofhilite +< + string UIName = "Enable DOF Highlights"; + string UIWidget = "Checkbox"; +> = {false}; +float dofbthreshold +< + string UIName = "DOF Highlight Threshold"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {0.5}; +float dofbgain +< + string UIName = "DOF Highlight Gain"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {2.0}; +float dofbradius +< + string UIName = "DOF Bokeh Blur Radius"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {1.0}; +float dofbbias +< + string UIName = "DOF Bokeh Edge Bias"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {0.5}; +float dofbnoise +< + string UIName = "DOF Bokeh Fuzz"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {0.01}; #ifndef FALLOUT bool dofrelfov <