MariENB FROST 3.5.0
This commit is contained in:
parent
7402eaaade
commit
65b822a8f6
11 changed files with 88 additions and 725 deletions
|
|
@ -242,7 +242,7 @@ DirectLightingIntensitySunrise=1.47
|
|||
DirectLightingIntensityDay=1.74
|
||||
DirectLightingIntensitySunset=1.37
|
||||
DirectLightingIntensityDusk=1.02
|
||||
DirectLightingIntensityNight=0.81
|
||||
DirectLightingIntensityNight=0.85
|
||||
DirectLightingIntensityInteriorDay=1.59
|
||||
DirectLightingIntensityInteriorNight=0.89
|
||||
DirectLightingDesaturationDawn=0.0
|
||||
|
|
@ -261,12 +261,12 @@ DirectLightingColorFilterDusk=0.976, 0.922, 0.992
|
|||
DirectLightingColorFilterNight=0.894, 0.89, 0.992
|
||||
DirectLightingColorFilterInteriorDay=1, 1, 1
|
||||
DirectLightingColorFilterInteriorNight=0.886, 0.863, 0.996
|
||||
AmbientLightingIntensityDawn=0.75
|
||||
AmbientLightingIntensityDawn=0.56
|
||||
AmbientLightingIntensitySunrise=0.87
|
||||
AmbientLightingIntensityDay=0.91
|
||||
AmbientLightingIntensitySunset=0.83
|
||||
AmbientLightingIntensityDusk=0.77
|
||||
AmbientLightingIntensityNight=0.71
|
||||
AmbientLightingIntensityDusk=0.64
|
||||
AmbientLightingIntensityNight=0.35
|
||||
AmbientLightingIntensityInteriorDay=0.17
|
||||
AmbientLightingIntensityInteriorNight=0.12
|
||||
SkyAmbientTopIntensityDawn=0.18
|
||||
|
|
@ -274,7 +274,7 @@ SkyAmbientTopIntensitySunrise=0.23
|
|||
SkyAmbientTopIntensityDay=0.31
|
||||
SkyAmbientTopIntensitySunset=0.22
|
||||
SkyAmbientTopIntensityDusk=0.16
|
||||
SkyAmbientTopIntensityNight=0.11
|
||||
SkyAmbientTopIntensityNight=0.1
|
||||
SkyAmbientTopIntensityInteriorDay=0.06
|
||||
SkyAmbientTopIntensityInteriorNight=0.03
|
||||
SkyAmbientBottomIntensityDawn=0.13
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
3.4.4 "Who In Their Right Mind Would Frost A Cake With Their Butt"
|
||||
3.5.0 "Frosted Flakes"
|
||||
|
|
|
|||
|
|
@ -285,8 +285,17 @@ static const float gauss4[4] =
|
|||
0.134598, 0.127325, 0.107778, 0.081638,
|
||||
0.055335, 0.033562, 0.018216, 0.008847
|
||||
};*/
|
||||
/* radius: 20, std dev: 7.5 */
|
||||
static const float gauss20[20] =
|
||||
{
|
||||
0.053690, 0.053215, 0.051815, 0.049562,
|
||||
0.046572, 0.042992, 0.038987, 0.034732,
|
||||
0.030397, 0.026134, 0.022073, 0.018314,
|
||||
0.014928, 0.011953, 0.009403, 0.007266,
|
||||
0.005516, 0.004114, 0.003014, 0.002169
|
||||
};
|
||||
/* 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,
|
||||
|
|
@ -298,7 +307,7 @@ static const float gauss40[40] =
|
|||
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] =
|
||||
{
|
||||
|
|
@ -448,11 +457,11 @@ float4 Anamorphic( float2 coord, Texture2D intex, float insz )
|
|||
float sum = 0.0;
|
||||
float inc = flen/insz;
|
||||
float2 pp;
|
||||
[unroll] for ( i=-39; i<=39; i++ )
|
||||
[unroll] for ( i=-19; i<=19; i++ )
|
||||
{
|
||||
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 += gauss20[abs(i)]*intex.Sample(Sampler,pp);
|
||||
sum += ((pp.x>=0.0)&&(pp.x<1.0))?gauss20[abs(i)]:0.0;
|
||||
}
|
||||
res *= 1.0/sum;
|
||||
float3 flu = tod_ind(flu);
|
||||
|
|
|
|||
|
|
@ -2,10 +2,10 @@
|
|||
TECHNIQUE=2
|
||||
Bloom Intensity Night=0.64
|
||||
Bloom Intensity Day=0.55
|
||||
Bloom Intensity Interior=0.59
|
||||
Bloom Intensity Interior=0.57
|
||||
Bloom Contrast Night=0.94
|
||||
Bloom Contrast Day=0.98
|
||||
Bloom Contrast Interior=0.96
|
||||
Bloom Contrast Interior=0.95
|
||||
Bloom Saturation Night=1.45
|
||||
Bloom Saturation Day=1.36
|
||||
Bloom Saturation Interior=1.57
|
||||
|
|
|
|||
|
|
@ -783,117 +783,6 @@ bool foglimbo
|
|||
string UIName = "Limbo Mode";
|
||||
string UIWidget = "Checkbox";
|
||||
> = {false};
|
||||
/* ssao filter */
|
||||
string str_ssao = "Ray Marching SSAO";
|
||||
bool ssaoenable
|
||||
<
|
||||
string UIName = "Enable SSAO";
|
||||
string UIWidget = "Checkbox";
|
||||
> = {false};
|
||||
float ssaoradius
|
||||
<
|
||||
string UIName = "SSAO Radius";
|
||||
string UIWidget = "Spinner";
|
||||
> = {1.0};
|
||||
int ssaonoise
|
||||
<
|
||||
string UIName = "SSAO Noise";
|
||||
string UIWidget = "Spinner";
|
||||
int UIMin = 0;
|
||||
int UIMax = 1;
|
||||
> = {1};
|
||||
float ssaofadepow_n
|
||||
<
|
||||
string UIName = "SSAO Fade Contrast Night";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {0.05};
|
||||
float ssaofadepow_d
|
||||
<
|
||||
string UIName = "SSAO Fade Contrast Day";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {0.05};
|
||||
float ssaofadepow_i
|
||||
<
|
||||
string UIName = "SSAO Fade Contrast Interior";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {0.05};
|
||||
float ssaofademult_n
|
||||
<
|
||||
string UIName = "SSAO Fade Intensity Night";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {1.0};
|
||||
float ssaofademult_d
|
||||
<
|
||||
string UIName = "SSAO Fade Intensity Day";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {1.0};
|
||||
float ssaofademult_i
|
||||
<
|
||||
string UIName = "SSAO Fade Intensity Interior";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {1.0};
|
||||
float ssaomult
|
||||
<
|
||||
string UIName = "SSAO Intensity";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {0.5};
|
||||
float ssaopow
|
||||
<
|
||||
string UIName = "SSAO Contrast";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {1.5};
|
||||
float ssaobump
|
||||
<
|
||||
string UIName = "SSAO Shift";
|
||||
string UIWidget = "Spinner";
|
||||
> = {0.0};
|
||||
float ssaoblend
|
||||
<
|
||||
string UIName = "SSAO Blending";
|
||||
string UIWidget = "Spinner";
|
||||
> = {1.0};
|
||||
bool ssaobenable
|
||||
<
|
||||
string UIName = "SSAO Blur";
|
||||
string UIWidget = "Checkbox";
|
||||
> = {true};
|
||||
float ssaobfact
|
||||
<
|
||||
string UIName = "SSAO Bilateral Factor";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {1000.0};
|
||||
float ssaoclamp
|
||||
<
|
||||
string UIName = "SSAO Range";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {1.0};
|
||||
float ssaoclampmin
|
||||
<
|
||||
string UIName = "SSAO Range Min";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {0.0};
|
||||
float ssaobradius
|
||||
<
|
||||
string UIName = "SSAO Blur Radius";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {1.0};
|
||||
bool ssaodebug
|
||||
<
|
||||
string UIName = "Debug SSAO";
|
||||
string UIWidget = "Checkbox";
|
||||
> = {false};
|
||||
/* depth-based colour grading suite */
|
||||
string str_grade = "Depth Color Grading Suite";
|
||||
float dgradedfoc
|
||||
|
|
@ -1155,42 +1044,6 @@ static const float gauss16[16] =
|
|||
0.033109, 0.031485, 0.029764, 0.027971,
|
||||
0.026131, 0.024268, 0.022405, 0.020563
|
||||
};
|
||||
/* SSAO samples */
|
||||
static const float3 ssao_samples[64] =
|
||||
{
|
||||
float3(-0.0051, 0.0021, 0.0146),float3(-0.0197,-0.0213,-0.0116),
|
||||
float3( 0.0005,-0.0432,-0.0182),float3(-0.0011,-0.0586,-0.0217),
|
||||
float3(-0.0549, 0.0461, 0.0309),float3(-0.0448,-0.0764,-0.0306),
|
||||
float3(-0.0366, 0.0758,-0.0699),float3(-0.0770,-0.0707,-0.0686),
|
||||
float3( 0.1181,-0.0340,-0.0683),float3(-0.0647, 0.0356, 0.1377),
|
||||
float3(-0.1167, 0.1262, 0.0024),float3(-0.1353,-0.0861, 0.0971),
|
||||
float3(-0.0096, 0.0936, 0.1800),float3( 0.1311,-0.1013,-0.1429),
|
||||
float3(-0.1186,-0.0653, 0.1913),float3( 0.1641, 0.0260, 0.1868),
|
||||
float3(-0.1225,-0.2319, 0.0424),float3( 0.1036,-0.2000, 0.1684),
|
||||
float3( 0.1656, 0.2022,-0.1408),float3(-0.1809,-0.1673, 0.1922),
|
||||
float3(-0.2485,-0.1236, 0.1750),float3( 0.1030,-0.0550, 0.3233),
|
||||
float3(-0.0405, 0.3068, 0.1827),float3(-0.0576, 0.1632, 0.3327),
|
||||
float3( 0.0392, 0.3583,-0.1505),float3( 0.0082, 0.2865, 0.2879),
|
||||
float3( 0.0055,-0.2835, 0.3124),float3(-0.2733, 0.1991,-0.2776),
|
||||
float3( 0.2667, 0.1127,-0.3486),float3(-0.3326, 0.2740,-0.1844),
|
||||
float3( 0.2887,-0.3838, 0.0630),float3( 0.1088, 0.1546, 0.4629),
|
||||
float3( 0.0977,-0.3565, 0.3595),float3(-0.4204, 0.0855, 0.3133),
|
||||
float3(-0.2237,-0.4932, 0.0759),float3( 0.4245, 0.3169,-0.1891),
|
||||
float3( 0.0084,-0.5682, 0.1062),float3(-0.1489,-0.5296,-0.2235),
|
||||
float3( 0.0014,-0.4153,-0.4460),float3( 0.0300,-0.4392, 0.4437),
|
||||
float3( 0.2627, 0.4518, 0.3704),float3(-0.4945, 0.3659, 0.2285),
|
||||
float3(-0.2550,-0.5311, 0.3230),float3(-0.4477, 0.0828,-0.5151),
|
||||
float3( 0.4682, 0.4531,-0.2644),float3(-0.1235,-0.0366, 0.7071),
|
||||
float3( 0.3545, 0.4559, 0.4536),float3(-0.1037,-0.2199,-0.7095),
|
||||
float3( 0.4269, 0.5299,-0.3510),float3( 0.7051,-0.1468,-0.3027),
|
||||
float3( 0.4590,-0.5669,-0.3208),float3( 0.2330, 0.1264, 0.7680),
|
||||
float3(-0.3954, 0.5619,-0.4622),float3( 0.5977,-0.5110, 0.3059),
|
||||
float3(-0.5800,-0.6306, 0.0672),float3(-0.2211,-0.0332,-0.8460),
|
||||
float3(-0.3808,-0.2238,-0.7734),float3(-0.5616, 0.6858,-0.1887),
|
||||
float3(-0.2995, 0.5165,-0.7024),float3( 0.5042,-0.0537, 0.7885),
|
||||
float3(-0.6477,-0.3691, 0.5938),float3(-0.3969, 0.8815, 0.0620),
|
||||
float3(-0.4300,-0.8814,-0.0852),float3(-0.1683, 0.9379, 0.3033)
|
||||
};
|
||||
/* For low quality DOF */
|
||||
static const float2 poisson32[32] =
|
||||
{
|
||||
|
|
@ -1312,107 +1165,6 @@ float depthlinear( float2 coord )
|
|||
return (2*zNear)/(zFar+zNear-z*(zFar-zNear));
|
||||
}
|
||||
|
||||
/*
|
||||
Thank you Boris for not providing access to a normal buffer. Guesswork using
|
||||
the depth buffer results in imprecise normals that aren't smoothed. Plus
|
||||
there is no way to get the normal data from textures either. Also, three
|
||||
texture fetches are needed instead of one (great!)
|
||||
*/
|
||||
float3 pseudonormal( float dep, float2 coord )
|
||||
{
|
||||
float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
|
||||
float2 ofs1 = float2(0,1.0/bresl.y);
|
||||
float2 ofs2 = float2(1.0/bresl.x,0);
|
||||
float dep1 = TextureDepth.SampleLevel(Sampler1,coord+ofs1,0).x;
|
||||
float dep2 = TextureDepth.SampleLevel(Sampler1,coord+ofs2,0).x;
|
||||
float3 p1 = float3(ofs1,dep1-dep);
|
||||
float3 p2 = float3(ofs2,dep2-dep);
|
||||
float3 normal = cross(p1,p2);
|
||||
normal.z = -normal.z;
|
||||
return normalize(normal);
|
||||
}
|
||||
|
||||
/* SSAO Prepass */
|
||||
float4 PS_SSAOPre( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
||||
{
|
||||
float2 coord = IN.txcoord.xy;
|
||||
/* get occlusion using single-step Ray Marching with 64 samples */
|
||||
float ssaofadepow = tod_ind(ssaofadepow);
|
||||
float ssaofademult = tod_ind(ssaofademult);
|
||||
if ( !ssaoenable ) return 0.0;
|
||||
float depth = TextureDepth.Sample(Sampler1,coord).x;
|
||||
float ldepth = depthlinear(coord);
|
||||
if ( depth >= cutoff*0.000001 ) return 1.0;
|
||||
float2 bresl;
|
||||
if ( (fixed.x > 0) && (fixed.y > 0) ) bresl = fixed;
|
||||
else bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
|
||||
float3 normal = pseudonormal(depth,coord);
|
||||
float2 nc = coord*(bresl/256.0);
|
||||
float2 bof = float2(1.0/bresl.x,1.0/bresl.y)*ssaoradius;
|
||||
float2 nc2 = TextureNoise3.SampleLevel(Sampler2,nc+48000.0*Timer.x
|
||||
*ssaonoise,0).xy;
|
||||
float3 rnormal = TextureNoise3.SampleLevel(Sampler2,nc2,0).xyz*2.0-1.0;
|
||||
rnormal = normalize(rnormal);
|
||||
float occ = 0.0;
|
||||
int i;
|
||||
float3 sample;
|
||||
float sdepth, so, delta;
|
||||
float sclamp = ssaoclamp/100000.0;
|
||||
float sclampmin = ssaoclampmin/100000.0;
|
||||
[unroll] for ( i=0; i<64; i++ )
|
||||
{
|
||||
sample = reflect(ssao_samples[i],rnormal);
|
||||
sample *= sign(dot(normal,sample));
|
||||
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);
|
||||
if ( (delta > sclampmin) && (delta < sclamp) )
|
||||
occ += 1.0-delta;
|
||||
}
|
||||
float uocc = saturate(occ/64.0);
|
||||
float fade = 1.0-depth;
|
||||
uocc *= saturate(pow(max(0,fade),ssaofadepow)*ssaofademult);
|
||||
uocc = saturate(pow(max(0,uocc),ssaopow)*ssaomult+ssaobump);
|
||||
return saturate(1.0-(uocc*ssaoblend));
|
||||
}
|
||||
/*
|
||||
The blur pass uses bilateral filtering to mostly preserve borders.
|
||||
An additional factor using difference of normals was tested, but the
|
||||
performance decrease was too much, so it's gone forever.
|
||||
*/
|
||||
float4 PS_SSAOBlur( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
||||
{
|
||||
float2 coord = IN.txcoord.xy;
|
||||
float4 res = TextureColor.Sample(Sampler1,coord);
|
||||
float mud = RenderTargetR16F.Sample(Sampler1,coord).x;
|
||||
if ( !ssaoenable ) return res;
|
||||
if ( !ssaobenable )
|
||||
{
|
||||
if ( ssaodebug ) return saturate(mud);
|
||||
return res*mud;
|
||||
}
|
||||
float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
|
||||
float2 bof = (1.0/bresl)*ssaobradius;
|
||||
float isd, sd, ds, sw, tw = 0;
|
||||
mud = 0.0;
|
||||
int i, j;
|
||||
isd = TextureDepth.Sample(Sampler1,coord).x;
|
||||
[unroll] for ( j=-7; j<=7; j++ ) [unroll] for ( i=-7; i<=7; i++ )
|
||||
{
|
||||
sd = TextureDepth.Sample(Sampler1,coord+float2(i,j)*bof).x;
|
||||
ds = 1.0/pow(1.0+abs(isd-sd),ssaobfact);
|
||||
sw = ds;
|
||||
sw *= gauss8[abs(i)]*gauss8[abs(j)];
|
||||
tw += sw;
|
||||
mud += sw*RenderTargetR16F.Sample(Sampler1,coord+float2(i,j)
|
||||
*bof).x;
|
||||
}
|
||||
mud /= tw;
|
||||
if ( ssaodebug ) return saturate(mud);
|
||||
return res*mud;
|
||||
}
|
||||
|
||||
/* precalculate DOF factors */
|
||||
float4 PS_DoFPrepass( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
||||
{
|
||||
|
|
@ -2026,15 +1778,7 @@ technique11 Prepass1
|
|||
SetPixelShader(CompileShader(ps_5_0,PS_DepthGrade()));
|
||||
}
|
||||
}
|
||||
technique11 Prepass2 <string RenderTarget="RenderTargetR16F";>
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
|
||||
SetPixelShader(CompileShader(ps_5_0,PS_SSAOPre()));
|
||||
}
|
||||
}
|
||||
technique11 Prepass3
|
||||
technique11 Prepass2
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
|
|
@ -2042,15 +1786,7 @@ technique11 Prepass3
|
|||
SetPixelShader(CompileShader(ps_5_0,PS_Distortion()));
|
||||
}
|
||||
}
|
||||
technique11 Prepass4
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
|
||||
SetPixelShader(CompileShader(ps_5_0,PS_SSAOBlur()));
|
||||
}
|
||||
}
|
||||
technique11 Prepass5 <string RenderTarget="RenderTargetR32F";>
|
||||
technique11 Prepass3 <string RenderTarget="RenderTargetR32F";>
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
|
|
@ -2058,7 +1794,7 @@ technique11 Prepass5 <string RenderTarget="RenderTargetR32F";>
|
|||
SetPixelShader(CompileShader(ps_5_0,PS_DoFPrepass()));
|
||||
}
|
||||
}
|
||||
technique11 Prepass6
|
||||
technique11 Prepass4
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
|
|
@ -2066,7 +1802,7 @@ technique11 Prepass6
|
|||
SetPixelShader(CompileShader(ps_5_0,PS_DoFBlur()));
|
||||
}
|
||||
}
|
||||
technique11 Prepass7
|
||||
technique11 Prepass5
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
|
|
@ -2074,7 +1810,7 @@ technique11 Prepass7
|
|||
SetPixelShader(CompileShader(ps_5_0,PS_DoFPostBlur()));
|
||||
}
|
||||
}
|
||||
technique11 Prepass8
|
||||
technique11 Prepass6
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
|
|
@ -2099,15 +1835,7 @@ technique11 PrepassB1
|
|||
SetPixelShader(CompileShader(ps_5_0,PS_DepthGrade()));
|
||||
}
|
||||
}
|
||||
technique11 PrepassB2 <string RenderTarget="RenderTargetR16F";>
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
|
||||
SetPixelShader(CompileShader(ps_5_0,PS_SSAOPre()));
|
||||
}
|
||||
}
|
||||
technique11 PrepassB3
|
||||
technique11 PrepassB2
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
|
|
@ -2115,15 +1843,7 @@ technique11 PrepassB3
|
|||
SetPixelShader(CompileShader(ps_5_0,PS_Distortion()));
|
||||
}
|
||||
}
|
||||
technique11 PrepassB4
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
|
||||
SetPixelShader(CompileShader(ps_5_0,PS_SSAOBlur()));
|
||||
}
|
||||
}
|
||||
technique11 PrepassB5 <string RenderTarget="RenderTargetR32F";>
|
||||
technique11 PrepassB3 <string RenderTarget="RenderTargetR32F";>
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
|
|
@ -2131,7 +1851,7 @@ technique11 PrepassB5 <string RenderTarget="RenderTargetR32F";>
|
|||
SetPixelShader(CompileShader(ps_5_0,PS_DoFPrepass()));
|
||||
}
|
||||
}
|
||||
technique11 PrepassB6
|
||||
technique11 PrepassB4
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
|
|
@ -2139,7 +1859,7 @@ technique11 PrepassB6
|
|||
SetPixelShader(CompileShader(ps_5_0,PS_DoFBorkeh()));
|
||||
}
|
||||
}
|
||||
technique11 PrepassB7
|
||||
technique11 PrepassB5
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
|
|
@ -2147,7 +1867,7 @@ technique11 PrepassB7
|
|||
SetPixelShader(CompileShader(ps_5_0,PS_DoFPostBlur()));
|
||||
}
|
||||
}
|
||||
technique11 PrepassB8
|
||||
technique11 PrepassB6
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1022,7 +1022,7 @@ float2 ScreenFrost( float2 coord )
|
|||
/*ofs *= max(0.0,coldfactor-warmfactor);*/
|
||||
float dist = distance(coord,float2(0.5,0.5))*2.0;
|
||||
ofs *= clamp(pow(dist,frostrpow)*frostrmult+frostrbump,0.0,1.0);
|
||||
return ofs;
|
||||
return coord+ofs;
|
||||
}
|
||||
|
||||
/* Old MariENB 0.x screen dirt filter, updated */
|
||||
|
|
@ -1049,6 +1049,7 @@ float4 PS_Draw( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
|||
if ( frostenable )
|
||||
{
|
||||
float2 ofs = ScreenFrost(coord);
|
||||
ofs -= coord;
|
||||
float2 ofr, ofg, ofb;
|
||||
ofr = ofs*(1.0-distcha*0.01);
|
||||
ofg = ofs;
|
||||
|
|
@ -1075,7 +1076,7 @@ float4 PS_Draw( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
|||
1.0)*frostblend;
|
||||
float todpow = max(0.0,todx_ind(frostfactor));
|
||||
dist *= todpow;
|
||||
/* Weathers not implemented in FO4 ENB as of 0.316 */
|
||||
/* Weathers not implemented in FO4 ENB as of 0.291 */
|
||||
/*dist *= max(0.0,coldfactor-warmfactor);*/
|
||||
res.rgb *= 1.0+bmp*dist;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,65 +34,65 @@ Grain Contrast=8.45
|
|||
Apply Grain Before Tone Mapping=true
|
||||
Enable Adaptation=true
|
||||
Tonemapping Method=3
|
||||
Tonemap Exposure Night=1.23
|
||||
Tonemap Exposure Day=1.320001
|
||||
Tonemap Exposure Interior=1.229999
|
||||
Tonemap Exposure Night=1.07
|
||||
Tonemap Exposure Day=1.140001
|
||||
Tonemap Exposure Interior=1.209999
|
||||
Tonemap Blend Night=1.0
|
||||
Tonemap Blend Day=1.0
|
||||
Tonemap Blend Interior=1.0
|
||||
Uncharted2 Shoulder Strength Night=0.21
|
||||
Uncharted2 Shoulder Strength Day=0.37
|
||||
Uncharted2 Shoulder Strength Interior=0.24
|
||||
Uncharted2 Linear Strength Night=1.26
|
||||
Uncharted2 Linear Strength Day=1.6
|
||||
Uncharted2 Linear Strength Interior=1.41
|
||||
Uncharted2 Linear Angle Night=0.72
|
||||
Uncharted2 Linear Angle Day=0.68
|
||||
Uncharted2 Linear Angle Interior=0.6
|
||||
Uncharted2 Toe Strength Night=1.19
|
||||
Uncharted2 Toe Strength Day=1.14
|
||||
Uncharted2 Toe Strength Interior=1.15
|
||||
Uncharted2 Toe Numerator Night=0.21
|
||||
Uncharted2 Toe Numerator Day=0.28
|
||||
Uncharted2 Toe Numerator Interior=0.23
|
||||
Uncharted2 Toe Denominator Night=1.35
|
||||
Uncharted2 Toe Denominator Day=1.32
|
||||
Uncharted2 Toe Denominator Interior=1.33
|
||||
Uncharted2 Linear White Night=20.299999
|
||||
Uncharted2 Linear White Day=24.139999
|
||||
Uncharted2 Linear White Interior=22.130001
|
||||
Uncharted2 Shoulder Strength Night=0.15
|
||||
Uncharted2 Shoulder Strength Day=0.2
|
||||
Uncharted2 Shoulder Strength Interior=0.16
|
||||
Uncharted2 Linear Strength Night=1.54
|
||||
Uncharted2 Linear Strength Day=1.59
|
||||
Uncharted2 Linear Strength Interior=1.55
|
||||
Uncharted2 Linear Angle Night=0.74
|
||||
Uncharted2 Linear Angle Day=0.77
|
||||
Uncharted2 Linear Angle Interior=0.67
|
||||
Uncharted2 Toe Strength Night=1.44
|
||||
Uncharted2 Toe Strength Day=1.25
|
||||
Uncharted2 Toe Strength Interior=1.19
|
||||
Uncharted2 Toe Numerator Night=4.21
|
||||
Uncharted2 Toe Numerator Day=4.28
|
||||
Uncharted2 Toe Numerator Interior=4.23
|
||||
Uncharted2 Toe Denominator Night=1.31
|
||||
Uncharted2 Toe Denominator Day=1.5
|
||||
Uncharted2 Toe Denominator Interior=1.42
|
||||
Uncharted2 Linear White Night=18.450001
|
||||
Uncharted2 Linear White Day=14.14
|
||||
Uncharted2 Linear White Interior=12.13
|
||||
Enable RGB Grading=true
|
||||
Grading Intensity Night=1.03, 0.98, 0.88
|
||||
Grading Intensity Day=1.04, 1, 0.94
|
||||
Grading Intensity Interior=0.96, 0.93, 1.02
|
||||
Grading Intensity Interior=0.98, 0.95, 0.94
|
||||
Grading Contrast Night=1.03, 0.99, 0.92
|
||||
Grading Contrast Day=1, 0.98, 0.93
|
||||
Grading Contrast Interior=0.94, 0.97, 1.02
|
||||
Grading Contrast Interior=0.99, 1, 0.98
|
||||
Enable Vibrance Grading=true
|
||||
Grading Color Night=-0.82, -0.39, -0.65
|
||||
Grading Color Day=-0.43, -0.12, -0.7
|
||||
Grading Color Interior=-0.61, -0.1, -0.43
|
||||
Grading Color Factor Night=-0.13
|
||||
Grading Color Factor Night=-0.05
|
||||
Grading Color Factor Day=-0.1
|
||||
Grading Color Factor Interior=-0.09
|
||||
Grading Color Factor Interior=-0.07
|
||||
Enable HSV Grading=true
|
||||
Grading Saturation Intensity Night=1.09
|
||||
Grading Saturation Intensity Day=1.13
|
||||
Grading Saturation Intensity Interior=1.12
|
||||
Grading Saturation Contrast Night=1.34
|
||||
Grading Saturation Contrast Day=1.28
|
||||
Grading Saturation Contrast Interior=1.13
|
||||
Grading Saturation Intensity Day=1.14
|
||||
Grading Saturation Intensity Interior=1.09
|
||||
Grading Saturation Contrast Night=1.11
|
||||
Grading Saturation Contrast Day=1.07
|
||||
Grading Saturation Contrast Interior=1.17
|
||||
Grading Value Intensity Night=0.85
|
||||
Grading Value Intensity Day=0.92
|
||||
Grading Value Intensity Interior=0.97
|
||||
Grading Value Contrast Night=1.21
|
||||
Grading Value Contrast Day=1.12
|
||||
Grading Value Contrast Interior=1.16
|
||||
Grading Value Intensity Day=0.87
|
||||
Grading Value Intensity Interior=0.87
|
||||
Grading Value Contrast Night=1.02
|
||||
Grading Value Contrast Day=1.07
|
||||
Grading Value Contrast Interior=1.08
|
||||
Colorize After HSV=true
|
||||
Enable LUT Grading=true
|
||||
LUT Blend Night=0.25
|
||||
LUT Blend Day=0.32
|
||||
LUT Blend Interior=0.39
|
||||
LUT Blend Night=0.58
|
||||
LUT Blend Day=0.7
|
||||
LUT Blend Interior=0.64
|
||||
Enable Technicolor=true
|
||||
Technicolor Blend=0.5
|
||||
Enable Vanilla Imagespace=true
|
||||
|
|
@ -106,7 +106,7 @@ Vanilla Contrast Blend=0.84
|
|||
Display Bloom=false
|
||||
Display Adaptation=false
|
||||
Enable Dirt=false
|
||||
Dirt Coord Factor=0.13
|
||||
Dirt Coord Factor=0.03
|
||||
Dirt Luminance Factor=0.0
|
||||
Dirt Coord Zoom=3.0
|
||||
Dirt Coord Zoom=1.63
|
||||
Dirt Luminance Zoom=1.0
|
||||
|
|
|
|||
|
|
@ -6,35 +6,6 @@
|
|||
*/
|
||||
#include "menbglobaldefs.fx"
|
||||
|
||||
/* Paint filter */
|
||||
string str_paint = "Painting Filter";
|
||||
bool oilenable
|
||||
<
|
||||
string UIName = "Enable Oil Filter";
|
||||
string UIWidget = "Checkbox";
|
||||
> = {false};
|
||||
/* legacy FXAA filter */
|
||||
string str_fxaa = "FXAA";
|
||||
bool fxaaenable
|
||||
<
|
||||
string UIName = "Enable FXAA";
|
||||
string UIWidget = "Checkbox";
|
||||
> = {false};
|
||||
float fxaaspanmax
|
||||
<
|
||||
string UIName = "FXAA Span Max";
|
||||
string UIWidget = "Checkbox";
|
||||
> = {4.0};
|
||||
float fxaareducemul
|
||||
<
|
||||
string UIName = "FXAA Reduce Mul";
|
||||
string UIWidget = "Checkbox";
|
||||
> = {16.0};
|
||||
float fxaareducemin
|
||||
<
|
||||
string UIName = "FXAA Reduce Min";
|
||||
string UIWidget = "Checkbox";
|
||||
> = {128.0};
|
||||
/* new SMAA filter */
|
||||
string str_smaa = "SMAA";
|
||||
bool smaaenable
|
||||
|
|
@ -118,69 +89,6 @@ float lsharpblend
|
|||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {1.2};
|
||||
/* lens curve with chromatic aberration */
|
||||
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};
|
||||
/* BlurSharpShift, some people are obsessed with this nonsense */
|
||||
string str_bss = "BlurSharpShift";
|
||||
bool bssblurenable
|
||||
<
|
||||
string UIName = "Enable Blur";
|
||||
string UIWidget = "Checkbox";
|
||||
> = {false};
|
||||
float bssblurradius
|
||||
<
|
||||
string UIName = "Blur Sampling Range";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {0.25};
|
||||
bool bsssharpenable
|
||||
<
|
||||
string UIName = "Enable Sharp";
|
||||
string UIWidget = "Checkbox";
|
||||
> = {false};
|
||||
float bsssharpradius
|
||||
<
|
||||
string UIName = "Sharp Sampling Range";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {1.0};
|
||||
float bsssharpamount
|
||||
<
|
||||
string UIName = "Sharpening Amount";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {6.0};
|
||||
bool bssshiftenable
|
||||
<
|
||||
string UIName = "Enable Shift";
|
||||
string UIWidget = "Checkbox";
|
||||
> = {false};
|
||||
float bssshiftradius
|
||||
<
|
||||
string UIName = "Shift Sampling Range";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {0.75};
|
||||
/* very cinematic black bars */
|
||||
string str_box = "Black Bars";
|
||||
bool boxenable
|
||||
|
|
@ -581,101 +489,6 @@ float4 PS_ChromaKey( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
|||
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;
|
||||
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;
|
||||
float3 idist = float3(TextureColor.Sample(SamplerB,rcoord).r,
|
||||
TextureColor.Sample(SamplerB,gcoord).g,
|
||||
TextureColor.Sample(SamplerB,bcoord).b);
|
||||
res.rgb = idist.rgb;
|
||||
return res;
|
||||
}
|
||||
|
||||
/* Why am I doing this */
|
||||
float4 PS_Blur( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
||||
{
|
||||
float2 coord = IN.txcoord.xy;
|
||||
float4 res = TextureColor.Sample(Sampler,coord);
|
||||
if ( !bssblurenable ) return res;
|
||||
float2 ofs[16] =
|
||||
{
|
||||
float2(1.0,1.0), float2(-1.0,-1.0),
|
||||
float2(-1.0,1.0), float2(1.0,-1.0),
|
||||
|
||||
float2(1.0,0.0), float2(-1.0,0.0),
|
||||
float2(0.0,1.0), float2(0.0,-1.0),
|
||||
|
||||
float2(1.41,0.0), float2(-1.41,0.0),
|
||||
float2(0.0,1.41), float2(0.0,-1.41),
|
||||
|
||||
float2(1.41,1.41), float2(-1.41,-1.41),
|
||||
float2(-1.41,1.41), float2(1.41,-1.41)
|
||||
};
|
||||
float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
|
||||
float2 bof = (1.0/bresl)*bssblurradius;
|
||||
int i;
|
||||
[unroll] for ( i=0; i<16; i++ )
|
||||
res += TextureColor.Sample(Sampler,coord+ofs[i]*bof);
|
||||
res /= 17.0;
|
||||
res.a = 1.0;
|
||||
return res;
|
||||
}
|
||||
float4 PS_Sharp( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
||||
{
|
||||
float2 coord = IN.txcoord.xy;
|
||||
float4 res = TextureColor.Sample(Sampler,coord);
|
||||
if ( !bsssharpenable ) return res;
|
||||
float2 ofs[8] =
|
||||
{
|
||||
float2(1.0,1.0), float2(-1.0,-1.0),
|
||||
float2(-1.0,1.0), float2(1.0,-1.0),
|
||||
|
||||
float2(1.41,1.41), float2(-1.41,-1.41),
|
||||
float2(-1.41,1.41), float2(1.41,-1.41)
|
||||
};
|
||||
float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
|
||||
float2 bof = (1.0/bresl)*bsssharpradius;
|
||||
float4 tcol = res;
|
||||
int i;
|
||||
[unroll] for ( i=0; i<8; i++ )
|
||||
tcol += TextureColor.Sample(Sampler,coord+ofs[i]*bof);
|
||||
tcol /= 9.0;
|
||||
float4 orig = res;
|
||||
res = orig*(1.0+dot(orig.rgb-tcol.rgb,0.333333)*bsssharpamount);
|
||||
float rg = clamp(pow(orig.b,3.0),0.0,1.0);
|
||||
res = lerp(res,orig,rg);
|
||||
res.a = 1.0;
|
||||
return res;
|
||||
}
|
||||
float4 PS_Shift( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
||||
{
|
||||
float2 coord = IN.txcoord.xy;
|
||||
float4 res = TextureColor.Sample(Sampler,coord);
|
||||
if ( !bssshiftenable ) return res;
|
||||
float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
|
||||
float2 bof = (1.0/bresl)*bssshiftradius;
|
||||
res.g = TextureColor.Sample(Sampler,coord).g;
|
||||
res.r = TextureColor.Sample(Sampler,coord+float2(0,-bof.y)).r;
|
||||
res.b = TextureColor.Sample(Sampler,coord+float2(0,bof.y)).b;
|
||||
res.a = 1.0;
|
||||
return res;
|
||||
}
|
||||
|
||||
/* That "luma sharpen" thingy, added just because someone might want it */
|
||||
float4 PS_LumaSharp( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
||||
{
|
||||
|
|
@ -754,132 +567,6 @@ float4 PS_Vignette( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
|||
return clamp(res,0.0,1.0);
|
||||
}
|
||||
|
||||
/* paint filter */
|
||||
float4 PS_Kuwahara( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
||||
{
|
||||
float2 coord = IN.txcoord.xy;
|
||||
float4 res = TextureColor.Sample(Sampler,coord);
|
||||
if ( !oilenable ) return res;
|
||||
float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
|
||||
float2 bof = 1.0/bresl;
|
||||
float n = 16.0;
|
||||
float3 m[4] =
|
||||
{
|
||||
float3(0,0,0),float3(0,0,0),float3(0,0,0),float3(0,0,0)
|
||||
}, s[4] =
|
||||
{
|
||||
float3(0,0,0),float3(0,0,0),float3(0,0,0),float3(0,0,0)
|
||||
}, c;
|
||||
int i, j;
|
||||
[loop] for ( i=-3; i<=0; i++ ) [loop] for ( j=-3; j<=0; j++ )
|
||||
{
|
||||
c = TextureColor.Sample(Sampler,coord+float2(i,j)*bof).rgb;
|
||||
m[0] += c;
|
||||
s[0] += c*c;
|
||||
}
|
||||
[loop] for ( i=-3; i<=0; i++ ) [loop] for ( j=0; j<=3; j++ )
|
||||
{
|
||||
c = TextureColor.Sample(Sampler,coord+float2(i,j)*bof).rgb;
|
||||
m[1] += c;
|
||||
s[1] += c*c;
|
||||
}
|
||||
[loop] for ( i=0; i<=3; i++ ) [loop] for ( j=-3; j<=0; j++ )
|
||||
{
|
||||
c = TextureColor.Sample(Sampler,coord+float2(i,j)*bof).rgb;
|
||||
m[2] += c;
|
||||
s[2] += c*c;
|
||||
}
|
||||
[loop] for ( i=0; i<=3; i++ ) [loop] for ( j=0; j<=3; j++ )
|
||||
{
|
||||
c = TextureColor.Sample(Sampler,coord+float2(i,j)*bof).rgb;
|
||||
m[3] += c;
|
||||
s[3] += c*c;
|
||||
}
|
||||
float min_sigma2 = 1e+2, sigma2;
|
||||
[unroll] for ( i=0; i<4; i++ )
|
||||
{
|
||||
m[i] /= n;
|
||||
s[i] = abs(s[i]/n-m[i]*m[i]);
|
||||
sigma2 = s[i].r+s[i].g+s[i].b;
|
||||
if ( sigma2 >= min_sigma2 ) continue;
|
||||
min_sigma2 = sigma2;
|
||||
res.rgb = m[i];
|
||||
}
|
||||
return res;
|
||||
}
|
||||
/* remove speckles from kuwahara filter */
|
||||
float4 PS_Median( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
||||
{
|
||||
float2 coord = IN.txcoord.xy;
|
||||
float4 res = TextureColor.Sample(Sampler,coord);
|
||||
if ( !oilenable ) return res;
|
||||
float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
|
||||
float2 bof = 1.0/bresl;
|
||||
float3 m1, m2, m3;
|
||||
float3 a, b, c;
|
||||
a = TextureColor.Sample(Sampler,coord+float2(-1,-1)*bof).rgb;
|
||||
b = TextureColor.Sample(Sampler,coord+float2( 0,-1)*bof).rgb;
|
||||
c = TextureColor.Sample(Sampler,coord+float2( 1,-1)*bof).rgb;
|
||||
m1 = (luminance(a)<luminance(b))?((luminance(b)<luminance(c))?b
|
||||
:max(a,c)):((luminance(a)<luminance(c))?a:max(b,c));
|
||||
a = TextureColor.Sample(Sampler,coord+float2(-1, 0)*bof).rgb;
|
||||
b = TextureColor.Sample(Sampler,coord+float2( 0, 0)*bof).rgb;
|
||||
c = TextureColor.Sample(Sampler,coord+float2( 1, 0)*bof).rgb;
|
||||
m2 = (luminance(a)<luminance(b))?((luminance(b)<luminance(c))?b
|
||||
:max(a,c)):((luminance(a)<luminance(c))?a:max(b,c));
|
||||
a = TextureColor.Sample(Sampler,coord+float2(-1, 1)*bof).rgb;
|
||||
b = TextureColor.Sample(Sampler,coord+float2( 0, 1)*bof).rgb;
|
||||
c = TextureColor.Sample(Sampler,coord+float2( 1, 1)*bof).rgb;
|
||||
m3 = (luminance(a)<luminance(b))?((luminance(b)<luminance(c))?b
|
||||
:max(a,c)):((luminance(a)<luminance(c))?a:max(b,c));
|
||||
res.rgb = (luminance(m1)<luminance(m2))?((luminance(m2)<luminance(m3))
|
||||
?m2:max(m1,m3)):((luminance(m1)<luminance(m3))?m1:max(m2,m3));
|
||||
return res;
|
||||
}
|
||||
|
||||
/* Legacy MariENB FXAA, useful for further smoothing the paint filter */
|
||||
float4 PS_FXAA( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
|
||||
{
|
||||
float2 coord = float2(IN.txcoord.x,IN.txcoord.y);
|
||||
float4 res = TextureColor.Sample(Sampler,coord);
|
||||
if ( !fxaaenable ) return res;
|
||||
float fxaareducemul_ = 1.0/max(abs(fxaareducemul),1.0);
|
||||
float fxaareducemin_ = 1.0/max(abs(fxaareducemin),1.0);
|
||||
float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
|
||||
float2 bof = float2(1.0/bresl.x,1.0/bresl.y);
|
||||
float3 rgbNW = TextureColor.Sample(Sampler,coord+float2(-1,-1)*bof).rgb;
|
||||
float3 rgbNE = TextureColor.Sample(Sampler,coord+float2(1,-1)*bof).rgb;
|
||||
float3 rgbSW = TextureColor.Sample(Sampler,coord+float2(-1,1)*bof).rgb;
|
||||
float3 rgbSE = TextureColor.Sample(Sampler,coord+float2(1,1)*bof).rgb;
|
||||
float3 rgbM = TextureColor.Sample(Sampler,coord).rgb;
|
||||
float3 luma = float3(0.299,0.587,0.114);
|
||||
float lumaNW = dot(rgbNW,luma);
|
||||
float lumaNE = dot(rgbNE,luma);
|
||||
float lumaSW = dot(rgbSW,luma);
|
||||
float lumaSE = dot(rgbSE,luma);
|
||||
float lumaM = dot(rgbM,luma);
|
||||
float lumaMin = min(lumaM,min(min(lumaNW,lumaNE),min(lumaSW,lumaSE)));
|
||||
float lumaMax = max(lumaM,max(max(lumaNW,lumaNE),max(lumaSW,lumaSE)));
|
||||
float2 dir = float2(-((lumaNW+lumaNE)-(lumaSW+lumaSE)),((lumaNW+lumaSW)
|
||||
-(lumaNE+lumaSE)));
|
||||
float dirReduce = max((lumaNW+lumaNE+lumaSW+lumaSE)*(0.25
|
||||
*fxaareducemul_),fxaareducemin_);
|
||||
float rcpDirMin = 1.0/(min(abs(dir.x),abs(dir.y))+dirReduce);
|
||||
dir = min(float2(fxaaspanmax,fxaaspanmax),max(float2(-fxaaspanmax,
|
||||
-fxaaspanmax),dir*rcpDirMin))/bresl;
|
||||
float3 rgbA = (1.0/2.0)*(TextureColor.Sample(Sampler,coord+dir
|
||||
*(1.0/3.0-0.5)).rgb+TextureColor.Sample(Sampler,coord+dir
|
||||
*(2.0/3.0-0.5)).rgb);
|
||||
float3 rgbB = rgbA*(1.0/2.0)+(1.0/4.0)*(TextureColor.Sample(Sampler,
|
||||
coord+dir*(0.0/3.0-0.5)).rgb+TextureColor.Sample(Sampler,coord
|
||||
+dir*(3.0/3.0-0.5)).rgb);
|
||||
float lumaB = dot(rgbB,luma);
|
||||
if ( (lumaB < lumaMin) || (lumaB > lumaMax) ) res.rgb = rgbA;
|
||||
else res.rgb = rgbB;
|
||||
res.a = 1.0;
|
||||
return res;
|
||||
}
|
||||
|
||||
/* Colour matrix */
|
||||
float3 ColorMatrix( float3 res )
|
||||
{
|
||||
|
|
@ -1116,23 +803,7 @@ technique11 ExtraFilters <string UIName="MariENB";>
|
|||
SetPixelShader(CompileShader(ps_5_0,PS_Append()));
|
||||
}
|
||||
}
|
||||
technique11 ExtraFilters1
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
SetVertexShader(CompileShader(vs_5_0,VS_PostProcess()));
|
||||
SetPixelShader(CompileShader(ps_5_0,PS_Kuwahara()));
|
||||
}
|
||||
}
|
||||
technique11 ExtraFilters2
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
SetVertexShader(CompileShader(vs_5_0,VS_PostProcess()));
|
||||
SetPixelShader(CompileShader(ps_5_0,PS_Median()));
|
||||
}
|
||||
}
|
||||
technique11 ExtraFilters3 <string RenderTarget="RenderTargetRGBA32";>
|
||||
technique11 ExtraFilters1 <string RenderTarget="RenderTargetRGBA32";>
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
|
|
@ -1142,7 +813,7 @@ technique11 ExtraFilters3 <string RenderTarget="RenderTargetRGBA32";>
|
|||
SetBlendState(NoBlending,float4(0.0,0.0,0.0,0.0),0xFFFFFFFF);
|
||||
}
|
||||
}
|
||||
technique11 ExtraFilters4 <string RenderTarget="RenderTargetRGBA64";>
|
||||
technique11 ExtraFilters2 <string RenderTarget="RenderTargetRGBA64";>
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
|
|
@ -1152,7 +823,7 @@ technique11 ExtraFilters4 <string RenderTarget="RenderTargetRGBA64";>
|
|||
SetBlendState(NoBlending, float4(0.0,0.0,0.0,0.0),0xFFFFFFFF);
|
||||
}
|
||||
}
|
||||
technique11 ExtraFilters5
|
||||
technique11 ExtraFilters3
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
|
|
@ -1160,7 +831,7 @@ technique11 ExtraFilters5
|
|||
SetPixelShader(CompileShader(ps_5_0,PS_ToSRGB()));
|
||||
}
|
||||
}
|
||||
technique11 ExtraFilters6
|
||||
technique11 ExtraFilters4
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
|
|
@ -1168,15 +839,7 @@ technique11 ExtraFilters6
|
|||
SetPixelShader(CompileShader(ps_5_0,SMAANeighborhoodBlendingWrapPS()));
|
||||
}
|
||||
}
|
||||
technique11 ExtraFilters7
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
SetVertexShader(CompileShader(vs_5_0,VS_PostProcess()));
|
||||
SetPixelShader(CompileShader(ps_5_0,PS_FXAA()));
|
||||
}
|
||||
}
|
||||
technique11 ExtraFilters8
|
||||
technique11 ExtraFilters5
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
|
|
@ -1184,31 +847,7 @@ technique11 ExtraFilters8
|
|||
SetPixelShader(CompileShader(ps_5_0,PS_LumaSharp()));
|
||||
}
|
||||
}
|
||||
technique11 ExtraFilters9
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
SetVertexShader(CompileShader(vs_5_0,VS_PostProcess()));
|
||||
SetPixelShader(CompileShader(ps_5_0,PS_Blur()));
|
||||
}
|
||||
}
|
||||
technique11 ExtraFilters10
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
SetVertexShader(CompileShader(vs_5_0,VS_PostProcess()));
|
||||
SetPixelShader(CompileShader(ps_5_0,PS_Sharp()));
|
||||
}
|
||||
}
|
||||
technique11 ExtraFilters11
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
SetVertexShader(CompileShader(vs_5_0,VS_PostProcess()));
|
||||
SetPixelShader(CompileShader(ps_5_0,PS_Shift()));
|
||||
}
|
||||
}
|
||||
technique11 ExtraFilters12
|
||||
technique11 ExtraFilters6
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
|
|
@ -1216,7 +855,7 @@ technique11 ExtraFilters12
|
|||
SetPixelShader(CompileShader(ps_5_0,PS_ChromaKey()));
|
||||
}
|
||||
}
|
||||
technique11 ExtraFilters13
|
||||
technique11 ExtraFilters7
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
|
|
@ -1224,15 +863,7 @@ technique11 ExtraFilters13
|
|||
SetPixelShader(CompileShader(ps_5_0,PS_Vignette()));
|
||||
}
|
||||
}
|
||||
technique11 ExtraFilters14
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
SetVertexShader(CompileShader(vs_5_0,VS_PostProcess()));
|
||||
SetPixelShader(CompileShader(ps_5_0,PS_Curvature()));
|
||||
}
|
||||
}
|
||||
technique11 ExtraFilters15
|
||||
technique11 ExtraFilters8
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
|
|
@ -1240,3 +871,5 @@ technique11 ExtraFilters15
|
|||
SetPixelShader(CompileShader(ps_5_0,PS_Cinematic()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in a new issue