1
Fork 0

MariENB Skyrim 2.5.1

This commit is contained in:
Marisa the Magician 2019-04-07 17:44:54 +02:00
commit 42ae0bbd03
20 changed files with 1591 additions and 2033 deletions

View file

@ -23,6 +23,7 @@ EnableProceduralSun=true
EnableMist=true
EnableSkyLighting=false
EnableCloudShadows=false
EnablePrepass=true
[COLORCORRECTION]
UsePaletteTexture=true
UseProceduralCorrection=false

View file

@ -1 +1 @@
2.5.0-1 "Even Crazier about Weathers"
2.5.1sk "Alone In The Prepass"

View file

@ -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

View file

@ -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"

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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};

View file

@ -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; j<rsamples; j++ )
{
bstep = pi*2.0/(float)rsamples;
rcoord = gcircle(j*bstep)*i;
bw = lerp(1.0,(float)i/(float)dofbrings,dofbbias);
sc = dofsample(coord+rcoord*sr,sr*i,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;
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 <string UIName="Bokeh DOF";>
{
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;
}
}

View file

@ -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 = <texColor>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture = FALSE;
MaxMipLevel = 0;
MipMapLodBias = 0;
};
sampler2D SamplerDepth = sampler_state
{
Texture = <texDepth>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture = FALSE;
MaxMipLevel = 0;
MipMapLodBias = 0;
};
sampler2D SamplerNoise3 = sampler_state
{
Texture = <texNoise3>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Wrap;
AddressV = Wrap;
SRGBTexture = FALSE;
MaxMipLevel = 0;
MipMapLodBias = 0;
};
sampler2D SamplerFocus = sampler_state
{
Texture = <texFocus>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture = FALSE;
MaxMipLevel = 0;
MipMapLodBias = 0;
};
sampler2D SamplerCurr = sampler_state
{
Texture = <texCurr>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture = FALSE;
MaxMipLevel = 0;
MipMapLodBias = 0;
};
sampler2D SamplerPrev = sampler_state
{
Texture = <texPrev>;
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;
};

View file

@ -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};

View file

@ -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;

View file

@ -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 = <texs0>;
@ -274,6 +282,18 @@ sampler2D SamplerTonemap = sampler_state
MaxMipLevel = 0;
MipMapLodBias = 0;
};
sampler2D SamplerFrost = sampler_state
{
Texture = <texFrost>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Wrap;
AddressV = Wrap;
SRGBTexture = FALSE;
MaxMipLevel = 0;
MipMapLodBias = 0;
};
/* whatever */
struct VS_OUTPUT_POST
{

View file

@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 737 KiB

After

Width:  |  Height:  |  Size: 2.6 MiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 MiB

View file

@ -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)

View file

@ -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; j<rsamples; j++ )
{
bstep = pi*2.0/(float)rsamples;
rcoord = gcircle(j*bstep)*i;
bw = lerp(1.0,(float)i/(float)dofbrings,dofbbias);
sc = dofsample(coord+rcoord*sr,sr*i,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;
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 <string UIName="Bokeh DOF";>
{
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;
}
}

View file

@ -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 = <texColor>;
@ -157,66 +116,6 @@ sampler2D SamplerHeat = sampler_state
MaxMipLevel = 0;
MipMapLodBias = 0;
};
sampler2D SamplerFrost = sampler_state
{
Texture = <texFrost>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Wrap;
AddressV = Wrap;
SRGBTexture = FALSE;
MaxMipLevel = 0;
MipMapLodBias = 0;
};
sampler2D SamplerFrostBump = sampler_state
{
Texture = <texFrostBump>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Wrap;
AddressV = Wrap;
SRGBTexture = FALSE;
MaxMipLevel = 0;
MipMapLodBias = 0;
};
sampler2D SamplerFocus = sampler_state
{
Texture = <texFocus>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture = FALSE;
MaxMipLevel = 0;
MipMapLodBias = 0;
};
sampler2D SamplerCurr = sampler_state
{
Texture = <texCurr>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture = FALSE;
MaxMipLevel = 0;
MipMapLodBias = 0;
};
sampler2D SamplerPrev = sampler_state
{
Texture = <texPrev>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture = FALSE;
MaxMipLevel = 0;
MipMapLodBias = 0;
};
/* whatever */
struct VS_OUTPUT_POST
{

View file

@ -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};
> = {true};