1
Fork 0

MariENB Skyrim 2.1.3

This commit is contained in:
Marisa the Magician 2019-04-07 17:41:10 +02:00
commit 6d0120e96a
15 changed files with 568 additions and 147 deletions

View file

@ -7,7 +7,7 @@ UseOriginalPostProcessing=false
UseOriginalObjectsProcessing=false
EnableBloom=true
EnableAdaptation=true
EnableAmbientOcclusion=false
EnableAmbientOcclusion=true
EnableDepthOfField=true
EnableDetailedShadow=true
EnableSunRays=true
@ -70,8 +70,8 @@ SamplingRange=0.15
FadeFogRangeDay=0.0
FadeFogRangeNight=3.0
FadeFogRangeInterior=0.0
SizeScale=0.25
SourceTexturesScale=0.25
SizeScale=0.5
SourceTexturesScale=0.5
FilterQuality=1
AOAmount=1.1
ILAmount=0.31
@ -800,8 +800,8 @@ LightingInfluenceDusk=1.21
Quality=1
FilterQuality=1
FilterBluriness=1.0
SizeScale=0.25
SourceTexturesScale=0.25
SizeScale=0.5
SourceTexturesScale=0.5
Amount=0.35
Power=1.06
GlosinessMin=0.1

View file

@ -38,3 +38,29 @@ Sharp Sampling Range=0.35
Sharpening Amount=2.0
Enable Shift=true
Shift Sampling Range=0.6
------Sharpening------------=false
Show Original=false
Show Edges=false
Use Edge Smoothing=true
Edge Smoothing Intensity=0.42
Depth Sharpening: Far Depth=2500.0
Sharpening HL Limiter Exterior=0.073
Sharpening HL Limiter Interior=0.047
Use Luma Sharpen=true
Blur Sigma Exterior=0.525
Blur Sigma Interior=0.525
Sharpening Strength Exterior=2.45
Sharpening Strength Interior=2.375
Sharpening Threshold Exterior=0.0
Sharpening Threshold Interior=0.0
------Letterbox-------------=false
Enable Letterbox=false
Letterbox Size (%)=4.0
------Noise-----------------=true
Enable Grain=false
Grain Motion=0.004
Grain Saturation=1.0
Grain Intensity=0.004
Grain Saturation Shadow=1.0
Grain Intensity Shadow=0.001
Shadow Noise Curve=0.095

View file

@ -1,9 +1,9 @@
[ENBBLOOM.FX]
TECHNIQUE=0
Bloom Intensity Night=0.6
Bloom Intensity Day=0.66
Bloom Intensity Interior Night=0.87
Bloom Intensity Interior Day=0.71
Bloom Intensity Night=0.61
Bloom Intensity Day=0.52
Bloom Intensity Interior Night=0.71
Bloom Intensity Interior Day=0.62
Bloom Contrast Night=1.02
Bloom Contrast Day=1.0
Bloom Contrast Interior Night=0.96
@ -12,10 +12,10 @@ Bloom Saturation Night=1.08
Bloom Saturation Day=1.03
Bloom Saturation Interior Night=1.19
Bloom Saturation Interior Day=1.19
Bloom Offset Night=-0.07
Bloom Offset Day=-0.08
Bloom Offset Interior Night=-0.07
Bloom Offset Interior Day=-0.03
Bloom Offset Night=-0.26
Bloom Offset Day=-0.34
Bloom Offset Interior Night=-0.23
Bloom Offset Interior Day=-0.27
Bloom Intensity Cap Night=50.0
Bloom Intensity Cap Day=50.0
Bloom Intensity Cap Interior Night=50.0
@ -61,8 +61,8 @@ Anamorphic Bloom Blue Shift Intensity Day=1.45
Anamorphic Bloom Blue Shift Interior Night=1.98
Anamorphic Bloom Blue Shift Interior Day=1.84
Anamorphic Bloom Contrast Night=1.19
Anamorphic Bloom Contrast Day=1.22
Anamorphic Bloom Contrast Interior Night=1.0
Anamorphic Bloom Contrast Day=1.27
Anamorphic Bloom Contrast Interior Night=1.11
Anamorphic Bloom Contrast Interior Day=1.17
Anamorphic Bloom Radius Multiplier=4.0
Bloom Pass 1 Blend=0.97
@ -85,3 +85,74 @@ Dirt Base Blend=0.0
Dirt Texture Preserve Aspect=true
Dirt Contrast=1.05
Dirt Factor=0.95
------Options & Settings----=false
Bloom Quality=0.0
------Depth-----------------=false
Far Depth=50.0
Exterior: Min Depth=0.67
Interior: Min Depth=0.67
------Tinting---------------=false
Tinting: Enable Bloom Tinting=true
Tinting: Tint Method=1.0
Tinting: Day Tint RGB Color=0.6, 0.4, 1
Tinting: Day Tint Level=0.59
Tinting: (method 3) Day Tint Mix=0.47
Tinting: Night Tint RGB Color=0.6, 0.4, 1
Tinting: Night Tint Level=0.59
Tinting: (method 3) Night Tint Mix=0.47
Tinting: Interior Tint RGB Color=0.6, 0.4, 1
Tinting: Interior Tint Level=0.44
Tinting: (method 3) Interior Tint Mix=0.47
------Bloom Day-------------=false
Day Bloom: Black Level=0.025
Day Bloom: Gamma Curve=1.0
Day Bloom: White Level=0.46
Day Bloom: Black Cutoff=0.0
Day Bloom: White Cutoff=0.135
Day Bloom: Saturation=1.0
Day Bloom: Sigma (Blur width)=24.0
Day Bloom: X Intensity=1.0
Day Bloom: X+Y Intensity=1.0
------Bloom Night-----------=false
Night Bloom: Black Level=0.025
Night Bloom: Gamma Curve=1.0
Night Bloom: White Level=0.45
Night Bloom: Black Cutoff=0.0
Night Bloom: White Cutoff=0.165
Night Bloom: Saturation=1.0
Night Bloom: Sigma (Blur width)=24.0
Night Bloom: X Intensity=1.0
Night Bloom: X+Y Intensity=1.0
------Bloom Interior--------=false
Interior Bloom: Black Level=0.025
Interior Bloom: Gamma Curve=1.0
Interior Bloom: White Level=0.455
Interior Bloom: Black Cutoff=0.0
Interior Bloom: White Cutoff=0.165
Interior Bloom: Saturation=1.0
Interior Bloom: Sigma (Blur width)=24.0
Interior Bloom: X Intensity=1.0
Interior Bloom: X+Y Intensity=1.0
------Texture Selection-----=false
Enable Tex 1: 512x512=false
Enable Tex 2: 256x256=true
Enable Tex 3: 128x128=true
Enable Tex 4: 64x64=true
Enable Tex 5: 32x32=true
Enable Tex 6: 16x16=true
Enable Tex 7: 8x8=true
------Texture Sample Range--=false
Tex 1: Sample Range=0.5
Tex 2: Sample Range=0.5
Tex 3: Sample Range=0.5
Tex 4: Sample Range=0.25
Tex 5: Sample Range=0.25
Tex 6: Sample Range=0.25
Tex 7: Sample Range=0.25
------Noise-----------------=false
Noise Motion=0.004
Noise Saturation=1.0
Noise Intensity Exterior=0.003
Noise Intensity Interior=0.002
Bloom Blur Radius X=1.0
Bloom Blur Radius Y=1.0

