1
Fork 0
This commit is contained in:
Marisa the Magician 2019-04-07 17:08:53 +02:00
commit bda22542ff
40 changed files with 1986 additions and 3546 deletions

View file

@ -1,19 +1,13 @@
Copyright (c) 2013-2014 UnSX Team
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.

View file

@ -1,12 +0,0 @@
/*
effect.txt : MariENB additional filters.
(C)2013-2014 Marisa Kirisame, UnSX Team.
Part of MariENB, the personal ENB of Marisa.
Released under the MIT License.
*/
/* do not touch this! */
#define E_SHADER_3_0
/* separate for easier maintenance */
#include "menbsettings.fx"
#include "menbinternals.fx"
#include "menbfilters.fx"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 192 KiB

View file

@ -1,7 +1,7 @@
; enbseries.ini : ENB configuration file.
; (C)2013-2014 Marisa Kirisame, UnSX Team.
; Part of MariENB, the personal ENB of Marisa.
; Released under the MIT License.
; Released under the WTFPL.
[GLOBAL]
AdditionalConfigFile=
@ -12,7 +12,7 @@ UseOriginalPostProcessing=false
UseOriginalObjectsProcessing=false
EnableBloom=true
EnableAdaptation=false
EnableAmbientOcclusion=false
EnableAmbientOcclusion=true
EnableDepthOfField=true
EnableDetailedShadow=true
EnableSunRays=true
@ -32,45 +32,40 @@ EnableProceduralSun=true
EnableMist=true
[BLOOM]
Quality=1
AmountDay=0.5
AmountNight=0.85
AmountInterior=1.35
BlueShiftAmountDay=21.369999
BlueShiftAmountNight=13.0
BlueShiftAmountInterior=12.0
ContrastDay=1.0
ContrastNight=3.0
ContrastInterior=2.0
AmountSunrise=1.02
AmountSunset=1.31
AmountInteriorDay=0.66
AmountInteriorNight=0.9
BlueShiftAmountSunrise=15.77
BlueShiftAmountSunset=17.530001
BlueShiftAmountInteriorDay=19.219999
BlueShiftAmountInteriorNight=14.86
Quality=0
AmountDay=1.0
AmountNight=1.0
BlueShiftAmountDay=0.0
BlueShiftAmountNight=0.0
AmountSunrise=1.0
AmountSunset=1.0
AmountInteriorDay=1.0
AmountInteriorNight=1.0
BlueShiftAmountSunrise=0.0
BlueShiftAmountSunset=0.0
BlueShiftAmountInteriorDay=0.0
BlueShiftAmountInteriorNight=0.0
IgnoreWeatherSystem=true
[CAMERAFX]
LenzReflectionIntensityDay=1.29
LenzReflectionIntensityNight=1.14
LenzReflectionIntensityDay=0.0
LenzReflectionIntensityNight=0.0
LenzReflectionIntensityInterior=0.0
LenzReflectionPowerDay=0.91
LenzReflectionPowerNight=0.74
LenzReflectionPowerDay=0.0
LenzReflectionPowerNight=0.0
LenzReflectionPowerInterior=0.0
LenzReflectionIntensitySunrise=1.45
LenzReflectionIntensitySunset=1.53
LenzReflectionIntensityInteriorDay=0.950001
LenzReflectionIntensityInteriorNight=1.21
LenzReflectionPowerSunrise=0.64
LenzReflectionPowerSunset=0.64
LenzReflectionPowerInteriorDay=0.76
LenzReflectionPowerInteriorNight=0.71
LenzReflectionIntensitySunrise=0.0
LenzReflectionIntensitySunset=0.0
LenzReflectionIntensityInteriorDay=0.0
LenzReflectionIntensityInteriorNight=0.0
LenzReflectionPowerSunrise=1.0
LenzReflectionPowerSunset=1.0
LenzReflectionPowerInteriorDay=1.0
LenzReflectionPowerInteriorNight=1.0
[SSAO_SSIL]
UseIndirectLighting=false
UseComplexIndirectLighting=false
UseIndirectLighting=true
UseComplexIndirectLighting=true
SamplingQuality=1
SamplingRange=1.0
FadeFogRangeDay=0.0
@ -79,24 +74,24 @@ FadeFogRangeInterior=0.0
SizeScale=0.5
SourceTexturesScale=0.5
FilterQuality=1
AOAmount=2.44
ILAmount=0.0
UseComplexAmbientOcclusion=false
UseAmbientIndirectLighting=false
AOAmount=1.0
ILAmount=1.0
UseComplexAmbientOcclusion=true
UseAmbientIndirectLighting=true
SamplingPrecision=1
FadeFogRange=3.14
FadeFogRange=0.0
FilterType=0
AOAmountInterior=2.71
ILAmountInterior=0.0
AOIntensity=1.49
AOIntensityInterior=1.51
AOAmountInterior=1.0
ILAmountInterior=1.0
AOIntensity=1.0
AOIntensityInterior=1.0
AOType=0
AOMixingType=0
AOMixingTypeInterior=0
UseOldType=false
EnableDenoiser=false
EnableDenoiser=true
EnableSupersampling=false
EnableComplexFilter=false
EnableComplexFilter=true
ILType=0
[NIGHTDAY]
@ -108,47 +103,47 @@ DetectorOldVersion=false
[ADAPTATION]
ForceMinMaxValues=true
AdaptationSensitivity=0.35
AdaptationTime=3.22
AdaptationMin=0.85001
AdaptationMax=1.23
AdaptationSensitivity=0.71
AdaptationTime=2.01
AdaptationMin=1.0
AdaptationMax=1.0
[ENVIRONMENT]
DirectLightingIntensityDay=1.29
DirectLightingIntensityNight=1.32
DirectLightingIntensityDay=1.22
DirectLightingIntensityNight=1.02
DirectLightingIntensityInterior=1.014688
DirectLightingCurveDay=1.24
DirectLightingCurveNight=1.15
DirectLightingCurveDay=1.08
DirectLightingCurveNight=0.88
DirectLightingCurveInterior=1.25
DirectLightingDesaturationDay=0.0
DirectLightingDesaturationNight=0.0
DirectLightingDesaturationDay=0.05
DirectLightingDesaturationNight=0.18
DirectLightingDesaturationInterior=0.0
SpecularAmountMultiplierDay=1.15
SpecularAmountMultiplierNight=1.44
SpecularAmountMultiplierDay=1.03
SpecularAmountMultiplierNight=1.33
SpecularAmountMultiplierInterior=1.0
SpecularPowerMultiplierDay=1.551
SpecularPowerMultiplierNight=1.651
SpecularPowerMultiplierDay=0.651
SpecularPowerMultiplierNight=0.351
SpecularPowerMultiplierInterior=1.0
SpecularFromLightDay=0.0
SpecularFromLightNight=0.0
SpecularFromLightInterior=0.0
AmbientLightingIntensityDay=0.66
AmbientLightingIntensityNight=0.22
AmbientLightingIntensityDay=0.66
AmbientLightingIntensityNight=0.39
AmbientLightingIntensityInterior=0.914
AmbientLightingCurveDay=1.29
AmbientLightingCurveNight=1.18
AmbientLightingCurveInterior=0.75
AmbientLightingCurveDay=1.29
AmbientLightingCurveNight=1.31
AmbientLightingCurveInterior=0.75
AmbientLightingDesaturationDay=0.0
AmbientLightingDesaturationNight=0.0
AmbientLightingDesaturationInterior=0.0
PointLightingIntensityDay=1.29
PointLightingIntensityNight=2.15
PointLightingIntensityDay=0.7
PointLightingIntensityNight=0.81
PointLightingIntensityInterior=0.825
PointLightingCurveDay=1.26875
PointLightingCurveNight=1.56
PointLightingCurveDay=0.58875
PointLightingCurveNight=0.7
PointLightingCurveInterior=0.825
PointLightingDesaturationDay=0.12
PointLightingDesaturationNight=0.3
PointLightingDesaturationDay=0.08
PointLightingDesaturationNight=0.23
PointLightingDesaturationInterior=0.0
FogColorMultiplierDay=0.6
FogColorMultiplierNight=0.51
@ -159,34 +154,34 @@ FogColorCurveInterior=1.0
ColorPowDay=1.0
ColorPowNight=1.0
ColorPowInterior=0.9
DirectLightingIntensitySunrise=1.55
DirectLightingIntensitySunset=2.09
DirectLightingIntensityInteriorDay=1.27
DirectLightingIntensityInteriorNight=1.27
DirectLightingCurveSunrise=1.59
DirectLightingCurveSunset=1.91
DirectLightingIntensitySunrise=1.3
DirectLightingIntensitySunset=1.45
DirectLightingIntensityInteriorDay=1.14
DirectLightingIntensityInteriorNight=0.96
DirectLightingCurveSunrise=1.26
DirectLightingCurveSunset=1.62
DirectLightingCurveInteriorDay=1.05
DirectLightingCurveInteriorNight=1.11
DirectLightingDesaturationSunrise=0.0
DirectLightingDesaturationSunset=0.0
DirectLightingDesaturationInteriorDay=0.0
DirectLightingDesaturationInteriorNight=0.0
DirectLightingCurveInteriorNight=0.85
DirectLightingDesaturationSunrise=0.02
DirectLightingDesaturationSunset=0.01
DirectLightingDesaturationInteriorDay=0.08
DirectLightingDesaturationInteriorNight=0.15
SpecularAmountMultiplierSunrise=1.49
SpecularAmountMultiplierSunset=1.51
SpecularAmountMultiplierInteriorDay=1.27
SpecularAmountMultiplierInteriorNight=1.38
SpecularPowerMultiplierSunrise=1.181
SpecularPowerMultiplierSunset=1.141
SpecularPowerMultiplierInteriorDay=1.241
SpecularPowerMultiplierInteriorNight=1.441
SpecularAmountMultiplierSunset=1.62
SpecularAmountMultiplierInteriorDay=1.21
SpecularAmountMultiplierInteriorNight=1.17
SpecularPowerMultiplierSunrise=0.241
SpecularPowerMultiplierSunset=0.101
SpecularPowerMultiplierInteriorDay=0.511
SpecularPowerMultiplierInteriorNight=0.371
SpecularFromLightSunrise=0.0
SpecularFromLightSunset=0.0
SpecularFromLightInteriorDay=0.0
SpecularFromLightInteriorNight=0.0
AmbientLightingIntensitySunrise=0.4
AmbientLightingIntensitySunrise=0.37
AmbientLightingIntensitySunset=0.34
AmbientLightingIntensityInteriorDay=0.33
AmbientLightingIntensityInteriorNight=0.25
AmbientLightingIntensityInteriorDay=0.35
AmbientLightingIntensityInteriorNight=0.12
AmbientLightingCurveSunrise=1.32
AmbientLightingCurveSunset=1.44
AmbientLightingCurveInteriorDay=1.07
@ -195,48 +190,48 @@ AmbientLightingDesaturationSunrise=0.0
AmbientLightingDesaturationSunset=0.0
AmbientLightingDesaturationInteriorDay=0.0
AmbientLightingDesaturationInteriorNight=0.0
AmbientColorFilterAmountSunrise=0.12
AmbientColorFilterAmountDay=0.11
AmbientColorFilterAmountSunset=0.14
AmbientColorFilterAmountNight=0.33
AmbientColorFilterAmountInteriorDay=0.11
AmbientColorFilterAmountInteriorNight=0.24
AmbientColorFilterAmountSunrise=0.0
AmbientColorFilterAmountDay=0.0
AmbientColorFilterAmountSunset=0.0
AmbientColorFilterAmountNight=0.0
AmbientColorFilterAmountInteriorDay=0.0
AmbientColorFilterAmountInteriorNight=0.0
AmbientColorFilterTopSunrise=0.902, 0.784, 0.212
AmbientColorFilterTopDay=0.882, 0.863, 0.71
AmbientColorFilterTopSunset=0.945, 0.369, 0.0353
AmbientColorFilterTopNight=0.00784, 0.435, 0.737
AmbientColorFilterTopNight=0.00784, 0.447, 0.737
AmbientColorFilterTopInteriorDay=0.373, 0.396, 0.451
AmbientColorFilterTopInteriorNight=0.369, 0.435, 0.565
AmbientColorFilterMiddleSunrise=0.396, 0.231, 0.0902
AmbientColorFilterMiddleDay=0.188, 0.173, 0.149
AmbientColorFilterMiddleSunset=0.227, 0.0627, 0.0157
AmbientColorFilterMiddleNight=0.141, 0.192, 0.259
AmbientColorFilterMiddleInteriorDay=0.227, 0.333, 0.392
AmbientColorFilterMiddleInteriorNight=0.18, 0.247, 0.376
AmbientColorFilterBottomSunrise=0.776, 0.545, 0.282
AmbientColorFilterBottomDay=0.518, 0.455, 0.353
AmbientColorFilterBottomSunset=0.851, 0.384, 0.184
AmbientColorFilterBottomNight=0.11, 0.165, 0.408
AmbientColorFilterBottomInteriorDay=0.169, 0.29, 0.294
AmbientColorFilterBottomInteriorNight=0.0824, 0.133, 0.278
PointLightingIntensitySunrise=1.72
PointLightingIntensitySunset=1.69
PointLightingIntensityInteriorDay=1.8
PointLightingIntensityInteriorNight=2.01
PointLightingCurveSunrise=1.59
PointLightingCurveSunset=1.78
PointLightingCurveInteriorDay=1.3
PointLightingCurveInteriorNight=1.45
PointLightingDesaturationSunrise=0.28
PointLightingDesaturationSunset=0.32
PointLightingDesaturationInteriorDay=0.18
PointLightingDesaturationInteriorNight=0.26
AmbientColorFilterMiddleSunrise=0.0196, 0.0118, 0.00392
AmbientColorFilterMiddleDay=0, 0, 0
AmbientColorFilterMiddleSunset=0, 0, 0
AmbientColorFilterMiddleNight=0, 0, 0
AmbientColorFilterMiddleInteriorDay=0, 0, 0
AmbientColorFilterMiddleInteriorNight=0, 0, 0
AmbientColorFilterBottomSunrise=0, 0, 0
AmbientColorFilterBottomDay=0, 0, 0
AmbientColorFilterBottomSunset=0, 0, 0
AmbientColorFilterBottomNight=0, 0, 0
AmbientColorFilterBottomInteriorDay=0, 0, 0
AmbientColorFilterBottomInteriorNight=0.00392, 0.00784, 0.0196
PointLightingIntensitySunrise=0.8
PointLightingIntensitySunset=0.85
PointLightingIntensityInteriorDay=0.76
PointLightingIntensityInteriorNight=0.88
PointLightingCurveSunrise=0.8
PointLightingCurveSunset=0.84
PointLightingCurveInteriorDay=0.68
PointLightingCurveInteriorNight=0.77
PointLightingDesaturationSunrise=0.15
PointLightingDesaturationSunset=0.19
PointLightingDesaturationInteriorDay=0.09
PointLightingDesaturationInteriorNight=0.12
ParticleLightsIntensitySunrise=1.19
ParticleLightsIntensityDay=0.94
ParticleLightsIntensitySunset=1.14
ParticleLightsIntensityNight=1.15
ParticleLightsIntensityInteriorDay=0.77
ParticleLightsIntensityInteriorNight=0.96
ParticleLightsIntensityInteriorDay=1.21
ParticleLightsIntensityInteriorNight=1.25
FogColorMultiplierSunrise=0.4
FogColorMultiplierSunset=0.35
FogColorMultiplierInteriorDay=0.39
@ -255,20 +250,20 @@ IgnoreWeatherSystem=true
Enable=true
StarsIntensity=1.88
StarsCurve=1.23
AuroraBorealisIntensity=1.2
AuroraBorealisCurve=0.46
CloudsIntensityDay=1.020001
CloudsIntensityNight=0.510001
AuroraBorealisIntensity=0.44
AuroraBorealisCurve=0.23
CloudsIntensityDay=1.030001
CloudsIntensityNight=0.330001
CloudsIntensityInterior=1.49
CloudsCurveDay=1.18
CloudsCurveNight=1.03
CloudsCurveNight=1.06
CloudsCurveInterior=1.5
CloudsDesaturationDay=0.15
CloudsDesaturationNight=0.06
CloudsDesaturationDay=0.16
CloudsDesaturationNight=0.08
CloudsDesaturationInterior=0.14
CloudsEdgeClamp=0.84
CloudsEdgeIntensity=2.53
GradientIntensityDay=1.310001
CloudsEdgeClamp=0.0
CloudsEdgeIntensity=1.94
GradientIntensityDay=0.840001
GradientIntensityNight=0.740001
GradientIntensityInterior=0.85
GradientDesaturationDay=0.29
@ -286,7 +281,7 @@ GradientMiddleIntensityInterior=2.4
GradientMiddleCurveDay=2.06
GradientMiddleCurveNight=1.41
GradientMiddleCurveInterior=1.65
GradientHorizonIntensityDay=3.76
GradientHorizonIntensityDay=1.94
GradientHorizonIntensityNight=1.840001
GradientHorizonIntensityInterior=2.33
GradientHorizonCurveDay=1.52
@ -294,18 +289,18 @@ GradientHorizonCurveNight=1.36
GradientHorizonCurveInterior=1.25
SunIntensity=3.0
SunDesaturation=0.0
SunCoronaIntensity=0.911
SunCoronaCurve=3.19
SunCoronaIntensity=0.5
SunCoronaCurve=1.42
SunCoronaDesaturation=0.09
MoonIntensity=1.6
MoonCurve=1.0
MoonDesaturation=0.2
DisableWrongSkyMath=true
CloudsIntensitySunrise=0.550001
CloudsIntensitySunrise=0.880001
CloudsIntensitySunset=0.63
CloudsIntensityInteriorDay=0.98
CloudsIntensityInteriorNight=0.44
CloudsCurveSunrise=1.67
CloudsCurveSunrise=1.27
CloudsCurveSunset=1.46
CloudsCurveInteriorDay=1.12
CloudsCurveInteriorNight=1.05
@ -313,11 +308,11 @@ CloudsDesaturationSunrise=0.04
CloudsDesaturationSunset=0.02
CloudsDesaturationInteriorDay=0.13
CloudsDesaturationInteriorNight=0.04
GradientIntensitySunrise=0.920001
GradientIntensitySunrise=0.930001
GradientIntensitySunset=0.930001
GradientIntensityInteriorDay=1.41
GradientIntensityInteriorDay=0.95
GradientIntensityInteriorNight=0.870001
GradientDesaturationSunrise=0.53
GradientDesaturationSunrise=0.45
GradientDesaturationSunset=0.1
GradientDesaturationInteriorDay=0.29
GradientDesaturationInteriorNight=0.04
@ -339,17 +334,17 @@ GradientMiddleCurveInteriorDay=2.2
GradientMiddleCurveInteriorNight=1.4
GradientHorizonIntensitySunrise=2.05
GradientHorizonIntensitySunset=2.21
GradientHorizonIntensityInteriorDay=3.78
GradientHorizonIntensityInteriorDay=1.91
GradientHorizonIntensityInteriorNight=1.82
GradientHorizonCurveSunrise=1.13
GradientHorizonCurveSunset=1.13
GradientHorizonCurveInteriorDay=1.44
GradientHorizonCurveInteriorNight=1.34
SunIntensitySunrise=1.28
SunIntensityDay=1.1
SunIntensitySunset=1.07
SunIntensitySunrise=2.57
SunIntensityDay=1.83
SunIntensitySunset=2.92
SunIntensityNight=1.04
SunIntensityInteriorDay=1.09
SunIntensityInteriorDay=2.2
SunIntensityInteriorNight=1.03
SunDesaturationSunrise=0.0
SunDesaturationDay=0.0
@ -363,61 +358,61 @@ SunColorFilterSunset=0.82, 0.239, 0.137
SunColorFilterNight=0, 0, 0
SunColorFilterInteriorDay=1, 1, 1
SunColorFilterInteriorNight=0, 0, 0
SunGlowIntensitySunrise=3.64
SunGlowIntensityDay=3.15
SunGlowIntensitySunset=4.37
SunGlowIntensityNight=2.92
SunGlowIntensityInteriorDay=3.45
SunGlowIntensityInteriorNight=3.24
SunGlowHazinessSunrise=0.08
SunGlowHazinessDay=0.37
SunGlowIntensitySunrise=1.11
SunGlowIntensityDay=1.05
SunGlowIntensitySunset=1.36
SunGlowIntensityNight=1.02
SunGlowIntensityInteriorDay=1.28
SunGlowIntensityInteriorNight=1.01
SunGlowHazinessSunrise=0.05
SunGlowHazinessDay=0.36
SunGlowHazinessSunset=0.07
SunGlowHazinessNight=0.17
SunGlowHazinessInteriorDay=0.28
SunGlowHazinessInteriorNight=0.11
MoonIntensitySunrise=0.85
MoonIntensityDay=0.72
MoonIntensitySunset=1.24
MoonIntensityNight=1.52
MoonIntensityInteriorDay=0.58
MoonIntensityInteriorNight=1.3
MoonCurveSunrise=0.97
MoonCurveDay=0.88
MoonCurveSunset=0.93
MoonIntensitySunrise=0.68
MoonIntensityDay=0.53
MoonIntensitySunset=0.66
MoonIntensityNight=1.36
MoonIntensityInteriorDay=0.69
MoonIntensityInteriorNight=1.54
MoonCurveSunrise=0.89
MoonCurveDay=0.61
MoonCurveSunset=0.84
MoonCurveNight=1.07
MoonCurveInteriorDay=0.86
MoonCurveInteriorDay=0.59
MoonCurveInteriorNight=1.04
MoonDesaturationSunrise=0.17
MoonDesaturationDay=0.23
MoonDesaturationSunset=0.14
MoonDesaturationNight=0.12
MoonDesaturationInteriorDay=0.22
MoonDesaturationInteriorNight=0.13
CloudsOpacitySunrise=0.98
CloudsOpacityDay=1.31
CloudsOpacitySunset=0.94
CloudsOpacityNight=0.48
CloudsOpacityInteriorDay=1.27
CloudsOpacityInteriorNight=0.45
CloudsEdgeFadeRange=0.95
CloudsEdgeMoonMultiplier=4.32
MoonDesaturationSunrise=0.55
MoonDesaturationDay=0.81
MoonDesaturationSunset=0.58
MoonDesaturationNight=0.42
MoonDesaturationInteriorDay=0.83
MoonDesaturationInteriorNight=0.45
CloudsOpacitySunrise=1.0
CloudsOpacityDay=1.0
CloudsOpacitySunset=1.0
CloudsOpacityNight=1.0
CloudsOpacityInteriorDay=1.0
CloudsOpacityInteriorNight=1.0
CloudsEdgeFadeRange=1.0
CloudsEdgeMoonMultiplier=3.37
IgnoreWeatherSystem=true
[OBJECT]
SubSurfaceScatteringMultiplierDay=0.48
SubSurfaceScatteringMultiplierNight=0.26
SubSurfaceScatteringMultiplierDay=0.71
SubSurfaceScatteringMultiplierNight=0.43
SubSurfaceScatteringMultiplierInterior=0.0
SubSurfaceScatteringPowerDay=4.0
SubSurfaceScatteringPowerNight=4.6
SubSurfaceScatteringPowerDay=2.3
SubSurfaceScatteringPowerNight=1.41
SubSurfaceScatteringPowerInterior=1.1
SubSurfaceScatteringMultiplierSunrise=0.71
SubSurfaceScatteringMultiplierSunset=0.84
SubSurfaceScatteringMultiplierInteriorDay=0.31
SubSurfaceScatteringMultiplierInteriorNight=0.19
SubSurfaceScatteringPowerSunrise=2.81
SubSurfaceScatteringPowerSunset=2.52
SubSurfaceScatteringPowerInteriorDay=5.06
SubSurfaceScatteringPowerInteriorNight=5.63
SubSurfaceScatteringMultiplierSunrise=0.92
SubSurfaceScatteringMultiplierSunset=1.15
SubSurfaceScatteringMultiplierInteriorDay=0.5
SubSurfaceScatteringMultiplierInteriorNight=0.39
SubSurfaceScatteringPowerSunrise=1.57
SubSurfaceScatteringPowerSunset=1.56
SubSurfaceScatteringPowerInteriorDay=2.47
SubSurfaceScatteringPowerInteriorNight=2.15
IgnoreWeatherSystem=true
[LIGHTSPRITE]
@ -488,7 +483,7 @@ CurveInterior=1.0
IntensitySunrise=1.63
IntensitySunset=1.42
IntensityInteriorDay=1.31
IntensityInteriorNight=1.21
IntensityInteriorNight=1.19
CurveSunrise=0.94
CurveSunset=0.91
CurveInteriorDay=0.84
@ -497,47 +492,47 @@ AdditiveBlending=true
IgnoreWeatherSystem=true
[COLORCORRECTION]
UsePaletteTexture=true
UsePaletteTexture=false
Brightness=1.0
GammaCurve=1.0
UseProceduralCorrection=true
UseProceduralCorrection=false
[SHADOW]
ShadowCastersFix=true
ShadowCastersFix=false
ShadowQualityFix=true
DetailedShadowQuality=1
DetailedShadowQuality=-1
UseBilateralShadowFilter=true
UseShadowFilter=true
ShadowFilterQuality=1
ShadowBlurRange=1.65
ShadowBlurRangeInterior=1.17
ShadowFilterQuality=0
ShadowBlurRange=4.36
ShadowBlurRangeInterior=5.24
IgnoreWeatherSystem=true
[DEPTHOFFIELD]
FadeTime=0.85
Quality=2
FadeTime=0.4
Quality=-1
IgnoreWeatherSystem=true
[RAYS]
SunRaysMultiplier=0.75
SunRaysMultiplierSunrise=0.59
SunRaysMultiplierDay=0.24
SunRaysMultiplierSunset=0.54
SunRaysMultiplierNight=0.32
SunRaysMultiplierInteriorDay=0.37
SunRaysMultiplierInteriorNight=0.44
SunRaysMultiplierSunrise=0.12
SunRaysMultiplierDay=0.04
SunRaysMultiplierSunset=0.14
SunRaysMultiplierNight=0.05
SunRaysMultiplierInteriorDay=0.13
SunRaysMultiplierInteriorNight=0.15
IgnoreWeatherSystem=true
[SKYLIGHTING]
Quality=2
FilterQuality=1
FilterQuality=2
AmbientMinLevel=0.39375
AmbientMinLevelSunrise=0.33
AmbientMinLevelDay=0.64
AmbientMinLevelSunset=0.4
AmbientMinLevelNight=0.29
AmbientMinLevelNight=0.26
AmbientMinLevelInteriorDay=0.2
AmbientMinLevelInteriorNight=0.19
AmbientMinLevelInteriorNight=0.18
IgnoreWeatherSystem=true
[WEATHER]
@ -545,26 +540,26 @@ EnableMultipleWeathers=false
[TIMEOFDAY]
Enable=true
DawnDuration=2.0
SunriseTime=6.5
DawnDuration=1.0
SunriseTime=8.0
DayTime=12.0
SunsetTime=18.5
DuskDuration=2.0
SunsetTime=18.0
DuskDuration=1.0
NightTime=0.0
[VEGETATION]
SubSurfaceScatteringMultiplierSunrise=1.24
SubSurfaceScatteringMultiplierDay=0.88
SubSurfaceScatteringMultiplierSunset=1.4
SubSurfaceScatteringMultiplierNight=1.14
SubSurfaceScatteringMultiplierInteriorDay=0.96
SubSurfaceScatteringMultiplierInteriorNight=1.08
SubSurfaceScatteringPowerSunrise=4.09
SubSurfaceScatteringPowerDay=4.44
SubSurfaceScatteringPowerSunset=3.41
SubSurfaceScatteringPowerNight=5.9
SubSurfaceScatteringPowerInteriorDay=5.31
SubSurfaceScatteringPowerInteriorNight=6.37
SubSurfaceScatteringMultiplierSunrise=1.52
SubSurfaceScatteringMultiplierDay=1.22
SubSurfaceScatteringMultiplierSunset=1.92
SubSurfaceScatteringMultiplierNight=1.35
SubSurfaceScatteringMultiplierInteriorDay=1.17
SubSurfaceScatteringMultiplierInteriorNight=1.31
SubSurfaceScatteringPowerSunrise=1.67
SubSurfaceScatteringPowerDay=2.27
SubSurfaceScatteringPowerSunset=1.22
SubSurfaceScatteringPowerNight=2.06
SubSurfaceScatteringPowerInteriorDay=2.23
SubSurfaceScatteringPowerInteriorNight=2.09
IgnoreWeatherSystem=true
[PARTICLE]
@ -573,7 +568,7 @@ IntensityDay=0.94
IntensitySunset=0.85
IntensityNight=0.72
IntensityInteriorDay=1.14
IntensityInteriorNight=0.73
IntensityInteriorNight=0.7
LightingInfluenceSunrise=1.49
LightingInfluenceDay=0.86
LightingInfluenceSunset=1.82
@ -584,7 +579,7 @@ IgnoreWeatherSystem=true
[REFLECTION]
Quality=1
FilterQuality=1
FilterQuality=0
FilterBluriness=1.0
SizeScale=0.5
SourceTexturesScale=0.5
@ -592,7 +587,7 @@ Amount=0.64
Power=1.41
GlosinessMin=0.0
GlosinessMax=1.0
EnableDenoiser=false
EnableDenoiser=true
DenoiserType=0
EnableSupersampling=false
ExteriorEnable=true
@ -629,32 +624,32 @@ MotionTransparency=0.86
IgnoreWeatherSystem=true
[EYES]
SubSurfaceScatteringMultiplierSunrise=1.5
SubSurfaceScatteringMultiplierDay=1.09
SubSurfaceScatteringMultiplierSunset=1.66
SubSurfaceScatteringMultiplierNight=1.38
SubSurfaceScatteringMultiplierInteriorDay=1.12
SubSurfaceScatteringMultiplierInteriorNight=1.26
SubSurfaceScatteringPowerSunrise=2.69
SubSurfaceScatteringPowerDay=3.83
SubSurfaceScatteringPowerSunset=2.56
SubSurfaceScatteringPowerNight=4.4
SubSurfaceScatteringPowerInteriorDay=4.11
SubSurfaceScatteringPowerInteriorNight=5.13
SubSurfaceScatteringMultiplierSunrise=0.56
SubSurfaceScatteringMultiplierDay=0.29
SubSurfaceScatteringMultiplierSunset=0.64
SubSurfaceScatteringMultiplierNight=0.36
SubSurfaceScatteringMultiplierInteriorDay=0.36
SubSurfaceScatteringMultiplierInteriorNight=0.35
SubSurfaceScatteringPowerSunrise=0.62
SubSurfaceScatteringPowerDay=0.91
SubSurfaceScatteringPowerSunset=0.64
SubSurfaceScatteringPowerNight=0.52
SubSurfaceScatteringPowerInteriorDay=0.79
SubSurfaceScatteringPowerInteriorNight=0.55
IgnoreWeatherSystem=true
[SUBSURFACESCATTERING]
Quality=1
Radius=0.88
Amount=0.81
EpidermalAmount=1.52
SubdermalAmount=2.39
EpidermalDiffuseSaturation=-0.45
SubdermalDiffuseSaturation=0.23
EpidermalMix=0.6
SubdermalMix=0.55
SubdermalTranslucency=0.92
SubdermalPhase=0.75
Radius=1.0
Amount=0.6
EpidermalAmount=1.64
SubdermalAmount=5.28
EpidermalDiffuseSaturation=-0.77
SubdermalDiffuseSaturation=0.45
EpidermalMix=0.87
SubdermalMix=0.19
SubdermalTranslucency=0.95
SubdermalPhase=0.95
IgnoreWeatherSystem=true
[LENS]
@ -687,31 +682,31 @@ IgnoreWeatherSystem=true
[WATER]
EnableDispersion=true
EnableCaustics=true
ReflectionAmount=0.58
FrennelMultiplier=3.18
FrennelMin=0.15
ReflectionAmount=0.86
FrennelMultiplier=3.5
FrennelMin=0.0
FrennelMax=1.0
DispersionAmount=0.91
CausticsAmount=1.47
DispersionAmount=0.94
CausticsAmount=0.26
EnableParallax=true
EnableShadow=true
EnableSelfReflection=true
EnableLighting=true
EnableDisplacement=true
DisplacementQuality=1
SunSpecularMultiplier=1.6
SunScatteringMultiplier=3.04
WavesAmplitudeSunrise=1.0
WavesAmplitudeDay=1.0
WavesAmplitudeSunset=1.0
WavesAmplitudeNight=1.0
WavesAmplitudeInteriorDay=1.0
WavesAmplitudeInteriorNight=1.0
SunSpecularMultiplier=0.95
SunScatteringMultiplier=2.03
WavesAmplitudeSunrise=0.64
WavesAmplitudeDay=0.7
WavesAmplitudeSunset=0.67
WavesAmplitudeNight=0.51
WavesAmplitudeInteriorDay=0.55
WavesAmplitudeInteriorNight=0.42
ShadowQuality=1
EnableShadowNoise=true
SunLightingMultiplier=0.82
WetMultiplier=0.42
Muddiness=0.31
SunLightingMultiplier=0.83
WetMultiplier=0.86
Muddiness=0.25
EnablePreCache=true
EnableVolumetricShadow=true
DisplacementFilterQuality=1
@ -725,57 +720,57 @@ EnableBlurring=true
EnableReflection=true
EnableShadow=true
ShadowQuality=1
DispersionAmount=0.96
ReflectionAmount=0.97
TransparencyFade=3.56
TransparencyCurve=1.03
DispersionAmount=0.93
ReflectionAmount=0.64
TransparencyFade=1.88
TransparencyCurve=1.32
DeepnessFade=3.88
DeepnessDarkening=0.93
TintAmount=3.27
TintFade=4.7
TintAmount=3.31
TintFade=4.66
SunScatteringMultiplier=1.68
IgnoreWeatherSystem=true
[CLOUDSHADOWS]
EnableAtNight=true
OpacitySunrise=0.73
OpacitySunrise=0.85
OpacityDay=0.57
OpacitySunset=0.76
OpacityNight=0.91
OpacitySunset=0.86
OpacityNight=0.96
OpacityInteriorDay=0.62
OpacityInteriorNight=0.98
IgnoreWeatherSystem=true
[VOLUMETRICRAYS]
Quality=1
IntensitySunrise=0.67
IntensityDay=0.42
IntensitySunset=0.77
IntensityNight=0.41
IntensityInteriorDay=0.58
IntensityInteriorNight=0.5
DensitySunrise=1.76
DensityDay=0.94
DensitySunset=1.6
DensityNight=0.62
IntensitySunrise=0.36
IntensityDay=0.19
IntensitySunset=0.45
IntensityNight=0.1
IntensityInteriorDay=0.53
IntensityInteriorNight=0.2
DensitySunrise=4.35
DensityDay=3.66
DensitySunset=4.72
DensityNight=3.63
DensityInteriorDay=1.44
DensityInteriorNight=0.51
SkyColorAmountSunrise=0.89
SkyColorAmountDay=0.69
SkyColorAmountSunset=0.87
SkyColorAmountNight=0.72
SkyColorAmountInteriorDay=0.63
SkyColorAmountInteriorNight=0.78
SkyColorAmountSunrise=0.53
SkyColorAmountDay=0.32
SkyColorAmountSunset=0.67
SkyColorAmountNight=0.16
SkyColorAmountInteriorDay=0.4
SkyColorAmountInteriorNight=0.3
IgnoreWeatherSystem=true
[PROCEDURALSUN]
Size=0.68
EdgeSoftness=0.51
GlowIntensitySunrise=0.88
GlowIntensityDay=0.57
GlowIntensitySunset=0.89
GlowIntensityNight=0.16
GlowIntensityInteriorDay=0.95
Size=0.84
EdgeSoftness=0.62
GlowIntensitySunrise=1.38
GlowIntensityDay=1.14
GlowIntensitySunset=0.86
GlowIntensityNight=0.3
GlowIntensityInteriorDay=5.27
GlowIntensityInteriorNight=0.09
GlowCurveSunrise=9.68
GlowCurveDay=7.46
GlowCurveSunrise=9.67
GlowCurveDay=7.01
GlowCurveSunset=8.29
GlowCurveNight=1.85
GlowCurveInteriorDay=9.31

