MariENB Skyrim 2.5.1
This commit is contained in:
parent
58c308eead
commit
42ae0bbd03
20 changed files with 1591 additions and 2033 deletions
|
|
@ -23,6 +23,7 @@ EnableProceduralSun=true
|
||||||
EnableMist=true
|
EnableMist=true
|
||||||
EnableSkyLighting=false
|
EnableSkyLighting=false
|
||||||
EnableCloudShadows=false
|
EnableCloudShadows=false
|
||||||
|
EnablePrepass=true
|
||||||
[COLORCORRECTION]
|
[COLORCORRECTION]
|
||||||
UsePaletteTexture=true
|
UsePaletteTexture=true
|
||||||
UseProceduralCorrection=false
|
UseProceduralCorrection=false
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
2.5.0-1 "Even Crazier about Weathers"
|
2.5.1sk "Alone In The Prepass"
|
||||||
|
|
|
||||||
|
|
@ -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 Interior Day Blue=1.65
|
||||||
Anamorphic Bloom Blue Shift Intensity Night=0.46
|
Anamorphic Bloom Blue Shift Intensity Night=0.46
|
||||||
Anamorphic Bloom Blue Shift Intensity Day=0.41
|
Anamorphic Bloom Blue Shift Intensity Day=0.41
|
||||||
Anamorphic Bloom Blue Shift Interior Night=0.57
|
Anamorphic Bloom Blue Shift Intensity Interior Night=0.57
|
||||||
Anamorphic Bloom Blue Shift Interior Day=0.5
|
Anamorphic Bloom Blue Shift Intensity Interior Day=0.5
|
||||||
Anamorphic Bloom Contrast Night=1.33
|
Anamorphic Bloom Contrast Night=1.33
|
||||||
Anamorphic Bloom Contrast Day=1.35
|
Anamorphic Bloom Contrast Day=1.35
|
||||||
Anamorphic Bloom Contrast Interior Night=1.36
|
Anamorphic Bloom Contrast Interior Night=1.36
|
||||||
|
|
|
||||||
11
enbseries/enbdepthoffield.fx
Normal file
11
enbseries/enbdepthoffield.fx
Normal 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"
|
||||||
113
enbseries/enbdepthoffield.fx.ini
Normal file
113
enbseries/enbdepthoffield.fx.ini
Normal 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
|
||||||
|
|
@ -1,5 +1,22 @@
|
||||||
[ENBEFFECT.FX]
|
[ENBEFFECT.FX]
|
||||||
TECHNIQUE=0
|
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
|
Enable Grain=true
|
||||||
Grain Speed=15.0
|
Grain Speed=15.0
|
||||||
Grain Intensity=0.05
|
Grain Intensity=0.05
|
||||||
|
|
|
||||||
|
|
@ -6,18 +6,6 @@ Depth Cutoff=999998.0
|
||||||
Near Z=0.05
|
Near Z=0.05
|
||||||
Far Z=3098.0
|
Far Z=3098.0
|
||||||
Distortion Chromatic Aberration=14.79
|
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
|
Enable Hot Air Refraction=true
|
||||||
Heat Texture Size=11.640001
|
Heat Texture Size=11.640001
|
||||||
Heat Speed=0.15
|
Heat Speed=0.15
|
||||||
|
|
@ -26,117 +14,11 @@ Heat Fade Intensity=1.09
|
||||||
Heat Fade Offset=-0.78
|
Heat Fade Offset=-0.78
|
||||||
Heat Intensity=0.18
|
Heat Intensity=0.18
|
||||||
Heat Contrast=1.0
|
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
|
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
|
Enable Edgevision=false
|
||||||
Edgevision Fade Contrast Night=1.82
|
Edgevision Fade Contrast Night=1.82
|
||||||
Edgevision Fade Contrast Day=1.86
|
Edgevision Fade Contrast Day=1.86
|
||||||
|
|
@ -172,28 +54,7 @@ Debug SSAO=false
|
||||||
Sharpen Enable=true
|
Sharpen Enable=true
|
||||||
Sharpen Radius=0.8
|
Sharpen Radius=0.8
|
||||||
Sharpen Clamp=0.1
|
Sharpen Clamp=0.1
|
||||||
Sharpen Blending=6.0
|
Sharpen Blending=8.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
|
|
||||||
Depth Grading Center Depth=0.0
|
Depth Grading Center Depth=0.0
|
||||||
Depth Grading Contrast Night=129.800003
|
Depth Grading Contrast Night=129.800003
|
||||||
Depth Grading Contrast Day=144.529999
|
Depth Grading Contrast Day=144.529999
|
||||||
|
|
|
||||||
|
|
@ -334,13 +334,13 @@ float fsi_d
|
||||||
> = {1.0};
|
> = {1.0};
|
||||||
float fsi_in
|
float fsi_in
|
||||||
<
|
<
|
||||||
string UIName = "Anamorphic Bloom Blue Shift Interior Night";
|
string UIName = "Anamorphic Bloom Blue Shift Intensity Interior Night";
|
||||||
string UIWidget = "Spinner";
|
string UIWidget = "Spinner";
|
||||||
float UIMin = 0.0;
|
float UIMin = 0.0;
|
||||||
> = {1.0};
|
> = {1.0};
|
||||||
float fsi_id
|
float fsi_id
|
||||||
<
|
<
|
||||||
string UIName = "Anamorphic Bloom Blue Shift Interior Day";
|
string UIName = "Anamorphic Bloom Blue Shift Intensity Interior Day";
|
||||||
string UIWidget = "Spinner";
|
string UIWidget = "Spinner";
|
||||||
float UIMin = 0.0;
|
float UIMin = 0.0;
|
||||||
> = {1.0};
|
> = {1.0};
|
||||||
|
|
|
||||||
461
enbseries/menbdepthoffieldfilters.fx
Normal file
461
enbseries/menbdepthoffieldfilters.fx
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
129
enbseries/menbdepthoffieldinternals.fx
Normal file
129
enbseries/menbdepthoffieldinternals.fx
Normal 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;
|
||||||
|
};
|
||||||
670
enbseries/menbdepthoffieldsettings.fx
Normal file
670
enbseries/menbdepthoffieldsettings.fx
Normal 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};
|
||||||
|
|
@ -11,33 +11,6 @@ VS_OUTPUT_POST VS_Pass( VS_INPUT_POST IN )
|
||||||
OUT.txcoord0.xy = IN.txcoord0.xy;
|
OUT.txcoord0.xy = IN.txcoord0.xy;
|
||||||
return OUT;
|
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 _c1 : register(c1);
|
||||||
float4 _c2 : register(c2);
|
float4 _c2 : register(c2);
|
||||||
float4 _c3 : register(c3);
|
float4 _c3 : register(c3);
|
||||||
|
|
@ -63,7 +36,6 @@ float4 _c5 : register(c5);
|
||||||
z -> tint blue z -> fade blue
|
z -> tint blue z -> fade blue
|
||||||
w -> tint value w -> fade value
|
w -> tint value w -> fade value
|
||||||
*/
|
*/
|
||||||
#endif
|
|
||||||
/* helper functions */
|
/* helper functions */
|
||||||
/* photometric */
|
/* photometric */
|
||||||
#define luminance(x) dot(x,float3(0.2126,0.7152,0.0722))
|
#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);
|
float3 x = max(0.0,res-0.004);
|
||||||
return (x*(6.2*x+.5))/(x*(6.2*x+1.7)+0.06);
|
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 Tonemap( float3 res )
|
||||||
{
|
{
|
||||||
float3 tcol = pow(max(res,0.0),1.0/2.2);
|
float3 tcol = pow(max(res,0.0),1.0/2.2);
|
||||||
|
|
@ -184,8 +130,7 @@ float3 Tonemap( float3 res )
|
||||||
res *= tod_ind(tmapexposure);
|
res *= tod_ind(tmapexposure);
|
||||||
float tblend = tod_ind(tmapblend);
|
float tblend = tod_ind(tmapblend);
|
||||||
float3 mapped;
|
float3 mapped;
|
||||||
if ( tmapenable == 5 ) mapped = TonemapSFX(res);
|
if ( tmapenable == 4 ) mapped = TonemapHaarmPeterDuiker(res);
|
||||||
else if ( tmapenable == 4 ) mapped = TonemapHaarmPeterDuiker(res);
|
|
||||||
else if ( tmapenable == 3 ) mapped = TonemapHejlDawson(res);
|
else if ( tmapenable == 3 ) mapped = TonemapHejlDawson(res);
|
||||||
else if ( tmapenable == 2 ) mapped = TonemapUC2(res);
|
else if ( tmapenable == 2 ) mapped = TonemapUC2(res);
|
||||||
else if ( tmapenable == 1 ) mapped = TonemapReinhard(res);
|
else if ( tmapenable == 1 ) mapped = TonemapReinhard(res);
|
||||||
|
|
@ -247,12 +192,8 @@ float3 GradingGame( float3 res )
|
||||||
tcol = tintv*(tgray*_r4.rgb-tcol)+tcol;
|
tcol = tintv*(tgray*_r4.rgb-tcol)+tcol;
|
||||||
tcol = lerp(res,tcol,vtintblend);
|
tcol = lerp(res,tcol,vtintblend);
|
||||||
/* contrast(?) stuff */
|
/* contrast(?) stuff */
|
||||||
#ifdef FALLOUT
|
|
||||||
float oft = _r3.y;
|
|
||||||
#else
|
|
||||||
/* TODO figure the offset thingy for Skyrim someday */
|
/* TODO figure the offset thingy for Skyrim someday */
|
||||||
float oft = 0.0;
|
float oft = 0.0;
|
||||||
#endif
|
|
||||||
tcol = max(0,(tcol*_r3.w-oft)*_r3.z+oft);
|
tcol = max(0,(tcol*_r3.w-oft)*_r3.z+oft);
|
||||||
tcol = lerp(res,tcol,vconblend);
|
tcol = lerp(res,tcol,vconblend);
|
||||||
return tcol;
|
return tcol;
|
||||||
|
|
@ -448,23 +389,6 @@ float3 GradingLUT( float3 res )
|
||||||
float lutblend = tod_ind(lutblend);
|
float lutblend = tod_ind(lutblend);
|
||||||
return lerp(res,tcol,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 */
|
/* I think this Technicolor implementation is correct... maybe */
|
||||||
float3 Technicolor( float3 res )
|
float3 Technicolor( float3 res )
|
||||||
{
|
{
|
||||||
|
|
@ -539,13 +463,68 @@ float3 FilmGrain( float3 res, float2 coord )
|
||||||
}
|
}
|
||||||
return lerp(res,nt,ni*0.01);
|
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 */
|
/* MariENB shader */
|
||||||
float4 PS_Mari( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR
|
float4 PS_Mari( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR
|
||||||
{
|
{
|
||||||
float2 coord = IN.txcoord0.xy;
|
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);
|
res.rgb = pow(max(res.rgb,0.0),2.2);
|
||||||
float3 bcol = tex2D(_s3,coord).rgb*EBloomAmount;
|
|
||||||
if ( bloomdebug ) res.rgb *= 0;
|
if ( bloomdebug ) res.rgb *= 0;
|
||||||
res.rgb += bcol;
|
res.rgb += bcol;
|
||||||
if ( aenable ) res.rgb = Adaptation(res.rgb);
|
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 ( gradeenable3 ) res.rgb = GradingHSV(res.rgb);
|
||||||
}
|
}
|
||||||
if ( lutenable ) res.rgb = GradingLUT(res.rgb);
|
if ( lutenable ) res.rgb = GradingLUT(res.rgb);
|
||||||
if ( palenable ) res.rgb = GradingPal(res.rgb);
|
|
||||||
if ( techenable ) res.rgb = Technicolor(res.rgb);
|
if ( techenable ) res.rgb = Technicolor(res.rgb);
|
||||||
if ( !nbt && ne ) res.rgb = FilmGrain(res.rgb,coord);
|
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;
|
res.rgb = _r5.w*(_r5.rgb-res.rgb)+res.rgb;
|
||||||
#endif
|
|
||||||
if ( dodither ) res.rgb = Dither(res.rgb,coord);
|
if ( dodither ) res.rgb = Dither(res.rgb,coord);
|
||||||
res.rgb = max(0,res.rgb);
|
res.rgb = max(0,res.rgb);
|
||||||
res.a = 1.0;
|
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?
|
toggling "UseEffect" switches between each variation? Wat?
|
||||||
*/
|
*/
|
||||||
#ifndef ENB_FLIPTECHNIQUE
|
#ifndef ENB_FLIPTECHNIQUE
|
||||||
#ifdef FALLOUT
|
|
||||||
technique Shader_C1DAE3F7
|
|
||||||
#else
|
|
||||||
technique Shader_D6EC7DD1
|
technique Shader_D6EC7DD1
|
||||||
#endif
|
|
||||||
#else
|
#else
|
||||||
technique Shader_ORIGINALPOSTPROCESS
|
technique Shader_ORIGINALPOSTPROCESS
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -608,61 +578,15 @@ technique Shader_ORIGINALPOSTPROCESS
|
||||||
#ifndef ENB_FLIPTECHNIQUE
|
#ifndef ENB_FLIPTECHNIQUE
|
||||||
technique Shader_ORIGINALPOSTPROCESS
|
technique Shader_ORIGINALPOSTPROCESS
|
||||||
#else
|
#else
|
||||||
#ifdef FALLOUT
|
|
||||||
technique Shader_C1DAE3F7
|
|
||||||
#else
|
|
||||||
technique Shader_D6EC7DD1
|
technique Shader_D6EC7DD1
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
pass p0
|
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();
|
VertexShader = compile vs_3_0 VS_Pass();
|
||||||
#endif
|
|
||||||
/* >inline assembly */
|
/* >inline assembly */
|
||||||
PixelShader = asm
|
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
|
ps_3_0
|
||||||
def c6,0,0,0,0
|
def c6,0,0,0,0
|
||||||
def c7,0.212500006,0.715399981,0.0720999986,1
|
def c7,0.212500006,0.715399981,0.0720999986,1
|
||||||
|
|
@ -701,7 +625,6 @@ technique Shader_D6EC7DD1
|
||||||
mad r0,c3.z,r1,r0.y
|
mad r0,c3.z,r1,r0.y
|
||||||
add r1,-r0,c5
|
add r1,-r0,c5
|
||||||
mad oC0,c5.w,r1,r0
|
mad oC0,c5.w,r1,r0
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
|
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
|
||||||
ZEnable = FALSE;
|
ZEnable = FALSE;
|
||||||
|
|
|
||||||
|
|
@ -103,6 +103,14 @@ texture2D texTonemap
|
||||||
<
|
<
|
||||||
string ResourceName = "menbfilmlut.png";
|
string ResourceName = "menbfilmlut.png";
|
||||||
>;
|
>;
|
||||||
|
texture2D texFrost
|
||||||
|
<
|
||||||
|
#ifdef FROST_DDS
|
||||||
|
string ResourceName = "menbfrost.dds";
|
||||||
|
#else
|
||||||
|
string ResourceName = "menbfrost.png";
|
||||||
|
#endif
|
||||||
|
>;
|
||||||
sampler2D _s0 = sampler_state
|
sampler2D _s0 = sampler_state
|
||||||
{
|
{
|
||||||
Texture = <texs0>;
|
Texture = <texs0>;
|
||||||
|
|
@ -274,6 +282,18 @@ sampler2D SamplerTonemap = sampler_state
|
||||||
MaxMipLevel = 0;
|
MaxMipLevel = 0;
|
||||||
MipMapLodBias = 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 */
|
/* whatever */
|
||||||
struct VS_OUTPUT_POST
|
struct VS_OUTPUT_POST
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,103 @@
|
||||||
Part of MariENB, the personal ENB of Marisa.
|
Part of MariENB, the personal ENB of Marisa.
|
||||||
Released under the GNU GPLv3 (or later).
|
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 */
|
/* film grain */
|
||||||
string str_noise = "Film Grain";
|
string str_noise = "Film Grain";
|
||||||
bool ne
|
bool ne
|
||||||
|
|
@ -177,14 +274,13 @@ string str_tonemap = "Tone Mapping";
|
||||||
2 : Uncharted 2
|
2 : Uncharted 2
|
||||||
3 : Hejl Dawson
|
3 : Hejl Dawson
|
||||||
4 : Haarm-Peter Duiker
|
4 : Haarm-Peter Duiker
|
||||||
5 : SweetFX
|
|
||||||
*/
|
*/
|
||||||
int tmapenable
|
int tmapenable
|
||||||
<
|
<
|
||||||
string UIName = "Tonemapping Method";
|
string UIName = "Tonemapping Method";
|
||||||
string UIWidget = "Spinner";
|
string UIWidget = "Spinner";
|
||||||
int UIMin = -1;
|
int UIMin = -1;
|
||||||
int UIMax = 5;
|
int UIMax = 4;
|
||||||
> = {2};
|
> = {2};
|
||||||
float tmapexposure_n
|
float tmapexposure_n
|
||||||
<
|
<
|
||||||
|
|
@ -378,230 +474,6 @@ float unW_id
|
||||||
string UIName = "Uncharted2 Linear White Interior Day";
|
string UIName = "Uncharted2 Linear White Interior Day";
|
||||||
string UIWidget = "Spinner";
|
string UIWidget = "Spinner";
|
||||||
> = {10.0};
|
> = {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 */
|
/* Color grading */
|
||||||
string str_grade = "Color Grading Suite";
|
string str_grade = "Color Grading Suite";
|
||||||
bool gradeenable1
|
bool gradeenable1
|
||||||
|
|
@ -1035,20 +907,6 @@ int clut_id
|
||||||
int UIMax = 63;
|
int UIMax = 63;
|
||||||
> = {1};
|
> = {1};
|
||||||
#endif
|
#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 */
|
/* technicolor shader */
|
||||||
string str_tech = "Technicolor";
|
string str_tech = "Technicolor";
|
||||||
bool techenable
|
bool techenable
|
||||||
|
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 737 KiB After Width: | Height: | Size: 2.6 MiB |
Binary file not shown.
|
Before Width: | Height: | Size: 2.2 MiB |
|
|
@ -6,8 +6,6 @@
|
||||||
*/
|
*/
|
||||||
/* do not touch this! */
|
/* do not touch this! */
|
||||||
#define E_SHADER_3_0
|
#define E_SHADER_3_0
|
||||||
/* are we running on fallout 3 / new vegas or on skyrim? */
|
|
||||||
//#define FALLOUT
|
|
||||||
/* time of day and interior interpolation */
|
/* time of day and interior interpolation */
|
||||||
#define tod_ind(x) lerp(lerp(x##_n,x##_d,ENightDayFactor),\
|
#define tod_ind(x) lerp(lerp(x##_n,x##_d,ENightDayFactor),\
|
||||||
lerp(x##_in,x##_id,ENightDayFactor),EInteriorFactor)
|
lerp(x##_in,x##_id,ENightDayFactor),EInteriorFactor)
|
||||||
|
|
|
||||||
|
|
@ -228,20 +228,6 @@ float4 PS_EdgePlusSSAOPrepass( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR
|
||||||
res.a = saturate(1.0-(uocc*ssaoblend));
|
res.a = saturate(1.0-(uocc*ssaoblend));
|
||||||
return res;
|
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. */
|
/* Distant hot air refraction. Not very realistic, but does the job. */
|
||||||
float2 DistantHeat( float2 coord )
|
float2 DistantHeat( float2 coord )
|
||||||
{
|
{
|
||||||
|
|
@ -259,10 +245,7 @@ float2 DistantHeat( float2 coord )
|
||||||
ofs = (ofs-0.5)*2.0;
|
ofs = (ofs-0.5)*2.0;
|
||||||
ofs *= pow(length(ofs),heatpow);
|
ofs *= pow(length(ofs),heatpow);
|
||||||
if ( !heatalways ) ofs *= max(tod_ind(heatfactor),0.0)
|
if ( !heatalways ) ofs *= max(tod_ind(heatfactor),0.0)
|
||||||
#ifndef FALLOUT
|
*max(0.0,warmfactor-coldfactor);
|
||||||
*max(0.0,warmfactor-coldfactor)
|
|
||||||
#endif
|
|
||||||
;
|
|
||||||
odep = tex2D(SamplerDepth,coord+ofs*heatstrength*distfade*0.01).x;
|
odep = tex2D(SamplerDepth,coord+ofs*heatstrength*distfade*0.01).x;
|
||||||
float odistfade = clamp(pow(max(0,odep),heatfadepow)*heatfademul
|
float odistfade = clamp(pow(max(0,odep),heatfadepow)*heatfademul
|
||||||
+heatfadebump,0.0,1.0);
|
+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);
|
if ( (fixedx > 0) && (fixedy > 0) ) bresl = float2(fixedx,fixedy);
|
||||||
else bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
|
else bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
|
||||||
float2 ofs = coord;
|
float2 ofs = coord;
|
||||||
if ( waterenable ) ofs = UnderwaterDistort(ofs);
|
|
||||||
if ( heatenable ) ofs = DistantHeat(ofs);
|
if ( heatenable ) ofs = DistantHeat(ofs);
|
||||||
ofs -= coord;
|
ofs -= coord;
|
||||||
float4 res;
|
float4 res;
|
||||||
|
|
@ -352,386 +334,6 @@ float4 PS_SSAOBlurV( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR
|
||||||
res *= res.a;
|
res *= res.a;
|
||||||
return res;
|
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
|
technique PostProcess
|
||||||
{
|
{
|
||||||
pass p0
|
pass p0
|
||||||
|
|
@ -800,208 +402,3 @@ technique PostProcess4
|
||||||
SRGBWRITEENABLE = FALSE;
|
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -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.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)
|
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 */
|
/* standard stuff */
|
||||||
float4 ScreenSize;
|
float4 ScreenSize;
|
||||||
float ENightDayFactor;
|
float ENightDayFactor;
|
||||||
float EInteriorFactor;
|
float EInteriorFactor;
|
||||||
float FadeFactor;
|
|
||||||
float4 Timer;
|
float4 Timer;
|
||||||
float FieldOfView;
|
|
||||||
float4 WeatherAndTime;
|
float4 WeatherAndTime;
|
||||||
/* this still doesn't do anything */
|
/* this still doesn't do anything */
|
||||||
extern float fWaterLevel;
|
extern float fWaterLevel;
|
||||||
|
|
@ -90,25 +68,6 @@ texture2D texHeat
|
||||||
string ResourceName = "menbheat.png";
|
string ResourceName = "menbheat.png";
|
||||||
#endif
|
#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
|
sampler2D SamplerColor = sampler_state
|
||||||
{
|
{
|
||||||
Texture = <texColor>;
|
Texture = <texColor>;
|
||||||
|
|
@ -157,66 +116,6 @@ sampler2D SamplerHeat = sampler_state
|
||||||
MaxMipLevel = 0;
|
MaxMipLevel = 0;
|
||||||
MipMapLodBias = 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 */
|
/* whatever */
|
||||||
struct VS_OUTPUT_POST
|
struct VS_OUTPUT_POST
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -37,82 +37,12 @@ float zFar
|
||||||
string UIWidget = "Spinner";
|
string UIWidget = "Spinner";
|
||||||
float UIMin = 0.0;
|
float UIMin = 0.0;
|
||||||
> = {3098.0};
|
> = {3098.0};
|
||||||
string str_dist = "Distortion Filters";
|
string str_dist = "Heat Distortion";
|
||||||
float distcha
|
float distcha
|
||||||
<
|
<
|
||||||
string UIName = "Distortion Chromatic Aberration";
|
string UIName = "Distortion Chromatic Aberration";
|
||||||
string UIWidget = "Spinner";
|
string UIWidget = "Spinner";
|
||||||
> = {10.0};
|
> = {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
|
bool heatenable
|
||||||
<
|
<
|
||||||
string UIName = "Enable Hot Air Refraction";
|
string UIName = "Enable Hot Air Refraction";
|
||||||
|
|
@ -184,736 +114,6 @@ bool heatalways
|
||||||
string UIName = "Heat Always Enable";
|
string UIName = "Heat Always Enable";
|
||||||
string UIWidget = "Checkbox";
|
string UIWidget = "Checkbox";
|
||||||
> = {false};
|
> = {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 */
|
/* use "edge vision" filter */
|
||||||
string str_view = "Edgevision";
|
string str_view = "Edgevision";
|
||||||
bool edgevenable
|
bool edgevenable
|
||||||
|
|
@ -1556,4 +756,4 @@ bool dcolorizeafterhsv
|
||||||
<
|
<
|
||||||
string UIName = "Colorize After HSV";
|
string UIName = "Colorize After HSV";
|
||||||
string UIWidget = "Checkbox";
|
string UIWidget = "Checkbox";
|
||||||
> = {true};
|
> = {true};
|
||||||
|
|
|
||||||
Reference in a new issue