1
Fork 0

MariENB FO4 3.0.1a

This commit is contained in:
Marisa the Magician 2019-04-07 17:46:57 +02:00
commit 4b86fb142c
7 changed files with 286 additions and 83 deletions

View file

@ -267,6 +267,11 @@ float bloommix6
string UIName = "Bloom Pass 6 Blend";
string UIWidget = "Spinner";
> = {1.0};
float bloommixs
<
string UIName = "Bloom Single Pass Blend";
string UIWidget = "Spinner";
> = {1.0};
string str_bloomdirt = "Lens Dirt";
bool dirtenable
<
@ -303,6 +308,11 @@ 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 ldirtpow
<
string UIName = "Dirt Contrast";
@ -497,11 +507,8 @@ float4 PS_Downsize( VS_OUTPUT_POST IN, float4 v0 : SV_Position0,
as it just makes it so bright areas ONLY at the very middle of the screen
produces sharp bright lines extending towards the sides.
*/
float4 PS_Anamorphic( VS_OUTPUT_POST IN, float4 v0 : SV_Position0,
uniform Texture2D intex, uniform float insz ) : SV_Target
float4 Anamorphic( float2 coord, Texture2D intex, float insz )
{
float2 coord = IN.txcoord0.xy;
if ( !alfenable ) return intex.Sample(Sampler,coord);
float4 res = float4(0.0,0.0,0.0,0.0),
base = RenderTargetRGBA64F.Sample(Sampler,coord);
int i;
@ -522,11 +529,10 @@ float4 PS_Anamorphic( VS_OUTPUT_POST IN, float4 v0 : SV_Position0,
float fbl = tod_ind(fbl);
float fpw = tod_ind(fpw);
res.rgb = pow(res.rgb,fpw)*fbl;
res.a = 1.0;
return res;
}
/* Horizontal blur step goes here */
/* blur step goes here */
float4 PS_HorizontalBlur( VS_OUTPUT_POST IN, float4 v0 : SV_Position0,
uniform Texture2D intex, uniform float insz ) : SV_Target
{
@ -542,7 +548,7 @@ float4 PS_HorizontalBlur( VS_OUTPUT_POST IN, float4 v0 : SV_Position0,
sum += ((pp.x>=0.0)&&(pp.x<1.0))?gauss8[abs(i)]:0.0;
}
res *= 1.0/sum;
if ( alfenable ) res += TextureColor.Sample(Sampler,coord);
if ( alfenable ) res += Anamorphic(coord,intex,insz);
res.a = 1.0;
return res;
}
@ -562,8 +568,8 @@ float4 PS_VerticalBlur( VS_OUTPUT_POST IN, float4 v0 : SV_Position0,
[unroll] for ( i=-7; i<=7; i++ )
{
pp = coord+float2(0.0,i*bloomradiusy)/insz;
res += gauss8[abs(i)]*TextureColor.Sample(Sampler,pp);
sum += ((pp.x>=0.0)&&(pp.x<1.0))?gauss8[abs(i)]:0.0;
res += gauss8[abs(i)]*intex.Sample(Sampler,pp);
sum += ((pp.y>=0.0)&&(pp.y<1.0))?gauss8[abs(i)]:0.0;
}
res *= 1.0/sum;
float3 blu = tod_ind(blu);
@ -578,17 +584,22 @@ float4 PS_VerticalBlur( VS_OUTPUT_POST IN, float4 v0 : SV_Position0,
}
/* end pass, mix it all up */
float4 PS_PostPass( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
float4 PS_PostPass( VS_OUTPUT_POST IN, float4 v0 : SV_Position0,
uniform bool simple) : SV_Target
{
float2 coord = IN.txcoord0.xy;
float4 res = float4(0.0,0.0,0.0,0.0);
res += bloommix1*RenderTarget1024.Sample(Sampler,coord);
res += bloommix2*RenderTarget512.Sample(Sampler,coord);
res += bloommix3*RenderTarget256.Sample(Sampler,coord);
res += bloommix4*RenderTarget128.Sample(Sampler,coord);
res += bloommix5*RenderTarget64.Sample(Sampler,coord);
res += bloommix6*RenderTarget32.Sample(Sampler,coord);
res.rgb /= 6.0;
if ( simple ) res += bloommixs*RenderTarget32.Sample(Sampler,coord);
else
{
res += bloommix1*RenderTarget1024.Sample(Sampler,coord);
res += bloommix2*RenderTarget512.Sample(Sampler,coord);
res += bloommix3*RenderTarget256.Sample(Sampler,coord);
res += bloommix4*RenderTarget128.Sample(Sampler,coord);
res += bloommix5*RenderTarget64.Sample(Sampler,coord);
res += bloommix6*RenderTarget32.Sample(Sampler,coord);
res.rgb /= 6.0;
}
res.rgb = clamp(res.rgb,0.0,32768.0);
res.a = 1.0;
if ( !dirtenable ) return res;
@ -599,13 +610,17 @@ float4 PS_PostPass( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
ccoord.y = (coord.y-0.5)*ScreenSize.w+0.5;
#endif
float4 crap = TextureLens.Sample(SamplerLens,ccoord);
mud += dirtmix1*RenderTarget1024.Sample(Sampler,coord);
mud += dirtmix2*RenderTarget512.Sample(Sampler,coord);
mud += dirtmix3*RenderTarget256.Sample(Sampler,coord);
mud += dirtmix4*RenderTarget128.Sample(Sampler,coord);
mud += dirtmix5*RenderTarget64.Sample(Sampler,coord);
mud += dirtmix6*RenderTarget32.Sample(Sampler,coord);
mud.rgb /= 6.0;
if ( simple ) mud += dirtmixs*RenderTarget32.Sample(Sampler,coord);
else
{
mud += dirtmix1*RenderTarget1024.Sample(Sampler,coord);
mud += dirtmix2*RenderTarget512.Sample(Sampler,coord);
mud += dirtmix3*RenderTarget256.Sample(Sampler,coord);
mud += dirtmix4*RenderTarget128.Sample(Sampler,coord);
mud += dirtmix5*RenderTarget64.Sample(Sampler,coord);
mud += dirtmix6*RenderTarget32.Sample(Sampler,coord);
mud.rgb /= 6.0;
}
mud.rgb = clamp(mud.rgb,0.0,32768.0);
float mudmax = luminance(mud.rgb);
float mudn = max(mudmax/(1.0+mudmax),0.0);
@ -616,7 +631,91 @@ float4 PS_PostPass( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
return res;
}
technique11 BloomPass <string UIName="MariENB Bloom"; string RenderTarget="RenderTargetRGBA64F";>
technique11 BloomSimplePass <string UIName="MariENB Simple Bloom"; string RenderTarget="RenderTargetRGBA64F";>
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_PrePass()));
}
}
technique11 BloomSimplePass1 <string RenderTarget="RenderTarget1024";>
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_Downsize(RenderTargetRGBA64F,0.0)));
}
}
technique11 BloomSimplePass2 <string RenderTarget="RenderTarget512";>
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_Downsize(RenderTarget1024,1024.0)));
}
}
technique11 BloomSimplePass3 <string RenderTarget="RenderTarget256";>
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_Downsize(RenderTarget512,512.0)));
}
}
technique11 BloomSimplePass4 <string RenderTarget="RenderTarget128";>
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_Downsize(RenderTarget256,256.0)));
}
}
technique11 BloomSimplePass5 <string RenderTarget="RenderTarget64";>
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_Downsize(RenderTarget128,128.0)));
}
}
technique11 BloomSimplePass6 <string RenderTarget="RenderTarget32";>
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_Downsize(RenderTarget64,64.0)));
}
}
technique11 BloomSimplePass7
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_HorizontalBlur(RenderTarget32,32.0)));
}
}
technique11 BloomSimplePass8 <string RenderTarget="RenderTarget32";>
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_VerticalBlur(TextureColor,32.0,5.0)));
}
}
technique11 BloomSimplePass9
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_PostPass(true)));
}
}
technique11 BloomPass <string UIName="MariENB Multi Bloom"; string RenderTarget="RenderTargetRGBA64F";>
{
pass p0
{
@ -675,14 +774,6 @@ technique11 BloomPass6 <string RenderTarget="RenderTarget32";>
}
technique11 BloomPass7
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_Anamorphic(RenderTarget1024,1024.0)));
}
}
technique11 BloomPass8
{
pass p0
{
@ -690,24 +781,16 @@ technique11 BloomPass8
SetPixelShader(CompileShader(ps_5_0,PS_HorizontalBlur(RenderTarget1024,1024.0)));
}
}
technique11 BloomPass9 <string RenderTarget="RenderTarget1024";>
technique11 BloomPass8 <string RenderTarget="RenderTarget1024";>
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_VerticalBlur(RenderTarget1024,1024.0,0.0)));
SetPixelShader(CompileShader(ps_5_0,PS_VerticalBlur(TextureColor,1024.0,0.0)));
}
}
technique11 BloomPass10
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_Anamorphic(RenderTarget512,512.0)));
}
}
technique11 BloomPass11
technique11 BloomPass9
{
pass p0
{
@ -715,12 +798,29 @@ technique11 BloomPass11
SetPixelShader(CompileShader(ps_5_0,PS_HorizontalBlur(RenderTarget512,512.0)));
}
}
technique11 BloomPass12 <string RenderTarget="RenderTarget512";>
technique11 BloomPass10 <string RenderTarget="RenderTarget512";>
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_VerticalBlur(RenderTarget512,512.0,1.0)));
SetPixelShader(CompileShader(ps_5_0,PS_VerticalBlur(TextureColor,512.0,1.0)));
}
}
technique11 BloomPass11
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_HorizontalBlur(RenderTarget256,256.0)));
}
}
technique11 BloomPass12 <string RenderTarget="RenderTarget256";>
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_VerticalBlur(TextureColor,256.0,2.0)));
}
}
@ -729,48 +829,49 @@ technique11 BloomPass13
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_Anamorphic(RenderTarget256,256.0)));
SetPixelShader(CompileShader(ps_5_0,PS_HorizontalBlur(RenderTarget128,128.0)));
}
}
technique11 BloomPass14
technique11 BloomPass14 <string RenderTarget="RenderTarget128";>
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_HorizontalBlur(RenderTarget256,256.0)));
}
}
technique11 BloomPass15 <string RenderTarget="RenderTarget256";>
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_VerticalBlur(RenderTarget256,256.0,2.0)));
SetPixelShader(CompileShader(ps_5_0,PS_VerticalBlur(TextureColor,128.0,3.0)));
}
}
technique11 BloomPass16
technique11 BloomPass15
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_Anamorphic(RenderTarget128,128.0)));
SetPixelShader(CompileShader(ps_5_0,PS_HorizontalBlur(RenderTarget64,64.0)));
}
}
technique11 BloomPass16 <string RenderTarget="RenderTarget64";>
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_VerticalBlur(TextureColor,64.0,4.0)));
}
}
technique11 BloomPass17
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_HorizontalBlur(RenderTarget128,128.0)));
SetPixelShader(CompileShader(ps_5_0,PS_HorizontalBlur(RenderTarget32,32.0)));
}
}
technique11 BloomPass18 <string RenderTarget="RenderTarget128";>
technique11 BloomPass18 <string RenderTarget="RenderTarget32";>
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_VerticalBlur(RenderTarget128,128.0,3.0)));
SetPixelShader(CompileShader(ps_5_0,PS_VerticalBlur(TextureColor,32.0,5.0)));
}
}
@ -779,56 +880,6 @@ technique11 BloomPass19
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_Anamorphic(RenderTarget64,64.0)));
}
}
technique11 BloomPass20
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_HorizontalBlur(RenderTarget64,64.0)));
}
}
technique11 BloomPass21 <string RenderTarget="RenderTarget64";>
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_VerticalBlur(RenderTarget64,64.0,4.0)));
}
}
technique11 BloomPass22
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_Anamorphic(RenderTarget32,32.0)));
}
}
technique11 BloomPass23
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_HorizontalBlur(RenderTarget32,32.0)));
}
}
technique11 BloomPass24 <string RenderTarget="RenderTarget32";>
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_VerticalBlur(RenderTarget32,32.0,5.0)));
}
}
technique11 BloomPass25
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_PostPass()));
SetPixelShader(CompileShader(ps_5_0,PS_PostPass(false)));
}
}

