diff --git a/enbseries.ini b/enbseries.ini index 6bbb1d6..0205ebf 100644 --- a/enbseries.ini +++ b/enbseries.ini @@ -23,6 +23,7 @@ EnableProceduralSun=true EnableMist=true EnableSkyLighting=false EnableCloudShadows=false +EnablePrepass=true [COLORCORRECTION] UsePaletteTexture=true UseProceduralCorrection=false diff --git a/enbseries/VERSION b/enbseries/VERSION index 86970a2..255288a 100644 --- a/enbseries/VERSION +++ b/enbseries/VERSION @@ -1 +1 @@ -2.5.0-1 "Even Crazier about Weathers" +2.5.1sk "Alone In The Prepass" diff --git a/enbseries/enbbloom.fx.ini b/enbseries/enbbloom.fx.ini index 58149a0..01d1fb8 100644 --- a/enbseries/enbbloom.fx.ini +++ b/enbseries/enbbloom.fx.ini @@ -59,8 +59,8 @@ 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.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 Blue Shift Intensity Interior Night=0.57 +Anamorphic Bloom Blue Shift Intensity Interior Day=0.5 Anamorphic Bloom Contrast Night=1.33 Anamorphic Bloom Contrast Day=1.35 Anamorphic Bloom Contrast Interior Night=1.36 diff --git a/enbseries/enbdepthoffield.fx b/enbseries/enbdepthoffield.fx new file mode 100644 index 0000000..962df0a --- /dev/null +++ b/enbseries/enbdepthoffield.fx @@ -0,0 +1,11 @@ +/* + enbdepthoffield.fx : MariENB dof. + (C)2013-2017 Marisa Kirisame, UnSX Team. + Part of MariENB, the personal ENB of Marisa. + Released under the GNU GPLv3 (or later). +*/ +/* separate for easier maintenance */ +#include "menbglobaldefs.fx" +#include "menbdepthoffieldsettings.fx" +#include "menbdepthoffieldinternals.fx" +#include "menbdepthoffieldfilters.fx" diff --git a/enbseries/enbdepthoffield.fx.ini b/enbseries/enbdepthoffield.fx.ini new file mode 100644 index 0000000..fb4c62f --- /dev/null +++ b/enbseries/enbdepthoffield.fx.ini @@ -0,0 +1,113 @@ +[ENBDEPTHOFFIELD.FX] +TECHNIQUE=0 +Fixed Resolution Width=1920 +Fixed Resolution Height=1080 +Depth Cutoff=999998.0 +Focus Mode=1 +Display Focus Points=false +Manual Focus Depth=0.0 +Focus Point Center X=50.0 +Focus Point Center Y=50.0 +Focus Triangle Angle=0.5 +Focus Triangle Radius Night=12.0 +Focus Triangle Radius Day=16.0 +Focus Triangle Radius Interior Night=10.0 +Focus Triangle Radius Interior Day=14.0 +Focus Triangle Blending Night=0.7 +Focus Triangle Blending Day=0.8 +Focus Triangle Blending Interior Night=0.8 +Focus Triangle Blending Interior Day=0.9 +Focus Maximum Depth Night=990.349976 +Focus Maximum Depth Day=994.570007 +Focus Maximum Depth Interior Night=984.919983 +Focus Maximum Depth Interior Day=989.539978 +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.35 +DOF Contrast Day=3.8 +DOF Contrast Interior Night=3.12 +DOF Contrast Interior Day=3.52 +DOF Shift Night=0.0 +DOF Shift Day=0.0 +DOF Shift Interior Night=0.0 +DOF Shift Interior Day=0.0 +DOF Fixed Focus Intensity Night=1.0 +DOF Fixed Focus Intensity Day=1.0 +DOF Fixed Focus Intensity Interior Night=1.0 +DOF Fixed Focus Intensity Interior Day=1.0 +DOF Fixed Focus Contrast Night=1.0 +DOF Fixed Focus Contrast Day=1.0 +DOF Fixed Focus Contrast Interior Night=1.0 +DOF Fixed Focus Contrast Interior Day=1.0 +DOF Fixed Focus Shift Night=0.0 +DOF Fixed Focus Shift Day=0.0 +DOF Fixed Focus Shift Interior Night=0.0 +DOF Fixed Focus Shift Interior Day=0.0 +DOF Fixed Focus Blend Night=0.0 +DOF Fixed Focus Blend Day=0.0 +DOF Fixed Focus Blend Interior Night=0.0 +DOF Fixed Focus Blend Interior Day=0.0 +DOF Fixed Focus Depth=0.0 +DOF Fixed Focus Cap=0.0 +DOF Fixed Unfocus Intensity Night=1.15 +DOF Fixed Unfocus Intensity Day=1.1 +DOF Fixed Unfocus Intensity Interior Night=1.19 +DOF Fixed Unfocus Intensity Interior Day=1.14 +DOF Fixed Unfocus Contrast Night=99.099998 +DOF Fixed Unfocus Contrast Day=126.139999 +DOF Fixed Unfocus Contrast Interior Night=84.849998 +DOF Fixed Unfocus Contrast Interior Day=110.82 +DOF Fixed Unfocus Shift Night=-0.88 +DOF Fixed Unfocus Shift Day=-0.95 +DOF Fixed Unfocus Shift Interior Night=-0.85 +DOF Fixed Unfocus Shift Interior Day=-0.93 +DOF Fixed Unfocus Blend Night=1.0 +DOF Fixed Unfocus Blend Day=1.0 +DOF Fixed Unfocus Blend Interior Night=1.0 +DOF Fixed Unfocus Blend Interior Day=1.0 +DOF Fixed Unfocus Depth=0.0 +DOF Fixed Use Cutoff=true +Enable DOF Fog=true +DOF Fog Intensity Night=1.16 +DOF Fog Intensity Day=1.14 +DOF Fog Intensity Interior Night=1.24 +DOF Fog Intensity Interior Day=1.21 +DOF Fog Contrast Night=106.489998 +DOF Fog Contrast Day=143.289993 +DOF Fog Contrast Interior Night=93.480011 +DOF Fog Contrast Interior Day=121.669998 +DOF Fog Shift Night=-0.58 +DOF Fog Shift Day=-0.65 +DOF Fog Shift Interior Night=-0.5 +DOF Fog Shift Interior Day=-0.54 +DOF Fog Blend Night=1.0 +DOF Fog Blend Day=1.0 +DOF Fog Blend Interior Night=1.0 +DOF Fog Blend Interior Day=1.0 +DOF Fog Depth=0.0 +Use Only Fixed DOF=false +DOF Gather Blur Radius=8.0 +Enable DOF Post-Blur=true +DOF Post-Blur Radius=1.0 +DOF Blur Chromatic Aberration=1.82 +Enable DOF Highlights=true +DOF Highlight Threshold=0.47 +DOF Highlight Gain=2.21 +DOF Bokeh Blur Radius=1.62 +DOF Bokeh Edge Bias=0.72 +DOF Bokeh Fuzz=0.05 +DOF Relative to FOV=true +Default FOV=75.0 +DOF Relative Factor Night=2.19 +DOF Relative Factor Day=2.39 +DOF Relative Factor Interior Night=2.22 +DOF Relative Factor Interior Day=2.41 +Focus Plane Horizontal Tilt Center=0.5 +Focus Plane Vertical Tilt Center=0.5 +Focus Plane Horizontal Tilt=0.0 +Focus Plane Vertical Tilt=0.0 +DOF Minimum Blur=0.01 +Debug Depth=false +Debug Focus=false diff --git a/enbseries/enbeffect.fx.ini b/enbseries/enbeffect.fx.ini index e4d73cd..b151ebb 100644 --- a/enbseries/enbeffect.fx.ini +++ b/enbseries/enbeffect.fx.ini @@ -1,5 +1,22 @@ [ENBEFFECT.FX] TECHNIQUE=0 +Fixed Resolution Width=1920 +Fixed Resolution Height=1080 +Distortion Chromatic Aberration=41.52 +Enable Screen Frost=true +Frost Contrast=1.22 +Frost Strength=0.19 +Frost Radial Contrast=1.17 +Frost Radial Intensity=0.87 +Frost Radial Offset=-0.71 +Frost Texture Blend=1.51 +Frost Texture Blend Contrast=6.51 +Frost Texture Size=0.8 +Frost Factor Night=1.19 +Frost Factor Day=0.63 +Frost Factor Interior Night=0.62 +Frost Factor Interior Day=0.22 +Frost Always Enable=false Enable Grain=true Grain Speed=15.0 Grain Intensity=0.05 diff --git a/enbseries/enbeffectprepass.fx.ini b/enbseries/enbeffectprepass.fx.ini index 9bffe9a..5ea4dec 100644 --- a/enbseries/enbeffectprepass.fx.ini +++ b/enbseries/enbeffectprepass.fx.ini @@ -6,18 +6,6 @@ Depth Cutoff=999998.0 Near Z=0.05 Far Z=3098.0 Distortion Chromatic Aberration=14.79 -Enable Underwater=false -Underwater Frequency 1=2.36 -Underwater Frequency 2=3.39 -Underwater Frequency 3=2.72 -Underwater Speed 1=24.309999 -Underwater Speed 2=21.9 -Underwater Speed 3=26.549999 -Underwater Amplitude 1=0.1 -Underwater Amplitude 2=0.11 -Underwater Amplitude 3=0.07 -Underwater Zoom=0.15 -Always Underwater=false Enable Hot Air Refraction=true Heat Texture Size=11.640001 Heat Speed=0.15 @@ -26,117 +14,11 @@ Heat Fade Intensity=1.09 Heat Fade Offset=-0.78 Heat Intensity=0.18 Heat Contrast=1.0 -Heat Time-of-day Contrast=3.97 +Heat Factor Night=0.0 +Heat Factor Day=1.15 +Heat Factor Interior Night=0.0 +Heat Factor Interior Day=0.52 Heat Always Enable=false -Enable Screen Frost=true -Frost Contrast=1.07 -Frost Strength=0.02 -Frost Radial Contrast=1.17 -Frost Radial Intensity=0.87 -Frost Radial Offset=-0.71 -Frost Texture Blend=1.28 -Frost Texture Blend Contrast=2.08 -Frost Texture Size=0.8 -Frost Indoor Factor=0.0 -Frost Night Factor=0.0 -Frost Always Enable=false -Focus Mode=1 -Display Focus Points=false -Manual Focus Depth=0.0 -Focus Point Center X=50.0 -Focus Point Center Y=50.0 -Focus Triangle Angle=0.5 -Focus Triangle Radius Night=12.0 -Focus Triangle Radius Day=16.0 -Focus Triangle Radius Interior Night=10.0 -Focus Triangle Radius Interior Day=14.0 -Focus Triangle Blending Night=0.7 -Focus Triangle Blending Day=0.8 -Focus Triangle Blending Interior Night=0.8 -Focus Triangle Blending Interior Day=0.9 -Focus Maximum Depth Night=990.349976 -Focus Maximum Depth Day=994.570007 -Focus Maximum Depth Interior Night=984.919983 -Focus Maximum Depth Interior Day=989.539978 -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.35 -DOF Contrast Day=3.8 -DOF Contrast Interior Night=3.12 -DOF Contrast Interior Day=3.52 -DOF Shift Night=0.0 -DOF Shift Day=0.0 -DOF Shift Interior Night=0.0 -DOF Shift Interior Day=0.0 -DOF Fixed Focus Intensity Night=1.0 -DOF Fixed Focus Intensity Day=1.0 -DOF Fixed Focus Intensity Interior Night=1.0 -DOF Fixed Focus Intensity Interior Day=1.0 -DOF Fixed Focus Contrast Night=1.0 -DOF Fixed Focus Contrast Day=1.0 -DOF Fixed Focus Contrast Interior Night=1.0 -DOF Fixed Focus Contrast Interior Day=1.0 -DOF Fixed Focus Shift Night=0.0 -DOF Fixed Focus Shift Day=0.0 -DOF Fixed Focus Shift Interior Night=0.0 -DOF Fixed Focus Shift Interior Day=0.0 -DOF Fixed Focus Blend Night=0.0 -DOF Fixed Focus Blend Day=0.0 -DOF Fixed Focus Blend Interior Night=0.0 -DOF Fixed Focus Blend Interior Day=0.0 -DOF Fixed Unfocus Intensity Night=1.15 -DOF Fixed Unfocus Intensity Day=1.1 -DOF Fixed Unfocus Intensity Interior Night=1.19 -DOF Fixed Unfocus Intensity Interior Day=1.14 -DOF Fixed Unfocus Contrast Night=99.099998 -DOF Fixed Unfocus Contrast Day=126.139999 -DOF Fixed Unfocus Contrast Interior Night=84.849998 -DOF Fixed Unfocus Contrast Interior Day=110.82 -DOF Fixed Unfocus Shift Night=-0.88 -DOF Fixed Unfocus Shift Day=-0.95 -DOF Fixed Unfocus Shift Interior Night=-0.85 -DOF Fixed Unfocus Shift Interior Day=-0.93 -DOF Fixed Unfocus Blend Night=1.0 -DOF Fixed Unfocus Blend Day=1.0 -DOF Fixed Unfocus Blend Interior Night=1.0 -DOF Fixed Unfocus Blend Interior Day=1.0 -DOF Fixed Use Cutoff=true -Enable DOF Fog=true -DOF Fog Intensity Night=1.16 -DOF Fog Intensity Day=1.14 -DOF Fog Intensity Interior Night=1.24 -DOF Fog Intensity Interior Day=1.21 -DOF Fog Contrast Night=106.489998 -DOF Fog Contrast Day=143.289993 -DOF Fog Contrast Interior Night=93.480011 -DOF Fog Contrast Interior Day=121.669998 -DOF Fog Shift Night=-0.58 -DOF Fog Shift Day=-0.65 -DOF Fog Shift Interior Night=-0.5 -DOF Fog Shift Interior Day=-0.54 -DOF Fog Blend Night=1.0 -DOF Fog Blend Day=1.0 -DOF Fog Blend Interior Night=1.0 -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.82 -DOF Relative to FOV=true -Default FOV=75.0 -DOF Relative Factor Night=2.19 -DOF Relative Factor Day=2.39 -DOF Relative Factor Interior Night=2.22 -DOF Relative Factor Interior Day=2.41 -Focus Plane Horizontal Tilt Center=0.5 -Focus Plane Vertical Tilt Center=0.5 -Focus Plane Horizontal Tilt=0.0 -Focus Plane Vertical Tilt=0.0 -DOF Minimum Blur=0.01 -Debug Depth=false -Debug Focus=false Enable Edgevision=false Edgevision Fade Contrast Night=1.82 Edgevision Fade Contrast Day=1.86 @@ -172,28 +54,7 @@ Debug SSAO=false 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.47 -DOF Highlight Gain=2.21 -DOF Bokeh Edge Bias=0.72 -DOF Bokeh Fuzz=0.05 -DOF Gather Blur Radius=8.0 -DOF Bokeh Blur Radius=1.62 -Heat Factor Night=0.0 -Heat Factor Day=1.15 -Heat Factor Interior Night=0.0 -Heat Factor Interior Day=0.52 -Frost Factor Night=1.19 -Frost Factor Day=0.31 -Frost Factor Interior Night=0.56 -Frost Factor Interior Day=0.22 +Sharpen Blending=8.0 Depth Grading Center Depth=0.0 Depth Grading Contrast Night=129.800003 Depth Grading Contrast Day=144.529999 diff --git a/enbseries/menbbloomsettings.fx b/enbseries/menbbloomsettings.fx index cadad2a..107445d 100644 --- a/enbseries/menbbloomsettings.fx +++ b/enbseries/menbbloomsettings.fx @@ -334,13 +334,13 @@ float fsi_d > = {1.0}; float fsi_in < - string UIName = "Anamorphic Bloom Blue Shift Interior Night"; + string UIName = "Anamorphic Bloom Blue Shift Intensity Interior Night"; string UIWidget = "Spinner"; float UIMin = 0.0; > = {1.0}; float fsi_id < - string UIName = "Anamorphic Bloom Blue Shift Interior Day"; + string UIName = "Anamorphic Bloom Blue Shift Intensity Interior Day"; string UIWidget = "Spinner"; float UIMin = 0.0; > = {1.0}; diff --git a/enbseries/menbdepthoffieldfilters.fx b/enbseries/menbdepthoffieldfilters.fx new file mode 100644 index 0000000..5fb2590 --- /dev/null +++ b/enbseries/menbdepthoffieldfilters.fx @@ -0,0 +1,461 @@ +/* + menbdepthoffieldfilters.fx : MariENB dof shader routines. + (C)2013-2017 Marisa Kirisame, UnSX Team. + Part of MariENB, the personal ENB of Marisa. + Released under the GNU GPLv3 (or later). +*/ +VS_OUTPUT_POST VS_Pass( VS_INPUT_POST IN ) +{ + VS_OUTPUT_POST OUT; + OUT.vpos = float4(IN.pos.x,IN.pos.y,IN.pos.z,1.0); + OUT.txcoord.xy = IN.txcoord.xy; + return OUT; +} +/* 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)) +/* Focus */ +float4 PS_ReadFocus( VS_OUTPUT_POST IN ) : COLOR +{ + if ( focuscircle < 0 ) return focusmanualvalue*0.001; + float focusmax = tod_ind(focusmax); + float2 fcenter = float2(focuscenter_x*0.01,focuscenter_y*0.01); + float cfocus = min(tex2D(SamplerDepth,fcenter).x,focusmax*0.001); + if ( focuscircle == 0 ) return cfocus; + if ( focuscircle == 2 ) + { + int i, j; + float mfocus = 0.0; + float2 px; + [unroll] for( j=0; j<8; j++ ) [unroll] for( i=0; i<8; i++ ) + { + px = float2((i+0.5)/8.0,(j+0.5)/8.0); + mfocus += min(tex2D(SamplerDepth,px).x,focusmax*0.001); + } + return mfocus/64.0; + } + /* using polygons inscribed into a circle, in this case a triangle */ + float focusradius = tod_ind(focusradius); + float focusmix = tod_ind(focusmix); + float cstep = (1.0/3.0); + float mfocus; + float2 coord; + float2 bof = float2(1.0,1.0/ScreenSize.w)*focusradius*0.01; + float fan = focuscircleangle*2.0*pi; + coord.x = fcenter.x+sin(fan)*bof.x; + coord.y = fcenter.y+cos(fan)*bof.y; + mfocus = cstep*min(tex2D(SamplerDepth,coord).x,focusmax*0.001); + coord.x = fcenter.x+sin(fan+2.0*pi*cstep)*bof.x; + coord.y = fcenter.y+cos(fan+2.0*pi*cstep)*bof.y; + mfocus += cstep*min(tex2D(SamplerDepth,coord).x,focusmax*0.001); + coord.x = fcenter.x+sin(fan+4.0*pi*cstep)*bof.x; + coord.y = fcenter.y+cos(fan+4.0*pi*cstep)*bof.y; + mfocus += cstep*min(tex2D(SamplerDepth,coord).x,focusmax*0.001); + cfocus = (1.0-focusmix)*cfocus+focusmix*mfocus; + return cfocus; +} +float4 PS_WriteFocus( VS_OUTPUT_POST IN ) : COLOR +{ + return max(lerp(tex2D(SamplerPrev,0.5).x,tex2D(SamplerCurr,0.5).x, + saturate(FadeFactor)),0.0); +} +/* Depth of Field */ +float4 PS_DoFPrepass( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR +{ + float2 coord = IN.txcoord.xy; + float dofpow = tod_ind(dofpow); + float dofmult = tod_ind(dofmult); + float dofbump = tod_ind(dofbump); + float doffixedfocuspow = tod_ind(doffixedfocuspow); + float doffixedfocusmult = tod_ind(doffixedfocusmult); + float doffixedfocusbump = tod_ind(doffixedfocusbump); + float doffixedfocusblend = tod_ind(doffixedunfocusblend); + float doffixedunfocuspow = tod_ind(doffixedunfocuspow); + float doffixedunfocusmult = tod_ind(doffixedunfocusmult); + float doffixedunfocusbump = tod_ind(doffixedunfocusbump); + float doffixedunfocusblend = tod_ind(doffixedunfocusblend); + float doffogpow = tod_ind(doffogpow); + float doffogmult = tod_ind(doffogmult); + float doffogbump = tod_ind(doffogbump); + float doffogblend = tod_ind(doffogblend); + 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 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); + float dfog = abs(dep-doffogdepth); + dfog = clamp(pow(dfog,doffogpow)*doffogmult+doffogbump,0.0,1.0); + if ( doffixedcut && (dep >= cutoff*0.000001) ) dfu *= 0; + /* Change power of dof based on field of view */ + if ( dofrelfov ) + { + float relfovfactor = tod_ind(relfovfactor); + float relfov = (FieldOfView-fovdefault)/fovdefault; + dofpow = max(0,dofpow+relfov*relfovfactor); + } + float dfc = abs(dep-foc); + dfc = clamp(pow(dfc,dofpow)*dofmult+dofbump,0.0,1.0); + if ( doffixedonly ) dfc *= 0; + dfc += lerp(0.0,dfu,doffixedunfocusblend); + if ( doffogenable ) dfc += fogfactor*lerp(0.0,dfog,doffogblend); + 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, + out float4 deps, out float4 dfcs ) +{ + 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; + deps.r = tex2D(SamplerDepth,coord+gcircle(ang)*bsz*dofpcha*0.1).x; + dfcs.r = tex2D(SamplerColor,coord+gcircle(ang)*bsz*dofpcha*0.1).a; + ang += cstep; + res.g = tex2D(SamplerColor,coord+gcircle(ang)*bsz*dofpcha*0.1).g; + deps.g = tex2D(SamplerDepth,coord+gcircle(ang)*bsz*dofpcha*0.1).x; + dfcs.g = tex2D(SamplerColor,coord+gcircle(ang)*bsz*dofpcha*0.1).a; + ang += cstep; + res.b = tex2D(SamplerColor,coord+gcircle(ang)*bsz*dofpcha*0.1).b; + deps.b = tex2D(SamplerDepth,coord+gcircle(ang)*bsz*dofpcha*0.1).x; + dfcs.b = tex2D(SamplerColor,coord+gcircle(ang)*bsz*dofpcha*0.1).a; + 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; + deps.a = tex2D(SamplerDepth,coord).x; + dfcs.a = res.a; + return res; +} +/* gather blur pass */ +float4 PS_DoFGather( VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR +{ + float2 coord = IN.txcoord.xy; + float dfc = tex2D(SamplerColor,coord).a; + float2 bresl; + if ( (fixedx > 0) && (fixedy > 0) ) bresl = float2(fixedx,fixedy); + else bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w); + float2 bof = 1.0/bresl; + /* + Skip blurring areas that are perfectly in focus. The performance + gain is negligible in most cases, though. + */ + if ( dfc <= dofminblur ) return tex2D(SamplerColor,coord); + float4 res = float4(0,0,0,0); + float dep = tex2D(SamplerDepth,coord).x; + float2 bsz = bof*dofpradius*dfc; + float4 sc, ds, sd, sw, tw = float4(0,0,0,0); + [unroll] for ( int i=0; i<32; i++ ) + { + sc = dofsample(coord+poisson32[i]*bsz,bsz,dfc,dofhilite,ds,sd); + sw.r = (ds.r>dep)?1.0:sd.r; + sw.g = (ds.g>dep)?1.0:sd.g; + sw.b = (ds.b>dep)?1.0:sd.b; + sw.a = (ds.a>dep)?1.0:sd.a; + tw += sw; + res += sc*sw; + } + res /= tw; + res.a = dfc; + return res; +} +/* "bokeh" blur pass */ +float4 PS_DoFBorkeh( VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR +{ + float2 coord = IN.txcoord.xy; + float dfc = tex2D(SamplerColor,coord).a; + float2 bresl; + 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); + res.a = 0.0; + /* + Skip blurring areas that are perfectly in focus. The performance + gain is negligible in most cases, though. + */ + if ( dfc <= dofminblur ) return res; + float dep = tex2D(SamplerDepth,coord).x; + float2 sf = bof+(tex2D(SamplerNoise3,coord*(bresl/256.0)).xy*2.0-1.0) + *dofbnoise*0.001; + float2 sr = sf*dofbradius*dfc; + int rsamples; + float bstep, bw; + float4 sc, ds, sd, sw, tw = float4(1,1,1,1); + float2 rcoord; + #define dofbrings 7 + #define dofbsamples 3 + [unroll] for ( int i=1; i<=dofbrings; i++ ) + { + rsamples = i*dofbsamples; + [unroll] for ( int j=0; jdep)?1.0:sd.r; + sw.g = (ds.g>dep)?1.0:sd.g; + sw.b = (ds.b>dep)?1.0:sd.b; + sw.a = (ds.a>dep)?1.0:sd.a; + res += sc*sw*bw; + tw += sw*bw; + } + } + res /= tw; + res.a = dfc; + return res; +} +float4 PS_DoFPostBlur( VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR +{ + float2 coord = IN.txcoord.xy; + float dfc = tex2D(SamplerColor,coord).a; + if ( dofdebug ) return tex2D(SamplerDepth,coord).x; + if ( dfcdebug ) return dfc; + float2 bresl; + if ( (fixedx > 0) && (fixedy > 0) ) bresl = float2(fixedx,fixedy); + else bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w); + float2 bof = (1.0/bresl)*dofpbradius; + 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) + }; + 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; +} +/* focus point debug */ +float4 PS_FocusDebug( VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR +{ + float2 coord = IN.txcoord.xy; + float4 res = tex2D(SamplerColor,coord); + if ( !focusdisplay || (focuscircle < 0) ) return res; + if ( focuscircle == 2 ) + { + int i, j; + float2 px; + [unroll] for( j=0; j<8; j++ ) [unroll] for( i=0; i<8; i++ ) + { + px = float2((i+0.5)/8.0,(j+0.5)/8.0); + if ( distance(coord,px) < 0.005 ) + res.rgb = float3(1,0,0); + } + return res; + } + float2 fcenter = float2(focuscenter_x*0.01,focuscenter_y*0.01); + if ( distance(coord,fcenter) < 0.005 ) res.rgb = float3(1,0,0); + if ( focuscircle == 0 ) return res; + float cstep = (1.0/3.0); + float2 tcoord; + float focusradius = tod_ind(focusradius); + float2 bof = float2(1.0,1.0/ScreenSize.w)*focusradius*0.01; + float fan = focuscircleangle*2.0*pi; + tcoord.x = fcenter.x+sin(fan)*bof.x; + tcoord.y = fcenter.y+cos(fan)*bof.y; + if ( distance(coord,tcoord) < 0.005 ) res.rgb = float3(1,0,0); + tcoord.x = fcenter.x+sin(fan+2.0*pi*cstep)*bof.x; + tcoord.y = fcenter.y+cos(fan+2.0*pi*cstep)*bof.y; + if ( distance(coord,tcoord) < 0.005 ) res.rgb = float3(1,0,0); + tcoord.x = fcenter.x+sin(fan+4.0*pi*cstep)*bof.x; + tcoord.y = fcenter.y+cos(fan+4.0*pi*cstep)*bof.y; + if ( distance(coord,tcoord) < 0.005 ) res.rgb = float3(1,0,0); + return res; +} +technique ReadFocus +{ + pass p0 + { + VertexShader = compile vs_3_0 VS_Pass(); + PixelShader = compile ps_3_0 PS_ReadFocus(); + ZENABLE = FALSE; + CullMode = NONE; + ALPHATESTENABLE = FALSE; + SEPARATEALPHABLENDENABLE = FALSE; + AlphaBlendEnable = FALSE; + FogEnable = FALSE; + SRGBWRITEENABLE = FALSE; + } +} +technique WriteFocus +{ + pass p0 + { + VertexShader = compile vs_3_0 VS_Pass(); + PixelShader = compile ps_3_0 PS_WriteFocus(); + ZENABLE = FALSE; + CullMode = NONE; + ALPHATESTENABLE = FALSE; + SEPARATEALPHABLENDENABLE = FALSE; + AlphaBlendEnable = FALSE; + FogEnable = FALSE; + SRGBWRITEENABLE = FALSE; + } +} +technique PostProcess +{ + 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 PostProcess2 +{ + 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 PostProcess3 +{ + pass p0 + { + VertexShader = compile vs_3_0 VS_Pass(); + PixelShader = compile ps_3_0 PS_DoFPostBlur(); + DitherEnable = FALSE; + ZEnable = FALSE; + CullMode = NONE; + ALPHATESTENABLE = FALSE; + SEPARATEALPHABLENDENABLE = FALSE; + AlphaBlendEnable = FALSE; + StencilEnable = FALSE; + FogEnable = FALSE; + SRGBWRITEENABLE = FALSE; + } +} +technique PostProcess4 +{ + pass p0 + { + VertexShader = compile vs_3_0 VS_Pass(); + PixelShader = compile ps_3_0 PS_FocusDebug(); + DitherEnable = FALSE; + ZEnable = FALSE; + CullMode = NONE; + ALPHATESTENABLE = FALSE; + SEPARATEALPHABLENDENABLE = FALSE; + AlphaBlendEnable = FALSE; + StencilEnable = FALSE; + FogEnable = FALSE; + SRGBWRITEENABLE = FALSE; + } +} + +technique PostProcessB +{ + 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 PostProcessB2 +{ + pass p0 + { + VertexShader = compile vs_3_0 VS_Pass(); + PixelShader = compile ps_3_0 PS_DoFBorkeh(); + DitherEnable = FALSE; + ZEnable = FALSE; + CullMode = NONE; + ALPHATESTENABLE = FALSE; + SEPARATEALPHABLENDENABLE = FALSE; + AlphaBlendEnable = FALSE; + StencilEnable = FALSE; + FogEnable = FALSE; + SRGBWRITEENABLE = FALSE; + } +} +technique PostProcessB3 +{ + pass p0 + { + VertexShader = compile vs_3_0 VS_Pass(); + PixelShader = compile ps_3_0 PS_DoFPostBlur(); + DitherEnable = FALSE; + ZEnable = FALSE; + CullMode = NONE; + ALPHATESTENABLE = FALSE; + SEPARATEALPHABLENDENABLE = FALSE; + AlphaBlendEnable = FALSE; + StencilEnable = FALSE; + FogEnable = FALSE; + SRGBWRITEENABLE = FALSE; + } +} +technique PostProcessB4 +{ + pass p0 + { + VertexShader = compile vs_3_0 VS_Pass(); + PixelShader = compile ps_3_0 PS_FocusDebug(); + 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/menbdepthoffieldinternals.fx b/enbseries/menbdepthoffieldinternals.fx new file mode 100644 index 0000000..45b54f2 --- /dev/null +++ b/enbseries/menbdepthoffieldinternals.fx @@ -0,0 +1,129 @@ +/* + menbdepthoffieldinternals.fx : MariENB dof internal variables. + (C)2013-2017 Marisa Kirisame, UnSX Team. + Part of MariENB, the personal ENB of Marisa. + Released under the GNU GPLv3 (or later). +*/ +/* mathematical constants */ +static const float pi = 3.1415926535898; +/* For basic DOF */ +static const float2 poisson32[32] = +{ + float2( 0.7284430,-0.1927130),float2( 0.4051600,-0.2312710), + float2( 0.9535280, 0.0669683),float2( 0.6544140,-0.4439470), + float2( 0.6029910, 0.1058970),float2( 0.2637500,-0.7163810), + float2( 0.9105380,-0.3889810),float2( 0.5942730,-0.7400740), + float2( 0.8215680, 0.3162520),float2( 0.3577550, 0.4884250), + float2( 0.6935990, 0.7070140),float2( 0.0470570, 0.1961800), + float2(-0.0977021, 0.6241300),float2( 0.2110300, 0.8778350), + float2(-0.3743440, 0.2494580),float2( 0.0144776,-0.0766484), + float2(-0.3377660,-0.1255100),float2( 0.3136420, 0.1077710), + float2(-0.5204340, 0.8369860),float2(-0.1182680, 0.9801750), + float2(-0.6969480,-0.3869330),float2(-0.6156080, 0.0307209), + float2(-0.3806790,-0.6055360),float2(-0.1909570,-0.3861330), + float2(-0.2449080,-0.8655030),float2( 0.0822108,-0.4975580), + float2(-0.5649250, 0.5756740),float2(-0.8741830,-0.1685750), + float2( 0.0761715,-0.9631760),float2(-0.9218270, 0.2121210), + float2(-0.6378530, 0.3053550),float2(-0.8425180, 0.4753000) +}; +/* standard stuff */ +float4 ScreenSize; +float ENightDayFactor; +float EInteriorFactor; +float FadeFactor; +float4 Timer; +float FieldOfView; +float4 WeatherAndTime; +/* samplers and textures */ +texture2D texColor; +texture2D texDepth; +texture2D texNoise3 +< + string ResourceName = "menbnoise2.png"; +>; +texture2D texFocus; +texture2D texCurr; +texture2D texPrev; +sampler2D SamplerColor = sampler_state +{ + Texture = ; + MinFilter = LINEAR; + MagFilter = LINEAR; + MipFilter = NONE; + AddressU = Clamp; + AddressV = Clamp; + SRGBTexture = FALSE; + MaxMipLevel = 0; + MipMapLodBias = 0; +}; +sampler2D SamplerDepth = sampler_state +{ + Texture = ; + MinFilter = LINEAR; + MagFilter = LINEAR; + MipFilter = NONE; + AddressU = Clamp; + AddressV = Clamp; + SRGBTexture = FALSE; + MaxMipLevel = 0; + MipMapLodBias = 0; +}; +sampler2D SamplerNoise3 = sampler_state +{ + Texture = ; + MinFilter = LINEAR; + MagFilter = LINEAR; + MipFilter = NONE; + AddressU = Wrap; + AddressV = Wrap; + SRGBTexture = FALSE; + MaxMipLevel = 0; + MipMapLodBias = 0; +}; +sampler2D SamplerFocus = sampler_state +{ + Texture = ; + MinFilter = LINEAR; + MagFilter = LINEAR; + MipFilter = NONE; + AddressU = Clamp; + AddressV = Clamp; + SRGBTexture = FALSE; + MaxMipLevel = 0; + MipMapLodBias = 0; +}; +sampler2D SamplerCurr = sampler_state +{ + Texture = ; + MinFilter = LINEAR; + MagFilter = LINEAR; + MipFilter = NONE; + AddressU = Clamp; + AddressV = Clamp; + SRGBTexture = FALSE; + MaxMipLevel = 0; + MipMapLodBias = 0; +}; +sampler2D SamplerPrev = sampler_state +{ + Texture = ; + MinFilter = LINEAR; + MagFilter = LINEAR; + MipFilter = NONE; + AddressU = Clamp; + AddressV = Clamp; + SRGBTexture = FALSE; + MaxMipLevel = 0; + MipMapLodBias = 0; +}; +/* whatever */ +struct VS_OUTPUT_POST +{ + float4 vpos : POSITION; + float2 txcoord : TEXCOORD0; +}; +struct VS_INPUT_POST +{ + float3 pos : POSITION; + float2 txcoord : TEXCOORD0; +}; diff --git a/enbseries/menbdepthoffieldsettings.fx b/enbseries/menbdepthoffieldsettings.fx new file mode 100644 index 0000000..06c4e12 --- /dev/null +++ b/enbseries/menbdepthoffieldsettings.fx @@ -0,0 +1,670 @@ +/* + menbdepthoffieldsettings.fx : MariENB dof variables. + (C)2013-2017 Marisa Kirisame, UnSX Team. + Part of MariENB, the personal ENB of Marisa. + Released under the GNU GPLv3 (or later). +*/ +string str_misc = "Miscellaneous"; +/* fixed resolution, keeps blur filters at a consistent internal resolution */ +int fixedx +< + string UIName = "Fixed Resolution Width"; + string UIWidget = "Spinner"; + int UIMin = 0; +> = {1920}; +int fixedy +< + string UIName = "Fixed Resolution Height"; + string UIWidget = "Spinner"; + int UIMin = 0; +> = {1080}; +float cutoff +< + string UIName = "Depth Cutoff"; + string UIWidget = "Spinner"; + float UIMin = 0.0; + float UIMax = 1000000.0; +> = {999949.0}; +string str_focus = "Focusing Parameters"; +/* + focus modes: + -1 : manual + 0 : center spot + 1 : center + triangle + 2 : 8x8 grid average + TODO + 3 : 8x8 grid average of 8 closest points + 4 : 8x8 grid average of 8 farthest points +*/ +int focuscircle +< + string UIName = "Focus Mode"; + string UIWidget = "Checkbox"; + int UIMin = -1; + int UIMax = 2; +> = {1}; +bool focusdisplay +< + string UIName = "Display Focus Points"; + string UIWidget = "Checkbox"; +> = {false}; +float focusmanualvalue +< + string UIName = "Manual Focus Depth"; + string UIWidget = "Checkbox"; + float UIMin = 0.0; + float UIMax = 1000.0; +> = {500.0}; +/* center point of focus */ +float focuscenter_x +< + string UIName = "Focus Point Center X"; + string UIWidget = "Spinner"; + float UIMin = 0.0; + float UIMax = 100.0; +> = {50.0}; +float focuscenter_y +< + string UIName = "Focus Point Center Y"; + string UIWidget = "Spinner"; + float UIMin = 0.0; + float UIMax = 100.0; +> = {50.0}; +float focuscircleangle +< + string UIName = "Focus Triangle Angle"; + string UIWidget = "Spinner"; + float UIMin = 0.0; + float UIMax = 1.0; +> = {0.0}; +/* radius of the focus point triangle */ +float focusradius_n +< + string UIName = "Focus Triangle Radius Night"; + string UIWidget = "Spinner"; +> = {20.0}; +float focusradius_d +< + string UIName = "Focus Triangle Radius Day"; + string UIWidget = "Spinner"; +> = {20.0}; +float focusradius_in +< + string UIName = "Focus Triangle Radius Interior Night"; + string UIWidget = "Spinner"; +> = {20.0}; +float focusradius_id +< + string UIName = "Focus Triangle Radius Interior Day"; + string UIWidget = "Spinner"; +> = {20.0}; +/* mix factor with sample at screen center */ +float focusmix_n +< + string UIName = "Focus Triangle Blending Night"; + string UIWidget = "Spinner"; +> = {0.5}; +float focusmix_d +< + string UIName = "Focus Triangle Blending Day"; + string UIWidget = "Spinner"; +> = {0.5}; +float focusmix_in +< + string UIName = "Focus Triangle Blending Interior Night"; + string UIWidget = "Spinner"; +> = {0.5}; +float focusmix_id +< + string UIName = "Focus Triangle Blending Interior Day"; + string UIWidget = "Spinner"; +> = {0.5}; +/* maximum focus depth */ +float focusmax_n +< + string UIName = "Focus Maximum Depth Night"; + string UIWidget = "Spinner"; +> = {1000.0}; +float focusmax_d +< + string UIName = "Focus Maximum Depth Day"; + string UIWidget = "Spinner"; +> = {1000.0}; +float focusmax_in +< + string UIName = "Focus Maximum Depth Interior Night"; + string UIWidget = "Spinner"; +> = {1000.0}; +float focusmax_id +< + string UIName = "Focus Maximum Depth Interior Day"; + string UIWidget = "Spinner"; +> = {1000.0}; +/* dof filter */ +string str_dof = "Depth Of Field"; +/* dof multiplier (makes unfocused depths more blurry) */ +float dofmult_n +< + string UIName = "DOF Intensity Night"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {500.0}; +float dofmult_d +< + string UIName = "DOF Intensity Day"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {500.0}; +float dofmult_in +< + string UIName = "DOF Intensity Interior Night"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {500.0}; +float dofmult_id +< + string UIName = "DOF Intensity Interior Day"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {500.0}; +/* dof power (the higher it is, the wider the focused area gets) */ +float dofpow_n +< + string UIName = "DOF Contrast Night"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {4.0}; +float dofpow_d +< + string UIName = "DOF Contrast Day"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {4.0}; +float dofpow_in +< + string UIName = "DOF Contrast Interior Night"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {4.0}; +float dofpow_id +< + string UIName = "DOF Contrast Interior Day"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {4.0}; +/* dof bump (negative shift increases the area in complete focus) */ +float dofbump_n +< + string UIName = "DOF Shift Night"; + string UIWidget = "Spinner"; +> = {0.0}; +float dofbump_d +< + string UIName = "DOF Shift Day"; + string UIWidget = "Spinner"; +> = {0.0}; +float dofbump_in +< + string UIName = "DOF Shift Interior Night"; + string UIWidget = "Spinner"; +> = {0.0}; +float dofbump_id +< + string UIName = "DOF Shift Interior Day"; + string UIWidget = "Spinner"; +> = {0.0}; +/* fixed focused depth factors */ +float doffixedfocusmult_n +< + string UIName = "DOF Fixed Focus Intensity Night"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {1.0}; +float doffixedfocusmult_d +< + string UIName = "DOF Fixed Focus Intensity Day"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {1.0}; +float doffixedfocusmult_in +< + string UIName = "DOF Fixed Focus Intensity Interior Night"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {1.0}; +float doffixedfocusmult_id +< + string UIName = "DOF Fixed Focus Intensity Interior Day"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {1.0}; +float doffixedfocuspow_n +< + string UIName = "DOF Fixed Focus Contrast Night"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {1.0}; +float doffixedfocuspow_d +< + string UIName = "DOF Fixed Focus Contrast Day"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {1.0}; +float doffixedfocuspow_in +< + string UIName = "DOF Fixed Focus Contrast Interior Night"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {1.0}; +float doffixedfocuspow_id +< + string UIName = "DOF Fixed Focus Contrast Interior Day"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {1.0}; +float doffixedfocusbump_n +< + string UIName = "DOF Fixed Focus Shift Night"; + string UIWidget = "Spinner"; +> = {0.0}; +float doffixedfocusbump_d +< + string UIName = "DOF Fixed Focus Shift Day"; + string UIWidget = "Spinner"; +> = {0.0}; +float doffixedfocusbump_in +< + string UIName = "DOF Fixed Focus Shift Interior Night"; + string UIWidget = "Spinner"; +> = {0.0}; +float doffixedfocusbump_id +< + string UIName = "DOF Fixed Focus Shift Interior Day"; + string UIWidget = "Spinner"; +> = {0.0}; +float doffixedfocusblend_n +< + string UIName = "DOF Fixed Focus Blend Night"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {0.0}; +float doffixedfocusblend_d +< + string UIName = "DOF Fixed Focus Blend Day"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {0.0}; +float doffixedfocusblend_in +< + string UIName = "DOF Fixed Focus Blend Interior Night"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {0.0}; +float doffixedfocusblend_id +< + string UIName = "DOF Fixed Focus Blend Interior Day"; + 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 +< + string UIName = "DOF Fixed Unfocus Intensity Night"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {2.0}; +float doffixedunfocusmult_d +< + string UIName = "DOF Fixed Unfocus Intensity Day"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {2.0}; +float doffixedunfocusmult_in +< + string UIName = "DOF Fixed Unfocus Intensity Interior Night"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {2.0}; +float doffixedunfocusmult_id +< + string UIName = "DOF Fixed Unfocus Intensity Interior Day"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {2.0}; +float doffixedunfocuspow_n +< + string UIName = "DOF Fixed Unfocus Contrast Night"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {1000.0}; +float doffixedunfocuspow_d +< + string UIName = "DOF Fixed Unfocus Contrast Day"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {1000.0}; +float doffixedunfocuspow_in +< + string UIName = "DOF Fixed Unfocus Contrast Interior Night"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {1000.0}; +float doffixedunfocuspow_id +< + string UIName = "DOF Fixed Unfocus Contrast Interior Day"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {1000.0}; +float doffixedunfocusbump_n +< + string UIName = "DOF Fixed Unfocus Shift Night"; + string UIWidget = "Spinner"; +> = {0.0}; +float doffixedunfocusbump_d +< + string UIName = "DOF Fixed Unfocus Shift Day"; + string UIWidget = "Spinner"; +> = {0.0}; +float doffixedunfocusbump_in +< + string UIName = "DOF Fixed Unfocus Shift Interior Night"; + string UIWidget = "Spinner"; +> = {0.0}; +float doffixedunfocusbump_id +< + string UIName = "DOF Fixed Unfocus Shift Interior Day"; + string UIWidget = "Spinner"; +> = {0.0}; +float doffixedunfocusblend_n +< + string UIName = "DOF Fixed Unfocus Blend Night"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {0.0}; +float doffixedunfocusblend_d +< + string UIName = "DOF Fixed Unfocus Blend Day"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {0.0}; +float doffixedunfocusblend_in +< + string UIName = "DOF Fixed Unfocus Blend Interior Night"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {0.0}; +float doffixedunfocusblend_id +< + string UIName = "DOF Fixed Unfocus Blend Interior Day"; + 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}; +/* fixed dof for foggy weathers */ +bool doffogenable +< + string UIName = "Enable DOF Fog"; + string UIWidget = "Checkbox"; +> = {true}; +float doffogmult_n +< + string UIName = "DOF Fog Intensity Night"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {2.0}; +float doffogmult_d +< + string UIName = "DOF Fog Intensity Day"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {2.0}; +float doffogmult_in +< + string UIName = "DOF Fog Intensity Interior Night"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {2.0}; +float doffogmult_id +< + string UIName = "DOF Fog Intensity Interior Day"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {2.0}; +float doffogpow_n +< + string UIName = "DOF Fog Contrast Night"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {1000.0}; +float doffogpow_d +< + string UIName = "DOF Fog Contrast Day"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {1000.0}; +float doffogpow_in +< + string UIName = "DOF Fog Contrast Interior Night"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {1000.0}; +float doffogpow_id +< + string UIName = "DOF Fog Contrast Interior Day"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {1000.0}; +float doffogbump_n +< + string UIName = "DOF Fog Shift Night"; + string UIWidget = "Spinner"; +> = {0.0}; +float doffogbump_d +< + string UIName = "DOF Fog Shift Day"; + string UIWidget = "Spinner"; +> = {0.0}; +float doffogbump_in +< + string UIName = "DOF Fog Shift Interior Night"; + string UIWidget = "Spinner"; +> = {0.0}; +float doffogbump_id +< + string UIName = "DOF Fog Shift Interior Day"; + string UIWidget = "Spinner"; +> = {0.0}; +float doffogblend_n +< + string UIName = "DOF Fog Blend Night"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {0.0}; +float doffogblend_d +< + string UIName = "DOF Fog Blend Day"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {0.0}; +float doffogblend_in +< + string UIName = "DOF Fog Blend Interior Night"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {0.0}; +float doffogblend_id +< + string UIName = "DOF Fog Blend Interior Day"; + 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}; +bool doffixedonly +< + string UIName = "Use Only Fixed DOF"; + string UIWidget = "Checkbox"; +> = {false}; +float dofpradius +< + 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}; +bool dofrelfov +< + string UIName = "DOF Relative to FOV"; + string UIWidget = "Checkbox"; +> = {true}; +float fovdefault +< + string UIName = "Default FOV"; + string UIWidget = "Spinner"; + float UIMin = 1.0; + float UIMax = 180.0; +> = {75.0}; +float relfovfactor_n +< + string UIName = "DOF Relative Factor Night"; + string UIWidget = "Spinner"; +> = {2.0}; +float relfovfactor_d +< + string UIName = "DOF Relative Factor Day"; + string UIWidget = "Spinner"; +> = {2.0}; +float relfovfactor_in +< + string UIName = "DOF Relative Factor Interior Night"; + string UIWidget = "Spinner"; +> = {2.0}; +float relfovfactor_id +< + string UIName = "DOF Relative Factor Interior Day"; + string UIWidget = "Spinner"; +> = {2.0}; +/* tilting */ +float doftiltxcenter +< + string UIName = "Focus Plane Horizontal Tilt Center"; + string UIWidget = "Spinner"; + float UIMin = 0.0; + float UIMax = 1.0; +> = {0.5}; +float doftiltycenter +< + string UIName = "Focus Plane Vertical Tilt Center"; + string UIWidget = "Spinner"; + float UIMin = 0.0; + float UIMax = 1.0; +> = {0.5}; +float doftiltx +< + string UIName = "Focus Plane Horizontal Tilt"; + string UIWidget = "Spinner"; +> = {0.0}; +float doftilty +< + string UIName = "Focus Plane Vertical Tilt"; + string UIWidget = "Spinner"; +> = {0.0}; +/* 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"; + string UIWidget = "Checkbox"; +> = {false}; +bool dfcdebug +< + string UIName = "Debug Focus"; + string UIWidget = "Checkbox"; +> = {false}; diff --git a/enbseries/menbeffectfilters.fx b/enbseries/menbeffectfilters.fx index 0633707..cfa1bbe 100644 --- a/enbseries/menbeffectfilters.fx +++ b/enbseries/menbeffectfilters.fx @@ -11,33 +11,6 @@ VS_OUTPUT_POST VS_Pass( VS_INPUT_POST IN ) OUT.txcoord0.xy = IN.txcoord0.xy; return OUT; } -#ifdef FALLOUT -float4 _c1 : register(c1); -float4 _c2 : register(c2); -float4 _c19 : register(c19); -float4 _c20 : register(c20); -float4 _c22 : register(c22); -#define _r1 _c1 -#define _r2 _c2 -#define _r3 _c19 -#define _r4 _c20 -#define _r5 _c22 -/* - FALLOUT REGISTERS - - r1 (c1): r2 (c2): r3 (c19): - x -> adapt max x -> unused x -> vibrance - y -> unused y -> unused y -> balancer - z -> unused z -> bloom mix z -> multiplier 1 - w -> unused w -> unused w -> multiplier 2 - - r4 (c20): r5 (c22): - x -> tint red x -> fade red - y -> tint green y -> fade green - z -> tint blue z -> fade blue - w -> tint value w -> fade value -*/ -#else float4 _c1 : register(c1); float4 _c2 : register(c2); float4 _c3 : register(c3); @@ -63,7 +36,6 @@ float4 _c5 : register(c5); z -> tint blue z -> fade blue w -> tint value w -> fade value */ -#endif /* helper functions */ /* photometric */ #define luminance(x) dot(x,float3(0.2126,0.7152,0.0722)) @@ -151,32 +123,6 @@ float3 TonemapHejlDawson( float3 res ) float3 x = max(0.0,res-0.004); return (x*(6.2*x+.5))/(x*(6.2*x+1.7)+0.06); } -/* The standard tonemap from sweetfx */ -float3 TonemapSFX( float3 res ) -{ - float Gamma = tod_ind(sfxgamma); - float Exposure = tod_ind(sfxexposure); - float Saturation = tod_ind(sfxsaturation); - float Bleach = tod_ind(sfxbleach); - float Defog = tod_ind(sfxdefog); - float3 FogColor = float3(tod_ind(sfxfogcolor_r),tod_ind(sfxfogcolor_g), - tod_ind(sfxfogcolor_b)); - float3 tcol = res; - tcol = saturate(tcol-Defog*FogColor*2.55); - tcol *= pow(2.0,Exposure); - tcol = pow(tcol,Gamma); - float lum = luminance(tcol); - float L = saturate(1.0*(lum-0.45)); - float3 A2 = Bleach*tcol; - float3 res1 = 2.0*tcol*lum; - float3 res2 = 1.0-2.0*(1.0-lum)*(1.0-tcol); - float3 newc = lerp(res1,res2,L); - float3 mixrgb = A2*newc; - tcol += (1.0-A2)*mixrgb; - float3 gray = dot(tcol,1.0/3.0); - float3 diff = tcol-gray; - return (tcol+diff*Saturation)/(1+(diff*Saturation)); -} float3 Tonemap( float3 res ) { float3 tcol = pow(max(res,0.0),1.0/2.2); @@ -184,8 +130,7 @@ float3 Tonemap( float3 res ) res *= tod_ind(tmapexposure); float tblend = tod_ind(tmapblend); float3 mapped; - if ( tmapenable == 5 ) mapped = TonemapSFX(res); - else if ( tmapenable == 4 ) mapped = TonemapHaarmPeterDuiker(res); + if ( tmapenable == 4 ) mapped = TonemapHaarmPeterDuiker(res); else if ( tmapenable == 3 ) mapped = TonemapHejlDawson(res); else if ( tmapenable == 2 ) mapped = TonemapUC2(res); else if ( tmapenable == 1 ) mapped = TonemapReinhard(res); @@ -247,12 +192,8 @@ float3 GradingGame( float3 res ) tcol = tintv*(tgray*_r4.rgb-tcol)+tcol; tcol = lerp(res,tcol,vtintblend); /* contrast(?) stuff */ -#ifdef FALLOUT - float oft = _r3.y; -#else /* TODO figure the offset thingy for Skyrim someday */ float oft = 0.0; -#endif tcol = max(0,(tcol*_r3.w-oft)*_r3.z+oft); tcol = lerp(res,tcol,vconblend); return tcol; @@ -448,23 +389,6 @@ float3 GradingLUT( float3 res ) float lutblend = tod_ind(lutblend); return lerp(res,tcol,lutblend); } -/* classic ENB palette colour grading, seems to kill dark and light values */ -float3 GradingPal( float3 res ) -{ - float4 adapt = tex2D(_s4,0.5); - adapt = adapt/(adapt+1.0); - float adapts = max(adapt.r,max(adapt.g,adapt.b)); - float3 palt; - float2 coord; - coord.y = adapts; - coord.x = res.r; - palt.r = tex2D(_s7,coord).r; - coord.x = res.g; - palt.g = tex2D(_s7,coord).g; - coord.x = res.b; - palt.b = tex2D(_s7,coord).b; - return lerp(res,palt,palblend); -} /* I think this Technicolor implementation is correct... maybe */ float3 Technicolor( float3 res ) { @@ -539,13 +463,68 @@ float3 FilmGrain( float3 res, float2 coord ) } return lerp(res,nt,ni*0.01); } +/* Screen frost distortion */ +float2 ScreenFrost( float2 coord ) +{ + float2 bresl; + if ( (fixedx > 0) && (fixedy > 0) ) bresl = float2(fixedx,fixedy); + else bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w); + float2 nc = coord*(bresl/FROSTSIZE)*frostsize; + float2 ofs = tex2D(SamplerFrost,nc).xy; + ofs = (ofs-0.5)*2.0; + ofs *= pow(length(ofs),frostpow)*froststrength; + if ( !frostalways ) ofs *= max(0.0,tod_ind(frostfactor)) + *max(0.0,coldfactor-warmfactor); + float dist = distance(coord,float2(0.5,0.5))*2.0; + ofs *= clamp(pow(dist,frostrpow)*frostrmult+frostrbump,0.0,1.0); + return coord+ofs; +} /* MariENB shader */ float4 PS_Mari( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR { float2 coord = IN.txcoord0.xy; - float4 res = tex2D(_s0,coord); + float2 bresl; + if ( (fixedx > 0) && (fixedy > 0) ) bresl = float2(fixedx,fixedy); + else bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w); + float4 res; + float3 bcol; + 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(_s0,coord+ofr).r, + tex2D(_s0,coord+ofg).g, + tex2D(_s0,coord+ofb).b,1.0); + bcol = float3(tex2D(_s3,coord+ofr).r, + tex2D(_s3,coord+ofg).g, + tex2D(_s3,coord+ofb).b)*EBloomAmount; + } + else + { + res = tex2D(_s0,coord+ofs); + bcol = tex2D(_s3,coord+ofs).rgb*EBloomAmount; + } + float2 nc = coord*(bresl/FROSTSIZE)*frostsize; + float bmp = pow(max(0,tex2D(SamplerFrost,nc).z),frostbpow); + float dist = distance(coord,float2(0.5,0.5))*2.0; + dist = clamp(pow(dist,frostrpow)*frostrmult+frostrbump,0.0, + 1.0)*frostblend; + if ( !frostalways ) dist *= max(0.0,tod_ind(frostfactor)) + *max(0.0,coldfactor-warmfactor); + res.rgb *= 1.0+bmp*dist; + } + else + { + res = tex2D(_s0,coord); + bcol = tex2D(_s3,coord).rgb*EBloomAmount; + } res.rgb = pow(max(res.rgb,0.0),2.2); - float3 bcol = tex2D(_s3,coord).rgb*EBloomAmount; if ( bloomdebug ) res.rgb *= 0; res.rgb += bcol; if ( aenable ) res.rgb = Adaptation(res.rgb); @@ -564,14 +543,9 @@ float4 PS_Mari( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR if ( gradeenable3 ) res.rgb = GradingHSV(res.rgb); } if ( lutenable ) res.rgb = GradingLUT(res.rgb); - if ( palenable ) res.rgb = GradingPal(res.rgb); if ( techenable ) res.rgb = Technicolor(res.rgb); if ( !nbt && ne ) res.rgb = FilmGrain(res.rgb,coord); -#ifdef FALLOUT - res.rgb = _r5.rgb*_r5.a + res.rgb*(1.0-_r5.a); -#else res.rgb = _r5.w*(_r5.rgb-res.rgb)+res.rgb; -#endif if ( dodither ) res.rgb = Dither(res.rgb,coord); res.rgb = max(0,res.rgb); res.a = 1.0; @@ -583,11 +557,7 @@ float4 PS_Mari( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR toggling "UseEffect" switches between each variation? Wat? */ #ifndef ENB_FLIPTECHNIQUE -#ifdef FALLOUT -technique Shader_C1DAE3F7 -#else technique Shader_D6EC7DD1 -#endif #else technique Shader_ORIGINALPOSTPROCESS #endif @@ -608,61 +578,15 @@ technique Shader_ORIGINALPOSTPROCESS #ifndef ENB_FLIPTECHNIQUE technique Shader_ORIGINALPOSTPROCESS #else -#ifdef FALLOUT -technique Shader_C1DAE3F7 -#else technique Shader_D6EC7DD1 #endif -#endif { pass p0 { -#ifdef FALLOUT - VertexShader = asm - { - vs_1_1 - def c3,2,-2,0,0 - dcl_position v0 - dcl_texcoord v1 - mov r0.xy,c0 - mad oPos.xy,r0,-c3,v0 - add oT0.xy,v1,c1 - add oT1.xy,v1,c2 - mov oPos.zw,v0 - }; -#else VertexShader = compile vs_3_0 VS_Pass(); -#endif /* >inline assembly */ PixelShader = asm { -#ifdef FALLOUT - ps_2_x - def c0,0.5,0,0,0 - def c3,0.298999995,0.587000012,0.114,0 - dcl t0.xy - dcl t1.xy - dcl_2d s0 - dcl_2d s1 - texld r0,t1,s1 - texld r1,t0,s0 - max r0.w,r1.w,c1.x - rcp r0.w,r0.w - mul r1.w,r0.w,c0.x - mul r0.w,r0.w,c1.x - mul r1.xyz,r1,r1.w - max r2.xyz,r1,c0.y - mad r0.xyz,r0.w,r0,r2 - dp3 r0.w,r0,c3 - lrp r1.xyz,c19.x,r0,r0.w - mad r0.xyz,r0.w,c20,-r1 - mad r0.xyz,c20.w,r0,r1 - mad r0.xyz,c19.w,r0,-c19.y - mad r0.xyz,c19.z,r0,c19.y - lrp r1.xyz,c22.w,c22,r0 - mov r1.w,c2.z - mov oC0,r1 -#else ps_3_0 def c6,0,0,0,0 def c7,0.212500006,0.715399981,0.0720999986,1 @@ -701,7 +625,6 @@ technique Shader_D6EC7DD1 mad r0,c3.z,r1,r0.y add r1,-r0,c5 mad oC0,c5.w,r1,r0 -#endif }; ColorWriteEnable = ALPHA|RED|GREEN|BLUE; ZEnable = FALSE; diff --git a/enbseries/menbeffectinternals.fx b/enbseries/menbeffectinternals.fx index 488ca8c..ac10f82 100644 --- a/enbseries/menbeffectinternals.fx +++ b/enbseries/menbeffectinternals.fx @@ -103,6 +103,14 @@ texture2D texTonemap < string ResourceName = "menbfilmlut.png"; >; +texture2D texFrost +< +#ifdef FROST_DDS + string ResourceName = "menbfrost.dds"; +#else + string ResourceName = "menbfrost.png"; +#endif +>; sampler2D _s0 = sampler_state { Texture = ; @@ -274,6 +282,18 @@ sampler2D SamplerTonemap = sampler_state MaxMipLevel = 0; MipMapLodBias = 0; }; +sampler2D SamplerFrost = sampler_state +{ + Texture = ; + MinFilter = LINEAR; + MagFilter = LINEAR; + MipFilter = NONE; + AddressU = Wrap; + AddressV = Wrap; + SRGBTexture = FALSE; + MaxMipLevel = 0; + MipMapLodBias = 0; +}; /* whatever */ struct VS_OUTPUT_POST { diff --git a/enbseries/menbeffectsettings.fx b/enbseries/menbeffectsettings.fx index 0cc0b20..8e69516 100644 --- a/enbseries/menbeffectsettings.fx +++ b/enbseries/menbeffectsettings.fx @@ -4,6 +4,103 @@ Part of MariENB, the personal ENB of Marisa. Released under the GNU GPLv3 (or later). */ +string str_misc = "Miscellaneous"; +/* fixed resolution, keeps blur filters at a consistent internal resolution */ +int fixedx +< + string UIName = "Fixed Resolution Width"; + string UIWidget = "Spinner"; + int UIMin = 0; +> = {1920}; +int fixedy +< + string UIName = "Fixed Resolution Height"; + string UIWidget = "Spinner"; + int UIMin = 0; +> = {1080}; +string str_dist = "Frost Overlay"; +float distcha +< + string UIName = "Distortion Chromatic Aberration"; + string UIWidget = "Spinner"; +> = {10.0}; +bool frostenable +< + string UIName = "Enable Screen Frost"; + string UIWidget = "Checkbox"; +> = {false}; +float frostpow +< + string UIName = "Frost Contrast"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {1.0}; +float froststrength +< + string UIName = "Frost Strength"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {1.0}; +float frostrpow +< + string UIName = "Frost Radial Contrast"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {1.0}; +float frostrmult +< + string UIName = "Frost Radial Intensity"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {1.0}; +float frostrbump +< + string UIName = "Frost Radial Offset"; + string UIWidget = "Spinner"; +> = {0.0}; +float frostblend +< + string UIName = "Frost Texture Blend"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {1.0}; +float frostbpow +< + string UIName = "Frost Texture Blend Contrast"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {1.0}; +float frostsize +< + string UIName = "Frost Texture Size"; + string UIWidget = "Spinner"; + float UIMin = 0.0; +> = {1.0}; +float frostfactor_n +< + string UIName = "Frost Factor Night"; + string UIWidget = "Spinner"; +> = {1.0}; +float frostfactor_d +< + string UIName = "Frost Factor Day"; + string UIWidget = "Spinner"; +> = {1.0}; +float frostfactor_in +< + string UIName = "Frost Factor Interior Night"; + string UIWidget = "Spinner"; +> = {1.0}; +float frostfactor_id +< + string UIName = "Frost Factor Interior Day"; + string UIWidget = "Spinner"; +> = {1.0}; +bool frostalways +< + string UIName = "Frost Always Enable"; + string UIWidget = "Checkbox"; +> = {false}; /* film grain */ string str_noise = "Film Grain"; bool ne @@ -177,14 +274,13 @@ string str_tonemap = "Tone Mapping"; 2 : Uncharted 2 3 : Hejl Dawson 4 : Haarm-Peter Duiker - 5 : SweetFX */ int tmapenable < string UIName = "Tonemapping Method"; string UIWidget = "Spinner"; int UIMin = -1; - int UIMax = 5; + int UIMax = 4; > = {2}; float tmapexposure_n < @@ -378,230 +474,6 @@ float unW_id string UIName = "Uncharted2 Linear White Interior Day"; string UIWidget = "Spinner"; > = {10.0}; -float sfxgamma_n -< - string UIName = "SweetFX Gamma Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; - float UIMax = 2.0; -> = {1.0}; -float sfxgamma_d -< - string UIName = "SweetFX Gamma Day"; - string UIWidget = "Spinner"; - float UIMin = 0.0; - float UIMax = 2.0; -> = {1.0}; -float sfxgamma_in -< - string UIName = "SweetFX Gamma Interior Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; - float UIMax = 2.0; -> = {1.0}; -float sfxgamma_id -< - string UIName = "SweetFX Gamma Interior Day"; - string UIWidget = "Spinner"; - float UIMin = 0.0; - float UIMax = 2.0; -> = {1.0}; -float sfxexposure_n -< - string UIName = "SweetFX Exposure Night"; - string UIWidget = "Spinner"; - float UIMin = -1.0; - float UIMax = 1.0; -> = {0.0}; -float sfxexposure_d -< - string UIName = "SweetFX Exposure Day"; - string UIWidget = "Spinner"; - float UIMin = -1.0; - float UIMax = 1.0; -> = {0.0}; -float sfxexposure_in -< - string UIName = "SweetFX Exposure Interior Night"; - string UIWidget = "Spinner"; - float UIMin = -1.0; - float UIMax = 1.0; -> = {0.0}; -float sfxexposure_id -< - string UIName = "SweetFX Exposure Interior Day"; - string UIWidget = "Spinner"; - float UIMin = -1.0; - float UIMax = 1.0; -> = {0.0}; -float sfxsaturation_n -< - string UIName = "SweetFX Saturation Night"; - string UIWidget = "Spinner"; - float UIMin = -1.0; - float UIMax = 1.0; -> = {0.0}; -float sfxsaturation_d -< - string UIName = "SweetFX Saturation Day"; - string UIWidget = "Spinner"; - float UIMin = -1.0; - float UIMax = 1.0; -> = {0.0}; -float sfxsaturation_in -< - string UIName = "SweetFX Saturation Interior Night"; - string UIWidget = "Spinner"; - float UIMin = -1.0; - float UIMax = 1.0; -> = {0.0}; -float sfxsaturation_id -< - string UIName = "SweetFX Saturation Interior Day"; - string UIWidget = "Spinner"; - float UIMin = -1.0; - float UIMax = 1.0; -> = {0.0}; -float sfxbleach_n -< - string UIName = "SweetFX Bleach Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; - float UIMax = 1.0; -> = {0.0}; -float sfxbleach_d -< - string UIName = "SweetFX Bleach Day"; - string UIWidget = "Spinner"; - float UIMin = 0.0; - float UIMax = 1.0; -> = {0.0}; -float sfxbleach_in -< - string UIName = "SweetFX Bleach Interior Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; - float UIMax = 1.0; -> = {0.0}; -float sfxbleach_id -< - string UIName = "SweetFX Bleach Interior Day"; - string UIWidget = "Spinner"; - float UIMin = 0.0; - float UIMax = 1.0; -> = {0.0}; -float sfxdefog_n -< - string UIName = "SweetFX Defog Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; - float UIMax = 1.0; -> = {0.0}; -float sfxdefog_d -< - string UIName = "SweetFX Defog Day"; - string UIWidget = "Spinner"; - float UIMin = 0.0; - float UIMax = 1.0; -> = {0.0}; -float sfxdefog_in -< - string UIName = "SweetFX Defog Interior Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; - float UIMax = 1.0; -> = {0.0}; -float sfxdefog_id -< - string UIName = "SweetFX Defog Interior Day"; - string UIWidget = "Spinner"; - float UIMin = 0.0; - float UIMax = 1.0; -> = {0.0}; -float sfxfogcolor_r_n -< - string UIName = "SweetFX Defog Color Red Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; - float UIMax = 1.0; -> = {0.0}; -float sfxfogcolor_g_n -< - string UIName = "SweetFX Defog Color Green Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; - float UIMax = 1.0; -> = {0.0}; -float sfxfogcolor_b_n -< - string UIName = "SweetFX Defog Color Blue Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; - float UIMax = 1.0; -> = {1.0}; -float sfxfogcolor_r_d -< - string UIName = "SweetFX Defog Color Red Day"; - string UIWidget = "Spinner"; - float UIMin = 0.0; - float UIMax = 1.0; -> = {0.0}; -float sfxfogcolor_g_d -< - string UIName = "SweetFX Defog Color Green Day"; - string UIWidget = "Spinner"; - float UIMin = 0.0; - float UIMax = 1.0; -> = {0.0}; -float sfxfogcolor_b_d -< - string UIName = "SweetFX Defog Color Blue Day"; - string UIWidget = "Spinner"; - float UIMin = 0.0; - float UIMax = 1.0; -> = {1.0}; -float sfxfogcolor_r_in -< - string UIName = "SweetFX Defog Color Red Interior Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; - float UIMax = 1.0; -> = {0.0}; -float sfxfogcolor_g_in -< - string UIName = "SweetFX Defog Color Green Interior Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; - float UIMax = 1.0; -> = {0.0}; -float sfxfogcolor_b_in -< - string UIName = "SweetFX Defog Color Blue Interior Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; - float UIMax = 1.0; -> = {1.0}; -float sfxfogcolor_r_id -< - string UIName = "SweetFX Defog Color Red Interior Day"; - string UIWidget = "Spinner"; - float UIMin = 0.0; - float UIMax = 1.0; -> = {0.0}; -float sfxfogcolor_g_id -< - string UIName = "SweetFX Defog Color Green Interior Day"; - string UIWidget = "Spinner"; - float UIMin = 0.0; - float UIMax = 1.0; -> = {0.0}; -float sfxfogcolor_b_id -< - string UIName = "SweetFX Defog Color Blue Interior Day"; - string UIWidget = "Spinner"; - float UIMin = 0.0; - float UIMax = 1.0; -> = {1.0}; /* Color grading */ string str_grade = "Color Grading Suite"; bool gradeenable1 @@ -1035,20 +907,6 @@ int clut_id int UIMax = 63; > = {1}; #endif -/* not using ENB's own variables, sorry */ -string str_enbpal = "ENB Palette"; -bool palenable -< - string UIName = "Enable ENB Palette"; - string UIWidget = "Checkbox"; -> = {false}; -float palblend -< - string UIName = "Palette Blend"; - string UIWidget = "Spinner"; - float UIMin = 0.0; - float UIMax = 1.0; -> = {1.0}; /* technicolor shader */ string str_tech = "Technicolor"; bool techenable diff --git a/enbseries/menbfrost.png b/enbseries/menbfrost.png index 9cf9f2b..cb31b6a 100644 Binary files a/enbseries/menbfrost.png and b/enbseries/menbfrost.png differ diff --git a/enbseries/menbfrostbump.png b/enbseries/menbfrostbump.png deleted file mode 100644 index 7ee8022..0000000 Binary files a/enbseries/menbfrostbump.png and /dev/null differ diff --git a/enbseries/menbglobaldefs.fx b/enbseries/menbglobaldefs.fx index 191e3b0..b1cb1cd 100644 --- a/enbseries/menbglobaldefs.fx +++ b/enbseries/menbglobaldefs.fx @@ -6,8 +6,6 @@ */ /* do not touch this! */ #define E_SHADER_3_0 -/* are we running on fallout 3 / new vegas or on skyrim? */ -//#define FALLOUT /* time of day and interior interpolation */ #define tod_ind(x) lerp(lerp(x##_n,x##_d,ENightDayFactor),\ lerp(x##_in,x##_id,ENightDayFactor),EInteriorFactor) diff --git a/enbseries/menbprepassfilters.fx b/enbseries/menbprepassfilters.fx index f293828..0a27dbc 100644 --- a/enbseries/menbprepassfilters.fx +++ b/enbseries/menbprepassfilters.fx @@ -228,20 +228,6 @@ float4 PS_EdgePlusSSAOPrepass( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR res.a = saturate(1.0-(uocc*ssaoblend)); return res; } -/* - Underwater distortion, which currently has no real use due to Boris being - lazy. fWaterLevel doesn't yet provide any usable values. -*/ -float2 UnderwaterDistort( float2 coord ) -{ - if ( !wateralways ) return coord; - float2 ofs = float2(0.0,0.0); - float siny = sin(pi*2.0*(coord.y*uwm1+Timer.x*uwf1*100.0))*uws1; - ofs.y = siny+sin(pi*2.0*(coord.x*uwm2+Timer.x*uwf2*100.0))*uws2; - ofs.x = siny+sin(pi*2.0*(coord.x*uwm3+Timer.x*uwf3*100.0))*uws3; - ofs -= (coord-0.5)*2.0*uwz; - return coord+ofs*0.01; -} /* Distant hot air refraction. Not very realistic, but does the job. */ float2 DistantHeat( float2 coord ) { @@ -259,10 +245,7 @@ float2 DistantHeat( float2 coord ) ofs = (ofs-0.5)*2.0; ofs *= pow(length(ofs),heatpow); if ( !heatalways ) ofs *= max(tod_ind(heatfactor),0.0) -#ifndef FALLOUT - *max(0.0,warmfactor-coldfactor) -#endif - ; + *max(0.0,warmfactor-coldfactor); odep = tex2D(SamplerDepth,coord+ofs*heatstrength*distfade*0.01).x; float odistfade = clamp(pow(max(0,odep),heatfadepow)*heatfademul +heatfadebump,0.0,1.0); @@ -277,7 +260,6 @@ float4 PS_Distortion( 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 ofs = coord; - if ( waterenable ) ofs = UnderwaterDistort(ofs); if ( heatenable ) ofs = DistantHeat(ofs); ofs -= coord; float4 res; @@ -352,386 +334,6 @@ float4 PS_SSAOBlurV( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR res *= res.a; return res; } -/* Focus */ -float4 PS_ReadFocus( VS_OUTPUT_POST IN ) : COLOR -{ - if ( dofdisable ) return 0.0; - if ( focuscircle < 0 ) return focusmanualvalue*0.001; - float focusmax = tod_ind(focusmax); - float2 fcenter = float2(focuscenter_x*0.01,focuscenter_y*0.01); - float cfocus = min(tex2D(SamplerDepth,fcenter).x,focusmax*0.001); - if ( focuscircle == 0 ) return cfocus; - if ( focuscircle == 2 ) - { - int i, j; - float mfocus = 0.0; - float2 px; - [unroll] for( j=0; j<8; j++ ) [unroll] for( i=0; i<8; i++ ) - { - px = float2((i+0.5)/8.0,(j+0.5)/8.0); - mfocus += min(tex2D(SamplerDepth,px).x,focusmax*0.001); - } - return mfocus/64.0; - } - /* using polygons inscribed into a circle, in this case a triangle */ - float focusradius = tod_ind(focusradius); - float focusmix = tod_ind(focusmix); - float cstep = (1.0/3.0); - float mfocus; - float2 coord; - float2 bof = float2(1.0,1.0/ScreenSize.w)*focusradius*0.01; - float fan = focuscircleangle*2.0*pi; - coord.x = fcenter.x+sin(fan)*bof.x; - coord.y = fcenter.y+cos(fan)*bof.y; - mfocus = cstep*min(tex2D(SamplerDepth,coord).x,focusmax*0.001); - coord.x = fcenter.x+sin(fan+2.0*pi*cstep)*bof.x; - coord.y = fcenter.y+cos(fan+2.0*pi*cstep)*bof.y; - mfocus += cstep*min(tex2D(SamplerDepth,coord).x,focusmax*0.001); - coord.x = fcenter.x+sin(fan+4.0*pi*cstep)*bof.x; - coord.y = fcenter.y+cos(fan+4.0*pi*cstep)*bof.y; - mfocus += cstep*min(tex2D(SamplerDepth,coord).x,focusmax*0.001); - cfocus = (1.0-focusmix)*cfocus+focusmix*mfocus; - return cfocus; -} -float4 PS_WriteFocus( VS_OUTPUT_POST IN ) : COLOR -{ - if ( dofdisable ) return 0.0; - return max(lerp(tex2D(SamplerPrev,0.5).x,tex2D(SamplerCurr,0.5).x, - saturate(FadeFactor)),0.0); -} -/* Depth of Field */ -float4 PS_DoFPrepass( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR -{ - float2 coord = IN.txcoord.xy; - if ( dofdisable ) return tex2D(SamplerColor,coord); - float dofpow = tod_ind(dofpow); - float dofmult = tod_ind(dofmult); - float dofbump = tod_ind(dofbump); - float doffixedfocuspow = tod_ind(doffixedfocuspow); - float doffixedfocusmult = tod_ind(doffixedfocusmult); - float doffixedfocusbump = tod_ind(doffixedfocusbump); - float doffixedfocusblend = tod_ind(doffixedunfocusblend); - float doffixedunfocuspow = tod_ind(doffixedunfocuspow); - 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 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; - /* - Change power of dof based on field of view. Works only in Skyrim. - The FieldOfView variable seems to hold bogus values in Fallout - completely unrelated to actual FOV (yes, I checked if it's in - radians, and no, it isn't). The value appears to be 1.134452. Who - could I blame for this mess? Boris? Bethesda? Hell if I know. - */ -#ifndef FALLOUT - if ( dofrelfov ) - { - float relfovfactor = tod_ind(relfovfactor); - float relfov = (FieldOfView-fovdefault)/fovdefault; - dofpow = max(0,dofpow+relfov*relfovfactor); - } -#endif - float dfc = abs(dep-foc); - dfc = clamp(pow(dfc,dofpow)*dofmult+dofbump,0.0,1.0); - if ( doffixedonly ) dfc *= 0; - dfc += lerp(0.0,dfu,doffixedunfocusblend); -#ifndef FALLOUT - if ( doffogenable ) dfc += fogfactor*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, - out float4 deps, out float4 dfcs ) -{ - 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; - deps.r = tex2D(SamplerDepth,coord+gcircle(ang)*bsz*dofpcha*0.1).x; - dfcs.r = tex2D(SamplerColor,coord+gcircle(ang)*bsz*dofpcha*0.1).a; - ang += cstep; - res.g = tex2D(SamplerColor,coord+gcircle(ang)*bsz*dofpcha*0.1).g; - deps.g = tex2D(SamplerDepth,coord+gcircle(ang)*bsz*dofpcha*0.1).x; - dfcs.g = tex2D(SamplerColor,coord+gcircle(ang)*bsz*dofpcha*0.1).a; - ang += cstep; - res.b = tex2D(SamplerColor,coord+gcircle(ang)*bsz*dofpcha*0.1).b; - deps.b = tex2D(SamplerDepth,coord+gcircle(ang)*bsz*dofpcha*0.1).x; - dfcs.b = tex2D(SamplerColor,coord+gcircle(ang)*bsz*dofpcha*0.1).a; - 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; - deps.a = tex2D(SamplerDepth,coord).x; - dfcs.a = res.a; - return res; -} -/* gather blur pass */ -float4 PS_DoFGather( 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; - float2 bresl; - if ( (fixedx > 0) && (fixedy > 0) ) bresl = float2(fixedx,fixedy); - else bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w); - float2 bof = 1.0/bresl; - /* - Skip blurring areas that are perfectly in focus. The performance - gain is negligible in most cases, though. - */ - if ( dfc <= dofminblur ) return tex2D(SamplerColor,coord); - float4 res = float4(0,0,0,0); - float dep = tex2D(SamplerDepth,coord).x; - float2 bsz = bof*dofpradius*dfc; - float4 sc, ds, sd, sw, tw = float4(0,0,0,0); - [unroll] for ( int i=0; i<32; i++ ) - { - sc = dofsample(coord+poisson32[i]*bsz,bsz,dfc,dofhilite,ds,sd); - sw.r = (ds.r>dep)?1.0:sd.r; - sw.g = (ds.g>dep)?1.0:sd.g; - sw.b = (ds.b>dep)?1.0:sd.b; - sw.a = (ds.a>dep)?1.0:sd.a; - tw += sw; - res += sc*sw; - } - res /= tw; - res.a = dfc; - return res; -} -/* "bokeh" blur pass */ -float4 PS_DoFBorkeh( 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; - float2 bresl; - 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); - res.a = 0.0; - /* - Skip blurring areas that are perfectly in focus. The performance - gain is negligible in most cases, though. - */ - if ( dfc <= dofminblur ) return res; - float dep = tex2D(SamplerDepth,coord).x; - float2 sf = bof+(tex2D(SamplerNoise3,coord*(bresl/256.0)).xy*2.0-1.0) - *dofbnoise*0.001; - float2 sr = sf*dofbradius*dfc; - int rsamples; - float bstep, bw; - float4 sc, ds, sd, sw, tw = float4(1,1,1,1); - float2 rcoord; - #define dofbrings 7 - #define dofbsamples 3 - [unroll] for ( int i=1; i<=dofbrings; i++ ) - { - rsamples = i*dofbsamples; - [unroll] for ( int j=0; jdep)?1.0:sd.r; - sw.g = (ds.g>dep)?1.0:sd.g; - sw.b = (ds.b>dep)?1.0:sd.b; - sw.a = (ds.a>dep)?1.0:sd.a; - res += sc*sw*bw; - tw += sw*bw; - } - } - res /= tw; - res.a = dfc; - return res; -} -float4 PS_DoFPostBlur( 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; - float2 bresl; - if ( (fixedx > 0) && (fixedy > 0) ) bresl = float2(fixedx,fixedy); - else bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w); - float2 bof = (1.0/bresl)*dofpbradius; - 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) - }; - 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 ) -{ - float2 bresl; - if ( (fixedx > 0) && (fixedy > 0) ) bresl = float2(fixedx,fixedy); - else bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w); - float2 nc = coord*(bresl/FROSTSIZE)*frostsize; - float2 ofs = tex2D(SamplerFrostBump,nc).xy; - ofs = (ofs-0.5)*2.0; - ofs *= pow(length(ofs),frostpow)*froststrength; - if ( !frostalways ) ofs *= max(0.0,tod_ind(frostfactor)) -#ifndef FALLOUT - *max(0.0,coldfactor-warmfactor) -#endif - ; - float dist = distance(coord,float2(0.5,0.5))*2.0; - ofs *= clamp(pow(dist,frostrpow)*frostrmult+frostrbump,0.0,1.0); - return coord+ofs; -} -/* screen frost overlay */ -float4 PS_FrostPass( VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR -{ - float2 coord = IN.txcoord.xy; - float2 bresl; - if ( (fixedx > 0) && (fixedy > 0) ) bresl = float2(fixedx,fixedy); - else bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w); - float4 res; - 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(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; - if ( !frostalways ) dist *= max(0.0,tod_ind(frostfactor)) -#ifndef FALLOUT - *max(0.0,coldfactor-warmfactor) -#endif - ; - res.rgb *= 1.0+bmp*dist; - } - else res = tex2D(SamplerColor,coord); - if ( !focusdisplay || (focuscircle < 0) ) return res; - if ( focuscircle == 2 ) - { - int i, j; - float2 px; - [unroll] for( j=0; j<8; j++ ) [unroll] for( i=0; i<8; i++ ) - { - px = float2((i+0.5)/8.0,(j+0.5)/8.0); - if ( distance(coord,px) < 0.005 ) - res.rgb = float3(1,0,0); - } - return res; - } - float2 fcenter = float2(focuscenter_x*0.01,focuscenter_y*0.01); - if ( distance(coord,fcenter) < 0.005 ) res.rgb = float3(1,0,0); - if ( focuscircle == 0 ) return res; - float cstep = (1.0/3.0); - float2 tcoord; - float focusradius = tod_ind(focusradius); - float2 bof = float2(1.0,1.0/ScreenSize.w)*focusradius*0.01; - float fan = focuscircleangle*2.0*pi; - tcoord.x = fcenter.x+sin(fan)*bof.x; - tcoord.y = fcenter.y+cos(fan)*bof.y; - if ( distance(coord,tcoord) < 0.005 ) res.rgb = float3(1,0,0); - tcoord.x = fcenter.x+sin(fan+2.0*pi*cstep)*bof.x; - tcoord.y = fcenter.y+cos(fan+2.0*pi*cstep)*bof.y; - if ( distance(coord,tcoord) < 0.005 ) res.rgb = float3(1,0,0); - tcoord.x = fcenter.x+sin(fan+4.0*pi*cstep)*bof.x; - tcoord.y = fcenter.y+cos(fan+4.0*pi*cstep)*bof.y; - if ( distance(coord,tcoord) < 0.005 ) res.rgb = float3(1,0,0); - return res; -} -technique ReadFocus -{ - pass p0 - { - VertexShader = compile vs_3_0 VS_Pass(); - PixelShader = compile ps_3_0 PS_ReadFocus(); - ZENABLE = FALSE; - CullMode = NONE; - ALPHATESTENABLE = FALSE; - SEPARATEALPHABLENDENABLE = FALSE; - AlphaBlendEnable = FALSE; - FogEnable = FALSE; - SRGBWRITEENABLE = FALSE; - } -} -technique WriteFocus -{ - pass p0 - { - VertexShader = compile vs_3_0 VS_Pass(); - PixelShader = compile ps_3_0 PS_WriteFocus(); - ZENABLE = FALSE; - CullMode = NONE; - ALPHATESTENABLE = FALSE; - SEPARATEALPHABLENDENABLE = FALSE; - AlphaBlendEnable = FALSE; - FogEnable = FALSE; - SRGBWRITEENABLE = FALSE; - } -} technique PostProcess { pass p0 @@ -800,208 +402,3 @@ technique PostProcess4 SRGBWRITEENABLE = FALSE; } } -technique PostProcess5 -{ - 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 PostProcess6 -{ - 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 PostProcess7 -{ - pass p0 - { - VertexShader = compile vs_3_0 VS_Pass(); - PixelShader = compile ps_3_0 PS_DoFPostBlur(); - DitherEnable = FALSE; - ZEnable = FALSE; - CullMode = NONE; - ALPHATESTENABLE = FALSE; - SEPARATEALPHABLENDENABLE = FALSE; - AlphaBlendEnable = FALSE; - StencilEnable = FALSE; - FogEnable = FALSE; - SRGBWRITEENABLE = FALSE; - } -} -technique PostProcess8 -{ - 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; - } -} - -technique PostProcessB -{ - 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 PostProcessB2 -{ - 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 PostProcessB3 -{ - 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 PostProcessB4 -{ - 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 PostProcessB5 -{ - 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 PostProcessB6 -{ - pass p0 - { - VertexShader = compile vs_3_0 VS_Pass(); - PixelShader = compile ps_3_0 PS_DoFBorkeh(); - DitherEnable = FALSE; - ZEnable = FALSE; - CullMode = NONE; - ALPHATESTENABLE = FALSE; - SEPARATEALPHABLENDENABLE = FALSE; - AlphaBlendEnable = FALSE; - StencilEnable = FALSE; - FogEnable = FALSE; - SRGBWRITEENABLE = FALSE; - } -} -technique PostProcessB7 -{ - pass p0 - { - VertexShader = compile vs_3_0 VS_Pass(); - PixelShader = compile ps_3_0 PS_DoFPostBlur(); - DitherEnable = FALSE; - ZEnable = FALSE; - CullMode = NONE; - ALPHATESTENABLE = FALSE; - SEPARATEALPHABLENDENABLE = FALSE; - AlphaBlendEnable = FALSE; - StencilEnable = FALSE; - FogEnable = FALSE; - SRGBWRITEENABLE = FALSE; - } -} -technique PostProcessB8 -{ - 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 10c85b4..15c3866 100644 --- a/enbseries/menbprepassinternals.fx +++ b/enbseries/menbprepassinternals.fx @@ -45,33 +45,11 @@ static const float3 ssao_samples[16] = float3( 0.0072,-0.3534, 0.4035),float3(-0.0024,-0.2385, 0.6260), float3(-0.1940, 0.5722,-0.5602),float3(-0.0910,-0.7548,-0.6497) }; -/* For high quality DOF */ -static const float2 poisson32[32] = -{ - float2( 0.7284430,-0.1927130),float2( 0.4051600,-0.2312710), - float2( 0.9535280, 0.0669683),float2( 0.6544140,-0.4439470), - float2( 0.6029910, 0.1058970),float2( 0.2637500,-0.7163810), - float2( 0.9105380,-0.3889810),float2( 0.5942730,-0.7400740), - float2( 0.8215680, 0.3162520),float2( 0.3577550, 0.4884250), - float2( 0.6935990, 0.7070140),float2( 0.0470570, 0.1961800), - float2(-0.0977021, 0.6241300),float2( 0.2110300, 0.8778350), - float2(-0.3743440, 0.2494580),float2( 0.0144776,-0.0766484), - float2(-0.3377660,-0.1255100),float2( 0.3136420, 0.1077710), - float2(-0.5204340, 0.8369860),float2(-0.1182680, 0.9801750), - float2(-0.6969480,-0.3869330),float2(-0.6156080, 0.0307209), - float2(-0.3806790,-0.6055360),float2(-0.1909570,-0.3861330), - float2(-0.2449080,-0.8655030),float2( 0.0822108,-0.4975580), - float2(-0.5649250, 0.5756740),float2(-0.8741830,-0.1685750), - float2( 0.0761715,-0.9631760),float2(-0.9218270, 0.2121210), - float2(-0.6378530, 0.3053550),float2(-0.8425180, 0.4753000) -}; /* standard stuff */ float4 ScreenSize; float ENightDayFactor; float EInteriorFactor; -float FadeFactor; float4 Timer; -float FieldOfView; float4 WeatherAndTime; /* this still doesn't do anything */ extern float fWaterLevel; @@ -90,25 +68,6 @@ texture2D texHeat string ResourceName = "menbheat.png"; #endif >; -texture2D texFrost -< -#ifdef FROST_DDS - string ResourceName = "menbfrost.dds"; -#else - string ResourceName = "menbfrost.png"; -#endif ->; -texture2D texFrostBump -< -#ifdef FROSTBUMP_DDS - string ResourceName = "menbfrostbump.dds"; -#else - string ResourceName = "menbfrostbump.png"; -#endif ->; -texture2D texFocus; -texture2D texCurr; -texture2D texPrev; sampler2D SamplerColor = sampler_state { Texture = ; @@ -157,66 +116,6 @@ sampler2D SamplerHeat = sampler_state MaxMipLevel = 0; MipMapLodBias = 0; }; -sampler2D SamplerFrost = sampler_state -{ - Texture = ; - MinFilter = LINEAR; - MagFilter = LINEAR; - MipFilter = NONE; - AddressU = Wrap; - AddressV = Wrap; - SRGBTexture = FALSE; - MaxMipLevel = 0; - MipMapLodBias = 0; -}; -sampler2D SamplerFrostBump = sampler_state -{ - Texture = ; - MinFilter = LINEAR; - MagFilter = LINEAR; - MipFilter = NONE; - AddressU = Wrap; - AddressV = Wrap; - SRGBTexture = FALSE; - MaxMipLevel = 0; - MipMapLodBias = 0; -}; -sampler2D SamplerFocus = sampler_state -{ - Texture = ; - MinFilter = LINEAR; - MagFilter = LINEAR; - MipFilter = NONE; - AddressU = Clamp; - AddressV = Clamp; - SRGBTexture = FALSE; - MaxMipLevel = 0; - MipMapLodBias = 0; -}; -sampler2D SamplerCurr = sampler_state -{ - Texture = ; - MinFilter = LINEAR; - MagFilter = LINEAR; - MipFilter = NONE; - AddressU = Clamp; - AddressV = Clamp; - SRGBTexture = FALSE; - MaxMipLevel = 0; - MipMapLodBias = 0; -}; -sampler2D SamplerPrev = sampler_state -{ - Texture = ; - MinFilter = LINEAR; - MagFilter = LINEAR; - MipFilter = NONE; - AddressU = Clamp; - AddressV = Clamp; - SRGBTexture = FALSE; - MaxMipLevel = 0; - MipMapLodBias = 0; -}; /* whatever */ struct VS_OUTPUT_POST { diff --git a/enbseries/menbprepasssettings.fx b/enbseries/menbprepasssettings.fx index 3f36bc1..2998f8f 100644 --- a/enbseries/menbprepasssettings.fx +++ b/enbseries/menbprepasssettings.fx @@ -37,82 +37,12 @@ float zFar string UIWidget = "Spinner"; float UIMin = 0.0; > = {3098.0}; -string str_dist = "Distortion Filters"; +string str_dist = "Heat Distortion"; float distcha < string UIName = "Distortion Chromatic Aberration"; string UIWidget = "Spinner"; > = {10.0}; -bool waterenable -< - string UIName = "Enable Underwater"; - string UIWidget = "Checkbox"; -> = {false}; -float uwm1 -< - string UIName = "Underwater Frequency 1"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1.4}; -float uwm2 -< - string UIName = "Underwater Frequency 2"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1.6}; -float uwm3 -< - string UIName = "Underwater Frequency 3"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1.4}; -float uwf1 -< - string UIName = "Underwater Speed 1"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {10.0}; -float uwf2 -< - string UIName = "Underwater Speed 2"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {8.0}; -float uwf3 -< - string UIName = "Underwater Speed 3"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {16.0}; -float uws1 -< - string UIName = "Underwater Amplitude 1"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {0.3}; -float uws2 -< - string UIName = "Underwater Amplitude 2"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {0.5}; -float uws3 -< - string UIName = "Underwater Amplitude 3"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {0.8}; -float uwz -< - string UIName = "Underwater Zoom"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1.5}; -bool wateralways -< - string UIName = "Always Underwater"; - string UIWidget = "Checkbox"; -> = {false}; bool heatenable < string UIName = "Enable Hot Air Refraction"; @@ -184,736 +114,6 @@ bool heatalways string UIName = "Heat Always Enable"; string UIWidget = "Checkbox"; > = {false}; -bool frostenable -< - string UIName = "Enable Screen Frost"; - string UIWidget = "Checkbox"; -> = {false}; -float frostpow -< - string UIName = "Frost Contrast"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1.0}; -float froststrength -< - string UIName = "Frost Strength"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1.0}; -float frostrpow -< - string UIName = "Frost Radial Contrast"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1.0}; -float frostrmult -< - string UIName = "Frost Radial Intensity"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1.0}; -float frostrbump -< - string UIName = "Frost Radial Offset"; - string UIWidget = "Spinner"; -> = {0.0}; -float frostblend -< - string UIName = "Frost Texture Blend"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1.0}; -float frostbpow -< - string UIName = "Frost Texture Blend Contrast"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1.0}; -float frostsize -< - string UIName = "Frost Texture Size"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1.0}; -float frostfactor_n -< - string UIName = "Frost Factor Night"; - string UIWidget = "Spinner"; -> = {1.0}; -float frostfactor_d -< - string UIName = "Frost Factor Day"; - string UIWidget = "Spinner"; -> = {1.0}; -float frostfactor_in -< - string UIName = "Frost Factor Interior Night"; - string UIWidget = "Spinner"; -> = {1.0}; -float frostfactor_id -< - string UIName = "Frost Factor Interior Day"; - string UIWidget = "Spinner"; -> = {1.0}; -bool frostalways -< - string UIName = "Frost Always Enable"; - string UIWidget = "Checkbox"; -> = {false}; -string str_focus = "Focusing Parameters"; -/* - focus modes: - -1 : manual - 0 : center spot - 1 : center + triangle - 2 : 8x8 grid average - TODO - 3 : 8x8 grid average of 8 closest points - 4 : 8x8 grid average of 8 farthest points -*/ -int focuscircle -< - string UIName = "Focus Mode"; - string UIWidget = "Checkbox"; - int UIMin = -1; - int UIMax = 2; -> = {1}; -bool focusdisplay -< - string UIName = "Display Focus Points"; - string UIWidget = "Checkbox"; -> = {false}; -float focusmanualvalue -< - string UIName = "Manual Focus Depth"; - string UIWidget = "Checkbox"; - float UIMin = 0.0; - float UIMax = 1000.0; -> = {500.0}; -/* center point of focus */ -float focuscenter_x -< - string UIName = "Focus Point Center X"; - string UIWidget = "Spinner"; - float UIMin = 0.0; - float UIMax = 100.0; -> = {50.0}; -float focuscenter_y -< - string UIName = "Focus Point Center Y"; - string UIWidget = "Spinner"; - float UIMin = 0.0; - float UIMax = 100.0; -> = {50.0}; -float focuscircleangle -< - string UIName = "Focus Triangle Angle"; - string UIWidget = "Spinner"; - float UIMin = 0.0; - float UIMax = 1.0; -> = {0.0}; -/* radius of the focus point triangle */ -float focusradius_n -< - string UIName = "Focus Triangle Radius Night"; - string UIWidget = "Spinner"; -> = {20.0}; -float focusradius_d -< - string UIName = "Focus Triangle Radius Day"; - string UIWidget = "Spinner"; -> = {20.0}; -float focusradius_in -< - string UIName = "Focus Triangle Radius Interior Night"; - string UIWidget = "Spinner"; -> = {20.0}; -float focusradius_id -< - string UIName = "Focus Triangle Radius Interior Day"; - string UIWidget = "Spinner"; -> = {20.0}; -/* mix factor with sample at screen center */ -float focusmix_n -< - string UIName = "Focus Triangle Blending Night"; - string UIWidget = "Spinner"; -> = {0.5}; -float focusmix_d -< - string UIName = "Focus Triangle Blending Day"; - string UIWidget = "Spinner"; -> = {0.5}; -float focusmix_in -< - string UIName = "Focus Triangle Blending Interior Night"; - string UIWidget = "Spinner"; -> = {0.5}; -float focusmix_id -< - string UIName = "Focus Triangle Blending Interior Day"; - string UIWidget = "Spinner"; -> = {0.5}; -/* maximum focus depth */ -float focusmax_n -< - string UIName = "Focus Maximum Depth Night"; - string UIWidget = "Spinner"; -> = {1000.0}; -float focusmax_d -< - string UIName = "Focus Maximum Depth Day"; - string UIWidget = "Spinner"; -> = {1000.0}; -float focusmax_in -< - string UIName = "Focus Maximum Depth Interior Night"; - string UIWidget = "Spinner"; -> = {1000.0}; -float focusmax_id -< - string UIName = "Focus Maximum Depth Interior Day"; - string UIWidget = "Spinner"; -> = {1000.0}; -/* dof filter */ -string str_dof = "Depth Of Field"; -/* dof multiplier (makes unfocused depths more blurry) */ -float dofmult_n -< - string UIName = "DOF Intensity Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {500.0}; -float dofmult_d -< - string UIName = "DOF Intensity Day"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {500.0}; -float dofmult_in -< - string UIName = "DOF Intensity Interior Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {500.0}; -float dofmult_id -< - string UIName = "DOF Intensity Interior Day"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {500.0}; -/* dof power (the higher it is, the wider the focused area gets) */ -float dofpow_n -< - string UIName = "DOF Contrast Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {4.0}; -float dofpow_d -< - string UIName = "DOF Contrast Day"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {4.0}; -float dofpow_in -< - string UIName = "DOF Contrast Interior Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {4.0}; -float dofpow_id -< - string UIName = "DOF Contrast Interior Day"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {4.0}; -/* dof bump (negative shift increases the area in complete focus) */ -float dofbump_n -< - string UIName = "DOF Shift Night"; - string UIWidget = "Spinner"; -> = {0.0}; -float dofbump_d -< - string UIName = "DOF Shift Day"; - string UIWidget = "Spinner"; -> = {0.0}; -float dofbump_in -< - string UIName = "DOF Shift Interior Night"; - string UIWidget = "Spinner"; -> = {0.0}; -float dofbump_id -< - string UIName = "DOF Shift Interior Day"; - string UIWidget = "Spinner"; -> = {0.0}; -/* fixed focused depth factors */ -float doffixedfocusmult_n -< - string UIName = "DOF Fixed Focus Intensity Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1.0}; -float doffixedfocusmult_d -< - string UIName = "DOF Fixed Focus Intensity Day"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1.0}; -float doffixedfocusmult_in -< - string UIName = "DOF Fixed Focus Intensity Interior Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1.0}; -float doffixedfocusmult_id -< - string UIName = "DOF Fixed Focus Intensity Interior Day"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1.0}; -float doffixedfocuspow_n -< - string UIName = "DOF Fixed Focus Contrast Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1.0}; -float doffixedfocuspow_d -< - string UIName = "DOF Fixed Focus Contrast Day"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1.0}; -float doffixedfocuspow_in -< - string UIName = "DOF Fixed Focus Contrast Interior Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1.0}; -float doffixedfocuspow_id -< - string UIName = "DOF Fixed Focus Contrast Interior Day"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1.0}; -float doffixedfocusbump_n -< - string UIName = "DOF Fixed Focus Shift Night"; - string UIWidget = "Spinner"; -> = {0.0}; -float doffixedfocusbump_d -< - string UIName = "DOF Fixed Focus Shift Day"; - string UIWidget = "Spinner"; -> = {0.0}; -float doffixedfocusbump_in -< - string UIName = "DOF Fixed Focus Shift Interior Night"; - string UIWidget = "Spinner"; -> = {0.0}; -float doffixedfocusbump_id -< - string UIName = "DOF Fixed Focus Shift Interior Day"; - string UIWidget = "Spinner"; -> = {0.0}; -float doffixedfocusblend_n -< - string UIName = "DOF Fixed Focus Blend Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {0.0}; -float doffixedfocusblend_d -< - string UIName = "DOF Fixed Focus Blend Day"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {0.0}; -float doffixedfocusblend_in -< - string UIName = "DOF Fixed Focus Blend Interior Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {0.0}; -float doffixedfocusblend_id -< - string UIName = "DOF Fixed Focus Blend Interior Day"; - 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 -< - string UIName = "DOF Fixed Unfocus Intensity Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {2.0}; -float doffixedunfocusmult_d -< - string UIName = "DOF Fixed Unfocus Intensity Day"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {2.0}; -float doffixedunfocusmult_in -< - string UIName = "DOF Fixed Unfocus Intensity Interior Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {2.0}; -float doffixedunfocusmult_id -< - string UIName = "DOF Fixed Unfocus Intensity Interior Day"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {2.0}; -float doffixedunfocuspow_n -< - string UIName = "DOF Fixed Unfocus Contrast Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1000.0}; -float doffixedunfocuspow_d -< - string UIName = "DOF Fixed Unfocus Contrast Day"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1000.0}; -float doffixedunfocuspow_in -< - string UIName = "DOF Fixed Unfocus Contrast Interior Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1000.0}; -float doffixedunfocuspow_id -< - string UIName = "DOF Fixed Unfocus Contrast Interior Day"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1000.0}; -float doffixedunfocusbump_n -< - string UIName = "DOF Fixed Unfocus Shift Night"; - string UIWidget = "Spinner"; -> = {0.0}; -float doffixedunfocusbump_d -< - string UIName = "DOF Fixed Unfocus Shift Day"; - string UIWidget = "Spinner"; -> = {0.0}; -float doffixedunfocusbump_in -< - string UIName = "DOF Fixed Unfocus Shift Interior Night"; - string UIWidget = "Spinner"; -> = {0.0}; -float doffixedunfocusbump_id -< - string UIName = "DOF Fixed Unfocus Shift Interior Day"; - string UIWidget = "Spinner"; -> = {0.0}; -float doffixedunfocusblend_n -< - string UIName = "DOF Fixed Unfocus Blend Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {0.0}; -float doffixedunfocusblend_d -< - string UIName = "DOF Fixed Unfocus Blend Day"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {0.0}; -float doffixedunfocusblend_in -< - string UIName = "DOF Fixed Unfocus Blend Interior Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {0.0}; -float doffixedunfocusblend_id -< - string UIName = "DOF Fixed Unfocus Blend Interior Day"; - 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 -< - string UIName = "Enable DOF Fog"; - string UIWidget = "Checkbox"; -> = {true}; -float doffogmult_n -< - string UIName = "DOF Fog Intensity Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {2.0}; -float doffogmult_d -< - string UIName = "DOF Fog Intensity Day"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {2.0}; -float doffogmult_in -< - string UIName = "DOF Fog Intensity Interior Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {2.0}; -float doffogmult_id -< - string UIName = "DOF Fog Intensity Interior Day"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {2.0}; -float doffogpow_n -< - string UIName = "DOF Fog Contrast Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1000.0}; -float doffogpow_d -< - string UIName = "DOF Fog Contrast Day"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1000.0}; -float doffogpow_in -< - string UIName = "DOF Fog Contrast Interior Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1000.0}; -float doffogpow_id -< - string UIName = "DOF Fog Contrast Interior Day"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {1000.0}; -float doffogbump_n -< - string UIName = "DOF Fog Shift Night"; - string UIWidget = "Spinner"; -> = {0.0}; -float doffogbump_d -< - string UIName = "DOF Fog Shift Day"; - string UIWidget = "Spinner"; -> = {0.0}; -float doffogbump_in -< - string UIName = "DOF Fog Shift Interior Night"; - string UIWidget = "Spinner"; -> = {0.0}; -float doffogbump_id -< - string UIName = "DOF Fog Shift Interior Day"; - string UIWidget = "Spinner"; -> = {0.0}; -float doffogblend_n -< - string UIName = "DOF Fog Blend Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {0.0}; -float doffogblend_d -< - string UIName = "DOF Fog Blend Day"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {0.0}; -float doffogblend_in -< - string UIName = "DOF Fog Blend Interior Night"; - string UIWidget = "Spinner"; - float UIMin = 0.0; -> = {0.0}; -float doffogblend_id -< - string UIName = "DOF Fog Blend Interior Day"; - 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 -< - string UIName = "Disable DOF"; - string UIWidget = "Checkbox"; -> = {false}; -bool doffixedonly -< - string UIName = "Use Only Fixed DOF"; - string UIWidget = "Checkbox"; -> = {false}; -float dofpradius -< - 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 -< - string UIName = "DOF Relative to FOV"; - string UIWidget = "Checkbox"; -> = {true}; -float fovdefault -< - string UIName = "Default FOV"; - string UIWidget = "Spinner"; - float UIMin = 1.0; - float UIMax = 180.0; -> = {75.0}; -float relfovfactor_n -< - string UIName = "DOF Relative Factor Night"; - string UIWidget = "Spinner"; -> = {2.0}; -float relfovfactor_d -< - string UIName = "DOF Relative Factor Day"; - string UIWidget = "Spinner"; -> = {2.0}; -float relfovfactor_in -< - string UIName = "DOF Relative Factor Interior Night"; - string UIWidget = "Spinner"; -> = {2.0}; -float relfovfactor_id -< - string UIName = "DOF Relative Factor Interior Day"; - string UIWidget = "Spinner"; -> = {2.0}; -#endif -/* tilting */ -float doftiltxcenter -< - string UIName = "Focus Plane Horizontal Tilt Center"; - string UIWidget = "Spinner"; - float UIMin = 0.0; - float UIMax = 1.0; -> = {0.5}; -float doftiltycenter -< - string UIName = "Focus Plane Vertical Tilt Center"; - string UIWidget = "Spinner"; - float UIMin = 0.0; - float UIMax = 1.0; -> = {0.5}; -float doftiltx -< - string UIName = "Focus Plane Horizontal Tilt"; - string UIWidget = "Spinner"; -> = {0.0}; -float doftilty -< - string UIName = "Focus Plane Vertical Tilt"; - string UIWidget = "Spinner"; -> = {0.0}; -/* 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"; - string UIWidget = "Checkbox"; -> = {false}; -bool dfcdebug -< - string UIName = "Debug Focus"; - string UIWidget = "Checkbox"; -> = {false}; /* use "edge vision" filter */ string str_view = "Edgevision"; bool edgevenable @@ -1556,4 +756,4 @@ bool dcolorizeafterhsv < string UIName = "Colorize After HSV"; string UIWidget = "Checkbox"; -> = {true}; \ No newline at end of file +> = {true};