View file

@ -1,165 +0,0 @@
[EFFECT.TXT]
TECHNIQUE=0
EnableFXAA=false
FXAASpanMax=2.0
FXAAReduceMul=32.0
FXAAReduceMin=128.0
BlurEnable=false
BlurSampleNight=1.0
BlurSampleDay=0.86
BlurSampleInteriorNight=0.93
BlurSampleInteriorDay=0.75
BlurLevel=1
BlurPowerNight=14.95
BlurPowerDay=11.57
BlurPowerInteriorNight=16.059999
BlurPowerInteriorDay=12.22
BlurCurveNight=1.45
BlurCurveDay=1.53
BlurCurveInteriorNight=1.32
BlurCurveInteriorDay=1.49
BlurRadiusNight=0.68
BlurRadiusDay=0.62
BlurRadiusInteriorNight=0.74
BlurRadiusInteriorDay=0.7
DarkEnable=true
DarkRadiusNight=0.35
DarkRadiusDay=0.25
DarkRadiusInteriorNight=0.45
DarkRadiusInteriorDay=0.3
DarkCurveNight=2.16
DarkCurveDay=2.45
DarkCurveInteriorNight=1.95
DarkCurveInteriorDay=2.34
DarkBumpNight=0.79
DarkBumpDay=0.62
DarkBumpInteriorNight=0.9
DarkBumpInteriorDay=0.82
EnableCompensate=true
CompensateFactorNight=0.65
CompensateFactorDay=0.72
CompensateFactorInteriorNight=0.71
CompensateFactorInteriorDay=0.78
CompensatePowerNight=1.14
CompensatePowerDay=1.18
CompensatePowerInteriorNight=1.16
CompensatePowerInteriorDay=1.23
CompensateSaturationNight=0.86
CompensateSaturationDay=0.41
CompensateSaturationInteriorNight=0.82
CompensateSaturationInteriorDay=0.49
CompensateBumpNight=0.0
CompensateBumpDay=0.0
CompensateBumpInteriorNight=0.0
CompensateBumpInteriorDay=0.0
EnableGrading=true
GradingAddRNight=0.0
GradingAddGNight=0.0
GradingAddBNight=0.0
GradingAddRDay=0.0
GradingAddGDay=0.0
GradingAddBDay=0.0
GradingAddRInteriorNight=0.0
GradingAddGInteriorNight=0.0
GradingAddBInteriorNight=0.0
GradingAddRInteriorDay=0.0
GradingAddGInteriorDay=0.0
GradingAddBInteriorDay=0.0
GradingMulRNight=3.01
GradingMulGNight=3.12
GradingMulBNight=3.24
GradingMulRDay=3.42
GradingMulGDay=3.34
GradingMulBDay=3.24
GradingMulRInteriorNight=3.57
GradingMulGInteriorNight=3.43
GradingMulBInteriorNight=3.27
GradingMulRInteriorDay=3.67
GradingMulGInteriorDay=3.56
GradingMulBInteriorDay=3.48
GradingPowRNight=1.03
GradingPowGNight=1.01
GradingPowBNight=0.95
GradingPowRDay=1.23
GradingPowGDay=1.2
GradingPowBDay=1.14
GradingPowRInteriorNight=1.07
GradingPowGInteriorNight=1.02
GradingPowBInteriorNight=0.97
GradingPowRInteriorDay=1.21
GradingPowGInteriorDay=1.16
GradingPowBInteriorDay=1.11
GradingColRNight=-0.21
GradingColGNight=-0.28
GradingColBNight=-1.41
GradingColRDay=-0.8
GradingColGDay=-0.2
GradingColBDay=-0.62
GradingColRInteriorNight=-0.52
GradingColGInteriorNight=-0.3
GradingColBInteriorNight=-1.37
GradingColRInteriorDay=-0.52
GradingColGInteriorDay=-0.36
GradingColBInteriorDay=-0.72
GradingColFactorNight=-0.27
GradingColFactorDay=-0.16
GradingColFactorInteriorNight=-0.24
GradingColFactorInteriorDay=-0.12
EnableSoftGrain=false
SoftGrainSpeedNight=0.02
SoftGrainSpeedDay=0.07
SoftGrainSpeedInteriorNight=0.01
SoftGrainSpeedInteriorDay=0.03
SoftGrainIntensityNight=0.03
SoftGrainIntensityDay=0.01
SoftGrainIntensityInteriorNight=0.03
SoftGrainIntensityInteriorDay=0.01
SoftGrainSaturationNight=-0.22
SoftGrainSaturationDay=-0.18
SoftGrainSaturationInteriorNight=-0.24
SoftGrainSaturationInteriorDay=-0.31
SoftGrainTwopass=false
SoftGrainBlendfunc=1
SoftGrainDeviation=0.05
SoftGrainMagnification1=13.69
SoftGrainMagnification2=19.26
SoftGrainMagnification3=17.889999
SoftGrainMagnification11=2.05
SoftGrainMagnification12=3.11
SoftGrainMagnification13=2.22
SoftGrainMagnification21=4.25
SoftGrainMagnification22=0.42
SoftGrainMagnification23=6.29
SoftGrainPowerNight=2.16
SoftGrainPowerDay=5.22
SoftGrainPowerInteriorNight=2.59
SoftGrainPowerInteriorDay=4.7
EnableBlockGFX=false
BlockGFXResolutionW=1.0
BlockGFXResolutionH=1.0
BlockGFXpalette=0
BlockGFXcgamode=0
BlockGFXegamode=1
BlockGFXDither=5
BlockGFXPrepassGamma=0.25
BlockGFXDitherBump=-0.5
BlockGFXDitherMultiplier=0.5
BlockGFXPrepassSaturation=-0.0
EnableDirt=false
DirtCoordFactor=0.25
DirtLuminanceFactor=0.0
DirtCoordMagnification=2.0
DirtLuminanceMagnification=1.0
EnableBox=true
BoxHorizontal=1.5
BoxVertical=0.85
BoxSoften=0.01
BoxAlpha=5.999999
EnableCurvature=false
CurveChromaticAberration=0.06
CurveZoom=50.299999
CurveLens=0.0
CurveLensCubic=0.0
EnableSharpen=true
SharpenSample=0.2
SharpenBlend=1.0

View file

@ -2,7 +2,7 @@
enbbloom.fx : MariENB bloom filter.
(C)2013-2014 Marisa Kirisame, UnSX Team.
Part of MariENB, the personal ENB of Marisa.
Released under the MIT License.
Released under the WTFPL.
*/
/* do not touch this! */
#define E_SHADER_3_0

View file

@ -1,11 +1,18 @@
[ENBBLOOM.FX]
TECHNIQUE=0
PreEnable=true
PreSample=1.0
PreLevel=1
PostSample=1.000001
PostLevel=1
BloomIntensity=0.4
BloomBump=-0.1
BloomPower=1.5
BloomSaturation=0.75
BloomIntensityNight=0.99
BloomIntensityDay=0.33
BloomIntensityInteriorNight=0.97
BloomIntensityInteriorDay=0.94
BloomBumpNight=-0.07
BloomBumpDay=-0.19
BloomBumpInteriorNight=-0.1
BloomBumpInteriorDay=-0.13
BloomPowerNight=1.09
BloomPowerDay=1.4
BloomPowerInteriorNight=1.13
BloomPowerInteriorDay=1.19
BloomSaturationNight=0.86
BloomSaturationDay=0.78
BloomSaturationInteriorNight=0.91
BloomSaturationInteriorDay=0.85

View file

@ -2,7 +2,7 @@
enbeffect.fx : MariENB base shader.
(C)2013-2014 Marisa Kirisame, UnSX Team.
Part of MariENB, the personal ENB of Marisa.
Released under the MIT License.
Released under the WTFPL.
*/
/* do not touch this! */
#define E_SHADER_3_0

View file

@ -1,28 +1,78 @@
[ENBEFFECT.FX]
TECHNIQUE=0
EnableAdaptation=true
AdaptationMinNight=0.89
AdaptationMinDay=0.09
AdaptationMinInteriorNight=1.12
AdaptationMinInteriorDay=0.14
AdaptationMaxNight=0.5
AdaptationMaxDay=0.94
AdaptationMaxInteriorNight=0.02
AdaptationMaxInteriorDay=1.08
EnableTonemapping=true
TonemappingNight=1.13
TonemappingDay=1.64
TonemappingInteriorNight=1.25
TonemappingInteriorDay=1.37
TonemappingOversaturationNight=26.289999
TonemappingOversaturationDay=10.95
TonemappingOversaturationInteriorNight=22.74
TonemappingOversaturationInteriorDay=15.83
EnablePalette=true
PaletteBlendNight=0.19
PaletteBlendDay=0.33
PaletteBlendInteriorNight=0.25
PaletteBlendInteriorDay=0.45
EnableBloomSoften=true
BloomSoftenLevel=1
BloomSoftenRadius=1.0
CompensateFactorNight=0.22
CompensateFactorDay=0.4
CompensateFactorInteriorNight=0.32
CompensateFactorInteriorDay=0.45
CompensatePowerNight=1.16
CompensatePowerDay=1.11
CompensatePowerInteriorNight=1.1
CompensatePowerInteriorDay=1.05
CompensateSaturationNight=0.86
CompensateSaturationDay=0.87
CompensateSaturationInteriorNight=0.97
CompensateSaturationInteriorDay=0.99
GradingMulRNight=1.32
GradingMulGNight=1.25
GradingMulBNight=1.45
GradingMulRDay=1.7
GradingMulGDay=1.45
GradingMulBDay=1.29
GradingMulRInteriorNight=1.46
GradingMulGInteriorNight=1.52
GradingMulBInteriorNight=1.55
GradingMulRInteriorDay=1.53
GradingMulGInteriorDay=1.51
GradingMulBInteriorDay=1.41
GradingPowRNight=1.02
GradingPowGNight=1.06
GradingPowBNight=1.03
GradingPowRDay=1.09
GradingPowGDay=1.08
GradingPowBDay=1.05
GradingPowRInteriorNight=1.08
GradingPowGInteriorNight=1.11
GradingPowBInteriorNight=1.06
GradingPowRInteriorDay=1.03
GradingPowGInteriorDay=1.06
GradingPowBInteriorDay=1.0
GradingColRNight=-0.59
GradingColGNight=-0.26
GradingColBNight=-0.73
GradingColRDay=-0.62
GradingColGDay=-0.1
GradingColBDay=-0.81
GradingColRInteriorNight=-0.19
GradingColGInteriorNight=-0.18
GradingColBInteriorNight=-0.62
GradingColRInteriorDay=-0.22
GradingColGInteriorDay=-0.21
GradingColBInteriorDay=-0.33
GradingColFactorNight=-0.2
GradingColFactorDay=-0.14
GradingColFactorInteriorNight=-0.08
GradingColFactorInteriorDay=-0.12
DarkRadiusNight=0.0
DarkRadiusDay=0.0
DarkRadiusInteriorNight=0.0
DarkRadiusInteriorDay=0.0
DarkCurveNight=1.7
DarkCurveDay=2.3
DarkCurveInteriorNight=1.35
DarkCurveInteriorDay=1.67
DarkBumpNight=0.74
DarkBumpDay=0.33
DarkBumpInteriorNight=0.82
DarkBumpInteriorDay=0.61
BoxVertical=1.0
BoxSoften=0.0
BoxAlpha=1.0
AdaptationMinNight=0.11
AdaptationMinDay=0.07
AdaptationMinInteriorNight=0.07
AdaptationMinInteriorDay=0.06
AdaptationMaxNight=1.02
AdaptationMaxDay=1.24
AdaptationMaxInteriorNight=0.9
AdaptationMaxInteriorDay=0.89
BloomSoften=false

View file

@ -2,7 +2,7 @@
enbeffectprepass.fx : MariENB pre-pass filters.
(C)2013-2014 Marisa Kirisame, UnSX Team.
Part of MariENB, the personal ENB of Marisa.
Released under the MIT License.
Released under the WTFPL.
*/
/* do not touch this! */
#define E_SHADER_3_0
@ -10,4 +10,3 @@
#include "menbprepasssettings.fx"
#include "menbprepassinternals.fx"
#include "menbprepassfilters.fx"

View file