View file

@ -150,3 +150,156 @@ Display Bloom=false
Enable Vanilla Imagespace=true
Vanilla Vibrance Blend=1.0
Vanilla Contrast Blend=1.0
Enable Spell Special Effects=true
Show Bloom Output=false
Bloom Filter Sample Range=0.5
ENB Adaptation Curve=7.0
Skyrim Adaptation Min=5.0
Skyrim Adaptation Max=5.0
Skyrim Bloom Amount Day=0.0
Skyrim Bloom Amount Night=0.0
Skyrim Bloom Amount Interior=0.0
------Gray Level Controls---=false
Day: Gray Black In=0.006
Day: Gray Gamma In=1.01
Day: Gray White In=1.0
Day: Gray Black Out=0.016
Day: Gray Black Out Min=0.02
Day: Gray White Out=1.0
Night: Gray Black In=0.004
Night: Gray Gamma In=1.01
Night: Gray White In=1.0
Night: Gray Black Out=0.035
Night: Gray Black Out Min=0.014
Night: Gray White Out=1.0
Interior: Gray Black In=0.007
Interior: Gray Gamma In=1.01
Interior: Gray White In=1.0
Interior: Gray Black Out=0.065
Interior: Gray Black Out Min=0.012
Interior: Gray White Out=1.0
------RGB Level Controls----=false
Day: RGB Black In=0, 0, 0
Day: Red Gamma In=1.025
Day: Green Gamma In=1.06
Day: Blue Gamma In=1.09
Day: RGB White In=1, 1, 1
Day: RGB Black Out=0, 0, 0
Day: RGB White Out=1, 0.98, 1
Night: RGB Black In=0, 0, 0
Night: Red Gamma In=1.025
Night: Green Gamma In=1.06
Night: Blue Gamma In=1.09
Night: RGB White In=1, 1, 1
Night: RGB Black Out=0, 0, 0
Night: RGB White Out=1, 0.98, 1
Interior: RGB Black In=0, 0, 0
Interior: Red Gamma In=1.025
Interior: Green Gamma In=1.06
Interior: Blue Gamma In=1.09
Interior: RGB White In=1, 1, 1
Interior: RGB Black Out=0, 0, 0
Interior: RGB White Out=1, 0.98, 1
------Tonemapping (Filmic)--=false
Tonemap Day: Shoulder Strength=0.59
Tonemap Day: Linear Strength=0.815
Tonemap Day: Linear Angle=0.35
Tonemap Day: Toe Strength=0.705
Tonemap Day: Toe Numerator=0.083
Tonemap Day: Toe Denominator=0.365
Tonemap Day: White Lower Limit=0.012
Tonemap Day: White Upper Limit=0.365
Tonemap Night: Shoulder Strength=0.59
Tonemap Night: Linear Strength=0.815
Tonemap Night: Linear Angle=0.35
Tonemap Night: Toe Strength=0.965
Tonemap Night: Toe Numerator=0.083
Tonemap Night: Toe Denominator=0.365
Tonemap Night: White Lower Limit=0.012
Tonemap Night: White Upper Limit=0.365
Tonemap Interior: Shoulder Strength=0.71
Tonemap Interior: Linear Strength=0.815
Tonemap Interior: Linear Angle=0.35
Tonemap Interior: Toe Strength=0.72
Tonemap Interior: Toe Numerator=0.083
Tonemap Interior: Toe Denominator=0.365
Tonemap Interior: White Lower Limit=0.012
Tonemap Interior: White Upper Limit=0.365
Adaptation Ext: Lower White Point=1.875
Adaptation Ext: Upper White Point=3.15
Adaptation Int: Lower White Point=1.875
Adaptation Int: Upper White Point=3.2
------Channel Mixer---------=false
Channel Mixer Red Day=1, 0, 0
Channel Mixer Green Day=0, 1, 0
Channel Mixer Blue Day=0, 0, 1
Channel Mixer Red Night=1, 0, 0
Channel Mixer Green Night=0, 1, 0
Channel Mixer Blue Night=0, 0, 1
Channel Mixer Red Interior=1, 0, 0
Channel Mixer Green Interior=0, 1, 0
Channel Mixer Blue Interior=0, 0, 1
------Color Filter----------=false
Color Filter: Luma=0.212, 0.714, 0.0706
Color Filter: Hue Middle=0.0
Color Filter: Hue Range=0.15
Color Filter: Saturation Limit=1.0
Color Filter: Effect Strength=0.0
------Highlights & Shadows--=false
Day: Highlights=0.334
Day: Shadows=0.02
Night: Highlights=0.334
Night: Shadows=0.05
Interior: Highlights=0.334
Interior: Shadows=0.02
------After Effects---------=false
AFX: Contrast Tweak Day=0.2
AFX: Contrast Tweak Night=0.4
AFX: Contrast Tweak Interior=0.3
AFX: Brightness Tweak Day=0.1
AFX: Brightness Tweak Night=0.0
AFX: Brightness Tweak Interior=0.095
AFX: Vibrance Tweak Day=1.1
AFX: Vibrance Tweak Night=1.3
AFX: Vibrance Tweak Interior=1.1
AFX: Red Saturation Day=1.0
AFX: Red Saturation Night=0.89
AFX: Red Saturation Interior=0.89
AFX: Green Saturation Day=0.9
AFX: Green Saturation Night=0.88
AFX: Green Saturation Interior=0.88
AFX: Blue Saturation Day=1.0
AFX: Blue Saturation Night=0.85
AFX: Blue Saturation Interior=0.85
------Ported SFX: Curves----=false
Day Curves 12: Start Point=0.036
Day Curves 12: Control Point 1=0.165
Day Curves 12: Control Point 2=1.0
Day Curves 12: End Point=1.0
Day Curves 12: Contrast Amount=0.765
Night Curves 12: Start Point=0.013
Night Curves 12: Control Point 1=0.13
Night Curves 12: Control Point 2=1.0
Night Curves 12: End Point=1.0
Night Curves 12: Contrast Amount=0.765
Interior Curves 12: Start Point=0.025
Interior Curves 12: Control Point 1=0.145
Interior Curves 12: Control Point 2=1.0
Interior Curves 12: End Point=1.0
Interior Curves 12: Contrast Amount=0.765
------Skyrim IS Limits------=false
Skyrim IS: Max Saturation Ext=1.0
Skyrim IS: Max Saturation Int=1.0
Skyrim IS: Max Contrast Ext=1.365
Skyrim IS: Max Contrast Int=1.395
Skyrim IS: Max Brightness Ext=1.2
Skyrim IS: Max Brightness Int=1.2
Skyrim IS: Max Tint Amount Ext=0.8
Skyrim IS: Max Tint Amount Int=0.8
Skyrim IS: New Tint Strength Ext=0.8
Skyrim IS: New Tint Strength Int=0.8
Skyrim IS: New Tint Add Shadow Day=0.095
Skyrim IS: New Tint Add Shadow Night=0.02
Skyrim IS: New Tint Add Shadow Int=0.032
Skyrim IS: New Tint Desaturate Ext=0.0
Skyrim IS: New Tint Desaturate Int=0.0