View file

@ -97,3 +97,5 @@ Dirt Contrast=0.85
Dirt Factor=2.33
Bloom Blur Radius X=1.92
Bloom Blur Radius Y=1.08
Bloom Single Pass Blend=1.28
Dirt Single Pass Blend=1.05

View file

@ -565,6 +565,17 @@ bool dofdisable
string UIName = "Disable DOF";
string UIWidget = "Checkbox";
> = {false};
float dofbfact
<
string UIName = "DOF Bilateral Factor";
string UIWidget = "Spinner";
> = {20.0};
float dofbradius
<
string UIName = "DOF Bilateral Radius";
string UIWidget = "Spinner";
float UIMin = 0.0;
> = {1.0};
float dofpradius
<
string UIName = "DOF Gather Blur Radius";
@ -1388,6 +1399,64 @@ float4 PS_DoFBlur( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
else return TextureColor.Sample(Sampler1,coord);
}
/* simple gaussian / bilateral blur */
float4 PS_DoFBlurH( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
{
float2 coord = IN.txcoord.xy;
if ( dofdisable ) return TextureColor.Sample(Sampler1,coord);
float dfc = RenderTargetR32F.Sample(Sampler1,coord).x;
if ( dofdebug ) return TextureDepth.Sample(Sampler1,coord).x;
if ( dfcdebug ) return dfc;
float bresl = (fixed.x>0)?fixed.x:ScreenSize.x;
float bof = (1.0/bresl)*dofbradius;
float4 res = float4(0,0,0,0);
if ( dfc <= dofminblur ) return TextureColor.Sample(Sampler1,coord);
int i;
float isd, sd, ds, sw, tw = 0;
isd = dfc;
[unroll] for ( i=-7; i<=7; i++ )
{
sd = RenderTargetR32F.Sample(Sampler1,coord+float2(i,0)*bof
*dfc).x;
ds = abs(isd-sd)*dofbfact+0.5;
sw = 1.0/(ds+1.0);
sw *= gauss8[abs(i)];
tw += sw;
res += sw*TextureColor.Sample(Sampler1,coord+float2(i,0)*bof
*dfc);
}
res /= tw;
return res;
}
float4 PS_DoFBlurV( VS_OUTPUT_POST IN, float4 v0 : SV_Position0 ) : SV_Target
{
float2 coord = IN.txcoord.xy;
if ( dofdisable ) return TextureColor.Sample(Sampler1,coord);
float dfc = RenderTargetR32F.Sample(Sampler1,coord).x;
if ( dofdebug ) return TextureDepth.Sample(Sampler1,coord).x;
if ( dfcdebug ) return dfc;
float bresl = (fixed.y>0)?fixed.y:(ScreenSize.x*ScreenSize.w);
float bof = (1.0/bresl)*dofbradius;
float4 res = float4(0,0,0,0);
if ( dfc <= dofminblur ) return TextureColor.Sample(Sampler1,coord);
int i;
float isd, sd, ds, sw, tw = 0;
isd = dfc;
[unroll] for ( i=-7; i<=7; i++ )
{
sd = RenderTargetR32F.Sample(Sampler1,coord+float2(0,i)*bof
*dfc).x;
ds = abs(isd-sd)*dofbfact+0.5;
sw = 1.0/(ds+1.0);
sw *= gauss8[abs(i)];
tw += sw;
res += sw*TextureColor.Sample(Sampler1,coord+float2(0,i)*bof
*dfc);
}
res /= tw;
return res;
}
/* Screen frost shader. Not very realistic either, but looks fine too. */
float2 ScreenFrost( float2 coord )
{
@ -1489,7 +1558,88 @@ technique11 Focus
}
}
technique11 Prepass <string UIName="MariENB";>
technique11 PrepassNB <string UIName="MariENB Bilateral Blur DoF";>
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_SSAOPre()));
}
}
technique11 PrepassNB1
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_SSAOBlurH()));
}
}
technique11 PrepassNB2 <string RenderTarget="RenderTargetR16F";>
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_SSAOBlurV()));
}
}
technique11 PrepassNB3 <string RenderTarget="RenderTargetR32F";>
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_DoFPrepass()));
}
}
technique11 PrepassNB4
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_SSAOApply()));
}
}
technique11 PrepassNB5
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_Edge()));
}
}
technique11 PrepassNB6
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_Distortion()));
}
}
technique11 PrepassNB7
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_DoFBlurH()));
}
}
technique11 PrepassNB8
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_DoFBlurV()));
}
}
technique11 PrepassNB9
{
pass p0
{
SetVertexShader(CompileShader(vs_5_0,VS_Quad()));
SetPixelShader(CompileShader(ps_5_0,PS_FrostPass()));
}
}
technique11 Prepass <string UIName="MariENB Gather Blur DoF";>
{
pass p0
{
@ -1561,5 +1711,3 @@ technique11 Prepass8
SetPixelShader(CompileShader(ps_5_0,PS_FrostPass()));
}
}