@ -1,50 +1,58 @@
[ENBEFFECTPREPASS.FX]
TECHNIQUE=0
CelEnable=true
CelMode=0
CelRadius=0.5
CelPower=0.25
CelBump=0.0
CelBlend=2.5
SSAOEnable=true
SSAODebug=0
SSAORadius=16.0
SSAOBump=0.0
SSAOPower=4.0
SSAOBlend=1.25
SSAONoise=1.0
DoFEnable=true
DoFRadius=1.5
DoFBump=0.0
DoFPow=3.0
DoFBlend=1.0
DoFCut=0.0
DoFDebug=0
CelMult=2.0
SSAOMult=2.0
DoFMult=12.000001
DoFLevel=1
DoFPowNight=2.02
DoFPowDay=2.2
DoFPowInteriorNight=3.46
DoFPowInteriorDay=3.69
DoFDebug=false
DoFMultNight=319.23999
DoFMultDay=295.160004
DoFMultInteriorNight=281.079987
DoFMultInteriorDay=246.229996
FocusCircleEnable=true
FocusCircleSlices=3
FocusCircleRadius=10.0
FocusCircleCircles=1
FocusDotDebugRadius=0.01
FocusCircleStep=0.25
FocusCircleOffset=0.0
FocusCircleMix=0.25
SSAONormalOffset1=0.0
SSAONormalOffset2=0.01
SSAONormalOffset3=0.01
SSAONormalOffset4=0.0
SSAONoiseSize=64.0
SSAOBlurEnable=true
SSAOBlurRadius=1.0
SSAOBlurLevel=2
SSAOTrim=1.0
SSAOFadeBump=0.0
SSAOFadeMult=0.5
SSAOFadePow=1.0
CelTrim=1.01
CelFade=2.5
SSAOFade=0.6
DoFTrim=1.01
FocusCircleRadiusNight=20.0
FocusCircleRadiusDay=25.0
FocusCircleRadiusInteriorNight=15.0
FocusCircleRadiusInteriorDay=20.0
FocusCircleMixNight=0.4
FocusCircleMixDay=0.5
FocusCircleMixInteriorNight=0.35
FocusCircleMixInteriorDay=0.45
FocusMaxNight=990.350037
FocusMaxDay=994.340027
FocusMaxInteriorNight=984.919983
FocusMaxInteriorDay=989.539978
DoFFixedFocusedMultNight=1.0
DoFFixedFocusedMultDay=1.0
DoFFixedFocusedMultInteriorNight=1.0
DoFFixedFocusedMultInteriorDay=1.0
DoFFixedFocusedPowNight=1.0
DoFFixedFocusedPowDay=1.0
DoFFixedFocusedPowInteriorNight=1.0
DoFFixedFocusedPowInteriorDay=1.0
DoFFixedFocusedBlendNight=0.0
DoFFixedFocusedBlendDay=0.0
DoFFixedFocusedBlendInteriorNight=0.0
DoFFixedFocusedBlendInteriorDay=0.0
DoFFixedUnfocusedMultNight=1.6
DoFFixedUnfocusedMultDay=1.5
DoFFixedUnfocusedMultInteriorNight=1.3
DoFFixedUnfocusedMultInteriorDay=1.18
DoFFixedUnfocusedPowNight=956.559998
DoFFixedUnfocusedPowDay=983.109985
DoFFixedUnfocusedPowInteriorNight=962.349976
DoFFixedUnfocusedPowInteriorDay=979.340027
DoFFixedUnfocusedBlendNight=1.0
DoFFixedUnfocusedBlendDay=1.0
DoFFixedUnfocusedBlendInteriorNight=1.0
DoFFixedUnfocusedBlendInteriorDay=1.0
DoFTwoPass=false
EdgeDisable=true
EdgeView=false
EdgeFadePower=1.6
EdgeFadeMultiplier=16.0
EdgePower=1.5
EdgeMultiplier=32.0
DoFDisable=false
DoFSmoothing=false
DoFCutoff=false

View file

