effect xdgdhbx

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 5

//++++++++++++++++++++++++++++++

// CryENB V3 EFFECT.TXT FILE


// FXAA converted by Myster92, rest made by Boris Vorontsov, tweaked by Fabriciuz
// Copyright: Boris Vorontsov, MysTer92, Timothy Lottes & Fabriciuz
//++++++++++++++++++++++++++++++

float SharpStrengthLuma = 0.16;


float SharpClamp = 0.5;
float OffsetBias = 0.4;
float NoiseAmount=0.1;

float4 tempF1;
float4 tempF2;
float4 tempF3;
float4 Timer;
float4 ScreenSize;
float4 SunDirection;
texture2D texColor;
texture2D texNoise;

sampler2D SamplerColor = sampler_state


{
Texture = <texColor>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;//NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};

sampler2D SamplerNoise = sampler_state


{
Texture = <texNoise>;
MinFilter = POINT;
MagFilter = POINT;
MipFilter = NONE;//NONE;
AddressU = Wrap;
AddressV = Wrap;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};

struct VS_OUTPUT_POST {
float4 vpos : POSITION;
float2 txcoord : TEXCOORD0;
};

struct VS_INPUT_POST {
float3 pos : POSITION;
float2 txcoord : TEXCOORD0;
};

VS_OUTPUT_POST VS_PostProcess(VS_INPUT_POST IN)


{
VS_OUTPUT_POST OUT;
float4 pos=float4(IN.pos.x,IN.pos.y,IN.pos.z,1.0);

OUT.vpos=pos;
OUT.txcoord.xy=IN.txcoord.xy;

return OUT;
}

//++++++++++++++++++++++++++++++
// FXAA v2 CONSOLE by TIMOTHY LOTTES @ NVIDIA
// Ported to ENBSeries by MysTer92 (Svyatoslav Gampel)
//++++++++++++++++++++++++++++++

float4 PS_PostProcess(VS_OUTPUT_POST i) : COLOR


{
#define FXAA_SUBPIX_SHIFT (1.0/8.0)
#define FXAA_REDUCE_MIN (1.0/32.0)
#define FXAA_REDUCE_MUL (1.0/16.0)
#define FXAA_SPAN_MAX 8.0

half2 rcpFrame = half2(1/ScreenSize.x, 1/(ScreenSize.x/ScreenSize.z));

half4 posPos;
posPos.xy = i.txcoord.xy;
posPos.zw = posPos.xy - (rcpFrame.xy * (0.5 + FXAA_SUBPIX_SHIFT));

half3 rgbNW = tex2D(SamplerColor, posPos.zw ).xyz;


half3 rgbNE = tex2D(SamplerColor, posPos.zw + half2(rcpFrame.x, 0.0) ).xyz;
half3 rgbSW = tex2D(SamplerColor, posPos.zw + half2(0.0, rcpFrame.y) ).xyz;
half3 rgbSE = tex2D(SamplerColor, posPos.zw +rcpFrame.xy ).xyz;
half3 rgbM = tex2D(SamplerColor, posPos.xy).xyz;

half3 luma = half3(0.299, 0.587, 0.114);


half lumaNW = dot(rgbNW, luma);
half lumaNE = dot(rgbNE, luma);
half lumaSW = dot(rgbSW, luma);
half lumaSE = dot(rgbSE, luma);
half lumaM = dot(rgbM, luma);

half lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));


half lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));

half2 dir;

half lumaNWNE = lumaNW + lumaNE;


half lumaSWSE = lumaSW + lumaSE;

dir.x = -((lumaNWNE) - (lumaSWSE));


dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE));

half dirReduce = max( (lumaSWSE + lumaNWNE) * (0.25 * FXAA_REDUCE_MUL),


FXAA_REDUCE_MIN);
half rcpDirMin = 1.0/(min(abs(dir.x), abs(dir.y)) + dirReduce);
dir = min(half2( FXAA_SPAN_MAX, FXAA_SPAN_MAX), max(half2(-FXAA_SPAN_MAX, -
FXAA_SPAN_MAX), dir * rcpDirMin)) * rcpFrame.xy;

