MariENB FO4 3.2.7b
484
enbseries.ini
|
|
@ -13,7 +13,7 @@ EnableAdaptation=true
|
|||
EnableBloom=true
|
||||
EnableDepthOfField=true
|
||||
EnableLens=false
|
||||
EnableSSAO=false
|
||||
EnableSSAO=true
|
||||
|
||||
[COLORCORRECTION]
|
||||
UseProceduralCorrection=true
|
||||
|
|
@ -22,7 +22,7 @@ GammaCurve=1.0
|
|||
|
||||
[TIMEOFDAY]
|
||||
DawnDuration=2.0
|
||||
SunriseTime=6.0
|
||||
SunriseTime=7.0
|
||||
DayTime=12.0
|
||||
SunsetTime=18.0
|
||||
DuskDuration=2.0
|
||||
|
|
@ -33,7 +33,7 @@ AdaptationSensitivity=0.2
|
|||
AdaptationTime=0.65
|
||||
ForceMinMaxValues=false
|
||||
AdaptationMin=0.0
|
||||
AdaptationMax=0.25
|
||||
AdaptationMax=0.35
|
||||
|
||||
[DEPTHOFFIELD]
|
||||
FocusingTime=0.4
|
||||
|
|
@ -41,11 +41,11 @@ ApertureTime=1.0
|
|||
|
||||
[BLOOM]
|
||||
IgnoreWeatherSystem=true
|
||||
AmountDawn=1.1
|
||||
AmountSunrise=1.2
|
||||
AmountDawn=1.0
|
||||
AmountSunrise=1.0
|
||||
AmountDay=1.0
|
||||
AmountSunset=1.2
|
||||
AmountDusk=1.1
|
||||
AmountSunset=1.0
|
||||
AmountDusk=1.0
|
||||
AmountNight=1.0
|
||||
AmountInteriorDay=1.0
|
||||
AmountInteriorNight=1.0
|
||||
|
|
@ -64,31 +64,31 @@ AmountInteriorNight=1.0
|
|||
[SKY]
|
||||
IgnoreWeatherSystem=true
|
||||
Enable=true
|
||||
GradientIntensityDawn=1.17
|
||||
GradientIntensitySunrise=1.11
|
||||
GradientIntensityDay=1.15
|
||||
GradientIntensitySunset=1.110001
|
||||
GradientIntensityDusk=1.160001
|
||||
GradientIntensityNight=1.140001
|
||||
GradientIntensityInteriorDay=1.12
|
||||
GradientIntensityInteriorNight=1.14
|
||||
GradientDesaturationDawn=0.65
|
||||
GradientDesaturationSunrise=0.5
|
||||
GradientDesaturationDay=0.38
|
||||
GradientDesaturationSunset=0.51
|
||||
GradientDesaturationDusk=0.63
|
||||
GradientDesaturationNight=0.49
|
||||
GradientDesaturationInteriorDay=0.22
|
||||
GradientDesaturationInteriorNight=0.42
|
||||
GradientIntensityDawn=0.83
|
||||
GradientIntensitySunrise=1.07
|
||||
GradientIntensityDay=1.18
|
||||
GradientIntensitySunset=1.000001
|
||||
GradientIntensityDusk=0.840001
|
||||
GradientIntensityNight=0.620001
|
||||
GradientIntensityInteriorDay=1.18
|
||||
GradientIntensityInteriorNight=0.35
|
||||
GradientDesaturationDawn=0.04
|
||||
GradientDesaturationSunrise=0.06
|
||||
GradientDesaturationDay=0.1
|
||||
GradientDesaturationSunset=0.07
|
||||
GradientDesaturationDusk=0.04
|
||||
GradientDesaturationNight=0.02
|
||||
GradientDesaturationInteriorDay=0.15
|
||||
GradientDesaturationInteriorNight=0.03
|
||||
|
||||
GradientTopIntensityDawn=0.59
|
||||
GradientTopIntensitySunrise=0.74
|
||||
GradientTopIntensityDay=0.920001
|
||||
GradientTopIntensitySunset=0.72
|
||||
GradientTopIntensityDusk=0.52
|
||||
GradientTopIntensityNight=0.43
|
||||
GradientTopIntensityDawn=0.62
|
||||
GradientTopIntensitySunrise=0.79
|
||||
GradientTopIntensityDay=0.990001
|
||||
GradientTopIntensitySunset=0.82
|
||||
GradientTopIntensityDusk=0.6
|
||||
GradientTopIntensityNight=0.42
|
||||
GradientTopIntensityInteriorDay=0.97
|
||||
GradientTopIntensityInteriorNight=0.48
|
||||
GradientTopIntensityInteriorNight=0.38
|
||||
GradientTopCurveDawn=0.87
|
||||
GradientTopCurveSunrise=0.82
|
||||
GradientTopCurveDay=0.97
|
||||
|
|
@ -97,242 +97,242 @@ GradientTopCurveDusk=0.86
|
|||
GradientTopCurveNight=0.89
|
||||
GradientTopCurveInteriorDay=0.98
|
||||
GradientTopCurveInteriorNight=0.82
|
||||
GradientTopColorFilterDawn=0.886, 0.773, 0.969
|
||||
GradientTopColorFilterSunrise=0.812, 0.859, 0.953
|
||||
GradientTopColorFilterDawn=0.965, 0.69, 0.69
|
||||
GradientTopColorFilterSunrise=0.965, 0.918, 0.855
|
||||
GradientTopColorFilterDay=0.941, 0.992, 0.996
|
||||
GradientTopColorFilterSunset=0.839, 0.875, 0.949
|
||||
GradientTopColorFilterDusk=0.902, 0.824, 0.965
|
||||
GradientTopColorFilterNight=0.867, 0.753, 0.886
|
||||
GradientTopColorFilterSunset=0.933, 0.843, 0.769
|
||||
GradientTopColorFilterDusk=0.945, 0.663, 0.663
|
||||
GradientTopColorFilterNight=0.596, 0.561, 0.867
|
||||
GradientTopColorFilterInteriorDay=0.949, 0.996, 0.992
|
||||
GradientTopColorFilterInteriorNight=0.898, 0.835, 0.906
|
||||
GradientTopColorFilterInteriorNight=0.667, 0.569, 0.757
|
||||
|
||||
GradientMiddleIntensityDawn=1.1
|
||||
GradientMiddleIntensitySunrise=1.13
|
||||
GradientMiddleIntensityDay=1.18
|
||||
GradientMiddleIntensitySunset=1.13
|
||||
GradientMiddleIntensityDusk=1.11
|
||||
GradientMiddleIntensityNight=1.09
|
||||
GradientMiddleIntensityInteriorDay=1.1
|
||||
GradientMiddleIntensityInteriorNight=1.09
|
||||
GradientMiddleCurveDawn=0.86
|
||||
GradientMiddleCurveSunrise=0.85
|
||||
GradientMiddleCurveDay=0.72
|
||||
GradientMiddleCurveSunset=0.85
|
||||
GradientMiddleCurveDusk=0.8
|
||||
GradientMiddleCurveNight=0.91
|
||||
GradientMiddleCurveInteriorDay=0.74
|
||||
GradientMiddleCurveInteriorNight=0.92
|
||||
GradientMiddleColorFilterDawn=0.78, 0.753, 0.988
|
||||
GradientMiddleColorFilterSunrise=0.729, 0.843, 0.988
|
||||
GradientMiddleColorFilterDay=0.847, 0.914, 0.957
|
||||
GradientMiddleColorFilterSunset=0.792, 0.835, 0.973
|
||||
GradientMiddleColorFilterDusk=0.733, 0.741, 0.984
|
||||
GradientMiddleColorFilterNight=0.871, 0.929, 0.996
|
||||
GradientMiddleColorFilterInteriorDay=0.82, 0.878, 0.969
|
||||
GradientMiddleColorFilterInteriorNight=0.906, 0.882, 0.945
|
||||
GradientMiddleIntensityDawn=0.76
|
||||
GradientMiddleIntensitySunrise=0.88
|
||||
GradientMiddleIntensityDay=1.02
|
||||
GradientMiddleIntensitySunset=0.88
|
||||
GradientMiddleIntensityDusk=0.78
|
||||
GradientMiddleIntensityNight=0.52
|
||||
GradientMiddleIntensityInteriorDay=1.0
|
||||
GradientMiddleIntensityInteriorNight=0.55
|
||||
GradientMiddleCurveDawn=0.93
|
||||
GradientMiddleCurveSunrise=0.96
|
||||
GradientMiddleCurveDay=1.02
|
||||
GradientMiddleCurveSunset=0.95
|
||||
GradientMiddleCurveDusk=0.92
|
||||
GradientMiddleCurveNight=0.88
|
||||
GradientMiddleCurveInteriorDay=1.05
|
||||
GradientMiddleCurveInteriorNight=0.87
|
||||
GradientMiddleColorFilterDawn=0.91, 0.424, 0.424
|
||||
GradientMiddleColorFilterSunrise=0.984, 0.722, 0.569
|
||||
GradientMiddleColorFilterDay=0.914, 0.973, 0.984
|
||||
GradientMiddleColorFilterSunset=0.953, 0.639, 0.459
|
||||
GradientMiddleColorFilterDusk=0.969, 0.435, 0.435
|
||||
GradientMiddleColorFilterNight=0.518, 0.667, 0.988
|
||||
GradientMiddleColorFilterInteriorDay=0.898, 0.933, 0.984
|
||||
GradientMiddleColorFilterInteriorNight=0.561, 0.561, 0.976
|
||||
|
||||
GradientHorizonIntensityDawn=1.11
|
||||
GradientHorizonIntensitySunrise=1.07
|
||||
GradientHorizonIntensityDay=1.050001
|
||||
GradientHorizonIntensitySunset=1.08
|
||||
GradientHorizonIntensityDusk=1.1
|
||||
GradientHorizonIntensityNight=1.03
|
||||
GradientHorizonIntensityInteriorDay=1.03
|
||||
GradientHorizonIntensityInteriorNight=1.1
|
||||
GradientHorizonCurveDawn=0.93
|
||||
GradientHorizonCurveSunrise=0.95
|
||||
GradientHorizonIntensityDawn=0.75
|
||||
GradientHorizonIntensitySunrise=0.81
|
||||
GradientHorizonIntensityDay=0.930001
|
||||
GradientHorizonIntensitySunset=0.83
|
||||
GradientHorizonIntensityDusk=0.78
|
||||
GradientHorizonIntensityNight=0.630001
|
||||
GradientHorizonIntensityInteriorDay=1.0
|
||||
GradientHorizonIntensityInteriorNight=0.66
|
||||
GradientHorizonCurveDawn=0.82
|
||||
GradientHorizonCurveSunrise=0.86
|
||||
GradientHorizonCurveDay=0.92
|
||||
GradientHorizonCurveSunset=0.94
|
||||
GradientHorizonCurveDusk=0.92
|
||||
GradientHorizonCurveNight=0.97
|
||||
GradientHorizonCurveSunset=0.87
|
||||
GradientHorizonCurveDusk=0.83
|
||||
GradientHorizonCurveNight=0.78
|
||||
GradientHorizonCurveInteriorDay=0.9
|
||||
GradientHorizonCurveInteriorNight=0.98
|
||||
GradientHorizonColorFilterDawn=0.757, 0.792, 0.882
|
||||
GradientHorizonColorFilterSunrise=0.875, 0.929, 0.992
|
||||
GradientHorizonColorFilterDay=0.89, 0.984, 0.961
|
||||
GradientHorizonColorFilterSunset=0.784, 0.851, 0.949
|
||||
GradientHorizonColorFilterDusk=0.882, 0.89, 0.953
|
||||
GradientHorizonColorFilterNight=0.773, 0.827, 0.929
|
||||
GradientHorizonColorFilterDawn=0.788, 0.451, 0.451
|
||||
GradientHorizonColorFilterSunrise=0.973, 0.714, 0.596
|
||||
GradientHorizonColorFilterDay=0.925, 0.988, 0.984
|
||||
GradientHorizonColorFilterSunset=0.957, 0.698, 0.612
|
||||
GradientHorizonColorFilterDusk=0.808, 0.518, 0.518
|
||||
GradientHorizonColorFilterNight=0.655, 0.816, 0.976
|
||||
GradientHorizonColorFilterInteriorDay=0.788, 0.91, 0.953
|
||||
GradientHorizonColorFilterInteriorNight=0.851, 0.863, 0.89
|
||||
|
||||
CloudsIntensityDawn=0.51
|
||||
CloudsIntensitySunrise=0.680001
|
||||
CloudsIntensityDay=0.880001
|
||||
CloudsIntensitySunset=0.670001
|
||||
CloudsIntensityDusk=0.490001
|
||||
CloudsIntensityNight=0.330001
|
||||
CloudsIntensityInteriorDay=0.94
|
||||
CloudsIntensityInteriorNight=0.28
|
||||
CloudsCurveDawn=1.06
|
||||
CloudsCurveSunrise=1.04
|
||||
CloudsCurveDay=1.01
|
||||
CloudsCurveSunset=1.05
|
||||
CloudsCurveDusk=1.06
|
||||
CloudsCurveNight=1.07
|
||||
CloudsCurveInteriorDay=1.01
|
||||
CloudsCurveInteriorNight=1.08
|
||||
CloudsDesaturationDawn=0.34
|
||||
CloudsDesaturationSunrise=0.15
|
||||
CloudsDesaturationDay=0.09
|
||||
CloudsIntensityDawn=0.76
|
||||
CloudsIntensitySunrise=0.950001
|
||||
CloudsIntensityDay=1.030001
|
||||
CloudsIntensitySunset=0.880001
|
||||
CloudsIntensityDusk=0.730001
|
||||
CloudsIntensityNight=0.610001
|
||||
CloudsIntensityInteriorDay=1.0
|
||||
CloudsIntensityInteriorNight=0.61
|
||||
CloudsCurveDawn=1.13
|
||||
CloudsCurveSunrise=1.09
|
||||
CloudsCurveDay=1.0
|
||||
CloudsCurveSunset=1.1
|
||||
CloudsCurveDusk=1.2
|
||||
CloudsCurveNight=1.25
|
||||
CloudsCurveInteriorDay=1.02
|
||||
CloudsCurveInteriorNight=1.2
|
||||
CloudsDesaturationDawn=0.16
|
||||
CloudsDesaturationSunrise=0.22
|
||||
CloudsDesaturationDay=0.33
|
||||
CloudsDesaturationSunset=0.21
|
||||
CloudsDesaturationDusk=0.39
|
||||
CloudsDesaturationNight=0.16
|
||||
CloudsDesaturationInteriorDay=0.14
|
||||
CloudsDesaturationInteriorNight=0.16
|
||||
CloudsOpacityDawn=1.13
|
||||
CloudsOpacitySunrise=1.11
|
||||
CloudsOpacityDay=1.04
|
||||
CloudsOpacitySunset=1.11
|
||||
CloudsOpacityDusk=1.19
|
||||
CloudsOpacityNight=1.11
|
||||
CloudsOpacityInteriorDay=1.05
|
||||
CloudsOpacityInteriorNight=1.15
|
||||
CloudsColorFilterDawn=0.89, 0.816, 0.996
|
||||
CloudsColorFilterSunrise=0.733, 0.761, 0.969
|
||||
CloudsColorFilterDay=0.855, 0.929, 0.996
|
||||
CloudsColorFilterSunset=0.804, 0.89, 0.992
|
||||
CloudsColorFilterDusk=0.796, 0.773, 0.929
|
||||
CloudsColorFilterNight=0.953, 0.925, 0.98
|
||||
CloudsColorFilterInteriorDay=0.757, 0.875, 0.914
|
||||
CloudsColorFilterInteriorNight=0.953, 0.933, 0.98
|
||||
CloudsDesaturationDusk=0.19
|
||||
CloudsDesaturationNight=0.11
|
||||
CloudsDesaturationInteriorDay=0.31
|
||||
CloudsDesaturationInteriorNight=0.12
|
||||
CloudsOpacityDawn=1.0
|
||||
CloudsOpacitySunrise=1.0
|
||||
CloudsOpacityDay=1.0
|
||||
CloudsOpacitySunset=1.0
|
||||
CloudsOpacityDusk=1.0
|
||||
CloudsOpacityNight=1.0
|
||||
CloudsOpacityInteriorDay=1.0
|
||||
CloudsOpacityInteriorNight=1.0
|
||||
CloudsColorFilterDawn=0.953, 0.576, 0.576
|
||||
CloudsColorFilterSunrise=0.965, 0.745, 0.69
|
||||
CloudsColorFilterDay=1, 1, 1
|
||||
CloudsColorFilterSunset=0.973, 0.804, 0.745
|
||||
CloudsColorFilterDusk=0.937, 0.624, 0.624
|
||||
CloudsColorFilterNight=0.839, 0.886, 0.98
|
||||
CloudsColorFilterInteriorDay=1, 1, 1
|
||||
CloudsColorFilterInteriorNight=0.792, 0.808, 0.957
|
||||
|
||||
SunIntensityDawn=8.0
|
||||
SunIntensitySunrise=12.0
|
||||
SunIntensityDay=10.0
|
||||
SunIntensitySunset=12.0
|
||||
SunIntensityDusk=8.0
|
||||
SunIntensityNight=6.0
|
||||
SunIntensityInteriorDay=10.0
|
||||
SunIntensityInteriorNight=6.0
|
||||
SunDesaturationDawn=0.0
|
||||
SunDesaturationSunrise=0.0
|
||||
SunDesaturationDay=0.0
|
||||
SunDesaturationSunset=0.0
|
||||
SunDesaturationDusk=0.0
|
||||
SunDesaturationNight=0.0
|
||||
SunDesaturationInteriorDay=0.0
|
||||
SunDesaturationInteriorNight=0.0
|
||||
SunColorFilterDawn=0.988, 0.333, 0.149
|
||||
SunColorFilterSunrise=0.992, 0.58, 0.388
|
||||
SunColorFilterDay=1, 0.831, 0.71
|
||||
SunColorFilterSunset=0.988, 0.58, 0.29
|
||||
SunColorFilterDusk=0.949, 0.349, 0.18
|
||||
SunColorFilterNight=0.714, 0, 0
|
||||
SunIntensityDawn=1.91
|
||||
SunIntensitySunrise=2.45
|
||||
SunIntensityDay=2.02
|
||||
SunIntensitySunset=2.43
|
||||
SunIntensityDusk=1.97
|
||||
SunIntensityNight=1.15
|
||||
SunIntensityInteriorDay=2.02
|
||||
SunIntensityInteriorNight=1.19
|
||||
SunDesaturationDawn=0.11
|
||||
SunDesaturationSunrise=0.2
|
||||
SunDesaturationDay=0.35
|
||||
SunDesaturationSunset=0.28
|
||||
SunDesaturationDusk=0.14
|
||||
SunDesaturationNight=0.08
|
||||
SunDesaturationInteriorDay=0.35
|
||||
SunDesaturationInteriorNight=0.22
|
||||
SunColorFilterDawn=0.992, 0.537, 0.412
|
||||
SunColorFilterSunrise=0.996, 0.831, 0.729
|
||||
SunColorFilterDay=1, 0.898, 0.718
|
||||
SunColorFilterSunset=0.992, 0.765, 0.631
|
||||
SunColorFilterDusk=0.965, 0.447, 0.4
|
||||
SunColorFilterNight=0.914, 0.145, 0.145
|
||||
SunColorFilterInteriorDay=0.996, 0.827, 0.706
|
||||
SunColorFilterInteriorNight=0.694, 0.0392, 0.00392
|
||||
SunColorFilterInteriorNight=0.816, 0.114, 0.0784
|
||||
|
||||
MoonIntensityDawn=1.77
|
||||
MoonIntensitySunrise=1.39
|
||||
MoonIntensityDay=1.0
|
||||
MoonIntensitySunset=1.48
|
||||
MoonIntensityDusk=1.9
|
||||
MoonIntensityNight=2.4
|
||||
MoonIntensityInteriorDay=1.0
|
||||
MoonIntensityInteriorNight=2.47
|
||||
MoonDesaturationDawn=0.0
|
||||
MoonDesaturationSunrise=0.0
|
||||
MoonDesaturationDay=0.0
|
||||
MoonDesaturationSunset=0.0
|
||||
MoonDesaturationDusk=0.0
|
||||
MoonDesaturationNight=0.0
|
||||
MoonDesaturationInteriorDay=0.0
|
||||
MoonDesaturationInteriorNight=0.0
|
||||
MoonColorFilterDawn=0.443, 0.322, 0.98
|
||||
MoonColorFilterSunrise=0.776, 0.835, 0.918
|
||||
MoonIntensityDawn=0.7
|
||||
MoonIntensitySunrise=0.57
|
||||
MoonIntensityDay=0.49
|
||||
MoonIntensitySunset=0.58
|
||||
MoonIntensityDusk=0.69
|
||||
MoonIntensityNight=0.83
|
||||
MoonIntensityInteriorDay=0.57
|
||||
MoonIntensityInteriorNight=0.89
|
||||
MoonDesaturationDawn=0.47
|
||||
MoonDesaturationSunrise=0.41
|
||||
MoonDesaturationDay=0.36
|
||||
MoonDesaturationSunset=0.42
|
||||
MoonDesaturationDusk=0.48
|
||||
MoonDesaturationNight=0.56
|
||||
MoonDesaturationInteriorDay=0.43
|
||||
MoonDesaturationInteriorNight=0.59
|
||||
MoonColorFilterDawn=0.553, 0.498, 0.804
|
||||
MoonColorFilterSunrise=0.82, 0.847, 0.882
|
||||
MoonColorFilterDay=1, 1, 1
|
||||
MoonColorFilterSunset=0.722, 0.8, 0.918
|
||||
MoonColorFilterDusk=0.337, 0.239, 0.969
|
||||
MoonColorFilterNight=0.314, 0.541, 0.965
|
||||
MoonColorFilterSunset=0.757, 0.812, 0.89
|
||||
MoonColorFilterDusk=0.537, 0.51, 0.706
|
||||
MoonColorFilterNight=0.486, 0.596, 0.8
|
||||
MoonColorFilterInteriorDay=1, 1, 1
|
||||
MoonColorFilterInteriorNight=0.314, 0.431, 0.957
|
||||
MoonColorFilterInteriorNight=0.455, 0.522, 0.816
|
||||
[ENVIRONMENT]
|
||||
IgnoreWeatherSystem=true
|
||||
DirectLightingIntensityDawn=2.45
|
||||
DirectLightingIntensitySunrise=2.85
|
||||
DirectLightingIntensityDay=3.64
|
||||
DirectLightingIntensitySunset=2.75
|
||||
DirectLightingIntensityDusk=2.31
|
||||
DirectLightingIntensityNight=1.98
|
||||
DirectLightingIntensityInteriorDay=3.85
|
||||
DirectLightingIntensityInteriorNight=2.12
|
||||
DirectLightingDesaturationDawn=0.16
|
||||
DirectLightingDesaturationSunrise=0.25
|
||||
DirectLightingDesaturationDay=0.33
|
||||
DirectLightingDesaturationSunset=0.18
|
||||
DirectLightingDesaturationDusk=0.14
|
||||
DirectLightingDesaturationNight=0.08
|
||||
DirectLightingDesaturationInteriorDay=0.31
|
||||
DirectLightingDesaturationInteriorNight=0.07
|
||||
DirectLightingColorFilterDawn=0.988, 0.788, 0.761
|
||||
DirectLightingColorFilterSunrise=0.992, 0.741, 0.843
|
||||
DirectLightingColorFilterDay=0.902, 0.91, 0.98
|
||||
DirectLightingColorFilterSunset=0.984, 0.804, 0.871
|
||||
DirectLightingColorFilterDusk=0.98, 0.78, 0.745
|
||||
DirectLightingColorFilterNight=0.722, 0.71, 0.976
|
||||
DirectLightingColorFilterInteriorDay=0.941, 0.957, 0.98
|
||||
DirectLightingIntensityDawn=1.27
|
||||
DirectLightingIntensitySunrise=1.47
|
||||
DirectLightingIntensityDay=1.72
|
||||
DirectLightingIntensitySunset=1.47
|
||||
DirectLightingIntensityDusk=1.22
|
||||
DirectLightingIntensityNight=1.08
|
||||
DirectLightingIntensityInteriorDay=1.64
|
||||
DirectLightingIntensityInteriorNight=1.19
|
||||
DirectLightingDesaturationDawn=0.06
|
||||
DirectLightingDesaturationSunrise=0.1
|
||||
DirectLightingDesaturationDay=0.14
|
||||
DirectLightingDesaturationSunset=0.11
|
||||
DirectLightingDesaturationDusk=0.1
|
||||
DirectLightingDesaturationNight=0.04
|
||||
DirectLightingDesaturationInteriorDay=0.14
|
||||
DirectLightingDesaturationInteriorNight=0.04
|
||||
DirectLightingColorFilterDawn=0.941, 0.62, 0.62
|
||||
DirectLightingColorFilterSunrise=0.992, 0.788, 0.749
|
||||
DirectLightingColorFilterDay=0.992, 0.91, 0.851
|
||||
DirectLightingColorFilterSunset=0.98, 0.753, 0.729
|
||||
DirectLightingColorFilterDusk=0.922, 0.639, 0.639
|
||||
DirectLightingColorFilterNight=0.647, 0.635, 0.98
|
||||
DirectLightingColorFilterInteriorDay=0.98, 0.953, 0.941
|
||||
DirectLightingColorFilterInteriorNight=0.886, 0.863, 0.996
|
||||
AmbientLightingIntensityDawn=0.52
|
||||
AmbientLightingIntensitySunrise=0.61
|
||||
AmbientLightingIntensityDay=0.85
|
||||
AmbientLightingIntensitySunset=0.62
|
||||
AmbientLightingIntensityDusk=0.55
|
||||
AmbientLightingIntensityNight=0.45
|
||||
AmbientLightingIntensityInteriorDay=0.51
|
||||
AmbientLightingIntensityInteriorNight=0.35
|
||||
AmbientLightingIntensityDawn=0.42
|
||||
AmbientLightingIntensitySunrise=0.73
|
||||
AmbientLightingIntensityDay=0.88
|
||||
AmbientLightingIntensitySunset=0.74
|
||||
AmbientLightingIntensityDusk=0.48
|
||||
AmbientLightingIntensityNight=0.24
|
||||
AmbientLightingIntensityInteriorDay=0.18
|
||||
AmbientLightingIntensityInteriorNight=0.12
|
||||
[SSAO_SSIL]
|
||||
UseIndirectLighting=true
|
||||
ResolutionScale=1.0
|
||||
ResolutionScale=0.5
|
||||
SourceTexturesScale=0.5
|
||||
SamplingQuality=0
|
||||
SamplingRange=0.15
|
||||
AOIntensity=1.0
|
||||
AOIntensityInterior=1.0
|
||||
AOAmount=0.5
|
||||
AOAmountInterior=0.5
|
||||
ILAmount=4.0
|
||||
ILAmountInterior=4.0
|
||||
AOMixingType=0
|
||||
AOMixingTypeInterior=0
|
||||
SamplingRange=0.25
|
||||
AOIntensity=0.95
|
||||
AOIntensityInterior=0.82
|
||||
AOAmount=1.14
|
||||
AOAmountInterior=1.15
|
||||
ILAmount=1.34
|
||||
ILAmountInterior=1.2
|
||||
AOMixingType=2
|
||||
AOMixingTypeInterior=3
|
||||
[FOG]
|
||||
IgnoreWeatherSystem=true
|
||||
DistanceFadeDawn=1.0
|
||||
DistanceFadeSunrise=1.0
|
||||
DistanceFadeDay=1.0
|
||||
DistanceFadeSunset=1.0
|
||||
DistanceFadeDusk=1.0
|
||||
DistanceFadeNight=1.0
|
||||
DistanceFadeInteriorDay=1.0
|
||||
DistanceFadeInteriorNight=1.0
|
||||
VerticalFadeDawn=1.0
|
||||
VerticalFadeSunrise=1.0
|
||||
VerticalFadeDay=1.0
|
||||
VerticalFadeSunset=1.0
|
||||
VerticalFadeDusk=1.0
|
||||
VerticalFadeNight=1.0
|
||||
VerticalFadeInteriorDay=1.0
|
||||
VerticalFadeInteriorNight=1.0
|
||||
SunIntensityDawn=1.0
|
||||
SunIntensitySunrise=1.0
|
||||
SunIntensityDay=1.0
|
||||
SunIntensitySunset=1.0
|
||||
SunIntensityDusk=1.0
|
||||
SunIntensityNight=1.0
|
||||
SunIntensityInteriorDay=1.0
|
||||
SunIntensityInteriorNight=1.0
|
||||
SunDesaturationDawn=0.0
|
||||
SunDesaturationSunrise=0.0
|
||||
SunDesaturationDay=0.0
|
||||
SunDesaturationSunset=0.0
|
||||
SunDesaturationDusk=0.0
|
||||
SunDesaturationNight=0.0
|
||||
SunDesaturationInteriorDay=0.0
|
||||
SunDesaturationInteriorNight=0.0
|
||||
SunColorFilterDawn=1, 1, 1
|
||||
SunColorFilterSunrise=1, 1, 1
|
||||
SunColorFilterDay=1, 1, 1
|
||||
SunColorFilterSunset=1, 1, 1
|
||||
SunColorFilterDusk=1, 1, 1
|
||||
SunColorFilterNight=1, 1, 1
|
||||
DistanceFadeDawn=0.32
|
||||
DistanceFadeSunrise=0.44
|
||||
DistanceFadeDay=0.52
|
||||
DistanceFadeSunset=0.41
|
||||
DistanceFadeDusk=0.31
|
||||
DistanceFadeNight=0.24
|
||||
DistanceFadeInteriorDay=0.43
|
||||
DistanceFadeInteriorNight=0.33
|
||||
VerticalFadeDawn=0.25
|
||||
VerticalFadeSunrise=0.34
|
||||
VerticalFadeDay=0.45
|
||||
VerticalFadeSunset=0.37
|
||||
VerticalFadeDusk=0.24
|
||||
VerticalFadeNight=0.16
|
||||
VerticalFadeInteriorDay=0.82
|
||||
VerticalFadeInteriorNight=0.64
|
||||
SunIntensityDawn=0.35
|
||||
SunIntensitySunrise=0.47
|
||||
SunIntensityDay=0.62
|
||||
SunIntensitySunset=0.46
|
||||
SunIntensityDusk=0.33
|
||||
SunIntensityNight=0.24
|
||||
SunIntensityInteriorDay=0.75
|
||||
SunIntensityInteriorNight=0.1
|
||||
SunDesaturationDawn=0.56
|
||||
SunDesaturationSunrise=0.47
|
||||
SunDesaturationDay=0.35
|
||||
SunDesaturationSunset=0.48
|
||||
SunDesaturationDusk=0.57
|
||||
SunDesaturationNight=0.64
|
||||
SunDesaturationInteriorDay=0.33
|
||||
SunDesaturationInteriorNight=0.56
|
||||
SunColorFilterDawn=0.996, 0.776, 0.776
|
||||
SunColorFilterSunrise=0.996, 0.855, 0.831
|
||||
SunColorFilterDay=0.996, 0.925, 0.886
|
||||
SunColorFilterSunset=0.992, 0.89, 0.859
|
||||
SunColorFilterDusk=0.992, 0.812, 0.812
|
||||
SunColorFilterNight=0.675, 0.667, 0.957
|
||||
SunColorFilterInteriorDay=1, 1, 1
|
||||
SunColorFilterInteriorNight=1, 1, 1
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
3.1.0 BETA "Stay FROSTy"
|
||||
3.2.87 BETA "Vanilla and Sprinkles"
|
||||
|
|
|
|||
|
|
@ -107,13 +107,6 @@ float bloomradiusy
|
|||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {1.0};
|
||||
float bloomtheta
|
||||
<
|
||||
string UIName = "Bloom Angle";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
/* bloom tint/blueshift parameters */
|
||||
float3 blu_n
|
||||
<
|
||||
|
|
@ -279,83 +272,21 @@ float bloommixs
|
|||
string UIName = "Bloom Single Pass Blend";
|
||||
string UIWidget = "Spinner";
|
||||
> = {1.0};
|
||||
string str_bloomdirt = "Lens Dirt";
|
||||
bool dirtenable
|
||||
<
|
||||
string UIName = "Enable Lens Dirt";
|
||||
string UIWidget = "Checkbox";
|
||||
> = {false};
|
||||
float dirtmix1
|
||||
<
|
||||
string UIName = "Dirt Pass 1 Blend";
|
||||
string UIWidget = "Spinner";
|
||||
> = {0.0};
|
||||
float dirtmix2
|
||||
<
|
||||
string UIName = "Dirt Pass 2 Blend";
|
||||
string UIWidget = "Spinner";
|
||||
> = {0.1};
|
||||
float dirtmix3
|
||||
<
|
||||
string UIName = "Dirt Pass 3 Blend";
|
||||
string UIWidget = "Spinner";
|
||||
> = {1.2};
|
||||
float dirtmix4
|
||||
<
|
||||
string UIName = "Dirt Pass 4 Blend";
|
||||
string UIWidget = "Spinner";
|
||||
> = {0.5};
|
||||
float dirtmix5
|
||||
<
|
||||
string UIName = "Dirt Pass 5 Blend";
|
||||
string UIWidget = "Spinner";
|
||||
> = {0.25};
|
||||
float dirtmix6
|
||||
<
|
||||
string UIName = "Dirt Pass 6 Blend";
|
||||
string UIWidget = "Spinner";
|
||||
> = {0.1};
|
||||
float dirtmixs
|
||||
<
|
||||
string UIName = "Dirt Single Pass Blend";
|
||||
string UIWidget = "Spinner";
|
||||
> = {1.0};
|
||||
float dirtsaturation
|
||||
<
|
||||
string UIName = "Dirt Saturation";
|
||||
string UIWidget = "Spinner";
|
||||
> = {1.0};
|
||||
float ldirtpow
|
||||
<
|
||||
string UIName = "Dirt Texture Contrast";
|
||||
string UIWidget = "Spinner";
|
||||
> = {1.25};
|
||||
float dirtpow
|
||||
<
|
||||
string UIName = "Dirt Contrast";
|
||||
string UIWidget = "Spinner";
|
||||
> = {1.25};
|
||||
float ldirtfactor
|
||||
<
|
||||
string UIName = "Dirt Factor";
|
||||
string UIWidget = "Spinner";
|
||||
> = {1.5};
|
||||
|
||||
|
||||
/* gaussian blur matrices */
|
||||
/* radius: 4, std dev: 1.5 */
|
||||
/*static const float gauss4[4] =
|
||||
static const float gauss4[4] =
|
||||
{
|
||||
0.270682, 0.216745, 0.111281, 0.036633
|
||||
};*/
|
||||
};
|
||||
/* radius: 8, std dev: 3 */
|
||||
static const float gauss8[8] =
|
||||
/*static const float gauss8[8] =
|
||||
{
|
||||
0.134598, 0.127325, 0.107778, 0.081638,
|
||||
0.055335, 0.033562, 0.018216, 0.008847
|
||||
};
|
||||
};*/
|
||||
/* radius: 40, std dev: 15 */
|
||||
/*static const float gauss40[40] =
|
||||
static const float gauss40[40] =
|
||||
{
|
||||
0.026823, 0.026763, 0.026585, 0.026291,
|
||||
0.025886, 0.025373, 0.024760, 0.024055,
|
||||
|
|
@ -367,9 +298,9 @@ static const float gauss8[8] =
|
|||
0.004697, 0.004139, 0.003630, 0.003170,
|
||||
0.002756, 0.002385, 0.002055, 0.001763,
|
||||
0.001506, 0.001280, 0.001084, 0.000913
|
||||
};*/
|
||||
};
|
||||
/* radius: 80, std dev: 30 */
|
||||
static const float gauss80[80] =
|
||||
/*static const float gauss80[80] =
|
||||
{
|
||||
0.013406, 0.013398, 0.013376, 0.013339, 0.013287, 0.013221,
|
||||
0.013140, 0.013046, 0.012938, 0.012816, 0.012681, 0.012534,
|
||||
|
|
@ -385,7 +316,7 @@ static const float gauss80[80] =
|
|||
0.001192, 0.001107, 0.001027, 0.000952, 0.000881, 0.000815,
|
||||
0.000753, 0.000694, 0.000640, 0.000589, 0.000542, 0.000497,
|
||||
0.000456, 0.000418
|
||||
};
|
||||
};*/
|
||||
/* mathematical constants */
|
||||
static const float pi = 3.1415926535898;
|
||||
|
||||
|
|
@ -406,15 +337,6 @@ Texture2D RenderTarget64;
|
|||
Texture2D RenderTarget32;
|
||||
Texture2D RenderTargetRGBA64F;
|
||||
|
||||
Texture2D TextureLens
|
||||
<
|
||||
#ifdef LENSDIRT_DDS
|
||||
string ResourceName = "menblens.dds";
|
||||
#else
|
||||
string ResourceName = "menblens.png";
|
||||
#endif
|
||||
>;
|
||||
|
||||
SamplerState Sampler
|
||||
{
|
||||
Filter = MIN_MAG_MIP_LINEAR;
|
||||
|
|
@ -428,13 +350,6 @@ SamplerState Sampler2
|
|||
AddressV = Clamp;
|
||||
};
|
||||
|
||||
SamplerState SamplerLens
|
||||
{
|
||||
Filter = MIN_MAG_MIP_LINEAR;
|
||||
AddressU = Mirror;
|
||||
AddressV = Mirror;
|
||||
};
|
||||
|
||||
struct VS_INPUT_POST
|
||||
{
|
||||
float3 pos : POSITION;
|
||||
|
|
@ -533,14 +448,13 @@ float4 Anamorphic( float2 coord, Texture2D intex, float insz )
|
|||
base = RenderTargetRGBA64F.Sample(Sampler,coord);
|
||||
int i;
|
||||
float sum = 0.0;
|
||||
float inc = flen/insz;
|
||||
float2 pp;
|
||||
float2 dir = float2(cos(bloomtheta*2*pi),sin(bloomtheta*2*pi))
|
||||
*flen/insz;
|
||||
[unroll] for ( i=-79; i<=79; i++ )
|
||||
[unroll] for ( i=-39; i<=39; i++ )
|
||||
{
|
||||
pp = coord+dir*i;
|
||||
res += gauss80[abs(i)]*intex.Sample(Sampler,pp);
|
||||
sum += ((pp.x>=0.0)&&(pp.x<1.0))?gauss80[abs(i)]:0.0;
|
||||
pp = coord+float2(i,0)*inc;
|
||||
res += gauss40[abs(i)]*intex.Sample(Sampler,pp);
|
||||
sum += ((pp.x>=0.0)&&(pp.x<1.0))?gauss40[abs(i)]:0.0;
|
||||
}
|
||||
res *= 1.0/sum;
|
||||
float3 flu = tod_ind(flu);
|
||||
|
|
@ -562,14 +476,13 @@ float4 PS_HorizontalBlur( VS_OUTPUT_POST IN, float4 v0 : SV_Position0,
|
|||
float4 res = float4(0.0,0.0,0.0,0.0);
|
||||
int i;
|
||||
float sum = 0.0;
|
||||
float inc = bloomradiusx/insz;
|
||||
float2 pp;
|
||||
float2 dir = float2(cos(bloomtheta*2*pi),sin(bloomtheta*2*pi))
|
||||
*bloomradiusx/insz;
|
||||
[unroll] for ( i=-7; i<=7; i++ )
|
||||
[unroll] for ( i=-3; i<=3; i++ )
|
||||
{
|
||||
pp = coord+dir*i;
|
||||
res += gauss8[abs(i)]*intex.Sample(Sampler,pp);
|
||||
sum += ((pp.x>=0.0)&&(pp.x<1.0))?gauss8[abs(i)]:0.0;
|
||||
pp = coord+float2(i,0)*inc;
|
||||
res += gauss4[abs(i)]*intex.Sample(Sampler,pp);
|
||||
sum += ((pp.x>=0.0)&&(pp.x<1.0))?gauss4[abs(i)]:0.0;
|
||||
}
|
||||
res *= 1.0/sum;
|
||||
if ( alfenable ) res += Anamorphic(coord,intex,insz);
|
||||
|
|
@ -588,14 +501,13 @@ float4 PS_VerticalBlur( VS_OUTPUT_POST IN, float4 v0 : SV_Position0,
|
|||
base = RenderTargetRGBA64F.Sample(Sampler,coord);
|
||||
int i;
|
||||
float sum = 0.0;
|
||||
float inc = bloomradiusy/insz;
|
||||
float2 pp;
|
||||
float2 dir = float2(sin(bloomtheta*2*pi),-cos(bloomtheta*2*pi))
|
||||
*bloomradiusy/insz;
|
||||
[unroll] for ( i=-7; i<=7; i++ )
|
||||
[unroll] for ( i=-3; i<=3; i++ )
|
||||
{
|
||||
pp = coord+dir*i;
|
||||
res += gauss8[abs(i)]*intex.Sample(Sampler,pp);
|
||||
sum += ((pp.y>=0.0)&&(pp.y<1.0))?gauss8[abs(i)]:0.0;
|
||||
pp = coord+float2(0,i)*inc;
|
||||
res += gauss4[abs(i)]*intex.Sample(Sampler,pp);
|
||||
sum += ((pp.y>=0.0)&&(pp.y<1.0))?gauss4[abs(i)]:0.0;
|
||||
}
|
||||
res *= 1.0/sum;
|
||||
float3 blu = tod_ind(blu);
|
||||
|
|
@ -622,30 +534,6 @@ float4 PS_PostPass( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
|||
res.rgb /= 6.0;
|
||||
res.rgb = clamp(res.rgb,0.0,32768.0);
|
||||
res.a = 1.0;
|
||||
if ( !dirtenable ) return res;
|
||||
/* crappy lens filter, useful when playing characters with glasses */
|
||||
float2 ccoord = coord;
|
||||
#ifdef ASPECT_LENSDIRT
|
||||
ccoord.y = (coord.y-0.5)*ScreenSize.w+0.5;
|
||||
#endif
|
||||
float4 crap = TextureLens.Sample(SamplerLens,ccoord);
|
||||
float4 mud = dirtmix1*RenderTarget1024.Sample(Sampler2,coord);
|
||||
mud += dirtmix2*RenderTarget512.Sample(Sampler2,coord);
|
||||
mud += dirtmix3*RenderTarget256.Sample(Sampler2,coord);
|
||||
mud += dirtmix4*RenderTarget128.Sample(Sampler2,coord);
|
||||
mud += dirtmix5*RenderTarget64.Sample(Sampler2,coord);
|
||||
mud += dirtmix6*RenderTarget32.Sample(Sampler2,coord);
|
||||
mud.rgb /= 6.0;
|
||||
float3 hsv = rgb2hsv(mud.rgb);
|
||||
hsv.y = clamp(hsv.y*dirtsaturation,0.0,1.0);
|
||||
mud.rgb = clamp(hsv2rgb(hsv),0.0,32768.0);
|
||||
mud.rgb = pow(mud.rgb,dirtpow);
|
||||
float mudmax = luminance(mud.rgb);
|
||||
float mudn = max(mudmax/(1.0+mudmax),0.0);
|
||||
mudn = pow(mudn,max(ldirtpow-crap.a,0.0));
|
||||
mud.rgb *= mudn*ldirtfactor*crap.rgb;
|
||||
res += max(mud,0.0);
|
||||
res.a = 1.0;
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
@ -655,24 +543,6 @@ float4 PS_SPostPass( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
|||
float4 res = bloommixs*RenderTarget128.Sample(Sampler2,coord);
|
||||
res.rgb = clamp(res.rgb,0.0,32768.0);
|
||||
res.a = 1.0;
|
||||
if ( !dirtenable ) return res;
|
||||
/* crappy lens filter, useful when playing characters with glasses */
|
||||
float2 ccoord = coord;
|
||||
#ifdef ASPECT_LENSDIRT
|
||||
ccoord.y = (coord.y-0.5)*ScreenSize.w+0.5;
|
||||
#endif
|
||||
float4 crap = TextureLens.Sample(SamplerLens,ccoord);
|
||||
float4 mud = dirtmixs*RenderTarget32.Sample(Sampler2,coord);
|
||||
mud.rgb = pow(mud.rgb,dirtpow);
|
||||
float3 hsv = rgb2hsv(mud.rgb);
|
||||
hsv.y = clamp(hsv.y*dirtsaturation,0.0,1.0);
|
||||
mud.rgb = clamp(hsv2rgb(hsv),0.0,32768.0);
|
||||
float mudmax = luminance(mud.rgb);
|
||||
float mudn = max(mudmax/(1.0+mudmax),0.0);
|
||||
mudn = pow(mudn,max(ldirtpow-crap.a,0.0));
|
||||
mud.rgb *= mudn*ldirtfactor*crap.rgb;
|
||||
res += max(mud,0.0);
|
||||
res.a = 1.0;
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
@ -684,7 +554,6 @@ technique11 BloomSimplePass <string UIName="MariENB Simple Bloom"; string Render
|
|||
SetPixelShader(CompileShader(ps_5_0,PS_PrePass()));
|
||||
}
|
||||
}
|
||||
|
||||
technique11 BloomSimplePass1 <string RenderTarget="RenderTarget1024";>
|
||||
{
|
||||
pass p0
|
||||
|
|
@ -717,24 +586,7 @@ technique11 BloomSimplePass4 <string RenderTarget="RenderTarget128";>
|
|||
SetPixelShader(CompileShader(ps_5_0,PS_Downsize(RenderTarget256,256.0)));
|
||||
}
|
||||
}
|
||||
technique11 BloomSimplePass5 <string RenderTarget="RenderTarget64";>
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
|
||||
SetPixelShader(CompileShader(ps_5_0,PS_Downsize(RenderTarget128,128.0)));
|
||||
}
|
||||
}
|
||||
technique11 BloomSimplePass6 <string RenderTarget="RenderTarget32";>
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
|
||||
SetPixelShader(CompileShader(ps_5_0,PS_Downsize(RenderTarget64,64.0)));
|
||||
}
|
||||
}
|
||||
|
||||
technique11 BloomSimplePass7
|
||||
technique11 BloomSimplePass5
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
|
|
@ -742,7 +594,7 @@ technique11 BloomSimplePass7
|
|||
SetPixelShader(CompileShader(ps_5_0,PS_HorizontalBlur(RenderTarget128,128.0)));
|
||||
}
|
||||
}
|
||||
technique11 BloomSimplePass8 <string RenderTarget="RenderTarget128";>
|
||||
technique11 BloomSimplePass6 <string RenderTarget="RenderTarget128";>
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
|
|
@ -750,25 +602,7 @@ technique11 BloomSimplePass8 <string RenderTarget="RenderTarget128";>
|
|||
SetPixelShader(CompileShader(ps_5_0,PS_VerticalBlur(TextureColor,128.0,3.0)));
|
||||
}
|
||||
}
|
||||
|
||||
technique11 BloomSimplePass9
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
|
||||
SetPixelShader(CompileShader(ps_5_0,PS_HorizontalBlur(RenderTarget32,32.0)));
|
||||
}
|
||||
}
|
||||
technique11 BloomSimplePass10 <string RenderTarget="RenderTarget32";>
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
|
||||
SetPixelShader(CompileShader(ps_5_0,PS_VerticalBlur(TextureColor,32.0,5.0)));
|
||||
}
|
||||
}
|
||||
|
||||
technique11 BloomSimplePass11
|
||||
technique11 BloomSimplePass7
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
|
|
@ -785,7 +619,6 @@ technique11 BloomPass <string UIName="MariENB Multi Bloom"; string RenderTarget=
|
|||
SetPixelShader(CompileShader(ps_5_0,PS_PrePass()));
|
||||
}
|
||||
}
|
||||
|
||||
technique11 BloomPass1 <string RenderTarget="RenderTarget1024";>
|
||||
{
|
||||
pass p0
|
||||
|
|
@ -834,7 +667,6 @@ technique11 BloomPass6 <string RenderTarget="RenderTarget32";>
|
|||
SetPixelShader(CompileShader(ps_5_0,PS_Downsize(RenderTarget64,64.0)));
|
||||
}
|
||||
}
|
||||
|
||||
technique11 BloomPass7
|
||||
{
|
||||
pass p0
|
||||
|
|
@ -851,7 +683,6 @@ technique11 BloomPass8 <string RenderTarget="RenderTarget1024";>
|
|||
SetPixelShader(CompileShader(ps_5_0,PS_VerticalBlur(TextureColor,1024.0,0.0)));
|
||||
}
|
||||
}
|
||||
|
||||
technique11 BloomPass9
|
||||
{
|
||||
pass p0
|
||||
|
|
@ -868,7 +699,6 @@ technique11 BloomPass10 <string RenderTarget="RenderTarget512";>
|
|||
SetPixelShader(CompileShader(ps_5_0,PS_VerticalBlur(TextureColor,512.0,1.0)));
|
||||
}
|
||||
}
|
||||
|
||||
technique11 BloomPass11
|
||||
{
|
||||
pass p0
|
||||
|
|
@ -885,7 +715,6 @@ technique11 BloomPass12 <string RenderTarget="RenderTarget256";>
|
|||
SetPixelShader(CompileShader(ps_5_0,PS_VerticalBlur(TextureColor,256.0,2.0)));
|
||||
}
|
||||
}
|
||||
|
||||
technique11 BloomPass13
|
||||
{
|
||||
pass p0
|
||||
|
|
@ -902,7 +731,6 @@ technique11 BloomPass14 <string RenderTarget="RenderTarget128";>
|
|||
SetPixelShader(CompileShader(ps_5_0,PS_VerticalBlur(TextureColor,128.0,3.0)));
|
||||
}
|
||||
}
|
||||
|
||||
technique11 BloomPass15
|
||||
{
|
||||
pass p0
|
||||
|
|
@ -919,7 +747,6 @@ technique11 BloomPass16 <string RenderTarget="RenderTarget64";>
|
|||
SetPixelShader(CompileShader(ps_5_0,PS_VerticalBlur(TextureColor,64.0,4.0)));
|
||||
}
|
||||
}
|
||||
|
||||
technique11 BloomPass17
|
||||
{
|
||||
pass p0
|
||||
|
|
@ -936,7 +763,6 @@ technique11 BloomPass18 <string RenderTarget="RenderTarget32";>
|
|||
SetPixelShader(CompileShader(ps_5_0,PS_VerticalBlur(TextureColor,32.0,5.0)));
|
||||
}
|
||||
}
|
||||
|
||||
technique11 BloomPass19
|
||||
{
|
||||
pass p0
|
||||
|
|
|
|||
|
|
@ -1,42 +1,42 @@
|
|||
[ENBBLOOM.FX]
|
||||
TECHNIQUE=1
|
||||
Bloom Intensity Night=0.69
|
||||
Bloom Intensity Day=0.57
|
||||
Bloom Intensity Interior=0.61
|
||||
Bloom Contrast Night=1.0
|
||||
Bloom Contrast Day=1.02
|
||||
TECHNIQUE=2
|
||||
Bloom Intensity Night=0.37
|
||||
Bloom Intensity Day=0.28
|
||||
Bloom Intensity Interior=0.32
|
||||
Bloom Contrast Night=1.03
|
||||
Bloom Contrast Day=1.06
|
||||
Bloom Contrast Interior=1.02
|
||||
Bloom Saturation Night=1.05
|
||||
Bloom Saturation Day=1.03
|
||||
Bloom Saturation Interior=1.04
|
||||
Bloom Offset Night=-0.05
|
||||
Bloom Offset Day=-0.09
|
||||
Bloom Offset Interior=-0.07
|
||||
Bloom Intensity Cap Night=1.0
|
||||
Bloom Intensity Cap Day=1.0
|
||||
Bloom Intensity Cap Interior=1.0
|
||||
Bloom Saturation Night=1.39
|
||||
Bloom Saturation Day=1.35
|
||||
Bloom Saturation Interior=1.47
|
||||
Bloom Offset Night=0.0
|
||||
Bloom Offset Day=0.0
|
||||
Bloom Offset Interior=0.0
|
||||
Bloom Intensity Cap Night=25.0
|
||||
Bloom Intensity Cap Day=25.0
|
||||
Bloom Intensity Cap Interior=25.0
|
||||
Bloom Blur Radius=1.0
|
||||
Blue Shift Night=0.294, 0.424, 0.859
|
||||
Blue Shift Day=0.22, 0.537, 0.855
|
||||
Blue Shift Interior=0.337, 0.525, 0.878
|
||||
Blue Shift Intensity Night=0.96
|
||||
Blue Shift Intensity Day=0.71
|
||||
Blue Shift Intensity Interior=0.97
|
||||
Blue Shift Luminance Factor Per-pass=0.31
|
||||
Blue Shift Intensity Night=0.32
|
||||
Blue Shift Intensity Day=0.2
|
||||
Blue Shift Intensity Interior=0.29
|
||||
Blue Shift Luminance Factor Per-pass=0.61
|
||||
Blue Shift Color Factor Per-pass=0.79
|
||||
Enable Anamorphic Bloom=true
|
||||
Anamorphic Bloom Blend Night=0.57
|
||||
Anamorphic Bloom Blend Day=0.44
|
||||
Anamorphic Bloom Blend Interior=0.47
|
||||
Anamorphic Bloom Blend Night=0.62
|
||||
Anamorphic Bloom Blend Day=0.5
|
||||
Anamorphic Bloom Blend Interior=0.56
|
||||
Anamorphic Bloom Blue Shift Night=0.553, 0.404, 0.851
|
||||
Anamorphic Bloom Blue Shift Day=0.424, 0.384, 0.831
|
||||
Anamorphic Bloom Blue Shift Interior=0.537, 0.475, 0.89
|
||||
Anamorphic Bloom Blue Shift Intensity Night=2.31
|
||||
Anamorphic Bloom Blue Shift Intensity Day=1.59
|
||||
Anamorphic Bloom Blue Shift Intensity Interior=1.86
|
||||
Anamorphic Bloom Contrast Night=0.95
|
||||
Anamorphic Bloom Contrast Day=1.0
|
||||
Anamorphic Bloom Contrast Interior=0.82
|
||||
Anamorphic Bloom Blue Shift Intensity Night=0.87
|
||||
Anamorphic Bloom Blue Shift Intensity Day=0.73
|
||||
Anamorphic Bloom Blue Shift Intensity Interior=0.93
|
||||
Anamorphic Bloom Contrast Night=1.2
|
||||
Anamorphic Bloom Contrast Day=1.17
|
||||
Anamorphic Bloom Contrast Interior=1.24
|
||||
Anamorphic Bloom Radius Multiplier=1.0
|
||||
Bloom Intensity Interior Night=1.33
|
||||
Bloom Intensity Interior Day=1.26
|
||||
|
|
@ -80,25 +80,25 @@ Anamorphic Bloom Blue Shift Interior Night=1.86
|
|||
Anamorphic Bloom Blue Shift Interior Day=1.86
|
||||
Anamorphic Bloom Contrast Interior Night=1.12
|
||||
Anamorphic Bloom Contrast Interior Day=1.22
|
||||
Bloom Pass 1 Blend=0.34
|
||||
Bloom Pass 2 Blend=0.59
|
||||
Bloom Pass 3 Blend=0.71
|
||||
Bloom Pass 4 Blend=0.79
|
||||
Bloom Pass 5 Blend=0.88
|
||||
Bloom Pass 6 Blend=0.94
|
||||
Enable Lens Dirt=true
|
||||
Bloom Pass 1 Blend=0.27
|
||||
Bloom Pass 2 Blend=0.28
|
||||
Bloom Pass 3 Blend=0.52
|
||||
Bloom Pass 4 Blend=0.69
|
||||
Bloom Pass 5 Blend=0.97
|
||||
Bloom Pass 6 Blend=1.16
|
||||
Enable Lens Dirt=false
|
||||
Dirt Pass 1 Blend=0.08
|
||||
Dirt Pass 2 Blend=0.25
|
||||
Dirt Pass 3 Blend=0.54
|
||||
Dirt Pass 4 Blend=1.09
|
||||
Dirt Pass 5 Blend=2.71
|
||||
Dirt Pass 6 Blend=5.68
|
||||
Dirt Contrast=1.519999
|
||||
Dirt Factor=0.73
|
||||
Dirt Contrast=2.069999
|
||||
Dirt Factor=0.53
|
||||
Bloom Blur Radius X=1.0
|
||||
Bloom Blur Radius Y=1.0
|
||||
Bloom Single Pass Blend=0.66
|
||||
Dirt Single Pass Blend=1.64
|
||||
Dirt Saturation=0.73
|
||||
Bloom Single Pass Blend=0.52
|
||||
Dirt Single Pass Blend=1.43
|
||||
Dirt Saturation=0.38
|
||||
Bloom Angle=0.0
|
||||
Dirt Texture Contrast=0.72
|
||||
Dirt Texture Contrast=0.86
|
||||
|
|
|
|||
|
|
@ -266,12 +266,24 @@ bool frostalways
|
|||
string UIWidget = "Checkbox";
|
||||
> = {false};
|
||||
string str_focus = "Focusing Parameters";
|
||||
/* circle (triangle, actually) average focus */
|
||||
bool focuscircle
|
||||
/*
|
||||
focus modes:
|
||||
-2 : mouse
|
||||
-1 : manual
|
||||
0 : center spot
|
||||
1 : center + triangle
|
||||
2 : 8x8 grid average
|
||||
TODO
|
||||
3 : 8x8 grid average of 8 closest points
|
||||
4 : 8x8 grid average of 8 farthest points
|
||||
*/
|
||||
int focuscircle
|
||||
<
|
||||
string UIName = "Enable Focus Triangle";
|
||||
string UIName = "Focus Mode";
|
||||
string UIWidget = "Checkbox";
|
||||
> = {true};
|
||||
int UIMin = -2;
|
||||
int UIMax = 2;
|
||||
> = {1};
|
||||
bool focusdisplay
|
||||
<
|
||||
string UIName = "Display Focus Points";
|
||||
|
|
@ -470,18 +482,35 @@ float doffixedfocusblend_n
|
|||
string UIName = "DOF Fixed Focus Blend Night";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float doffixedfocusblend_d
|
||||
<
|
||||
string UIName = "DOF Fixed Focus Blend Day";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float doffixedfocusblend_i
|
||||
<
|
||||
string UIName = "DOF Fixed Focus Blend Interior";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float doffixedfocusdepth
|
||||
<
|
||||
string UIName = "DOF Fixed Focus Depth";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float doffixedfocuscap
|
||||
<
|
||||
string UIName = "DOF Fixed Focus Cap";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
/* fixed unfocused depth factors */
|
||||
float doffixedunfocusmult_n
|
||||
|
|
@ -540,18 +569,28 @@ float doffixedunfocusblend_n
|
|||
string UIName = "DOF Fixed Unfocus Blend Night";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float doffixedunfocusblend_d
|
||||
<
|
||||
string UIName = "DOF Fixed Unfocus Blend Day";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float doffixedunfocusblend_i
|
||||
<
|
||||
string UIName = "DOF Fixed Unfocus Blend Interior";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float doffixedunfocusdepth
|
||||
<
|
||||
string UIName = "DOF Fixed Unfocus Depth";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
/* prevents fixed dof from blurring the skybox */
|
||||
bool doffixedcut
|
||||
|
|
@ -853,6 +892,7 @@ float EInteriorFactor;
|
|||
float4 TimeOfDay1;
|
||||
float4 TimeOfDay2;
|
||||
float4 DofParameters;
|
||||
float4 tempInfo2;
|
||||
|
||||
Texture2D TextureCurrent;
|
||||
Texture2D TexturePrevious;
|
||||
|
|
@ -1082,18 +1122,19 @@ float4 PS_DoFPrepass( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
|||
/* cheap tilt */
|
||||
foc = foc+0.01*doftiltx*(doftiltxcenter-coord.x)
|
||||
+0.01*doftilty*(doftiltycenter-coord.y);
|
||||
float dfc = abs(dep-foc);
|
||||
float dff = abs(dep);
|
||||
float dfu = dff;
|
||||
if ( doffixedcut && (dep >= cutoff*0.000001) ) dfu *= 0;
|
||||
dfc = clamp(pow(dfc,dofpow)*dofmult+dofbump,0.0,1.0);
|
||||
float dff = abs(dep-doffixedfocusdepth);
|
||||
dff = clamp(pow(dff,doffixedfocuspow)*doffixedfocusmult
|
||||
+doffixedfocusbump,0.0,1.0);
|
||||
if ( dep > doffixedfocuscap ) dff = 1.0;
|
||||
float dfu = abs(dep-doffixedunfocusdepth);
|
||||
dfu = clamp(pow(dfu,doffixedunfocuspow)*doffixedunfocusmult
|
||||
+doffixedunfocusbump,0.0,1.0);
|
||||
dfc *= lerp(1.0,dff,doffixedfocusblend);
|
||||
if ( doffixedcut && (dep >= cutoff*0.000001) ) dfu *= 0;
|
||||
float dfc = abs(dep-foc);
|
||||
dfc = clamp(pow(dfc,dofpow)*dofmult+dofbump,0.0,1.0);
|
||||
dfc += lerp(0.0,dfu,doffixedunfocusblend);
|
||||
return max(0.0,dfc);
|
||||
dfc *= lerp(1.0,dff,doffixedfocusblend);
|
||||
return clamp(dfc,0.0,1.0);
|
||||
}
|
||||
|
||||
/* apply SSAO to screen */
|
||||
|
|
@ -1239,11 +1280,26 @@ float4 PS_Aperture( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
|||
float4 PS_ReadFocus( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
||||
{
|
||||
if ( dofdisable ) return 0.0;
|
||||
if ( focusmanual ) return focusmanualvalue;
|
||||
if ( focuscircle == -2 )
|
||||
return TextureDepth.Sample(Sampler1,tempInfo2.zw).x;
|
||||
if ( focuscircle < 0 ) return focusmanualvalue;
|
||||
float focusmax = tod_ind(focusmax);
|
||||
float cfocus = min(TextureDepth.Sample(Sampler1,focuscenter).x,
|
||||
focusmax*0.001);
|
||||
if ( !focuscircle ) return cfocus;
|
||||
if ( focuscircle == 0 ) return cfocus;
|
||||
if ( focuscircle == 2 )
|
||||
{
|
||||
int i, j;
|
||||
float mfocus = 0.0;
|
||||
float2 px;
|
||||
[unroll] for( j=0; j<8; j++ ) [unroll] for( i=0; i<8; i++ )
|
||||
{
|
||||
px = float2((i+0.5)/8.0,(j+0.5)/8.0);
|
||||
mfocus += min(TextureDepth.Sample(Sampler1,px).x,
|
||||
focusmax*0.001);
|
||||
}
|
||||
return mfocus/64.0;
|
||||
}
|
||||
/* using polygons inscribed into a circle, in this case a triangle */
|
||||
float focusradius = tod_ind(focusradius);
|
||||
float focusmix = tod_ind(focusmix);
|
||||
|
|
@ -1385,7 +1441,7 @@ float4 PS_DoFBorkeh( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
|||
res /= tw;
|
||||
return res;
|
||||
}
|
||||
float4 PS_DoFBorkehB( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
||||
float4 PS_DoFPostBlur( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
||||
{
|
||||
float2 coord = IN.txcoord.xy;
|
||||
if ( dofdisable ) return TextureColor.Sample(Sampler1,coord);
|
||||
|
|
@ -1474,8 +1530,27 @@ float4 PS_FrostPass( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
|||
res.rgb *= 1.0+bmp*dist;
|
||||
}
|
||||
else res = TextureColor.Sample(Sampler1,coord);
|
||||
if ( !focusdisplay ) return res;
|
||||
if ( !focusdisplay || (focuscircle == -1) ) return res;
|
||||
if ( focuscircle == -2 )
|
||||
{
|
||||
if ( distance(coord,tempInfo2.zw) < 0.01 )
|
||||
res.rgb = float3(1,0,0);
|
||||
return res;
|
||||
}
|
||||
if ( focuscircle == 2 )
|
||||
{
|
||||
int i, j;
|
||||
float2 px;
|
||||
[unroll] for( j=0; j<8; j++ ) [unroll] for( i=0; i<8; i++ )
|
||||
{
|
||||
px = float2((i+0.5)/8.0,(j+0.5)/8.0);
|
||||
if ( distance(coord,px) < 0.005 )
|
||||
res.rgb = float3(1,0,0);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
if ( distance(coord,focuscenter) < 0.01 ) res.rgb = float3(1,0,0);
|
||||
if ( focuscircle == 0 ) return res;
|
||||
float cstep = (1.0/3.0);
|
||||
float2 tcoord;
|
||||
float focusradius = tod_ind(focusradius);
|
||||
|
|
@ -1585,6 +1660,14 @@ technique11 Prepass7
|
|||
}
|
||||
}
|
||||
technique11 Prepass8
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
|
||||
SetPixelShader(CompileShader(ps_5_0,PS_DoFPostBlur()));
|
||||
}
|
||||
}
|
||||
technique11 Prepass9
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
|
|
@ -1662,7 +1745,7 @@ technique11 PrepassB8
|
|||
pass p0
|
||||
{
|
||||
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
|
||||
SetPixelShader(CompileShader(ps_5_0,PS_DoFBorkehB()));
|
||||
SetPixelShader(CompileShader(ps_5_0,PS_DoFPostBlur()));
|
||||
}
|
||||
}
|
||||
technique11 PrepassB9
|
||||
|
|
|
|||
|
|
@ -12,77 +12,77 @@ Underwater Speed=24.3, 21.9, 26.5
|
|||
Underwater Amplitude=0.1, 0.11, 0.07
|
||||
Underwater Zoom=0.15
|
||||
Always Underwater=false
|
||||
Enable Hot Air Refraction=false
|
||||
Heat Texture Size=6.4
|
||||
Enable Hot Air Refraction=true
|
||||
Heat Texture Size=9.52
|
||||
Heat Speed=0.45
|
||||
Heat Fade Contrast=235.0
|
||||
Heat Fade Intensity=1.1
|
||||
Heat Fade Offset=-0.59
|
||||
Heat Intensity=0.6
|
||||
Heat Contrast=0.95
|
||||
Heat Fade Offset=-0.79
|
||||
Heat Intensity=0.65
|
||||
Heat Contrast=1.12
|
||||
Heat Time-of-day Contrast=0.5
|
||||
Heat Always Enable=true
|
||||
Enable Screen Frost=true
|
||||
Frost Contrast=1.26
|
||||
Frost Strength=0.03
|
||||
Frost Radial Contrast=1.69
|
||||
Enable Screen Frost=false
|
||||
Frost Contrast=1.67
|
||||
Frost Strength=0.02
|
||||
Frost Radial Contrast=1.67
|
||||
Frost Radial Intensity=0.83
|
||||
Frost Radial Offset=-0.67
|
||||
Frost Texture Blend=0.97
|
||||
Frost Texture Blend Contrast=2.42
|
||||
Frost Texture Size=0.8
|
||||
Frost Radial Offset=-0.66
|
||||
Frost Texture Blend=0.94
|
||||
Frost Texture Blend Contrast=2.44
|
||||
Frost Texture Size=0.85
|
||||
Frost Indoor Factor=0.0
|
||||
Frost Night Factor=0.0
|
||||
Frost Always Enable=true
|
||||
Enable Focus Triangle=true
|
||||
Display Focus Points=false
|
||||
Enable Manual Focus=false
|
||||
Manual Focus Depth=0.8
|
||||
Manual Focus Depth=1.0
|
||||
Focus Point Center=0.5, 0.48, 0
|
||||
Focus Triangle Angle=0.5
|
||||
Focus Triangle Radius Night=9.0
|
||||
Focus Triangle Radius Day=12.0
|
||||
Focus Triangle Radius Interior=10.5
|
||||
Focus Triangle Blending Night=0.6
|
||||
Focus Triangle Blending Day=0.7
|
||||
Focus Triangle Blending Interior=0.6
|
||||
Focus Triangle Blending Night=0.75
|
||||
Focus Triangle Blending Day=0.9
|
||||
Focus Triangle Blending Interior=0.8
|
||||
Focus Maximum Depth Night=990.0
|
||||
Focus Maximum Depth Day=994.0
|
||||
Focus Maximum Depth Interior=988.0
|
||||
DOF Intensity Night=280.0
|
||||
DOF Intensity Day=250.0
|
||||
DOF Intensity Interior=280.0
|
||||
DOF Contrast Night=3.0
|
||||
DOF Contrast Day=3.7
|
||||
DOF Contrast Interior=3.6
|
||||
DOF Intensity Night=471.689972
|
||||
DOF Intensity Day=421.940002
|
||||
DOF Intensity Interior=438.609985
|
||||
DOF Contrast Night=3.45
|
||||
DOF Contrast Day=3.76
|
||||
DOF Contrast Interior=3.52
|
||||
DOF Shift Night=0.0
|
||||
DOF Shift Day=0.0
|
||||
DOF Shift Interior=0.0
|
||||
DOF Fixed Focus Intensity Night=1.0
|
||||
DOF Fixed Focus Intensity Day=1.0
|
||||
DOF Fixed Focus Intensity Interior=1.0
|
||||
DOF Fixed Focus Contrast Night=1.0
|
||||
DOF Fixed Focus Contrast Day=1.0
|
||||
DOF Fixed Focus Contrast Interior=1.0
|
||||
DOF Fixed Focus Shift Night=-0.01
|
||||
DOF Fixed Focus Shift Day=-0.01
|
||||
DOF Fixed Focus Shift Interior=-0.01
|
||||
DOF Fixed Focus Intensity Night=388.769989
|
||||
DOF Fixed Focus Intensity Day=411.829987
|
||||
DOF Fixed Focus Intensity Interior=377.649994
|
||||
DOF Fixed Focus Contrast Night=0.93
|
||||
DOF Fixed Focus Contrast Day=0.98
|
||||
DOF Fixed Focus Contrast Interior=0.87
|
||||
DOF Fixed Focus Shift Night=0.0
|
||||
DOF Fixed Focus Shift Day=0.0
|
||||
DOF Fixed Focus Shift Interior=0.0
|
||||
DOF Fixed Focus Blend Night=1.0
|
||||
DOF Fixed Focus Blend Day=1.0
|
||||
DOF Fixed Focus Blend Interior=1.0
|
||||
DOF Fixed Unfocus Intensity Night=1.2
|
||||
DOF Fixed Unfocus Intensity Day=1.4
|
||||
DOF Fixed Unfocus Intensity Interior=1.3
|
||||
DOF Fixed Unfocus Contrast Night=125.0
|
||||
DOF Fixed Unfocus Contrast Day=220.0
|
||||
DOF Fixed Unfocus Contrast Interior=165.0
|
||||
DOF Fixed Unfocus Shift Night=-0.6
|
||||
DOF Fixed Unfocus Shift Day=-0.9
|
||||
DOF Fixed Unfocus Shift Interior=-0.75
|
||||
DOF Fixed Unfocus Intensity Night=1.13
|
||||
DOF Fixed Unfocus Intensity Day=1.06
|
||||
DOF Fixed Unfocus Intensity Interior=1.24
|
||||
DOF Fixed Unfocus Contrast Night=96.980003
|
||||
DOF Fixed Unfocus Contrast Day=134.399994
|
||||
DOF Fixed Unfocus Contrast Interior=65.19001
|
||||
DOF Fixed Unfocus Shift Night=-0.95
|
||||
DOF Fixed Unfocus Shift Day=-1.16
|
||||
DOF Fixed Unfocus Shift Interior=-0.78
|
||||
DOF Fixed Unfocus Blend Night=1.0
|
||||
DOF Fixed Unfocus Blend Day=1.0
|
||||
DOF Fixed Unfocus Blend Interior=1.0
|
||||
DOF Fixed Use Cutoff=false
|
||||
DOF Fixed Use Cutoff=true
|
||||
Disable DOF=false
|
||||
DOF Gather Blur Radius=8.0
|
||||
Debug Depth=false
|
||||
|
|
@ -100,14 +100,14 @@ Edgevision Radius=1.0
|
|||
Enable SSAO=false
|
||||
SSAO Radius=0.05
|
||||
SSAO Noise=0
|
||||
SSAO Fade Contrast Night=0.9
|
||||
SSAO Fade Contrast Day=0.8
|
||||
SSAO Fade Contrast Interior=0.85
|
||||
SSAO Fade Contrast Night=0.6
|
||||
SSAO Fade Contrast Day=0.7
|
||||
SSAO Fade Contrast Interior=0.65
|
||||
SSAO Fade Intensity Night=10.5
|
||||
SSAO Fade Intensity Day=12.5
|
||||
SSAO Fade Intensity Interior=11.5
|
||||
SSAO Intensity=3.0
|
||||
SSAO Contrast=1.5
|
||||
SSAO Intensity=1.25
|
||||
SSAO Contrast=0.65
|
||||
SSAO Blending=0.8
|
||||
SSAO Blur=true
|
||||
SSAO Bilateral Factor=1500.0
|
||||
|
|
@ -175,18 +175,25 @@ Heat Factor Sunset=0.85
|
|||
Heat Factor Dusk=0.38
|
||||
Heat Factor Night=0.0
|
||||
Heat Factor Interior=0.0
|
||||
Frost Factor Dawn=0.93
|
||||
Frost Factor Sunrise=0.74
|
||||
Frost Factor Day=0.62
|
||||
Frost Factor Sunset=0.77
|
||||
Frost Factor Dusk=0.94
|
||||
Frost Factor Night=1.16
|
||||
Frost Factor Interior=0.27
|
||||
Frost Factor Dawn=1.02
|
||||
Frost Factor Sunrise=0.79
|
||||
Frost Factor Day=0.61
|
||||
Frost Factor Sunset=0.78
|
||||
Frost Factor Dusk=1.02
|
||||
Frost Factor Night=1.32
|
||||
Frost Factor Interior=0.37
|
||||
DOF Bilateral Factor=20.0
|
||||
DOF Bilateral Radius=1.0
|
||||
DOF Blur Radius=6.0
|
||||
DOF Blur Radius=8.0
|
||||
DOF Blur Chromatic Aberration=1.5
|
||||
Focus Plane Horizontal Tilt Center=0.5
|
||||
Focus Plane Vertical Tilt Center=0.5
|
||||
Focus Plane Horizontal Tilt=0.0
|
||||
Focus Plane Vertical Tilt=0.0
|
||||
Focus Mode=1
|
||||
DOF Fixed Focus Depth Night=0.01
|
||||
DOF Fixed Focus Depth Day=0.01
|
||||
DOF Fixed Focus Depth Interior=0.01
|
||||
DOF Fixed Focus Depth=0.01
|
||||
DOF Fixed Focus Cap=0.01
|
||||
DOF Fixed Unfocus Depth=0.0
|
||||
|
|
|
|||
|
|
@ -86,118 +86,303 @@ float nj
|
|||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {2.0};
|
||||
/* tone mapping */
|
||||
string str_tonemap = "Filmic Tone Mapping";
|
||||
bool tmapenable
|
||||
bool nbt
|
||||
<
|
||||
string UIName = "Enable Tonemapping";
|
||||
string UIName = "Apply Grain Before Tone Mapping";
|
||||
string UIWidget = "Checkbox";
|
||||
> = {true};
|
||||
/* eye adaptation */
|
||||
string str_adaptation = "Eye Adaptation";
|
||||
bool aenable
|
||||
<
|
||||
string UIName = "Enable Adaptation";
|
||||
string UIWidget = "Checkbox";
|
||||
> = {false};
|
||||
/* tone mapping */
|
||||
string str_tonemap = "Tone Mapping";
|
||||
/*
|
||||
algorithms:
|
||||
-1 : Disabled
|
||||
0 : Vanilla
|
||||
1 : Linear
|
||||
2 : Reinhard
|
||||
3 : Uncharted 2
|
||||
4 : Hejl Dawson
|
||||
5 : Haarm-Peter Duiker
|
||||
6 : SweetFX
|
||||
*/
|
||||
int tmapenable
|
||||
<
|
||||
string UIName = "Tonemapping Method";
|
||||
string UIWidget = "Spinner";
|
||||
int UIMin = -1;
|
||||
int UIMax = 6;
|
||||
> = {3};
|
||||
float tmapexposure_n
|
||||
<
|
||||
string UIName = "Tonemap Exposure Night";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {1.0};
|
||||
float tmapexposure_d
|
||||
<
|
||||
string UIName = "Tonemap Exposure Day";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {1.0};
|
||||
float tmapexposure_i
|
||||
<
|
||||
string UIName = "Tonemap Exposure Interior";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {1.0};
|
||||
float tmapblend_n
|
||||
<
|
||||
string UIName = "Tonemap Blend Night";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
float UIMax = 1.0;
|
||||
> = {1.0};
|
||||
float tmapblend_d
|
||||
<
|
||||
string UIName = "Tonemap Blend Day";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
float UIMax = 1.0;
|
||||
> = {1.0};
|
||||
float tmapblend_i
|
||||
<
|
||||
string UIName = "Tonemap Blend Interior";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
float UIMax = 1.0;
|
||||
> = {1.0};
|
||||
float unA_n
|
||||
<
|
||||
string UIName = "Tonemap Shoulder Strength Night";
|
||||
string UIName = "Uncharted2 Shoulder Strength Night";
|
||||
string UIWidget = "Spinner";
|
||||
> = {0.5};
|
||||
float unA_d
|
||||
<
|
||||
string UIName = "Tonemap Shoulder Strength Day";
|
||||
string UIName = "Uncharted2 Shoulder Strength Day";
|
||||
string UIWidget = "Spinner";
|
||||
> = {0.5};
|
||||
float unA_i
|
||||
<
|
||||
string UIName = "Tonemap Shoulder Strength Interior";
|
||||
string UIName = "Uncharted2 Shoulder Strength Interior";
|
||||
string UIWidget = "Spinner";
|
||||
> = {0.5};
|
||||
float unB_n
|
||||
<
|
||||
string UIName = "Tonemap Linear Strength Night";
|
||||
string UIName = "Uncharted2 Linear Strength Night";
|
||||
string UIWidget = "Spinner";
|
||||
> = {1.0};
|
||||
float unB_d
|
||||
<
|
||||
string UIName = "Tonemap Linear Strength Day";
|
||||
string UIName = "Uncharted2 Linear Strength Day";
|
||||
string UIWidget = "Spinner";
|
||||
> = {1.0};
|
||||
float unB_i
|
||||
<
|
||||
string UIName = "Tonemap Linear Strength Interior";
|
||||
string UIName = "Uncharted2 Linear Strength Interior";
|
||||
string UIWidget = "Spinner";
|
||||
> = {1.0};
|
||||
float unC_n
|
||||
<
|
||||
string UIName = "Tonemap Linear Angle Night";
|
||||
string UIName = "Uncharted2 Linear Angle Night";
|
||||
string UIWidget = "Spinner";
|
||||
> = {0.2};
|
||||
float unC_d
|
||||
<
|
||||
string UIName = "Tonemap Linear Angle Day";
|
||||
string UIName = "Uncharted2 Linear Angle Day";
|
||||
string UIWidget = "Spinner";
|
||||
> = {0.2};
|
||||
float unC_i
|
||||
<
|
||||
string UIName = "Tonemap Linear Angle Interior";
|
||||
string UIName = "Uncharted2 Linear Angle Interior";
|
||||
string UIWidget = "Spinner";
|
||||
> = {0.2};
|
||||
float unD_n
|
||||
<
|
||||
string UIName = "Tonemap Toe Strength Night";
|
||||
string UIName = "Uncharted2 Toe Strength Night";
|
||||
string UIWidget = "Spinner";
|
||||
> = {0.75};
|
||||
float unD_d
|
||||
<
|
||||
string UIName = "Tonemap Toe Strength Day";
|
||||
string UIName = "Uncharted2 Toe Strength Day";
|
||||
string UIWidget = "Spinner";
|
||||
> = {0.75};
|
||||
float unD_i
|
||||
<
|
||||
string UIName = "Tonemap Toe Strength Interior";
|
||||
string UIName = "Uncharted2 Toe Strength Interior";
|
||||
string UIWidget = "Spinner";
|
||||
> = {0.75};
|
||||
float unE_n
|
||||
<
|
||||
string UIName = "Tonemap Toe Numerator Night";
|
||||
string UIName = "Uncharted2 Toe Numerator Night";
|
||||
string UIWidget = "Spinner";
|
||||
> = {0.02};
|
||||
float unE_d
|
||||
<
|
||||
string UIName = "Tonemap Toe Numerator Day";
|
||||
string UIName = "Uncharted2 Toe Numerator Day";
|
||||
string UIWidget = "Spinner";
|
||||
> = {0.02};
|
||||
float unE_i
|
||||
<
|
||||
string UIName = "Tonemap Toe Numerator Interior";
|
||||
string UIName = "Uncharted2 Toe Numerator Interior";
|
||||
string UIWidget = "Spinner";
|
||||
> = {0.02};
|
||||
float unF_n
|
||||
<
|
||||
string UIName = "Tonemap Toe Denominator Night";
|
||||
string UIName = "Uncharted2 Toe Denominator Night";
|
||||
string UIWidget = "Spinner";
|
||||
> = {0.30};
|
||||
float unF_d
|
||||
<
|
||||
string UIName = "Tonemap Toe Denominator Day";
|
||||
string UIName = "Uncharted2 Toe Denominator Day";
|
||||
string UIWidget = "Spinner";
|
||||
> = {0.30};
|
||||
float unF_i
|
||||
<
|
||||
string UIName = "Tonemap Toe Denominator Interior";
|
||||
string UIName = "Uncharted2 Toe Denominator Interior";
|
||||
string UIWidget = "Spinner";
|
||||
> = {0.30};
|
||||
float unW_n
|
||||
<
|
||||
string UIName = "Tonemap Linear White Night";
|
||||
string UIName = "Uncharted2 Linear White Night";
|
||||
string UIWidget = "Spinner";
|
||||
> = {10.0};
|
||||
float unW_d
|
||||
<
|
||||
string UIName = "Tonemap Linear White Day";
|
||||
string UIName = "Uncharted2 Linear White Day";
|
||||
string UIWidget = "Spinner";
|
||||
> = {10.0};
|
||||
float unW_i
|
||||
<
|
||||
string UIName = "Tonemap Linear White Interior";
|
||||
string UIName = "Uncharted2 Linear White Interior";
|
||||
string UIWidget = "Spinner";
|
||||
> = {10.0};
|
||||
float sfxgamma_n
|
||||
<
|
||||
string UIName = "SweetFX Gamma Night";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
float UIMax = 2.0;
|
||||
> = {1.0};
|
||||
float sfxgamma_d
|
||||
<
|
||||
string UIName = "SweetFX Gamma Day";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
float UIMax = 2.0;
|
||||
> = {1.0};
|
||||
float sfxgamma_i
|
||||
<
|
||||
string UIName = "SweetFX Gamma Interior";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
float UIMax = 2.0;
|
||||
> = {1.0};
|
||||
float sfxexposure_n
|
||||
<
|
||||
string UIName = "SweetFX Exposure Night";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = -1.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float sfxexposure_d
|
||||
<
|
||||
string UIName = "SweetFX Exposure Day";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = -1.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float sfxexposure_i
|
||||
<
|
||||
string UIName = "SweetFX Exposure Interior";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = -1.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float sfxsaturation_n
|
||||
<
|
||||
string UIName = "SweetFX Saturation Night";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = -1.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float sfxsaturation_d
|
||||
<
|
||||
string UIName = "SweetFX Saturation Day";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = -1.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float sfxsaturation_i
|
||||
<
|
||||
string UIName = "SweetFX Saturation Interior";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = -1.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float sfxbleach_n
|
||||
<
|
||||
string UIName = "SweetFX Bleach Night";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float sfxbleach_d
|
||||
<
|
||||
string UIName = "SweetFX Bleach Day";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float sfxbleach_i
|
||||
<
|
||||
string UIName = "SweetFX Bleach Interior";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float sfxdefog_n
|
||||
<
|
||||
string UIName = "SweetFX Defog Night";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float sfxdefog_d
|
||||
<
|
||||
string UIName = "SweetFX Defog Day";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float sfxdefog_i
|
||||
<
|
||||
string UIName = "SweetFX Defog Interior";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float3 sfxfogcolor_n
|
||||
<
|
||||
string UIName = "SweetFX Defog Color Night";
|
||||
string UIWidget = "Color";
|
||||
> = {0.0,0.0,1.0};
|
||||
float3 sfxfogcolor_d
|
||||
<
|
||||
string UIName = "SweetFX Defog Color Day";
|
||||
string UIWidget = "Color";
|
||||
> = {0.0,0.0,1.0};
|
||||
float3 sfxfogcolor_i
|
||||
<
|
||||
string UIName = "SweetFX Defog Color Interior";
|
||||
string UIWidget = "Color";
|
||||
> = {0.0,0.0,1.0};
|
||||
|
||||
/* Color grading */
|
||||
string str_grade = "Color Grading Suite";
|
||||
bool gradeenable1
|
||||
|
|
@ -372,9 +557,23 @@ float lutblend_i
|
|||
string UIWidget = "Spinner";
|
||||
> = {1.0};
|
||||
#ifdef LUTMODE_LEGACY
|
||||
int clut
|
||||
int clut_n
|
||||
<
|
||||
string UIName = "LUT Preset";
|
||||
string UIName = "LUT Preset Night";
|
||||
string UIWidget = "Spinner";
|
||||
int UIMin = 0;
|
||||
int UIMax = 63;
|
||||
> = {1};
|
||||
int clut_d
|
||||
<
|
||||
string UIName = "LUT Preset Day";
|
||||
string UIWidget = "Spinner";
|
||||
int UIMin = 0;
|
||||
int UIMax = 63;
|
||||
> = {1};
|
||||
int clut_i
|
||||
<
|
||||
string UIName = "LUT Preset Interior";
|
||||
string UIWidget = "Spinner";
|
||||
int UIMin = 0;
|
||||
int UIMax = 63;
|
||||
|
|
@ -394,19 +593,58 @@ float techblend
|
|||
float UIMin = 0.0;
|
||||
float UIMax = 1.0;
|
||||
> = {1.0};
|
||||
string str_dither = "Dithering";
|
||||
bool dodither
|
||||
/* vanilla */
|
||||
string str_vanilla = "Vanilla Processing";
|
||||
bool vgradeenable
|
||||
<
|
||||
string UIName = "Enable Post Dither";
|
||||
string UIName = "Enable Vanilla Imagespace";
|
||||
string UIWidget = "Checkbox";
|
||||
> = {true};
|
||||
int dither
|
||||
float vtintpow
|
||||
<
|
||||
string UIName = "Dither Pattern";
|
||||
string UIName = "Vanilla Tint Contrast";
|
||||
string UIWidget = "Spinner";
|
||||
int UIMin = 0;
|
||||
int UIMax = 4;
|
||||
> = {4};
|
||||
float UIMin = 0.0;
|
||||
> = {1.0};
|
||||
float vtintmul
|
||||
<
|
||||
string UIName = "Vanilla Tint Strength";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {1.0};
|
||||
float vtintblend
|
||||
<
|
||||
string UIName = "Vanilla Tint Blend";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
float UIMax = 1.0;
|
||||
> = {1.0};
|
||||
float vsatpow
|
||||
<
|
||||
string UIName = "Vanilla Vibrance Contrast";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {1.0};
|
||||
float vsatmul
|
||||
<
|
||||
string UIName = "Vanilla Vibrance Strength";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {1.0};
|
||||
float vsatblend
|
||||
<
|
||||
string UIName = "Vanilla Vibrance Blend";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
float UIMax = 1.0;
|
||||
> = {1.0};
|
||||
float vconblend
|
||||
<
|
||||
string UIName = "Vanilla Contrast Blend";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
float UIMax = 1.0;
|
||||
> = {1.0};
|
||||
string str_debug = "Debugging";
|
||||
bool bloomdebug
|
||||
<
|
||||
|
|
@ -419,53 +657,6 @@ bool adaptdebug
|
|||
string UIWidget = "Checkbox";
|
||||
> = {false};
|
||||
|
||||
/*
|
||||
dithering threshold maps
|
||||
don't touch unless you know what you're doing
|
||||
*/
|
||||
static const float checkers[4] =
|
||||
{
|
||||
1.0,0.0,
|
||||
0.0,1.0
|
||||
};
|
||||
#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
|
||||
|
||||
float4 Timer;
|
||||
float4 ScreenSize;
|
||||
float ENightDayFactor;
|
||||
|
|
@ -491,18 +682,44 @@ Texture2D TextureNoise3
|
|||
<
|
||||
string ResourceName = "menbnoise2.png";
|
||||
>;
|
||||
#ifdef LUTMODE_LEGACY
|
||||
Texture2D TextureLUT
|
||||
<
|
||||
#ifdef LUTMODE_LEGACY
|
||||
string ResourceName = "menblutpreset.png";
|
||||
#endif
|
||||
>;
|
||||
#else
|
||||
Texture2D TextureLUTN
|
||||
<
|
||||
#ifdef LUTMODE_16
|
||||
string ResourceName = "menblut16.png";
|
||||
string ResourceName = "menblut16_night.png";
|
||||
#endif
|
||||
#ifdef LUTMODE_64
|
||||
string ResourceName = "menblut64.png";
|
||||
string ResourceName = "menblut64_night.png";
|
||||
#endif
|
||||
>;
|
||||
Texture2D TextureLUTD
|
||||
<
|
||||
#ifdef LUTMODE_16
|
||||
string ResourceName = "menblut16_day.png";
|
||||
#endif
|
||||
#ifdef LUTMODE_64
|
||||
string ResourceName = "menblut64_day.png";
|
||||
#endif
|
||||
>;
|
||||
Texture2D TextureLUTI
|
||||
<
|
||||
#ifdef LUTMODE_16
|
||||
string ResourceName = "menblut16_interior.png";
|
||||
#endif
|
||||
#ifdef LUTMODE_64
|
||||
string ResourceName = "menblut64_interior.png";
|
||||
#endif
|
||||
>;
|
||||
#endif
|
||||
Texture2D TextureTonemap
|
||||
<
|
||||
string ResourceName = "menbfilmlut.png";
|
||||
>;
|
||||
|
||||
SamplerState Sampler0
|
||||
{
|
||||
|
|
@ -585,7 +802,7 @@ float3 hsv2rgb( float3 c )
|
|||
return c.z*lerp(K.x,saturate(p-K.x),c.y);
|
||||
}
|
||||
|
||||
/* "uncharted 2" filmic tone mapping */
|
||||
/* Uncharted 2 tone mapping */
|
||||
float3 Uch( float3 res )
|
||||
{
|
||||
float A = tod_ind(unA);
|
||||
|
|
@ -596,12 +813,108 @@ float3 Uch( float3 res )
|
|||
float F = tod_ind(unF);
|
||||
return ((res*(A*res+C*B)+D*E)/(res*(A*res+B)+D*F))-E/F;
|
||||
}
|
||||
float3 Tonemap( float3 res )
|
||||
float3 TonemapUC2( float3 res )
|
||||
{
|
||||
float W = tod_ind(unW);
|
||||
float3 ucol = Uch(res);
|
||||
float3 uwhite = Uch(W);
|
||||
return max(ucol/uwhite,0.0);
|
||||
return pow(max(ucol/uwhite,0.0),1.0/2.2);
|
||||
}
|
||||
/* Vanilla tonemap is weird */
|
||||
float3 TonemapGame( float3 res )
|
||||
{
|
||||
#ifdef SKYRIMSE
|
||||
return pow(max(res,0.0),1.0/2.2);
|
||||
#else
|
||||
float3 wat = res*2.0;
|
||||
float3 huh = res*0.3+0.05;
|
||||
float2 weh = float2(0.2,3.333333)*Params01[1].w;
|
||||
huh = wat*huh+weh.x;
|
||||
float3 ehh = wat*0.3+0.5;
|
||||
ehh = ehh*0.3+0.5;
|
||||
ehh = wat*ehh+0.06;
|
||||
ehh = huh/ehh;
|
||||
ehh = -Params01[1].w*3.333333+ehh;
|
||||
wat.x = Params01[1].w*0.2+19.376;
|
||||
wat.x = wat.x*0.0408564-weh.y;
|
||||
return pow(max(ehh/wat.x,0.0),1.0/2.2);
|
||||
#endif
|
||||
}
|
||||
/* Ugly old Reinhard tone mapping */
|
||||
float3 TonemapReinhard( float3 res )
|
||||
{
|
||||
float3 tcol = res/(1+res);
|
||||
return pow(max(tcol,0.0),1.0/2.2);
|
||||
}
|
||||
/* That thing used in watch_dogs */
|
||||
float3 TonemapHaarmPeterDuiker( float3 res )
|
||||
{
|
||||
float3 ld = 0.002;
|
||||
float linReference = 0.18;
|
||||
float logReference = 444;
|
||||
float logGamma = 0.45;
|
||||
float3 LogColor;
|
||||
LogColor.rgb = (log10(0.4*res/linReference)/ld*logGamma+logReference)/1023.f;
|
||||
LogColor.rgb = saturate(LogColor.rgb);
|
||||
float FilmLutWidth = 256;
|
||||
float Padding = .5/FilmLutWidth;
|
||||
float3 retColor;
|
||||
retColor.r = TextureTonemap.Sample(Sampler1,float2(lerp(Padding,1-Padding,LogColor.r),.5)).x;
|
||||
retColor.g = TextureTonemap.Sample(Sampler1,float2(lerp(Padding,1-Padding,LogColor.g),.5)).x;
|
||||
retColor.b = TextureTonemap.Sample(Sampler1,float2(lerp(Padding,1-Padding,LogColor.b),.5)).x;
|
||||
return retColor;
|
||||
}
|
||||
/* Practically nothing */
|
||||
float3 TonemapLinear( float3 res )
|
||||
{
|
||||
return pow(max(res,0.0),1.0/2.2);
|
||||
}
|
||||
/* People somehow call this one realistic */
|
||||
float3 TonemapHejlDawson( float3 res )
|
||||
{
|
||||
float3 x = max(0.0,res-0.004);
|
||||
return (x*(6.2*x+.5))/(x*(6.2*x+1.7)+0.06);
|
||||
}
|
||||
/* The standard tonemap from sweetfx */
|
||||
float3 TonemapSFX( float3 res )
|
||||
{
|
||||
float Gamma = tod_ind(sfxgamma);
|
||||
float Exposure = tod_ind(sfxexposure);
|
||||
float Saturation = tod_ind(sfxsaturation);
|
||||
float Bleach = tod_ind(sfxbleach);
|
||||
float Defog = tod_ind(sfxdefog);
|
||||
float3 FogColor = tod_ind(sfxfogcolor);
|
||||
float3 tcol = res;
|
||||
tcol = saturate(tcol-Defog*FogColor*2.55);
|
||||
tcol *= pow(2.0,Exposure);
|
||||
tcol = pow(tcol,Gamma);
|
||||
float lum = luminance(tcol);
|
||||
float L = saturate(1.0*(lum-0.45));
|
||||
float3 A2 = Bleach*tcol;
|
||||
float3 res1 = 2.0*tcol*lum;
|
||||
float3 res2 = 1.0-2.0*(1.0-lum)*(1.0-tcol);
|
||||
float3 newc = lerp(res1,res2,L);
|
||||
float3 mixrgb = A2*newc;
|
||||
tcol += (1.0-A2)*mixrgb;
|
||||
float3 gray = dot(tcol,1.0/3.0);
|
||||
float3 diff = tcol-gray;
|
||||
return (tcol+diff*Saturation)/(1+(diff*Saturation));
|
||||
}
|
||||
float3 Tonemap( float3 res )
|
||||
{
|
||||
float3 tcol = pow(max(res,0.0),1.0/2.2);
|
||||
if ( tmapenable == -1 ) return tcol;
|
||||
res *= tod_ind(tmapexposure);
|
||||
float tblend = tod_ind(tmapblend);
|
||||
float3 mapped;
|
||||
if ( tmapenable == 6 ) mapped = TonemapSFX(res);
|
||||
else if ( tmapenable == 5 ) mapped = TonemapHaarmPeterDuiker(res);
|
||||
else if ( tmapenable == 4 ) mapped = TonemapHejlDawson(res);
|
||||
else if ( tmapenable == 3 ) mapped = TonemapUC2(res);
|
||||
else if ( tmapenable == 2 ) mapped = TonemapReinhard(res);
|
||||
else if ( tmapenable == 1 ) mapped = TonemapLinear(res);
|
||||
else if ( tmapenable == 0 ) mapped = TonemapGame(res);
|
||||
return lerp(tcol,mapped,tblend);
|
||||
}
|
||||
/* colour grading passes */
|
||||
float3 GradingRGB( float3 res )
|
||||
|
|
@ -642,12 +955,25 @@ float3 GradingLUT( float3 res )
|
|||
float3 tcol = clamp(res,0.0001,0.9999);
|
||||
tcol.rg = tcol.rg*0.5+0.25;
|
||||
#ifdef LUTMODE_LEGACY
|
||||
float2 lc1 = float2(tcol.r/16.0+floor(tcol.b*16.0)/16.0,tcol.g/64.0
|
||||
+clut/64.0);
|
||||
float2 lc2 = float2(tcol.r/16.0+ceil(tcol.b*16.0)/16.0,tcol.g/64.0
|
||||
+clut/64.0);
|
||||
float2 lc1 = float2(tcol.r/16.0+floor(tcol.b*16.0)/16.0,tcol.g/64.0);
|
||||
float2 lc2 = float2(tcol.r/16.0+ceil(tcol.b*16.0)/16.0,tcol.g/64.0);
|
||||
float dec = (ceil(tcol.b*16.0)==16.0)?(0.0):frac(tcol.b*16.0);
|
||||
#endif
|
||||
/* night samples */
|
||||
float3 tcl1_n = TextureLUT.Sample(SamplerLUT,lc1
|
||||
+float2(0,clut_n/64.0)).rgb;
|
||||
float3 tcl2_n = TextureLUT.Sample(SamplerLUT,lc2
|
||||
+float2(0,clut_n/64.0)).rgb;
|
||||
/* day samples */
|
||||
float3 tcl1_d = TextureLUT.Sample(SamplerLUT,lc1
|
||||
+float2(0,clut_d/64.0)).rgb;
|
||||
float3 tcl2_d = TextureLUT.Sample(SamplerLUT,lc2
|
||||
+float2(0,clut_d/64.0)).rgb;
|
||||
/* interior samples */
|
||||
float3 tcl1_i = TextureLUT.Sample(SamplerLUT,lc1
|
||||
+float2(0,clut_i/64.0)).rgb;
|
||||
float3 tcl2_i = TextureLUT.Sample(SamplerLUT,lc2
|
||||
+float2(0,clut_i/64.0)).rgb;
|
||||
#else
|
||||
#ifdef LUTMODE_16
|
||||
float2 lc1 = float2(tcol.r,tcol.g/16.0+floor(tcol.b*16.0)/16.0);
|
||||
float2 lc2 = float2(tcol.r,tcol.g/16.0+ceil(tcol.b*16.0)/16.0);
|
||||
|
|
@ -658,8 +984,18 @@ float3 GradingLUT( float3 res )
|
|||
float2 lc2 = float2(tcol.r,tcol.g/64.0+ceil(tcol.b*64.0)/64.0);
|
||||
float dec = (ceil(tcol.b*64.0)==64.0)?(0.0):frac(tcol.b*64.0);
|
||||
#endif
|
||||
float3 tcl1 = TextureLUT.Sample(SamplerLUT,lc1).rgb;
|
||||
float3 tcl2 = TextureLUT.Sample(SamplerLUT,lc2).rgb;
|
||||
/* night samples */
|
||||
float3 tcl1_n = TextureLUTN.Sample(SamplerLUT,lc1).rgb;
|
||||
float3 tcl2_n = TextureLUTN.Sample(SamplerLUT,lc2).rgb;
|
||||
/* day samples */
|
||||
float3 tcl1_d = TextureLUTD.Sample(SamplerLUT,lc1).rgb;
|
||||
float3 tcl2_d = TextureLUTD.Sample(SamplerLUT,lc2).rgb;
|
||||
/* interior samples */
|
||||
float3 tcl1_i = TextureLUTI.Sample(SamplerLUT,lc1).rgb;
|
||||
float3 tcl2_i = TextureLUTI.Sample(SamplerLUT,lc2).rgb;
|
||||
#endif
|
||||
float3 tcl1 = tod_ind(tcl1);
|
||||
float3 tcl2 = tod_ind(tcl2);
|
||||
tcol = lerp(tcl1,tcl2,dec);
|
||||
float lutblend = tod_ind(lutblend);
|
||||
return lerp(res,tcol,lutblend);
|
||||
|
|
@ -674,24 +1010,6 @@ float3 Technicolor( float3 res )
|
|||
float3 tint = float3(green*blue,red*blue,red*green)*res;
|
||||
return lerp(res,res+0.5*(tint-res),techblend);
|
||||
}
|
||||
/* post-pass dithering, something apparently only my ENB does */
|
||||
float3 Dither( float3 res, float2 coord )
|
||||
{
|
||||
float2 rcoord = coord*float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
|
||||
float3 col = res;
|
||||
float dml = (1.0/256.0);
|
||||
if ( dither == 1 )
|
||||
col += ordered2[int(rcoord.x%2)+2*int(rcoord.y%2)]*dml-0.5*dml;
|
||||
else if ( dither == 2 )
|
||||
col += ordered3[int(rcoord.x%3)+3*int(rcoord.y%3)]*dml-0.5*dml;
|
||||
else if ( dither == 3 )
|
||||
col += ordered4[int(rcoord.x%4)+4*int(rcoord.y%4)]*dml-0.5*dml;
|
||||
else if ( dither == 4 )
|
||||
col += ordered8[int(rcoord.x%8)+8*int(rcoord.y%8)]*dml-0.5*dml;
|
||||
else col += checkers[int(rcoord.x%2)+2*int(rcoord.y%2)]*dml-0.5*dml;
|
||||
col = (trunc(col*256.0)/256.0);
|
||||
return col;
|
||||
}
|
||||
/* Fuzzy */
|
||||
float3 FilmGrain( float3 res, float2 coord )
|
||||
{
|
||||
|
|
@ -731,80 +1049,86 @@ float3 FilmGrain( float3 res, float2 coord )
|
|||
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 ) return res+nt*ni;
|
||||
if ( nb == 2 ) return overlay(res,(nt*ni));
|
||||
if ( nb == 1 ) return res+nt*ni*0.01;
|
||||
if ( nb == 2 ) return overlay(res,(nt*ni*0.01));
|
||||
if ( nb == 3 )
|
||||
{
|
||||
float bn = 1.0-saturate((res.r+res.g+res.b)/3.0);
|
||||
bn = pow(bn,bnp);
|
||||
float3 nn = saturate(nt*bn);
|
||||
return darkmask(res,(nn*ni));
|
||||
return darkmask(res,(nn*ni*0.01));
|
||||
}
|
||||
return lerp(res,nt,ni);
|
||||
return lerp(res,nt,ni*0.01);
|
||||
}
|
||||
|
||||
/* identical between games, the only difference is parameter indices */
|
||||
float3 GradingGame( float3 res, float adapt )
|
||||
{
|
||||
float satv, tintv, conv, brtv;
|
||||
float3 tintc;
|
||||
#ifdef SKYRIMSE
|
||||
satv = Params01[3].x;
|
||||
tintc = Params01[4].xyz;
|
||||
tintv = Params01[4].w;
|
||||
conv = Params01[3].w;
|
||||
brtv = Params01[3].z;
|
||||
#else
|
||||
satv = Params01[2].x;
|
||||
tintc = Params01[3].xyz;
|
||||
tintv = Params01[3].w;
|
||||
conv = Params01[2].w;
|
||||
brtv = Params01[2].z;
|
||||
#endif
|
||||
float val = luminance(res);
|
||||
float3 tcol = res-val;
|
||||
satv = (satv<0.0)?(-pow(abs(satv),vsatpow)*vsatmul)
|
||||
:(pow(max(satv,0.0),vsatpow)*vsatmul);
|
||||
tcol = satv*tcol+val;
|
||||
tcol = lerp(res,tcol,vsatblend);
|
||||
float3 tint = tintc*val-tcol;
|
||||
tintv = (tintv<0.0)?(-pow(abs(tintv),vtintpow)*vtintmul)
|
||||
:(pow(max(tintv,0.0),vtintpow)*vtintmul);
|
||||
tcol = tintv*tint+tcol;
|
||||
tcol = lerp(res,tcol,vtintblend);
|
||||
tcol = conv*tcol-adapt;
|
||||
tcol = brtv*tcol+adapt;
|
||||
return lerp(res,tcol,vconblend);
|
||||
}
|
||||
/* Skyrim SE version is blatantly incomplete and will glitch out */
|
||||
float2 Adaptation( float2 coord )
|
||||
{
|
||||
#ifdef SKYRIMSE
|
||||
float adapt = TextureAdaptation.Sample(Sampler1,coord).x;
|
||||
return float2(adapt);
|
||||
#else
|
||||
float adapt = TextureAdaptation.Sample(Sampler0,coord).x;
|
||||
float adapt_v1 = Params01[1].z/(0.001+adapt);
|
||||
float adapt_v2 = adapt_v1<Params01[1].y;
|
||||
adapt_v1 = adapt_v2?Params01[1].y:adapt_v1;
|
||||
adapt_v2 = Params01[1].x<adapt_v1;
|
||||
adapt_v1 = adapt_v2?Params01[1].x:adapt_v1;
|
||||
return float2(adapt_v1,adapt);
|
||||
#endif
|
||||
}
|
||||
|
||||
float4 PS_Draw( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
||||
{
|
||||
float2 coord = IN.txcoord0.xy;
|
||||
float4 res;
|
||||
float4 res = TextureColor.Sample(Sampler0,coord);
|
||||
#ifdef SKYRIMSE
|
||||
res = TextureColor.Sample(Sampler0,coord)
|
||||
+TextureBloom.Sample(Sampler1,coord)*ENBParams01.x;
|
||||
/* Luckily I could sort of interpret some of the vanilla grading */
|
||||
float val = luminance(res.rgb);
|
||||
float adapt = TextureAdaptation.Sample(Sampler1,coord).x;
|
||||
float4 tint;
|
||||
res -= val;
|
||||
res = Params01[3].x*res+val;
|
||||
tint = Params01[4]*val-res;
|
||||
res = Params01[4].w*tint+res;
|
||||
res = Params01[3].w*res-adapt;
|
||||
res = Params01[3].z*res+adapt;
|
||||
if ( bloomdebug ) res = TextureBloom.Sample(Sampler1,coord)
|
||||
*ENBParams01.x;
|
||||
float4 mud = TextureBloom.Sample(Sampler1,coord);
|
||||
#else
|
||||
float4 color;
|
||||
color = TextureColor.Sample(Sampler0,IN.txcoord0.xy);
|
||||
float4 r0, r1, r2, r3;
|
||||
r0.xyz = color.xyz;
|
||||
r1.xy = Params01[4].zw*IN.txcoord0.xy;
|
||||
r1.xyz = TextureBloom.Sample(Sampler1,r1.xy).xyz*ENBParams01.x;
|
||||
r0.w = TextureAdaptation.Sample(Sampler0,IN.txcoord0.xy).x;
|
||||
r1.w = Params01[1].z/(0.001+r0.w);
|
||||
r2.x = r1.w<Params01[1].y;
|
||||
r1.w = r2.x?Params01[1].y:r1.w;
|
||||
r2.x = Params01[1].x<r1.w;
|
||||
r1.w = r2.x?Params01[1].x:r1.w;
|
||||
r0.xyz = r1.xyz+r0.xyz;
|
||||
r0.xyz = r0.xyz*r1.w;
|
||||
r1.xyz = r0.xyz+r0.xyz;
|
||||
r2.xyz = r0.xyz*0.3+0.05;
|
||||
r3.xy = float2(0.2,3.333333)*Params01[1].w;
|
||||
r2.xyz = r1.xyz*r2.xyz+r3.x;
|
||||
r0.xyz = r0.xyz*0.3+0.5;
|
||||
r0.xyz = r1.xyz*r0.xyz+0.06;
|
||||
r0.xyz = r2.xyz/r0.xyz;
|
||||
r0.xyz = -Params01[1].w*3.333333+r0.xyz;
|
||||
r1.x = Params01[1].w*0.2+19.376;
|
||||
r1.x = r1.x*0.0408564-r3.y;
|
||||
r1.xyz = r0.xyz/r1.x;
|
||||
r0.x = dot(r1.xyz,float3(0.2125,0.7154,0.0721));
|
||||
r1.xyz = r1.xyz-r0.x;
|
||||
r1.xyz = Params01[2].x * r1.xyz+r0.x;
|
||||
r2.xyz = r0.x*Params01[3].xyz-r1.xyz;
|
||||
r1.xyz = Params01[3].w*r2.xyz+r1.xyz;
|
||||
r1.xyz = Params01[2].w*r1.xyz-r0.w;
|
||||
r0.xyz = Params01[2].z*r1.xyz+r0.w;
|
||||
color.xyz = lerp(r0.xyz,Params01[5].xyz,Params01[5].w);
|
||||
color.xyz = saturate(color.xyz);
|
||||
color.xyz = pow(color.xyz,1.0/2.2);
|
||||
res.xyz = max(0,color.xyz);
|
||||
res.w = 1.0;
|
||||
if ( bloomdebug ) res = TextureBloom.Sample(Sampler1,Params01[4].zw
|
||||
*coord)*ENBParams01.x;
|
||||
float4 mud = TextureBloom.Sample(Sampler1,Params01[4].zw*coord);
|
||||
#endif
|
||||
/* Insert MariENB filters here */
|
||||
if ( tmapenable ) res.rgb = Tonemap(res.rgb);
|
||||
float2 adapt = Adaptation(coord);
|
||||
if ( bloomdebug ) res.rgb *= 0;
|
||||
float3 bcol = mud.rgb*ENBParams01.x;
|
||||
res.rgb += bcol;
|
||||
if ( aenable ) res.rgb *= adapt.x;
|
||||
if ( nbt && ne ) res.rgb = FilmGrain(res.rgb,coord);
|
||||
res.rgb = Tonemap(res.rgb);
|
||||
if ( vgradeenable ) res.rgb = GradingGame(res.rgb,adapt.y);
|
||||
if ( gradeenable1 ) res.rgb = GradingRGB(res.rgb);
|
||||
if ( colorizeafterhsv )
|
||||
{
|
||||
|
|
@ -818,9 +1142,10 @@ float4 PS_Draw( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
|||
}
|
||||
if ( lutenable ) res.rgb = GradingLUT(res.rgb);
|
||||
if ( techenable ) res.rgb = Technicolor(res.rgb);
|
||||
if ( ne ) res.rgb = FilmGrain(res.rgb,coord);
|
||||
if ( !nbt && ne ) res.rgb = FilmGrain(res.rgb,coord);
|
||||
/* fade has same index on both games */
|
||||
res.rgb = Params01[5].rgb*Params01[5].a+res.rgb*(1.0-Params01[5].a);
|
||||
if ( adaptdebug ) res.rgb = TextureAdaptation.Sample(Sampler1,coord).x;
|
||||
if ( dodither ) res.rgb = Dither(res.rgb,coord);
|
||||
res.rgb = max(0,res.rgb);
|
||||
res.a = 1.0;
|
||||
return res;
|
||||
|
|
|
|||
|
|
@ -1,71 +1,71 @@
|
|||
[ENBEFFECT.FX]
|
||||
TECHNIQUE=1
|
||||
Enable Grain=false
|
||||
Grain Speed=2500.0
|
||||
Grain Intensity=0.03
|
||||
Grain Saturation=-0.23
|
||||
Enable Grain=true
|
||||
Grain Speed=25.0
|
||||
Grain Intensity=0.250001
|
||||
Grain Saturation=-0.35
|
||||
Grain Two-Pass=true
|
||||
Grain Blending Mode=3
|
||||
Grain Dark Mask Contrast=0.74
|
||||
Grain Dark Mask Contrast=22.140013
|
||||
Grain Two-Pass Factor=0.04
|
||||
Grain Magnification=13.3, 19.6, 17.4
|
||||
Grain Pass 1 Magnification=2.05, 3.11, 2.22
|
||||
Grain Pass 2 Magnification=4.25, 0.42, 6.29
|
||||
Grain Contrast=3.54
|
||||
Enable Tonemapping=true
|
||||
Tonemap Shoulder Strength Night=0.83
|
||||
Tonemap Shoulder Strength Day=0.94
|
||||
Tonemap Shoulder Strength Interior=0.88
|
||||
Tonemap Linear Strength Night=0.59
|
||||
Tonemap Linear Strength Day=0.46
|
||||
Tonemap Linear Strength Interior=0.51
|
||||
Tonemap Linear Angle Night=0.25
|
||||
Tonemap Linear Angle Day=0.41
|
||||
Tonemap Linear Angle Interior=0.35
|
||||
Tonemap Toe Strength Night=2.46
|
||||
Tonemap Toe Strength Day=2.59
|
||||
Tonemap Toe Strength Interior=2.54
|
||||
Tonemap Toe Numerator Night=3.74
|
||||
Tonemap Toe Numerator Day=3.92
|
||||
Tonemap Toe Numerator Interior=3.52
|
||||
Tonemap Toe Denominator Night=1.51
|
||||
Tonemap Toe Denominator Day=1.41
|
||||
Tonemap Toe Denominator Interior=1.49
|
||||
Tonemap Linear White Night=1.15
|
||||
Tonemap Linear White Day=1.2
|
||||
Tonemap Linear White Interior=1.17
|
||||
Grain Pass 2 Magnification=4.25, 9.42, 6.29
|
||||
Grain Contrast=8.450001
|
||||
Tonemapping Method=3
|
||||
Uncharted2 Shoulder Strength Night=0.17
|
||||
Uncharted2 Shoulder Strength Day=0.21
|
||||
Uncharted2 Shoulder Strength Interior=0.18
|
||||
Uncharted2 Linear Strength Night=1.31
|
||||
Uncharted2 Linear Strength Day=1.4
|
||||
Uncharted2 Linear Strength Interior=1.35
|
||||
Uncharted2 Linear Angle Night=0.75
|
||||
Uncharted2 Linear Angle Day=0.74
|
||||
Uncharted2 Linear Angle Interior=0.78
|
||||
Uncharted2 Toe Strength Night=1.19
|
||||
Uncharted2 Toe Strength Day=1.31
|
||||
Uncharted2 Toe Strength Interior=1.15
|
||||
Uncharted2 Toe Numerator Night=0.28
|
||||
Uncharted2 Toe Numerator Day=0.23
|
||||
Uncharted2 Toe Numerator Interior=0.33
|
||||
Uncharted2 Toe Denominator Night=1.38
|
||||
Uncharted2 Toe Denominator Day=1.46
|
||||
Uncharted2 Toe Denominator Interior=1.24
|
||||
Uncharted2 Linear White Night=8.93
|
||||
Uncharted2 Linear White Day=9.53
|
||||
Uncharted2 Linear White Interior=8.199999
|
||||
Enable RGB Grading=true
|
||||
Grading Intensity Night=0.97, 1.01, 1
|
||||
Grading Intensity Day=0.97, 1.01, 1
|
||||
Grading Intensity Interior=1.02, 0.98, 1.01
|
||||
Grading Contrast Night=0.97, 0.94, 0.95
|
||||
Grading Contrast Day=0.97, 1.02, 0.91
|
||||
Grading Contrast Interior=0.95, 0.99, 0.96
|
||||
Grading Intensity Night=1.05, 1, 1.02
|
||||
Grading Intensity Day=1.04, 1.02, 1
|
||||
Grading Intensity Interior=1.03, 1.01, 1
|
||||
Grading Contrast Night=0.97, 0.98, 0.92
|
||||
Grading Contrast Day=0.92, 0.99, 0.97
|
||||
Grading Contrast Interior=0.99, 0.99, 0.94
|
||||
Enable Vibrance Grading=true
|
||||
Grading Color Night=-0.34, -0.6, -0.94
|
||||
Grading Color Day=0.23, 0.24, -0.92
|
||||
Grading Color Interior=-0.76, -0.4, -0.4
|
||||
Grading Color Factor Night=-0.2
|
||||
Grading Color Factor Day=-0.14
|
||||
Grading Color Factor Interior=-0.17
|
||||
Grading Color Night=-0.51, -0.39, -1.48
|
||||
Grading Color Day=-0.34, -0.11, -0.66
|
||||
Grading Color Interior=-0.57, -0.04, -0.59
|
||||
Grading Color Factor Night=-0.08
|
||||
Grading Color Factor Day=-0.1
|
||||
Grading Color Factor Interior=-0.06
|
||||
Enable HSV Grading=true
|
||||
Grading Saturation Intensity Night=1.13
|
||||
Grading Saturation Intensity Day=1.1
|
||||
Grading Saturation Intensity Interior=1.11
|
||||
Grading Saturation Contrast Night=1.13
|
||||
Grading Saturation Contrast Day=1.06
|
||||
Grading Saturation Contrast Interior=1.03
|
||||
Grading Value Intensity Night=1.03
|
||||
Grading Value Intensity Day=1.04
|
||||
Grading Value Intensity Interior=1.08
|
||||
Grading Saturation Intensity Night=1.29
|
||||
Grading Saturation Intensity Day=1.31
|
||||
Grading Saturation Intensity Interior=1.27
|
||||
Grading Saturation Contrast Night=1.17
|
||||
Grading Saturation Contrast Day=1.09
|
||||
Grading Saturation Contrast Interior=1.13
|
||||
Grading Value Intensity Night=0.95
|
||||
Grading Value Intensity Day=0.93
|
||||
Grading Value Intensity Interior=0.96
|
||||
Grading Value Contrast Night=1.24
|
||||
Grading Value Contrast Day=1.25
|
||||
Grading Value Contrast Interior=1.26
|
||||
Grading Value Contrast Day=1.18
|
||||
Grading Value Contrast Interior=1.28
|
||||
Colorize After HSV=true
|
||||
Enable LUT Grading=true
|
||||
LUT Blend Night=0.16
|
||||
LUT Blend Day=0.33
|
||||
LUT Blend Interior=0.24
|
||||
LUT Blend Night=0.56
|
||||
LUT Blend Day=0.67
|
||||
LUT Blend Interior=0.49
|
||||
Enable Post Dither=false
|
||||
Dither Pattern=4
|
||||
Display Bloom=false
|
||||
|
|
@ -142,4 +142,62 @@ LUT Blend Interior Night=0.39
|
|||
LUT Blend Interior Day=0.45
|
||||
Display Adaptation=false
|
||||
Enable Technicolor=true
|
||||
Technicolor Blend=1.0
|
||||
Technicolor Blend=0.6
|
||||
Apply Grain Before Tone Mapping=true
|
||||
Enable Adaptation=true
|
||||
Enable Vanilla Tone Mapping=false
|
||||
Enable Vanilla Imagespace=true
|
||||
Use Lighten Blend=false
|
||||
Vanilla Tint Contrast=0.77
|
||||
Vanilla Tint Strength=1.08
|
||||
Vanilla Tint Blend=0.94
|
||||
Vanilla Vibrance Contrast=1.34
|
||||
Vanilla Vibrance Strength=1.0
|
||||
Vanilla Vibrance Blend=0.91
|
||||
Vanilla Contrast Blend=0.96
|
||||
Enable Tonemapping=true
|
||||
Tonemap Shoulder Strength Night=0.55
|
||||
Tonemap Shoulder Strength Day=0.42
|
||||
Tonemap Shoulder Strength Interior=0.61
|
||||
Tonemap Linear Strength Night=1.16
|
||||
Tonemap Linear Strength Day=1.08
|
||||
Tonemap Linear Strength Interior=1.14
|
||||
Tonemap Linear Angle Night=0.53
|
||||
Tonemap Linear Angle Day=0.74
|
||||
Tonemap Linear Angle Interior=0.63
|
||||
Tonemap Toe Strength Night=1.56
|
||||
Tonemap Toe Strength Day=1.62
|
||||
Tonemap Toe Strength Interior=1.42
|
||||
Tonemap Toe Numerator Night=2.5
|
||||
Tonemap Toe Numerator Day=2.84
|
||||
Tonemap Toe Numerator Interior=2.73
|
||||
Tonemap Toe Denominator Night=1.27
|
||||
Tonemap Toe Denominator Day=1.38
|
||||
Tonemap Toe Denominator Interior=1.25
|
||||
Tonemap Linear White Night=4.48
|
||||
Tonemap Linear White Day=4.68
|
||||
Tonemap Linear White Interior=4.769999
|
||||
Tonemap Exposure Night=1.03
|
||||
Tonemap Exposure Day=1.23
|
||||
Tonemap Exposure Interior=1.17
|
||||
Tonemap Blend Night=1.0
|
||||
Tonemap Blend Day=1.0
|
||||
Tonemap Blend Interior=1.0
|
||||
SweetFX Gamma Night=0.38
|
||||
SweetFX Gamma Day=0.36
|
||||
SweetFX Gamma Interior=0.37
|
||||
SweetFX Exposure Night=-0.83
|
||||
SweetFX Exposure Day=-0.86
|
||||
SweetFX Exposure Interior=-0.84
|
||||
SweetFX Saturation Night=0.0
|
||||
SweetFX Saturation Day=0.0
|
||||
SweetFX Saturation Interior=0.0
|
||||
SweetFX Bleach Night=0.0
|
||||
SweetFX Bleach Day=0.0
|
||||
SweetFX Bleach Interior=0.0
|
||||
SweetFX Defog Night=0.0
|
||||
SweetFX Defog Day=0.0
|
||||
SweetFX Defog Interior=0.0
|
||||
SweetFX Defog Color Night=0, 0, 1
|
||||
SweetFX Defog Color Day=0, 0, 1
|
||||
SweetFX Defog Color Interior=0, 0, 1
|
||||
|
|
|
|||
|
|
@ -34,25 +34,19 @@ float2 sres
|
|||
> = {0.0,0.0};
|
||||
/*
|
||||
palette type:
|
||||
-2 : Standard VGA 256-color palette
|
||||
-1 : disable
|
||||
0 : CGA (320x200 4-color, or 640x200 monochrome)
|
||||
1 : EGA (320x200, 16 colors)
|
||||
2 : RGB2 (64-color quarter VGA palette, used in AOS)
|
||||
3 : RGB323 (8-bit RGB, I don't think this was a real thing)
|
||||
4 : VGA (256 colors, standard palette)
|
||||
5 : Doom (256 colors, does not cover a lot)
|
||||
6 : Quake I (256 colors, covers even less)
|
||||
7 : RGB4 (4bpc, I also don't think this was ever used in real hardware)
|
||||
8 : RGB565 (ol' 16-bit "true color")
|
||||
9 : RGB6 (typical screens incapable of 8bpc)
|
||||
3 : VGA (256 colors)
|
||||
4 : RGB565 (ol' 16-bit "true color")
|
||||
*/
|
||||
int paltype
|
||||
<
|
||||
string UIName = "Palette Type";
|
||||
string UIWidget = "Spinner";
|
||||
int UIMin = -1;
|
||||
int UIMax = 9;
|
||||
int UIMax = 4;
|
||||
> = {1};
|
||||
/*
|
||||
CGA palette to use:
|
||||
|
|
@ -83,22 +77,46 @@ int egapal
|
|||
int UIMin = 0;
|
||||
int UIMax = 1;
|
||||
> = {0};
|
||||
/*
|
||||
VGA palette to use:
|
||||
0 : Standard VGA
|
||||
1 : Amulets & Armor
|
||||
2 : Blood
|
||||
3 : Doom
|
||||
4 : Duke Nukem 3D
|
||||
5 : Hacx 2.0
|
||||
6 : Heretic
|
||||
7 : Hexen
|
||||
8 : Hexen 2
|
||||
9 : Quake
|
||||
10 : Quake 2
|
||||
11 : Rise of the Triad
|
||||
12 : Shadow Warrior
|
||||
13 : Strife
|
||||
14 : Wolfenstein 3D
|
||||
TODO Project .Blank palette (when the design is finished)
|
||||
*/
|
||||
int vgapal
|
||||
<
|
||||
string UIName = "VGA Palette";
|
||||
string UIWidget = "Spinner";
|
||||
int UIMin = 0;
|
||||
int UIMax = 14;
|
||||
> = {0};
|
||||
/*
|
||||
Dithering mode:
|
||||
-1 : No dithering, just raw banding
|
||||
0 : 2x2 checkerboard dithering, looks like ass
|
||||
1 : 2x2 ordered dithering
|
||||
2 : 3x3 ordered dithering
|
||||
3 : 4x4 ordered dithering
|
||||
4 : 8x8 ordered dithering
|
||||
2 : 8x8 ordered dithering
|
||||
*/
|
||||
int dither
|
||||
<
|
||||
string UIName = "Dithering Pattern";
|
||||
string UIWidget = "Spinner";
|
||||
int UIMin = -1;
|
||||
int UIMax = 4;
|
||||
> = {4};
|
||||
int UIMax = 2;
|
||||
> = {2};
|
||||
/* gamma modifier for base color, lower values raise midtones and viceversa */
|
||||
float bgamma
|
||||
<
|
||||
|
|
@ -125,25 +143,6 @@ float bdmult
|
|||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {0.25};
|
||||
/* ASCII art filter */
|
||||
string str_ascii = "Luma ASCII Art Filter";
|
||||
bool asciienable
|
||||
<
|
||||
string UIName = "Enable ASCII";
|
||||
string UIWidget = "Checkbox";
|
||||
> = {false};
|
||||
bool asciimono
|
||||
<
|
||||
string UIName = "ASCII Monochrome";
|
||||
string UIWidget = "Checkbox";
|
||||
> = {true};
|
||||
float asciiblend
|
||||
<
|
||||
string UIName = "ASCII Blend";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
string str_mask = "Depth Chroma Key";
|
||||
bool maskenable
|
||||
<
|
||||
|
|
@ -162,64 +161,6 @@ float maskd
|
|||
float UIMin = 0.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.5};
|
||||
string str_dot = "RGBI Dot Matrix";
|
||||
bool dotenable
|
||||
<
|
||||
string UIName = "Enable Dot Matrix";
|
||||
string UIWidget = "Checkbox";
|
||||
> = {false};
|
||||
int dotsize
|
||||
<
|
||||
string UIName = "Dot Size";
|
||||
string UIWidget = "Spinner";
|
||||
int UIMin = 1;
|
||||
> = {1};
|
||||
float dotblend
|
||||
<
|
||||
string UIName = "Dot Blend";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.4};
|
||||
float dotmult
|
||||
<
|
||||
string UIName = "Dot Intensity";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {1.0};
|
||||
float dotpow
|
||||
<
|
||||
string UIName = "Dot Contrast";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {1.0};
|
||||
string str_curve = "Lens Curvature";
|
||||
bool curveenable
|
||||
<
|
||||
string UIName = "Enable Curvature";
|
||||
string UIWidget = "Checkbox";
|
||||
> = {false};
|
||||
float chromaab
|
||||
<
|
||||
string UIName = "Curve Chromatic Aberration";
|
||||
string UIWidget = "Spinner";
|
||||
> = {0.0};
|
||||
float lenszoom
|
||||
<
|
||||
string UIName = "Curve Zooming";
|
||||
string UIWidget = "Spinner";
|
||||
> = {50.0};
|
||||
float lensdist
|
||||
<
|
||||
string UIName = "Curve Distortion";
|
||||
string UIWidget = "Spinner";
|
||||
> = {0.0};
|
||||
float curvesoft
|
||||
<
|
||||
string UIName = "Curve Sampling Soften";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {0.0};
|
||||
/* BlurSharpShift, some people are obsessed with this nonsense */
|
||||
string str_bss = "BlurSharpShift";
|
||||
bool bssblurenable
|
||||
|
|
@ -286,6 +227,25 @@ float lsharpblend
|
|||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {1.2};
|
||||
/* very cinematic black bars */
|
||||
string str_box = "Black Bars";
|
||||
bool boxenable
|
||||
<
|
||||
string UIName = "Enable Black Bars";
|
||||
string UIWidget = "Checkbox";
|
||||
> = {false};
|
||||
float boxh
|
||||
<
|
||||
string UIName = "Box Horizontal Ratio";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 1.0;
|
||||
> = {2.39};
|
||||
float boxv
|
||||
<
|
||||
string UIName = "Box Vertical Ratio";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 1.0;
|
||||
> = {1.0};
|
||||
|
||||
/*
|
||||
dithering threshold maps
|
||||
|
|
@ -303,23 +263,6 @@ static const float ordered2[4] =
|
|||
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] =
|
||||
{
|
||||
|
|
@ -333,94 +276,6 @@ static const float ordered8[64] =
|
|||
d(42),d(26),d(38),d(22),d(41),d(25),d(37),d(21)
|
||||
};
|
||||
#undef d
|
||||
/*
|
||||
palettes
|
||||
don't touch unless you know what you're doing
|
||||
*/
|
||||
#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
|
||||
/* gauss stuff */
|
||||
float gauss3[3] =
|
||||
{
|
||||
|
|
@ -431,21 +286,13 @@ float4 ScreenSize;
|
|||
Texture2D TextureOriginal;
|
||||
Texture2D TextureColor;
|
||||
Texture2D TextureDepth;
|
||||
Texture2D TextureFont
|
||||
Texture2D TextureCGA
|
||||
<
|
||||
string ResourceName = "menbvgaluma.png";
|
||||
string ResourceName = "menbcgalut.png";
|
||||
>;
|
||||
Texture2D TextureDots
|
||||
Texture2D TextureEGA
|
||||
<
|
||||
string ResourceName = "menbdots.png";
|
||||
>;
|
||||
Texture2D TextureDoom
|
||||
<
|
||||
string ResourceName = "menbdoomlut.png";
|
||||
>;
|
||||
Texture2D TextureQuake
|
||||
<
|
||||
string ResourceName = "menbquakelut.png";
|
||||
string ResourceName = "menbegalut.png";
|
||||
>;
|
||||
Texture2D TextureVGA
|
||||
<
|
||||
|
|
@ -464,22 +311,6 @@ SamplerState SamplerB
|
|||
AddressU = Border;
|
||||
AddressV = Border;
|
||||
};
|
||||
SamplerState SamplerFont
|
||||
{
|
||||
Filter = MIN_LINEAR_MAG_MIP_POINT;
|
||||
AddressU = Wrap;
|
||||
AddressV = Wrap;
|
||||
MaxLOD = 0;
|
||||
MinLOD = 0;
|
||||
};
|
||||
SamplerState SamplerDots
|
||||
{
|
||||
Filter = MIN_MAG_MIP_LINEAR;
|
||||
AddressU = Wrap;
|
||||
AddressV = Wrap;
|
||||
MaxLOD = 0;
|
||||
MinLOD = 0;
|
||||
};
|
||||
SamplerState SamplerLUT
|
||||
{
|
||||
Filter = MIN_MAG_MIP_POINT;
|
||||
|
|
@ -541,10 +372,6 @@ float4 ReducePrepass( in float4 col, in float2 coord )
|
|||
else if ( dither == 1 )
|
||||
col += bdbump+ordered2[int(coord.x%2)+2*int(coord.y%2)]*bdmult;
|
||||
else if ( dither == 2 )
|
||||
col += bdbump+ordered3[int(coord.x%3)+3*int(coord.y%3)]*bdmult;
|
||||
else if ( dither == 3 )
|
||||
col += bdbump+ordered4[int(coord.x%4)+4*int(coord.y%4)]*bdmult;
|
||||
else if ( dither == 4 )
|
||||
col += bdbump+ordered8[int(coord.x%8)+8*int(coord.y%8)]*bdmult;
|
||||
col = saturate(col);
|
||||
return col;
|
||||
|
|
@ -559,75 +386,10 @@ float4 ReducePrepass( in float4 col, in float2 coord )
|
|||
*/
|
||||
float4 ReduceCGA( in float4 color, in float2 coord )
|
||||
{
|
||||
float4 dac = ReducePrepass(color,coord);
|
||||
if ( cgapal == 0 )
|
||||
{
|
||||
dac.a = (dac.r+dac.g+dac.b)/3.0;
|
||||
return (dac.a>0.5);
|
||||
}
|
||||
float dist = 2.0;
|
||||
int idx = 0;
|
||||
if ( cgapal == 1 )
|
||||
{
|
||||
[unroll] 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 ( cgapal == 2 )
|
||||
{
|
||||
[unroll] 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 ( cgapal == 3 )
|
||||
{
|
||||
[unroll] 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 ( cgapal == 4 )
|
||||
{
|
||||
[unroll] 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 ( cgapal == 5 )
|
||||
{
|
||||
[unroll] 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 ( cgapal == 6 )
|
||||
{
|
||||
[unroll] 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 dac = clamp(ReducePrepass(color,coord)+0.005,0.005,0.995);
|
||||
float2 lc = float2((dac.r+cgapal)/7.0,
|
||||
dac.g/64.0+floor(dac.b*64.0)/64.0);
|
||||
return TextureCGA.Sample(SamplerLUT,lc);
|
||||
}
|
||||
/*
|
||||
EGA technically only had the 320x200 16-colour graphic mode, but when VGA
|
||||
|
|
@ -637,30 +399,10 @@ float4 ReduceCGA( in float4 color, in float2 coord )
|
|||
*/
|
||||
float4 ReduceEGA( in float4 color, in float2 coord )
|
||||
{
|
||||
float4 dac = ReducePrepass(color,coord);
|
||||
float dist = 2.0;
|
||||
int idx = 0;
|
||||
if ( egapal == 0 )
|
||||
{
|
||||
[unroll] 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
|
||||
{
|
||||
[unroll] 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 dac = clamp(ReducePrepass(color,coord)+0.005,0.005,0.995);
|
||||
float2 lc = float2((dac.r+egapal)/2.0,
|
||||
dac.g/64.0+floor(dac.b*64.0)/64.0);
|
||||
return TextureEGA.Sample(SamplerLUT,lc);
|
||||
}
|
||||
/* A two bits per channel mode that can usually fit VGA mode 13h and mode x */
|
||||
float4 ReduceRGB2( in float4 color, in float2 coord )
|
||||
|
|
@ -669,20 +411,6 @@ float4 ReduceRGB2( in float4 color, in float2 coord )
|
|||
color.rgb = trunc(dac.rgb*4.0)/4.0;
|
||||
return color;
|
||||
}
|
||||
/* Effectively has 256 colours, with a magenta tint due to precision loss */
|
||||
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;
|
||||
}
|
||||
/* 4096 colours, no actual graphics hardware existed that used 4bpc, though */
|
||||
float4 ReduceRGB4( in float4 color, in float2 coord )
|
||||
{
|
||||
float4 dac = ReducePrepass(color,coord);
|
||||
color.rgb = trunc(dac.rgb*16.0)/16.0;
|
||||
return color;
|
||||
}
|
||||
/*
|
||||
The classic 16-bit colour mode everyone from my generation would remember,
|
||||
especially that subtle green tint and the banding due to lack of dithering
|
||||
|
|
@ -695,38 +423,12 @@ float4 ReduceRGB565( in float4 color, in float2 coord )
|
|||
/float3(32.0,64.0,32.0);
|
||||
return color;
|
||||
}
|
||||
/*
|
||||
If you see no difference when using this, then it could be because your
|
||||
own screen is already 6bpc. This is the case for a lot of LCDs, both old
|
||||
and modern. 8bpc tends to be the norm on IPS, though. 10bpc is the next
|
||||
step, but for now it's only used internally in video codecs for more
|
||||
efficient compression with lower quality loss. I seem to recall that in
|
||||
most *nix systems such as Linux it's possible to have 10bpc already with
|
||||
NVIDIA, but it causes compatibility issues with a lot of programs.
|
||||
*/
|
||||
float4 ReduceRGB6( in float4 color, in float2 coord )
|
||||
{
|
||||
float4 dac = ReducePrepass(color,coord);
|
||||
color.rgb = trunc(dac.rgb*64.0)/64.0;
|
||||
return color;
|
||||
}
|
||||
/* Various VGA 256-colour palettes: Doom, Quake I, and the standard. */
|
||||
float4 ReduceDoom( in float4 color, in float2 coord )
|
||||
{
|
||||
float4 dac = clamp(ReducePrepass(color,coord)+0.005,0.005,0.995);
|
||||
float2 lc = float2(dac.r,dac.g/64.0+floor(dac.b*64.0)/64.0);
|
||||
return TextureDoom.Sample(SamplerLUT,lc);
|
||||
}
|
||||
float4 ReduceQuake( in float4 color, in float2 coord )
|
||||
{
|
||||
float4 dac = clamp(ReducePrepass(color,coord)+0.005,0.005,0.995);
|
||||
float2 lc = float2(dac.r,dac.g/64.0+floor(dac.b*64.0)/64.0);
|
||||
return TextureQuake.Sample(SamplerLUT,lc);
|
||||
}
|
||||
/* Various VGA 256-colour palettes */
|
||||
float4 ReduceVGA( in float4 color, in float2 coord )
|
||||
{
|
||||
float4 dac = clamp(ReducePrepass(color,coord)+0.005,0.005,0.995);
|
||||
float2 lc = float2(dac.r,dac.g/64.0+floor(dac.b*64.0)/64.0);
|
||||
float2 lc = float2((dac.r+vgapal)/15.0,
|
||||
dac.g/64.0+floor(dac.b*64.0)/64.0);
|
||||
return TextureVGA.Sample(SamplerLUT,lc);
|
||||
}
|
||||
|
||||
|
|
@ -758,13 +460,8 @@ float4 PS_Retro( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
|||
if ( paltype == 0 ) res = ReduceCGA(tcol,(coord*rresl)/sresl);
|
||||
else if ( paltype == 1 ) res = ReduceEGA(tcol,(coord*rresl)/sresl);
|
||||
else if ( paltype == 2 ) res = ReduceRGB2(tcol,(coord*rresl)/sresl);
|
||||
else if ( paltype == 3 ) res = ReduceRGB323(tcol,(coord*rresl)/sresl);
|
||||
else if ( paltype == 4 ) res = ReduceVGA(tcol,(coord*rresl)/sresl);
|
||||
else if ( paltype == 5 ) res = ReduceDoom(tcol,(coord*rresl)/sresl);
|
||||
else if ( paltype == 6 ) res = ReduceQuake(tcol,(coord*rresl)/sresl);
|
||||
else if ( paltype == 7 ) res = ReduceRGB4(tcol,(coord*rresl)/sresl);
|
||||
else if ( paltype == 8 ) res = ReduceRGB565(tcol,(coord*rresl)/sresl);
|
||||
else if ( paltype == 9 ) res = ReduceRGB6(tcol,(coord*rresl)/sresl);
|
||||
else if ( paltype == 3 ) res = ReduceVGA(tcol,(coord*rresl)/sresl);
|
||||
else if ( paltype == 4 ) res = ReduceRGB565(tcol,(coord*rresl)/sresl);
|
||||
else res = tcol;
|
||||
if ( ncoord.x < 0 || ncoord.x >= 1 || ncoord.y < 0 || ncoord.y >= 1 )
|
||||
res *= 0;
|
||||
|
|
@ -772,41 +469,6 @@ float4 PS_Retro( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
|||
return res;
|
||||
}
|
||||
|
||||
/* ASCII art (more like CP437 art) */
|
||||
float4 PS_ASCII( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
||||
{
|
||||
float2 coord = IN.txcoord.xy;
|
||||
float4 res = TextureColor.Sample(Sampler,coord);
|
||||
if ( !asciienable ) return res;
|
||||
float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
|
||||
float2 fresl = float2(FONT_WIDTH,FONT_HEIGHT);
|
||||
float2 cresl = float2(GLYPH_WIDTH,GLYPH_HEIGHT);
|
||||
float2 bscl = floor(bresl/cresl);
|
||||
/*
|
||||
Here I use the "cheap" method, based on the overall luminance of each
|
||||
glyph, rather than attempt to search for the best fitting glyph for
|
||||
each cell. If you want to know why, take a look at the ASCII filter
|
||||
bundled with the Dolphin emulator, and be prepared for the resulting
|
||||
seconds per frame it runs at. The calculations needed for such a filter
|
||||
are completely insane even for the highest-end GPUs.
|
||||
*/
|
||||
float3 col = TextureOriginal.Sample(Sampler,floor(bscl*coord)/bscl).rgb;
|
||||
int lum = clamp(luminance(col)*FONT_LEVELS,0,FONT_LEVELS);
|
||||
float2 itx = floor(coord*bresl);
|
||||
float2 blk = floor(itx/cresl)*cresl;
|
||||
float2 ofs = itx-blk;
|
||||
ofs.y += lum*cresl.y;
|
||||
ofs /= fresl;
|
||||
float gch = TextureFont.Sample(SamplerFont,ofs).x;
|
||||
if ( gch < 0.5 ) res.rgb = res.rgb*asciiblend;
|
||||
else
|
||||
{
|
||||
if ( asciimono ) res.rgb = 1.0;
|
||||
else res.rgb = col;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
float4 PS_ChromaKey( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
||||
{
|
||||
float2 coord = IN.txcoord.xy;
|
||||
|
|
@ -817,87 +479,6 @@ float4 PS_ChromaKey( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
|||
return res;
|
||||
}
|
||||
|
||||
/* 2x2 RGBI dot matrix, not even close to anything that exists IRL but meh */
|
||||
float4 PS_DotMatrix( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
||||
{
|
||||
float2 coord = IN.txcoord.xy;
|
||||
float4 res = TextureColor.Sample(Sampler,coord);
|
||||
if ( !dotenable ) return res;
|
||||
float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
|
||||
bresl.xy *= 1.0/(dotsize*2.0);
|
||||
float4 dac = float4(res.r*0.5,res.g*0.5,res.b*0.5,
|
||||
(res.r+res.g+res.b)/6.0);
|
||||
/*
|
||||
There are two types of CRTs: aperture grille and shadow mask.
|
||||
The former is blurry and has scanlines (rather big ones, even), but
|
||||
is cheap to emulate; while the latter is the one most known for its
|
||||
crisp, square pixels with minimal distortion. Most individuals into
|
||||
this whole "retro graphics" stuff prefer aperture grille, which
|
||||
looks like shit, then again, that's the sort of visual quality they
|
||||
want. The main issue with shadow mask CRTs is that it's impossible
|
||||
to accurately emulate them unless done on a screen with a HUGE
|
||||
resolution. After all, the subpixels need to be clearly visible, and
|
||||
if on top of it you add curvature distortion, you need to reduce
|
||||
moire patterns that will inevitably show up at low resolutions.
|
||||
|
||||
It would be more desirable to eventually have flat panels that can
|
||||
display arbitrary resolutions using a form of scaling that preserves
|
||||
square pixels with unnoticeable distortion (typically, with nearest
|
||||
neighbour you'd get some pixels that are bigger/smaller than others
|
||||
if the upscale resolution isn't an integer multiple of the real
|
||||
resolution.
|
||||
|
||||
This 2x2 RGBI thing is a rather naïve filter I made many years ago,
|
||||
it looks unlike any real CRT, but scales well. Its only problem is
|
||||
moire patterns when using the default size of 2x2.
|
||||
*/
|
||||
float4 dots = TextureDots.Sample(SamplerDots,coord*bresl)*dac;
|
||||
float3 tcol = pow(max(0,dots.rgb+dots.a),dotpow)*dotmult;
|
||||
res.rgb = res.rgb*(1-dotblend)+tcol*dotblend;
|
||||
return res;
|
||||
}
|
||||
/* that's right, CRT curvature */
|
||||
float4 PS_Curvature( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
||||
{
|
||||
float2 coord = IN.txcoord.xy;
|
||||
float4 res = TextureColor.Sample(Sampler,coord);
|
||||
if ( !curveenable ) return res;
|
||||
float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
|
||||
float2 bof = (1.0/bresl)*curvesoft;
|
||||
float3 eta = float3(1+chromaab*0.009,1+chromaab*0.006,1+chromaab
|
||||
*0.003);
|
||||
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 = 1+r2*lensdist*0.01;
|
||||
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;
|
||||
int i,j;
|
||||
float4 idist = float4(0,0,0,0);
|
||||
/*
|
||||
sticking a 5x5 gaussian blur with a tweakable radius in here to
|
||||
attempt to reduce moire patterns in some cases. Supersampling would
|
||||
be more useful for that, but ENB sucks ass through a crazy straw in
|
||||
that aspect, so it would be more desirable to use GeDoSaTo (I sure
|
||||
hope I can port all my stuff to it one day, at least the damn thing
|
||||
is FOSS).
|
||||
*/
|
||||
[unroll] for ( i=-2; i<=2; i++ ) [unroll] for ( j=-2; j<=2; j++ )
|
||||
{
|
||||
idist += gauss3[abs(i)]*gauss3[abs(j)]
|
||||
*float4(TextureColor.Sample(Sampler,rcoord+bof
|
||||
*float2(i,j)).r,TextureColor.Sample(SamplerB,gcoord+bof
|
||||
*float2(i,j)).g,TextureColor.Sample(SamplerB,bcoord+bof
|
||||
*float2(i,j)).b,TextureColor.Sample(SamplerB,float2(x,
|
||||
y)+bof*float2(i,j)).a);
|
||||
}
|
||||
res.rgb = idist.rgb;
|
||||
return res;
|
||||
}
|
||||
|
||||
/* Why am I doing this */
|
||||
float4 PS_Blur( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
||||
{
|
||||
|
|
@ -988,6 +569,24 @@ float4 PS_LumaSharp( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
|||
return theywillnotheal;
|
||||
}
|
||||
|
||||
/* ultimate super-cinematic immersive black bars */
|
||||
float4 PS_Cinematic( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
||||
{
|
||||
float2 coord = IN.txcoord.xy;
|
||||
float4 res = TextureColor.Sample(Sampler,coord);
|
||||
if ( !boxenable ) return res;
|
||||
float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
|
||||
float sar = bresl.x/bresl.y;
|
||||
float tar = boxh/boxv;
|
||||
float2 box = (sar<tar)?float2(0.0,(bresl.y-(bresl.x/tar))*0.5)
|
||||
:float2((bresl.x-(bresl.y*tar))*0.5,0.0);
|
||||
box /= bresl;
|
||||
/* this is some kind of advanced black magic I can't understand */
|
||||
float2 test = saturate((coord*coord-coord)-(box*box-box));
|
||||
if ( -test.x != test.y ) res *= 0.0;
|
||||
return res;
|
||||
}
|
||||
|
||||
technique11 ExtraFilters <string UIName="MariENB";>
|
||||
{
|
||||
pass p0
|
||||
|
|
@ -1041,22 +640,6 @@ technique11 ExtraFilters6
|
|||
pass p0
|
||||
{
|
||||
SetVertexShader(CompileShader(vs_5_0,VS_PostProcess()));
|
||||
SetPixelShader(CompileShader(ps_5_0,PS_ASCII()));
|
||||
}
|
||||
}
|
||||
technique11 ExtraFilters7
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
SetVertexShader(CompileShader(vs_5_0,VS_PostProcess()));
|
||||
SetPixelShader(CompileShader(ps_5_0,PS_DotMatrix()));
|
||||
}
|
||||
}
|
||||
technique11 ExtraFilters8
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
SetVertexShader(CompileShader(vs_5_0,VS_PostProcess()));
|
||||
SetPixelShader(CompileShader(ps_5_0,PS_Curvature()));
|
||||
SetPixelShader(CompileShader(ps_5_0,PS_Cinematic()));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,20 +3,20 @@ TECHNIQUE=1
|
|||
Enable Block GFX=false
|
||||
Emulated Resolution=0, 0, 0
|
||||
Zoom Factor=0, 0, 0
|
||||
Palette Type=6
|
||||
CGA Palette=1
|
||||
Palette Type=4
|
||||
CGA Palette=0
|
||||
EGA Palette=0
|
||||
Dithering Pattern=4
|
||||
Contrast Modifier=1.3
|
||||
Saturation Modifier=1.2
|
||||
Dither Offset=-0.15
|
||||
Dither Range=0.25
|
||||
Dithering Pattern=-1
|
||||
Contrast Modifier=1.5
|
||||
Saturation Modifier=0.6
|
||||
Dither Offset=-0.1
|
||||
Dither Range=0.1
|
||||
Enable ASCII=false
|
||||
ASCII Monochrome=false
|
||||
ASCII Blend=0.0
|
||||
Enable Chroma Key=false
|
||||
Chroma Key Color=0.0, 1.0, 0.0
|
||||
Chroma Key Depth=0.92
|
||||
Chroma Key Depth=0.99
|
||||
Enable Dot Matrix=false
|
||||
Dot Size=1
|
||||
Dot Blend=0.4
|
||||
|
|
@ -27,17 +27,17 @@ Curve Chromatic Aberration=0.7
|
|||
Curve Zooming=50.200008
|
||||
Curve Distortion=0.0
|
||||
Curve Sampling Soften=0.0
|
||||
Enable Blur=false
|
||||
Blur Sampling Range=0.15
|
||||
Enable Sharp=false
|
||||
Sharp Sampling Range=0.35
|
||||
Sharpening Amount=3.0
|
||||
Enable Blur=true
|
||||
Blur Sampling Range=0.2
|
||||
Enable Sharp=true
|
||||
Sharp Sampling Range=0.41
|
||||
Sharpening Amount=1.76
|
||||
Enable Shift=false
|
||||
Shift Sampling Range=0.6
|
||||
Luma Sharpen Enable=true
|
||||
Luma Sharpen Radius=0.8
|
||||
Luma Sharpen Clamp=0.12
|
||||
Luma Sharpen Blending=6.0
|
||||
Luma Sharpen Clamp=0.1
|
||||
Luma Sharpen Blending=8.0
|
||||
Emulated Resolution Width=0.0
|
||||
Emulated Resolution Height=0.0
|
||||
Zoom Factor X=0.0
|
||||
|
|
@ -45,3 +45,7 @@ Zoom Factor Y=0.0
|
|||
Chroma Key Red=0, 1, 0
|
||||
Chroma Key Green=1.0
|
||||
Chroma Key Blue=0.0
|
||||
VGA Palette=0
|
||||
Enable Black Bars=false
|
||||
Box Horizontal Ratio=2.39
|
||||
Box Vertical Ratio=1.0
|
||||
|
|
|
|||
BIN
enbseries/menbcgalut.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 2.4 KiB |
BIN
enbseries/menbegalut.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
enbseries/menbfilmlut.png
Normal file
|
After Width: | Height: | Size: 176 B |
|
Before Width: | Height: | Size: 1.7 MiB |
|
Before Width: | Height: | Size: 187 KiB |
BIN
enbseries/menblut64_day.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
enbseries/menblut64_interior.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
enbseries/menblut64_night.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 509 KiB |