MariENB FROST 3.2.0b
|
|
@ -277,9 +277,9 @@ AmbientLightingIntensitySunrise=0.61
|
|||
AmbientLightingIntensityDay=0.87
|
||||
AmbientLightingIntensitySunset=0.66
|
||||
AmbientLightingIntensityDusk=0.44
|
||||
AmbientLightingIntensityNight=0.21
|
||||
AmbientLightingIntensityInteriorDay=0.22
|
||||
AmbientLightingIntensityInteriorNight=0.19
|
||||
AmbientLightingIntensityNight=0.13
|
||||
AmbientLightingIntensityInteriorDay=0.15
|
||||
AmbientLightingIntensityInteriorNight=0.12
|
||||
[SSAO_SSIL]
|
||||
UseIndirectLighting=true
|
||||
ResolutionScale=1.0
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
3.1.1 BETA "Stay FROSTy"
|
||||
3.2.0 BETA "Let Go"
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
[ENBBLOOM.FX]
|
||||
TECHNIQUE=1
|
||||
TECHNIQUE=2
|
||||
Bloom Intensity Night=0.69
|
||||
Bloom Intensity Day=0.38
|
||||
Bloom Intensity Interior=0.53
|
||||
|
|
@ -80,12 +80,12 @@ 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
|
||||
Bloom Pass 1 Blend=0.29
|
||||
Bloom Pass 2 Blend=0.57
|
||||
Bloom Pass 3 Blend=0.86
|
||||
Bloom Pass 4 Blend=1.14
|
||||
Bloom Pass 5 Blend=1.43
|
||||
Bloom Pass 6 Blend=1.71
|
||||
Enable Lens Dirt=false
|
||||
Dirt Pass 1 Blend=0.08
|
||||
Dirt Pass 2 Blend=0.25
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
|
|
@ -853,6 +865,7 @@ float EInteriorFactor;
|
|||
float4 TimeOfDay1;
|
||||
float4 TimeOfDay2;
|
||||
float4 DofParameters;
|
||||
float4 tempInfo2;
|
||||
|
||||
Texture2D TextureCurrent;
|
||||
Texture2D TexturePrevious;
|
||||
|
|
@ -1239,11 +1252,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 +1413,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 +1502,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 +1632,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 +1717,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
|
||||
|
|
|
|||
|
|
@ -43,9 +43,9 @@ 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
|
||||
|
|
@ -70,19 +70,19 @@ DOF Fixed Focus Shift Interior=-0.01
|
|||
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 Intensity Night=1.49
|
||||
DOF Fixed Unfocus Intensity Day=1.39
|
||||
DOF Fixed Unfocus Intensity Interior=1.43
|
||||
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.7
|
||||
DOF Fixed Unfocus Shift Day=-0.9
|
||||
DOF Fixed Unfocus Shift Interior=-0.8
|
||||
DOF Fixed Unfocus Shift Night=-1.06
|
||||
DOF Fixed Unfocus Shift Day=-1.1
|
||||
DOF Fixed Unfocus Shift Interior=-1.08
|
||||
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,19 +100,19 @@ 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
|
||||
SSAO Range=20.0
|
||||
SSAO Range Min=0.0
|
||||
SSAO Range Min=1.0
|
||||
SSAO Blur Radius=1.0
|
||||
Debug SSAO=false
|
||||
SSAO Use Less Samples=true
|
||||
|
|
@ -184,9 +184,10 @@ Frost Factor Night=1.16
|
|||
Frost Factor Interior=0.27
|
||||
DOF Bilateral Factor=20.0
|
||||
DOF Bilateral Radius=1.0
|
||||
DOF Blur Radius=6.0
|
||||
DOF Blur Radius=10.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
|
||||
|
|
|
|||
|
|
@ -431,12 +431,6 @@ int dither
|
|||
int UIMin = 0;
|
||||
int UIMax = 4;
|
||||
> = {4};
|
||||
string str_bloom = "Bloom Settings";
|
||||
bool bloomlighten
|
||||
<
|
||||
string UIName = "Use Lighten Blend";
|
||||
string UIWidget = "Checkbox";
|
||||
> = {false};
|
||||
string str_debug = "Debugging";
|
||||
bool bloomdebug
|
||||
<
|
||||
|
|
@ -846,16 +840,13 @@ float4 PS_Draw( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
|||
float2 adapt = Adaptation(coord);
|
||||
if ( bloomdebug ) res.rgb *= 0;
|
||||
float3 bcol = mud.rgb*ENBParams01.x;
|
||||
if ( bloomlighten )
|
||||
res.rgb = float3(max(res.r,bcol.r),max(res.g,bcol.g),
|
||||
max(res.b,bcol.b));
|
||||
else res.rgb += bcol;
|
||||
res.rgb += bcol;
|
||||
if ( aenable ) res.rgb *= adapt.x;
|
||||
if ( nbt && ne ) res.rgb = FilmGrain(res.rgb,coord);
|
||||
if ( vtmapenable ) res.rgb = TonemapGame(res.rgb);
|
||||
if ( vgradeenable ) res.rgb = GradingGame(res.rgb,adapt.y);
|
||||
#ifndef SKYRIMSE
|
||||
res.rgb = pow(res.rgb,1.0/2.2);
|
||||
res.rgb = pow(max(res.rgb,0.0),1.0/2.2);
|
||||
#endif
|
||||
if ( tmapenable ) res.rgb = Tonemap(res.rgb);
|
||||
if ( gradeenable1 ) res.rgb = GradingRGB(res.rgb);
|
||||
|
|
|
|||
|
|
@ -2,11 +2,11 @@
|
|||
TECHNIQUE=1
|
||||
Enable Grain=true
|
||||
Grain Speed=25.0
|
||||
Grain Intensity=1.34
|
||||
Grain Intensity=1.57
|
||||
Grain Saturation=-0.64
|
||||
Grain Two-Pass=true
|
||||
Grain Blending Mode=3
|
||||
Grain Dark Mask Contrast=24.369999
|
||||
Grain Dark Mask Contrast=29.74
|
||||
Grain Two-Pass Factor=0.04
|
||||
Grain Magnification=13.3, 19.6, 17.4
|
||||
Grain Pass 1 Magnification=2.05, 3.11, 2.22
|
||||
|
|
|
|||
|
|
@ -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,6 +77,32 @@ 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
|
||||
|
|
@ -333,94 +353,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] =
|
||||
{
|
||||
|
|
@ -439,13 +371,13 @@ Texture2D TextureDots
|
|||
<
|
||||
string ResourceName = "menbdots.png";
|
||||
>;
|
||||
Texture2D TextureDoom
|
||||
Texture2D TextureCGA
|
||||
<
|
||||
string ResourceName = "menbdoomlut.png";
|
||||
string ResourceName = "menbcgalut.png";
|
||||
>;
|
||||
Texture2D TextureQuake
|
||||
Texture2D TextureEGA
|
||||
<
|
||||
string ResourceName = "menbquakelut.png";
|
||||
string ResourceName = "menbegalut.png";
|
||||
>;
|
||||
Texture2D TextureVGA
|
||||
<
|
||||
|
|
@ -559,75 +491,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 +504,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 +516,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 +528,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 +565,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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
Enable Blur=true
|
||||
Blur Sampling Range=0.15
|
||||
Enable Sharp=false
|
||||
Sharp Sampling Range=0.35
|
||||
Sharpening Amount=3.0
|
||||
Enable Sharp=true
|
||||
Sharp Sampling Range=0.38
|
||||
Sharpening Amount=1.37
|
||||
Enable Shift=false
|
||||
Shift Sampling Range=0.6
|
||||
Luma Sharpen Enable=true
|
||||
Luma Sharpen Radius=0.8
|
||||
Luma Sharpen Clamp=0.1
|
||||
Luma Sharpen Blending=6.0
|
||||
Luma Sharpen Clamp=0.05
|
||||
Luma Sharpen Blending=8.0
|
||||
Emulated Resolution Width=0.0
|
||||
Emulated Resolution Height=0.0
|
||||
Zoom Factor X=0.0
|
||||
|
|
@ -45,3 +45,4 @@ Zoom Factor Y=0.0
|
|||
Chroma Key Red=0, 1, 0
|
||||
Chroma Key Green=1.0
|
||||
Chroma Key Blue=0.0
|
||||
VGA Palette=0
|
||||
|
|
|
|||
BIN
enbseries/menbcgalut.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 24 KiB |
BIN
enbseries/menbegalut.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 1.7 MiB |
|
Before Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 509 KiB |