From 0ac5ca02ac6a09bbacaa416cea0b9915f188f535 Mon Sep 17 00:00:00 2001 From: Marisa Kirisame Date: Sun, 7 Apr 2019 17:47:39 +0200 Subject: [PATCH] MariENB FO4 3.0.5a --- enbseries.ini | 46 ++++++------ enbseries/enbadaptation.fx | 117 ++++++++++++++----------------- enbseries/enbbloom.fx | 23 +++++- enbseries/enbbloom.fx.ini | 54 +++++++------- enbseries/enbdepthoffield.fx.ini | 2 +- enbseries/enbeffect.fx | 9 ++- enbseries/enbeffect.fx.ini | 1 + 7 files changed, 132 insertions(+), 120 deletions(-) diff --git a/enbseries.ini b/enbseries.ini index 2bb22df..d8a0fd7 100644 --- a/enbseries.ini +++ b/enbseries.ini @@ -29,10 +29,10 @@ DuskDuration=2.0 NightTime=1.0 [ADAPTATION] -AdaptationSensitivity=0.65 -AdaptationTime=3.0 -ForceMinMaxValues=true -AdaptationMin=0.05 +AdaptationSensitivity=0.35 +AdaptationTime=2.2 +ForceMinMaxValues=false +AdaptationMin=0.0 AdaptationMax=1.0 [DEPTHOFFIELD] @@ -69,7 +69,7 @@ GradientIntensitySunrise=0.92 GradientIntensityDay=1.37 GradientIntensitySunset=0.870001 GradientIntensityDusk=0.750001 -GradientIntensityNight=0.94 +GradientIntensityNight=0.970001 GradientIntensityInteriorDay=1.32 GradientIntensityInteriorNight=0.79 GradientDesaturationDawn=0.0 @@ -86,7 +86,7 @@ GradientTopIntensitySunrise=0.82 GradientTopIntensityDay=1.430001 GradientTopIntensitySunset=0.86 GradientTopIntensityDusk=0.75 -GradientTopIntensityNight=0.54 +GradientTopIntensityNight=0.63 GradientTopIntensityInteriorDay=1.39 GradientTopIntensityInteriorNight=0.52 GradientTopCurveDawn=0.87 @@ -94,7 +94,7 @@ GradientTopCurveSunrise=0.82 GradientTopCurveDay=0.54 GradientTopCurveSunset=0.81 GradientTopCurveDusk=0.89 -GradientTopCurveNight=0.68 +GradientTopCurveNight=0.74 GradientTopCurveInteriorDay=0.53 GradientTopCurveInteriorNight=0.67 GradientTopColorFilterDawn=0.953, 0.208, 0.753 @@ -102,16 +102,16 @@ GradientTopColorFilterSunrise=0.918, 0.349, 0.188 GradientTopColorFilterDay=0.882, 0.502, 0.263 GradientTopColorFilterSunset=0.91, 0.286, 0.188 GradientTopColorFilterDusk=0.855, 0.165, 0.463 -GradientTopColorFilterNight=0.447, 0.231, 0.773 +GradientTopColorFilterNight=0.486, 0.443, 0.561 GradientTopColorFilterInteriorDay=0.984, 0.537, 0.216 -GradientTopColorFilterInteriorNight=0.616, 0.251, 0.933 +GradientTopColorFilterInteriorNight=0.596, 0.506, 0.678 GradientMiddleIntensityDawn=0.7 GradientMiddleIntensitySunrise=1.02 GradientMiddleIntensityDay=1.25 GradientMiddleIntensitySunset=1.02 GradientMiddleIntensityDusk=0.77 -GradientMiddleIntensityNight=0.7 +GradientMiddleIntensityNight=0.82 GradientMiddleIntensityInteriorDay=1.27 GradientMiddleIntensityInteriorNight=0.64 GradientMiddleCurveDawn=0.94 @@ -119,7 +119,7 @@ GradientMiddleCurveSunrise=0.81 GradientMiddleCurveDay=0.69 GradientMiddleCurveSunset=0.88 GradientMiddleCurveDusk=0.9 -GradientMiddleCurveNight=0.63 +GradientMiddleCurveNight=0.77 GradientMiddleCurveInteriorDay=0.72 GradientMiddleCurveInteriorNight=0.64 GradientMiddleColorFilterDawn=0.824, 0.533, 0.8 @@ -127,24 +127,24 @@ GradientMiddleColorFilterSunrise=0.898, 0.392, 0.239 GradientMiddleColorFilterDay=0.816, 0.529, 0.4 GradientMiddleColorFilterSunset=0.882, 0.318, 0.129 GradientMiddleColorFilterDusk=0.827, 0.302, 0.529 -GradientMiddleColorFilterNight=0.616, 0.424, 0.855 +GradientMiddleColorFilterNight=0.62, 0.506, 0.773 GradientMiddleColorFilterInteriorDay=1, 0.435, 0.106 -GradientMiddleColorFilterInteriorNight=0.529, 0.306, 0.847 +GradientMiddleColorFilterInteriorNight=0.549, 0.431, 0.722 -GradientHorizonIntensityDawn=1.6 -GradientHorizonIntensitySunrise=1.63 +GradientHorizonIntensityDawn=1.42 +GradientHorizonIntensitySunrise=1.57 GradientHorizonIntensityDay=1.240001 GradientHorizonIntensitySunset=1.56 -GradientHorizonIntensityDusk=1.69 -GradientHorizonIntensityNight=1.36 +GradientHorizonIntensityDusk=1.26 +GradientHorizonIntensityNight=1.13 GradientHorizonIntensityInteriorDay=1.25 GradientHorizonIntensityInteriorNight=1.39 -GradientHorizonCurveDawn=0.44 +GradientHorizonCurveDawn=0.63 GradientHorizonCurveSunrise=0.4 GradientHorizonCurveDay=0.36 GradientHorizonCurveSunset=0.44 -GradientHorizonCurveDusk=0.46 -GradientHorizonCurveNight=0.57 +GradientHorizonCurveDusk=0.63 +GradientHorizonCurveNight=0.92 GradientHorizonCurveInteriorDay=0.33 GradientHorizonCurveInteriorNight=0.65 GradientHorizonColorFilterDawn=0.741, 0.576, 0.62 @@ -152,9 +152,9 @@ GradientHorizonColorFilterSunrise=0.925, 0.635, 0.416 GradientHorizonColorFilterDay=0.906, 0.467, 0.263 GradientHorizonColorFilterSunset=0.82, 0.471, 0.294 GradientHorizonColorFilterDusk=0.749, 0.396, 0.357 -GradientHorizonColorFilterNight=0.388, 0.294, 0.906 +GradientHorizonColorFilterNight=0.557, 0.608, 0.722 GradientHorizonColorFilterInteriorDay=0.961, 0.486, 0.247 -GradientHorizonColorFilterInteriorNight=0.357, 0.212, 0.949 +GradientHorizonColorFilterInteriorNight=0.522, 0.557, 0.639 CloudsIntensityDawn=0.15 CloudsIntensitySunrise=0.7 @@ -284,7 +284,7 @@ AmbientLightingIntensityInteriorNight=0.83 UseIndirectLighting=true ResolutionScale=0.5 SourceTexturesScale=0.5 -SamplingQuality=2 +SamplingQuality=1 SamplingRange=0.3 AOIntensity=1.65 AOIntensityInterior=1.35 diff --git a/enbseries/enbadaptation.fx b/enbseries/enbadaptation.fx index 391dad7..4b0beef 100644 --- a/enbseries/enbadaptation.fx +++ b/enbseries/enbadaptation.fx @@ -1,13 +1,23 @@ -/* This shader intentionally left unchanged */ +/* + enbadaptation.fx : MariENB3 eye adaptation shader. + (C)2016 Marisa Kirisame, UnSX Team. + Part of MariENB3, the personal ENB of Marisa for Fallout 4. + Released under the GNU GPLv3 (or later). +*/ +#include "menbglobaldefs.fx" + float4 AdaptationParameters; + Texture2D TextureCurrent; Texture2D TexturePrevious; + SamplerState Sampler0 { - Filter = MIN_MAG_MIP_POINT; + Filter = MIN_MAG_MIP_LINEAR; AddressU = Clamp; AddressV = Clamp; }; + struct VS_INPUT_POST { float3 pos : POSITION; @@ -18,86 +28,65 @@ struct VS_OUTPUT_POST float4 pos : SV_POSITION; float2 txcoord0 : TEXCOORD0; }; -VS_OUTPUT_POST VS_Quad(VS_INPUT_POST IN, - uniform float sizeX, uniform float sizeY) + +VS_OUTPUT_POST VS_Quad( VS_INPUT_POST IN ) { VS_OUTPUT_POST OUT; - float4 pos; - pos.xyz = IN.pos.xyz; - pos.w = 1.0; - OUT.pos = pos; - float2 offset; - offset.x = sizeX; - offset.y = sizeY; - OUT.txcoord0.xy = IN.txcoord.xy+offset.xy; + OUT.pos = float4(IN.pos.x,IN.pos.y,IN.pos.z,1.0); + OUT.txcoord0.xy = IN.txcoord.xy; return OUT; } -float4 PS_Downsample(VS_OUTPUT_POST IN, float4 v0 : SV_Position0) : SV_Target + +/* helper functions */ +/* photometric */ +#define luminance(x) dot(x,float3(0.2126,0.7152,0.0722)) +/* CCIR601 */ +//#define luminance(x) dot(x,float3(0.299,0.587,0.114)) + +float4 PS_Downsample( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target { - float4 res; - float2 pos, coord; - float4 curr = 0.0, currmax = 0.0; - const float scale = 1.0/16.0, step = 1.0/16.0, halfstep = 0.5/16.0; - pos.x = -0.5+halfstep; - for (int x=0; x<16; x++) - { - pos.y = -0.5+halfstep; - for (int y=0; y<16; y++) - { - coord = pos.xy*scale; - float4 tempcurr = TextureCurrent.Sample(Sampler0, - IN.txcoord0.xy+coord.xy); - currmax = max(currmax,tempcurr); - curr += tempcurr; - pos.y += step; - } - pos.x += step; - } - curr /= 256.0; - res = curr; - res = max(res.x,max(res.y,res.z)); + float2 coord = IN.txcoord0.xy; + float ssz = 1.0/16.0; + float4 res = float4(0,0,0,0); + int x, y; + [unroll] for ( y=-8; y<8; y++ ) [unroll] for ( x=-8; x<8; x++ ) + res += TextureCurrent.Sample(Sampler0,coord+float2(x,y)*ssz); + res /= 256.0; + res = luminance(res.rgb); res.w = 1.0; return res; } + float4 PS_Adaptation(VS_OUTPUT_POST IN, float4 v0 : SV_Position0) : SV_Target { - float4 res; - float prev = TexturePrevious.Sample(Sampler0,IN.txcoord0.xy).x; - float2 pos; - float curr = 0.0, currmax = 0.0; - const float step = 1.0/16.0, halfstep = 0.5/16.0; - pos.x = halfstep; - for (int x=0; x<16; x++) + float2 coord = IN.txcoord0.xy; + float prev = TexturePrevious.Sample(Sampler0,coord).x; + float ssz = 1.0/16.0; + float4 res = float4(0,0,0,0); + float smpmax = 0.0, smp; + int x, y; + [unroll] for ( y=-8; y<8; y++ ) [unroll] for ( x=-8; x<8; x++ ) { - pos.y = halfstep; - for (int y=0; y<16; y++) - { - float tempcurr = TextureCurrent.Sample(Sampler0, - IN.txcoord0.xy+pos.xy).x; - currmax = max(currmax,tempcurr); - curr += tempcurr; - pos.y += step; - } - pos.x += step; + smp = TextureCurrent.Sample(Sampler0,coord+float2(x,y)*ssz).x; + smpmax = max(smpmax,smp); + res += smp; } - curr /= 256.0; - curr = lerp(curr,currmax,AdaptationParameters.z); - res = lerp(prev,curr,AdaptationParameters.w); - res = max(res,0.001); - res = min(res,16384.0); - float valmax, valcut; - valmax = max(res.x,max(res.y,res.z)); - valcut = max(valmax,AdaptationParameters.x); - valcut = min(valcut,AdaptationParameters.y); - res *= valcut/(valmax+0.000000001); + res /= 256.0; + res = lerp(res,smpmax,AdaptationParameters.z); + res = lerp(prev,res,AdaptationParameters.w); + res = clamp(res,0.0,16384.0); + float vclip = clamp(res.x,AdaptationParameters.x, + AdaptationParameters.y); + res *= vclip/(res+0.000000001); res.w = 1.0; return res; } + technique11 Downsample { pass p0 { - SetVertexShader(CompileShader(vs_5_0,VS_Quad(0.0,0.0))); + SetVertexShader(CompileShader(vs_5_0,VS_Quad())); SetPixelShader(CompileShader(ps_5_0,PS_Downsample())); } } @@ -105,7 +94,7 @@ technique11 Draw { pass p0 { - SetVertexShader(CompileShader(vs_5_0,VS_Quad(0.0,0.0))); + SetVertexShader(CompileShader(vs_5_0,VS_Quad())); SetPixelShader(CompileShader(ps_5_0,PS_Adaptation())); } } diff --git a/enbseries/enbbloom.fx b/enbseries/enbbloom.fx index 1f77d4e..46a234e 100644 --- a/enbseries/enbbloom.fx +++ b/enbseries/enbbloom.fx @@ -624,7 +624,7 @@ float4 PS_PostPass( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target float4 PS_SPostPass( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target { float2 coord = IN.txcoord0.xy; - float4 res = bloommixs*RenderTarget32.Sample(Sampler2,coord); + float4 res = bloommixs*RenderTarget128.Sample(Sampler2,coord); res.rgb = clamp(res.rgb,0.0,32768.0); res.a = 1.0; if ( !dirtenable ) return res; @@ -704,6 +704,23 @@ technique11 BloomSimplePass6 } technique11 BloomSimplePass7 +{ + pass p0 + { + SetVertexShader(CompileShader(vs_5_0,VS_Quad())); + SetPixelShader(CompileShader(ps_5_0,PS_HorizontalBlur(RenderTarget128,128.0))); + } +} +technique11 BloomSimplePass8 +{ + pass p0 + { + SetVertexShader(CompileShader(vs_5_0,VS_Quad())); + SetPixelShader(CompileShader(ps_5_0,PS_VerticalBlur(TextureColor,128.0,3.0))); + } +} + +technique11 BloomSimplePass9 { pass p0 { @@ -711,7 +728,7 @@ technique11 BloomSimplePass7 SetPixelShader(CompileShader(ps_5_0,PS_HorizontalBlur(RenderTarget32,32.0))); } } -technique11 BloomSimplePass8 +technique11 BloomSimplePass10 { pass p0 { @@ -720,7 +737,7 @@ technique11 BloomSimplePass8 } } -technique11 BloomSimplePass9 +technique11 BloomSimplePass11 { pass p0 { diff --git a/enbseries/enbbloom.fx.ini b/enbseries/enbbloom.fx.ini index 1c6089c..771608d 100644 --- a/enbseries/enbbloom.fx.ini +++ b/enbseries/enbbloom.fx.ini @@ -1,42 +1,42 @@ [ENBBLOOM.FX] TECHNIQUE=1 -Bloom Intensity Night=1.08 -Bloom Intensity Day=1.13 -Bloom Intensity Interior=1.11 -Bloom Contrast Night=1.13 -Bloom Contrast Day=1.19 -Bloom Contrast Interior=1.15 -Bloom Saturation Night=0.89 +Bloom Intensity Night=0.51 +Bloom Intensity Day=0.43 +Bloom Intensity Interior=0.46 +Bloom Contrast Night=0.92 +Bloom Contrast Day=0.95 +Bloom Contrast Interior=0.93 +Bloom Saturation Night=0.87 Bloom Saturation Day=0.77 Bloom Saturation Interior=0.84 -Bloom Offset Night=-0.23 +Bloom Offset Night=-0.28 Bloom Offset Day=-0.44 Bloom Offset Interior=-0.38 -Bloom Intensity Cap Night=2.0 -Bloom Intensity Cap Day=2.0 -Bloom Intensity Cap Interior=2.0 +Bloom Intensity Cap Night=1.0 +Bloom Intensity Cap Day=1.0 +Bloom Intensity Cap Interior=1.0 Bloom Blur Radius=1.0 Blue Shift Night=0.294, 0.424, 0.859 Blue Shift Day=0.22, 0.537, 0.855 Blue Shift Interior=0.337, 0.525, 0.878 -Blue Shift Intensity Night=0.94 +Blue Shift Intensity Night=0.97 Blue Shift Intensity Day=0.72 Blue Shift Intensity Interior=0.88 Blue Shift Luminance Factor Per-pass=0.31 Blue Shift Color Factor Per-pass=0.79 Enable Anamorphic Bloom=true -Anamorphic Bloom Blend Night=0.94 -Anamorphic Bloom Blend Day=0.4 -Anamorphic Bloom Blend Interior=0.67 +Anamorphic Bloom Blend Night=0.68 +Anamorphic Bloom Blend Day=0.34 +Anamorphic Bloom Blend Interior=0.44 Anamorphic Bloom Blue Shift Night=0.553, 0.404, 0.851 Anamorphic Bloom Blue Shift Day=0.424, 0.384, 0.831 Anamorphic Bloom Blue Shift Interior=0.537, 0.475, 0.89 Anamorphic Bloom Blue Shift Intensity Night=2.31 Anamorphic Bloom Blue Shift Intensity Day=1.59 Anamorphic Bloom Blue Shift Intensity Interior=1.86 -Anamorphic Bloom Contrast Night=0.92 +Anamorphic Bloom Contrast Night=0.95 Anamorphic Bloom Contrast Day=1.0 -Anamorphic Bloom Contrast Interior=0.96 +Anamorphic Bloom Contrast Interior=0.97 Anamorphic Bloom Radius Multiplier=1.0 Bloom Intensity Interior Night=1.33 Bloom Intensity Interior Day=1.26 @@ -80,12 +80,12 @@ Anamorphic Bloom Blue Shift Interior Night=1.86 Anamorphic Bloom Blue Shift Interior Day=1.86 Anamorphic Bloom Contrast Interior Night=1.12 Anamorphic Bloom Contrast Interior Day=1.22 -Bloom Pass 1 Blend=0.84 -Bloom Pass 2 Blend=0.68 -Bloom Pass 3 Blend=0.59 -Bloom Pass 4 Blend=0.76 -Bloom Pass 5 Blend=1.07 -Bloom Pass 6 Blend=1.68 +Bloom Pass 1 Blend=0.13 +Bloom Pass 2 Blend=0.24 +Bloom Pass 3 Blend=0.36 +Bloom Pass 4 Blend=0.52 +Bloom Pass 5 Blend=0.69 +Bloom Pass 6 Blend=1.0 Enable Lens Dirt=true Dirt Pass 1 Blend=0.03 Dirt Pass 2 Blend=0.12 @@ -95,7 +95,7 @@ Dirt Pass 5 Blend=0.67 Dirt Pass 6 Blend=3.66 Dirt Contrast=0.92 Dirt Factor=2.07 -Bloom Blur Radius X=1.92 -Bloom Blur Radius Y=1.08 -Bloom Single Pass Blend=0.37 -Dirt Single Pass Blend=0.71 +Bloom Blur Radius X=1.0 +Bloom Blur Radius Y=1.0 +Bloom Single Pass Blend=0.29 +Dirt Single Pass Blend=1.13 diff --git a/enbseries/enbdepthoffield.fx.ini b/enbseries/enbdepthoffield.fx.ini index 57b96b6..95737ca 100644 --- a/enbseries/enbdepthoffield.fx.ini +++ b/enbseries/enbdepthoffield.fx.ini @@ -107,7 +107,7 @@ SSAO Fade Intensity Night=10.5 SSAO Fade Intensity Day=12.5 SSAO Fade Intensity Interior=11.5 SSAO Intensity=1.2 -SSAO Contrast=0.75 +SSAO Contrast=0.65 SSAO Blending=0.8 SSAO Blur=true SSAO Bilateral Factor=1500.0 diff --git a/enbseries/enbeffect.fx b/enbseries/enbeffect.fx index 69653a8..e1d9ee5 100644 --- a/enbseries/enbeffect.fx +++ b/enbseries/enbeffect.fx @@ -398,7 +398,11 @@ bool bloomdebug string UIName = "Display Bloom"; string UIWidget = "Checkbox"; > = {false}; - +bool adaptdebug +< + string UIName = "Display Adaptation"; + string UIWidget = "Checkbox"; +> = {false}; /* dithering threshold maps @@ -753,7 +757,7 @@ float4 PS_Draw( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target /* Insert MariENB filters here */ float2 coord = IN.txcoord0.xy; if ( bloomdebug ) res = TextureBloom.Sample(Sampler1,Params01[4].zw - *IN.txcoord0.xy)*ENBParams01.x; + *coord)*ENBParams01.x; if ( tmapenable ) res.rgb = Tonemap(res.rgb); if ( gradeenable1 ) res.rgb = GradingRGB(res.rgb); if ( colorizeafterhsv ) @@ -768,6 +772,7 @@ float4 PS_Draw( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target } if ( lutenable ) res.rgb = GradingLUT(res.rgb); if ( ne ) res.rgb = FilmGrain(res.rgb,coord); + if ( adaptdebug ) res.rgb = TextureAdaptation.Sample(Sampler1,coord).x; if ( dodither ) res.rgb = Dither(res.rgb,coord); res.rgb = max(0,res.rgb); res.a = 1.0; diff --git a/enbseries/enbeffect.fx.ini b/enbseries/enbeffect.fx.ini index cd27f42..1c53bc5 100644 --- a/enbseries/enbeffect.fx.ini +++ b/enbseries/enbeffect.fx.ini @@ -140,3 +140,4 @@ Grading Value Contrast Interior Night=1.42 Grading Value Contrast Interior Day=1.62 LUT Blend Interior Night=0.39 LUT Blend Interior Day=0.45 +Display Adaptation=false