half3 rgbA = (1.0/2.0) * (tex2D(SamplerColor, posPos.xy + dir * (1.0/3.0 -


0.5) ).xyz + tex2D(SamplerColor, posPos.xy + dir * (2.0/3.0 - 0.5) ).xyz);
half3 rgbB = rgbA * (1.0/2.0) + (1.0/4.0) * (tex2D(SamplerColor, posPos.xy +
dir * (0.0/3.0 - 0.5) ).xyz + tex2D(SamplerColor, posPos.xy + dir * (3.0/3.0 - 0.5)
).xyz);
half lumaB = dot(rgbB, luma);

if((lumaB < lumaMin) || (lumaB > lumaMax))


return half4(rgbA, 1.0);

return float4(rgbB, 1.0);


}

float4 PS_PostProcess_Sharp_Noise(VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR


{
float4 res = 0;
float4 tex=0.0;
tex.xy=IN.txcoord.xy;

float3 ori = tex2D(SamplerColor, tex).rgb;

float2 p;
p.x = 1.0/ScreenSize.x;
p.y=p.x/ScreenSize.z;

float3 blur_ori = tex2D(SamplerColor, tex + float2(0.5 * p.x,-p.y *


OffsetBias)).rgb;
blur_ori += tex2D(SamplerColor, tex + float2(OffsetBias * -p.x,0.5 * -
p.y)).rgb;
blur_ori += tex2D(SamplerColor, tex + float2(OffsetBias * p.x,0.5 * p.y)).rgb;
blur_ori += tex2D(SamplerColor, tex + float2(0.5 * -p.x,p.y * OffsetBias)).rgb;

blur_ori /= 4.0;

float3 sharp = ori - blur_ori;

float sharp_luma = dot(sharp, SharpStrengthLuma);

sharp_luma = clamp(sharp_luma, -SharpClamp, SharpClamp);

float4 done = tex2D(SamplerColor, tex) + sharp_luma;

float origgray=dot(done.xyz, 0.333);


tex.xy=IN.txcoord.xy*16.0 + origgray;
float4 cnoi=tex2Dlod(SamplerNoise, tex);
done=lerp(done, (cnoi.x+0.5)*done, NoiseAmount*saturate(1.0-origgray*1.8));

done.w=1.0;
return done;
}

technique PostProcess
{
pass P0
{
VertexShader = compile vs_3_0 VS_PostProcess();
PixelShader = compile ps_3_0 PS_PostProcess_Sharp_Noise();

FogEnable=FALSE;
ALPHATESTENABLE=FALSE;
SEPARATEALPHABLENDENABLE=FALSE;
AlphaBlendEnable=FALSE;
FogEnable=FALSE;
SRGBWRITEENABLE=FALSE;
}
}

technique PostProcess2
{
pass P0
{
VertexShader = compile vs_3_0 VS_PostProcess();
PixelShader = compile ps_3_0 PS_PostProcess();

FogEnable=FALSE;
ALPHATESTENABLE=FALSE;
SEPARATEALPHABLENDENABLE=FALSE;
AlphaBlendEnable=FALSE;
FogEnable=FALSE;
SRGBWRITEENABLE=FALSE;
}
}

technique PostProcess3
{
pass P0
{
VertexShader = compile vs_3_0 VS_PostProcess();
PixelShader = compile ps_3_0 PS_PostProcess_Sharp_Noise();

FogEnable=FALSE;
ALPHATESTENABLE=FALSE;
SEPARATEALPHABLENDENABLE=FALSE;
AlphaBlendEnable=FALSE;
FogEnable=FALSE;
SRGBWRITEENABLE=FALSE;
}
}

technique PostProcess4
{
pass P0
{
VertexShader = compile vs_3_0 VS_PostProcess();
PixelShader = compile ps_3_0 PS_PostProcess();

FogEnable=FALSE;
ALPHATESTENABLE=FALSE;
SEPARATEALPHABLENDENABLE=FALSE;
AlphaBlendEnable=FALSE;
FogEnable=FALSE;
SRGBWRITEENABLE=FALSE;
}
}

technique PostProcess5
{
pass P0
{
VertexShader = compile vs_3_0 VS_PostProcess();
PixelShader = compile ps_3_0 PS_PostProcess();

DitherEnable=TRUE;
ZEnable=FALSE;
CullMode=NONE;
ALPHATESTENABLE=FALSE;
SEPARATEALPHABLENDENABLE=FALSE;
AlphaBlendEnable=FALSE;
StencilEnable=FALSE;
FogEnable=FALSE;
SRGBWRITEENABLE=FALSE;
}
}

You might also like