View file

@ -6,13 +6,13 @@ Depth Cutoff=999998.0
Near Z=0.05
Far Z=3098.0
Distortion Chromatic Aberration=27.4
Enable Underwater=true
Enable Underwater=false
Underwater Frequency=2.36, 3.39, 2.72
Underwater Speed=24.3, 21.9, 26.5
Underwater Amplitude=0.1, 0.11, 0.07
Underwater Zoom=0.15
Always Underwater=false
Enable Hot Air Refraction=true
Enable Hot Air Refraction=false
Heat Texture Size=6.4
Heat Speed=0.45
Heat Fade Contrast=235.0
@ -22,7 +22,7 @@ Heat Intensity=0.6
Heat Contrast=0.95
Heat Time-of-day Contrast=0.5
Heat Always Enable=true
Enable Screen Frost=true
Enable Screen Frost=false
Frost Contrast=1.1
Frost Strength=0.05
Frost Radial Contrast=0.8
@ -182,3 +182,5 @@ Frost Factor Sunset=0.0
Frost Factor Dusk=0.0
Frost Factor Night=0.28
Frost Factor Interior=0.0
DOF Bilateral Factor=20.0
DOF Bilateral Radius=1.0

View file

@ -1,6 +1,6 @@
[ENBEFFECT.FX]
TECHNIQUE=1
Enable Grain=true
Enable Grain=false
Grain Speed=2500.0
Grain Intensity=0.02
Grain Saturation=-0.23

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.6 MiB

After

Width:  |  Height:  |  Size: 1.7 MiB

Before After
Before After