diff --git a/enbseries.ini b/enbseries.ini index 20c6d4a..122950c 100644 --- a/enbseries.ini +++ b/enbseries.ini @@ -242,7 +242,7 @@ DirectLightingIntensitySunrise=1.47 DirectLightingIntensityDay=1.74 DirectLightingIntensitySunset=1.37 DirectLightingIntensityDusk=1.02 -DirectLightingIntensityNight=0.81 +DirectLightingIntensityNight=0.85 DirectLightingIntensityInteriorDay=1.59 DirectLightingIntensityInteriorNight=0.89 DirectLightingDesaturationDawn=0.0 @@ -261,12 +261,12 @@ DirectLightingColorFilterDusk=0.976, 0.922, 0.992 DirectLightingColorFilterNight=0.894, 0.89, 0.992 DirectLightingColorFilterInteriorDay=1, 1, 1 DirectLightingColorFilterInteriorNight=0.886, 0.863, 0.996 -AmbientLightingIntensityDawn=0.75 +AmbientLightingIntensityDawn=0.56 AmbientLightingIntensitySunrise=0.87 AmbientLightingIntensityDay=0.91 AmbientLightingIntensitySunset=0.83 -AmbientLightingIntensityDusk=0.77 -AmbientLightingIntensityNight=0.71 +AmbientLightingIntensityDusk=0.64 +AmbientLightingIntensityNight=0.35 AmbientLightingIntensityInteriorDay=0.17 AmbientLightingIntensityInteriorNight=0.12 SkyAmbientTopIntensityDawn=0.18 @@ -274,7 +274,7 @@ SkyAmbientTopIntensitySunrise=0.23 SkyAmbientTopIntensityDay=0.31 SkyAmbientTopIntensitySunset=0.22 SkyAmbientTopIntensityDusk=0.16 -SkyAmbientTopIntensityNight=0.11 +SkyAmbientTopIntensityNight=0.1 SkyAmbientTopIntensityInteriorDay=0.06 SkyAmbientTopIntensityInteriorNight=0.03 SkyAmbientBottomIntensityDawn=0.13 diff --git a/enbseries/VERSION b/enbseries/VERSION index 1094f81..4e30dc8 100644 --- a/enbseries/VERSION +++ b/enbseries/VERSION @@ -1 +1 @@ -3.4.4 "Who In Their Right Mind Would Frost A Cake With Their Butt" +3.5.0 "Frosted Flakes" diff --git a/enbseries/enbbloom.fx b/enbseries/enbbloom.fx index b03988e..71735dd 100644 --- a/enbseries/enbbloom.fx +++ b/enbseries/enbbloom.fx @@ -285,8 +285,17 @@ static const float gauss4[4] = 0.134598, 0.127325, 0.107778, 0.081638, 0.055335, 0.033562, 0.018216, 0.008847 };*/ +/* radius: 20, std dev: 7.5 */ +static const float gauss20[20] = +{ + 0.053690, 0.053215, 0.051815, 0.049562, + 0.046572, 0.042992, 0.038987, 0.034732, + 0.030397, 0.026134, 0.022073, 0.018314, + 0.014928, 0.011953, 0.009403, 0.007266, + 0.005516, 0.004114, 0.003014, 0.002169 +}; /* radius: 40, std dev: 15 */ -static const float gauss40[40] = +/*static const float gauss40[40] = { 0.026823, 0.026763, 0.026585, 0.026291, 0.025886, 0.025373, 0.024760, 0.024055, @@ -298,7 +307,7 @@ static const float gauss40[40] = 0.004697, 0.004139, 0.003630, 0.003170, 0.002756, 0.002385, 0.002055, 0.001763, 0.001506, 0.001280, 0.001084, 0.000913 -}; +};*/ /* radius: 80, std dev: 30 */ /*static const float gauss80[80] = { @@ -448,11 +457,11 @@ float4 Anamorphic( float2 coord, Texture2D intex, float insz ) float sum = 0.0; float inc = flen/insz; float2 pp; - [unroll] for ( i=-39; i<=39; i++ ) + [unroll] for ( i=-19; i<=19; i++ ) { pp = coord+float2(i,0)*inc; - res += gauss40[abs(i)]*intex.Sample(Sampler,pp); - sum += ((pp.x>=0.0)&&(pp.x<1.0))?gauss40[abs(i)]:0.0; + res += gauss20[abs(i)]*intex.Sample(Sampler,pp); + sum += ((pp.x>=0.0)&&(pp.x<1.0))?gauss20[abs(i)]:0.0; } res *= 1.0/sum; float3 flu = tod_ind(flu); diff --git a/enbseries/enbbloom.fx.ini b/enbseries/enbbloom.fx.ini index 4f93e23..ee43469 100644 --- a/enbseries/enbbloom.fx.ini +++ b/enbseries/enbbloom.fx.ini @@ -2,10 +2,10 @@ TECHNIQUE=2 Bloom Intensity Night=0.64 Bloom Intensity Day=0.55 -Bloom Intensity Interior=0.59 +Bloom Intensity Interior=0.57 Bloom Contrast Night=0.94 Bloom Contrast Day=0.98 -Bloom Contrast Interior=0.96 +Bloom Contrast Interior=0.95 Bloom Saturation Night=1.45 Bloom Saturation Day=1.36 Bloom Saturation Interior=1.57 diff --git a/enbseries/enbdepthoffield.fx b/enbseries/enbdepthoffield.fx index 05983b2..f6405cb 100644 --- a/enbseries/enbdepthoffield.fx +++ b/enbseries/enbdepthoffield.fx @@ -783,117 +783,6 @@ bool foglimbo string UIName = "Limbo Mode"; string UIWidget = "Checkbox"; > = {false}; -/* ssao filter */ -string str_ssao = "Ray Marching SSAO"; -bool ssaoenable -< - string UIName = "Enable SSAO"; - string UIWidget = "Checkbox"; -> = {false}; -float ssaoradius -< - string UIName = "SSAO Radius"; - string UIWidget = "Spinner"; -> = {1.0}; -int ssaonoise -< - string UIName = "SSAO Noise"; - string UIWidget = "Spinner"; - int UIMin = 0; - int UIMax = 1; -> = {1}; -float ssaofadepow_n -< - string UIName = "SSAO Fade Contrast Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {0.05}; -float ssaofadepow_d -< - string UIName = "SSAO Fade Contrast Day"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {0.05}; -float ssaofadepow_i -< - string UIName = "SSAO Fade Contrast Interior"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {0.05}; -float ssaofademult_n -< - string UIName = "SSAO Fade Intensity Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1.0}; -float ssaofademult_d -< - string UIName = "SSAO Fade Intensity Day"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1.0}; -float ssaofademult_i -< - string UIName = "SSAO Fade Intensity Interior"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1.0}; -float ssaomult -< - string UIName = "SSAO Intensity"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {0.5}; -float ssaopow -< - string UIName = "SSAO Contrast"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1.5}; -float ssaobump -< - string UIName = "SSAO Shift"; - string UIWidget = "Spinner"; -> = {0.0}; -float ssaoblend -< - string UIName = "SSAO Blending"; - string UIWidget = "Spinner"; -> = {1.0}; -bool ssaobenable -< - string UIName = "SSAO Blur"; - string UIWidget = "Checkbox"; -> = {true}; -float ssaobfact -< - string UIName = "SSAO Bilateral Factor"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1000.0}; -float ssaoclamp -< - string UIName = "SSAO Range"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1.0}; -float ssaoclampmin -< - string UIName = "SSAO Range Min"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {0.0}; -float ssaobradius -< - string UIName = "SSAO Blur Radius"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1.0}; -bool ssaodebug -< - string UIName = "Debug SSAO"; - string UIWidget = "Checkbox"; -> = {false}; /* depth-based colour grading suite */ string str_grade = "Depth Color Grading Suite"; float dgradedfoc @@ -1155,42 +1044,6 @@ static const float gauss16[16] = 0.033109, 0.031485, 0.029764, 0.027971, 0.026131, 0.024268, 0.022405, 0.020563 }; -/* SSAO samples */ -static const float3 ssao_samples[64] = -{ - float3(-0.0051, 0.0021, 0.0146),float3(-0.0197,-0.0213,-0.0116), - float3( 0.0005,-0.0432,-0.0182),float3(-0.0011,-0.0586,-0.0217), - float3(-0.0549, 0.0461, 0.0309),float3(-0.0448,-0.0764,-0.0306), - float3(-0.0366, 0.0758,-0.0699),float3(-0.0770,-0.0707,-0.0686), - float3( 0.1181,-0.0340,-0.0683),float3(-0.0647, 0.0356, 0.1377), - float3(-0.1167, 0.1262, 0.0024),float3(-0.1353,-0.0861, 0.0971), - float3(-0.0096, 0.0936, 0.1800),float3( 0.1311,-0.1013,-0.1429), - float3(-0.1186,-0.0653, 0.1913),float3( 0.1641, 0.0260, 0.1868), - float3(-0.1225,-0.2319, 0.0424),float3( 0.1036,-0.2000, 0.1684), - float3( 0.1656, 0.2022,-0.1408),float3(-0.1809,-0.1673, 0.1922), - float3(-0.2485,-0.1236, 0.1750),float3( 0.1030,-0.0550, 0.3233), - float3(-0.0405, 0.3068, 0.1827),float3(-0.0576, 0.1632, 0.3327), - float3( 0.0392, 0.3583,-0.1505),float3( 0.0082, 0.2865, 0.2879), - float3( 0.0055,-0.2835, 0.3124),float3(-0.2733, 0.1991,-0.2776), - float3( 0.2667, 0.1127,-0.3486),float3(-0.3326, 0.2740,-0.1844), - float3( 0.2887,-0.3838, 0.0630),float3( 0.1088, 0.1546, 0.4629), - float3( 0.0977,-0.3565, 0.3595),float3(-0.4204, 0.0855, 0.3133), - float3(-0.2237,-0.4932, 0.0759),float3( 0.4245, 0.3169,-0.1891), - float3( 0.0084,-0.5682, 0.1062),float3(-0.1489,-0.5296,-0.2235), - float3( 0.0014,-0.4153,-0.4460),float3( 0.0300,-0.4392, 0.4437), - float3( 0.2627, 0.4518, 0.3704),float3(-0.4945, 0.3659, 0.2285), - float3(-0.2550,-0.5311, 0.3230),float3(-0.4477, 0.0828,-0.5151), - float3( 0.4682, 0.4531,-0.2644),float3(-0.1235,-0.0366, 0.7071), - float3( 0.3545, 0.4559, 0.4536),float3(-0.1037,-0.2199,-0.7095), - float3( 0.4269, 0.5299,-0.3510),float3( 0.7051,-0.1468,-0.3027), - float3( 0.4590,-0.5669,-0.3208),float3( 0.2330, 0.1264, 0.7680), - float3(-0.3954, 0.5619,-0.4622),float3( 0.5977,-0.5110, 0.3059), - float3(-0.5800,-0.6306, 0.0672),float3(-0.2211,-0.0332,-0.8460), - float3(-0.3808,-0.2238,-0.7734),float3(-0.5616, 0.6858,-0.1887), - float3(-0.2995, 0.5165,-0.7024),float3( 0.5042,-0.0537, 0.7885), - float3(-0.6477,-0.3691, 0.5938),float3(-0.3969, 0.8815, 0.0620), - float3(-0.4300,-0.8814,-0.0852),float3(-0.1683, 0.9379, 0.3033) -}; /* For low quality DOF */ static const float2 poisson32[32] = { @@ -1312,107 +1165,6 @@ float depthlinear( float2 coord ) return (2*zNear)/(zFar+zNear-z*(zFar-zNear)); } -/* - Thank you Boris for not providing access to a normal buffer. Guesswork using - the depth buffer results in imprecise normals that aren't smoothed. Plus - there is no way to get the normal data from textures either. Also, three - texture fetches are needed instead of one (great!) -*/ -float3 pseudonormal( float dep, float2 coord ) -{ - float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w); - float2 ofs1 = float2(0,1.0/bresl.y); - float2 ofs2 = float2(1.0/bresl.x,0); - float dep1 = TextureDepth.SampleLevel(Sampler1,coord+ofs1,0).x; - float dep2 = TextureDepth.SampleLevel(Sampler1,coord+ofs2,0).x; - float3 p1 = float3(ofs1,dep1-dep); - float3 p2 = float3(ofs2,dep2-dep); - float3 normal = cross(p1,p2); - normal.z = -normal.z; - return normalize(normal); -} - -/* SSAO Prepass */ -float4 PS_SSAOPre( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target -{ - float2 coord = IN.txcoord.xy; - /* get occlusion using single-step Ray Marching with 64 samples */ - float ssaofadepow = tod_ind(ssaofadepow); - float ssaofademult = tod_ind(ssaofademult); - if ( !ssaoenable ) return 0.0; - float depth = TextureDepth.Sample(Sampler1,coord).x; - float ldepth = depthlinear(coord); - if ( depth >= cutoff*0.000001 ) return 1.0; - float2 bresl; - if ( (fixed.x > 0) && (fixed.y > 0) ) bresl = fixed; - else bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w); - float3 normal = pseudonormal(depth,coord); - float2 nc = coord*(bresl/256.0); - float2 bof = float2(1.0/bresl.x,1.0/bresl.y)*ssaoradius; - float2 nc2 = TextureNoise3.SampleLevel(Sampler2,nc+48000.0*Timer.x - *ssaonoise,0).xy; - float3 rnormal = TextureNoise3.SampleLevel(Sampler2,nc2,0).xyz*2.0-1.0; - rnormal = normalize(rnormal); - float occ = 0.0; - int i; - float3 sample; - float sdepth, so, delta; - float sclamp = ssaoclamp/100000.0; - float sclampmin = ssaoclampmin/100000.0; - [unroll] for ( i=0; i<64; i++ ) - { - sample = reflect(ssao_samples[i],rnormal); - sample *= sign(dot(normal,sample)); - so = ldepth-sample.z*bof.x; - sdepth = depthlinear(coord+bof*sample.xy/ldepth); - delta = saturate(so-sdepth); - delta *= 1.0-smoothstep(0.0,sclamp,delta); - if ( (delta > sclampmin) && (delta < sclamp) ) - occ += 1.0-delta; - } - float uocc = saturate(occ/64.0); - float fade = 1.0-depth; - uocc *= saturate(pow(max(0,fade),ssaofadepow)*ssaofademult); - uocc = saturate(pow(max(0,uocc),ssaopow)*ssaomult+ssaobump); - return saturate(1.0-(uocc*ssaoblend)); -} -/* - The blur pass uses bilateral filtering to mostly preserve borders. - An additional factor using difference of normals was tested, but the - performance decrease was too much, so it's gone forever. -*/ -float4 PS_SSAOBlur( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target -{ - float2 coord = IN.txcoord.xy; - float4 res = TextureColor.Sample(Sampler1,coord); - float mud = RenderTargetR16F.Sample(Sampler1,coord).x; - if ( !ssaoenable ) return res; - if ( !ssaobenable ) - { - if ( ssaodebug ) return saturate(mud); - return res*mud; - } - float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w); - float2 bof = (1.0/bresl)*ssaobradius; - float isd, sd, ds, sw, tw = 0; - mud = 0.0; - int i, j; - isd = TextureDepth.Sample(Sampler1,coord).x; - [unroll] for ( j=-7; j<=7; j++ ) [unroll] for ( i=-7; i<=7; i++ ) - { - sd = TextureDepth.Sample(Sampler1,coord+float2(i,j)*bof).x; - ds = 1.0/pow(1.0+abs(isd-sd),ssaobfact); - sw = ds; - sw *= gauss8[abs(i)]*gauss8[abs(j)]; - tw += sw; - mud += sw*RenderTargetR16F.Sample(Sampler1,coord+float2(i,j) - *bof).x; - } - mud /= tw; - if ( ssaodebug ) return saturate(mud); - return res*mud; -} - /* precalculate DOF factors */ float4 PS_DoFPrepass( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target { @@ -2026,15 +1778,7 @@ technique11 Prepass1 SetPixelShader(CompileShader(ps_5_0,PS_DepthGrade())); } } -technique11 Prepass2 -{ - pass p0 - { - SetVertexShader(CompileShader(vs_5_0,VS_Quad())); - SetPixelShader(CompileShader(ps_5_0,PS_SSAOPre())); - } -} -technique11 Prepass3 +technique11 Prepass2 { pass p0 { @@ -2042,15 +1786,7 @@ technique11 Prepass3 SetPixelShader(CompileShader(ps_5_0,PS_Distortion())); } } -technique11 Prepass4 -{ - pass p0 - { - SetVertexShader(CompileShader(vs_5_0,VS_Quad())); - SetPixelShader(CompileShader(ps_5_0,PS_SSAOBlur())); - } -} -technique11 Prepass5 +technique11 Prepass3 { pass p0 { @@ -2058,7 +1794,7 @@ technique11 Prepass5 SetPixelShader(CompileShader(ps_5_0,PS_DoFPrepass())); } } -technique11 Prepass6 +technique11 Prepass4 { pass p0 { @@ -2066,7 +1802,7 @@ technique11 Prepass6 SetPixelShader(CompileShader(ps_5_0,PS_DoFBlur())); } } -technique11 Prepass7 +technique11 Prepass5 { pass p0 { @@ -2074,7 +1810,7 @@ technique11 Prepass7 SetPixelShader(CompileShader(ps_5_0,PS_DoFPostBlur())); } } -technique11 Prepass8 +technique11 Prepass6 { pass p0 { @@ -2099,15 +1835,7 @@ technique11 PrepassB1 SetPixelShader(CompileShader(ps_5_0,PS_DepthGrade())); } } -technique11 PrepassB2 -{ - pass p0 - { - SetVertexShader(CompileShader(vs_5_0,VS_Quad())); - SetPixelShader(CompileShader(ps_5_0,PS_SSAOPre())); - } -} -technique11 PrepassB3 +technique11 PrepassB2 { pass p0 { @@ -2115,15 +1843,7 @@ technique11 PrepassB3 SetPixelShader(CompileShader(ps_5_0,PS_Distortion())); } } -technique11 PrepassB4 -{ - pass p0 - { - SetVertexShader(CompileShader(vs_5_0,VS_Quad())); - SetPixelShader(CompileShader(ps_5_0,PS_SSAOBlur())); - } -} -technique11 PrepassB5 +technique11 PrepassB3 { pass p0 { @@ -2131,7 +1851,7 @@ technique11 PrepassB5 SetPixelShader(CompileShader(ps_5_0,PS_DoFPrepass())); } } -technique11 PrepassB6 +technique11 PrepassB4 { pass p0 { @@ -2139,7 +1859,7 @@ technique11 PrepassB6 SetPixelShader(CompileShader(ps_5_0,PS_DoFBorkeh())); } } -technique11 PrepassB7 +technique11 PrepassB5 { pass p0 { @@ -2147,7 +1867,7 @@ technique11 PrepassB7 SetPixelShader(CompileShader(ps_5_0,PS_DoFPostBlur())); } } -technique11 PrepassB8 +technique11 PrepassB6 { pass p0 { diff --git a/enbseries/enbeffect.fx b/enbseries/enbeffect.fx index 82a6fec..84ab1f4 100644 --- a/enbseries/enbeffect.fx +++ b/enbseries/enbeffect.fx @@ -1022,7 +1022,7 @@ float2 ScreenFrost( float2 coord ) /*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 ofs; + return coord+ofs; } /* Old MariENB 0.x screen dirt filter, updated */ @@ -1049,6 +1049,7 @@ float4 PS_Draw( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target if ( frostenable ) { float2 ofs = ScreenFrost(coord); + ofs -= coord; float2 ofr, ofg, ofb; ofr = ofs*(1.0-distcha*0.01); ofg = ofs; @@ -1075,7 +1076,7 @@ float4 PS_Draw( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target 1.0)*frostblend; float todpow = max(0.0,todx_ind(frostfactor)); dist *= todpow; - /* Weathers not implemented in FO4 ENB as of 0.316 */ + /* Weathers not implemented in FO4 ENB as of 0.291 */ /*dist *= max(0.0,coldfactor-warmfactor);*/ res.rgb *= 1.0+bmp*dist; } diff --git a/enbseries/enbeffect.fx.ini b/enbseries/enbeffect.fx.ini index 14d4f25..8f032ad 100644 --- a/enbseries/enbeffect.fx.ini +++ b/enbseries/enbeffect.fx.ini @@ -34,65 +34,65 @@ Grain Contrast=8.45 Apply Grain Before Tone Mapping=true Enable Adaptation=true Tonemapping Method=3 -Tonemap Exposure Night=1.23 -Tonemap Exposure Day=1.320001 -Tonemap Exposure Interior=1.229999 +Tonemap Exposure Night=1.07 +Tonemap Exposure Day=1.140001 +Tonemap Exposure Interior=1.209999 Tonemap Blend Night=1.0 Tonemap Blend Day=1.0 Tonemap Blend Interior=1.0 -Uncharted2 Shoulder Strength Night=0.21 -Uncharted2 Shoulder Strength Day=0.37 -Uncharted2 Shoulder Strength Interior=0.24 -Uncharted2 Linear Strength Night=1.26 -Uncharted2 Linear Strength Day=1.6 -Uncharted2 Linear Strength Interior=1.41 -Uncharted2 Linear Angle Night=0.72 -Uncharted2 Linear Angle Day=0.68 -Uncharted2 Linear Angle Interior=0.6 -Uncharted2 Toe Strength Night=1.19 -Uncharted2 Toe Strength Day=1.14 -Uncharted2 Toe Strength Interior=1.15 -Uncharted2 Toe Numerator Night=0.21 -Uncharted2 Toe Numerator Day=0.28 -Uncharted2 Toe Numerator Interior=0.23 -Uncharted2 Toe Denominator Night=1.35 -Uncharted2 Toe Denominator Day=1.32 -Uncharted2 Toe Denominator Interior=1.33 -Uncharted2 Linear White Night=20.299999 -Uncharted2 Linear White Day=24.139999 -Uncharted2 Linear White Interior=22.130001 +Uncharted2 Shoulder Strength Night=0.15 +Uncharted2 Shoulder Strength Day=0.2 +Uncharted2 Shoulder Strength Interior=0.16 +Uncharted2 Linear Strength Night=1.54 +Uncharted2 Linear Strength Day=1.59 +Uncharted2 Linear Strength Interior=1.55 +Uncharted2 Linear Angle Night=0.74 +Uncharted2 Linear Angle Day=0.77 +Uncharted2 Linear Angle Interior=0.67 +Uncharted2 Toe Strength Night=1.44 +Uncharted2 Toe Strength Day=1.25 +Uncharted2 Toe Strength Interior=1.19 +Uncharted2 Toe Numerator Night=4.21 +Uncharted2 Toe Numerator Day=4.28 +Uncharted2 Toe Numerator Interior=4.23 +Uncharted2 Toe Denominator Night=1.31 +Uncharted2 Toe Denominator Day=1.5 +Uncharted2 Toe Denominator Interior=1.42 +Uncharted2 Linear White Night=18.450001 +Uncharted2 Linear White Day=14.14 +Uncharted2 Linear White Interior=12.13 Enable RGB Grading=true Grading Intensity Night=1.03, 0.98, 0.88 Grading Intensity Day=1.04, 1, 0.94 -Grading Intensity Interior=0.96, 0.93, 1.02 +Grading Intensity Interior=0.98, 0.95, 0.94 Grading Contrast Night=1.03, 0.99, 0.92 Grading Contrast Day=1, 0.98, 0.93 -Grading Contrast Interior=0.94, 0.97, 1.02 +Grading Contrast Interior=0.99, 1, 0.98 Enable Vibrance Grading=true Grading Color Night=-0.82, -0.39, -0.65 Grading Color Day=-0.43, -0.12, -0.7 Grading Color Interior=-0.61, -0.1, -0.43 -Grading Color Factor Night=-0.13 +Grading Color Factor Night=-0.05 Grading Color Factor Day=-0.1 -Grading Color Factor Interior=-0.09 +Grading Color Factor Interior=-0.07 Enable HSV Grading=true Grading Saturation Intensity Night=1.09 -Grading Saturation Intensity Day=1.13 -Grading Saturation Intensity Interior=1.12 -Grading Saturation Contrast Night=1.34 -Grading Saturation Contrast Day=1.28 -Grading Saturation Contrast Interior=1.13 +Grading Saturation Intensity Day=1.14 +Grading Saturation Intensity Interior=1.09 +Grading Saturation Contrast Night=1.11 +Grading Saturation Contrast Day=1.07 +Grading Saturation Contrast Interior=1.17 Grading Value Intensity Night=0.85 -Grading Value Intensity Day=0.92 -Grading Value Intensity Interior=0.97 -Grading Value Contrast Night=1.21 -Grading Value Contrast Day=1.12 -Grading Value Contrast Interior=1.16 +Grading Value Intensity Day=0.87 +Grading Value Intensity Interior=0.87 +Grading Value Contrast Night=1.02 +Grading Value Contrast Day=1.07 +Grading Value Contrast Interior=1.08 Colorize After HSV=true Enable LUT Grading=true -LUT Blend Night=0.25 -LUT Blend Day=0.32 -LUT Blend Interior=0.39 +LUT Blend Night=0.58 +LUT Blend Day=0.7 +LUT Blend Interior=0.64 Enable Technicolor=true Technicolor Blend=0.5 Enable Vanilla Imagespace=true @@ -106,7 +106,7 @@ Vanilla Contrast Blend=0.84 Display Bloom=false Display Adaptation=false Enable Dirt=false -Dirt Coord Factor=0.13 +Dirt Coord Factor=0.03 Dirt Luminance Factor=0.0 -Dirt Coord Zoom=3.0 +Dirt Coord Zoom=1.63 Dirt Luminance Zoom=1.0 diff --git a/enbseries/enbeffectpostpass.fx b/enbseries/enbeffectpostpass.fx index 63c6276..9561e1d 100644 --- a/enbseries/enbeffectpostpass.fx +++ b/enbseries/enbeffectpostpass.fx @@ -6,35 +6,6 @@ */ #include "menbglobaldefs.fx" -/* Paint filter */ -string str_paint = "Painting Filter"; -bool oilenable -< - string UIName = "Enable Oil Filter"; - string UIWidget = "Checkbox"; -> = {false}; -/* legacy FXAA filter */ -string str_fxaa = "FXAA"; -bool fxaaenable -< - string UIName = "Enable FXAA"; - string UIWidget = "Checkbox"; -> = {false}; -float fxaaspanmax -< - string UIName = "FXAA Span Max"; - string UIWidget = "Checkbox"; -> = {4.0}; -float fxaareducemul -< - string UIName = "FXAA Reduce Mul"; - string UIWidget = "Checkbox"; -> = {16.0}; -float fxaareducemin -< - string UIName = "FXAA Reduce Min"; - string UIWidget = "Checkbox"; -> = {128.0}; /* new SMAA filter */ string str_smaa = "SMAA"; bool smaaenable @@ -118,69 +89,6 @@ float lsharpblend string UIWidget = "Spinner"; float UIMin = 0.0; > = {1.2}; -/* lens curve with chromatic aberration */ -string str_curve = "Lens Curvature"; -bool curveenable -< - string UIName = "Enable Curvature"; - string UIWidget = "Checkbox"; -> = {false}; -float chromaab -< - string UIName = "Curve Chromatic Aberration"; - string UIWidget = "Spinner"; -> = {0.0}; -float lenszoom -< - string UIName = "Curve Zooming"; - string UIWidget = "Spinner"; -> = {50.0}; -float lensdist -< - string UIName = "Curve Distortion"; - string UIWidget = "Spinner"; -> = {0.0}; -/* BlurSharpShift, some people are obsessed with this nonsense */ -string str_bss = "BlurSharpShift"; -bool bssblurenable -< - string UIName = "Enable Blur"; - string UIWidget = "Checkbox"; -> = {false}; -float bssblurradius -< - string UIName = "Blur Sampling Range"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {0.25}; -bool bsssharpenable -< - string UIName = "Enable Sharp"; - string UIWidget = "Checkbox"; -> = {false}; -float bsssharpradius -< - string UIName = "Sharp Sampling Range"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1.0}; -float bsssharpamount -< - string UIName = "Sharpening Amount"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {6.0}; -bool bssshiftenable -< - string UIName = "Enable Shift"; - string UIWidget = "Checkbox"; -> = {false}; -float bssshiftradius -< - string UIName = "Shift Sampling Range"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {0.75}; /* very cinematic black bars */ string str_box = "Black Bars"; bool boxenable @@ -581,101 +489,6 @@ float4 PS_ChromaKey( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target return res; } -/* that's right, CRT curvature */ -float4 PS_Curvature( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target -{ - float2 coord = IN.txcoord.xy; - float4 res = TextureColor.Sample(Sampler,coord); - if ( !curveenable ) return res; - float3 eta = float3(1+chromaab*0.009,1+chromaab*0.006,1+chromaab - *0.003); - float2 center = float2(coord.x-0.5,coord.y-0.5); - float zfact = 100.0/lenszoom; - float r2 = center.x*center.x+center.y*center.y; - float f = 1+r2*lensdist*0.01; - float x = f*zfact*center.x+0.5; - float y = f*zfact*center.y+0.5; - float2 rcoord = (f*eta.r)*zfact*(center.xy*0.5)+0.5; - float2 gcoord = (f*eta.g)*zfact*(center.xy*0.5)+0.5; - float2 bcoord = (f*eta.b)*zfact*(center.xy*0.5)+0.5; - int i,j; - float3 idist = float3(TextureColor.Sample(SamplerB,rcoord).r, - TextureColor.Sample(SamplerB,gcoord).g, - TextureColor.Sample(SamplerB,bcoord).b); - res.rgb = idist.rgb; - return res; -} - -/* Why am I doing this */ -float4 PS_Blur( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target -{ - float2 coord = IN.txcoord.xy; - float4 res = TextureColor.Sample(Sampler,coord); - if ( !bssblurenable ) return res; - float2 ofs[16] = - { - float2(1.0,1.0), float2(-1.0,-1.0), - float2(-1.0,1.0), float2(1.0,-1.0), - - float2(1.0,0.0), float2(-1.0,0.0), - float2(0.0,1.0), float2(0.0,-1.0), - - float2(1.41,0.0), float2(-1.41,0.0), - float2(0.0,1.41), float2(0.0,-1.41), - - float2(1.41,1.41), float2(-1.41,-1.41), - float2(-1.41,1.41), float2(1.41,-1.41) - }; - float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w); - float2 bof = (1.0/bresl)*bssblurradius; - int i; - [unroll] for ( i=0; i<16; i++ ) - res += TextureColor.Sample(Sampler,coord+ofs[i]*bof); - res /= 17.0; - res.a = 1.0; - return res; -} -float4 PS_Sharp( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target -{ - float2 coord = IN.txcoord.xy; - float4 res = TextureColor.Sample(Sampler,coord); - if ( !bsssharpenable ) return res; - float2 ofs[8] = - { - float2(1.0,1.0), float2(-1.0,-1.0), - float2(-1.0,1.0), float2(1.0,-1.0), - - float2(1.41,1.41), float2(-1.41,-1.41), - float2(-1.41,1.41), float2(1.41,-1.41) - }; - float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w); - float2 bof = (1.0/bresl)*bsssharpradius; - float4 tcol = res; - int i; - [unroll] for ( i=0; i<8; i++ ) - tcol += TextureColor.Sample(Sampler,coord+ofs[i]*bof); - tcol /= 9.0; - float4 orig = res; - res = orig*(1.0+dot(orig.rgb-tcol.rgb,0.333333)*bsssharpamount); - float rg = clamp(pow(orig.b,3.0),0.0,1.0); - res = lerp(res,orig,rg); - res.a = 1.0; - return res; -} -float4 PS_Shift( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target -{ - float2 coord = IN.txcoord.xy; - float4 res = TextureColor.Sample(Sampler,coord); - if ( !bssshiftenable ) return res; - float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w); - float2 bof = (1.0/bresl)*bssshiftradius; - res.g = TextureColor.Sample(Sampler,coord).g; - res.r = TextureColor.Sample(Sampler,coord+float2(0,-bof.y)).r; - res.b = TextureColor.Sample(Sampler,coord+float2(0,bof.y)).b; - res.a = 1.0; - return res; -} - /* That "luma sharpen" thingy, added just because someone might want it */ float4 PS_LumaSharp( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target { @@ -754,132 +567,6 @@ float4 PS_Vignette( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target return clamp(res,0.0,1.0); } -/* paint filter */ -float4 PS_Kuwahara( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target -{ - float2 coord = IN.txcoord.xy; - float4 res = TextureColor.Sample(Sampler,coord); - if ( !oilenable ) return res; - float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w); - float2 bof = 1.0/bresl; - float n = 16.0; - float3 m[4] = - { - float3(0,0,0),float3(0,0,0),float3(0,0,0),float3(0,0,0) - }, s[4] = - { - float3(0,0,0),float3(0,0,0),float3(0,0,0),float3(0,0,0) - }, c; - int i, j; - [loop] for ( i=-3; i<=0; i++ ) [loop] for ( j=-3; j<=0; j++ ) - { - c = TextureColor.Sample(Sampler,coord+float2(i,j)*bof).rgb; - m[0] += c; - s[0] += c*c; - } - [loop] for ( i=-3; i<=0; i++ ) [loop] for ( j=0; j<=3; j++ ) - { - c = TextureColor.Sample(Sampler,coord+float2(i,j)*bof).rgb; - m[1] += c; - s[1] += c*c; - } - [loop] for ( i=0; i<=3; i++ ) [loop] for ( j=-3; j<=0; j++ ) - { - c = TextureColor.Sample(Sampler,coord+float2(i,j)*bof).rgb; - m[2] += c; - s[2] += c*c; - } - [loop] for ( i=0; i<=3; i++ ) [loop] for ( j=0; j<=3; j++ ) - { - c = TextureColor.Sample(Sampler,coord+float2(i,j)*bof).rgb; - m[3] += c; - s[3] += c*c; - } - float min_sigma2 = 1e+2, sigma2; - [unroll] for ( i=0; i<4; i++ ) - { - m[i] /= n; - s[i] = abs(s[i]/n-m[i]*m[i]); - sigma2 = s[i].r+s[i].g+s[i].b; - if ( sigma2 >= min_sigma2 ) continue; - min_sigma2 = sigma2; - res.rgb = m[i]; - } - return res; -} -/* remove speckles from kuwahara filter */ -float4 PS_Median( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target -{ - float2 coord = IN.txcoord.xy; - float4 res = TextureColor.Sample(Sampler,coord); - if ( !oilenable ) return res; - float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w); - float2 bof = 1.0/bresl; - float3 m1, m2, m3; - float3 a, b, c; - a = TextureColor.Sample(Sampler,coord+float2(-1,-1)*bof).rgb; - b = TextureColor.Sample(Sampler,coord+float2( 0,-1)*bof).rgb; - c = TextureColor.Sample(Sampler,coord+float2( 1,-1)*bof).rgb; - m1 = (luminance(a) lumaMax) ) res.rgb = rgbA; - else res.rgb = rgbB; - res.a = 1.0; - return res; -} - /* Colour matrix */ float3 ColorMatrix( float3 res ) { @@ -1116,23 +803,7 @@ technique11 ExtraFilters SetPixelShader(CompileShader(ps_5_0,PS_Append())); } } -technique11 ExtraFilters1 -{ - pass p0 - { - SetVertexShader(CompileShader(vs_5_0,VS_PostProcess())); - SetPixelShader(CompileShader(ps_5_0,PS_Kuwahara())); - } -} -technique11 ExtraFilters2 -{ - pass p0 - { - SetVertexShader(CompileShader(vs_5_0,VS_PostProcess())); - SetPixelShader(CompileShader(ps_5_0,PS_Median())); - } -} -technique11 ExtraFilters3 +technique11 ExtraFilters1 { pass p0 { @@ -1142,7 +813,7 @@ technique11 ExtraFilters3 SetBlendState(NoBlending,float4(0.0,0.0,0.0,0.0),0xFFFFFFFF); } } -technique11 ExtraFilters4 +technique11 ExtraFilters2 { pass p0 { @@ -1152,7 +823,7 @@ technique11 ExtraFilters4 SetBlendState(NoBlending, float4(0.0,0.0,0.0,0.0),0xFFFFFFFF); } } -technique11 ExtraFilters5 +technique11 ExtraFilters3 { pass p0 { @@ -1160,7 +831,7 @@ technique11 ExtraFilters5 SetPixelShader(CompileShader(ps_5_0,PS_ToSRGB())); } } -technique11 ExtraFilters6 +technique11 ExtraFilters4 { pass p0 { @@ -1168,15 +839,7 @@ technique11 ExtraFilters6 SetPixelShader(CompileShader(ps_5_0,SMAANeighborhoodBlendingWrapPS())); } } -technique11 ExtraFilters7 -{ - pass p0 - { - SetVertexShader(CompileShader(vs_5_0,VS_PostProcess())); - SetPixelShader(CompileShader(ps_5_0,PS_FXAA())); - } -} -technique11 ExtraFilters8 +technique11 ExtraFilters5 { pass p0 { @@ -1184,31 +847,7 @@ technique11 ExtraFilters8 SetPixelShader(CompileShader(ps_5_0,PS_LumaSharp())); } } -technique11 ExtraFilters9 -{ - pass p0 - { - SetVertexShader(CompileShader(vs_5_0,VS_PostProcess())); - SetPixelShader(CompileShader(ps_5_0,PS_Blur())); - } -} -technique11 ExtraFilters10 -{ - pass p0 - { - SetVertexShader(CompileShader(vs_5_0,VS_PostProcess())); - SetPixelShader(CompileShader(ps_5_0,PS_Sharp())); - } -} -technique11 ExtraFilters11 -{ - pass p0 - { - SetVertexShader(CompileShader(vs_5_0,VS_PostProcess())); - SetPixelShader(CompileShader(ps_5_0,PS_Shift())); - } -} -technique11 ExtraFilters12 +technique11 ExtraFilters6 { pass p0 { @@ -1216,7 +855,7 @@ technique11 ExtraFilters12 SetPixelShader(CompileShader(ps_5_0,PS_ChromaKey())); } } -technique11 ExtraFilters13 +technique11 ExtraFilters7 { pass p0 { @@ -1224,15 +863,7 @@ technique11 ExtraFilters13 SetPixelShader(CompileShader(ps_5_0,PS_Vignette())); } } -technique11 ExtraFilters14 -{ - pass p0 - { - SetVertexShader(CompileShader(vs_5_0,VS_PostProcess())); - SetPixelShader(CompileShader(ps_5_0,PS_Curvature())); - } -} -technique11 ExtraFilters15 +technique11 ExtraFilters8 { pass p0 { @@ -1240,3 +871,5 @@ technique11 ExtraFilters15 SetPixelShader(CompileShader(ps_5_0,PS_Cinematic())); } } + + diff --git a/enbseries/menblut_day.dds b/enbseries/menblut_day.dds index 3f5a4d6..715c2c1 100644 Binary files a/enbseries/menblut_day.dds and b/enbseries/menblut_day.dds differ diff --git a/enbseries/menblut_interior.dds b/enbseries/menblut_interior.dds index 59c5cda..92b8ab0 100644 Binary files a/enbseries/menblut_interior.dds and b/enbseries/menblut_interior.dds differ diff --git a/enbseries/menblut_night.dds b/enbseries/menblut_night.dds index 5604804..19104b4 100644 Binary files a/enbseries/menblut_night.dds and b/enbseries/menblut_night.dds differ