View file

@ -1,5 +1,5 @@
[ENBEFFECTPREPASS.FX]
TECHNIQUE=0
TECHNIQUE=2
Fixed Resolution Width=1920
Fixed Resolution Height=1080
Depth Cutoff=999998.0
@ -48,10 +48,10 @@ DOF Intensity Night=475.899994
DOF Intensity Day=424.299988
DOF Intensity Interior Night=480.799988
DOF Intensity Interior Day=432.299988
DOF Contrast Night=3.16
DOF Contrast Day=3.58
DOF Contrast Interior Night=2.78
DOF Contrast Interior Day=3.14
DOF Contrast Night=3.32
DOF Contrast Day=3.7
DOF Contrast Interior Night=3.02
DOF Contrast Interior Day=3.43
DOF Shift Night=0.0
DOF Shift Day=0.0
DOF Shift Interior Night=0.0
@ -95,10 +95,10 @@ DOF Bilateral Factor=5.0
DOF Blur Radius=1.0
DOF Relative to FOV=true
Default FOV=75.0
DOF Relative Factor Night=2.57
DOF Relative Factor Day=2.79
DOF Relative Factor Interior Night=2.54
DOF Relative Factor Interior Day=2.61
DOF Relative Factor Night=2.76
DOF Relative Factor Day=2.9
DOF Relative Factor Interior Night=2.65
DOF Relative Factor Interior Day=2.73
Debug Depth=false
Debug Focus=false
Enable Depth Edge Detect=false
@ -132,7 +132,7 @@ Edgevision Fade Intensity Interior Day=600.0
Edgevision Contrast=0.25
Edgevision Intensity=8.0
Edgevision Radius=1.0
Enable SSAO=true
Enable SSAO=false
SSAO Radius=0.15
SSAO Noise=0
SSAO Fade Contrast Night=0.46
@ -180,4 +180,31 @@ SSAO Blur Use Less Samples=true
Bokeh Threshold=1.0
Bokeh Blur Threshold=0.5
Bokeh Size=8.0
DOF Gather Blur Radius=10.0
DOF Gather Blur Radius=12.0
DES mode=0
DES Level=0.0
DES Blend Color=1, 0, 0
DES Blend Factor=1.0
MF mode=false
Display AF Cursor=false
AF posX=0.5
AF posY=0.6
AF Near Blur Curve=30.0
AF Far Blur Curve=2.4
MF Far Blur Plane(m)=10.0
MF Focused Plane(m)=1.0
Aperture Size(%)=0.35
Aperture Deform=0.0
Aperture Shape=5
Aperture Ratio=1.19
Aperture Angle(°)=0
Tilt Shift Axis(°)=0
Tilt Shift Angle(°)=0.0
Quality=3
Bokeh Highlight=10.0
Bokeh Bias=0.0
Bokeh Bias Curve=1.0
Guassian Radius=1.0
Noise Amount=0.0
Noise Curve=1.0
DOF Minimum Blur=0.01

