From 6d0120e96a5b8d29fb882194e0bf795c7b1e04c7 Mon Sep 17 00:00:00 2001 From: Marisa Kirisame Date: Sun, 7 Apr 2019 17:41:10 +0200 Subject: [PATCH] MariENB Skyrim 2.1.3 --- enbseries.ini | 10 +- enbseries/effect.txt.ini | 26 +++ enbseries/enbbloom.fx.ini | 91 +++++++++-- enbseries/enbeffect.fx.ini | 153 +++++++++++++++++ enbseries/enbeffectprepass.fx.ini | 49 ++++-- enbseries/enblens.fx.ini | 23 +++ enbseries/enbsunsprite.fx.ini | 18 ++ enbseries/menbbloomfilters.fx | 16 +- enbseries/menbbloominternals.fx | 33 ++-- enbseries/menbbloomsettings.fx | 10 +- enbseries/menbeffectfilters.fx | 6 +- enbseries/menbextrafilters.fx | 4 +- enbseries/menbprepassfilters.fx | 263 ++++++++++++++++++++---------- enbseries/menbprepassinternals.fx | 2 - enbseries/menbprepasssettings.fx | 11 +- 15 files changed, 568 insertions(+), 147 deletions(-) diff --git a/enbseries.ini b/enbseries.ini index 1f340cd..c9d9d92 100644 --- a/enbseries.ini +++ b/enbseries.ini @@ -7,7 +7,7 @@ UseOriginalPostProcessing=false UseOriginalObjectsProcessing=false EnableBloom=true EnableAdaptation=true -EnableAmbientOcclusion=false +EnableAmbientOcclusion=true EnableDepthOfField=true EnableDetailedShadow=true EnableSunRays=true @@ -70,8 +70,8 @@ SamplingRange=0.15 FadeFogRangeDay=0.0 FadeFogRangeNight=3.0 FadeFogRangeInterior=0.0 -SizeScale=0.25 -SourceTexturesScale=0.25 +SizeScale=0.5 +SourceTexturesScale=0.5 FilterQuality=1 AOAmount=1.1 ILAmount=0.31 @@ -800,8 +800,8 @@ LightingInfluenceDusk=1.21 Quality=1 FilterQuality=1 FilterBluriness=1.0 -SizeScale=0.25 -SourceTexturesScale=0.25 +SizeScale=0.5 +SourceTexturesScale=0.5 Amount=0.35 Power=1.06 GlosinessMin=0.1 diff --git a/enbseries/effect.txt.ini b/enbseries/effect.txt.ini index d2972a9..ba6588b 100644 --- a/enbseries/effect.txt.ini +++ b/enbseries/effect.txt.ini @@ -38,3 +38,29 @@ Sharp Sampling Range=0.35 Sharpening Amount=2.0 Enable Shift=true Shift Sampling Range=0.6 +------Sharpening------------=false +Show Original=false +Show Edges=false +Use Edge Smoothing=true +Edge Smoothing Intensity=0.42 +Depth Sharpening: Far Depth=2500.0 +Sharpening HL Limiter Exterior=0.073 +Sharpening HL Limiter Interior=0.047 +Use Luma Sharpen=true +Blur Sigma Exterior=0.525 +Blur Sigma Interior=0.525 +Sharpening Strength Exterior=2.45 +Sharpening Strength Interior=2.375 +Sharpening Threshold Exterior=0.0 +Sharpening Threshold Interior=0.0 +------Letterbox-------------=false +Enable Letterbox=false +Letterbox Size (%)=4.0 +------Noise-----------------=true +Enable Grain=false +Grain Motion=0.004 +Grain Saturation=1.0 +Grain Intensity=0.004 +Grain Saturation Shadow=1.0 +Grain Intensity Shadow=0.001 +Shadow Noise Curve=0.095 diff --git a/enbseries/enbbloom.fx.ini b/enbseries/enbbloom.fx.ini index e56243a..4867ae5 100644 --- a/enbseries/enbbloom.fx.ini +++ b/enbseries/enbbloom.fx.ini @@ -1,9 +1,9 @@ [ENBBLOOM.FX] TECHNIQUE=0 -Bloom Intensity Night=0.6 -Bloom Intensity Day=0.66 -Bloom Intensity Interior Night=0.87 -Bloom Intensity Interior Day=0.71 +Bloom Intensity Night=0.61 +Bloom Intensity Day=0.52 +Bloom Intensity Interior Night=0.71 +Bloom Intensity Interior Day=0.62 Bloom Contrast Night=1.02 Bloom Contrast Day=1.0 Bloom Contrast Interior Night=0.96 @@ -12,10 +12,10 @@ Bloom Saturation Night=1.08 Bloom Saturation Day=1.03 Bloom Saturation Interior Night=1.19 Bloom Saturation Interior Day=1.19 -Bloom Offset Night=-0.07 -Bloom Offset Day=-0.08 -Bloom Offset Interior Night=-0.07 -Bloom Offset Interior Day=-0.03 +Bloom Offset Night=-0.26 +Bloom Offset Day=-0.34 +Bloom Offset Interior Night=-0.23 +Bloom Offset Interior Day=-0.27 Bloom Intensity Cap Night=50.0 Bloom Intensity Cap Day=50.0 Bloom Intensity Cap Interior Night=50.0 @@ -61,8 +61,8 @@ Anamorphic Bloom Blue Shift Intensity Day=1.45 Anamorphic Bloom Blue Shift Interior Night=1.98 Anamorphic Bloom Blue Shift Interior Day=1.84 Anamorphic Bloom Contrast Night=1.19 -Anamorphic Bloom Contrast Day=1.22 -Anamorphic Bloom Contrast Interior Night=1.0 +Anamorphic Bloom Contrast Day=1.27 +Anamorphic Bloom Contrast Interior Night=1.11 Anamorphic Bloom Contrast Interior Day=1.17 Anamorphic Bloom Radius Multiplier=4.0 Bloom Pass 1 Blend=0.97 @@ -85,3 +85,74 @@ Dirt Base Blend=0.0 Dirt Texture Preserve Aspect=true Dirt Contrast=1.05 Dirt Factor=0.95 +------Options & Settings----=false +Bloom Quality=0.0 +------Depth-----------------=false +Far Depth=50.0 +Exterior: Min Depth=0.67 +Interior: Min Depth=0.67 +------Tinting---------------=false +Tinting: Enable Bloom Tinting=true +Tinting: Tint Method=1.0 +Tinting: Day Tint RGB Color=0.6, 0.4, 1 +Tinting: Day Tint Level=0.59 +Tinting: (method 3) Day Tint Mix=0.47 +Tinting: Night Tint RGB Color=0.6, 0.4, 1 +Tinting: Night Tint Level=0.59 +Tinting: (method 3) Night Tint Mix=0.47 +Tinting: Interior Tint RGB Color=0.6, 0.4, 1 +Tinting: Interior Tint Level=0.44 +Tinting: (method 3) Interior Tint Mix=0.47 +------Bloom Day-------------=false +Day Bloom: Black Level=0.025 +Day Bloom: Gamma Curve=1.0 +Day Bloom: White Level=0.46 +Day Bloom: Black Cutoff=0.0 +Day Bloom: White Cutoff=0.135 +Day Bloom: Saturation=1.0 +Day Bloom: Sigma (Blur width)=24.0 +Day Bloom: X Intensity=1.0 +Day Bloom: X+Y Intensity=1.0 +------Bloom Night-----------=false +Night Bloom: Black Level=0.025 +Night Bloom: Gamma Curve=1.0 +Night Bloom: White Level=0.45 +Night Bloom: Black Cutoff=0.0 +Night Bloom: White Cutoff=0.165 +Night Bloom: Saturation=1.0 +Night Bloom: Sigma (Blur width)=24.0 +Night Bloom: X Intensity=1.0 +Night Bloom: X+Y Intensity=1.0 +------Bloom Interior--------=false +Interior Bloom: Black Level=0.025 +Interior Bloom: Gamma Curve=1.0 +Interior Bloom: White Level=0.455 +Interior Bloom: Black Cutoff=0.0 +Interior Bloom: White Cutoff=0.165 +Interior Bloom: Saturation=1.0 +Interior Bloom: Sigma (Blur width)=24.0 +Interior Bloom: X Intensity=1.0 +Interior Bloom: X+Y Intensity=1.0 +------Texture Selection-----=false +Enable Tex 1: 512x512=false +Enable Tex 2: 256x256=true +Enable Tex 3: 128x128=true +Enable Tex 4: 64x64=true +Enable Tex 5: 32x32=true +Enable Tex 6: 16x16=true +Enable Tex 7: 8x8=true +------Texture Sample Range--=false +Tex 1: Sample Range=0.5 +Tex 2: Sample Range=0.5 +Tex 3: Sample Range=0.5 +Tex 4: Sample Range=0.25 +Tex 5: Sample Range=0.25 +Tex 6: Sample Range=0.25 +Tex 7: Sample Range=0.25 +------Noise-----------------=false +Noise Motion=0.004 +Noise Saturation=1.0 +Noise Intensity Exterior=0.003 +Noise Intensity Interior=0.002 +Bloom Blur Radius X=1.0 +Bloom Blur Radius Y=1.0 diff --git a/enbseries/enbeffect.fx.ini b/enbseries/enbeffect.fx.ini index 3e19cba..efa7127 100644 --- a/enbseries/enbeffect.fx.ini +++ b/enbseries/enbeffect.fx.ini @@ -150,3 +150,156 @@ Display Bloom=false Enable Vanilla Imagespace=true Vanilla Vibrance Blend=1.0 Vanilla Contrast Blend=1.0 +Enable Spell Special Effects=true +Show Bloom Output=false +Bloom Filter Sample Range=0.5 +ENB Adaptation Curve=7.0 +Skyrim Adaptation Min=5.0 +Skyrim Adaptation Max=5.0 +Skyrim Bloom Amount Day=0.0 +Skyrim Bloom Amount Night=0.0 +Skyrim Bloom Amount Interior=0.0 +------Gray Level Controls---=false +Day: Gray Black In=0.006 +Day: Gray Gamma In=1.01 +Day: Gray White In=1.0 +Day: Gray Black Out=0.016 +Day: Gray Black Out Min=0.02 +Day: Gray White Out=1.0 +Night: Gray Black In=0.004 +Night: Gray Gamma In=1.01 +Night: Gray White In=1.0 +Night: Gray Black Out=0.035 +Night: Gray Black Out Min=0.014 +Night: Gray White Out=1.0 +Interior: Gray Black In=0.007 +Interior: Gray Gamma In=1.01 +Interior: Gray White In=1.0 +Interior: Gray Black Out=0.065 +Interior: Gray Black Out Min=0.012 +Interior: Gray White Out=1.0 +------RGB Level Controls----=false +Day: RGB Black In=0, 0, 0 +Day: Red Gamma In=1.025 +Day: Green Gamma In=1.06 +Day: Blue Gamma In=1.09 +Day: RGB White In=1, 1, 1 +Day: RGB Black Out=0, 0, 0 +Day: RGB White Out=1, 0.98, 1 +Night: RGB Black In=0, 0, 0 +Night: Red Gamma In=1.025 +Night: Green Gamma In=1.06 +Night: Blue Gamma In=1.09 +Night: RGB White In=1, 1, 1 +Night: RGB Black Out=0, 0, 0 +Night: RGB White Out=1, 0.98, 1 +Interior: RGB Black In=0, 0, 0 +Interior: Red Gamma In=1.025 +Interior: Green Gamma In=1.06 +Interior: Blue Gamma In=1.09 +Interior: RGB White In=1, 1, 1 +Interior: RGB Black Out=0, 0, 0 +Interior: RGB White Out=1, 0.98, 1 +------Tonemapping (Filmic)--=false +Tonemap Day: Shoulder Strength=0.59 +Tonemap Day: Linear Strength=0.815 +Tonemap Day: Linear Angle=0.35 +Tonemap Day: Toe Strength=0.705 +Tonemap Day: Toe Numerator=0.083 +Tonemap Day: Toe Denominator=0.365 +Tonemap Day: White Lower Limit=0.012 +Tonemap Day: White Upper Limit=0.365 +Tonemap Night: Shoulder Strength=0.59 +Tonemap Night: Linear Strength=0.815 +Tonemap Night: Linear Angle=0.35 +Tonemap Night: Toe Strength=0.965 +Tonemap Night: Toe Numerator=0.083 +Tonemap Night: Toe Denominator=0.365 +Tonemap Night: White Lower Limit=0.012 +Tonemap Night: White Upper Limit=0.365 +Tonemap Interior: Shoulder Strength=0.71 +Tonemap Interior: Linear Strength=0.815 +Tonemap Interior: Linear Angle=0.35 +Tonemap Interior: Toe Strength=0.72 +Tonemap Interior: Toe Numerator=0.083 +Tonemap Interior: Toe Denominator=0.365 +Tonemap Interior: White Lower Limit=0.012 +Tonemap Interior: White Upper Limit=0.365 +Adaptation Ext: Lower White Point=1.875 +Adaptation Ext: Upper White Point=3.15 +Adaptation Int: Lower White Point=1.875 +Adaptation Int: Upper White Point=3.2 +------Channel Mixer---------=false +Channel Mixer Red Day=1, 0, 0 +Channel Mixer Green Day=0, 1, 0 +Channel Mixer Blue Day=0, 0, 1 +Channel Mixer Red Night=1, 0, 0 +Channel Mixer Green Night=0, 1, 0 +Channel Mixer Blue Night=0, 0, 1 +Channel Mixer Red Interior=1, 0, 0 +Channel Mixer Green Interior=0, 1, 0 +Channel Mixer Blue Interior=0, 0, 1 +------Color Filter----------=false +Color Filter: Luma=0.212, 0.714, 0.0706 +Color Filter: Hue Middle=0.0 +Color Filter: Hue Range=0.15 +Color Filter: Saturation Limit=1.0 +Color Filter: Effect Strength=0.0 +------Highlights & Shadows--=false +Day: Highlights=0.334 +Day: Shadows=0.02 +Night: Highlights=0.334 +Night: Shadows=0.05 +Interior: Highlights=0.334 +Interior: Shadows=0.02 +------After Effects---------=false +AFX: Contrast Tweak Day=0.2 +AFX: Contrast Tweak Night=0.4 +AFX: Contrast Tweak Interior=0.3 +AFX: Brightness Tweak Day=0.1 +AFX: Brightness Tweak Night=0.0 +AFX: Brightness Tweak Interior=0.095 +AFX: Vibrance Tweak Day=1.1 +AFX: Vibrance Tweak Night=1.3 +AFX: Vibrance Tweak Interior=1.1 +AFX: Red Saturation Day=1.0 +AFX: Red Saturation Night=0.89 +AFX: Red Saturation Interior=0.89 +AFX: Green Saturation Day=0.9 +AFX: Green Saturation Night=0.88 +AFX: Green Saturation Interior=0.88 +AFX: Blue Saturation Day=1.0 +AFX: Blue Saturation Night=0.85 +AFX: Blue Saturation Interior=0.85 +------Ported SFX: Curves----=false +Day Curves 12: Start Point=0.036 +Day Curves 12: Control Point 1=0.165 +Day Curves 12: Control Point 2=1.0 +Day Curves 12: End Point=1.0 +Day Curves 12: Contrast Amount=0.765 +Night Curves 12: Start Point=0.013 +Night Curves 12: Control Point 1=0.13 +Night Curves 12: Control Point 2=1.0 +Night Curves 12: End Point=1.0 +Night Curves 12: Contrast Amount=0.765 +Interior Curves 12: Start Point=0.025 +Interior Curves 12: Control Point 1=0.145 +Interior Curves 12: Control Point 2=1.0 +Interior Curves 12: End Point=1.0 +Interior Curves 12: Contrast Amount=0.765 +------Skyrim IS Limits------=false +Skyrim IS: Max Saturation Ext=1.0 +Skyrim IS: Max Saturation Int=1.0 +Skyrim IS: Max Contrast Ext=1.365 +Skyrim IS: Max Contrast Int=1.395 +Skyrim IS: Max Brightness Ext=1.2 +Skyrim IS: Max Brightness Int=1.2 +Skyrim IS: Max Tint Amount Ext=0.8 +Skyrim IS: Max Tint Amount Int=0.8 +Skyrim IS: New Tint Strength Ext=0.8 +Skyrim IS: New Tint Strength Int=0.8 +Skyrim IS: New Tint Add Shadow Day=0.095 +Skyrim IS: New Tint Add Shadow Night=0.02 +Skyrim IS: New Tint Add Shadow Int=0.032 +Skyrim IS: New Tint Desaturate Ext=0.0 +Skyrim IS: New Tint Desaturate Int=0.0 diff --git a/enbseries/enbeffectprepass.fx.ini b/enbseries/enbeffectprepass.fx.ini index 3b06561..aa5bb64 100644 --- a/enbseries/enbeffectprepass.fx.ini +++ b/enbseries/enbeffectprepass.fx.ini @@ -1,5 +1,5 @@ [ENBEFFECTPREPASS.FX] -TECHNIQUE=0 +TECHNIQUE=2 Fixed Resolution Width=1920 Fixed Resolution Height=1080 Depth Cutoff=999998.0 @@ -48,10 +48,10 @@ DOF Intensity Night=475.899994 DOF Intensity Day=424.299988 DOF Intensity Interior Night=480.799988 DOF Intensity Interior Day=432.299988 -DOF Contrast Night=3.16 -DOF Contrast Day=3.58 -DOF Contrast Interior Night=2.78 -DOF Contrast Interior Day=3.14 +DOF Contrast Night=3.32 +DOF Contrast Day=3.7 +DOF Contrast Interior Night=3.02 +DOF Contrast Interior Day=3.43 DOF Shift Night=0.0 DOF Shift Day=0.0 DOF Shift Interior Night=0.0 @@ -95,10 +95,10 @@ DOF Bilateral Factor=5.0 DOF Blur Radius=1.0 DOF Relative to FOV=true Default FOV=75.0 -DOF Relative Factor Night=2.57 -DOF Relative Factor Day=2.79 -DOF Relative Factor Interior Night=2.54 -DOF Relative Factor Interior Day=2.61 +DOF Relative Factor Night=2.76 +DOF Relative Factor Day=2.9 +DOF Relative Factor Interior Night=2.65 +DOF Relative Factor Interior Day=2.73 Debug Depth=false Debug Focus=false Enable Depth Edge Detect=false @@ -132,7 +132,7 @@ Edgevision Fade Intensity Interior Day=600.0 Edgevision Contrast=0.25 Edgevision Intensity=8.0 Edgevision Radius=1.0 -Enable SSAO=true +Enable SSAO=false SSAO Radius=0.15 SSAO Noise=0 SSAO Fade Contrast Night=0.46 @@ -180,4 +180,31 @@ SSAO Blur Use Less Samples=true Bokeh Threshold=1.0 Bokeh Blur Threshold=0.5 Bokeh Size=8.0 -DOF Gather Blur Radius=10.0 +DOF Gather Blur Radius=12.0 +DES mode=0 +DES Level=0.0 +DES Blend Color=1, 0, 0 +DES Blend Factor=1.0 +MF mode=false +Display AF Cursor=false +AF posX=0.5 +AF posY=0.6 +AF Near Blur Curve=30.0 +AF Far Blur Curve=2.4 +MF Far Blur Plane(m)=10.0 +MF Focused Plane(m)=1.0 +Aperture Size(%)=0.35 +Aperture Deform=0.0 +Aperture Shape=5 +Aperture Ratio=1.19 +Aperture Angle(°)=0 +Tilt Shift Axis(°)=0 +Tilt Shift Angle(°)=0.0 +Quality=3 +Bokeh Highlight=10.0 +Bokeh Bias=0.0 +Bokeh Bias Curve=1.0 +Guassian Radius=1.0 +Noise Amount=0.0 +Noise Curve=1.0 +DOF Minimum Blur=0.01 diff --git a/enbseries/enblens.fx.ini b/enbseries/enblens.fx.ini index d1938c1..6fe2d14 100644 --- a/enbseries/enblens.fx.ini +++ b/enbseries/enblens.fx.ini @@ -1,2 +1,25 @@ [ENBLENS.FX] TECHNIQUE=0 +Lens Reflect Position X=0.0 +Lens Reflect Position Y=0.0 +Lens Reflect Size=1.0 +Lens Reflect Intensity=0.35 +Flare IntensityL-N=0.7 +Flare IntensityH-N=0.7 +Flare IntensityL-D=0.7 +Flare IntensityH-D=0.7 +Flare IntensityL-I=0.7 +Flare IntensityH-I=0.7 +Flare Lighting ThresholdL-N=0.2 +Flare Lighting ThresholdH-N=0.27 +Flare Lighting ThresholdL-D=0.45 +Flare Lighting ThresholdH-D=0.45 +Flare Lighting ThresholdL-I=0.48 +Flare Lighting ThresholdH-I=0.52 +Flare Curve1=16.0 +Flare Curve2=16.0 +Flare Tint1=0.129, 0.216, 1 +Flare Tint2=0.129, 0.216, 1 +Flare Angle 1=135.0 +Flare Angle 2=45.0 +blur radii=12.0 diff --git a/enbseries/enbsunsprite.fx.ini b/enbseries/enbsunsprite.fx.ini index cf7763b..23f7585 100644 --- a/enbseries/enbsunsprite.fx.ini +++ b/enbseries/enbsunsprite.fx.ini @@ -1,2 +1,20 @@ [ENBSUNSPRITE.FX] TECHNIQUE=0 +Glare Intensity=0.9 +Glare Scale=0.8 +Glare Tint=0.973, 0.894, 0.486 +Moire Vib Frequency(Hz)=1.0 +Moire Vib Scale=0.3 +Moire Offset=0.1 +Rotation Modifier=100.0 +Blink Axis(°)=1 +Blink Frequency(Hz)=0.3 +Blink Speed=0.3 +Blink Starting Angle(°)=90 +Blink Ending Angle(°)=10 +Blink Angle Width=10.0 +Blink Intensity=4.0 +Spike Intensity=6.0 +Spike Frequency=2.0 +Spike Speed=0.4 +Spike Width=1.0 diff --git a/enbseries/menbbloomfilters.fx b/enbseries/menbbloomfilters.fx index 41a1873..5b46279 100644 --- a/enbseries/menbbloomfilters.fx +++ b/enbseries/menbbloomfilters.fx @@ -63,7 +63,7 @@ float4 PS_BloomTexture1(VS_OUTPUT_POST In) : COLOR float2 pp; [unroll] for ( i=-7; i<=7; i++ ) { - pp = coord+float2(i,0)*TempParameters.z*bloomradius; + pp = coord+float2(i,0)*TempParameters.z*bloomradiusx; res += gauss8[abs(i)]*tex2D(SamplerBloom1,pp); sum += ((pp.x>=0)&&(pp.x<1))?gauss8[abs(i)]:0; } @@ -81,7 +81,7 @@ float4 PS_BloomTexture2(VS_OUTPUT_POST In) : COLOR float2 pp; [unroll] for ( i=-7; i<=7; i++ ) { - pp = coord+float2(0,i)*TempParameters.z*bloomradius; + pp = coord+float2(0,i)*TempParameters.z*bloomradiusy; res += gauss8[abs(i)]*tex2D(SamplerBloom1,pp); sum += ((pp.y>=0)&&(pp.y<1))?gauss8[abs(i)]:0; } @@ -124,11 +124,11 @@ float4 PS_AnamPass(VS_OUTPUT_POST In) : COLOR int i; float sum = 0; float2 pp; - [unroll] for ( i=-79; i<=79; i++ ) + [unroll] for ( i=-39; i<=39; i++ ) { - pp = coord+float2(i,0)*TempParameters.z*bloomradius*flen; - res += gauss80[abs(i)]*tex2D(SamplerBloom1,pp); - sum += ((pp.x>=0)&&(pp.x<1))?gauss80[abs(i)]:0; + pp = coord+float2(i,0)*TempParameters.z*bloomradiusx*flen; + res += gauss40[abs(i)]*tex2D(SamplerBloom1,pp); + sum += ((pp.x>=0)&&(pp.x<1))?gauss40[abs(i)]:0; } res *= 1.0/sum; /* blue shift */ @@ -143,7 +143,7 @@ float4 PS_AnamPass(VS_OUTPUT_POST In) : COLOR float fbl = tod_ind(fbl); float fpw = tod_ind(fpw); res.rgb *= lerp(1.0,flu,lm); - res.rgb = pow(res.rgb,fpw)*fbl; + res.rgb = pow(max(0,res.rgb),fpw)*fbl; res.a = 1.0; return res; } @@ -161,7 +161,6 @@ float4 PS_BloomPostPass(VS_OUTPUT_POST In) : COLOR res += bloommix7*tex2D(SamplerBloomC7,coord); // P5 res += bloommix8*tex2D(SamplerBloomC8,coord); // P6 res.rgb /= 6.0; - if ( alfenable ) res.rgb *= 0.5; res.rgb = clamp(res.rgb,0,32768); res.a = 1.0; return res; @@ -186,7 +185,6 @@ float4 PS_LensDirtPass(VS_OUTPUT_POST In) : COLOR mud += dirtmix7*tex2D(SamplerBloomC7,coord); // P5 mud += dirtmix8*tex2D(SamplerBloomC8,coord); // P6 mud.rgb /= 6.0; - if ( alfenable ) mud.rgb *= 0.5; mud.rgb = clamp(mud.rgb,0,32768); float mudmax = luminance(mud.rgb); float mudn = max(mudmax/(1.0+mudmax),0.0); diff --git a/enbseries/menbbloominternals.fx b/enbseries/menbbloominternals.fx index 7b9a2e1..ad97f4f 100644 --- a/enbseries/menbbloominternals.fx +++ b/enbseries/menbbloominternals.fx @@ -7,26 +7,33 @@ /* mathematical constants */ static const float pi = 3.1415926535898; /* gaussian blur matrices */ -/* radius: 3, std dev: 0.7014 */ -/*static const float gauss3[3] = {0.568780, 0.205851, 0.009759};*/ +/* radius: 4, std dev: 1.5 */ +/*static const float gauss4[4] = +{ + 0.270682, 0.216745, 0.111281, 0.036633 +};*/ /* radius: 8, std dev: 3 */ static const float gauss8[8] = { 0.134598, 0.127325, 0.107778, 0.081638, 0.055335, 0.033562, 0.018216, 0.008847 }; -/* radius: 36, std dev: 32 */ -/*static const float gauss36[36] = +/* radius: 40, std dev: 15 */ +static const float gauss40[40] = { - 0.017014, 0.017006, 0.016981, 0.016939, 0.016881, 0.016807, - 0.016717, 0.016612, 0.016490, 0.016354, 0.016203, 0.016038, - 0.015859, 0.015666, 0.015461, 0.015244, 0.015015, 0.014775, - 0.014524, 0.014264, 0.013995, 0.013718, 0.013433, 0.013141, - 0.012843, 0.012539, 0.012231, 0.011918, 0.011602, 0.011284, - 0.010964, 0.010642, 0.010319, 0.009997, 0.009675, 0.009355 -};*/ + 0.026823, 0.026763, 0.026585, 0.026291, + 0.025886, 0.025373, 0.024760, 0.024055, + 0.023267, 0.022404, 0.021478, 0.020499, + 0.019477, 0.018425, 0.017352, 0.016269, + 0.015186, 0.014112, 0.013056, 0.012025, + 0.011027, 0.010067, 0.009149, 0.008279, + 0.007458, 0.006688, 0.005972, 0.005308, + 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] = +/*static const float gauss80[80] = { 0.013406, 0.013398, 0.013376, 0.013339, 0.013287, 0.013221, 0.013140, 0.013046, 0.012938, 0.012816, 0.012681, 0.012534, @@ -42,7 +49,7 @@ static const float gauss80[80] = 0.001192, 0.001107, 0.001027, 0.000952, 0.000881, 0.000815, 0.000753, 0.000694, 0.000640, 0.000589, 0.000542, 0.000497, 0.000456, 0.000418 -}; +};*/ /* standard stuff */ float4 ScreenSize; float4 TempParameters; diff --git a/enbseries/menbbloomsettings.fx b/enbseries/menbbloomsettings.fx index 60a30c7..ddb3f51 100644 --- a/enbseries/menbbloomsettings.fx +++ b/enbseries/menbbloomsettings.fx @@ -120,9 +120,15 @@ float bloomcap_id > = {20.0}; string str_bloomper = "Bloom Per-pass"; /* bloom blur radius */ -float bloomradius +float bloomradiusx < - string UIName = "Bloom Blur Radius"; + string UIName = "Bloom Blur Radius X"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {1.0}; +float bloomradiusy +< + string UIName = "Bloom Blur Radius Y"; string UIWidget = "Spinner"; float UIMin = 0.0; > = {1.0}; diff --git a/enbseries/menbeffectfilters.fx b/enbseries/menbeffectfilters.fx index 2228432..f117021 100644 --- a/enbseries/menbeffectfilters.fx +++ b/enbseries/menbeffectfilters.fx @@ -127,7 +127,7 @@ float3 GradingRGB( float3 res ) float gradepow_b = tod_ind(gradepow_b); float3 grademul = float3(grademul_r,grademul_g,grademul_b); float3 gradepow = float3(gradepow_r,gradepow_g,gradepow_b); - return pow(res,gradepow)*grademul; + return pow(max(0,res),gradepow)*grademul; } float3 GradingColorize( float3 res ) { @@ -147,8 +147,8 @@ float3 GradingHSV( float3 res ) float gradevalmul = tod_ind(gradevalmul); float gradevalpow = tod_ind(gradevalpow); float3 hsv = rgb2hsv(res); - hsv.y = clamp(pow(hsv.y,gradesatpow)*gradesatmul,0.0,1.0); - hsv.z = pow(hsv.z,gradevalpow)*gradevalmul; + hsv.y = clamp(pow(max(0,hsv.y),gradesatpow)*gradesatmul,0.0,1.0); + hsv.z = pow(max(0,hsv.z),gradevalpow)*gradevalmul; return hsv2rgb(hsv); } /* game grading filters */ diff --git a/enbseries/menbextrafilters.fx b/enbseries/menbextrafilters.fx index 7362c67..09914fe 100644 --- a/enbseries/menbextrafilters.fx +++ b/enbseries/menbextrafilters.fx @@ -36,7 +36,7 @@ float4 ReducePrepass( in float4 col, in float2 coord ) { float3 hsv = rgb2hsv(col); hsv.y = clamp(hsv.y*bsaturation,0.0,1.0); - hsv.z = pow(hsv.z,bgamma); + hsv.z = pow(max(0,hsv.z),bgamma); col.rgb = hsv2rgb(saturate(hsv)); if ( dither == 0 ) col += bdbump+checkers[int(coord.x%2)+2*int(coord.y%2)]*bdmult; @@ -350,7 +350,7 @@ float4 PS_DotMatrix( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR moire patterns when using the default size of 2x2. */ float4 dots = tex2D(SamplerDots,coord*bresl)*dac; - float3 tcol = pow((dots.rgb+dots.a),dotpow)*dotmult; + float3 tcol = pow(max(0,dots.rgb+dots.a),dotpow)*dotmult; res.rgb = res.rgb*(1-dotblend)+tcol*dotblend; return res; } diff --git a/enbseries/menbprepassfilters.fx b/enbseries/menbprepassfilters.fx index 252f2e4..16fed7d 100644 --- a/enbseries/menbprepassfilters.fx +++ b/enbseries/menbprepassfilters.fx @@ -81,8 +81,8 @@ float3 EdgeView( float3 res, float2 coord ) mdy += GY[2][2]*depths[2][2]; mud = pow(mdx*mdx+mdy*mdy,0.5); float fade = 1.0-tex2D(SamplerDepth,coord).x; - mud *= saturate(pow(fade,edgevfadepow)*edgevfademult); - mud = saturate(pow(mud,edgevpow)*edgevmult); + mud *= saturate(pow(max(0,fade),edgevfadepow)*edgevfademult); + mud = saturate(pow(max(0,mud),edgevpow)*edgevmult); return mud; } /* @@ -141,7 +141,7 @@ float4 PS_EdgePlusSSAOPrepass( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR { sample = reflect(ssao_samples_lq[i],rnormal); sample *= sign(dot(normal,sample)); - so = ldepth-sample.z*bof; + 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); @@ -152,7 +152,7 @@ float4 PS_EdgePlusSSAOPrepass( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR { sample = reflect(ssao_samples_hq[i],rnormal); sample *= sign(dot(normal,sample)); - so = ldepth-sample.z*bof; + 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); @@ -161,8 +161,8 @@ float4 PS_EdgePlusSSAOPrepass( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR } float uocc = saturate(occ/(ssaoquarter?16.0:64.0)); float fade = 1.0-depth; - uocc *= saturate(pow(fade,ssaofadepow)*ssaofademult); - uocc = saturate(pow(uocc,ssaopow)*ssaomult); + uocc *= saturate(pow(max(0,fade),ssaofadepow)*ssaofademult); + uocc = saturate(pow(max(0,uocc),ssaopow)*ssaomult); res.a = saturate(1.0-(uocc*ssaoblend)); return res; } @@ -186,10 +186,11 @@ float2 DistantHeat( float2 coord ) float2 bresl; float dep, odep; dep = tex2D(SamplerDepth,coord).x; - float distfade = clamp(pow(dep,heatfadepow)*heatfademul+heatfadebump, - 0.0,1.0); + float distfade = clamp(pow(max(0,dep),heatfadepow)*heatfademul + +heatfadebump,0.0,1.0); if ( distfade <= 0.0 ) return coord; - float todpow = pow(ENightDayFactor*(1.0-EInteriorFactor),heattodpow); + float todpow = pow(max(0,ENightDayFactor*(1.0-EInteriorFactor)), + heattodpow); if ( !heatalways && (todpow <= 0.0) ) return coord; if ( (fixedx > 0) && (fixedy > 0) ) bresl = float2(fixedx,fixedy); else bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w); @@ -204,8 +205,8 @@ float2 DistantHeat( float2 coord ) #endif ; odep = tex2D(SamplerDepth,coord+ofs*heatstrength*distfade*0.01).x; - float odistfade = clamp(pow(odep,heatfadepow)*heatfademul+heatfadebump, - 0.0,1.0); + float odistfade = clamp(pow(max(0,odep),heatfadepow)*heatfademul + +heatfadebump,0.0,1.0); if ( odistfade <= 0.0 ) return coord; return coord+ofs*heatstrength*distfade*0.01; } @@ -221,18 +222,16 @@ float4 PS_Distortion( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR if ( heatenable ) ofs = DistantHeat(ofs); ofs -= coord; float4 res; - if ( (distcha != 0.0) && (length(ofs) != 0) ) - { - float2 ofr, ofg, ofb; - ofr = ofs*(1.0-distcha*0.01); - ofg = ofs; - ofb = ofs*(1.0+distcha*0.01); - res = float4(tex2D(SamplerColor,coord+ofr).r, - tex2D(SamplerColor,coord+ofg).g, - tex2D(SamplerColor,coord+ofb).b, - tex2D(SamplerColor,coord+ofs).a); - } - else res = tex2D(SamplerColor,coord+ofs); + if ( (distcha == 0.0) || (length(ofs) == 0) ) + return tex2D(SamplerColor,coord+ofs); + float2 ofr, ofg, ofb; + ofr = ofs*(1.0-distcha*0.01); + ofg = ofs; + ofb = ofs*(1.0+distcha*0.01); + res = float4(tex2D(SamplerColor,coord+ofr).r, + tex2D(SamplerColor,coord+ofg).g, + tex2D(SamplerColor,coord+ofb).b, + tex2D(SamplerColor,coord+ofs).a); return res; } /* @@ -400,9 +399,8 @@ float4 PS_DoFPrepass( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR This method skips blurring areas that are perfectly in focus. The performance gain is negligible in most cases, though. */ -#ifdef USE_BOKEH /* gather blur pass */ -float4 PS_DoFBlurH( VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR +float4 PS_DoFGather( VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR { float2 coord = IN.txcoord.xy; if ( dofdisable ) return tex2D(SamplerColor,coord); @@ -413,44 +411,27 @@ float4 PS_DoFBlurH( VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR if ( (fixedx > 0) && (fixedy > 0) ) bresl = float2(fixedx,fixedy); else bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w); float2 bof = 1.0/bresl; - float4 res = tex2D(SamplerColor,coord); - float4 ccol = res; - if ( dfc > 0.0 ) + if ( dfc <= dofminblur ) return tex2D(SamplerColor,coord); + float4 res = float4(0,0,0,0); + float dep = tex2D(SamplerDepth,coord).x; + float sd, ds, sw, tw = 0; + float2 bsz = bof*dofpradius*dfc; + float4 sc; + [unroll] for ( int i=0; i<32; i++ ) { - res *= 0; - float dep = tex2D(SamplerDepth,coord).x; - float sd, ds, sw, tw = 0; - float2 bsz = bof*dofpradius*dfc; - float4 sc; - [unroll] for ( int i=0; i<32; i++ ) - { - sc = tex2Dlod(SamplerColor,float4(coord.x - +poisson32[i].x*bsz.x,coord.y+poisson32[i].y - *bsz.y,0.0,dfc)); - ds = tex2D(SamplerDepth,coord+poisson32[i]*bsz).x; - sd = tex2D(SamplerColor,coord+poisson32[i]*bsz).a; - sw = (ds>dep)?1.0:sd; - tw += sw; - res += sc*sw; - } - res /= tw; + sc = tex2Dlod(SamplerColor,float4(coord.x + +poisson32[i].x*bsz.x,coord.y+poisson32[i].y + *bsz.y,0.0,dfc*4.0)); + ds = tex2D(SamplerDepth,coord+poisson32[i]*bsz).x; + sd = tex2D(SamplerColor,coord+poisson32[i]*bsz).a; + sw = (ds>dep)?1.0:sd; + tw += sw; + res += sc*sw; } - res.a = dfc; - return res; -} -/* nobody here, only one pass is really needed */ -float4 PS_DoFBlurV( VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR -{ - float2 coord = IN.txcoord.xy; - if ( dofdisable ) return tex2D(SamplerColor,coord); - float dfc = tex2D(SamplerColor,coord).a; - if ( dofdebug ) return tex2D(SamplerDepth,coord).x; - if ( dfcdebug ) return dfc; - float4 res = tex2D(SamplerColor,coord); + res /= tw; res.a = 1.0; return res; } -#else float4 PS_DoFBlurH( VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR { float2 coord = IN.txcoord.xy; @@ -461,12 +442,7 @@ float4 PS_DoFBlurH( VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR float bresl = (fixedx>0)?fixedx:ScreenSize.x; float bof = (1.0/bresl)*dofbradius; float4 res = float4(0,0,0,0); - if ( dfc <= 0.0 ) - { - res = tex2D(SamplerColor,coord); - res.a = dfc; - return res; - } + if ( dfc <= dofminblur ) return tex2D(SamplerColor,coord); int i; float isd, sd, ds, sw, tw = 0; isd = dfc; @@ -493,12 +469,7 @@ float4 PS_DoFBlurV( VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR float bresl = (fixedy>0)?fixedy:(ScreenSize.x*ScreenSize.w); float bof = (1.0/bresl)*dofbradius; float4 res = float4(0,0,0,0); - if ( dfc <= 0.0 ) - { - res = tex2D(SamplerColor,coord); - res.a = dfc; - return res; - } + if ( dfc <= dofminblur ) return tex2D(SamplerColor,coord); int i; float isd, sd, ds, sw, tw = 0; isd = dfc; @@ -515,7 +486,6 @@ float4 PS_DoFBlurV( VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR res.a = 1.0; return res; } -#endif /* Screen frost shader. Not very realistic either, but looks fine too. */ float2 ScreenFrost( float2 coord ) { @@ -543,25 +513,24 @@ float4 PS_FrostPass( VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR float2 bresl; if ( (fixedx > 0) && (fixedy > 0) ) bresl = float2(fixedx,fixedy); else bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w); - float2 ofs = coord; - if ( frostenable ) ofs = ScreenFrost(ofs); - ofs -= coord; float4 res; - 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(tex2D(SamplerColor,coord+ofr).r, - tex2D(SamplerColor,coord+ofg).g, - tex2D(SamplerColor,coord+ofb).b,1.0); - } - else res = tex2D(SamplerColor,coord+ofs); 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(tex2D(SamplerColor,coord+ofr).r, + tex2D(SamplerColor,coord+ofg).g, + tex2D(SamplerColor,coord+ofb).b,1.0); + } + else res = tex2D(SamplerColor,coord+ofs); float2 nc = coord*(bresl/FROSTSIZE)*frostsize; - float bmp = pow(tex2D(SamplerFrost,nc).x,frostbpow); + float bmp = pow(max(0,tex2D(SamplerFrost,nc).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; @@ -573,6 +542,7 @@ float4 PS_FrostPass( VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR if ( EInteriorFactor == 1.0 ) dist *= frostind; res.rgb *= 1.0+bmp*dist; } + else res = tex2D(SamplerColor,coord); if ( !focusdisplay ) return res; float2 fcenter = float2(focuscenter_x,focuscenter_y); if ( distance(coord,fcenter) < 0.01 ) res.rgb = float3(1,0,0); @@ -622,7 +592,7 @@ technique WriteFocus SRGBWRITEENABLE = FALSE; } } -technique PostProcess +technique PostProcess { pass p0 { @@ -758,3 +728,122 @@ technique PostProcess8 SRGBWRITEENABLE = FALSE; } } +technique PostProcessG +{ + pass p0 + { + VertexShader = compile vs_3_0 VS_Pass(); + PixelShader = compile ps_3_0 PS_EdgePlusSSAOPrepass(); + DitherEnable = FALSE; + ZEnable = FALSE; + CullMode = NONE; + ALPHATESTENABLE = FALSE; + SEPARATEALPHABLENDENABLE = FALSE; + AlphaBlendEnable = FALSE; + StencilEnable = FALSE; + FogEnable = FALSE; + SRGBWRITEENABLE = FALSE; + } +} +technique PostProcessG2 +{ + pass p0 + { + VertexShader = compile vs_3_0 VS_Pass(); + PixelShader = compile ps_3_0 PS_Distortion(); + DitherEnable = FALSE; + ZEnable = FALSE; + CullMode = NONE; + ALPHATESTENABLE = FALSE; + SEPARATEALPHABLENDENABLE = FALSE; + AlphaBlendEnable = FALSE; + StencilEnable = FALSE; + FogEnable = FALSE; + SRGBWRITEENABLE = FALSE; + } +} +technique PostProcessG3 +{ + pass p0 + { + VertexShader = compile vs_3_0 VS_Pass(); + PixelShader = compile ps_3_0 PS_SSAOBlurH(); + DitherEnable = FALSE; + ZEnable = FALSE; + CullMode = NONE; + ALPHATESTENABLE = FALSE; + SEPARATEALPHABLENDENABLE = FALSE; + AlphaBlendEnable = FALSE; + StencilEnable = FALSE; + FogEnable = FALSE; + SRGBWRITEENABLE = FALSE; + } +} +technique PostProcessG4 +{ + pass p0 + { + VertexShader = compile vs_3_0 VS_Pass(); + PixelShader = compile ps_3_0 PS_SSAOBlurV(); + DitherEnable = FALSE; + ZEnable = FALSE; + CullMode = NONE; + ALPHATESTENABLE = FALSE; + SEPARATEALPHABLENDENABLE = FALSE; + AlphaBlendEnable = FALSE; + StencilEnable = FALSE; + FogEnable = FALSE; + SRGBWRITEENABLE = FALSE; + } +} +technique PostProcessG5 +{ + pass p0 + { + VertexShader = compile vs_3_0 VS_Pass(); + PixelShader = compile ps_3_0 PS_DoFPrepass(); + DitherEnable = FALSE; + ZEnable = FALSE; + CullMode = NONE; + ALPHATESTENABLE = FALSE; + SEPARATEALPHABLENDENABLE = FALSE; + AlphaBlendEnable = FALSE; + StencilEnable = FALSE; + FogEnable = FALSE; + SRGBWRITEENABLE = FALSE; + } +} +technique PostProcessG6 +{ + pass p0 + { + VertexShader = compile vs_3_0 VS_Pass(); + PixelShader = compile ps_3_0 PS_DoFGather(); + DitherEnable = FALSE; + ZEnable = FALSE; + CullMode = NONE; + ALPHATESTENABLE = FALSE; + SEPARATEALPHABLENDENABLE = FALSE; + AlphaBlendEnable = FALSE; + StencilEnable = FALSE; + FogEnable = FALSE; + SRGBWRITEENABLE = FALSE; + } +} +technique PostProcessG8 +{ + pass p0 + { + VertexShader = compile vs_3_0 VS_Pass(); + PixelShader = compile ps_3_0 PS_FrostPass(); + DitherEnable = FALSE; + ZEnable = FALSE; + CullMode = NONE; + ALPHATESTENABLE = FALSE; + SEPARATEALPHABLENDENABLE = FALSE; + AlphaBlendEnable = FALSE; + StencilEnable = FALSE; + FogEnable = FALSE; + SRGBWRITEENABLE = FALSE; + } +} \ No newline at end of file diff --git a/enbseries/menbprepassinternals.fx b/enbseries/menbprepassinternals.fx index ae1b880..44be6ca 100644 --- a/enbseries/menbprepassinternals.fx +++ b/enbseries/menbprepassinternals.fx @@ -81,7 +81,6 @@ static const float3 ssao_samples_hq[64] = float3(-0.8919,-0.0384, 0.3360),float3(-0.0144, 0.9775,-0.2105) }; /* For high quality DOF */ -#ifdef USE_BOKEH static const float2 poisson32[32] = { float2( 0.7284430,-0.1927130),float2( 0.4051600,-0.2312710), @@ -101,7 +100,6 @@ static const float2 poisson32[32] = float2( 0.0761715,-0.9631760),float2(-0.9218270, 0.2121210), float2(-0.6378530, 0.3053550),float2(-0.8425180, 0.4753000) }; -#endif /* standard stuff */ float4 ScreenSize; float ENightDayFactor; diff --git a/enbseries/menbprepasssettings.fx b/enbseries/menbprepasssettings.fx index 07af301..d6b9efe 100644 --- a/enbseries/menbprepasssettings.fx +++ b/enbseries/menbprepasssettings.fx @@ -619,7 +619,6 @@ bool dofdisable string UIName = "Disable DOF"; string UIWidget = "Checkbox"; > = {false}; -#ifndef USE_BOKEH float dofbfact < string UIName = "DOF Bilateral Factor"; @@ -631,14 +630,12 @@ float dofbradius string UIWidget = "Spinner"; float UIMin = 0.0; > = {1.0}; -#else float dofpradius < string UIName = "DOF Gather Blur Radius"; string UIWidget = "Spinner"; float UIMin = 0.0; > = {6.0}; -#endif #ifndef FALLOUT bool dofrelfov < @@ -673,6 +670,14 @@ float relfovfactor_id string UIWidget = "Spinner"; > = {2.0}; #endif +/* cheap performance option */ +float dofminblur +< + string UIName = "DOF Minimum Blur"; + string UIWidget = "Spinner"; + float UIMin = 0.0; + float UIMax = 1.0; +> = {0.0}; bool dofdebug < string UIName = "Debug Depth";