Alpha 1. First standalone version.
This commit is contained in:
parent
9561f2f640
commit
f3268064c7
28 changed files with 3781 additions and 4357 deletions
160
menbbloomfilters.fx
Normal file
160
menbbloomfilters.fx
Normal file
|
|
@ -0,0 +1,160 @@
|
|||
/*
|
||||
menbbloomfilters.fx : MariENB bloom shader routines.
|
||||
(C)2013-2014 Marisa Kirisame, UnSX Team.
|
||||
Part of MariENB, the personal ENB of Marisa.
|
||||
Released under the MIT License.
|
||||
*/
|
||||
VS_OUTPUT_POST VS_Bloom(VS_INPUT_POST IN)
|
||||
{
|
||||
VS_OUTPUT_POST OUT;
|
||||
float4 pos = float4(IN.pos.x,IN.pos.y,IN.pos.z,1);
|
||||
OUT.vpos = pos;
|
||||
OUT.txcoord0.xy = IN.txcoord0.xy+TempParameters.xy;
|
||||
return OUT;
|
||||
}
|
||||
/* pre-pass bloom texture preparation */
|
||||
float4 PS_BloomPrePass(VS_OUTPUT_POST In) : COLOR
|
||||
{
|
||||
float2 coord = In.txcoord0.xy;
|
||||
if ( !preenable )
|
||||
return tex2D(SamplerBloom1,coord);
|
||||
float4 res = 0.0;
|
||||
float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
|
||||
float2 bof = float2(1.0/bresl.x,1.0/bresl.y)*presample;
|
||||
int i, j;
|
||||
if ( prelevel == 1 )
|
||||
{
|
||||
for ( i=-2; i<=2; i++ )
|
||||
for ( j=-2; j<=2; j++ )
|
||||
res += gauss5[abs(i)][abs(j)]
|
||||
*tex2D(SamplerBloom1,coord+float2(i,j)
|
||||
*bof);
|
||||
}
|
||||
else if ( prelevel == 2 )
|
||||
{
|
||||
for ( i=-3; i<=3; i++ )
|
||||
for ( j=-3; j<=3; j++ )
|
||||
res += gauss7[abs(i)][abs(j)]
|
||||
*tex2D(SamplerBloom1,coord+float2(i,j)
|
||||
*bof);
|
||||
}
|
||||
else
|
||||
{
|
||||
for ( i=-1; i<=1; i++ )
|
||||
for ( j=-1; j<=1; j++ )
|
||||
res += gauss3[abs(i)][abs(j)]
|
||||
*tex2D(SamplerBloom1,coord+float2(i,j)
|
||||
*bof);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
/* multipass */
|
||||
float4 PS_BloomTexture(VS_OUTPUT_POST In) : COLOR
|
||||
{
|
||||
float2 coord = In.txcoord0.xy;
|
||||
float4 res = 0.0;
|
||||
float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
|
||||
float2 bof = float2(1.0/bresl.x,1.0/bresl.y)*postsample
|
||||
*(TempParameters.w+0.25);
|
||||
int i, j;
|
||||
if ( postlevel == 1 )
|
||||
{
|
||||
for ( i=-2; i<=2; i++ )
|
||||
for ( j=-2; j<=2; j++ )
|
||||
res += gauss5[abs(i)][abs(j)]
|
||||
*tex2D(SamplerBloom1,coord+float2(i,j)
|
||||
*bof);
|
||||
}
|
||||
else if ( postlevel == 2 )
|
||||
{
|
||||
for ( i=-3; i<=3; i++ )
|
||||
for ( j=-3; j<=3; j++ )
|
||||
res += gauss7[abs(i)][abs(j)]
|
||||
*tex2D(SamplerBloom1,coord+float2(i,j)
|
||||
*bof);
|
||||
}
|
||||
else
|
||||
{
|
||||
for ( i=-1; i<=1; i++ )
|
||||
for ( j=-1; j<=1; j++ )
|
||||
res += gauss3[abs(i)][abs(j)]
|
||||
*tex2D(SamplerBloom1,coord+float2(i,j)
|
||||
*bof);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
/* end pass */
|
||||
float4 PS_BloomPostPass(VS_OUTPUT_POST In) : COLOR
|
||||
{
|
||||
float2 coord = In.txcoord0.xy;
|
||||
float4 res = (tex2D(SamplerBloom1,coord)+tex2D(SamplerBloom2,coord)
|
||||
+tex2D(SamplerBloom3,coord)+tex2D(SamplerBloom4,coord)
|
||||
+tex2D(SamplerBloom5,coord)+tex2D(SamplerBloom6,coord)
|
||||
+tex2D(SamplerBloom7,coord)+tex2D(SamplerBloom8,coord))*0.125;
|
||||
res = pow(saturate(res+bloombump),bloompower);
|
||||
float ress = (res.r+res.g+res.b)/3.0;
|
||||
res = res*bloomsaturation+ress*(1.0-bloomsaturation);
|
||||
res.rgb *= bloomintensity;
|
||||
return res;
|
||||
}
|
||||
/* techniques */
|
||||
technique BloomPrePass
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
VertexShader = compile vs_3_0 VS_Bloom();
|
||||
PixelShader = compile ps_3_0 PS_BloomPrePass();
|
||||
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
|
||||
CullMode = NONE;
|
||||
AlphaBlendEnable = FALSE;
|
||||
AlphaTestEnable = FALSE;
|
||||
SEPARATEALPHABLENDENABLE = FALSE;
|
||||
FogEnable = FALSE;
|
||||
SRGBWRITEENABLE = FALSE;
|
||||
}
|
||||
}
|
||||
technique BloomTexture1
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
VertexShader = compile vs_3_0 VS_Bloom();
|
||||
PixelShader = compile ps_3_0 PS_BloomTexture();
|
||||
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
|
||||
CullMode = NONE;
|
||||
AlphaBlendEnable = FALSE;
|
||||
AlphaTestEnable = FALSE;
|
||||
SEPARATEALPHABLENDENABLE = FALSE;
|
||||
FogEnable = FALSE;
|
||||
SRGBWRITEENABLE = FALSE;
|
||||
}
|
||||
}
|
||||
technique BloomTexture2
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
VertexShader = compile vs_3_0 VS_Bloom();
|
||||
PixelShader = compile ps_3_0 PS_BloomTexture();
|
||||
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
|
||||
CullMode = NONE;
|
||||
AlphaBlendEnable = FALSE;
|
||||
AlphaTestEnable = FALSE;
|
||||
SEPARATEALPHABLENDENABLE = FALSE;
|
||||
FogEnable = FALSE;
|
||||
SRGBWRITEENABLE = FALSE;
|
||||
}
|
||||
}
|
||||
technique BloomPostPass
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
VertexShader = compile vs_3_0 VS_Bloom();
|
||||
PixelShader = compile ps_3_0 PS_BloomPostPass();
|
||||
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
|
||||
CullMode = NONE;
|
||||
AlphaBlendEnable = FALSE;
|
||||
AlphaTestEnable = FALSE;
|
||||
SEPARATEALPHABLENDENABLE = FALSE;
|
||||
FogEnable = FALSE;
|
||||
SRGBWRITEENABLE = FALSE;
|
||||
}
|
||||
}
|
||||
Reference in a new issue