View file

@ -1,2 +1,25 @@
[ENBLENS.FX]
TECHNIQUE=0
Lens Reflect Position X=0.0
Lens Reflect Position Y=0.0
Lens Reflect Size=1.0
Lens Reflect Intensity=0.35
Flare IntensityL-N=0.7
Flare IntensityH-N=0.7
Flare IntensityL-D=0.7
Flare IntensityH-D=0.7
Flare IntensityL-I=0.7
Flare IntensityH-I=0.7
Flare Lighting ThresholdL-N=0.2
Flare Lighting ThresholdH-N=0.27
Flare Lighting ThresholdL-D=0.45
Flare Lighting ThresholdH-D=0.45
Flare Lighting ThresholdL-I=0.48
Flare Lighting ThresholdH-I=0.52
Flare Curve1=16.0
Flare Curve2=16.0
Flare Tint1=0.129, 0.216, 1
Flare Tint2=0.129, 0.216, 1
Flare Angle 1=135.0
Flare Angle 2=45.0
blur radii=12.0

View file

@ -1,2 +1,20 @@
[ENBSUNSPRITE.FX]
TECHNIQUE=0
Glare Intensity=0.9
Glare Scale=0.8
Glare Tint=0.973, 0.894, 0.486
Moire Vib Frequency(Hz)=1.0
Moire Vib Scale=0.3
Moire Offset=0.1
Rotation Modifier=100.0
Blink Axis(°)=1
Blink Frequency(Hz)=0.3
Blink Speed=0.3
Blink Starting Angle(°)=90
Blink Ending Angle(°)=10
Blink Angle Width=10.0
Blink Intensity=4.0
Spike Intensity=6.0
Spike Frequency=2.0
Spike Speed=0.4
Spike Width=1.0

View file

@ -63,7 +63,7 @@ float4 PS_BloomTexture1(VS_OUTPUT_POST In) : COLOR
float2 pp;
[unroll] for ( i=-7; i<=7; i++ )
{
pp = coord+float2(i,0)*TempParameters.z*bloomradius;
pp = coord+float2(i,0)*TempParameters.z*bloomradiusx;
res += gauss8[abs(i)]*tex2D(SamplerBloom1,pp);
sum += ((pp.x>=0)&&(pp.x<1))?gauss8[abs(i)]:0;
}
@ -81,7 +81,7 @@ float4 PS_BloomTexture2(VS_OUTPUT_POST In) : COLOR
float2 pp;
[unroll] for ( i=-7; i<=7; i++ )
{
pp = coord+float2(0,i)*TempParameters.z*bloomradius;
pp = coord+float2(0,i)*TempParameters.z*bloomradiusy;
res += gauss8[abs(i)]*tex2D(SamplerBloom1,pp);
sum += ((pp.y>=0)&&(pp.y<1))?gauss8[abs(i)]:0;
}
@ -124,11 +124,11 @@ float4 PS_AnamPass(VS_OUTPUT_POST In) : COLOR
int i;
float sum = 0;
float2 pp;
[unroll] for ( i=-79; i<=79; i++ )
[unroll] for ( i=-39; i<=39; i++ )
{
pp = coord+float2(i,0)*TempParameters.z*bloomradius*flen;
res += gauss80[abs(i)]*tex2D(SamplerBloom1,pp);
sum += ((pp.x>=0)&&(pp.x<1))?gauss80[abs(i)]:0;
pp = coord+float2(i,0)*TempParameters.z*bloomradiusx*flen;
res += gauss40[abs(i)]*tex2D(SamplerBloom1,pp);
sum += ((pp.x>=0)&&(pp.x<1))?gauss40[abs(i)]:0;
}
res *= 1.0/sum;
/* blue shift */
@ -143,7 +143,7 @@ float4 PS_AnamPass(VS_OUTPUT_POST In) : COLOR
float fbl = tod_ind(fbl);
float fpw = tod_ind(fpw);
res.rgb *= lerp(1.0,flu,lm);
res.rgb = pow(res.rgb,fpw)*fbl;
res.rgb = pow(max(0,res.rgb),fpw)*fbl;
res.a = 1.0;
return res;
}
@ -161,7 +161,6 @@ float4 PS_BloomPostPass(VS_OUTPUT_POST In) : COLOR
res += bloommix7*tex2D(SamplerBloomC7,coord); // P5
res += bloommix8*tex2D(SamplerBloomC8,coord); // P6
res.rgb /= 6.0;
if ( alfenable ) res.rgb *= 0.5;
res.rgb = clamp(res.rgb,0,32768);
res.a = 1.0;
return res;
@ -186,7 +185,6 @@ float4 PS_LensDirtPass(VS_OUTPUT_POST In) : COLOR
mud += dirtmix7*tex2D(SamplerBloomC7,coord); // P5
mud += dirtmix8*tex2D(SamplerBloomC8,coord); // P6
mud.rgb /= 6.0;
if ( alfenable ) mud.rgb *= 0.5;
mud.rgb = clamp(mud.rgb,0,32768);
float mudmax = luminance(mud.rgb);
float mudn = max(mudmax/(1.0+mudmax),0.0);