@ -2,9 +2,27 @@
enblens.fx : MariENB Lens filters.
(C)2013-2014 Marisa Kirisame, UnSX Team.
Part of MariENB, the personal ENB of Marisa.
Released under the MIT License.
Released under the WTFPL.
*/
/*
This shader left unimplemented. Development of the filter is a massive pain
in the ass thanks to the incompetence of a certain individual named Boris
Vorontsov and the major breakage of his ENB project.
Lots of blind debugging are necessary to get the goddamn thing to compile,
and from the looks of it the filter, which works flawlessly on MariEFX, is
completely unportable to this massive bag of dicks. After DAYS of
selectively commenting out code, the only way it can compile is if the
shader does NOTHING. For ever minor change to the code, five minutes of
waiting are needed so the entire thing recompiles! FIVE MINUTES! Just how
can you fuck up that badly? By comparison eFX takes mere seconds to reload
everything on the considerably more complex MariEFX project, but this... I
can't imagine what awful programming resulted in such a terrible bottleneck.
tl;dr: Fuck you, Boris.
-- Marisa
*/
/* Effects have yet to be implemented. Sorry for the inconvenience. */
struct VS_OUTPUT_POST
{
float4 vpos : POSITION;

BIN
enbseries/enbpalette.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

View file

Before

Width:  |  Height:  |  Size: 4 KiB

After

Width:  |  Height:  |  Size: 4 KiB

Before After
Before After

View file

@ -2,9 +2,9 @@
enbsunsprite.fx : MariENB sun sprite filters.
(C)2013-2014 Marisa Kirisame, UnSX Team.
Part of MariENB, the personal ENB of Marisa.
Released under the MIT License.
Released under the WTFPL.
*/
/* Effects have yet to be implemented. Sorry for the inconvenience. */
/* This shader intentionally does nothing */
struct VS_OUTPUT_POST
{
float4 vpos : POSITION;

View file

@ -0,0 +1,153 @@
/*
menbbloomfilters.fx : MariENB bloom shader routines.
(C)2013-2014 Marisa Kirisame, UnSX Team.
Part of MariENB, the personal ENB of Marisa.
Released under the WTFPL.
*/
VS_OUTPUT_POST VS_Bloom(VS_INPUT_POST IN)
{
VS_OUTPUT_POST OUT;
float4 pos = float4(IN.pos.x,IN.pos.y,IN.pos.z,1);
OUT.vpos = pos;
OUT.txcoord0.xy = IN.txcoord0.xy+TempParameters.xy;
return OUT;
}
/* pre-pass bloom texture preparation */
float4 PS_BloomPrePass(VS_OUTPUT_POST In) : COLOR
{
float tod = ENightDayFactor;
float ind = EInteriorFactor;
float bloombump = lerp(lerp(bloombump_n,bloombump_d,tod),
lerp(bloombump_in,bloombump_id,tod),ind);
float bloompower = lerp(lerp(bloompower_n,bloompower_d,tod),
lerp(bloompower_in,bloompower_id,tod),ind);
float bloomsaturation = lerp(lerp(bloomsaturation_n,bloomsaturation_d,
tod),lerp(bloomsaturation_in,bloomsaturation_id,tod),ind);
float bloomintensity = lerp(lerp(bloomintensity_n,bloomintensity_d,
tod),lerp(bloomintensity_in,bloomintensity_id,tod),ind);
float2 coord = In.txcoord0.xy;
float4 res = tex2D(SamplerBloom1,coord);
res = pow(saturate(res+bloombump),bloompower);
float ress = (res.r+res.g+res.b)/3.0;
res = res*bloomsaturation+ress*(1.0-bloomsaturation);
res.rgb *= bloomintensity;
return res;
}
/*
multipass (cannot specify how many bloom textures to use, so considerable
performance rape. good job, boris)
*/
float4 PS_BloomTexture(VS_OUTPUT_POST In) : COLOR
{
float2 coord = In.txcoord0.xy;
float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
float2 bof = float2(1.0/bresl.x,1.0/bresl.y)*pow(4,TempParameters.w);
/* loop unrolled for speeding up compilation (this is retarded) */
float4 res;
res = gauss7[3][3]*tex2D(SamplerBloom1,coord+float2(-3,-3)*bof);
res += gauss7[2][3]*tex2D(SamplerBloom1,coord+float2(-2,-3)*bof);
res += gauss7[1][3]*tex2D(SamplerBloom1,coord+float2(-1,-3)*bof);
res += gauss7[0][3]*tex2D(SamplerBloom1,coord+float2(0,-3)*bof);
res += gauss7[1][3]*tex2D(SamplerBloom1,coord+float2(1,-3)*bof);
res += gauss7[2][3]*tex2D(SamplerBloom1,coord+float2(2,-3)*bof);
res += gauss7[3][3]*tex2D(SamplerBloom1,coord+float2(3,-3)*bof);
res += gauss7[3][2]*tex2D(SamplerBloom1,coord+float2(-3,-2)*bof);
res += gauss7[2][2]*tex2D(SamplerBloom1,coord+float2(-2,-2)*bof);
res += gauss7[1][2]*tex2D(SamplerBloom1,coord+float2(-1,-2)*bof);
res += gauss7[0][2]*tex2D(SamplerBloom1,coord+float2(0,-2)*bof);
res += gauss7[1][2]*tex2D(SamplerBloom1,coord+float2(1,-2)*bof);
res += gauss7[2][2]*tex2D(SamplerBloom1,coord+float2(2,-2)*bof);
res += gauss7[3][2]*tex2D(SamplerBloom1,coord+float2(3,-2)*bof);
res += gauss7[3][1]*tex2D(SamplerBloom1,coord+float2(-3,-1)*bof);
res += gauss7[2][1]*tex2D(SamplerBloom1,coord+float2(-2,-1)*bof);
res += gauss7[1][1]*tex2D(SamplerBloom1,coord+float2(-1,-1)*bof);
res += gauss7[0][1]*tex2D(SamplerBloom1,coord+float2(0,-1)*bof);
res += gauss7[1][1]*tex2D(SamplerBloom1,coord+float2(1,-1)*bof);
res += gauss7[2][1]*tex2D(SamplerBloom1,coord+float2(2,-1)*bof);
res += gauss7[3][1]*tex2D(SamplerBloom1,coord+float2(3,-1)*bof);
res += gauss7[3][0]*tex2D(SamplerBloom1,coord+float2(-3,0)*bof);
res += gauss7[2][0]*tex2D(SamplerBloom1,coord+float2(-2,0)*bof);
res += gauss7[1][0]*tex2D(SamplerBloom1,coord+float2(-1,0)*bof);
res += gauss7[0][0]*tex2D(SamplerBloom1,coord+float2(0,0)*bof);
res += gauss7[1][0]*tex2D(SamplerBloom1,coord+float2(1,0)*bof);
res += gauss7[2][0]*tex2D(SamplerBloom1,coord+float2(2,0)*bof);
res += gauss7[3][0]*tex2D(SamplerBloom1,coord+float2(3,0)*bof);
res += gauss7[3][1]*tex2D(SamplerBloom1,coord+float2(-3,1)*bof);
res += gauss7[2][1]*tex2D(SamplerBloom1,coord+float2(-2,1)*bof);
res += gauss7[1][1]*tex2D(SamplerBloom1,coord+float2(-1,1)*bof);
res += gauss7[0][1]*tex2D(SamplerBloom1,coord+float2(0,1)*bof);
res += gauss7[1][1]*tex2D(SamplerBloom1,coord+float2(1,1)*bof);
res += gauss7[2][1]*tex2D(SamplerBloom1,coord+float2(2,1)*bof);
res += gauss7[3][1]*tex2D(SamplerBloom1,coord+float2(3,1)*bof);
res += gauss7[3][2]*tex2D(SamplerBloom1,coord+float2(-3,2)*bof);
res += gauss7[2][2]*tex2D(SamplerBloom1,coord+float2(-2,2)*bof);
res += gauss7[1][2]*tex2D(SamplerBloom1,coord+float2(-1,2)*bof);
res += gauss7[0][2]*tex2D(SamplerBloom1,coord+float2(0,2)*bof);
res += gauss7[1][2]*tex2D(SamplerBloom1,coord+float2(1,2)*bof);
res += gauss7[2][2]*tex2D(SamplerBloom1,coord+float2(2,2)*bof);
res += gauss7[3][2]*tex2D(SamplerBloom1,coord+float2(3,2)*bof);
res += gauss7[3][3]*tex2D(SamplerBloom1,coord+float2(-3,3)*bof);
res += gauss7[2][3]*tex2D(SamplerBloom1,coord+float2(-2,3)*bof);
res += gauss7[1][3]*tex2D(SamplerBloom1,coord+float2(-1,3)*bof);
res += gauss7[0][3]*tex2D(SamplerBloom1,coord+float2(0,3)*bof);
res += gauss7[1][3]*tex2D(SamplerBloom1,coord+float2(1,3)*bof);
res += gauss7[2][3]*tex2D(SamplerBloom1,coord+float2(2,3)*bof);
res += gauss7[3][3]*tex2D(SamplerBloom1,coord+float2(3,3)*bof);
return res;
}
/* end pass */
float4 PS_BloomPostPass(VS_OUTPUT_POST In) : COLOR
{
float2 coord = In.txcoord0.xy;
float4 res = (tex2D(SamplerBloom1,coord)+tex2D(SamplerBloom2,coord)
+tex2D(SamplerBloom3,coord)+tex2D(SamplerBloom4,coord)
+tex2D(SamplerBloom5,coord)+tex2D(SamplerBloom6,coord)
+tex2D(SamplerBloom7,coord)+tex2D(SamplerBloom8,coord))*0.125;
return res;
}
/* techniques */
technique BloomPrePass
{
pass p0
{
VertexShader = compile vs_3_0 VS_Bloom();
PixelShader = compile ps_3_0 PS_BloomPrePass();
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
CullMode = NONE;
AlphaBlendEnable = FALSE;
AlphaTestEnable = FALSE;
SEPARATEALPHABLENDENABLE = FALSE;
FogEnable = FALSE;
SRGBWRITEENABLE = FALSE;
}
}
technique BloomTexture1
{
pass p0
{
VertexShader = compile vs_3_0 VS_Bloom();
PixelShader = compile ps_3_0 PS_BloomTexture();
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
CullMode = NONE;
AlphaBlendEnable = FALSE;
AlphaTestEnable = FALSE;
SEPARATEALPHABLENDENABLE = FALSE;
FogEnable = FALSE;
SRGBWRITEENABLE = FALSE;
}
}
technique BloomPostPass
{
pass p0
{
VertexShader = compile vs_3_0 VS_Bloom();
PixelShader = compile ps_3_0 PS_BloomPostPass();
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
CullMode = NONE;
AlphaBlendEnable = FALSE;
AlphaTestEnable = FALSE;
SEPARATEALPHABLENDENABLE = FALSE;
FogEnable = FALSE;
SRGBWRITEENABLE = FALSE;
}
}

View file

@ -2,20 +2,9 @@
menbbloominternals.fx : MariENB bloom internal variables.
(C)2013-2014 Marisa Kirisame, UnSX Team.
Part of MariENB, the personal ENB of Marisa.
Released under the MIT License.
Released under the WTFPL.
*/
/* gaussian blur matrices */
static const float2x2 gauss3 =
{
0.16,0.12,
0.12,0.09
};
static const float3x3 gauss5 =
{
0.0865051903114,0.0692041522491,0.0346020761246,
0.0692041522491,0.0553633217993,0.0276816609,
0.0346020761246,0.0276816609,0.01384083045
};
static const float4x4 gauss7 =
{
0.0632507440209,0.0527089533508,0.0301194019147,0.011294775718,
@ -23,18 +12,12 @@ static const float4x4 gauss7 =
0.0301194019147,0.0250995015956,0.01434257234,0.00537846462763,
0.011294775718,0.00941231309835,0.00537846462763,0.00201692423536
};
/* standard stuff (not all used) */
float4 tempF1;
float4 tempF2;
float4 tempF3;
/* standard stuff */
float4 ScreenSize;
float4 Timer;
float4 TempParameters;
float4 LenzParameters;
float4 BloomParameters;
float ENightDayFactor;
float EInteriorFactor;
/* samplers and textures (some left unused) */
/* samplers and textures */
texture2D texBloom1;
texture2D texBloom2;
texture2D texBloom3;

View file

@ -0,0 +1,90 @@
/*
menbbloomsettings.fx : MariENB bloom user-tweakable variables.
(C)2013-2014 Marisa Kirisame, UnSX Team.
Part of MariENB, the personal ENB of Marisa.
Released under the WTFPL.
*/
/* bloom intensity */
float bloomintensity_n
<
string UIName = "BloomIntensityNight";
string UIWidget = "Spinner";
> = {0.25};
float bloomintensity_d
<
string UIName = "BloomIntensityDay";
string UIWidget = "Spinner";
> = {0.25};
float bloomintensity_in
<
string UIName = "BloomIntensityInteriorNight";
string UIWidget = "Spinner";
> = {0.25};
float bloomintensity_id
<
string UIName = "BloomIntensityInteriorDay";
string UIWidget = "Spinner";
> = {0.25};
/* bloom power */
float bloompower_n
<
string UIName = "BloomPowerNight";
string UIWidget = "Spinner";
> = {1.4};
float bloompower_d
<
string UIName = "BloomPowerDay";
string UIWidget = "Spinner";
> = {1.4};
float bloompower_in
<
string UIName = "BloomPowerInteriorNight";
string UIWidget = "Spinner";
> = {1.4};
float bloompower_id
<
string UIName = "BloomPowerInteriorDay";
string UIWidget = "Spinner";
> = {1.4};
/* bloom saturation */
float bloomsaturation_n
<
string UIName = "BloomSaturationNight";
string UIWidget = "Spinner";
> = {0.3};
float bloomsaturation_d
<
string UIName = "BloomSaturationDay";
string UIWidget = "Spinner";
> = {0.3};
float bloomsaturation_in
<
string UIName = "BloomSaturationInteriorNight";
string UIWidget = "Spinner";
> = {0.3};
float bloomsaturation_id
<
string UIName = "BloomSaturationInteriorDay";
string UIWidget = "Spinner";
> = {0.3};
/* bloom offset */
float bloombump_n
<
string UIName = "BloomBumpNight";
string UIWidget = "Spinner";
> = {-0.10};
float bloombump_d
<
string UIName = "BloomBumpDay";
string UIWidget = "Spinner";
> = {-0.10};
float bloombump_in
<
string UIName = "BloomBumpInteriorNight";
string UIWidget = "Spinner";
> = {-0.10};
float bloombump_id
<
string UIName = "BloomBumpInteriorDay";
string UIWidget = "Spinner";
> = {-0.10};

View file

@ -0,0 +1,221 @@
/*
menbeffectfilters.fx : MariENB base shader routines.
(C)2013-2014 Marisa Kirisame, UnSX Team.
Part of MariENB, the personal ENB of Marisa.
Released under the WTFPL.
*/
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.txcoord0.xy = IN.txcoord0.xy;
return OUT;
}
/* MariENB shader */
float4 PS_Mari( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR
{
float2 coord = IN.txcoord0.xy;
float4 res = tex2D(_s0,coord);
float tod = ENightDayFactor;
float ind = EInteriorFactor;
/* Border darken, commonly known as "vignette" */
float2 bresl = float2(1.0,ScreenSize.w);
float dkradius = lerp(lerp(dkradius_n,dkradius_d,tod),lerp(dkradius_in,
dkradius_id,tod),ind);
float dkbump = lerp(lerp(dkbump_n,dkbump_d,tod),lerp(dkbump_in,
dkbump_id,tod),ind);
float dkcurve = lerp(lerp(dkcurve_n,dkcurve_d,tod),lerp(dkcurve_in,
dkcurve_id,tod),ind);
float2 bof = bresl*dkradius;
float val = 0.0;
if ( coord.x < bof.x )
val = lerp(val,1,1.0-coord.x/bof.x);
if ( coord.y < bof.y )
val = lerp(val,1,1.0-coord.y/bof.y);
if ( 1.0-coord.x < bof.x )
val = lerp(val,1,1.0-(1.0-coord.x)/bof.x);
if ( 1.0-coord.y < bof.y )
val = lerp(val,1,1.0-(1.0-coord.y)/bof.y);
val = clamp(val*dkbump,0,1);
res.rgb = lerp(res.rgb,float3(0,0,0),pow(val,dkcurve));
/* adaptation */
float4 adapt = tex2D(_s4,0.5);
float adapts = clamp((adapt.r+adapt.g+adapt.b)/3.0,0.0,50.0);
float amin = lerp(lerp(amin_n,amin_d,tod),lerp(amin_in,amin_id,tod),
ind);
float amax = lerp(lerp(amax_n,amax_d,tod),lerp(amax_in,amax_id,tod),
ind);
res.rgb = res.rgb/(adapts*amax+amin);
/* color grading prepass overbright/oversaturation compensation */
float comppow = lerp(lerp(comppow_n,comppow_d,tod),lerp(comppow_in,
comppow_id,tod),ind);
float compsat = lerp(lerp(compsat_n,compsat_d,tod),lerp(compsat_in,
compsat_id,tod),ind);
float compfactor = lerp(lerp(compfactor_n,compfactor_d,tod),
lerp(compfactor_in,compfactor_id,tod),ind);
float4 ovr = pow(res,comppow);
float ovrs = (ovr.r+ovr.g+ovr.b)/3.0;
ovr = ovr*compsat+ovrs*(1.0-compsat);
res.rgb -= ovr.rgb*compfactor;
/* screen mud goes here */
if ( softbloom )
{
bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
bof = float2(1.0/bresl.x,1.0/bresl.y);
res += gauss5[2][2]*tex2D(_s3,coord+float2(-2,-2)*bof);
res += gauss5[1][2]*tex2D(_s3,coord+float2(-1,-2)*bof);
res += gauss5[0][2]*tex2D(_s3,coord+float2(0,-2)*bof);
res += gauss5[1][2]*tex2D(_s3,coord+float2(1,-2)*bof);
res += gauss5[2][2]*tex2D(_s3,coord+float2(2,-2)*bof);
res += gauss5[2][1]*tex2D(_s3,coord+float2(-2,-1)*bof);
res += gauss5[1][1]*tex2D(_s3,coord+float2(-1,-1)*bof);
res += gauss5[0][1]*tex2D(_s3,coord+float2(0,-1)*bof);
res += gauss5[1][1]*tex2D(_s3,coord+float2(1,-1)*bof);
res += gauss5[2][1]*tex2D(_s3,coord+float2(2,-1)*bof);
res += gauss5[2][0]*tex2D(_s3,coord+float2(-2,0)*bof);
res += gauss5[1][0]*tex2D(_s3,coord+float2(-1,0)*bof);
res += gauss5[0][0]*tex2D(_s3,coord+float2(0,0)*bof);
res += gauss5[1][0]*tex2D(_s3,coord+float2(1,0)*bof);
res += gauss5[2][0]*tex2D(_s3,coord+float2(2,0)*bof);
res += gauss5[2][1]*tex2D(_s3,coord+float2(-2,1)*bof);
res += gauss5[1][1]*tex2D(_s3,coord+float2(-1,1)*bof);
res += gauss5[0][1]*tex2D(_s3,coord+float2(0,1)*bof);
res += gauss5[1][1]*tex2D(_s3,coord+float2(1,1)*bof);
res += gauss5[2][1]*tex2D(_s3,coord+float2(2,1)*bof);
res += gauss5[2][2]*tex2D(_s3,coord+float2(-2,2)*bof);
res += gauss5[1][2]*tex2D(_s3,coord+float2(-1,2)*bof);
res += gauss5[0][2]*tex2D(_s3,coord+float2(0,2)*bof);
res += gauss5[1][2]*tex2D(_s3,coord+float2(1,2)*bof);
res += gauss5[2][2]*tex2D(_s3,coord+float2(2,2)*bof);
res *= EBloomAmount;
}
else
res += tex2D(_s3,coord)*EBloomAmount;
/*
color grading (brightness, contrast, gamma, tinting, everything you
could ever need)
*/
float grademul_r = lerp(lerp(grademul_r_n,grademul_r_d,tod),
lerp(grademul_r_in,grademul_r_id,tod),ind);
float grademul_g = lerp(lerp(grademul_g_n,grademul_g_d,tod),
lerp(grademul_g_in,grademul_g_id,tod),ind);
float grademul_b = lerp(lerp(grademul_b_n,grademul_b_d,tod),
lerp(grademul_b_in,grademul_b_id,tod),ind);
float gradepow_r = lerp(lerp(gradepow_r_n,gradepow_r_d,tod),
lerp(gradepow_r_in,gradepow_r_id,tod),ind);
float gradepow_g = lerp(lerp(gradepow_g_n,gradepow_g_d,tod),
lerp(gradepow_g_in,gradepow_g_id,tod),ind);
float gradepow_b = lerp(lerp(gradepow_b_n,gradepow_b_d,tod),
lerp(gradepow_b_in,gradepow_b_id,tod),ind);
float gradecol_r = lerp(lerp(gradecol_r_n,gradecol_r_d,tod),
lerp(gradecol_r_in,gradecol_r_id,tod),ind);
float gradecol_g = lerp(lerp(gradecol_g_n,gradecol_g_d,tod),
lerp(gradecol_g_in,gradecol_g_id,tod),ind);
float gradecol_b = lerp(lerp(gradecol_b_n,gradecol_b_d,tod),
lerp(gradecol_b_in,gradecol_b_id,tod),ind);
float gradecolfact = lerp(lerp(gradecolfact_n,gradecolfact_d,
tod),lerp(gradecolfact_in,gradecolfact_id,tod),ind);
float3 grademul = float3(grademul_r,grademul_g,grademul_b);
float3 gradepow = float3(gradepow_r,gradepow_g,gradepow_b);
float3 gradecol = float3(gradecol_r,gradecol_g,gradecol_b);
res.rgb = saturate(pow(res.rgb,gradepow));
res.rgb = saturate(res.rgb*grademul);
float tonev = (res.r+res.g+res.b)/3.0;
float3 tonecolor = gradecol*tonev;
res.rgb = res.rgb*(1.0-gradecolfact)+tonecolor*gradecolfact;
/* letterbox filter */
res.rgb = saturate(res.rgb);
float boxf = pow(clamp(boxv-abs(2.0*coord.y-1.0),0.0,1.0),boxb);
res.rgb = lerp(res.rgb*(1.0-boxa),res.rgb,boxf);
res.a = 1.0;
return res;
}
/*
So... let me get this straight... rather than simply switching techniques,
Boris just compiles the program twice with and without this macro, then
toggling "UseEffect" switches between each variation? What the fuck?
*/
#ifndef ENB_FLIPTECHNIQUE
technique Shader_D6EC7DD1
#else
technique Shader_ORIGINALPOSTPROCESS
#endif
{
pass p0
{
VertexShader = compile vs_3_0 VS_Pass();
PixelShader = compile ps_3_0 PS_Mari();
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
ZEnable = FALSE;
ZWriteEnable = FALSE;
CullMode = NONE;
AlphaTestEnable = FALSE;
AlphaBlendEnable = FALSE;
SRGBWRITEENABLE = FALSE;
}
}
#ifndef ENB_FLIPTECHNIQUE
technique Shader_ORIGINALPOSTPROCESS
#else
technique Shader_D6EC7DD1
#endif
{
pass p0
{
VertexShader = compile vs_3_0 VS_Pass();
/*
>2014
>inline assembly
Have to keep this part intact, sadly
Boris what the fuck have you done
*/
PixelShader = asm
{
ps_3_0
def c6,0,0,0,0
def c7,0.212500006,0.715399981,0.0720999986,1
dcl_texcoord v0.xy
dcl_2d s0
dcl_2d s1
dcl_2d s2
rcp r0.x,c2.y
texld r1,v0,s2
mul r0.yz,r1.xxyw,c1.y
rcp r0.w,r0.y
mul r0.z,r0.w,r0.z
texld r1,v0,s1
mul r1.xyz,r1,c1.y
dp3 r0.w,c7,r1
mul r1.w,r0.w,r0.z
mad r0.z,r0.z,r0.w,c7.w
rcp r0.z,r0.z
mad r0.x,r1.w,r0.x,c7.w
mul r0.x,r0.x,r1.w
mul r0.x,r0.z,r0.x
cmp r0.x,-r0.w,c6.x,r0.x
rcp r0.z,r0.w
mul r0.z,r0.z,r0.x
add_sat r0.x,-r0.x,c2.x
texld r2,v0,s0
mul r2.xyz,r2,c1.y
mul r2.xyz,r0.x,r2
mad r1.xyz,r1,r0.z,r2
dp3 r0.x,r1,c7
mov r1.w,c7.w
lrp r2,c3.x,r1,r0.x
mad r1,r0.x,c4,-r2
mad r1,c4.w,r1,r2
mad r1,c3.w,r1,-r0.y
mad r0,c3.z,r1,r0.y
add r1,-r0,c5
mad oC0,c5.w,r1,r0
};
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
ZEnable = FALSE;
ZWriteEnable = FALSE;
CullMode = NONE;
AlphaTestEnable = FALSE;
AlphaBlendEnable = FALSE;
SRGBWRITEENABLE = FALSE;
}
}

View file

@ -2,37 +2,21 @@
menbeffectinternals.fx : MariENB base internal variables.
(C)2013-2014 Marisa Kirisame, UnSX Team.
Part of MariENB, the personal ENB of Marisa.
Released under the MIT License.
Released under the WTFPL.
*/
/* gaussian blur matrices */
static const float2x2 gauss3 =
{
0.16,0.12,
0.12,0.09
};
static const float3x3 gauss5 =
{
0.0865051903114,0.0692041522491,0.0346020761246,
0.0692041522491,0.0553633217993,0.0276816609,
0.0346020761246,0.0276816609,0.01384083045
};
static const float4x4 gauss7 =
{
0.0632507440209,0.0527089533508,0.0301194019147,0.011294775718,
0.0527089533508,0.0439241277923,0.0250995015956,0.00941231309835,
0.0301194019147,0.0250995015956,0.01434257234,0.00537846462763,
0.011294775718,0.00941231309835,0.00537846462763,0.00201692423536
};
/* standard stuff (not all used) */
float4 tempF1;
float4 tempF2;
float4 tempF3;
float4 Timer;
/* standard stuff */
float4 ScreenSize;
float ENightDayFactor;
float EInteriorFactor;
float EBloomAmount;
/* samplers and textures (some unused) */
/* samplers and textures */
texture2D texs0;
texture2D texs1;
texture2D texs2;
@ -54,8 +38,8 @@ sampler2D _s0 = sampler_state
sampler2D _s1 = sampler_state
{
Texture = <texs1>;
MinFilter = POINT;
MagFilter = POINT;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
@ -66,8 +50,8 @@ sampler2D _s1 = sampler_state
sampler2D _s2 = sampler_state
{
Texture = <texs2>;
MinFilter = POINT;
MagFilter = POINT;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
@ -78,8 +62,8 @@ sampler2D _s2 = sampler_state
sampler2D _s3 = sampler_state
{
Texture = <texs3>;
MinFilter = POINT;
MagFilter = POINT;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
@ -90,8 +74,8 @@ sampler2D _s3 = sampler_state
sampler2D _s4 = sampler_state
{
Texture = <texs4>;
MinFilter = POINT;
MagFilter = POINT;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
@ -102,8 +86,8 @@ sampler2D _s4 = sampler_state
sampler2D _s7 = sampler_state
{
Texture = <texs7>;
MinFilter = POINT;
MagFilter = POINT;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;

View file

@ -0,0 +1,402 @@
/*
menbeffectsettings.fx : MariENB base user-tweakable variables.
(C)2013-2014 Marisa Kirisame, UnSX Team.
Part of MariENB, the personal ENB of Marisa.
Released under the WTFPL.
*/
/* Border darkening */
/* radius of darkening (relative to screen width) */
float dkradius_n
<
string UIName = "DarkRadiusNight";
string UIWidget = "Spinner";
> = {0.40};
float dkradius_d
<
string UIName = "DarkRadiusDay";
string UIWidget = "Spinner";
> = {0.29};
float dkradius_in
<
string UIName = "DarkRadiusInteriorNight";
string UIWidget = "Spinner";
> = {0.50};
float dkradius_id
<
string UIName = "DarkRadiusInteriorDay";
string UIWidget = "Spinner";
> = {0.39};
/* falloff of darkening */
float dkcurve_n
<
string UIName = "DarkCurveNight";
string UIWidget = "Spinner";
> = {1.70};
float dkcurve_d
<
string UIName = "DarkCurveDay";
string UIWidget = "Spinner";
> = {2.30};
float dkcurve_in
<
string UIName = "DarkCurveInteriorNight";
string UIWidget = "Spinner";
> = {1.35};
float dkcurve_id
<
string UIName = "DarkCurveInteriorDay";
string UIWidget = "Spinner";
> = {1.67};
/* bump of darkening */
float dkbump_n
<
string UIName = "DarkBumpNight";
string UIWidget = "Spinner";
> = {0.74};
float dkbump_d
<
string UIName = "DarkBumpDay";
string UIWidget = "Spinner";
> = {0.33};
float dkbump_in
<
string UIName = "DarkBumpInteriorNight";
string UIWidget = "Spinner";
> = {0.82};
float dkbump_id
<
string UIName = "DarkBumpInteriorDay";
string UIWidget = "Spinner";
> = {0.61};
/* Adaptation */
float amin_n
<
string UIName = "AdaptationMinNight";
string UIWidget = "Spinner";
> = {0.20};
float amin_d
<
string UIName = "AdaptationMinDay";
string UIWidget = "Spinner";
> = {0.09};
float amin_in
<
string UIName = "AdaptationMinInteriorNight";
string UIWidget = "Spinner";
> = {0.17};
float amin_id
<
string UIName = "AdaptationMinInteriorDay";
string UIWidget = "Spinner";
> = {0.10};
float amax_n
<
string UIName = "AdaptationMaxNight";
string UIWidget = "Spinner";
> = {1.21};
float amax_d
<
string UIName = "AdaptationMaxDay";
string UIWidget = "Spinner";
> = {0.94};
float amax_in
<
string UIName = "AdaptationMaxInteriorNight";
string UIWidget = "Spinner";
> = {1.26};
float amax_id
<
string UIName = "AdaptationMaxInteriorDay";
string UIWidget = "Spinner";
> = {0.91};
/* Shine/bloom compensation */
/* compensation factor */
float compfactor_n
<
string UIName = "CompensateFactorNight";
string UIWidget = "Spinner";
> = {0.23};
float compfactor_d
<
string UIName = "CompensateFactorDay";
string UIWidget = "Spinner";
> = {0.46};
float compfactor_in
<
string UIName = "CompensateFactorInteriorNight";
string UIWidget = "Spinner";
> = {0.30};
float compfactor_id
<
string UIName = "CompensateFactorInteriorDay";
string UIWidget = "Spinner";
> = {0.39};
/* compensation power */
float comppow_n
<
string UIName = "CompensatePowerNight";
string UIWidget = "Spinner";
> = {1.08};
float comppow_d
<
string UIName = "CompensatePowerDay";
string UIWidget = "Spinner";
> = {1.11};
float comppow_in
<
string UIName = "CompensatePowerInteriorNight";
string UIWidget = "Spinner";
> = {1.05};
float comppow_id
<
string UIName = "CompensatePowerInteriorDay";
string UIWidget = "Spinner";
> = {1.14};
/* compensation saturation */
float compsat_n
<
string UIName = "CompensateSaturationNight";
string UIWidget = "Spinner";
> = {0.97};
float compsat_d
<
string UIName = "CompensateSaturationDay";
string UIWidget = "Spinner";
> = {0.85};
float compsat_in
<
string UIName = "CompensateSaturationInteriorNight";
string UIWidget = "Spinner";
> = {0.89};
float compsat_id
<
string UIName = "CompensateSaturationInteriorDay";
string UIWidget = "Spinner";
> = {0.74};
/* Color grading */
/* miscellaneous color grading parameters */
float grademul_r_n
<
string UIName = "GradingMulRNight";
string UIWidget = "Spinner";
> = {1.04};
float grademul_g_n
<
string UIName = "GradingMulGNight";
string UIWidget = "Spinner";
> = {1.08};
float grademul_b_n
<
string UIName = "GradingMulBNight";
string UIWidget = "Spinner";
> = {1.15};
float grademul_r_d
<
string UIName = "GradingMulRDay";
string UIWidget = "Spinner";
> = {1.66};
float grademul_g_d
<
string UIName = "GradingMulGDay";
string UIWidget = "Spinner";
> = {1.45};
float grademul_b_d
<
string UIName = "GradingMulBDay";
string UIWidget = "Spinner";
> = {1.29};
float grademul_r_in
<
string UIName = "GradingMulRInteriorNight";
string UIWidget = "Spinner";
> = {1.35};
float grademul_g_in
<
string UIName = "GradingMulGInteriorNight";
string UIWidget = "Spinner";
> = {1.18};
float grademul_b_in
<
string UIName = "GradingMulBInteriorNight";
string UIWidget = "Spinner";
> = {1.22};
float grademul_r_id
<
string UIName = "GradingMulRInteriorDay";
string UIWidget = "Spinner";
> = {1.71};
float grademul_g_id
<
string UIName = "GradingMulGInteriorDay";
string UIWidget = "Spinner";
> = {1.60};
float grademul_b_id
<
string UIName = "GradingMulBInteriorDay";
string UIWidget = "Spinner";
> = {1.41};
float gradepow_r_n
<
string UIName = "GradingPowRNight";
string UIWidget = "Spinner";
> = {1.02};
float gradepow_g_n
<
string UIName = "GradingPowGNight";
string UIWidget = "Spinner";
> = {1.06};
float gradepow_b_n
<
string UIName = "GradingPowBNight";
string UIWidget = "Spinner";
> = {1.03};
float gradepow_r_d
<
string UIName = "GradingPowRDay";
string UIWidget = "Spinner";
> = {1.09};
float gradepow_g_d
<
string UIName = "GradingPowGDay";
string UIWidget = "Spinner";
> = {1.08};
float gradepow_b_d
<
string UIName = "GradingPowBDay";
string UIWidget = "Spinner";
> = {1.05};
float gradepow_r_in
<
string UIName = "GradingPowRInteriorNight";
string UIWidget = "Spinner";
> = {1.08};
float gradepow_g_in
<
string UIName = "GradingPowGInteriorNight";
string UIWidget = "Spinner";
> = {1.11};
float gradepow_b_in
<
string UIName = "GradingPowBInteriorNight";
string UIWidget = "Spinner";
> = {1.06};
float gradepow_r_id
<
string UIName = "GradingPowRInteriorDay";
string UIWidget = "Spinner";
> = {1.05};
float gradepow_g_id
<
string UIName = "GradingPowGInteriorDay";
string UIWidget = "Spinner";
> = {1.04};
float gradepow_b_id
<
string UIName = "GradingPowBInteriorDay";
string UIWidget = "Spinner";
> = {1.04};
float gradecol_r_n
<
string UIName = "GradingColRNight";
string UIWidget = "Spinner";
> = {-0.59};
float gradecol_g_n
<
string UIName = "GradingColGNight";
string UIWidget = "Spinner";
> = {-0.26};
float gradecol_b_n
<
string UIName = "GradingColBNight";
string UIWidget = "Spinner";
> = {-0.73};
float gradecol_r_d
<
string UIName = "GradingColRDay";
string UIWidget = "Spinner";
> = {-0.62};
float gradecol_g_d
<
string UIName = "GradingColGDay";
string UIWidget = "Spinner";
> = {-0.10};
float gradecol_b_d
<
string UIName = "GradingColBDay";
string UIWidget = "Spinner";
> = {-0.81};
float gradecol_r_in
<
string UIName = "GradingColRInteriorNight";
string UIWidget = "Spinner";
> = {-0.41};
float gradecol_g_in
<
string UIName = "GradingColGInteriorNight";
string UIWidget = "Spinner";
> = {-0.18};
float gradecol_b_in
<
string UIName = "GradingColBInteriorNight";
string UIWidget = "Spinner";
> = {-1.69};
float gradecol_r_id
<
string UIName = "GradingColRInteriorDay";
string UIWidget = "Spinner";
> = {-0.60};
float gradecol_g_id
<
string UIName = "GradingColGInteriorDay";
string UIWidget = "Spinner";
> = {-0.45};
float gradecol_b_id
<
string UIName = "GradingColBInteriorDay";
string UIWidget = "Spinner";
> = {-0.85};
float gradecolfact_n
<
string UIName = "GradingColFactorNight";
string UIWidget = "Spinner";
> = {-0.11};
float gradecolfact_d
<
string UIName = "GradingColFactorDay";
string UIWidget = "Spinner";
> = {-0.14};
float gradecolfact_in
<
string UIName = "GradingColFactorInteriorNight";
string UIWidget = "Spinner";
> = {-0.14};
float gradecolfact_id
<
string UIName = "GradingColFactorInteriorDay";
string UIWidget = "Spinner";
> = {-0.20};
/* Letterbox */
/* vertical factor */
float boxv
<
string UIName = "BoxVertical";
string UIWidget = "Spinner";
> = {0.90};
/* softening */
float boxb
<
string UIName = "BoxSoften";
string UIWidget = "Spinner";
> = {0.01};
/* box alpha */
float boxa
<
string UIName = "BoxAlpha";
string UIWidget = "Spinner";
> = {12.00};
/* soften bloom texture */
bool softbloom
<
string UIName = "BloomSoften";
string UIWidget = "Checkbox";
> = {false};

View file

@ -0,0 +1,298 @@
/*
menbprepassfilters.fx : MariENB prepass shader routines.
(C)2013-2014 Marisa Kirisame, UnSX Team.
Part of MariENB, the personal ENB of Marisa.
Released under the WTFPL.
*/
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;
}
/*
Whoever wrote this shit deserves to die a slow, painful death for
commiting a crime against good programming. I'm leaving the algorithm
itself unaltered so you can see for yourself just how fucking disgusting it
is (yes, it says "linearlize").
*/
float linearlizeDepth( float nonlinearDepth )
{
float2 dofProj = float2(0.0509804,3098.0392);
float2 dofDist = float2(0.0,0.0509804);
float4 depth = nonlinearDepth;
depth.y = -dofProj.x+dofProj.y;
depth.y = 1.0/depth.y;
depth.z = depth.y*dofProj.y;
depth.z = depth.z*-dofProj.x;
depth.x = dofProj.y*-depth.y+depth.x;
depth.x = 1.0/depth.x;
depth.y = depth.z*depth.x;
depth.x = depth.z*depth.x-dofDist.y;
depth.x += dofDist.x*-0.5;
depth.x = max(depth.x,0.0);
return depth.x;
}
#define depthlinear(x) linearlizeDepth(tex2D(SamplerDepth,x).r)
/* New and improved edge detection, generally useful for contour shading */
float4 PS_Edge( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR
{
float2 coord = IN.txcoord.xy;
if ( noedge )
return tex2D(SamplerColor,coord);
float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
float2 bof = float2(1.0/bresl.x,1.0/bresl.y);
float mdx, mdy, mud;
/* this reduces texture fetches by half, big difference */
float3x3 depths;
depths[0][0] = depthlinear(coord+float2(-1,-1)*bof);
depths[1][0] = depthlinear(coord+float2(0,-1)*bof);
depths[2][0] = depthlinear(coord+float2(1,-1)*bof);
depths[0][1] = depthlinear(coord+float2(-1,0)*bof);
depths[1][1] = depthlinear(coord);
depths[2][1] = depthlinear(coord+float2(1,0)*bof);
depths[0][2] = depthlinear(coord+float2(-1,1)*bof);
depths[1][2] = depthlinear(coord+float2(0,1)*bof);
depths[2][2] = depthlinear(coord+float2(1,1)*bof);
mdx = GX[0][0]*depths[0][0];
mdx += GX[1][0]*depths[1][0];
mdx += GX[2][0]*depths[2][0];
mdx += GX[0][1]*depths[0][1];
mdx += GX[1][1]*depths[1][1];
mdx += GX[2][1]*depths[2][1];
mdx += GX[0][2]*depths[0][2];
mdx += GX[1][2]*depths[1][2];
mdx += GX[2][2]*depths[2][2];
mdy = GY[0][0]*depths[0][0];
mdy += GY[1][0]*depths[1][0];
mdy += GY[2][0]*depths[2][0];
mdy += GY[0][1]*depths[0][1];
mdy += GY[1][1]*depths[1][1];
mdy += GY[2][1]*depths[2][1];
mdy += GY[0][2]*depths[0][2];
mdy += GY[1][2]*depths[1][2];
mdy += GY[2][2]*depths[2][2];
mud = pow(mdx*mdx+mdy*mdy,0.5);
float fade = 1.0-tex2D(SamplerDepth,coord).x;
mud *= saturate(pow(fade,edgefadepow)*edgefademult);
mud = saturate(pow(mud,edgepow)*edgemult);
float4 res = tex2D(SamplerColor,coord);
if ( edgeview )
res.rgb = mud;
else
res.rgb -= mud;
return saturate(res);
}
/* Focus */
float4 PS_ReadFocus( VS_OUTPUT_POST IN ) : COLOR
{
if ( dofdisable )
return 0.0;
float tod = ENightDayFactor;
float ind = EInteriorFactor;
float focusmax = lerp(lerp(focusmax_n,focusmax_d,tod),lerp(focusmax_in,
focusmax_id,tod),ind);
float cfocus = min(tex2D(SamplerDepth,0.5),focusmax*0.001);
if ( !focuscircle )
return cfocus;
float focusradius = lerp(lerp(focusradius_n,focusradius_d,tod),
lerp(focusradius_in,focusradius_id,tod),ind);
float focusmix = lerp(lerp(focusmix_n,focusmix_d,tod),lerp(focusmix_in,
focusmix_id,tod),ind);
float step = (1.0/3.0);
float mfocus;
float2 coord;
float2 bof = float2(1.0,ScreenSize.w)*focusradius*0.001;
/* unrolled this too... *sigh* */
coord.x = 0.5+sin(0.0)*bof.x;
coord.y = 0.5+cos(0.0)*bof.y;
mfocus = step*min(tex2D(SamplerDepth,coord),focusmax*0.001);
coord.x = 0.5+sin(2.0*pi*step)*bof.x;
coord.y = 0.5+cos(2.0*pi*step)*bof.y;
mfocus += step*min(tex2D(SamplerDepth,coord),focusmax*0.001);
coord.x = 0.5+sin(4.0*pi*step)*bof.x;
coord.y = 0.5+cos(4.0*pi*step)*bof.y;
mfocus += step*min(tex2D(SamplerDepth,coord),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_DoF( VS_OUTPUT_POST IN, float2 vPos : VPOS, uniform int p ) : COLOR
{
float2 coord = IN.txcoord.xy;
if ( dofdisable || (!doftwopass && (p != 0)) )
return tex2D(SamplerColor,coord);
float tod = ENightDayFactor;
float ind = EInteriorFactor;
float dofpow = lerp(lerp(dofpow_n,dofpow_d,tod),lerp(dofpow_in,
dofpow_id,tod),ind);
float dofmult = lerp(lerp(dofmult_n,dofmult_d,tod),lerp(dofmult_in,
dofmult_id,tod),ind);
float doffixedfocuspow = lerp(lerp(doffixedfocuspow_n,
doffixedfocuspow_d,tod),lerp(doffixedfocuspow_in,
doffixedfocuspow_id,tod),ind);
float doffixedfocusmult = lerp(lerp(doffixedfocusmult_n,
doffixedfocusmult_d,tod),lerp(doffixedfocusmult_in,
doffixedfocusmult_id,tod),ind);
float doffixedfocusblend = lerp(lerp(doffixedfocusblend_n,
doffixedfocusblend_d,tod),lerp(doffixedfocusblend_in,
doffixedfocusblend_id,tod),ind);
float doffixedunfocuspow = lerp(lerp(doffixedunfocuspow_n,
doffixedunfocuspow_d,tod),lerp(doffixedunfocuspow_in,
doffixedunfocuspow_id,tod),ind);
float doffixedunfocusmult = lerp(lerp(doffixedunfocusmult_n,
doffixedunfocusmult_d,tod),lerp(doffixedunfocusmult_in,
doffixedunfocusmult_id,tod),ind);
float doffixedunfocusblend = lerp(lerp(doffixedunfocusblend_n,
doffixedunfocusblend_d,tod),lerp(doffixedunfocusblend_in,
doffixedunfocusblend_id,tod),ind);
float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
float2 bof = float2(1.0/bresl.x,1.0/bresl.y);
float dep;
if ( dofsmooth )
{
dep = gauss3[1][1]*tex2D(SamplerDepth,coord+float2(-1,-1)*bof);
dep += gauss3[0][1]*tex2D(SamplerDepth,coord+float2(0,-1)*bof);
dep += gauss3[1][1]*tex2D(SamplerDepth,coord+float2(1,-1)*bof);
dep += gauss3[1][0]*tex2D(SamplerDepth,coord+float2(-1,0)*bof);
dep += gauss3[0][0]*tex2D(SamplerDepth,coord+float2(0,0)*bof);
dep += gauss3[1][0]*tex2D(SamplerDepth,coord+float2(1,0)*bof);
dep += gauss3[1][1]*tex2D(SamplerDepth,coord+float2(-1,1)*bof);
dep += gauss3[0][1]*tex2D(SamplerDepth,coord+float2(0,1)*bof);
dep += gauss3[1][1]*tex2D(SamplerDepth,coord+float2(1,1)*bof);
}
else
dep = tex2D(SamplerDepth,coord);
float foc = tex2D(SamplerFocus,coord).x;
float dfc = abs(dep-foc);
float dff = abs(dep);
float dfu = dff;
dfc = saturate(pow(dfc,dofpow)*dofmult);
dff = saturate(pow(dff,doffixedfocuspow)*doffixedfocusmult);
dfu = saturate(pow(dfu,doffixedunfocuspow)*doffixedunfocusmult);
dfc *= lerp(1.0,dff,doffixedfocusblend);
dfc += lerp(0.0,dfu,doffixedunfocusblend);
if ( dofcutoff && (dep >= 0.999999) )
dfc = 0.0;
dfc = saturate(dfc);
/* aaand another unrolled loop */
float4 res;
bof *= pow(2,p);
res = gauss5[2][2]*tex2D(SamplerColor,coord+float2(-2,-2)*bof*dfc);
res += gauss5[1][2]*tex2D(SamplerColor,coord+float2(-1,-2)*bof*dfc);
res += gauss5[0][2]*tex2D(SamplerColor,coord+float2(0,-2)*bof*dfc);
res += gauss5[1][2]*tex2D(SamplerColor,coord+float2(1,-2)*bof*dfc);
res += gauss5[2][2]*tex2D(SamplerColor,coord+float2(2,-2)*bof*dfc);
res += gauss5[2][1]*tex2D(SamplerColor,coord+float2(-2,-1)*bof*dfc);
res += gauss5[1][1]*tex2D(SamplerColor,coord+float2(-1,-1)*bof*dfc);
res += gauss5[0][1]*tex2D(SamplerColor,coord+float2(0,-1)*bof*dfc);
res += gauss5[1][1]*tex2D(SamplerColor,coord+float2(1,-1)*bof*dfc);
res += gauss5[2][1]*tex2D(SamplerColor,coord+float2(2,-1)*bof*dfc);
res += gauss5[2][0]*tex2D(SamplerColor,coord+float2(-2,0)*bof*dfc);
res += gauss5[1][0]*tex2D(SamplerColor,coord+float2(-1,0)*bof*dfc);
res += gauss5[0][0]*tex2D(SamplerColor,coord+float2(0,0)*bof*dfc);
res += gauss5[1][0]*tex2D(SamplerColor,coord+float2(1,0)*bof*dfc);
res += gauss5[2][0]*tex2D(SamplerColor,coord+float2(2,0)*bof*dfc);
res += gauss5[2][1]*tex2D(SamplerColor,coord+float2(-2,1)*bof*dfc);
res += gauss5[1][1]*tex2D(SamplerColor,coord+float2(-1,1)*bof*dfc);
res += gauss5[0][1]*tex2D(SamplerColor,coord+float2(0,1)*bof*dfc);
res += gauss5[1][1]*tex2D(SamplerColor,coord+float2(1,1)*bof*dfc);
res += gauss5[2][1]*tex2D(SamplerColor,coord+float2(2,1)*bof*dfc);
res += gauss5[2][2]*tex2D(SamplerColor,coord+float2(-2,2)*bof*dfc);
res += gauss5[1][2]*tex2D(SamplerColor,coord+float2(-1,2)*bof*dfc);
res += gauss5[0][2]*tex2D(SamplerColor,coord+float2(0,2)*bof*dfc);
res += gauss5[1][2]*tex2D(SamplerColor,coord+float2(1,2)*bof*dfc);
res += gauss5[2][2]*tex2D(SamplerColor,coord+float2(2,2)*bof*dfc);
if ( dofdebug )
return dfc;
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_Edge();
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_DoF(0);
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_DoF(1);
DitherEnable = FALSE;
ZEnable = FALSE;
CullMode = NONE;
ALPHATESTENABLE = FALSE;
SEPARATEALPHABLENDENABLE = FALSE;
AlphaBlendEnable = FALSE;
StencilEnable = FALSE;
FogEnable = FALSE;
SRGBWRITEENABLE = FALSE;
}
}

View file

@ -2,10 +2,23 @@
menbprepassinternals.fx : MariENB prepass internal variables.
(C)2013-2014 Marisa Kirisame, UnSX Team.
Part of MariENB, the personal ENB of Marisa.
Released under the MIT License.
Released under the WTFPL.
*/
/* mathematical constants */
static const float pi = 3.1415926535898;
/* edge detect factors */
static const float3x3 GX =
{
-1, 0, 1,
-2, 0, 2,
-1, 0, 1
};
static const float3x3 GY =
{
1, 2, 1,
0, 0, 0,
-1,-2,-1
};
/* gaussian blur matrices */
static const float2x2 gauss3 =
{
@ -18,37 +31,15 @@ static const float3x3 gauss5 =
0.0692041522491,0.0553633217993,0.0276816609,
0.0346020761246,0.0276816609,0.01384083045
};
static const float4x4 gauss7 =
{
0.0632507440209,0.0527089533508,0.0301194019147,0.011294775718,
0.0527089533508,0.0439241277923,0.0250995015956,0.00941231309835,
0.0301194019147,0.0250995015956,0.01434257234,0.00537846462763,
0.011294775718,0.00941231309835,0.00537846462763,0.00201692423536
};
/* SSAO sample sphere */
static const float3 ssao_samples[16] =
{
float3( 0.5381, 0.1856,-0.4319),float3( 0.1379, 0.2486, 0.4430),
float3( 0.3371, 0.5679,-0.0057),float3(-0.6999,-0.0451,-0.0019),
float3( 0.0689,-0.1598,-0.8547),float3( 0.0560, 0.0069,-0.1843),
float3(-0.0146, 0.1402, 0.0762),float3( 0.0100,-0.1924,-0.0344),
float3(-0.3577,-0.5301,-0.4358),float3(-0.3169, 0.1063, 0.0158),
float3( 0.0103,-0.5869, 0.0046),float3(-0.0897,-0.4940, 0.3287),
float3( 0.7119,-0.0154,-0.0918),float3(-0.0533, 0.0596,-0.5411),
float3( 0.0352,-0.0631, 0.5460),float3(-0.4776, 0.2847,-0.0271)
};
/* standard stuff (not all used) */
float4 tempF1;
float4 tempF2;
float4 tempF3;
float4 Timer;
/* standard stuff */
float4 ScreenSize;
float ENightDayFactor;
float EInteriorFactor;
float FadeFactor;
extern float fWaterLevel = 1.0;
/* samplers and textures (some unused) */
float4 Timer;
/* samplers and textures */
texture2D texColor;
texture2D texDepth;
texture2D texNoise;
texture2D texFocus;
texture2D texCurr;
texture2D texPrev;
@ -76,18 +67,6 @@ sampler2D SamplerDepth = sampler_state
MaxMipLevel = 0;
MipMapLodBias = 0;
};
sampler2D SamplerNoise = sampler_state
{
Texture = <texNoise>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Wrap;
AddressV = Wrap;
SRGBTexture = FALSE;
MaxMipLevel = 0;
MipMapLodBias = 0;
};
sampler2D SamplerFocus = sampler_state
{
Texture = <texFocus>;

View file

@ -0,0 +1,306 @@
/*
menbprepasssettings.fx : MariENB prepass user-tweakable variables.
(C)2013-2014 Marisa Kirisame, UnSX Team.
Part of MariENB, the personal ENB of Marisa.
Released under the WTFPL.
*/
/* circle average focus */
bool focuscircle
<
string UIName = "FocusCircleEnable";
string UIWidget = "Checkbox";
> = {false};
/* radius of the outmost circle */
float focusradius_n
<
string UIName = "FocusCircleRadiusNight";
string UIWidget = "Spinner";
> = {12.5};
float focusradius_d
<
string UIName = "FocusCircleRadiusDay";
string UIWidget = "Spinner";
> = {12.5};
float focusradius_in
<
string UIName = "FocusCircleRadiusInteriorNight";
string UIWidget = "Spinner";
> = {12.5};
float focusradius_id
<
string UIName = "FocusCircleRadiusInteriorDay";
string UIWidget = "Spinner";
> = {12.5};
/* mix factor with sample at screen center */
float focusmix_n
<
string UIName = "FocusCircleMixNight";
string UIWidget = "Spinner";
> = {0.25};
float focusmix_d
<
string UIName = "FocusCircleMixDay";
string UIWidget = "Spinner";
> = {0.25};
float focusmix_in
<
string UIName = "FocusCircleMixInteriorNight";
string UIWidget = "Spinner";
> = {0.25};
float focusmix_id
<
string UIName = "FocusCircleMixInteriorDay";
string UIWidget = "Spinner";
> = {0.25};
/* maximum focus depth */
float focusmax_n
<
string UIName = "FocusMaxNight";
string UIWidget = "Spinner";
> = {1.0};
float focusmax_d
<
string UIName = "FocusMaxDay";
string UIWidget = "Spinner";
> = {1.0};
float focusmax_in
<
string UIName = "FocusMaxInteriorNight";
string UIWidget = "Spinner";
> = {1.0};
float focusmax_id
<
string UIName = "FocusMaxInteriorDay";
string UIWidget = "Spinner";
> = {1.0};
/* dof filter */
/* depth multiplier */
float dofmult_n
<
string UIName = "DoFMultNight";
string UIWidget = "Spinner";
> = {1.0};
float dofmult_d
<
string UIName = "DoFMultDay";
string UIWidget = "Spinner";
> = {1.0};
float dofmult_in
<
string UIName = "DoFMultInteriorNight";
string UIWidget = "Spinner";
> = {1.0};
float dofmult_id
<
string UIName = "DoFMultInteriorDay";
string UIWidget = "Spinner";
> = {1.0};
/* depth power */
float dofpow_n
<
string UIName = "DoFPowNight";
string UIWidget = "Spinner";
> = {1.0};
float dofpow_d
<
string UIName = "DoFPowDay";
string UIWidget = "Spinner";
> = {1.0};
float dofpow_in
<
string UIName = "DoFPowInteriorNight";
string UIWidget = "Spinner";
> = {1.0};
float dofpow_id
<
string UIName = "DoFPowInteriorDay";
string UIWidget = "Spinner";
> = {1.0};
/* fixed depth multiplier */
float doffixedfocusmult_n
<
string UIName = "DoFFixedFocusedMultNight";
string UIWidget = "Spinner";
> = {1.0};
float doffixedfocusmult_d
<
string UIName = "DoFFixedFocusedMultDay";
string UIWidget = "Spinner";
> = {1.0};
float doffixedfocusmult_in
<
string UIName = "DoFFixedFocusedMultInteriorNight";
string UIWidget = "Spinner";
> = {1.0};
float doffixedfocusmult_id
<
string UIName = "DoFFixedFocusedMultInteriorDay";
string UIWidget = "Spinner";
> = {1.0};
/* fixed depth power */
float doffixedfocuspow_n
<
string UIName = "DoFFixedFocusedPowNight";
string UIWidget = "Spinner";
> = {1.0};
float doffixedfocuspow_d
<
string UIName = "DoFFixedFocusedPowDay";
string UIWidget = "Spinner";
> = {1.0};
float doffixedfocuspow_in
<
string UIName = "DoFFixedFocusedPowInteriorNight";
string UIWidget = "Spinner";
> = {1.0};
float doffixedfocuspow_id
<
string UIName = "DoFFixedFocusedPowInteriorDay";
string UIWidget = "Spinner";
> = {1.0};
/* fixed depth blending */
float doffixedfocusblend_n
<
string UIName = "DoFFixedFocusedBlendNight";
string UIWidget = "Spinner";
> = {0.0};
float doffixedfocusblend_d
<
string UIName = "DoFFixedFocusedBlendDay";
string UIWidget = "Spinner";
> = {0.0};
float doffixedfocusblend_in
<
string UIName = "DoFFixedFocusedBlendInteriorNight";
string UIWidget = "Spinner";
> = {0.0};
float doffixedfocusblend_id
<
string UIName = "DoFFixedFocusedBlendInteriorDay";
string UIWidget = "Spinner";
> = {0.0};
float doffixedunfocusmult_n
<
string UIName = "DoFFixedUnfocusedMultNight";
string UIWidget = "Spinner";
> = {1.0};
float doffixedunfocusmult_d
<
string UIName = "DoFFixedUnfocusedMultDay";
string UIWidget = "Spinner";
> = {1.0};
float doffixedunfocusmult_in
<
string UIName = "DoFFixedUnfocusedMultInteriorNight";
string UIWidget = "Spinner";
> = {1.0};
float doffixedunfocusmult_id
<
string UIName = "DoFFixedUnfocusedMultInteriorDay";
string UIWidget = "Spinner";
> = {1.0};
/* fixed depth power */
float doffixedunfocuspow_n
<
string UIName = "DoFFixedUnfocusedPowNight";
string UIWidget = "Spinner";
> = {1.0};
float doffixedunfocuspow_d
<
string UIName = "DoFFixedUnfocusedPowDay";
string UIWidget = "Spinner";
> = {1.0};
float doffixedunfocuspow_in
<
string UIName = "DoFFixedUnfocusedPowInteriorNight";
string UIWidget = "Spinner";
> = {1.0};
float doffixedunfocuspow_id
<
string UIName = "DoFFixedUnfocusedPowInteriorDay";
string UIWidget = "Spinner";
> = {1.0};
/* fixed depth blending */
float doffixedunfocusblend_n
<
string UIName = "DoFFixedUnfocusedBlendNight";
string UIWidget = "Spinner";
> = {0.0};
float doffixedunfocusblend_d
<
string UIName = "DoFFixedUnfocusedBlendDay";
string UIWidget = "Spinner";
> = {0.0};
float doffixedunfocusblend_in
<
string UIName = "DoFFixedUnfocusedBlendInteriorNight";
string UIWidget = "Spinner";
> = {0.0};
float doffixedunfocusblend_id
<
string UIName = "DoFFixedUnfocusedBlendInteriorDay";
string UIWidget = "Spinner";
> = {0.0};
/* display dof factors per pixel */
bool dofdebug
<
string UIName = "DoFDebug";
string UIWidget = "Checkbox";
> = {false};
/* two-pass blur, makes you shortsighted */
bool doftwopass
<
string UIName = "DoFTwoPass";
string UIWidget = "Checkbox";
> = {false};
/* disable depth of field, in case you want just the contour filter */
bool dofdisable
<
string UIName = "DoFDisable";
string UIWidget = "Checkbox";
> = {false};
/* enable depth of field smoothing (3x3 gaussian blur, slight fps loss) */
bool dofsmooth
<
string UIName = "DoFSmoothing";
string UIWidget = "Checkbox";
> = {true};
/* enable depth of field sky cutoff (keeps sky sharp, but may look awful) */
bool dofcutoff
<
string UIName = "DoFCutoff";
string UIWidget = "Checkbox";
> = {false};
/* disable edge detect filters */
bool noedge
<
string UIName = "EdgeDisable";
string UIWidget = "Checkbox";
> = {true};
/* use "edge vision" instead of contour filter (just because it looks fancy) */
bool edgeview
<
string UIName = "EdgeView";
string UIWidget = "Checkbox";
> = {false};
/* factors */
float edgefadepow
<
string UIName = "EdgeFadePower";
string UIWidget = "Spinner";
> = {1.6};
float edgefademult
<
string UIName = "EdgeFadeMultiplier";
string UIWidget = "Spinner";
> = {16.0};
float edgepow
<
string UIName = "EdgePower";
string UIWidget = "Spinner";
> = {1.5};
float edgemult
<
string UIName = "EdgeMultiplier";
string UIWidget = "Spinner";
> = {32.0};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 361 KiB

View file

@ -1,160 +0,0 @@
/*
menbbloomfilters.fx : MariENB bloom shader routines.
(C)2013-2014 Marisa Kirisame, UnSX Team.
Part of MariENB, the personal ENB of Marisa.
Released under the MIT License.
*/
VS_OUTPUT_POST VS_Bloom(VS_INPUT_POST IN)
{
VS_OUTPUT_POST OUT;
float4 pos = float4(IN.pos.x,IN.pos.y,IN.pos.z,1);
OUT.vpos = pos;
OUT.txcoord0.xy = IN.txcoord0.xy+TempParameters.xy;
return OUT;
}
/* pre-pass bloom texture preparation */
float4 PS_BloomPrePass(VS_OUTPUT_POST In) : COLOR
{
float2 coord = In.txcoord0.xy;
if ( !preenable )
return tex2D(SamplerBloom1,coord);
float4 res = 0.0;
float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
float2 bof = float2(1.0/bresl.x,1.0/bresl.y)*presample;
int i, j;
if ( prelevel == 1 )
{
for ( i=-2; i<=2; i++ )
for ( j=-2; j<=2; j++ )
res += gauss5[abs(i)][abs(j)]
*tex2D(SamplerBloom1,coord+float2(i,j)
*bof);
}
else if ( prelevel == 2 )
{
for ( i=-3; i<=3; i++ )
for ( j=-3; j<=3; j++ )
res += gauss7[abs(i)][abs(j)]
*tex2D(SamplerBloom1,coord+float2(i,j)
*bof);
}
else
{
for ( i=-1; i<=1; i++ )
for ( j=-1; j<=1; j++ )
res += gauss3[abs(i)][abs(j)]
*tex2D(SamplerBloom1,coord+float2(i,j)
*bof);
}
return res;
}
/* multipass */
float4 PS_BloomTexture(VS_OUTPUT_POST In) : COLOR
{
float2 coord = In.txcoord0.xy;
float4 res = 0.0;
float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
float2 bof = float2(1.0/bresl.x,1.0/bresl.y)*postsample
*(TempParameters.w+0.25);
int i, j;
if ( postlevel == 1 )
{
for ( i=-2; i<=2; i++ )
for ( j=-2; j<=2; j++ )
res += gauss5[abs(i)][abs(j)]
*tex2D(SamplerBloom1,coord+float2(i,j)
*bof);
}
else if ( postlevel == 2 )
{
for ( i=-3; i<=3; i++ )
for ( j=-3; j<=3; j++ )
res += gauss7[abs(i)][abs(j)]
*tex2D(SamplerBloom1,coord+float2(i,j)
*bof);
}
else
{
for ( i=-1; i<=1; i++ )
for ( j=-1; j<=1; j++ )
res += gauss3[abs(i)][abs(j)]
*tex2D(SamplerBloom1,coord+float2(i,j)
*bof);
}
return res;
}
/* end pass */
float4 PS_BloomPostPass(VS_OUTPUT_POST In) : COLOR
{
float2 coord = In.txcoord0.xy;
float4 res = (tex2D(SamplerBloom1,coord)+tex2D(SamplerBloom2,coord)
+tex2D(SamplerBloom3,coord)+tex2D(SamplerBloom4,coord)
+tex2D(SamplerBloom5,coord)+tex2D(SamplerBloom6,coord)
+tex2D(SamplerBloom7,coord)+tex2D(SamplerBloom8,coord))*0.125;
res = pow(saturate(res+bloombump),bloompower);
float ress = (res.r+res.g+res.b)/3.0;
res = res*bloomsaturation+ress*(1.0-bloomsaturation);
res.rgb *= bloomintensity;
return res;
}
/* techniques */
technique BloomPrePass
{
pass p0
{
VertexShader = compile vs_3_0 VS_Bloom();
PixelShader = compile ps_3_0 PS_BloomPrePass();
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
CullMode = NONE;
AlphaBlendEnable = FALSE;
AlphaTestEnable = FALSE;
SEPARATEALPHABLENDENABLE = FALSE;
FogEnable = FALSE;
SRGBWRITEENABLE = FALSE;
}
}
technique BloomTexture1
{
pass p0
{
VertexShader = compile vs_3_0 VS_Bloom();
PixelShader = compile ps_3_0 PS_BloomTexture();
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
CullMode = NONE;
AlphaBlendEnable = FALSE;
AlphaTestEnable = FALSE;
SEPARATEALPHABLENDENABLE = FALSE;
FogEnable = FALSE;
SRGBWRITEENABLE = FALSE;
}
}
technique BloomTexture2
{
pass p0
{
VertexShader = compile vs_3_0 VS_Bloom();
PixelShader = compile ps_3_0 PS_BloomTexture();
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
CullMode = NONE;
AlphaBlendEnable = FALSE;
AlphaTestEnable = FALSE;
SEPARATEALPHABLENDENABLE = FALSE;
FogEnable = FALSE;
SRGBWRITEENABLE = FALSE;
}
}
technique BloomPostPass
{
pass p0
{
VertexShader = compile vs_3_0 VS_Bloom();
PixelShader = compile ps_3_0 PS_BloomPostPass();
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
CullMode = NONE;
AlphaBlendEnable = FALSE;
AlphaTestEnable = FALSE;
SEPARATEALPHABLENDENABLE = FALSE;
FogEnable = FALSE;
SRGBWRITEENABLE = FALSE;
}
}

View file

@ -1,60 +0,0 @@
/*
menbbloomsettings.fx : MariENB bloom user-tweakable variables.
(C)2013-2014 Marisa Kirisame, UnSX Team.
Part of MariENB, the personal ENB of Marisa.
Released under the MIT License.
*/
/* do bloom prepass blur */
bool preenable
<
string UIName = "PreEnable";
string UIWidget = "Checkbox";
> = {true};
/* bloom prepass blur radius */
float presample
<
string UIName = "PreSample";
string UIWidget = "Spinner";
> = {2.0};
/* bloom prepass blur level */
int prelevel
<
string UIName = "PreLevel";
string UIWidget = "Spinner";
> = {2};
/* bloom postpass blur radius */
float postsample
<
string UIName = "PostSample";
string UIWidget = "Spinner";
> = {8.0};
/* bloom postpas blur level */
int postlevel
<
string UIName = "PostLevel";
string UIWidget = "Spinner";
> = {1};
/* bloom intensity */
float bloomintensity
<
string UIName = "BloomIntensity";
string UIWidget = "Spinner";
> = {0.25};
/* bloom power */
float bloompower
<
string UIName = "BloomPower";
string UIWidget = "Spinner";
> = {1.4};
/* bloom saturation */
float bloomsaturation
<
string UIName = "BloomSaturation";
string UIWidget = "Spinner";
> = {0.3};
/* bloom offset */
float bloombump
<
string UIName = "BloomBump";
string UIWidget = "Spinner";
> = {-0.10};

View file

@ -1,179 +0,0 @@
/*
menbeffectfilters.fx : MariENB base shader routines.
(C)2013-2014 Marisa Kirisame, UnSX Team.
Part of MariENB, the personal ENB of Marisa.
Released under the MIT License.
*/
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.txcoord0.xy = IN.txcoord0.xy;
return OUT;
}
/* MariENB shader */
float4 PS_Mari( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR
{
float2 coord = IN.txcoord0.xy;
float4 res = tex2D(_s0,coord);
float tod = ENightDayFactor;
float ind = EInteriorFactor;
/* screen mud goes here */
if ( softbloom )
{
float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
float2 bof = float2(1.0/bresl.x,1.0/bresl.y)*softbloomsmp;
int i,j;
if ( softbloomlv == 1 )
{
for ( i=-2; i<=2; i++ )
for ( j=-2; j<=2; j++ )
res += gauss5[abs(i)][abs(j)]
*tex2D(_s3,coord+float2(i,j)
*bof)*EBloomAmount;
}
else if ( softbloomlv == 2 )
{
for ( i=-3; i<=3; i++ )
for ( j=-3; j<=3; j++ )
res += gauss7[abs(i)][abs(j)]
*tex2D(_s3,coord+float2(i,j)
*bof)*EBloomAmount;
}
else
{
for ( i=-1; i<=1; i++ )
for ( j=-1; j<=1; j++ )
res += gauss3[abs(i)][abs(j)]
*tex2D(_s3,coord+float2(i,j)
*bof)*EBloomAmount;
}
}
else
res += tex2D(_s3,coord)*EBloomAmount;
float4 adapt = tex2D(_s4,0.5);
/* adaptation */
if ( aenable )
{
float adapts = clamp((adapt.r+adapt.g+adapt.b)/3.0,0.0,50.0);
float amin = lerp(lerp(amin_n,amin_d,tod),lerp(amin_in,amin_id,
tod),ind);
float amax = lerp(lerp(amax_n,amax_d,tod),lerp(amax_in,amax_id,
tod),ind);
res.rgb = res.rgb/(adapts*amax+amin);
}
/* tone mapping */
if ( tmenable )
{
float tone = lerp(lerp(tone_n,tone_d,tod),lerp(tone_in,tone_id,
tod),ind);
float tovr = lerp(lerp(tovr_n,tovr_d,tod),lerp(tovr_in,tovr_id,
tod),ind);
res.rgb = (res.rgb*(1+res.rgb/tovr))/(res.rgb+tone);
}
/* palette texture */
if ( palenable )
{
float palb = lerp(lerp(palb_n,palb_d,tod),lerp(palb_in,palb_id,
tod),ind);
res.rgb = saturate(res.rgb);
float3 bright = adapt.rgb/(adapt.rgb+1.0);
float brights = (bright.r+bright.g+bright.b)/3.0;
float3 pal = float3(tex2D(_s7,float2(res.r,brights)).r,
tex2D(_s7,float2(res.g,brights)).g,
tex2D(_s7,float2(res.b,brights)).b);
res.rgb = res.rgb*(1.0-palb)+pal.rgb*palb;
}
res.a = 1.0;
return res;
}
/*
So... let me get this straight... rather than simply switching techniques,
Boris just compiles the program twice with and without this macro, then
toggling "UseEffect" switches between each variation? What the fuck?
*/
#ifndef ENB_FLIPTECHNIQUE
technique Shader_D6EC7DD1
#else
technique Shader_ORIGINALPOSTPROCESS
#endif
{
pass p0
{
VertexShader = compile vs_3_0 VS_Pass();
PixelShader = compile ps_3_0 PS_Mari();
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
ZEnable = FALSE;
ZWriteEnable = FALSE;
CullMode = NONE;
AlphaTestEnable = FALSE;
AlphaBlendEnable = FALSE;
SRGBWRITEENABLE = FALSE;
}
}
#ifndef ENB_FLIPTECHNIQUE
technique Shader_ORIGINALPOSTPROCESS
#else
technique Shader_D6EC7DD1
#endif
{
pass p0
{
VertexShader = compile vs_3_0 VS_Pass();
/*
>2014
>inline assembly
Have to keep this part intact, sadly
Boris what the fuck have you done
*/
PixelShader = asm
{
ps_3_0
def c6,0,0,0,0
def c7,0.212500006,0.715399981,0.0720999986,1
dcl_texcoord v0.xy
dcl_2d s0
dcl_2d s1
dcl_2d s2
rcp r0.x,c2.y
texld r1,v0,s2
mul r0.yz,r1.xxyw,c1.y
rcp r0.w,r0.y
mul r0.z,r0.w,r0.z
texld r1,v0,s1
mul r1.xyz,r1,c1.y
dp3 r0.w,c7,r1
mul r1.w,r0.w,r0.z
mad r0.z,r0.z,r0.w,c7.w
rcp r0.z,r0.z
mad r0.x,r1.w,r0.x,c7.w
mul r0.x,r0.x,r1.w
mul r0.x,r0.z,r0.x
cmp r0.x,-r0.w,c6.x,r0.x
rcp r0.z,r0.w
mul r0.z,r0.z,r0.x
add_sat r0.x,-r0.x,c2.x
texld r2,v0,s0
mul r2.xyz,r2,c1.y
mul r2.xyz,r0.x,r2
mad r1.xyz,r1,r0.z,r2
dp3 r0.x,r1,c7
mov r1.w,c7.w
lrp r2,c3.x,r1,r0.x
mad r1,r0.x,c4,-r2
mad r1,c4.w,r1,r2
mad r1,c3.w,r1,-r0.y
mad r0,c3.z,r1,r0.y
add r1,-r0,c5
mad oC0,c5.w,r1,r0
};
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
ZEnable = FALSE;
ZWriteEnable = FALSE;
CullMode = NONE;
AlphaTestEnable = FALSE;
AlphaBlendEnable = FALSE;
SRGBWRITEENABLE = FALSE;
}
}

View file

@ -1,140 +0,0 @@
/*
menbeffectsettings.fx : MariENB base user-tweakable variables.
(C)2013-2014 Marisa Kirisame, UnSX Team.
Part of MariENB, the personal ENB of Marisa.
Released under the MIT License.
*/
/* Soften bloom */
bool softbloom
<
string UIName = "EnableBloomSoften";
string UIWidget = "Checkbox";
> = {true};
int softbloomlv
<
string UIName = "BloomSoftenLevel";
string UIWidget = "Slider";
> = {2};
float softbloomsmp
<
string UIName = "BloomSoftenRadius";
string UIWidget = "Slider";
> = {1.0};
/* Adaptation */
bool aenable
<
string UIName = "EnableAdaptation";
string UIWidget = "Checkbox";
> = {true};
float amin_n
<
string UIName = "AdaptationMinNight";
string UIWidget = "Spinner";
> = {0.0};
float amin_d
<
string UIName = "AdaptationMinDay";
string UIWidget = "Spinner";
> = {0.0};
float amin_in
<
string UIName = "AdaptationMinInteriorNight";
string UIWidget = "Spinner";
> = {0.0};
float amin_id
<
string UIName = "AdaptationMinInteriorDay";
string UIWidget = "Spinner";
> = {0.0};
float amax_n
<
string UIName = "AdaptationMaxNight";
string UIWidget = "Spinner";
> = {1.0};
float amax_d
<
string UIName = "AdaptationMaxDay";
string UIWidget = "Spinner";
> = {1.0};
float amax_in
<
string UIName = "AdaptationMaxInteriorNight";
string UIWidget = "Spinner";
> = {1.0};
float amax_id
<
string UIName = "AdaptationMaxInteriorDay";
string UIWidget = "Spinner";
> = {1.0};
/* tone mapping */
bool tmenable
<
string UIName = "EnableTonemapping";
string UIWidget = "Checkbox";
> = {true};
float tone_n
<
string UIName = "TonemappingNight";
string UIWidget = "Spinner";
> = {1.0};
float tone_d
<
string UIName = "TonemappingDay";
string UIWidget = "Spinner";
> = {1.0};
float tone_in
<
string UIName = "TonemappingInteriorNight";
string UIWidget = "Spinner";
> = {1.0};
float tone_id
<
string UIName = "TonemappingInteriorDay";
string UIWidget = "Spinner";
> = {1.0};
float tovr_n
<
string UIName = "TonemappingOversaturationNight";
string UIWidget = "Spinner";
> = {1.0};
float tovr_d
<
string UIName = "TonemappingOversaturationDay";
string UIWidget = "Spinner";
> = {1.0};
float tovr_in
<
string UIName = "TonemappingOversaturationInteriorNight";
string UIWidget = "Spinner";
> = {1.0};
float tovr_id
<
string UIName = "TonemappingOversaturationInteriorDay";
string UIWidget = "Spinner";
> = {1.0};
/* palette texture */
bool palenable
<
string UIName = "EnablePalette";
string UIWidget = "Checkbox";
> = {true};
float palb_n
<
string UIName = "PaletteBlendNight";
string UIWidget = "Spinner";
> = {1.0};
float palb_d
<
string UIName = "PaletteBlendDay";
string UIWidget = "Spinner";
> = {1.0};
float palb_in
<
string UIName = "PaletteBlendInteriorNight";
string UIWidget = "Spinner";
> = {1.0};
float palb_id
<
string UIName = "PaletteBlendInteriorDay";
string UIWidget = "Spinner";
> = {1.0};

View file

@ -1,627 +0,0 @@
/*
menbfilters.fx : MariENB shader routines.
(C)2013-2014 Marisa Kirisame, UnSX Team.
Part of MariENB, the personal ENB of Marisa.
Released under the MIT License.
*/
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;
}
float4 PS_FXAA( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR
{
float2 coord = float2(IN.txcoord.x,IN.txcoord.y);
float4 res = tex2D(SamplerColor,coord);
if ( !fxaaenable )
return res;
float fxaareducemul_ = 1.0/max(abs(fxaareducemul),1.0);
float fxaareducemin_ = 1.0/max(abs(fxaareducemin),1.0);
float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
float2 bof = float2(1.0/bresl.x,1.0/bresl.y);
float3 rgbNW = tex2D(SamplerColor,coord+float2(-1,-1)*bof).rgb;
float3 rgbNE = tex2D(SamplerColor,coord+float2(1,-1)*bof).rgb;
float3 rgbSW = tex2D(SamplerColor,coord+float2(-1,1)*bof).rgb;
float3 rgbSE = tex2D(SamplerColor,coord+float2(1,1)*bof).rgb;
float3 rgbM = tex2D(SamplerColor,coord).rgb;
float3 luma = float3(0.299,0.587,0.114);
float lumaNW = dot(rgbNW,luma);
float lumaNE = dot(rgbNE,luma);
float lumaSW = dot(rgbSW,luma);
float lumaSE = dot(rgbSE,luma);
float lumaM = dot(rgbM,luma);
float lumaMin = min(lumaM,min(min(lumaNW,lumaNE),min(lumaSW,lumaSE)));
float lumaMax = max(lumaM,max(max(lumaNW,lumaNE),max(lumaSW,lumaSE)));
float2 dir = float2(-((lumaNW+lumaNE)-(lumaSW+lumaSE)),((lumaNW+lumaSW)
-(lumaNE+lumaSE)));
float dirReduce = max((lumaNW+lumaNE+lumaSW+lumaSE)*(0.25
*fxaareducemul_),fxaareducemin_);
float rcpDirMin = 1.0/(min(abs(dir.x),abs(dir.y))+dirReduce);
dir = min(float2(fxaaspanmax,fxaaspanmax),max(float2(-fxaaspanmax,
-fxaaspanmax),dir*rcpDirMin))/bresl;
float3 rgbA = (1.0/2.0)*(tex2D(SamplerColor,coord+dir*(1.0/3.0-0.5))
.rgb+tex2D(SamplerColor,coord+dir*(2.0/3.0-0.5)).rgb);
float3 rgbB = rgbA*(1.0/2.0)+(1.0/4.0)*(tex2D(SamplerColor,coord+dir
*(0.0/3.0-0.5)).rgb+tex2D(SamplerColor,coord+dir*(3.0/3.0-0.5))
.rgb);
float lumaB = dot(rgbB,luma);
if ( (lumaB < lumaMin) || (lumaB > lumaMax) )
res.rgb = rgbA;
else
res.rgb = rgbB;
res.a = 1.0;
return res;
}
float4 PS_Enhance( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR
{
float2 coord = float2(IN.txcoord.x,IN.txcoord.y);
float4 res = tex2D(SamplerColor,coord);
float tod = ENightDayFactor;
float ind = EInteriorFactor;
if ( bbenable )
{
float4 origcolor = res;
float4 tcol = float4(0,0,0,0);
float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
float bbsamp = lerp(lerp(bbsamp_n,bbsamp_d,tod),lerp(bbsamp_in,
bbsamp_id,tod),ind);
float bbradius = lerp(lerp(bbradius_n,bbradius_d,tod),
lerp(bbradius_in,bbradius_id,tod),ind);
float bbcurve = lerp(lerp(bbcurve_n,bbcurve_d,tod),
lerp(bbcurve_in,bbcurve_id,tod),ind);
float bbpow = lerp(lerp(bbpow_n,bbpow_d,tod),lerp(bbpow_in,
bbpow_id,tod),ind);
float2 bof = float2(1.0/bresl.x,1.0/bresl.y)*bbsamp;
int i, j;
if ( bblevel == 1 )
{
for ( i=-2; i<=2; i++ )
for ( j=-2; j<=2; j++ )
tcol += gauss5[abs(i)][abs(j)]
*tex2D(SamplerColor,coord
+float2(i,j)*bof);
}
else if ( bblevel == 2 )
{
for ( i=-3; i<=3; i++ )
for ( j=-3; j<=3; j++ )
tcol += gauss7[abs(i)][abs(j)]
*tex2D(SamplerColor,coord
+float2(i,j)*bof);
}
else
{
for ( i=-1; i<=1; i++ )
for ( j=-1; j<=1; j++ )
tcol += gauss3[abs(i)][abs(j)]
*tex2D(SamplerColor,coord
+float2(i,j)*bof);
}
float2 uv = (coord.xy-0.5)*bbradius;
float vig = clamp(pow(saturate(dot(uv.xy,uv.xy)),bbcurve),0.0
,1.0);
res.rgb = lerp(origcolor.rgb,tcol.rgb,clamp(vig*bbpow,0.0
,1.0));
}
if ( dkenable )
{
float2 bresl = float2(1.0,ScreenSize.w);
float dkradius = lerp(lerp(dkradius_n,dkradius_d,tod),
lerp(dkradius_in,dkradius_id,tod),ind);
float dkbump = lerp(lerp(dkbump_n,dkbump_d,tod),lerp(dkbump_in,
dkbump_id,tod),ind);
float dkcurve = lerp(lerp(dkcurve_n,dkcurve_d,tod),
lerp(dkcurve_in,dkcurve_id,tod),ind);
float2 bof = bresl*dkradius;
float val = 0.0;
if ( coord.x < bof.x )
val = lerp(val,1,1.0-coord.x/bof.x);
if ( coord.y < bof.y )
val = lerp(val,1,1.0-coord.y/bof.y);
if ( 1.0-coord.x < bof.x )
val = lerp(val,1,1.0-(1.0-coord.x)/bof.x);
if ( 1.0-coord.y < bof.y )
val = lerp(val,1,1.0-(1.0-coord.y)/bof.y);
val = clamp(val*dkbump,0,1);
res.rgb = lerp(res.rgb,float3(0,0,0),pow(val,dkcurve));
}
if ( ne )
{
float nf = lerp(lerp(nf_n,nf_d,tod),lerp(nf_in,nf_id,tod),ind);
float ns = lerp(lerp(ns_n,ns_d,tod),lerp(ns_in,ns_id,tod),ind);
float nj = lerp(lerp(nj_n,nj_d,tod),lerp(nj_in,nj_id,tod),ind);
float ni = lerp(lerp(ni_n,ni_d,tod),lerp(ni_in,ni_id,tod),ind);
float ts = Timer.x*nf;
ts *= 1000.0;
float2 tcs = coord;
float2 s1 = tcs+float2(0,ts);
float2 s2 = tcs+float2(ts,0);
float2 s3 = tcs+float2(ts,ts);
float n1, n2, n3;
float2 nr = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w)
/NOISERES;
if ( np )
{
n1 = tex2D(SamplerNoise2,s1*nm11*nr).r;
n2 = tex2D(SamplerNoise2,s2*nm12*nr).g;
n3 = tex2D(SamplerNoise2,s3*nm13*nr).b;
s1 = tcs+float2(ts+n1*nk,n2*nk);
s2 = tcs+float2(n2,ts+n3*nk);
s3 = tcs+float2(ts+n3*nk,ts+n1*nk);
n1 = tex2D(SamplerNoise2,s1*nm21*nr).r;
n2 = tex2D(SamplerNoise2,s2*nm22*nr).g;
n3 = tex2D(SamplerNoise2,s3*nm23*nr).b;
}
else
{
n1 = tex2D(SamplerNoise3,s1*nm1*nr).r;
n2 = tex2D(SamplerNoise3,s2*nm2*nr).g;
n3 = tex2D(SamplerNoise3,s3*nm3*nr).b;
}
float n4 = (n1+n2+n3)/3;
float3 ng = float3(n4,n4,n4);
float3 nc = float3(n1,n2,n3);
float3 nt = pow(clamp(lerp(ng,nc,ns),0.0,1.0),nj);
if ( nb == 1 )
res.rgb += nt*ni;
else if ( nb == 2 )
{
res.r = (res.r<0.5)?(2.0*res.r*(0.5+(nt.r*ni)))
:(1.0-2.0*(1.0-res.r)*(1.0-((0.5+(nt.r*ni)))));
res.g = (res.g<0.5)?(2.0*res.g*(0.5+(nt.g*ni)))
:(1.0-2.0*(1.0-res.g)*(1.0-((0.5+(nt.g*ni)))));
res.b = (res.b<0.5)?(2.0*res.b*(0.5+(nt.b*ni)))
:(1.0-2.0*(1.0-res.b)*(1.0-((0.5+(nt.b*ni)))));
}
else if ( nb == 3 )
res.rgb *= 1.0+(nt*ni);
else
res.rgb = lerp(res.rgb,nt,ni);
}
if ( compenable )
{
float compbump = lerp(lerp(compbump_n,compbump_d,tod),
lerp(compbump_in,compbump_id,tod),ind);
float comppow = lerp(lerp(comppow_n,comppow_d,tod),
lerp(comppow_in,comppow_id,tod),ind);
float compsat = lerp(lerp(compsat_n,compsat_d,tod),
lerp(compsat_in,compsat_id,tod),ind);
float compfactor = lerp(lerp(compfactor_n,compfactor_d,tod),
lerp(compfactor_in,compfactor_id,tod),ind);
float4 ovr = pow(saturate(res+compbump),comppow);
float ovrs = (ovr.r+ovr.g+ovr.b)/3.0;
ovr = ovr*compsat+ovrs*(1.0-compsat);
res.rgb -= ovr.rgb*compfactor;
}
if ( gradeenable )
{
float gradeadd_r = lerp(lerp(gradeadd_r_n,gradeadd_r_d,tod),
lerp(gradeadd_r_in,gradeadd_r_id,tod),ind);
float gradeadd_g = lerp(lerp(gradeadd_g_n,gradeadd_g_d,tod),
lerp(gradeadd_g_in,gradeadd_g_id,tod),ind);
float gradeadd_b = lerp(lerp(gradeadd_b_n,gradeadd_b_d,tod),
lerp(gradeadd_b_in,gradeadd_b_id,tod),ind);
float grademul_r = lerp(lerp(grademul_r_n,grademul_r_d,tod),
lerp(grademul_r_in,grademul_r_id,tod),ind);
float grademul_g = lerp(lerp(grademul_g_n,grademul_g_d,tod),
lerp(grademul_g_in,grademul_g_id,tod),ind);
float grademul_b = lerp(lerp(grademul_b_n,grademul_b_d,tod),
lerp(grademul_b_in,grademul_b_id,tod),ind);
float gradepow_r = lerp(lerp(gradepow_r_n,gradepow_r_d,tod),
lerp(gradepow_r_in,gradepow_r_id,tod),ind);
float gradepow_g = lerp(lerp(gradepow_g_n,gradepow_g_d,tod),
lerp(gradepow_g_in,gradepow_g_id,tod),ind);
float gradepow_b = lerp(lerp(gradepow_b_n,gradepow_b_d,tod),
lerp(gradepow_b_in,gradepow_b_id,tod),ind);
float gradecol_r = lerp(lerp(gradecol_r_n,gradecol_r_d,tod),
lerp(gradecol_r_in,gradecol_r_id,tod),ind);
float gradecol_g = lerp(lerp(gradecol_g_n,gradecol_g_d,tod),
lerp(gradecol_g_in,gradecol_g_id,tod),ind);
float gradecol_b = lerp(lerp(gradecol_b_n,gradecol_b_d,tod),
lerp(gradecol_b_in,gradecol_b_id,tod),ind);
float gradecolfact = lerp(lerp(gradecolfact_n,gradecolfact_d,
tod),lerp(gradecolfact_in,gradecolfact_id,tod),ind);
float3 gradeadd = float3(gradeadd_r,gradeadd_g,gradeadd_b);
float3 grademul = float3(grademul_r,grademul_g,grademul_b);
float3 gradepow = float3(gradepow_r,gradepow_g,gradepow_b);
float3 gradecol = float3(gradecol_r,gradecol_g,gradecol_b);
res.rgb = saturate(res.rgb+gradeadd);
res.rgb = saturate(res.rgb*grademul);
res.rgb = saturate(pow(res.rgb,gradepow));
float tonev = (res.r+res.g+res.b)/3.0;
float3 tonecolor = gradecol*tonev;
res.rgb = res.rgb*(1.0-gradecolfact)+tonecolor*gradecolfact;
}
if ( dirtenable )
{
float2 r = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w)
/NOISERES;
float4 ncolc = tex2D(SamplerNoise1,coord*dirtmc*r);
float2 ds = float2(res.r+res.g,res.g+res.b)/2.0;
float4 ncoll = tex2D(SamplerNoise1,ds*dirtml);
res = lerp(res,(ncolc.r+1)*res,
dirtcfactor*saturate(1-(ds.x+ds.y)*0.25));
res = lerp(res,(ncoll.r+1)*res,
dirtlfactor*saturate(1-(ds.x+ds.y)*0.25));
}
if ( boxe )
{
res.rgb = saturate(res.rgb);
float boxf = pow(clamp(boxh-abs(2.0*coord.x-1.0),0.0,1.0),boxb)
*pow(clamp(boxv-abs(2.0*coord.y-1.0),0.0,1.0),boxb);
res.rgb = lerp(res.rgb*(1.0-boxa),res.rgb,boxf);
}
res.a = 1.0;
return res;
}
float4 ReducePrepass( in float4 color, in float2 coord )
{
color.rgb = pow(max(color.rgb,0.0),bgamma);
float4 dac;
dac.a = (color.r+color.g+color.b)/3.0;
dac.rgb = dac.a+(color.rgb-dac.a)*bsaturation;
if ( bdither == 0 )
dac.rgb += bdbump+tex2D(SamplerNoise3,coord/NOISERES).r*bdmult;
else if ( bdither == 1 )
dac.rgb += bdbump+checkers[int(coord.x%2)+2*int(coord.y%2)]
*bdmult;
else if ( bdither == 2 )
dac.rgb += bdbump+ordered2[int(coord.x%2)+2*int(coord.y%2)]
*bdmult;
else if ( bdither == 3 )
dac.rgb += bdbump+ordered3[int(coord.x%3)+3*int(coord.y%3)]
*bdmult;
else if ( bdither == 4 )
dac.rgb += bdbump+ordered4[int(coord.x%4)+4*int(coord.y%4)]
*bdmult;
else if ( bdither == 5 )
dac.rgb += bdbump+ordered8[int(coord.x%8)+8*int(coord.y%8)]
*bdmult;
dac = saturate(dac);
return dac;
}
float4 ReduceCGA( in float4 color, in float2 coord )
{
float4 dac = ReducePrepass(color,coord);
if ( bcganum == 0 )
{
dac.a = (dac.r+dac.g+dac.b)/3.0;
return (dac.a>0.5);
}
float dist = 2.0;
int idx = 0;
if ( bcganum == 1 )
{
for ( int i=0; i<4; i++ )
{
if ( distance(dac.rgb,cga1l[i]) < dist )
{
idx = i;
dist = distance(dac.rgb,cga1l[i]);
}
}
color.rgb = cga1l[idx];
}
else if ( bcganum == 2 )
{
for ( int i=0; i<4; i++ )
{
if ( distance(dac.rgb,cga1h[i]) < dist )
{
idx = i;
dist = distance(dac.rgb,cga1h[i]);
}
}
color.rgb = cga1h[idx];
}
else if ( bcganum == 3 )
{
for ( int i=0; i<4; i++ )
{
if ( distance(dac.rgb,cga2l[i]) < dist )
{
idx = i;
dist = distance(dac.rgb,cga2l[i]);
}
}
color.rgb = cga2l[idx];
}
else if ( bcganum == 4 )
{
for ( int i=0; i<4; i++ )
{
if ( distance(dac.rgb,cga2h[i]) < dist )
{
idx = i;
dist = distance(dac.rgb,cga2h[i]);
}
}
color.rgb = cga2h[idx];
}
else if ( bcganum == 5 )
{
for ( int i=0; i<4; i++ )
{
if ( distance(dac.rgb,cga3l[i]) < dist )
{
idx = i;
dist = distance(dac.rgb,cga3l[i]);
}
}
color.rgb = cga3l[idx];
}
else if ( bcganum == 6 )
{
for ( int i=0; i<4; i++ )
{
if ( distance(dac.rgb,cga3h[i]) < dist )
{
idx = i;
dist = distance(dac.rgb,cga3h[i]);
}
}
color.rgb = cga3h[idx];
}
return color;
}
float4 ReduceEGA( in float4 color, in float2 coord )
{
float4 dac = ReducePrepass(color,coord);
float dist = 2.0;
int idx = 0;
if ( beganum == 0 )
{
for ( int i=0; i<16; i++ )
{
if ( distance(dac.rgb,stdega[i]) < dist )
{
idx = i;
dist = distance(dac.rgb,stdega[i]);
}
}
color.rgb = stdega[idx];
}
else
{
for ( int i=0; i<16; i++ )
{
if ( distance(dac.rgb,aosega[i]) < dist )
{
idx = i;
dist = distance(dac.rgb,aosega[i]);
}
}
color.rgb = aosega[idx];
}
return color;
}
float4 ReduceRGB2( in float4 color, in float2 coord )
{
float4 dac = ReducePrepass(color,coord);
color.rgb = trunc(dac.rgb*4.0)/4.0;
return color;
}
float4 ReduceRGB323( in float4 color, in float2 coord )
{
float4 dac = ReducePrepass(color,coord);
color.rgb = trunc(dac.rgb*float3(8.0,4.0,8.0))/float3(8.0,4.0,8.0);
return color;
}
float4 ReduceRGB4( in float4 color, in float2 coord )
{
float4 dac = ReducePrepass(color,coord);
color.rgb = trunc(dac.rgb*16.0)/16.0;
return color;
}
float4 ReduceRGB565( in float4 color, in float2 coord )
{
float4 dac = ReducePrepass(color,coord);
color.rgb = trunc(dac.rgb*float3(32.0,64.0,32.0))
/float3(32.0,64.0,32.0);
return color;
}
float4 ReduceRGB6( in float4 color, in float2 coord )
{
float4 dac = ReducePrepass(color,coord);
color.rgb = trunc(dac.rgb*64.0)/64.0;
return color;
}
float4 PS_Block( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR
{
float2 coord = float2(IN.txcoord.x,IN.txcoord.y);
float4 res = tex2D(SamplerColor,coord);
if ( !benable )
return res;
float2 rresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
float2 bresl;
if ( bresw <= 0 || bresh <= 0 )
bresl = rresl;
else
{
if ( bresw <= 1.0 )
bresl.x = rresl.x*bresw;
else
bresl.x = bresw;
if ( bresh <= 1.0 )
bresl.y = rresl.y*bresh;
else
bresl.y = bresh;
}
float2 ncoord = (coord-float2(0.5,0.5))+float2(0.5,0.5);
ncoord = floor(ncoord*bresl)/bresl;
if ( bresw <= 0 || bresh <= 0 )
ncoord = coord;
float4 tcol = tex2D(SamplerColor,ncoord);
/* clamp */
if ( ncoord.x < 0 || ncoord.x >= 1 || ncoord.y < 0 || ncoord.y >= 1 )
tcol *= 0;
if ( bpaltype == 0 )
res = ReduceCGA(tcol,coord*bresl);
else if ( bpaltype == 1 )
res = ReduceEGA(tcol,coord*bresl);
else if ( bpaltype == 2 )
res = ReduceRGB2(tcol,coord*bresl);
else if ( bpaltype == 3 )
res = ReduceRGB323(tcol,coord*bresl);
else if ( bpaltype == 4 )
res = ReduceRGB4(tcol,coord*bresl);
else if ( bpaltype == 5 )
res = ReduceRGB565(tcol,coord*bresl);
else if ( bpaltype == 6 )
res = ReduceRGB6(tcol,coord*bresl);
else
res = tcol;
res.a = 1.0;
return res;
}
float4 PS_Curve( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR
{
float2 coord = float2(IN.txcoord.x,IN.txcoord.y);
float4 res = tex2D(SamplerColor,coord);
if ( !crtenable )
return res;
float4 tcol = res;
float3 eta = float3(1+chromaab*0.09,1+chromaab*0.06,1+chromaab*0.03);
float2 center = float2(coord.x-0.5,coord.y-0.5);
float zfact = 100.0/lenszoom;
float r2 = center.x*center.x+center.y*center.y;
float f = 0;
if( lensdistc == 0.0)
f = 1+r2*lensdist*0.1;
else
f = 1+r2*(lensdist*0.1+lensdistc*0.1*sqrt(r2));
float x = f*zfact*center.x+0.5;
float y = f*zfact*center.y+0.5;
float2 rcoord = (f*eta.r)*zfact*(center.xy*0.5)+0.5;
float2 gcoord = (f*eta.g)*zfact*(center.xy*0.5)+0.5;
float2 bcoord = (f*eta.b)*zfact*(center.xy*0.5)+0.5;
float4 idist = float4(tex2D(SamplerColor,rcoord).r,
tex2D(SamplerColor,gcoord).g,
tex2D(SamplerColor,bcoord).b,
tex2D(SamplerColor,float2(x,y)).a);
res.rgb = idist.rgb;
res.a = 1.0;
return res;
}
float4 PS_Sharp( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR
{
float2 coord = float2(IN.txcoord.x,IN.txcoord.y);
float4 res = tex2D(SamplerColor,coord);
if ( !shenable )
return res;
float4 origcolor = res;
float4 tcol = float4(0,0,0,0);
float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
float2 bof = float2(1.0/bresl.x,1.0/bresl.y)*shsamp;
int i, j;
tcol = float4(0,0,0,0);
for ( i=-2; i<=2; i++ )
for ( j=-2; j<=2; j++ )
tcol += shmat[abs(i)][abs(j)]
*tex2D(SamplerColor,coord+float2(i,j)*bof);
res = res*(1.0-shblend)+tcol*shblend;
res.a = 1.0;
return res;
}
technique PostProcess
{
pass FXAA
{
VertexShader = compile vs_3_0 VS_Pass();
PixelShader = compile ps_3_0 PS_FXAA();
AlphaBlendEnable = TRUE;
SrcBlend = ONE;
DestBlend = ONE;
DitherEnable = FALSE;
ZEnable = FALSE;
CullMode = NONE;
ALPHATESTENABLE = FALSE;
SEPARATEALPHABLENDENABLE = FALSE;
AlphaBlendEnable = FALSE;
StencilEnable = FALSE;
FogEnable = FALSE;
SRGBWRITEENABLE = FALSE;
}
}
technique PostProcess2
{
pass Reel
{
VertexShader = compile vs_3_0 VS_Pass();
PixelShader = compile ps_3_0 PS_Enhance();
AlphaBlendEnable = TRUE;
SrcBlend = ONE;
DestBlend = ONE;
DitherEnable = FALSE;
ZEnable = FALSE;
CullMode = NONE;
ALPHATESTENABLE = FALSE;
SEPARATEALPHABLENDENABLE = FALSE;
AlphaBlendEnable = FALSE;
StencilEnable = FALSE;
FogEnable = FALSE;
SRGBWRITEENABLE = FALSE;
}
}
technique PostProcess3
{
pass Turboslut
{
VertexShader = compile vs_3_0 VS_Pass();
PixelShader = compile ps_3_0 PS_Sharp();
AlphaBlendEnable = TRUE;
SrcBlend = ONE;
DestBlend = ONE;
DitherEnable = FALSE;
ZEnable = FALSE;
CullMode = NONE;
ALPHATESTENABLE = FALSE;
SEPARATEALPHABLENDENABLE = FALSE;
AlphaBlendEnable = FALSE;
StencilEnable = FALSE;
FogEnable = FALSE;
SRGBWRITEENABLE = FALSE;
}
}
technique PostProcess4
{
pass Retrograde
{
VertexShader = compile vs_3_0 VS_Pass();
PixelShader = compile ps_3_0 PS_Block();
AlphaBlendEnable = TRUE;
SrcBlend = ONE;
DestBlend = ONE;
DitherEnable = FALSE;
ZEnable = FALSE;
CullMode = NONE;
ALPHATESTENABLE = FALSE;
SEPARATEALPHABLENDENABLE = FALSE;
AlphaBlendEnable = FALSE;
StencilEnable = FALSE;
FogEnable = FALSE;
SRGBWRITEENABLE = FALSE;
}
}
technique PostProcess5
{
pass Butt
{
VertexShader = compile vs_3_0 VS_Pass();
PixelShader = compile ps_3_0 PS_Curve();
AlphaBlendEnable = TRUE;
SrcBlend = ONE;
DestBlend = ONE;
DitherEnable = FALSE;
ZEnable = FALSE;
CullMode = NONE;
ALPHATESTENABLE = FALSE;
SEPARATEALPHABLENDENABLE = FALSE;
AlphaBlendEnable = FALSE;
StencilEnable = FALSE;
FogEnable = FALSE;
SRGBWRITEENABLE = FALSE;
}
}

View file

@ -1,277 +0,0 @@
/*
menbinternals.fx : MariENB internal variables.
(C)2013-2014 Marisa Kirisame, UnSX Team.
Part of MariENB, the personal ENB of Marisa.
Released under the MIT License.
*/
/* texture sizes */
#define NOISERES 256.0
/* sharpen matrix quadrant */
static const float3x3 shmat =
{
5.76,-0.5,-0.2,
-0.5,-0.25,-0.1,
-0.2,-0.1,-0.04,
};
/* gaussian blur matrices */
static const float2x2 gauss3 =
{
0.16,0.12,
0.12,0.09
};
static const float3x3 gauss5 =
{
0.0865051903114,0.0692041522491,0.0346020761246,
0.0692041522491,0.0553633217993,0.0276816609,
0.0346020761246,0.0276816609,0.01384083045
};
static const float4x4 gauss7 =
{
0.0632507440209,0.0527089533508,0.0301194019147,0.011294775718,
0.0527089533508,0.0439241277923,0.0250995015956,0.00941231309835,
0.0301194019147,0.0250995015956,0.01434257234,0.00537846462763,
0.011294775718,0.00941231309835,0.00537846462763,0.00201692423536
};
/* dithering threshold maps */
static const float checkers[4] =
{
1,0,
0,1
};
#define d(x) x/4.0
static const float ordered2[4] =
{
d(0),d(2),
d(4),d(2)
};
#undef d
#define d(x) x/9.0
static const float ordered3[9] =
{
d(2),d(6),d(3),
d(5),d(0),d(8),
d(1),d(7),d(4)
};
#undef d
#define d(x) x/16.0
static const float ordered4[16] =
{
d( 0),d( 8),d( 2),d(10),
d(12),d( 4),d(14),d( 6),
d( 3),d(11),d( 1),d( 9),
d(15),d( 7),d(13),d( 5)
};
#undef d
#define d(x) x/64.0
static const float ordered8[64] =
{
d( 0),d(48),d(12),d(60),d( 3),d(51),d(15),d(63),
d(32),d(16),d(44),d(28),d(35),d(19),d(47),d(31),
d( 8),d(56),d( 4),d(52),d(11),d(59),d( 7),d(55),
d(40),d(24),d(36),d(20),d(43),d(27),d(39),d(23),
d( 2),d(50),d(14),d(62),d( 1),d(49),d(13),d(61),
d(34),d(18),d(46),d(30),d(33),d(17),d(45),d(29),
d(10),d(58),d( 6),d(54),d( 9),d(57),d( 5),d(53),
d(42),d(26),d(38),d(22),d(41),d(25),d(37),d(21)
};
#undef d
/* palettes */
#define d(x) x/3.0
static const float3 cga1l[4] =
{
float3(d(0),d(0),d(0)),
float3(d(0),d(2),d(2)),
float3(d(2),d(0),d(2)),
float3(d(2),d(2),d(2))
};
static const float3 cga1h[4] =
{
float3(d(0),d(0),d(0)),
float3(d(1),d(3),d(3)),
float3(d(3),d(1),d(3)),
float3(d(3),d(3),d(3))
};
static const float3 cga2l[4] =
{
float3(d(0),d(0),d(0)),
float3(d(0),d(2),d(0)),
float3(d(2),d(0),d(0)),
float3(d(2),d(1),d(0))
};
static const float3 cga2h[4] =
{
float3(d(0),d(0),d(0)),
float3(d(1),d(3),d(1)),
float3(d(3),d(1),d(1)),
float3(d(3),d(2),d(1))
};
static const float3 cga3l[4] =
{
float3(d(0),d(0),d(0)),
float3(d(0),d(2),d(2)),
float3(d(2),d(0),d(0)),
float3(d(2),d(2),d(2))
};
static const float3 cga3h[4] =
{
float3(d(0),d(0),d(0)),
float3(d(1),d(3),d(3)),
float3(d(3),d(1),d(1)),
float3(d(3),d(3),d(3))
};
static const float3 stdega[16] =
{
float3(d(0),d(0),d(0)),
float3(d(2),d(0),d(0)),
float3(d(0),d(2),d(0)),
float3(d(2),d(1),d(0)),
float3(d(0),d(0),d(2)),
float3(d(2),d(0),d(2)),
float3(d(0),d(2),d(2)),
float3(d(2),d(2),d(2)),
float3(d(1),d(1),d(1)),
float3(d(3),d(1),d(1)),
float3(d(1),d(3),d(1)),
float3(d(3),d(3),d(1)),
float3(d(1),d(1),d(3)),
float3(d(3),d(1),d(3)),
float3(d(1),d(3),d(3)),
float3(d(3),d(3),d(3))
};
#undef d
#define d(x) x/256.0
static const float3 aosega[16] =
{
float3(d( 0),d( 0),d( 0)),
float3(d(128),d( 0),d( 0)),
float3(d( 32),d(128),d( 0)),
float3(d(160),d( 64),d( 32)),
float3(d( 0),d( 32),d( 88)),
float3(d( 60),d( 0),d( 88)),
float3(d( 16),d(160),d(208)),
float3(d( 88),d( 88),d( 88)),
float3(d( 32),d( 32),d( 32)),
float3(d(256),d( 64),d( 64)),
float3(d( 72),d(256),d( 64)),
float3(d(256),d(224),d( 60)),
float3(d( 48),d(128),d(256)),
float3(d(192),d( 48),d(256)),
float3(d( 72),d(224),d(256)),
float3(d(256),d(256),d(256)),
};
#undef d
/* standard stuff (not all used) */
float tempF1;
float tempF2;
float tempF3;
float tempF4;
float tempF5;
float tempF6;
float tempF7;
float tempF8;
float tempF9;
float tempF0;
float4 ScreenSize;
float ENightDayFactor;
float EInteriorFactor;
float4 Timer;
float FieldOfView;
/* samplers and textures (some not yet used) */
texture2D texColor;
texture2D texDepth;
texture2D texPalette;
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 SamplerPalette = sampler_state
{
Texture = <texPalette>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture = FALSE;
MaxMipLevel = 0;
MipMapLodBias = 0;
};
texture2D texNoise1
<
string ResourceName = "menbnoise1.png";
>;
texture2D texNoise2
<
string ResourceName = "menbnoise2.png";
>;
texture2D texNoise3
<
string ResourceName = "menbnoise3.png";
>;
sampler2D SamplerNoise1 = sampler_state
{
Texture = <texNoise1>;
MinFilter = LINEAR;
MagFilter = POINT;
MipFilter = NONE;
AddressU = Wrap;
AddressV = Wrap;
SRGBTexture = FALSE;
MaxMipLevel = 0;
MipMapLodBias = 0;
};
sampler2D SamplerNoise2 = sampler_state
{
Texture = <texNoise2>;
MinFilter = LINEAR;
MagFilter = POINT;
MipFilter = NONE;
AddressU = Wrap;
AddressV = Wrap;
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;
};
/* whatever */
struct VS_OUTPUT_POST
{
float4 vpos : POSITION;
float2 txcoord : TEXCOORD0;
};
struct VS_INPUT_POST
{
float3 pos : POSITION;
float2 txcoord : TEXCOORD0;
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 181 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 193 KiB

View file

@ -1,340 +0,0 @@
/*
menbeffectfilters.fx : MariENB base shader routines.
(C)2013-2014 Marisa Kirisame, UnSX Team.
Part of MariENB, the personal ENB of Marisa.
Released under the MIT License.
*/
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;
}
/* Focus */
float4 PS_ReadFocus( VS_OUTPUT_POST IN ) : COLOR
{
float cfocus = tex2D(SamplerDepth,0.5).x;
if ( !focuscircle || (focusslice <= 0) || (focuscircles <= 0) )
return cfocus;
int i, j;
float step = (1.0/focusslice);
float mfocus;
float2 coord;
float2 bof = float2(1.0,ScreenSize.w)*focusradius*0.01;
for ( i=0; i<focuscircles; i++ )
{
mfocus = 0.0;
for ( j=0; j<focusslice; j++ )
{
coord.x = 0.5+cos(2.0*pi*float(j)*step)*bof.x;
coord.y = 0.5+sin(2.0*pi*float(j)*step)*bof.y;
mfocus += step*tex2D(SamplerDepth,coord).x;
}
bof *= 0.5;
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);
}
/* Dummy */
float4 PS_DummyPrepass( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR
{
return tex2D(SamplerColor,IN.txcoord.xy);
}
/* border detect */
float4 PS_Border( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR
{
float2 coord = IN.txcoord.xy;
float4 res = tex2D(SamplerColor,coord);
if ( !celenable )
return res;
float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
float2 bof = float2(1.0/bresl.x,1.0/bresl.y)*celradius;
float3x3 GX = {-1,0,1,-2,0,2,-1,0,1}, GY = {1,2,1,0,0,0,-1,-2,-1};
float mdx = 0, mdy = 0, mud;
int i,j;
for ( i=-1; i<=1; i++ )
{
for ( j=-1; j<=1; j++ )
{
mdx += GX[i+1][j+1]*tex2D(SamplerDepth,coord
+float2(i,j)*bof).x;
mdy += GY[i+1][j+1]*tex2D(SamplerDepth,coord
+float2(i,j)*bof).x;
}
}
mud = pow(pow(mdx,2)+pow(mdy,2),0.5);
mud = saturate(pow(mud+celbump,celpower)*celmult);
float depth = tex2D(SamplerDepth,coord).x;
if ( depth >= celtrim )
mud = 0.0;
mud *= saturate(depth*celfade);
if ( celmode == 1 )
res.rgb = (1.0-saturate(tex2D(SamplerDepth,coord).x))
*(1.0-saturate(mud*celblend));
else if ( celmode == 2 )
res.rgb *= saturate(mud*celblend);
else if ( celmode == 3 )
res.rgb = saturate(mud*celblend);
else
res.rgb *= 1.0-saturate(mud*celblend);
return res;
}
/* SSAO */
float3 pseudonormal( float dep, float2 coord )
{
float2 ofs1 = float2(ssaonoff1*0.01,ssaonoff2*0.01);
float2 ofs2 = float2(ssaonoff3*0.01,ssaonoff4*0.01);
float dep1 = tex2D(SamplerDepth,coord+ofs1).x;
float dep2 = tex2D(SamplerDepth,coord+ofs2).x;
float3 p1 = float3(ofs1,dep1-dep);
float3 p2 = float3(ofs2,dep2-dep);
float3 normal = cross(p1,p2);
normal.z = -normal.z;
return normalize(normal);
}
float4 PS_SSAO( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR
{
float2 coord = IN.txcoord.xy;
float4 res = tex2D(SamplerColor,coord);
if ( !ssaoenable )
return res;
float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
float2 bof = float2(1.0/bresl.x,1.0/bresl.y)*ssaoradius;
float depth = tex2D(SamplerDepth,coord).x;
float3 normal = pseudonormal(depth,coord);
float2 nc = tex2D(SamplerNoise,coord).xy;
normal += ssaonoise*normalize(tex2D(SamplerNoise,
float2(1.0,ScreenSize.w)*nc*ssaonoisesize).xyz*2.0-1.0);
normal = normalize(normal);
float occ = 0.0;
int i;
for( i=0; i<16; i++ )
{
float3 cs = ssao_samples[i];
cs = reflect(cs,normal);
float2 tc = float2(coord+i*cs.xy*bof);
float nd = tex2D(SamplerDepth,tc).x;
float dif = nd-depth;
float fall;
if ( nd > depth )
occ += 1.0/(1.0+(pow(dif,2)));
}
float uocc = 1.0-(occ/16.0);
uocc = saturate(pow(uocc+ssaobump,ssaopow)*ssaomult);
uocc *= saturate(depth*ssaofade);
if ( depth >= ssaotrim )
uocc = 0.0;
if ( ssaodebug == 1 )
return uocc;
else if ( ssaodebug == 2 )
return (float4(normal.x,normal.y,normal.z,1.0)+1.0)*0.5;
res.a = (1.0-(uocc*ssaoblend));
return res;
}
float4 PS_SSAO_Post( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR
{
float2 coord = IN.txcoord.xy;
float4 res = tex2D(SamplerColor,coord);
if ( !ssaoenable )
return res;
if ( !ssaobenable || (ssaodebug != 0) )
return res*res.a;
float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
float2 bof = float2(1.0/bresl.x,1.0/bresl.y)*ssaobradius;
int i,j;
res.a *= 0;
if ( ssaoblevel == 1 )
{
for ( i=-2; i<=2; i++ )
for ( j=-2; j<=2; j++ )
res.a += gauss5[abs(i)][abs(j)]
*tex2D(SamplerColor,coord+float2(i,j)
*bof).a;
}
else if ( ssaoblevel == 2 )
{
for ( i=-3; i<=3; i++ )
for ( j=-3; j<=3; j++ )
res.a += gauss7[abs(i)][abs(j)]
*tex2D(SamplerColor,coord+float2(i,j)
*bof).a;
}
else
{
for ( i=-1; i<=1; i++ )
for ( j=-1; j<=1; j++ )
res.a += gauss3[abs(i)][abs(j)]
*tex2D(SamplerColor,coord+float2(i,j)
*bof).a;
}
res *= res.a;
return res;
}
/* Depth of Field */
float4 PS_DoF( VS_OUTPUT_POST IN, float2 vPos : VPOS, uniform int p ) : COLOR
{
float2 coord = IN.txcoord.xy;
if ( !dofenable )
return tex2D(SamplerColor,coord);
float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
float2 bof = float2(1.0/bresl.x,1.0/bresl.y)*dofradius
*pow(clamp(doflevel+1,1,3),p);
float dep = tex2D(SamplerDepth,coord).x;
float foc = tex2D(SamplerFocus,coord).x;
float dfc = abs(dep-foc);
dfc = saturate(pow(dfc+dofbump,dofpow)*dofmult);
if ( dep >= doftrim )
dfc = 0.0;
int i,j;
float4 res = 0.0;
if ( doflevel == 1 )
{
for ( i=-2; i<=2; i++ )
for ( j=-2; j<=2; j++ )
res += gauss5[abs(i)][abs(j)]
*tex2D(SamplerColor,coord+float2(i,j)
*bof*dfc);
}
else if ( doflevel == 2 )
{
for ( i=-3; i<=3; i++ )
for ( j=-3; j<=3; j++ )
res += gauss7[abs(i)][abs(j)]
*tex2D(SamplerColor,coord+float2(i,j)
*bof*dfc);
}
else
{
for ( i=-1; i<=1; i++ )
for ( j=-1; j<=1; j++ )
res += gauss3[abs(i)][abs(j)]
*tex2D(SamplerColor,coord+float2(i,j)
*bof*dfc);
}
if ( dofdebug == 1 )
return dfc;
else if ( dofdebug == 2 )
return dep;
return (1.0-dofblend)*tex2D(SamplerColor,coord)+dofblend*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_Border();
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_SSAO();
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_SSAO_Post();
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_DoF(0);
DitherEnable = FALSE;
ZEnable = FALSE;
CullMode = NONE;
ALPHATESTENABLE = FALSE;
SEPARATEALPHABLENDENABLE = FALSE;
AlphaBlendEnable = FALSE;
StencilEnable = FALSE;
FogEnable = FALSE;
SRGBWRITEENABLE = FALSE;
}
}
technique PostProcess5
{
pass p0
{
VertexShader = compile vs_3_0 VS_Pass();
PixelShader = compile ps_3_0 PS_DoF(1);
DitherEnable = FALSE;
ZEnable = FALSE;
CullMode = NONE;
ALPHATESTENABLE = FALSE;
SEPARATEALPHABLENDENABLE = FALSE;
AlphaBlendEnable = FALSE;
StencilEnable = FALSE;
FogEnable = FALSE;
SRGBWRITEENABLE = FALSE;
}
}

View file

@ -1,215 +0,0 @@
/*
menbprepasssettings.fx : MariENB prepass user-tweakable variables.
(C)2013-2014 Marisa Kirisame, UnSX Team.
Part of MariENB, the personal ENB of Marisa.
Released under the MIT License.
*/
/* circle average focus */
bool focuscircle
<
string UIName = "FocusCircleEnable";
string UIWidget = "Checkbox";
> = {false};
int focusslice
<
string UIName = "FocusCircleSlices";
string UIWidget = "Spinner";
> = {4};
int focuscircles
<
string UIName = "FocusCircleCircles";
string UIWidget = "Spinner";
> = {1};
float focusradius
<
string UIName = "FocusCircleRadius";
string UIWidget = "Spinner";
> = {12.5};
float focusmix
<
string UIName = "FocusCircleMix";
string UIWidget = "Spinner";
> = {0.25};
/* cel filter */
bool celenable
<
string UIName = "CelEnable";
string UIWidget = "Checkbox";
> = {false};
int celmode
<
string UIName = "CelMode";
string UIWidget = "Spinner";
> = {0};
float celradius
<
string UIName = "CelRadius";
string UIWidget = "Spinner";
> = {1.0};
float celpower
<
string UIName = "CelPower";
string UIWidget = "Spinner";
> = {1.0};
float celbump
<
string UIName = "CelBump";
string UIWidget = "Spinner";
> = {0.0};
float celmult
<
string UIName = "CelMult";
string UIWidget = "Spinner";
> = {1.0};
float celblend
<
string UIName = "CelBlend";
string UIWidget = "Spinner";
> = {1.0};
float celtrim
<
string UIName = "CelTrim";
string UIWidget = "Spinner";
> = {1.0};
float celfade
<
string UIName = "CelFade";
string UIWidget = "Spinner";
> = {0.5};
/* ssao filter */
bool ssaoenable
<
string UIName = "SSAOEnable";
string UIWidget = "Checkbox";
> = {true};
int ssaodebug
<
string UIName = "SSAODebug";
string UIWidget = "Spinner";
> = 0;
float ssaonoff1
<
string UIName = "SSAONormalOffset1";
string UIWidget = "Spinner";
> = {0.0};
float ssaonoff2
<
string UIName = "SSAONormalOffset2";
string UIWidget = "Spinner";
> = {0.1};
float ssaonoff3
<
string UIName = "SSAONormalOffset3";
string UIWidget = "Spinner";
> = {0.1};
float ssaonoff4
<
string UIName = "SSAONormalOffset4";
string UIWidget = "Spinner";
> = {0.0};
float ssaoradius
<
string UIName = "SSAORadius";
string UIWidget = "Spinner";
> = {1.0};
float ssaonoise
<
string UIName = "SSAONoise";
string UIWidget = "Spinner";
> = {0.1};
float ssaonoisesize
<
string UIName = "SSAONoiseSize";
string UIWidget = "Spinner";
> = {64.0};
float ssaotrim
<
string UIName = "SSAOTrim";
string UIWidget = "Spinner";
> = {1.0};
float ssaofade
<
string UIName = "SSAOFade";
string UIWidget = "Spinner";
> = {0.5};
float ssaobump
<
string UIName = "SSAOBump";
string UIWidget = "Spinner";
> = {0.0};
float ssaomult
<
string UIName = "SSAOMult";
string UIWidget = "Spinner";
> = {1.0};
float ssaopow
<
string UIName = "SSAOPower";
string UIWidget = "Spinner";
> = {1.0};
float ssaoblend
<
string UIName = "SSAOBlend";
string UIWidget = "Spinner";
> = {1.0};
bool ssaobenable
<
string UIName = "SSAOBlurEnable";
string UIWidget = "Spinner";
> = {true};
float ssaobradius
<
string UIName = "SSAOBlurRadius";
string UIWidget = "Spinner";
> = {1.0};
int ssaoblevel
<
string UIName = "SSAOBlurLevel";
string UIWidget = "Spinner";
> = {2};
/* dof filter */
bool dofenable
<
string UIName = "DoFEnable";
string UIWidget = "Checkbox";
> = {true};
int dofdebug
<
string UIName = "DoFDebug";
string UIWidget = "Spinner";
> = {0};
float dofradius
<
string UIName = "DoFRadius";
string UIWidget = "Spinner";
> = {1.0};
int doflevel
<
string UIName = "DoFLevel";
string UIWidget = "Spinner";
> = {2};
float dofbump
<
string UIName = "DoFBump";
string UIWidget = "Spinner";
> = {0.0};
float dofmult
<
string UIName = "DoFMult";
string UIWidget = "Spinner";
> = {1.0};
float dofpow
<
string UIName = "DoFPow";
string UIWidget = "Spinner";
> = {1.0};
float dofblend
<
string UIName = "DoFBlend";
string UIWidget = "Spinner";
> = {1.0};
float doftrim
<
string UIName = "DoFTrim";
string UIWidget = "Spinner";
> = {1.0};

View file

@ -1,872 +0,0 @@
/*
menbsettings.fx : MariENB user-tweakable variables.
(C)2013-2014 Marisa Kirisame, UnSX Team.
Part of MariENB, the personal ENB of Marisa.
Released under the MIT License.
*/
/* FXAA */
bool fxaaenable
<
string UIName = "EnableFXAA";
string UIWidget = "Checkbox";
> = {false};
float fxaaspanmax
<
string UIName = "FXAASpanMax";
string UIWidget = "Checkbox";
> = {4.0};
float fxaareducemul
<
string UIName = "FXAAReduceMul";
string UIWidget = "Checkbox";
> = {16.0};
float fxaareducemin
<
string UIName = "FXAAReduceMin";
string UIWidget = "Checkbox";
> = {128.0};
/* border blurring */
bool bbenable
<
string UIName = "BlurEnable";
string UIWidget = "Checkbox";
> = {true};
/* border blur sampling range */
float bbsamp_n
<
string UIName = "BlurSampleNight";
string UIWidget = "Spinner";
> = {1.0};
float bbsamp_d
<
string UIName = "BlurSampleDay";
string UIWidget = "Spinner";
> = {1.0};
float bbsamp_in
<
string UIName = "BlurSampleInteriorNight";
string UIWidget = "Spinner";
> = {1.0};
float bbsamp_id
<
string UIName = "BlurSampleInteriorDay";
string UIWidget = "Spinner";
> = {1.0};
/* border blur level */
int bblevel
<
string UIName = "BlurLevel";
string UIWidget = "Spinner";
> = {1};
/* blend power of blur */
float bbpow_n
<
string UIName = "BlurPowerNight";
string UIWidget = "Spinner";
> = {15.46};
float bbpow_d
<
string UIName = "BlurPowerDay";
string UIWidget = "Spinner";
> = {15.46};
float bbpow_in
<
string UIName = "BlurPowerInteriorNight";
string UIWidget = "Spinner";
> = {15.46};
float bbpow_id
<
string UIName = "BlurPowerInteriorDay";
string UIWidget = "Spinner";
> = {15.46};
/* falloff curve of blur towards center of screen */
float bbcurve_n
<
string UIName = "BlurCurveNight";
string UIWidget = "Spinner";
> = {1.2};
float bbcurve_d
<
string UIName = "BlurCurveDay";
string UIWidget = "Spinner";
> = {1.2};
float bbcurve_in
<
string UIName = "BlurCurveInteriorNight";
string UIWidget = "Spinner";
> = {1.2};
float bbcurve_id
<
string UIName = "BlurCurveInteriorDay";
string UIWidget = "Spinner";
> = {1.2};
/* blur falloff radius */
float bbradius_n
<
string UIName = "BlurRadiusNight";
string UIWidget = "Spinner";
> = {0.69};
float bbradius_d
<
string UIName = "BlurRadiusDay";
string UIWidget = "Spinner";
> = {0.69};
float bbradius_in
<
string UIName = "BlurRadiusInteriorNight";
string UIWidget = "Spinner";
> = {0.69};
float bbradius_id
<
string UIName = "BlurRadiusInteriorDay";
string UIWidget = "Spinner";
> = {0.69};
/* border darkening */
bool dkenable
<
string UIName = "DarkEnable";
string UIWidget = "Checkbox";
> = {true};
/* radius of darkening (relative to screen width) */
float dkradius_n
<
string UIName = "DarkRadiusNight";
string UIWidget = "Spinner";
> = {0.37};
float dkradius_d
<
string UIName = "DarkRadiusDay";
string UIWidget = "Spinner";
> = {0.37};
float dkradius_in
<
string UIName = "DarkRadiusInteriorNight";
string UIWidget = "Spinner";
> = {0.37};
float dkradius_id
<
string UIName = "DarkRadiusInteriorDay";
string UIWidget = "Spinner";
> = {0.37};
/* falloff of darkening */
float dkcurve_n
<
string UIName = "DarkCurveNight";
string UIWidget = "Spinner";
> = {1.94};
float dkcurve_d
<
string UIName = "DarkCurveDay";
string UIWidget = "Spinner";
> = {1.94};
float dkcurve_in
<
string UIName = "DarkCurveInteriorNight";
string UIWidget = "Spinner";
> = {1.94};
float dkcurve_id
<
string UIName = "DarkCurveInteriorDay";
string UIWidget = "Spinner";
> = {1.94};
/* bump of darkening */
float dkbump_n
<
string UIName = "DarkBumpNight";
string UIWidget = "Spinner";
> = {0.79};
float dkbump_d
<
string UIName = "DarkBumpDay";
string UIWidget = "Spinner";
> = {0.79};
float dkbump_in
<
string UIName = "DarkBumpInteriorNight";
string UIWidget = "Spinner";
> = {0.79};
float dkbump_id
<
string UIName = "DarkBumpInteriorDay";
string UIWidget = "Spinner";
> = {0.79};
/* shine/bloom compensation */
bool compenable
<
string UIName = "EnableCompensate";
string UIWidget = "Checkbox";
> = {true};
/* compensation factor */
float compfactor_n
<
string UIName = "CompensateFactorNight";
string UIWidget = "Spinner";
> = {0.19};
float compfactor_d
<
string UIName = "CompensateFactorDay";
string UIWidget = "Spinner";
> = {0.19};
float compfactor_in
<
string UIName = "CompensateFactorInteriorNight";
string UIWidget = "Spinner";
> = {0.19};
float compfactor_id
<
string UIName = "CompensateFactorInteriorDay";
string UIWidget = "Spinner";
> = {0.19};
/* compensation power */
float comppow_n
<
string UIName = "CompensatePowerNight";
string UIWidget = "Spinner";
> = {1.05};
float comppow_d
<
string UIName = "CompensatePowerDay";
string UIWidget = "Spinner";
> = {1.05};
float comppow_in
<
string UIName = "CompensatePowerInteriorNight";
string UIWidget = "Spinner";
> = {1.05};
float comppow_id
<
string UIName = "CompensatePowerInteriorDay";
string UIWidget = "Spinner";
> = {1.05};
/* compensation saturation */
float compsat_n
<
string UIName = "CompensateSaturationNight";
string UIWidget = "Spinner";
> = {0.3};
float compsat_d
<
string UIName = "CompensateSaturationDay";
string UIWidget = "Spinner";
> = {0.3};
float compsat_in
<
string UIName = "CompensateSaturationInteriorNight";
string UIWidget = "Spinner";
> = {0.3};
float compsat_id
<
string UIName = "CompensateSaturationInteriorDay";
string UIWidget = "Spinner";
> = {0.3};
/* brightness bump for compensation */
float compbump_n
<
string UIName = "CompensateBumpNight";
string UIWidget = "Spinner";
> = {0.0};
float compbump_d
<
string UIName = "CompensateBumpDay";
string UIWidget = "Spinner";
> = {0.0};
float compbump_in
<
string UIName = "CompensateBumpInteriorNight";
string UIWidget = "Spinner";
> = {0.0};
float compbump_id
<
string UIName = "CompensateBumpInteriorDay";
string UIWidget = "Spinner";
> = {0.0};
bool gradeenable
<
string UIName = "EnableGrading";
string UIWidget = "Checkbox";
> = {true};
/* miscellaneous color grading parameters */
float gradeadd_r_n
<
string UIName = "GradingAddRNight";
string UIWidget = "Spinner";
> = {0.0};
float gradeadd_g_n
<
string UIName = "GradingAddGNight";
string UIWidget = "Spinner";
> = {0.0};
float gradeadd_b_n
<
string UIName = "GradingAddBNight";
string UIWidget = "Spinner";
> = {0.0};
float gradeadd_r_d
<
string UIName = "GradingAddRDay";
string UIWidget = "Spinner";
> = {0.0};
float gradeadd_g_d
<
string UIName = "GradingAddGDay";
string UIWidget = "Spinner";
> = {0.0};
float gradeadd_b_d
<
string UIName = "GradingAddBDay";
string UIWidget = "Spinner";
> = {0.0};
float gradeadd_r_in
<
string UIName = "GradingAddRInteriorNight";
string UIWidget = "Spinner";
> = {0.0};
float gradeadd_g_in
<
string UIName = "GradingAddGInteriorNight";
string UIWidget = "Spinner";
> = {0.0};
float gradeadd_b_in
<
string UIName = "GradingAddBInteriorNight";
string UIWidget = "Spinner";
> = {0.0};
float gradeadd_r_id
<
string UIName = "GradingAddRInteriorDay";
string UIWidget = "Spinner";
> = {0.0};
float gradeadd_g_id
<
string UIName = "GradingAddGInteriorDay";
string UIWidget = "Spinner";
> = {0.0};
float gradeadd_b_id
<
string UIName = "GradingAddBInteriorDay";
string UIWidget = "Spinner";
> = {0.0};
float grademul_r_n
<
string UIName = "GradingMulRNight";
string UIWidget = "Spinner";
> = {1.02};
float grademul_g_n
<
string UIName = "GradingMulGNight";
string UIWidget = "Spinner";
> = {1.08};
float grademul_b_n
<
string UIName = "GradingMulBNight";
string UIWidget = "Spinner";
> = {1.04};
float grademul_r_d
<
string UIName = "GradingMulRDay";
string UIWidget = "Spinner";
> = {1.02};
float grademul_g_d
<
string UIName = "GradingMulGDay";
string UIWidget = "Spinner";
> = {1.08};
float grademul_b_d
<
string UIName = "GradingMulBDay";
string UIWidget = "Spinner";
> = {1.04};
float grademul_r_in
<
string UIName = "GradingMulRInteriorNight";
string UIWidget = "Spinner";
> = {1.02};
float grademul_g_in
<
string UIName = "GradingMulGInteriorNight";
string UIWidget = "Spinner";
> = {1.08};
float grademul_b_in
<
string UIName = "GradingMulBInteriorNight";
string UIWidget = "Spinner";
> = {1.04};
float grademul_r_id
<
string UIName = "GradingMulRInteriorDay";
string UIWidget = "Spinner";
> = {1.02};
float grademul_g_id
<
string UIName = "GradingMulGInteriorDay";
string UIWidget = "Spinner";
> = {1.08};
float grademul_b_id
<
string UIName = "GradingMulBInteriorDay";
string UIWidget = "Spinner";
> = {1.04};
float gradepow_r_n
<
string UIName = "GradingPowRNight";
string UIWidget = "Spinner";
> = {1.07};
float gradepow_g_n
<
string UIName = "GradingPowGNight";
string UIWidget = "Spinner";
> = {1.12};
float gradepow_b_n
<
string UIName = "GradingPowBNight";
string UIWidget = "Spinner";
> = {1.08};
float gradepow_r_d
<
string UIName = "GradingPowRDay";
string UIWidget = "Spinner";
> = {1.07};
float gradepow_g_d
<
string UIName = "GradingPowGDay";
string UIWidget = "Spinner";
> = {1.12};
float gradepow_b_d
<
string UIName = "GradingPowBDay";
string UIWidget = "Spinner";
> = {1.08};
float gradepow_r_in
<
string UIName = "GradingPowRInteriorNight";
string UIWidget = "Spinner";
> = {1.07};
float gradepow_g_in
<
string UIName = "GradingPowGInteriorNight";
string UIWidget = "Spinner";
> = {1.12};
float gradepow_b_in
<
string UIName = "GradingPowBInteriorNight";
string UIWidget = "Spinner";
> = {1.08};
float gradepow_r_id
<
string UIName = "GradingPowRInteriorDay";
string UIWidget = "Spinner";
> = {1.07};
float gradepow_g_id
<
string UIName = "GradingPowGInteriorDay";
string UIWidget = "Spinner";
> = {1.12};
float gradepow_b_id
<
string UIName = "GradingPowBInteriorDay";
string UIWidget = "Spinner";
> = {1.08};
float gradecol_r_n
<
string UIName = "GradingColRNight";
string UIWidget = "Spinner";
> = {0.04};
float gradecol_g_n
<
string UIName = "GradingColGNight";
string UIWidget = "Spinner";
> = {0.07};
float gradecol_b_n
<
string UIName = "GradingColBNight";
string UIWidget = "Spinner";
> = {0.59};
float gradecol_r_d
<
string UIName = "GradingColRDay";
string UIWidget = "Spinner";
> = {0.04};
float gradecol_g_d
<
string UIName = "GradingColGDay";
string UIWidget = "Spinner";
> = {0.07};
float gradecol_b_d
<
string UIName = "GradingColBDay";
string UIWidget = "Spinner";
> = {0.59};
float gradecol_r_in
<
string UIName = "GradingColRInteriorNight";
string UIWidget = "Spinner";
> = {0.04};
float gradecol_g_in
<
string UIName = "GradingColGInteriorNight";
string UIWidget = "Spinner";
> = {0.07};
float gradecol_b_in
<
string UIName = "GradingColBInteriorNight";
string UIWidget = "Spinner";
> = {0.59};
float gradecol_r_id
<
string UIName = "GradingColRInteriorDay";
string UIWidget = "Spinner";
> = {0.04};
float gradecol_g_id
<
string UIName = "GradingColGInteriorDay";
string UIWidget = "Spinner";
> = {0.07};
float gradecol_b_id
<
string UIName = "GradingColBInteriorDay";
string UIWidget = "Spinner";
> = {0.59};
float gradecolfact_n
<
string UIName = "GradingColFactorNight";
string UIWidget = "Spinner";
> = {-0.24};
float gradecolfact_d
<
string UIName = "GradingColFactorDay";
string UIWidget = "Spinner";
> = {-0.24};
float gradecolfact_in
<
string UIName = "GradingColFactorInteriorNight";
string UIWidget = "Spinner";
> = {-0.24};
float gradecolfact_id
<
string UIName = "GradingColFactorInteriorDay";
string UIWidget = "Spinner";
> = {-0.24};
/* Soft grain */
bool ne
<
string UIName = "EnableSoftGrain";
string UIWidget = "Checkbox";
> = {true};
/* soft grain speed */
float nf_n
<
string UIName = "SoftGrainSpeedNight";
string UIWidget = "Spinner";
> = {2.68};
float nf_d
<
string UIName = "SoftGrainSpeedDay";
string UIWidget = "Spinner";
> = {2.68};
float nf_in
<
string UIName = "SoftGrainSpeedInteriorNight";
string UIWidget = "Spinner";
> = {2.68};
float nf_id
<
string UIName = "SoftGrainSpeedInteriorDay";
string UIWidget = "Spinner";
> = {2.68};
/* soft grain intensity */
float ni_n
<
string UIName = "SoftGrainIntensityNight";
string UIWidget = "Spinner";
> = {0.04};
float ni_d
<
string UIName = "SoftGrainIntensityDay";
string UIWidget = "Spinner";
> = {0.04};
float ni_in
<
string UIName = "SoftGrainIntensityInteriorNight";
string UIWidget = "Spinner";
> = {0.04};
float ni_id
<
string UIName = "SoftGrainIntensityInteriorDay";
string UIWidget = "Spinner";
> = {0.04};
/* soft grain saturation */
float ns_n
<
string UIName = "SoftGrainSaturationNight";
string UIWidget = "Spinner";
> = {0.09};
float ns_d
<
string UIName = "SoftGrainSaturationDay";
string UIWidget = "Spinner";
> = {0.09};
float ns_in
<
string UIName = "SoftGrainSaturationInteriorNight";
string UIWidget = "Spinner";
> = {0.09};
float ns_id
<
string UIName = "SoftGrainSaturationInteriorDay";
string UIWidget = "Spinner";
> = {0.09};
/* Two-pass noise */
bool np
<
string UIName = "SoftGrainTwopass";
string UIWidget = "Checkbox";
> = {true};
/* grain blend function: 0 normal, 1 add, 2 overlay, 3 multiply */
int nb
<
string UIName = "SoftGrainBlendfunc";
string UIWidget = "Spinner";
> = {1};
/* grain deviation */
float nk
<
string UIName = "SoftGrainDeviation";
string UIWidget = "Spinner";
> = {0.05};
/* grain magnification */
float nm1
<
string UIName = "SoftGrainMagnification1";
string UIWidget = "Spinner";
> = {1.25};
float nm2
<
string UIName = "SoftGrainMagnification2";
string UIWidget = "Spinner";
> = {0.64};
float nm3
<
string UIName = "SoftGrainMagnification3";
string UIWidget = "Spinner";
> = {0.35};
/* grain magnification pass 1 */
float nm11
<
string UIName = "SoftGrainMagnification11";
string UIWidget = "Spinner";
> = {2.05};
float nm12
<
string UIName = "SoftGrainMagnification12";
string UIWidget = "Spinner";
> = {3.11};
float nm13
<
string UIName = "SoftGrainMagnification13";
string UIWidget = "Spinner";
> = {2.22};
/* grain magnification pass 2 */
float nm21
<
string UIName = "SoftGrainMagnification21";
string UIWidget = "Spinner";
> = {4.25};
float nm22
<
string UIName = "SoftGrainMagnification22";
string UIWidget = "Spinner";
> = {0.42};
float nm23
<
string UIName = "SoftGrainMagnification23";
string UIWidget = "Spinner";
> = {6.29};
/* grain power */
float nj_n
<
string UIName = "SoftGrainPowerNight";
string UIWidget = "Spinner";
> = {2.93};
float nj_d
<
string UIName = "SoftGrainPowerDay";
string UIWidget = "Spinner";
> = {2.93};
float nj_in
<
string UIName = "SoftGrainPowerInteriorNight";
string UIWidget = "Spinner";
> = {2.93};
float nj_id
<
string UIName = "SoftGrainPowerInteriorDay";
string UIWidget = "Spinner";
> = {2.93};
/* Block graphics filter with palette reduction */
bool benable
<
string UIName = "EnableBlockGFX";
string UIWidget = "Checkbox";
> = {false};
/* emulated resolution for block graphics (0 or less for real resolution) */
float bresw
<
string UIName = "BlockGFXResolutionW";
string UIWidget = "Spinner";
> = {1.0};
float bresh
<
string UIName = "BlockGFXResolutionH";
string UIWidget = "Spinner";
> = {1.0};
/* palette type for block graphics */
int bpaltype
<
string UIName = "BlockGFXpalette";
string UIWidget = "Spinner";
> = {5};
/* CGA subpalette */
int bcganum
<
string UIName = "BlockGFXcgamode";
string UIWidget = "Spinner";
> = {0};
/* EGA subpalette */
int beganum
<
string UIName = "BlockGFXegamode";
string UIWidget = "Spinner";
> = {0};
/* Dithering method */
int bdither
<
string UIName= "BlockGFXDither";
string UIWidget = "Spinner";
> = {4};
/* Gamma modifier */
float bgamma
<
string UIName= "BlockGFXPrepassGamma";
string UIWidget = "Spinner";
> = {1.0};
/* dither bump */
float bdbump
<
string UIName= "BlockGFXDitherBump";
string UIWidget = "Spinner";
> = {-0.01};
/* dither multiplier */
float bdmult
<
string UIName= "BlockGFXDitherMultiplier";
string UIWidget = "Spinner";
> = {0.02};
/* dither saturation */
float bsaturation
<
string UIName= "BlockGFXPrepassSaturation";
string UIWidget = "Spinner";
> = {1.0};
/* Dirty screen effect (static noise) */
bool dirtenable
<
string UIName = "EnableDirt";
string UIWidget = "Checkbox";
> = {true};
/* dirt amount */
float dirtcfactor
<
string UIName = "DirtCoordFactor";
string UIWidget = "Spinner";
> = {0.09};
float dirtlfactor
<
string UIName = "DirtLuminanceFactor";
string UIWidget = "Spinner";
> = {0.0};
float dirtmc
<
string UIName = "DirtCoordMagnification";
string UIWidget = "Spinner";
> = {3.04};
float dirtml
<
string UIName = "DirtLuminanceMagnification";
string UIWidget = "Spinner";
> = {1.0};
/* Letterbox */
bool boxe
<
string UIName = "EnableBox";
string UIWidget = "Checkbox";
> = {true};
/* horizontal factor */
float boxh
<
string UIName = "BoxHorizontal";
string UIWidget = "Spinner";
> = {1.5};
/* vertical factor */
float boxv
<
string UIName = "BoxVertical";
string UIWidget = "Spinner";
> = {1.0};
/* softening */
float boxb
<
string UIName = "BoxSoften";
string UIWidget = "Spinner";
> = {0.02};
/* box alpha */
float boxa
<
string UIName = "BoxAlpha";
string UIWidget = "Spinner";
> = {6.07};
/* Use CRT curvature shader */
bool crtenable
<
string UIName = "EnableCurvature";
string UIWidget = "Checkbox";
> = {false};
/* chromatic aberration on CRT: fancy effect that isn't really realistic */
float chromaab
<
string UIName = "CurveChromaticAberration";
string UIWidget = "Spinner";
> = {0.93};
/* curvature lens zoom (0.5 = none) */
float lenszoom
<
string UIName = "CurveZoom";
string UIWidget = "Spinner";
> = {50.0};
/* curvature lens distortion */
float lensdist
<
string UIName = "CurveLens";
string UIWidget = "Spinner";
> = {0.0};
/* curvature CUBIC lens distortion */
float lensdistc
<
string UIName = "CurveLensCubic";
string UIWidget = "Spinner";
> = {0.0};
/* Use sharpening filter */
bool shenable
<
string UIName = "EnableSharpen";
string UIWidget = "Checkbox";
> = {false};
float shsamp
<
string UIName = "SharpenSample";
string UIWidget = "Spinner";
> = {0.6};
float shblend
<
string UIName = "SharpenBlend";
string UIWidget = "Spinner";
> = {0.2};