View file

@ -7,26 +7,33 @@
/* mathematical constants */
static const float pi = 3.1415926535898;
/* gaussian blur matrices */
/* radius: 3, std dev: 0.7014 */
/*static const float gauss3[3] = {0.568780, 0.205851, 0.009759};*/
/* radius: 4, std dev: 1.5 */
/*static const float gauss4[4] =
{
0.270682, 0.216745, 0.111281, 0.036633
};*/
/* radius: 8, std dev: 3 */
static const float gauss8[8] =
{
0.134598, 0.127325, 0.107778, 0.081638,
0.055335, 0.033562, 0.018216, 0.008847
};
/* radius: 36, std dev: 32 */
/*static const float gauss36[36] =
/* radius: 40, std dev: 15 */
static const float gauss40[40] =
{
0.017014, 0.017006, 0.016981, 0.016939, 0.016881, 0.016807,
0.016717, 0.016612, 0.016490, 0.016354, 0.016203, 0.016038,
0.015859, 0.015666, 0.015461, 0.015244, 0.015015, 0.014775,
0.014524, 0.014264, 0.013995, 0.013718, 0.013433, 0.013141,
0.012843, 0.012539, 0.012231, 0.011918, 0.011602, 0.011284,
0.010964, 0.010642, 0.010319, 0.009997, 0.009675, 0.009355
};*/
0.026823, 0.026763, 0.026585, 0.026291,
0.025886, 0.025373, 0.024760, 0.024055,
0.023267, 0.022404, 0.021478, 0.020499,
0.019477, 0.018425, 0.017352, 0.016269,
0.015186, 0.014112, 0.013056, 0.012025,
0.011027, 0.010067, 0.009149, 0.008279,
0.007458, 0.006688, 0.005972, 0.005308,
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,
@ -42,7 +49,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
};
};*/
/* standard stuff */
float4 ScreenSize;
float4 TempParameters;

View file

@ -120,9 +120,15 @@ float bloomcap_id
> = {20.0};
string str_bloomper = "Bloom Per-pass";
/* bloom blur radius */
float bloomradius
float bloomradiusx
<
string UIName = "Bloom Blur Radius";
string UIName = "Bloom Blur Radius X";
string UIWidget = "Spinner";
float UIMin = 0.0;
> = {1.0};
float bloomradiusy
<
string UIName = "Bloom Blur Radius Y";
string UIWidget = "Spinner";
float UIMin = 0.0;
> = {1.0};

View file

@ -127,7 +127,7 @@ float3 GradingRGB( float3 res )
float gradepow_b = tod_ind(gradepow_b);
float3 grademul = float3(grademul_r,grademul_g,grademul_b);
float3 gradepow = float3(gradepow_r,gradepow_g,gradepow_b);
return pow(res,gradepow)*grademul;
return pow(max(0,res),gradepow)*grademul;
}
float3 GradingColorize( float3 res )
{
@ -147,8 +147,8 @@ float3 GradingHSV( float3 res )
float gradevalmul = tod_ind(gradevalmul);
float gradevalpow = tod_ind(gradevalpow);
float3 hsv = rgb2hsv(res);
hsv.y = clamp(pow(hsv.y,gradesatpow)*gradesatmul,0.0,1.0);
hsv.z = pow(hsv.z,gradevalpow)*gradevalmul;
hsv.y = clamp(pow(max(0,hsv.y),gradesatpow)*gradesatmul,0.0,1.0);
hsv.z = pow(max(0,hsv.z),gradevalpow)*gradevalmul;
return hsv2rgb(hsv);
}
/* game grading filters */

View file

@ -36,7 +36,7 @@ float4 ReducePrepass( in float4 col, in float2 coord )
{
float3 hsv = rgb2hsv(col);
hsv.y = clamp(hsv.y*bsaturation,0.0,1.0);
hsv.z = pow(hsv.z,bgamma);
hsv.z = pow(max(0,hsv.z),bgamma);
col.rgb = hsv2rgb(saturate(hsv));
if ( dither == 0 )
col += bdbump+checkers[int(coord.x%2)+2*int(coord.y%2)]*bdmult;
@ -350,7 +350,7 @@ float4 PS_DotMatrix( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR
moire patterns when using the default size of 2x2.
*/
float4 dots = tex2D(SamplerDots,coord*bresl)*dac;
float3 tcol = pow((dots.rgb+dots.a),dotpow)*dotmult;
float3 tcol = pow(max(0,dots.rgb+dots.a),dotpow)*dotmult;
res.rgb = res.rgb*(1-dotblend)+tcol*dotblend;
return res;
}

View file

@ -81,8 +81,8 @@ float3 EdgeView( float3 res, float2 coord )
mdy += GY[2][2]*depths[2][2];
mud = pow(mdx*mdx+mdy*mdy,0.5);
float fade = 1.0-tex2D(SamplerDepth,coord).x;
mud *= saturate(pow(fade,edgevfadepow)*edgevfademult);
mud = saturate(pow(mud,edgevpow)*edgevmult);
mud *= saturate(pow(max(0,fade),edgevfadepow)*edgevfademult);
mud = saturate(pow(max(0,mud),edgevpow)*edgevmult);
return mud;
}
/*
@ -141,7 +141,7 @@ float4 PS_EdgePlusSSAOPrepass( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR
{
sample = reflect(ssao_samples_lq[i],rnormal);
sample *= sign(dot(normal,sample));
so = ldepth-sample.z*bof;
so = ldepth-sample.z*bof.x;
sdepth = depthlinear(coord+bof*sample.xy/ldepth);
delta = saturate(so-sdepth);
delta *= 1.0-smoothstep(0.0,sclamp,delta);
@ -152,7 +152,7 @@ float4 PS_EdgePlusSSAOPrepass( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR
{
sample = reflect(ssao_samples_hq[i],rnormal);
sample *= sign(dot(normal,sample));
so = ldepth-sample.z*bof;
so = ldepth-sample.z*bof.x;
sdepth = depthlinear(coord+bof*sample.xy/ldepth);
delta = saturate(so-sdepth);
delta *= 1.0-smoothstep(0.0,sclamp,delta);
@ -161,8 +161,8 @@ float4 PS_EdgePlusSSAOPrepass( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR
}
float uocc = saturate(occ/(ssaoquarter?16.0:64.0));
float fade = 1.0-depth;
uocc *= saturate(pow(fade,ssaofadepow)*ssaofademult);
uocc = saturate(pow(uocc,ssaopow)*ssaomult);
uocc *= saturate(pow(max(0,fade),ssaofadepow)*ssaofademult);
uocc = saturate(pow(max(0,uocc),ssaopow)*ssaomult);
res.a = saturate(1.0-(uocc*ssaoblend));
return res;
}
@ -186,10 +186,11 @@ float2 DistantHeat( float2 coord )
float2 bresl;
float dep, odep;
dep = tex2D(SamplerDepth,coord).x;
float distfade = clamp(pow(dep,heatfadepow)*heatfademul+heatfadebump,
0.0,1.0);
float distfade = clamp(pow(max(0,dep),heatfadepow)*heatfademul
+heatfadebump,0.0,1.0);
if ( distfade <= 0.0 ) return coord;
float todpow = pow(ENightDayFactor*(1.0-EInteriorFactor),heattodpow);
float todpow = pow(max(0,ENightDayFactor*(1.0-EInteriorFactor)),
heattodpow);
if ( !heatalways && (todpow <= 0.0) ) return coord;
if ( (fixedx > 0) && (fixedy > 0) ) bresl = float2(fixedx,fixedy);
else bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
@ -204,8 +205,8 @@ float2 DistantHeat( float2 coord )
#endif
;
odep = tex2D(SamplerDepth,coord+ofs*heatstrength*distfade*0.01).x;
float odistfade = clamp(pow(odep,heatfadepow)*heatfademul+heatfadebump,
0.0,1.0);
float odistfade = clamp(pow(max(0,odep),heatfadepow)*heatfademul
+heatfadebump,0.0,1.0);
if ( odistfade <= 0.0 ) return coord;
return coord+ofs*heatstrength*distfade*0.01;
}
@ -221,18 +222,16 @@ float4 PS_Distortion( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR
if ( heatenable ) ofs = DistantHeat(ofs);
ofs -= coord;
float4 res;
if ( (distcha != 0.0) && (length(ofs) != 0) )
{
float2 ofr, ofg, ofb;
ofr = ofs*(1.0-distcha*0.01);
ofg = ofs;
ofb = ofs*(1.0+distcha*0.01);
res = float4(tex2D(SamplerColor,coord+ofr).r,
tex2D(SamplerColor,coord+ofg).g,
tex2D(SamplerColor,coord+ofb).b,
tex2D(SamplerColor,coord+ofs).a);
}
else res = tex2D(SamplerColor,coord+ofs);
if ( (distcha == 0.0) || (length(ofs) == 0) )
return tex2D(SamplerColor,coord+ofs);
float2 ofr, ofg, ofb;
ofr = ofs*(1.0-distcha*0.01);
ofg = ofs;
ofb = ofs*(1.0+distcha*0.01);
res = float4(tex2D(SamplerColor,coord+ofr).r,
tex2D(SamplerColor,coord+ofg).g,
tex2D(SamplerColor,coord+ofb).b,
tex2D(SamplerColor,coord+ofs).a);
return res;
}
/*
@ -400,9 +399,8 @@ float4 PS_DoFPrepass( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR
This method skips blurring areas that are perfectly in focus. The
performance gain is negligible in most cases, though.
*/
#ifdef USE_BOKEH
/* gather blur pass */
float4 PS_DoFBlurH( VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR
float4 PS_DoFGather( VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR
{
float2 coord = IN.txcoord.xy;
if ( dofdisable ) return tex2D(SamplerColor,coord);
@ -413,44 +411,27 @@ float4 PS_DoFBlurH( VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR
if ( (fixedx > 0) && (fixedy > 0) ) bresl = float2(fixedx,fixedy);
else bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
float2 bof = 1.0/bresl;
float4 res = tex2D(SamplerColor,coord);
float4 ccol = res;
if ( dfc > 0.0 )
if ( dfc <= dofminblur ) return tex2D(SamplerColor,coord);
float4 res = float4(0,0,0,0);
float dep = tex2D(SamplerDepth,coord).x;
float sd, ds, sw, tw = 0;
float2 bsz = bof*dofpradius*dfc;
float4 sc;
[unroll] for ( int i=0; i<32; i++ )
{
res *= 0;
float dep = tex2D(SamplerDepth,coord).x;
float sd, ds, sw, tw = 0;
float2 bsz = bof*dofpradius*dfc;
float4 sc;
[unroll] for ( int i=0; i<32; i++ )
{
sc = tex2Dlod(SamplerColor,float4(coord.x
+poisson32[i].x*bsz.x,coord.y+poisson32[i].y
*bsz.y,0.0,dfc));
ds = tex2D(SamplerDepth,coord+poisson32[i]*bsz).x;
sd = tex2D(SamplerColor,coord+poisson32[i]*bsz).a;
sw = (ds>dep)?1.0:sd;
tw += sw;
res += sc*sw;
}
res /= tw;
sc = tex2Dlod(SamplerColor,float4(coord.x
+poisson32[i].x*bsz.x,coord.y+poisson32[i].y
*bsz.y,0.0,dfc*4.0));
ds = tex2D(SamplerDepth,coord+poisson32[i]*bsz).x;
sd = tex2D(SamplerColor,coord+poisson32[i]*bsz).a;
sw = (ds>dep)?1.0:sd;
tw += sw;
res += sc*sw;
}
res.a = dfc;
return res;
}
/* nobody here, only one pass is really needed */
float4 PS_DoFBlurV( VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR
{
float2 coord = IN.txcoord.xy;
if ( dofdisable ) return tex2D(SamplerColor,coord);
float dfc = tex2D(SamplerColor,coord).a;
if ( dofdebug ) return tex2D(SamplerDepth,coord).x;
if ( dfcdebug ) return dfc;
float4 res = tex2D(SamplerColor,coord);
res /= tw;
res.a = 1.0;
return res;
}
#else
float4 PS_DoFBlurH( VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR
{
float2 coord = IN.txcoord.xy;
@ -461,12 +442,7 @@ float4 PS_DoFBlurH( VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR
float bresl = (fixedx>0)?fixedx:ScreenSize.x;
float bof = (1.0/bresl)*dofbradius;
float4 res = float4(0,0,0,0);
if ( dfc <= 0.0 )
{
res = tex2D(SamplerColor,coord);
res.a = dfc;
return res;
}
if ( dfc <= dofminblur ) return tex2D(SamplerColor,coord);
int i;
float isd, sd, ds, sw, tw = 0;
isd = dfc;
@ -493,12 +469,7 @@ float4 PS_DoFBlurV( VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR
float bresl = (fixedy>0)?fixedy:(ScreenSize.x*ScreenSize.w);
float bof = (1.0/bresl)*dofbradius;
float4 res = float4(0,0,0,0);
if ( dfc <= 0.0 )
{
res = tex2D(SamplerColor,coord);
res.a = dfc;
return res;
}
if ( dfc <= dofminblur ) return tex2D(SamplerColor,coord);
int i;
float isd, sd, ds, sw, tw = 0;
isd = dfc;
@ -515,7 +486,6 @@ float4 PS_DoFBlurV( VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR
res.a = 1.0;
return res;
}
#endif
/* Screen frost shader. Not very realistic either, but looks fine too. */
float2 ScreenFrost( float2 coord )
{
@ -543,25 +513,24 @@ float4 PS_FrostPass( VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR
float2 bresl;
if ( (fixedx > 0) && (fixedy > 0) ) bresl = float2(fixedx,fixedy);
else bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
float2 ofs = coord;
if ( frostenable ) ofs = ScreenFrost(ofs);
ofs -= coord;
float4 res;
if ( (distcha != 0.0) && (length(ofs) != 0.0) )
{
float2 ofr, ofg, ofb;
ofr = ofs*(1.0-distcha*0.01);
ofg = ofs;
ofb = ofs*(1.0+distcha*0.01);
res = float4(tex2D(SamplerColor,coord+ofr).r,
tex2D(SamplerColor,coord+ofg).g,
tex2D(SamplerColor,coord+ofb).b,1.0);
}
else res = tex2D(SamplerColor,coord+ofs);
if ( frostenable )
{
float2 ofs = ScreenFrost(coord);
ofs -= coord;
if ( (distcha != 0.0) && (length(ofs) != 0.0) )
{
float2 ofr, ofg, ofb;
ofr = ofs*(1.0-distcha*0.01);
ofg = ofs;
ofb = ofs*(1.0+distcha*0.01);
res = float4(tex2D(SamplerColor,coord+ofr).r,
tex2D(SamplerColor,coord+ofg).g,
tex2D(SamplerColor,coord+ofb).b,1.0);
}
else res = tex2D(SamplerColor,coord+ofs);
float2 nc = coord*(bresl/FROSTSIZE)*frostsize;
float bmp = pow(tex2D(SamplerFrost,nc).x,frostbpow);
float bmp = pow(max(0,tex2D(SamplerFrost,nc).x),frostbpow);
float dist = distance(coord,float2(0.5,0.5))*2.0;
dist = clamp(pow(dist,frostrpow)*frostrmult+frostrbump,0.0,
1.0)*frostblend;
@ -573,6 +542,7 @@ float4 PS_FrostPass( VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR
if ( EInteriorFactor == 1.0 ) dist *= frostind;
res.rgb *= 1.0+bmp*dist;
}
else res = tex2D(SamplerColor,coord);
if ( !focusdisplay ) return res;
float2 fcenter = float2(focuscenter_x,focuscenter_y);
if ( distance(coord,fcenter) < 0.01 ) res.rgb = float3(1,0,0);
@ -622,7 +592,7 @@ technique WriteFocus
SRGBWRITEENABLE = FALSE;
}
}
technique PostProcess
technique PostProcess <string UIName="MariENB Bilateral Blur DoF";>
{
pass p0
{
@ -758,3 +728,122 @@ technique PostProcess8
SRGBWRITEENABLE = FALSE;
}
}
technique PostProcessG <string UIName="MariENB Gather Blur DoF";>
{
pass p0
{
VertexShader = compile vs_3_0 VS_Pass();
PixelShader = compile ps_3_0 PS_EdgePlusSSAOPrepass();
DitherEnable = FALSE;
ZEnable = FALSE;
CullMode = NONE;
ALPHATESTENABLE = FALSE;
SEPARATEALPHABLENDENABLE = FALSE;
AlphaBlendEnable = FALSE;
StencilEnable = FALSE;
FogEnable = FALSE;
SRGBWRITEENABLE = FALSE;
}
}
technique PostProcessG2
{
pass p0
{
VertexShader = compile vs_3_0 VS_Pass();
PixelShader = compile ps_3_0 PS_Distortion();
DitherEnable = FALSE;
ZEnable = FALSE;
CullMode = NONE;
ALPHATESTENABLE = FALSE;
SEPARATEALPHABLENDENABLE = FALSE;
AlphaBlendEnable = FALSE;
StencilEnable = FALSE;
FogEnable = FALSE;
SRGBWRITEENABLE = FALSE;
}
}
technique PostProcessG3
{
pass p0
{
VertexShader = compile vs_3_0 VS_Pass();
PixelShader = compile ps_3_0 PS_SSAOBlurH();
DitherEnable = FALSE;
ZEnable = FALSE;
CullMode = NONE;
ALPHATESTENABLE = FALSE;
SEPARATEALPHABLENDENABLE = FALSE;
AlphaBlendEnable = FALSE;
StencilEnable = FALSE;
FogEnable = FALSE;
SRGBWRITEENABLE = FALSE;
}
}
technique PostProcessG4
{
pass p0
{
VertexShader = compile vs_3_0 VS_Pass();
PixelShader = compile ps_3_0 PS_SSAOBlurV();
DitherEnable = FALSE;
ZEnable = FALSE;
CullMode = NONE;
ALPHATESTENABLE = FALSE;
SEPARATEALPHABLENDENABLE = FALSE;
AlphaBlendEnable = FALSE;
StencilEnable = FALSE;
FogEnable = FALSE;
SRGBWRITEENABLE = FALSE;
}
}
technique PostProcessG5
{
pass p0
{
VertexShader = compile vs_3_0 VS_Pass();
PixelShader = compile ps_3_0 PS_DoFPrepass();
DitherEnable = FALSE;
ZEnable = FALSE;
CullMode = NONE;
ALPHATESTENABLE = FALSE;
SEPARATEALPHABLENDENABLE = FALSE;
AlphaBlendEnable = FALSE;
StencilEnable = FALSE;
FogEnable = FALSE;
SRGBWRITEENABLE = FALSE;
}
}
technique PostProcessG6
{
pass p0
{
VertexShader = compile vs_3_0 VS_Pass();
PixelShader = compile ps_3_0 PS_DoFGather();
DitherEnable = FALSE;
ZEnable = FALSE;
CullMode = NONE;
ALPHATESTENABLE = FALSE;
SEPARATEALPHABLENDENABLE = FALSE;
AlphaBlendEnable = FALSE;
StencilEnable = FALSE;
FogEnable = FALSE;
SRGBWRITEENABLE = FALSE;
}
}
technique PostProcessG8
{
pass p0
{
VertexShader = compile vs_3_0 VS_Pass();
PixelShader = compile ps_3_0 PS_FrostPass();
DitherEnable = FALSE;
ZEnable = FALSE;
CullMode = NONE;
ALPHATESTENABLE = FALSE;
SEPARATEALPHABLENDENABLE = FALSE;
AlphaBlendEnable = FALSE;
StencilEnable = FALSE;
FogEnable = FALSE;
SRGBWRITEENABLE = FALSE;
}
}

View file

@ -81,7 +81,6 @@ static const float3 ssao_samples_hq[64] =
float3(-0.8919,-0.0384, 0.3360),float3(-0.0144, 0.9775,-0.2105)
};
/* For high quality DOF */
#ifdef USE_BOKEH
static const float2 poisson32[32] =
{
float2( 0.7284430,-0.1927130),float2( 0.4051600,-0.2312710),
@ -101,7 +100,6 @@ static const float2 poisson32[32] =
float2( 0.0761715,-0.9631760),float2(-0.9218270, 0.2121210),
float2(-0.6378530, 0.3053550),float2(-0.8425180, 0.4753000)
};
#endif
/* standard stuff */
float4 ScreenSize;
float ENightDayFactor;

View file

@ -619,7 +619,6 @@ bool dofdisable
string UIName = "Disable DOF";
string UIWidget = "Checkbox";
> = {false};
#ifndef USE_BOKEH
float dofbfact
<
string UIName = "DOF Bilateral Factor";
@ -631,14 +630,12 @@ float dofbradius
string UIWidget = "Spinner";
float UIMin = 0.0;
> = {1.0};
#else
float dofpradius
<
string UIName = "DOF Gather Blur Radius";
string UIWidget = "Spinner";
float UIMin = 0.0;
> = {6.0};
#endif
#ifndef FALLOUT
bool dofrelfov
<
@ -673,6 +670,14 @@ float relfovfactor_id
string UIWidget = "Spinner";
> = {2.0};
#endif
/* cheap performance option */
float dofminblur
<
string UIName = "DOF Minimum Blur";
string UIWidget = "Spinner";
float UIMin = 0.0;
float UIMax = 1.0;
> = {0.0};
bool dofdebug
<
string UIName = "Debug Depth";