1
Fork 0

The first and last version of MariENB that still used Opethfeldt ENB's code. For 0.251 binaries.

This commit is contained in:
Marisa the Magician 2019-04-07 17:07:52 +02:00
commit 9561f2f640
22 changed files with 5424 additions and 729 deletions

1780
effect.txt

File diff suppressed because it is too large Load diff

470
enbbloom.fx Normal file
View file

@ -0,0 +1,470 @@
//++++++++++++++++++++++++++++++++++++++++++++
// ENBSeries effect file
// visit http://enbdev.com for updates
// Copyright (c) 2007-2011 Boris Vorontsov
//++++++++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++
//internal parameters, can be modified
//+++++++++++++++++++++++++++++
//none
//+++++++++++++++++++++++++++++
//external parameters, do not modify
//+++++++++++++++++++++++++++++
//keyboard controlled temporary variables (in some versions exists in the config file). Press and hold key 1,2,3...8 together with PageUp or PageDown to modify. By default all set to 1.0
float4 tempF1; //0,1,2,3
float4 tempF2; //5,6,7,8
float4 tempF3; //9,0
//x=Width, y=1/Width, z=ScreenScaleY, w=1/ScreenScaleY
float4 ScreenSize;
//x=generic timer in range 0..1, period of 16777216 ms (4.6 hours), w=frame time elapsed (in seconds)
float4 Timer;
//additional info for computations
float4 TempParameters;
//Lenz reflection intensity, lenz reflection power
float4 LenzParameters;
//BloomRadius1, BloomRadius2, BloomBlueShiftAmount, BloomContrast
float4 BloomParameters;
texture2D texBloom1;
texture2D texBloom2;
texture2D texBloom3;
texture2D texBloom4;
texture2D texBloom5;
texture2D texBloom6;
texture2D texBloom7;//additional bloom tex
texture2D texBloom8;//additional bloom tex
sampler2D SamplerBloom1 = sampler_state
{
Texture = <texBloom1>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;//NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};
sampler2D SamplerBloom2 = sampler_state
{
Texture = <texBloom2>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;//NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};
sampler2D SamplerBloom3 = sampler_state
{
Texture = <texBloom3>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;//NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};
sampler2D SamplerBloom4 = sampler_state
{
Texture = <texBloom4>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;//NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};
sampler2D SamplerBloom5 = sampler_state
{
Texture = <texBloom5>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;//NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};
sampler2D SamplerBloom6 = sampler_state
{
Texture = <texBloom6>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;//NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};
sampler2D SamplerBloom7 = sampler_state
{
Texture = <texBloom7>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;//NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};
sampler2D SamplerBloom8 = sampler_state
{
Texture = <texBloom8>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;//NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};
struct VS_OUTPUT_POST
{
float4 vpos : POSITION;
float2 txcoord0 : TEXCOORD0;
};
struct VS_INPUT_POST
{
float3 pos : POSITION;
float2 txcoord0 : TEXCOORD0;
};
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
VS_OUTPUT_POST VS_Bloom(VS_INPUT_POST IN)
{
VS_OUTPUT_POST OUT;
OUT.vpos=float4(IN.pos.x,IN.pos.y,IN.pos.z,1.0);
OUT.txcoord0.xy=IN.txcoord0.xy+TempParameters.xy;//1.0/(bloomtexsize*2.0)
return OUT;
}
//zero pass HQ, input texture is fullscreen
//SamplerBloom1 - fullscreen texture
float4 PS_BloomPrePass(VS_OUTPUT_POST In) : COLOR
{
float4 bloomuv;
float4 bloom=0.0;//tex2D(SamplerBloom1, In.txcoord0);
const float2 offset[4]=
{
float2(0.25, 1.25),
float2(0.25, -0.25),
float2(-0.25, 0.25),
float2(-0.25, -0.25)
};
//TempParameters.w==1 if first pass, ==2 is second pass
float2 screenfact=TempParameters.z;
screenfact.y*=ScreenSize.z;
float4 srcbloom=bloom;
for (int i=0; i<4; i++)
{
bloomuv.xy=offset[i];
bloomuv.xy=(bloomuv.xy*screenfact.xy)+In.txcoord0.xy;
float4 tempbloom=tex2D(SamplerBloom1, bloomuv.xy);
bloom.xyz+=tempbloom.xyz;
}
bloom.xyz*=0.25;
bloom.xyz=min(bloom.xyz, 32768.0);
bloom.xyz=max(bloom.xyz, 0.0);
return bloom;
}
//first and second passes draw to every texture
//twice, after computations of these two passes,
//result is set as input to next cycle
//first pass
//SamplerBloom1 is result of prepass or second pass from cycle
float4 PS_BloomTexture1(VS_OUTPUT_POST In) : COLOR
{
float4 bloomuv;
float4 bloom=tex2D(SamplerBloom1, In.txcoord0);
const float2 offset[8]=
{
float2(1.0, 1.0),
float2(1.0, -1.0),
float2(-1.0, 1.0),
float2(-1.0, -1.0),
float2(0.0, 1.0),
float2(0.0, -1.0),
float2(1.0, 0.0),
float2(-1.0, 0.0)
};
float2 screenfact=TempParameters.z;
screenfact.y*=ScreenSize.z;
float4 srcbloom=bloom;
//TempParameters.w == (1+passnumber)
float step=BloomParameters.x;//*pow(2.0, BloomParameters.x * (TempParameters.w-1.0));//*0.5
// float step=(TempParameters.w-0.25);//
screenfact.xy*=step;//====================================================
float4 bloomadd=bloom;
for (int i=0; i<8; i++)
{
bloomuv.xy=offset[i];
bloomuv.xy=(bloomuv.xy*screenfact.xy)+In.txcoord0.xy;//-(1.0/256.0);//-(1.0/512.0);
float4 tempbloom=tex2D(SamplerBloom1, bloomuv.xy);
bloom+=tempbloom;
}
bloom*=0.111111;
//float3 violet=float3(0.78, 0.5, 1.0);
//float3 violet=float3(0.6, 0.4, 1.0);//v2
float3 violet=float3(0.6, 0.4, 1.0);//v3
// float3 violet=float3(0.27, 0.52, 1.0);//v4
//this applies when white
//float gray=0.104*dot(srcbloom.xyz, 0.333);//max(srcbloom.x, max(srcbloom.y, srcbloom.z));
//this applies on dark and when contrast
float ttt=dot(bloom.xyz, 0.333)-dot(srcbloom.xyz, 0.333);
ttt=max(ttt, 0.0);
float gray=BloomParameters.z*ttt*10;//max(srcbloom.x, max(srcbloom.y, srcbloom.z));
float mixfact=(gray/(1.0+gray));
mixfact*=1.0-saturate((TempParameters.w-1.0)*0.2);
violet.xy+=saturate((TempParameters.w-1.0)*0.3);
violet.xy=saturate(violet.xy);
bloom.xyz*=lerp(1.0, violet.xyz, mixfact);
bloom.w=1.0;
return bloom;
}
//second pass
//SamplerBloom1 is result of first pass
float4 PS_BloomTexture2(VS_OUTPUT_POST In) : COLOR
{
float4 bloomuv;
float4 bloom=tex2D(SamplerBloom1, In.txcoord0);
const float2 offset[8]=
{
float2(1.0, 1.0),
float2(1.0, -1.0),
float2(-1.0, 1.0),
float2(-1.0, -1.0),
float2(0.0, 1.0),
float2(0.0, -1.0),
float2(1.0, 0.0),
float2(-1.0, 0.0)
};
float2 screenfact=TempParameters.z;
screenfact.y*=ScreenSize.z;
float4 srcbloom=bloom;
//TempParameters.w == (1+passnumber)
// float step=(TempParameters.w-0.25);
float step=BloomParameters.y;//*pow(2.0, BloomParameters.y * (TempParameters.w-1.0))*2.0;//*0.5
screenfact.xy*=step;//*0.25====================================================
float4 rotvec=0.0;
sincos(0.3927, rotvec.x, rotvec.y);
for (int i=0; i<8; i++)
{
bloomuv.xy=offset[i];
bloomuv.xy=reflect(bloomuv.xy, rotvec.xy);
bloomuv.xy=(bloomuv.xy*screenfact.xy)+In.txcoord0.xy;
float4 tempbloom=tex2D(SamplerBloom1, bloomuv.xy);
bloom+=tempbloom;
}
bloom*=0.111111;
bloom.w=1.0;
return bloom;
}
//last pass, mix several bloom textures
//SamplerBloom5 is the result of prepass
//float4 PS_BloomPostPass(float2 vPos : VPOS ) : COLOR
float4 PS_BloomPostPass(VS_OUTPUT_POST In) : COLOR
{
float4 bloom;
//v1
bloom =tex2D(SamplerBloom1, In.txcoord0);
bloom+=tex2D(SamplerBloom2, In.txcoord0);
bloom+=tex2D(SamplerBloom3, In.txcoord0);
bloom+=tex2D(SamplerBloom4, In.txcoord0);
bloom+=tex2D(SamplerBloom7, In.txcoord0);
bloom+=tex2D(SamplerBloom8, In.txcoord0);
bloom+=tex2D(SamplerBloom5, In.txcoord0);
// bloom+=tex2D(SamplerBloom6, In.txcoord0);
bloom*=0.142857;
float3 lenz=0;
float2 lenzuv=0.0;
//deepness, curvature, inverse size
const float3 offset[4]=
{
float3(1.6, 4.0, 1.0),
float3(0.7, 0.25, 2.0),
float3(0.3, 1.5, 0.5),
float3(-0.5, 1.0, 1.0)
};
//color filter per reflection
const float3 factors[4]=
{
float3(0.3, 0.4, 0.4),
float3(0.2, 0.4, 0.5),
float3(0.5, 0.3, 0.7),
float3(0.1, 0.2, 0.7)
};
//lenzuv.xy=0.5-lenzuv.xy;
//distfact=0.5-lenzuv.xy-0.5;
if (LenzParameters.x>0.00001)
{
for (int i=0; i<4; i++)
{
float2 distfact=(In.txcoord0.xy-0.5);
lenzuv.xy=offset[i].x*distfact;
lenzuv.xy*=pow(2.0*length(float2(distfact.x*ScreenSize.z,distfact.y)), offset[i].y);
lenzuv.xy*=offset[i].z;
lenzuv.xy=0.5-lenzuv.xy;//v1
// lenzuv.xy=In.txcoord0.xy-lenzuv.xy;//v2
float3 templenz=tex2D(SamplerBloom2, lenzuv.xy);
templenz=templenz*factors[i];
distfact=(lenzuv.xy-0.5);
distfact*=2.0;
templenz*=saturate(1.0-dot(distfact,distfact));//limit by uv 0..1
// templenz=factors[i] * (1.0-dot(distfact,distfact));
float maxlenz=max(templenz.x, max(templenz.y, templenz.z));
/* float3 tempnor=(templenz.xyz/maxlenz);
tempnor=pow(tempnor, tempF1.z);
templenz.xyz=tempnor.xyz*maxlenz;
*/
float tempnor=(maxlenz/(1.0+maxlenz));
tempnor=pow(tempnor, LenzParameters.y);
templenz.xyz*=tempnor;
// templenz*=maxlenz*maxlenz;
lenz+=templenz;
// lenz.xyz=max(lenz.xyz, templenz.xyz*0.99);
}
lenz.xyz*=0.25*LenzParameters.x;
bloom.xyz+=lenz.xyz;
// bloom.w=dot(lenz.xyz, 0.333);
bloom.w=max(lenz.xyz, max(lenz.y, lenz.z));
}
return bloom;
}
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_BloomTexture1();
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_BloomTexture2();
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;
}
}

616
enbeffect.fx Normal file
View file

@ -0,0 +1,616 @@
#define POSTPROCESS 2
float EBrightnessV2Day <
string UIName="EBrightnessV2Day";
string UIWidget="Spinner";
float UIMin=0.0;
float UIMax=50.0;
> = {0.4};
float EAdaptationMinV2Day <
string UIName="EAdaptationMinV2Day";
string UIWidget="Spinner";
float UIMin=0.0;
float UIMax=50.0;
> = {0.05};
float EAdaptationMaxV2Day <
string UIName="EAdaptationMaxV2Day";
string UIWidget="Spinner";
float UIMin=0.0;
float UIMax=50.0;
> = {0.15};
float EToneMappingCurveV2Day <
string UIName="EToneMappingCurveV2Day";
string UIWidget="Spinner";
float UIMin=0.0;
float UIMax=50.0;
> = {1.0};
float EIntensityContrastV2Day <
string UIName="EIntensityContrastV2Day";
string UIWidget="Spinner";
float UIMin=0.0;
float UIMax=50.0;
> = {1.0};
float EToneMappingOversaturationV2Day <
string UIName="EToneMappingOversaturationV2Day";
string UIWidget="Spinner";
float UIMin=0.0;
float UIMax=200.0;
> = {40.0};
float EColorSaturationV2Day <
string UIName="EColorSaturationV2Day";
string UIWidget="Spinner";
float UIMin=0.0;
float UIMax=50.0;
> = {1.3};
float EBrightnessV2Night <
string UIName="EBrightnessV2Night";
string UIWidget="Spinner";
float UIMin=0.0;
float UIMax=50.0;
> = {1.0};
float EAdaptationMinV2Night <
string UIName="EAdaptationMinV2Night";
string UIWidget="Spinner";
float UIMin=0.0;
float UIMax=50.0;
> = {0.1};
float EAdaptationMaxV2Night <
string UIName="EAdaptationMaxV2Night";
string UIWidget="Spinner";
float UIMin=0.0;
float UIMax=50.0;
> = {0.2};
float EToneMappingCurveV2Night <
string UIName="EToneMappingCurveV2Night";
string UIWidget="Spinner";
float UIMin=0.0;
float UIMax=50.0;
> = {4.3};
float EIntensityContrastV2Night <
string UIName="EIntensityContrastV2Night";
string UIWidget="Spinner";
float UIMin=0.0;
float UIMax=50.0;
> = {1.0};
float EToneMappingOversaturationV2Night <
string UIName="EToneMappingOversaturationV2Night";
string UIWidget="Spinner";
float UIMin=0.0;
float UIMax=200.0;
> = {20.0};
float EColorSaturationV2Night <
string UIName="EColorSaturationV2Night";
string UIWidget="Spinner";
float UIMin=0.0;
float UIMax=50.0;
> = {1.0};
float EBrightnessV2Interior <
string UIName="EBrightnessV2Interior";
string UIWidget="Spinner";
float UIMin=0.0;
float UIMax=50.0;
> = {1.0};
float EAdaptationMinV2Interior <
string UIName="EAdaptationMinV2Interior";
string UIWidget="Spinner";
float UIMin=0.0;
float UIMax=50.0;
> = {0.1};
float EAdaptationMaxV2Interior <
string UIName="EAdaptationMaxV2Interior";
string UIWidget="Spinner";
float UIMin=0.0;
float UIMax=50.0;
> = {0.2};
float EToneMappingCurveV2Interior <
string UIName="EToneMappingCurveV2Interior";
string UIWidget="Spinner";
float UIMin=0.0;
float UIMax=50.0;
> = {4.3};
float EIntensityContrastV2Interior <
string UIName="EIntensityContrastV2Interior";
string UIWidget="Spinner";
float UIMin=0.0;
float UIMax=50.0;
> = {1.0};
float EToneMappingOversaturationV2Interior <
string UIName="EToneMappingOversaturationV2Interior";
string UIWidget="Spinner";
float UIMin=0.0;
float UIMax=200.0;
> = {20.0};
float EColorSaturationV2Interior <
string UIName="EColorSaturationV2Interior";
string UIWidget="Spinner";
float UIMin=0.0;
float UIMax=50.0;
> = {1.0};
//+++++++++++++++++++++++++++++
//external parameters, do not modify
//+++++++++++++++++++++++++++++
//keyboard controlled temporary variables (in some versions exists in the config file). Press and hold key 1,2,3...8 together with PageUp or PageDown to modify. By default all set to 1.0
float4 tempF1; //0,1,2,3
float4 tempF2; //5,6,7,8
float4 tempF3; //9,0
//x=generic timer in range 0..1, period of 16777216 ms (4.6 hours), w=frame time elapsed (in seconds)
float4 Timer;
//x=Width, y=1/Width, z=ScreenScaleY, w=1/ScreenScaleY
float4 ScreenSize;
//changes in range 0..1, 0 means that night time, 1 - day time
float ENightDayFactor;
//changes 0 or 1. 0 means that exterior, 1 - interior
float EInteriorFactor;
//enb version of bloom applied, ignored if original post processing used
float EBloomAmount;
texture2D texs0;//color
texture2D texs1;//bloom skyrim
texture2D texs2;//adaptation skyrim
texture2D texs3;//bloom enb
texture2D texs4;//adaptation enb
texture2D texs7;//palette enb
sampler2D _s0 = sampler_state
{
Texture = <texs0>;
MinFilter = POINT;//
MagFilter = POINT;//
MipFilter = NONE;//LINEAR;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};
sampler2D _s1 = sampler_state
{
Texture = <texs1>;
MinFilter = LINEAR;//
MagFilter = LINEAR;//
MipFilter = NONE;//LINEAR;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};
sampler2D _s2 = sampler_state
{
Texture = <texs2>;
MinFilter = LINEAR;//
MagFilter = LINEAR;//
MipFilter = NONE;//LINEAR;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};
sampler2D _s3 = sampler_state
{
Texture = <texs3>;
MinFilter = LINEAR;//
MagFilter = LINEAR;//
MipFilter = NONE;//LINEAR;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};
sampler2D _s4 = sampler_state
{
Texture = <texs4>;
MinFilter = LINEAR;//
MagFilter = LINEAR;//
MipFilter = NONE;//LINEAR;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};
sampler2D _s7 = sampler_state
{
Texture = <texs7>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};
struct VS_OUTPUT_POST
{
float4 vpos : POSITION;
float2 txcoord0 : TEXCOORD0;
};
struct VS_INPUT_POST
{
float3 pos : POSITION;
float2 txcoord0 : TEXCOORD0;
};
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
VS_OUTPUT_POST VS_Quad(VS_INPUT_POST IN)
{
VS_OUTPUT_POST OUT;
OUT.vpos=float4(IN.pos.x,IN.pos.y,IN.pos.z,1.0);
OUT.txcoord0.xy=IN.txcoord0.xy;
return OUT;
}
//skyrim shader specific externals, do not modify
float4 _c1 : register(c1);
float4 _c2 : register(c2);
float4 _c3 : register(c3);
float4 _c4 : register(c4);
float4 _c5 : register(c5);
float4 PS_D6EC7DD1(VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR
{
float4 _oC0=0.0; //output
float4 _c6=float4(0, 0, 0, 0);
float4 _c7=float4(0.212500006, 0.715399981, 0.0720999986, 1.0);
float4 r0;
float4 r1;
float4 r2;
float4 r3;
float4 r4;
float4 r5;
float4 r6;
float4 r7;
float4 r8;
float4 r9;
float4 r10;
float4 r11;
float4 _v0=0.0;
_v0.xy=IN.txcoord0.xy;
r1=tex2D(_s0, _v0.xy); //color
r11=r1; //my bypass
_oC0.xyz=r1.xyz; //for future use without game color corrections
float hnd = ENightDayFactor;
float pi = (1-EInteriorFactor);
#ifdef APPLYGAMECOLORCORRECTION
//apply original
r0.x=1.0/_c2.y;
r1=tex2D(_s2, _v0);
r0.yz=r1.xy * _c1.y;
r0.w=1.0/r0.y;
r0.z=r0.w * r0.z;
r1=tex2D(_s0, _v0);
r1.xyz=r1 * _c1.y;
r0.w=dot(_c7.xyz, r1.xyz);
r1.w=r0.w * r0.z;
r0.z=r0.z * r0.w + _c7.w;
r0.z=1.0/r0.z;
r0.x=r1.w * r0.x + _c7.w;
r0.x=r0.x * r1.w;
r0.x=r0.z * r0.x;
if (r0.w<0) r0.x=_c6.x;
r0.z=1.0/r0.w;
r0.z=r0.z * r0.x;
r0.x=saturate(-r0.x + _c2.x);
// r2=tex2D(_s3, _v0);//enb bloom
r2=tex2D(_s1, _v0);//skyrim bloom
r2.xyz=r2 * _c1.y;
r2.xyz=r0.x * r2;
r1.xyz=r1 * r0.z + r2;
r0.x=dot(r1.xyz, _c7.xyz);
r1.w=_c7.w;
r2=lerp(r0.x, r1, _c3.x);
r1=r0.x * _c4 - r2;
r1=_c4.w * r1 + r2;
r1=_c3.w * r1 - r0.y; //khajiit night vision _c3.w
r0=_c3.z * r1 + r0.y;
r1=-r0 + _c5;
_oC0=_c5.w * r1 + r0;
#endif //APPLYGAMECOLORCORRECTION
/*
#ifndef APPLYGAMECOLORCORRECTION
//temporary fix for khajiit night vision, but it also degrade colors.
// r1=tex2D(_s2, _v0);
// r0.y=r1.xy * _c1.y;
r1=_oC0;
r1.xyz=r1 * _c1.y;
r0.x=dot(r1.xyz, _c7.xyz);
r2=lerp(r0.x, r1, _c3.x);
r1=r0.x * _c4 - r2;
r1=_c4.w * r1 + r2;
r1=_c3.w * r1;// - r0.y;
r0=_c3.z * r1;// + r0.y;
r1=-r0 + _c5;
_oC0=_c5.w * r1 + r0;
#endif //!APPLYGAMECOLORCORRECTION
*/
float4 color=_oC0;
//adaptation in time
float4 Adaptation=tex2D(_s4, 0.5);
float grayadaptation=max(max(Adaptation.x, Adaptation.y), Adaptation.z);
// grayadaptation=1.0/grayadaptation;
float4 xcolorbloom=tex2D(_s3, _v0.xy); //bloom
// float maxb=max(xcolorbloom.x, max(xcolorbloom.y, xcolorbloom.z));
// float violetamount=maxb/(maxb+EVioletShiftAmountInv);
// xcolorbloom.xyz=lerp(xcolorbloom.xyz, xcolorbloom.xyz*EVioletShiftColor, violetamount*violetamount);
//darkening if too bright screen
// float srcgray=max(color.x, max(color.y, color.z));
//v1 not good for hdr, scaling required
// color.xyz=color.xyz-(saturate(EAdaptationDarkeningAmount*grayadaptation) * color.xyz)*(1.0-saturate(srcgray*tempF2.y));
//v2
// color.xyz=color.xyz-(saturate(EAdaptationDarkeningAmount*grayadaptation) * color.xyz)*(1.0-saturate(srcgray/(srcgray+1.0*tempF2.y)));
//v3
// color.xyz=color.xyz-(saturate(EAdaptationDarkeningAmount*grayadaptation) * color.xyz)*(1.0/(srcgray*0.7+1.0));//0.7 to modify!!!
color.xyz+=xcolorbloom.xyz*EBloomAmount;
// color.xyz=color.xyz-((EAdaptationDarkeningAmount/(grayadaptation*2.0*tempF1.x+1.0)) * color.xyz)*(1.0/(srcgray*0.7+1.0));//0.7 to modify!!!
//v4
// color.xyz=color.xyz/(grayadaptation*EAdaptationAmount*tempF1.x+1.0);
//color.xyz=color.xyz+(xcolorbloom.xyz);
//color.xyz*=EColorFilter;
//color.xyz*=2.0;
//-/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#if (POSTPROCESS==2)
float newEAdaptationMax = lerp( EAdaptationMaxV2Interior, ( lerp( EAdaptationMaxV2Night, EAdaptationMaxV2Day, hnd ) ), pi );
float newEAdaptationMin = lerp( EAdaptationMinV2Interior, ( lerp( EAdaptationMinV2Night, EAdaptationMinV2Day, hnd ) ), pi );
float newEBrightnessV2 = lerp( EBrightnessV2Interior, ( lerp( EBrightnessV2Night, EBrightnessV2Day, hnd ) ), pi );
float newEToneMappingCurve = lerp( EToneMappingCurveV2Interior, ( lerp( EToneMappingCurveV2Night, EToneMappingCurveV2Day, hnd ) ), pi );
float newEIntensityContrastV2 = lerp( EIntensityContrastV2Interior, ( lerp( EIntensityContrastV2Night, EIntensityContrastV2Day, hnd ) ), pi );
float newEToneMappingOversaturationV2 = lerp( EToneMappingOversaturationV2Interior, ( lerp( EToneMappingOversaturationV2Night, EToneMappingOversaturationV2Day, hnd ) ), pi );
float newEColorSaturationV2 = lerp( EColorSaturationV2Interior, ( lerp( EColorSaturationV2Night, EColorSaturationV2Day, hnd ) ), pi );
grayadaptation=max(grayadaptation, 0.0);
grayadaptation=min(grayadaptation, 50.0);
color.xyz=color.xyz/(grayadaptation*newEAdaptationMax+newEAdaptationMin);//*tempF1.x
color.xyz*=(newEBrightnessV2);
color.xyz+=0.000001;
float3 xncol=normalize(color.xyz);
float3 scl=color.xyz/xncol.xyz;
scl=pow(scl, newEIntensityContrastV2);
xncol.xyz=pow(xncol.xyz, newEColorSaturationV2);
color.xyz=scl*xncol.xyz;
float lumamax=newEToneMappingOversaturationV2;
color.xyz=(color.xyz * (1.0 + color.xyz/lumamax))/(color.xyz + newEToneMappingCurve);
#endif
//-/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//-/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//pallete texture (0.082+ version feature)
#ifdef E_CC_PALETTE
color.rgb=saturate(color.rgb);
float3 brightness=Adaptation.xyz;//tex2D(_s4, 0.5);//adaptation luminance
// brightness=saturate(brightness);//old version from ldr games
brightness=(brightness/(brightness+1.0));//new version
brightness=max(brightness.x, max(brightness.y, brightness.z));//new version
float3 palette;
float4 uvsrc=0.0;
uvsrc.y=brightness.r;
uvsrc.x=color.r;
palette.r=tex2Dlod(_s7, uvsrc).r;
uvsrc.x=color.g;
uvsrc.y=brightness.g;
palette.g=tex2Dlod(_s7, uvsrc).g;
uvsrc.x=color.b;
uvsrc.y=brightness.b;
palette.b=tex2Dlod(_s7, uvsrc).b;
color.rgb=palette.rgb;
#endif //E_CC_PALETTE
/*
//temporary testing
color.xyz=tex2D(_s0, _v0.xy);
//color.xyz=xcolorbloom.xyz*tempF1.x;
//color.xyz=pow(color.xyz, 0.5);
color.xyz+=(xcolorbloom.xyz-color.xyz)*tempF1.y;
//color.xyz=xcolorbloom.xyz*tempF1.y;
color.xyz=color.xyz*tempF1.x;
//color.xyz=color.xyz/(color.xyz +1.0*tempF1.z);
color.xyz=(color.xyz * (1.0 + color.xyz/40))/(color.xyz + EToneMappingCurveV3);
Adaptation=tex2D(_s4, 0.5);
grayadaptation=max(max(Adaptation.x, Adaptation.y), Adaptation.z);
grayadaptation=max(grayadaptation, 0.0);
grayadaptation=min(grayadaptation, 50.0);
// color.xyz=Adaptation*2;//*tempF1.x
//color.xyz=tex2D(_s0, _v0.xy)*1.3;
*/
// color.xyz=tex2D(_s0, _v0.xy)*pow(tempF1.x,4);
// color.xyz=max(xcolorbloom.xyz, tex2D(_s0, _v0.xy).xyz)*pow(tempF1.x,4)*0.7;
_oC0.w=1.0;
_oC0.xyz=color.xyz;
return _oC0;
}
//switch between vanilla and mine post processing
#ifndef ENB_FLIPTECHNIQUE
technique Shader_D6EC7DD1
#else
technique Shader_ORIGINALPOSTPROCESS
#endif
{
pass p0
{
VertexShader = compile vs_3_0 VS_Quad();
PixelShader = compile ps_3_0 PS_D6EC7DD1();
ColorWriteEnable=ALPHA|RED|GREEN|BLUE;
ZEnable=FALSE;
ZWriteEnable=FALSE;
CullMode=NONE;
AlphaTestEnable=FALSE;
AlphaBlendEnable=FALSE;
SRGBWRITEENABLE=FALSE;
}
}
//original shader of post processing
#ifndef ENB_FLIPTECHNIQUE
technique Shader_ORIGINALPOSTPROCESS
#else
technique Shader_D6EC7DD1
#endif
{
pass p0
{
VertexShader = compile vs_3_0 VS_Quad();
PixelShader=
asm
{
// Parameters:
// sampler2D Avg;
// sampler2D Blend;
// float4 Cinematic;
// float4 ColorRange;
// float4 Fade;
// sampler2D Image;
// float4 Param;
// float4 Tint;
// Registers:
// Name Reg Size
// ------------ ----- ----
// ColorRange c1 1
// Param c2 1
// Cinematic c3 1
// Tint c4 1
// Fade c5 1
// Image s0 1
// Blend s1 1
// Avg s2 1
//s0 bloom result
//s1 color
//s2 is average color
ps_3_0
def c6, 0, 0, 0, 0
//was c0 originally
def c7, 0.212500006, 0.715399981, 0.0720999986, 1
dcl_texcoord v0.xy
dcl_2d s0
dcl_2d s1
dcl_2d s2
rcp r0.x, c2.y
texld r1, v0, s2
mul r0.yz, r1.xxyw, c1.y
rcp r0.w, r0.y
mul r0.z, r0.w, r0.z
texld r1, v0, s1
mul r1.xyz, r1, c1.y
dp3 r0.w, c7, r1
mul r1.w, r0.w, r0.z
mad r0.z, r0.z, r0.w, c7.w
rcp r0.z, r0.z
mad r0.x, r1.w, r0.x, c7.w
mul r0.x, r0.x, r1.w
mul r0.x, r0.z, r0.x
cmp r0.x, -r0.w, c6.x, r0.x
rcp r0.z, r0.w
mul r0.z, r0.z, r0.x
add_sat r0.x, -r0.x, c2.x
texld r2, v0, s0
mul r2.xyz, r2, c1.y
mul r2.xyz, r0.x, r2
mad r1.xyz, r1, r0.z, r2
dp3 r0.x, r1, c7
mov r1.w, c7.w
lrp r2, c3.x, r1, r0.x
mad r1, r0.x, c4, -r2
mad r1, c4.w, r1, r2
mad r1, c3.w, r1, -r0.y
mad r0, c3.z, r1, r0.y
add r1, -r0, c5
mad oC0, c5.w, r1, r0
};
ColorWriteEnable=ALPHA|RED|GREEN|BLUE;
ZEnable=FALSE;
ZWriteEnable=FALSE;
CullMode=NONE;
AlphaTestEnable=FALSE;
AlphaBlendEnable=FALSE;
SRGBWRITEENABLE=FALSE;
}
}

695
enbeffectprepass.fx Normal file
View file

@ -0,0 +1,695 @@
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// ENBSeries effect file
// visit http://enbdev.com for updates
// Copyright (c) 2007-2011 Boris Vorontsov
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++
// Internal parameters, can be modified
//+++++++++++++++++++++++++++++
float EBlurSamplingRange = 4.0; // not used
float EApertureScale = 4.0; // not used
//+++++++++++++++++++++++++++++
// External parameters, do not modify
//+++++++++++++++++++++++++++++
// Keyboard controlled temporary variables (in some versions exists in the config file). Press and hold key 1,2,3...8 together with PageUp or PageDown to modify.
// By default all set to 1.0
float4 tempF1; //0,1,2,3
float4 tempF2; //5,6,7,8
float4 tempF3; //9,0
// x=Width, y=1/Width, z=ScreenScaleY, w=1/ScreenScaleY
float4 ScreenSize;
// x=generic timer in range 0..1, period of 16777216 ms (4.6 hours), w=frame time elapsed (in seconds)
float4 Timer;
// Adaptation delta time for focusing
float FadeFactor;
// textures
texture2D texColor;
texture2D texDepth;
texture2D texNoise;
texture2D texPalette;
texture2D texFocus; // computed focusing depth
texture2D texCurr; // 4*4 texture for focusing
texture2D texPrev; // 4*4 texture for focusing
sampler2D SamplerColor = sampler_state
{
Texture = <texColor>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Mirror;
AddressV = Mirror;
SRGBTexture = FALSE;
MaxMipLevel = 0;
MipMapLodBias = 0;
};
sampler2D SamplerDepth = sampler_state
{
Texture = <texDepth>;
MinFilter = POINT;
MagFilter = POINT;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture = FALSE;
MaxMipLevel = 0;
MipMapLodBias = 0;
};
sampler2D SamplerNoise = sampler_state
{
Texture = <texNoise>;
MinFilter = POINT;
MagFilter = POINT;
MipFilter = NONE;
AddressU = Wrap;
AddressV = Wrap;
SRGBTexture = FALSE;
MaxMipLevel = 0;
MipMapLodBias = 0;
};
sampler2D SamplerPalette = sampler_state
{
Texture = <texPalette>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture = FALSE;
MaxMipLevel = 0;
MipMapLodBias = 0;
};
// for focus computation
sampler2D SamplerCurr = sampler_state
{
Texture = <texCurr>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = LINEAR;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture = FALSE;
MaxMipLevel = 0;
MipMapLodBias = 0;
};
// for focus computation
sampler2D SamplerPrev = sampler_state
{
Texture = <texPrev>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture = FALSE;
MaxMipLevel = 0;
MipMapLodBias = 0;
};
// for dof only in PostProcess techniques
sampler2D SamplerFocus = sampler_state
{
Texture = <texFocus>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
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;
};
////////////////////////////////////////////////////////////////////
// Begin focusing (by Boris Vorontsov)
////////////////////////////////////////////////////////////////////
VS_OUTPUT_POST VS_Focus(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;
}
//SRCpass1X=ScreenWidth;
//SRCpass1Y=ScreenHeight;
//DESTpass2X=4;
//DESTpass2Y=4;
float4 PS_ReadFocus(VS_OUTPUT_POST IN) : COLOR
{
float res = tex2D(SamplerDepth, 0.5).x;
//float3 color = tex2D(SamplerColor, 0.5).rgb;
return res;
}
//SRCpass1X=4;
//SRCpass1Y=4;
//DESTpass2X=4;
//DESTpass2Y=4;
float4 PS_WriteFocus(VS_OUTPUT_POST IN) : COLOR
{
float res = 0.0;
float curr = tex2D(SamplerCurr, 0.5).x;
float prev = tex2D(SamplerPrev, 0.5).x;
res = lerp(prev, curr, saturate(FadeFactor));// time elapsed factor
res = max(res, 0.0);
return res;
}
technique ReadFocus
{
pass P0
{
VertexShader = compile vs_3_0 VS_Focus();
PixelShader = compile ps_3_0 PS_ReadFocus();
ZEnable = FALSE;
CullMode = NONE;
ALPHATESTENABLE = FALSE;
SEPARATEALPHABLENDENABLE = FALSE;
AlphaBlendEnable = FALSE;
FogEnable = FALSE;
SRGBWRITEENABLE = FALSE;
}
}
technique WriteFocus
{
pass P0
{
VertexShader = compile vs_3_0 VS_Focus();
PixelShader = compile ps_3_0 PS_WriteFocus();
ZEnable = FALSE;
CullMode = NONE;
ALPHATESTENABLE = FALSE;
SEPARATEALPHABLENDENABLE = FALSE;
AlphaBlendEnable = FALSE;
FogEnable = FALSE;
SRGBWRITEENABLE = FALSE;
}
}
////////////////////////////////////////////////////////////////////
// End focusing code
////////////////////////////////////////////////////////////////////
/*------------------------------------------------------------------------------
ENB prepass modification 2.0.6 by Matso
Credits to Boris Vorontsov
------------------------------------------------------------------------------*/
// Effects enabling options
//#define ENABLE_DOF 1 // comment to disable depth of field
#define ENABLE_FAST_DOF 1 // comment to disable fast depth of field (never use both ENABLE_DOF and ENABLE_FAST_DOF - possible game crash or horrible FPS drop)
//#define ENABLE_SHARP 1 // comment to disable sharpening
//#define ENABLE_CHROMA 1 // comment to disable chromatic aberration (additional chromatic aberration applied beyond depth of field)
// Methods enabling options
//#define USE_CHROMA_DOF 1 // comment it to disable chromatic aberration sampling in DoF
#define USE_SMOOTH_DOF 1 // comment it to disable smooth DoF
#define USE_BOKEH_DOF 1 // comment it to disable bokeh DoF
//#define USE_ANAMFLARE 1 // comment it to disable anamorphic lens flare (not working very well -_-)
#define USE_DOUBLE_BLUR 1 // comment it to disable additional blur
// Useful constants
#define SEED Timer.x
#define PI 3.1415926535897932384626433832795
#define CHROMA_POW 65.0 // the bigger the value, the more visible chomatic aberration effect in DoF
// Fast DoF constants
#define DOF_SCALE 2356.1944901923449288469825374596 // PI * 750
#define FIRST_PASS 0 // only 0, 1, 2, or 3
#define SECOND_PASS 1 // only 0, 1, 2, or 3
#define THIRD_PASS 2 // only 0, 1, 2, or 3
#define FOURTH_PASS 3 // only 0, 1, 2, or 3
#define DOF(sd,sf) fBlurScale * smoothstep(fDofBias, fDofCutoff, abs(sd - sf))
#define USE_NATURAL_BOKEH 1
// Chromatic aberration parameters
float3 fvChroma = float3(0.995, 1.000, 1.005); // displacement scales of red, green and blue respectively
float fBaseRadius = 0.9; // below this radius the effect is less visible
float fFalloffRadius = 1.8; // over this radius the effects is maximal
float fChromaPower = 1.0; // power of the chromatic displacement (curve of the 'fvChroma' vector)
// Sharpen parameters
float fSharpScale = 0.32; // intensity of sharpening
float2 fvTexelSize = float2(1.0 / 1920.0, 1.0 / 1080.0); // set your resolution sizes
// Depth of field parameters
float fFocusBias = 0.045; // bigger values for nearsightedness, smaller for farsightedness (lens focal point distance)
float fDofCutoff = 0.25; // manages the smoothness of the DoF (bigger value results in wider depth of field)
float fDofBias = 0.12; // distance not taken into account in DoF (all closer then the distance is in focus)
float fBlurScale = 0.002; // governs image blur scale (the bigger value, the stronger blur)
float fBlurCutoff = 0.1; // bluring tolerance depending on the pixel and sample depth (smaller causes objects edges to be preserved)
// Bokeh parameters
float fBokehCurve = 2.0; // the larger the value, the more visible the bokeh effect is
float fBokehIntensity = 0.95; // governs bokeh brightness
float fBokehConstant = 0.1; // constant value of the bokeh weighting (bigger cause more powerful bokeh)
// Grain parameters
float fGrainFreq = 2000.0; // movie grain frequency
float fGrainScale = 0.02; // effect scale
// Anamorphic flare parameters (by default not used)
float fLuminance = 0.85; // bright pass luminance value
float fBlur = 2000.0; // blur amount, manages the size of the flare
float fIntensity = 0.25; // effect intensity
// External parameters
extern float fWaterLevel = 1.0; // DO NOT CHANGE - must be 1.0 for now!
/**
* Chromatic aberration function - given texture coordinate and a focus value
* retrieves chromatically distorted color of the pixel. Each of the color
* channels are displaced according to the pixel coordinate and its distance
* from the center of the image. Also the DoF out-of-focus value is applied.
* (http://en.wikipedia.org/wiki/Chromatic_aberration)
*/
float4 ChromaticAberration(float2 tex, float outOfFocus)
{
float d = distance(tex, float2(0.5, 0.5));
float f = smoothstep(fBaseRadius, fFalloffRadius, d + outOfFocus * d);
float3 chroma = pow(f + fvChroma, fChromaPower);
float2 tr = ((2.0 * tex - 1.0) * chroma.r) * 0.5 + 0.5;
float2 tg = ((2.0 * tex - 1.0) * chroma.g) * 0.5 + 0.5;
float2 tb = ((2.0 * tex - 1.0) * chroma.b) * 0.5 + 0.5;
float3 color = float3(tex2D(SamplerColor, tr).r, tex2D(SamplerColor, tg).g, tex2D(SamplerColor, tb).b) * (1.0 - f);
return float4(color, 1.0);
}
/**
* Chromatic aberration done accoriding to the focus factor provided.
*/
float4 ChromaticAberrationFocus(float2 tex, float outOfFocus)
{
float d = distance(tex, float2(0.5, 0.5));
float f = smoothstep(fBaseRadius, fFalloffRadius, d);
float3 chroma = pow(f + fvChroma, CHROMA_POW * outOfFocus * fChromaPower);
float2 tr = ((2.0 * tex - 1.0) * chroma.r) * 0.5 + 0.5;
float2 tg = ((2.0 * tex - 1.0) * chroma.g) * 0.5 + 0.5;
float2 tb = ((2.0 * tex - 1.0) * chroma.b) * 0.5 + 0.5;
float3 color = float3(tex2D(SamplerColor, tr).r, tex2D(SamplerColor, tg).g, tex2D(SamplerColor, tb).b) * (1.0 - outOfFocus);
return float4(color, 1.0);
}
/**
* Pseudo-random number generator - returns a number generated according to the provided vector.
*/
float Random(float2 co)
{
return frac(sin(dot(co.xy, float2(12.9898, 78.233))) * 43758.5453);
}
/**
* Movie grain function - returns a random, time scaled value for the given pixel coordinate.
*/
float Grain(float3 tex)
{
float r = Random(tex.xy);
float grain = sin(PI * tex.z * r * fGrainFreq) * fGrainScale * r;
return grain;
}
/**
* Bright pass - rescales sampled pixel to emboss bright enough value.
*/
float3 BrightPass(float2 tex)
{
float3 c = tex2D(SamplerColor, tex).rgb;
float3 bC = max(c - float3(fLuminance, fLuminance, fLuminance), 0.0);
float bright = dot(bC, 1.0);
bright = smoothstep(0.0f, 0.5, bright);
return lerp(0.0, c, bright);
}
float3 BrightColor(float3 c)
{
float3 bC = max(c - float3(fLuminance, fLuminance, fLuminance), 0.0);
float bright = dot(bC, 1.0);
bright = smoothstep(0.0f, 0.5, bright);
return lerp(0.0, c, bright);
}
/**
* Anamorphic sampling function - scales pixel coordinate
* to stratch the image along one of the axels.
* (http://en.wikipedia.org/wiki/Anamorphosis)
*/
float3 AnamorphicSample(int axis, float2 tex, float blur)
{
tex = 2.0 * tex - 1.0;
if (!axis) tex.x /= -blur;
else tex.y /= -blur;
tex = 0.5 * tex + 0.5;
return BrightPass(tex);
}
/**
* Converts pixel color to gray-scale.
*/
float GrayScale(float3 sample)
{
return dot(sample, float3(0.3, 0.59, 0.11));
}
/**
* Returns an under water distortion according to the given coordinate and time factor.
*/
float2 UnderWaterDistortion(float2 coord)
{
float2 distortion = float2(0.0, 0.0);
// TODO:...
return coord;// + distortion * (fWaterLevel - 1.0);
}
///// Shaders ////////////////////////////////////////////////////////////////////////////////
// Vertex shader (Boris code)
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;
}
// Sharpen pixel shader (Matso code)
float4 PS_ProcessPass_Sharpen(VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR
{
float2 coord = IN.txcoord.xy;
float4 Color = 9.0 * tex2D(SamplerColor, coord.xy);
Color -= tex2D(SamplerColor, coord.xy + float2(-fvTexelSize.x, fvTexelSize.y) * fSharpScale);
Color -= tex2D(SamplerColor, coord.xy + float2(0.0, fvTexelSize.y) * fSharpScale);
Color -= tex2D(SamplerColor, coord.xy + float2(fvTexelSize.x, fvTexelSize.y) * fSharpScale);
Color -= tex2D(SamplerColor, coord.xy + float2(fvTexelSize.x, 0.0) * fSharpScale);
Color -= tex2D(SamplerColor, coord.xy + float2(fvTexelSize.x, -fvTexelSize.y) * fSharpScale);
Color -= tex2D(SamplerColor, coord.xy + float2(0.0, -fvTexelSize.y) * fSharpScale);
Color -= tex2D(SamplerColor, coord.xy + float2(-fvTexelSize.x, -fvTexelSize.y) * fSharpScale);
Color -= tex2D(SamplerColor, coord.xy + float2(-fvTexelSize.x, 0.0) * fSharpScale);
Color.a = 1.0;
return Color;
}
// Anamorphic lens flare pixel shader (Matso code)
float4 PS_ProcessPass_Anamorphic(VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR
{
float4 res;
float2 coord = IN.txcoord.xy;
float3 anamFlare = AnamorphicSample(0, coord.xy, fBlur) * float3(0.0, 0.0, 1.0);
res.rgb = anamFlare * fIntensity;
res.a = 1.0;
return res;
}
// Fast depth of field pixel shader (Matso code)
float4 PS_ProcessPass_FastDoF(VS_OUTPUT_POST IN, float2 vPos : VPOS, uniform int axis) : COLOR
{
float4 res;
float2 base = UnderWaterDistortion(IN.txcoord.xy);
float4 tcol = tex2D(SamplerColor, base.xy);
float sd = tex2D(SamplerDepth, base).x;
#ifndef USE_SMOOTH_DOF
float sf = tex2D(SamplerDepth, 0.5).x - fFocusBias * fWaterLevel;
#else
float sf = tex2D(SamplerFocus, 0.5).x - fFocusBias * 2.0 * fWaterLevel;
#endif
float outOfFocus = DOF(sd, sf);
float offset[4] = { -1.282, -0.524, 0.524, 1.282 };
#ifndef USE_NATURAL_BOKEH
float2 tds[4] = { float2(1.0, 0.0), float2(0.0, 1.0), float2(0.707, 0.707), float2(-0.707, 0.707) };
#else
float2 tds[16] = {
float2(0.2007, 0.9796),
float2(-0.2007, 0.9796),
float2(0.2007, 0.9796),
float2(-0.2007, 0.9796),
float2(0.8240, 0.5665),
float2(0.5665, 0.8240),
float2(0.8240, 0.5665),
float2(0.5665, 0.8240),
float2(0.9796, 0.2007),
float2(0.9796, -0.2007),
float2(0.9796, 0.2007),
float2(0.9796, -0.2007),
float2(-0.8240, 0.5665),
float2(-0.5665, 0.8240),
float2(-0.8240, 0.5665),
float2(-0.5665, 0.8240)
};
#endif
float blur = DOF_SCALE * outOfFocus;
float wValue = 1.0;
#ifndef USE_NATURAL_BOKEH
tdirs[axis].x *= fvTexelSize.x;
tdirs[axis].y *= fvTexelSize.y;
#endif
#ifdef USE_BOKEH_DOF
blur *= 0.35;
#endif
for (int i = 0; i < 4; i++)
{
#ifndef USE_NATURAL_BOKEH
float2 tdir = offset[i] * tds[axis] * blur;
#else
float2 tdir = tds[axis * 4 + i] * fvTexelSize * offset[i] * blur;
#endif
float2 coord = base + tdir.xy;
#ifdef USE_CHROMA_DOF
float4 ct = ChromaticAberrationFocus(coord.xy, outOfFocus);
#else
float4 ct = tex2D(SamplerColor, coord.xy);
#endif
float sds = tex2D(SamplerDepth, coord).x;
#ifndef USE_BOKEH_DOF
float w = 1.0 + abs(offset[i]); // weight blur for better effect
#else
#if USE_BOKEH_DOF == 1 // my own bokeh weighting
float b = GrayScale(ct.rgb) + length(ct.rgb) + fBokehConstant + blur;
float w = pow(b * fBokehIntensity, fBokehCurve) + abs(offset[i]) + blur;
#endif
#endif
w *= (1.0 - smoothstep(0.0, fBlurCutoff, abs(sds - sd)));
tcol += ct * w;
wValue += w;
}
tcol /= wValue;
res.xyz = tcol.xyz;
res.w = 1.0;
return res;
}
// Chromatic abrration with no DoF (Matso code)
float4 PS_ProcessPass_Chroma(VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR
{
float2 coord = IN.txcoord.xy;
float4 result = ChromaticAberration(coord.xy, 0.0);
result.a = 1.0;
return result;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
#ifdef ENABLE_SHARP
technique PostProcess
{
pass P0
{
VertexShader = compile vs_3_0 VS_PostProcess();
PixelShader = compile ps_3_0 PS_ProcessPass_Sharpen();
DitherEnable = FALSE;
ZEnable = FALSE;
CullMode = NONE;
ALPHATESTENABLE = FALSE;
SEPARATEALPHABLENDENABLE = FALSE;
AlphaBlendEnable = FALSE;
StencilEnable = FALSE;
FogEnable = FALSE;
SRGBWRITEENABLE = FALSE;
}
#ifdef USE_ANAMFLARE
pass P1
{
AlphaBlendEnable = true;
SrcBlend = One;
DestBlend = One;
PixelShader = compile ps_3_0 PS_ProcessPass_Anamorphic();
}
#endif
}
#endif
#ifndef ENABLE_FAST_DOF
#ifdef ENABLE_CHROMA
#ifndef ENABLE_SHARP
technique PostProcess
#else
technique PostProcess2
#endif
{
pass P0
{
VertexShader = compile vs_3_0 VS_PostProcess();
PixelShader = compile ps_3_0 PS_ProcessPass_Chroma();
DitherEnable = FALSE;
ZEnable = FALSE;
CullMode = NONE;
ALPHATESTENABLE = FALSE;
SEPARATEALPHABLENDENABLE = FALSE;
AlphaBlendEnable = FALSE;
StencilEnable = FALSE;
FogEnable = FALSE;
SRGBWRITEENABLE = FALSE;
}
}
#endif
#endif
#ifndef ENABLE_CHROMA
#ifdef ENABLE_FAST_DOF
#ifndef ENABLE_SHARP
technique PostProcess
#else
technique PostProcess2
#endif
{
pass P0
{
VertexShader = compile vs_3_0 VS_PostProcess();
PixelShader = compile ps_3_0 PS_ProcessPass_FastDoF(FIRST_PASS);
DitherEnable = FALSE;
ZEnable = FALSE;
CullMode = NONE;
ALPHATESTENABLE = FALSE;
SEPARATEALPHABLENDENABLE = FALSE;
AlphaBlendEnable = FALSE;
StencilEnable = FALSE;
FogEnable = FALSE;
SRGBWRITEENABLE = FALSE;
}
}
#ifndef ENABLE_SHARP
technique PostProcess2
#else
technique PostProcess3
#endif
{
pass P0
{
VertexShader = compile vs_3_0 VS_PostProcess();
PixelShader = compile ps_3_0 PS_ProcessPass_FastDoF(SECOND_PASS);
DitherEnable = FALSE;
ZEnable = FALSE;
CullMode = NONE;
ALPHATESTENABLE = FALSE;
SEPARATEALPHABLENDENABLE = FALSE;
AlphaBlendEnable = FALSE;
StencilEnable = FALSE;
FogEnable = FALSE;
SRGBWRITEENABLE = FALSE;
}
}
#ifdef USE_DOUBLE_BLUR
#ifndef ENABLE_SHARP
technique PostProcess3
#else
technique PostProcess4
#endif
{
pass P0
{
VertexShader = compile vs_3_0 VS_PostProcess();
PixelShader = compile ps_3_0 PS_ProcessPass_FastDoF(THIRD_PASS);
DitherEnable = FALSE;
ZEnable = FALSE;
CullMode = NONE;
ALPHATESTENABLE = FALSE;
SEPARATEALPHABLENDENABLE = FALSE;
AlphaBlendEnable = FALSE;
StencilEnable = FALSE;
FogEnable = FALSE;
SRGBWRITEENABLE = FALSE;
}
}
#ifndef ENABLE_SHARP
technique PostProcess4
#else
technique PostProcess5
#endif
{
pass P0
{
VertexShader = compile vs_3_0 VS_PostProcess();
PixelShader = compile ps_3_0 PS_ProcessPass_FastDoF(FOURTH_PASS);
DitherEnable = FALSE;
ZEnable = FALSE;
CullMode = NONE;
ALPHATESTENABLE = FALSE;
SEPARATEALPHABLENDENABLE = FALSE;
AlphaBlendEnable = FALSE;
StencilEnable = FALSE;
FogEnable = FALSE;
SRGBWRITEENABLE = FALSE;
}
}
#endif
#endif
#endif

351
enblens.fx Normal file
View file

@ -0,0 +1,351 @@
//++++++++++++++++++++++++++++++++++++++++++++
// ENBSeries effect file
// visit http://enbdev.com for updates
// Copyright (c) 2007-2013 Boris Vorontsov
//++++++++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++
//internal parameters, can be modified
//+++++++++++++++++++++++++++++
//none
//+++++++++++++++++++++++++++++
//external parameters, do not modify
//+++++++++++++++++++++++++++++
//keyboard controlled temporary variables (in some versions exists in the config file). Press and hold key 1,2,3...8 together with PageUp or PageDown to modify. By default all set to 1.0
float4 tempF1; //0,1,2,3
float4 tempF2; //5,6,7,8
float4 tempF3; //9,0
//x=Width, y=1/Width, z=ScreenScaleY, w=1/ScreenScaleY
float4 ScreenSize;
//changes in range 0..1, 0 means that night time, 1 - day time
float ENightDayFactor;
//changes 0 or 1. 0 means that exterior, 1 - interior
float EInteriorFactor;
//x=generic timer in range 0..1, period of 16777216 ms (4.6 hours), w=frame time elapsed (in seconds)
float4 Timer;
//additional info for computations
float4 TempParameters;
//x=reflection intensity, y=reflection power, z=dirt intensity, w=dirt power
float4 LensParameters;
//fov in degrees
float FieldOfView;
texture2D texColor;
texture2D texMask;//enblensmask texture
texture2D texBloom1;
texture2D texBloom2;
texture2D texBloom3;
texture2D texBloom4;
texture2D texBloom5;
texture2D texBloom6;
texture2D texBloom7;
texture2D texBloom8;
sampler2D SamplerColor = sampler_state
{
Texture = <texColor>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};
sampler2D SamplerMask = sampler_state
{
Texture = <texMask>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};
sampler2D SamplerBloom1 = sampler_state
{
Texture = <texBloom1>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};
sampler2D SamplerBloom2 = sampler_state
{
Texture = <texBloom2>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};
sampler2D SamplerBloom3 = sampler_state
{
Texture = <texBloom3>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};
sampler2D SamplerBloom4 = sampler_state
{
Texture = <texBloom4>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};
sampler2D SamplerBloom5 = sampler_state
{
Texture = <texBloom5>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};
sampler2D SamplerBloom6 = sampler_state
{
Texture = <texBloom6>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};
sampler2D SamplerBloom7 = sampler_state
{
Texture = <texBloom7>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};
sampler2D SamplerBloom8 = sampler_state
{
Texture = <texBloom8>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};
struct VS_OUTPUT_POST
{
float4 vpos : POSITION;
float2 txcoord0 : TEXCOORD0;
};
struct VS_INPUT_POST
{
float3 pos : POSITION;
float2 txcoord0 : TEXCOORD0;
};
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
VS_OUTPUT_POST VS_Draw(VS_INPUT_POST IN)
{
VS_OUTPUT_POST OUT;
OUT.vpos=float4(IN.pos.x,IN.pos.y,IN.pos.z,1.0);
OUT.txcoord0.xy=IN.txcoord0.xy+TempParameters.xy;//1.0/(bloomtexsize*2.0)
return OUT;
}
float4 PS_Draw(VS_OUTPUT_POST In) : COLOR
{
float4 res=0.0;
float2 coord;
//deepness, curvature, inverse size
const float3 offset[4]=
{
float3(1.6, 4.0, 1.0),
float3(0.7, 0.25, 2.0),
float3(0.3, 1.5, 0.5),
float3(-0.5, 1.0, 1.0)
};
//color filter per reflection
const float3 factors[4]=
{
float3(0.3, 0.4, 0.4),
float3(0.2, 0.4, 0.5),
float3(0.5, 0.3, 0.7),
float3(0.1, 0.2, 0.7)
};
for (int i=0; i<4; i++)
{
float2 distfact=(In.txcoord0.xy-0.5);
coord.xy=offset[i].x*distfact;
coord.xy*=pow(2.0*length(float2(distfact.x*ScreenSize.z,distfact.y)), offset[i].y);
coord.xy*=offset[i].z;
coord.xy=0.5-coord.xy;//v1
// coord.xy=In.txcoord0.xy-coord.xy;//v2
float3 templens=tex2D(SamplerBloom2, coord.xy);
templens=templens*factors[i];
distfact=(coord.xy-0.5);
distfact*=2.0;
templens*=saturate(1.0-dot(distfact,distfact));//limit by uv 0..1
// templens=factors[i] * (1.0-dot(distfact,distfact));
float maxlens=max(templens.x, max(templens.y, templens.z));
// float3 tempnor=(templens.xyz/maxlens);
// tempnor=pow(tempnor, tempF1.z);
// templens.xyz=tempnor.xyz*maxlens;
float tempnor=(maxlens/(1.0+maxlens));
tempnor=pow(tempnor, LensParameters.y);
templens.xyz*=tempnor;
res.xyz+=templens;
}
res.xyz*=0.25*LensParameters.x;
//add mask
{
coord=In.txcoord0.xy;
//coord.y*=ScreenSize.w;//remove stretching of image
float4 mask=tex2D(SamplerMask, coord);
float3 templens=tex2D(SamplerBloom6, In.txcoord0.xy);
float maxlens=max(templens.x, max(templens.y, templens.z));
float tempnor=(maxlens/(1.0+maxlens));
tempnor=pow(tempnor, LensParameters.w);
templens.xyz*=tempnor * LensParameters.z;
res.xyz+=mask.xyz * templens.xyz;
}
return res;
}
//blurring may required when quality of blurring is too bad for bilinear filtering on screen
float4 PS_LensPostPass(VS_OUTPUT_POST In) : COLOR
{
float4 res=0.0;
/*
//blur
const float2 offset[4]=
{
float2( 1.25, 1.25),
float2( 1.25,-1.25),
float2(-1.25, 1.25),
float2(-1.25,-1.25)
};
//float2 screenfact=TempParameters.y;
//screenfact.y*=ScreenSize.z;
float2 screenfact=ScreenSize.y;
screenfact.y*=ScreenSize.z;
for (int i=0; i<4; i++)
{
float2 coord=offset[i].xy*screenfact.xy+In.txcoord0.xy;
res.xyz+=tex2D(SamplerColor, coord);
}
res.xyz*=0.25;
res.xyz=min(res.xyz, 32768.0);
res.xyz=max(res.xyz, 0.0);
*/
//no blur
res=tex2D(SamplerColor, In.txcoord0.xy);
res.xyz=min(res.xyz, 32768.0);
res.xyz=max(res.xyz, 0.0);
return res;
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//actual computation, draw all effects to small texture
technique Draw
{
pass p0
{
VertexShader = compile vs_3_0 VS_Draw();
PixelShader = compile ps_3_0 PS_Draw();
ColorWriteEnable=ALPHA|RED|GREEN|BLUE;
CullMode=NONE;
AlphaBlendEnable=FALSE;
AlphaTestEnable=FALSE;
SeparateAlphaBlendEnable=FALSE;
SRGBWriteEnable=FALSE;
}
}
//final pass, output to screen with additive blending and no alpha
technique LensPostPass
{
pass p0
{
VertexShader = compile vs_3_0 VS_Draw();
PixelShader = compile ps_3_0 PS_LensPostPass();
AlphaBlendEnable=TRUE;
SrcBlend=ONE;
DestBlend=ONE;
ColorWriteEnable=RED|GREEN|BLUE;//warning, no alpha output!
CullMode=NONE;
AlphaTestEnable=FALSE;
SeparateAlphaBlendEnable=FALSE;
SRGBWriteEnable=FALSE;
}
}

BIN
enblensmask.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

88
enblocal.ini Normal file
View file

@ -0,0 +1,88 @@
; enblocal.ini : ENB configuration file.
; (C)2013 Marisa Kirisame, UnSX Team.
; Part of MariENB, the personal ENB of Marisa.
; Released under the MIT License.
[PROXY]
EnableProxyLibrary=false
InitProxyFunctions=false
ProxyLibrary=
[GLOBAL]
UsePatchSpeedhackWithoutGraphics=false
UseDefferedRendering=true
ForceFakeVideocard=false
IgnoreCreationKit=true
[PERFORMANCE]
SpeedHack=true
EnableOcclusionCulling=true
[MULTIHEAD]
ForceVideoAdapterIndex=false
VideoAdapterIndex=0
[MEMORY]
ExpandSystemMemoryX64=true
ReduceSystemMemoryUsage=true
DisableDriverMemoryManager=false
ReservedMemorySizeMb=1024
EnableUnsafeMemoryHacks=false
DisablePreloadToVRAM=true
VideoMemorySizeMb=1024
EnableCompression=true
AutodetectVideoMemorySize=true
[WINDOW]
ForceBorderless=true
ForceBorderlessFullscreen=true
[ENGINE]
ForceAnisotropicFiltering=true
MaxAnisotropy=16
EnableVSync=false
AddDisplaySuperSamplingResolutions=false
VSyncSkipNumFrames=0
ForceLodBias=true
LodBias=-0.5
[LIMITER]
WaitBusyRenderer=true
EnableFPSLimit=true
FPSLimit=60.0
[INPUT]
KeyReadConfig=8
KeyCombination=16
KeyUseEffect=123
KeyFPSLimit=0
KeyShowFPS=106
KeyScreenshot=44
KeyEditor=13
KeyFreeVRAM=115
[ADAPTIVEQUALITY]
Enable=false
Quality=2
DesiredFPS=60.0
[FIX]
FixPhysics=true
FixGameBugs=true
FixParallaxBugs=true
FixAliasedTextures=true
IgnoreLoadingScreen=false
IgnoreInventory=true
FixSsaoWaterTransparency=true
FixSsaoHairTransparency=true
FixTintGamma=true
RemoveBlur=false
FixSubSurfaceScattering=true
FixSkyReflection=true
FixCursorVisibility=true
[ANTIALIASING]
EnableEdgeAA=false
EnableSubPixelAA=false
EnableTemporalAA=true
EnableTransparencyAA=false

BIN
enbpalette.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

BIN
enbraindrops.tga Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4 KiB

View file

@ -1,148 +1,847 @@
[PROXY]
EnableProxyLibrary=0
InitProxyFunctions=0
ProxyLibrary=
; enbseries.ini : ENB configuration file.
; (C)2013 Marisa Kirisame, UnSX Team.
; Part of MariENB, the personal ENB of Marisa.
; Released under the MIT License.
[GLOBAL]
UseEffect=1
AlternativeDepth=1
AllowAntialias=1
BugFixMode=0
SkipShaderOptimization=0
QuadVertexBuffer=1
EnableShaders_3_0=1
AdditionalConfigFile=enbseries2.ini
UseMRTRendering=0
TempF1=100
TempF2=100
TempF3=100
TempF4=100
TempF5=100
TempF6=100
TempF7=100
TempF8=100
TempF9=100
TempF0=100
AdditionalConfigFile=
UseEffect=false
[EFFECT]
EnableBloom=0
EnableOcclusion=0
EnableReflection=0
EnableMotionBlur=0
EnableWater=0
EnableShadow=0
DepthBias=0
EnableDepthOfField=0
EnableReflectiveBump=0
[INPUT]
KeyUseEffect=123
KeyBloom=120
KeyOcclusion=121
KeyReflection=122
KeyCombination=16
KeyScreenshot=44
KeyShadow=119
KeyWater=118
KeyShowFPS=106
[REFLECTION]
ReflectionPower=0
ChromePower=0
UseCurrentFrameReflection=0
ReflectionQuality=0
ReflectionSourceSpecular=0
ReflectionSourceTFactor=0
UseAdditiveReflection=0
ReflectionDepthBias=0
UseLowResReflection=0
ReflectionSinglePass=0
UseEnvBump=0
EnvBumpAmount=0
EnvBumpOffset=0
ReflectionFlip=0
IBLAmount=0
IBLPower=0
UseOriginalPostProcessing=false
UseOriginalObjectsProcessing=false
EnableBloom=true
EnableAdaptation=false
EnableAmbientOcclusion=true
EnableDepthOfField=false
EnableDetailedShadow=true
EnableSunRays=true
EnableSkyLighting=true
EnableImageBasedLighting=false
EnableReflection=true
EnableSoftParticles=true
EnableParticleLights=true
EnableSunGlare=false
EnableSubSurfaceScattering=true
EnableLens=false
EnableWater=true
EnableUnderwater=true
EnableCloudShadows=true
EnableVolumetricRays=true
EnableProceduralSun=true
EnableMist=true
[BLOOM]
BloomPowerDay=0
BloomFadeTime=0
BloomConstantDay=0
BloomQuality=0
BloomScreenLevelDay=0
BloomCurveDay=0
BloomPowerNight=0
BloomConstantNight=0
BloomCurveNight=0
BloomScreenLevelNight=0
BloomAdaptationScreenLevel=0
BloomAdaptationMultiplier=0
BloomAllowOversaturation=0
BloomMaxLimit=0
Quality=1
AmountDay=0.06
AmountNight=0.09
AmountInterior=1.35
BlueShiftAmountDay=21.369999
BlueShiftAmountNight=13.0
BlueShiftAmountInterior=12.0
ContrastDay=1.0
ContrastNight=3.0
ContrastInterior=2.0
AmountSunrise=0.19
AmountSunset=0.15
AmountInteriorDay=0.1
AmountInteriorNight=0.11
BlueShiftAmountSunrise=15.77
BlueShiftAmountSunset=17.539999
BlueShiftAmountInteriorDay=19.209999
BlueShiftAmountInteriorNight=14.86
IgnoreWeatherSystem=true
[SSAO]
UseFilter=0
OcclusionQuality=0
FilterQuality=0
DarkeningLevel=0
BrighteningLevel=0
IlluminationLevel=0
AdditiveIlluminationLevel=0
UseAmbientOcclusion=0
UseIndirectLighting=0
FadeDistance=0
UseForAlphaTest=0
UseForAlphaBlend=0
[CAMERAFX]
LenzReflectionIntensityDay=1.29
LenzReflectionIntensityNight=1.14
LenzReflectionIntensityInterior=0.0
LenzReflectionPowerDay=0.91
LenzReflectionPowerNight=0.74
LenzReflectionPowerInterior=0.0
LenzReflectionIntensitySunrise=1.45
LenzReflectionIntensitySunset=1.53
LenzReflectionIntensityInteriorDay=0.950001
LenzReflectionIntensityInteriorNight=1.21
LenzReflectionPowerSunrise=0.64
LenzReflectionPowerSunset=0.64
LenzReflectionPowerInteriorDay=0.76
LenzReflectionPowerInteriorNight=0.71
[SSAO_SSIL]
UseIndirectLighting=false
UseComplexIndirectLighting=false
SamplingQuality=1
SamplingRange=1.0
FadeFogRangeDay=0.0
FadeFogRangeNight=3.0
FadeFogRangeInterior=0.0
SizeScale=0.5
SourceTexturesScale=0.5
FilterQuality=1
AOAmount=2.24
ILAmount=0.0
UseComplexAmbientOcclusion=true
UseAmbientIndirectLighting=false
SamplingPrecision=1
FadeFogRange=4.18
FilterType=0
AOAmountInterior=2.04
ILAmountInterior=0.0
AOIntensity=1.13
AOIntensityInterior=1.01
AOType=0
AOMixingType=0
AOMixingTypeInterior=0
UseOldType=false
EnableDenoiser=false
EnableSupersampling=false
EnableComplexFilter=false
ILType=0
[NIGHTDAY]
DetectorDefaultDay=false
DetectorLevelDay=0.75
DetectorLevelNight=0.25
DetectorLevelCurve=1.0
DetectorOldVersion=false
[ADAPTATION]
ForceMinMaxValues=false
AdaptationSensitivity=0.35
AdaptationTime=3.22
AdaptationMin=0.85001
AdaptationMax=1.23
[ENVIRONMENT]
DirectLightingIntensityDay=1.29
DirectLightingIntensityNight=1.28
DirectLightingIntensityInterior=1.014688
DirectLightingCurveDay=1.24
DirectLightingCurveNight=1.28
DirectLightingCurveInterior=1.25
DirectLightingDesaturationDay=0.0
DirectLightingDesaturationNight=0.0
DirectLightingDesaturationInterior=0.0
SpecularAmountMultiplierDay=0.81
SpecularAmountMultiplierNight=1.07
SpecularAmountMultiplierInterior=1.0
SpecularPowerMultiplierDay=0.641
SpecularPowerMultiplierNight=0.401
SpecularPowerMultiplierInterior=1.0
SpecularFromLightDay=0.0
SpecularFromLightNight=0.0
SpecularFromLightInterior=0.0
AmbientLightingIntensityDay=0.66
AmbientLightingIntensityNight=0.16
AmbientLightingIntensityInterior=0.914
AmbientLightingCurveDay=1.29
AmbientLightingCurveNight=1.29
AmbientLightingCurveInterior=0.75
AmbientLightingDesaturationDay=0.0
AmbientLightingDesaturationNight=0.0
AmbientLightingDesaturationInterior=0.0
PointLightingIntensityDay=1.04
PointLightingIntensityNight=1.26
PointLightingIntensityInterior=0.825
PointLightingCurveDay=1.01875
PointLightingCurveNight=1.21
PointLightingCurveInterior=0.825
PointLightingDesaturationDay=0.07
PointLightingDesaturationNight=0.06
PointLightingDesaturationInterior=0.0
FogColorMultiplierDay=0.6
FogColorMultiplierNight=0.51
FogColorMultiplierInterior=0.5
FogColorCurveDay=0.83
FogColorCurveNight=1.44
FogColorCurveInterior=1.0
ColorPowDay=1.0
ColorPowNight=1.0
ColorPowInterior=0.9
DirectLightingIntensitySunrise=1.3
DirectLightingIntensitySunset=1.41
DirectLightingIntensityInteriorDay=1.27
DirectLightingIntensityInteriorNight=1.28
DirectLightingCurveSunrise=1.37
DirectLightingCurveSunset=1.48
DirectLightingCurveInteriorDay=1.05
DirectLightingCurveInteriorNight=1.23
DirectLightingDesaturationSunrise=0.0
DirectLightingDesaturationSunset=0.0
DirectLightingDesaturationInteriorDay=0.0
DirectLightingDesaturationInteriorNight=0.0
SpecularAmountMultiplierSunrise=1.17
SpecularAmountMultiplierSunset=1.2
SpecularAmountMultiplierInteriorDay=0.92
SpecularAmountMultiplierInteriorNight=1.1
SpecularPowerMultiplierSunrise=0.231
SpecularPowerMultiplierSunset=0.211
SpecularPowerMultiplierInteriorDay=0.491
SpecularPowerMultiplierInteriorNight=0.441
SpecularFromLightSunrise=0.0
SpecularFromLightSunset=0.0
SpecularFromLightInteriorDay=0.0
SpecularFromLightInteriorNight=0.0
AmbientLightingIntensitySunrise=0.4
AmbientLightingIntensitySunset=0.34
AmbientLightingIntensityInteriorDay=0.33
AmbientLightingIntensityInteriorNight=0.25
AmbientLightingCurveSunrise=1.32
AmbientLightingCurveSunset=1.44
AmbientLightingCurveInteriorDay=1.07
AmbientLightingCurveInteriorNight=1.14
AmbientLightingDesaturationSunrise=0.0
AmbientLightingDesaturationSunset=0.0
AmbientLightingDesaturationInteriorDay=0.0
AmbientLightingDesaturationInteriorNight=0.0
AmbientColorFilterAmountSunrise=0.12
AmbientColorFilterAmountDay=0.11
AmbientColorFilterAmountSunset=0.14
AmbientColorFilterAmountNight=0.17
AmbientColorFilterAmountInteriorDay=0.11
AmbientColorFilterAmountInteriorNight=0.15
AmbientColorFilterTopSunrise=0.902, 0.784, 0.212
AmbientColorFilterTopDay=0.882, 0.863, 0.71
AmbientColorFilterTopSunset=0.945, 0.369, 0.0353
AmbientColorFilterTopNight=0.00784, 0.435, 0.737
AmbientColorFilterTopInteriorDay=0.373, 0.396, 0.451
AmbientColorFilterTopInteriorNight=0.369, 0.435, 0.565
AmbientColorFilterMiddleSunrise=0.396, 0.231, 0.0902
AmbientColorFilterMiddleDay=0.188, 0.173, 0.149
AmbientColorFilterMiddleSunset=0.227, 0.0627, 0.0157
AmbientColorFilterMiddleNight=0.141, 0.192, 0.259
AmbientColorFilterMiddleInteriorDay=0.227, 0.333, 0.392
AmbientColorFilterMiddleInteriorNight=0.18, 0.247, 0.376
AmbientColorFilterBottomSunrise=0.776, 0.545, 0.282
AmbientColorFilterBottomDay=0.518, 0.455, 0.353
AmbientColorFilterBottomSunset=0.851, 0.384, 0.184
AmbientColorFilterBottomNight=0.11, 0.165, 0.408
AmbientColorFilterBottomInteriorDay=0.169, 0.29, 0.294
AmbientColorFilterBottomInteriorNight=0.0824, 0.133, 0.278
PointLightingIntensitySunrise=1.11
PointLightingIntensitySunset=1.11
PointLightingIntensityInteriorDay=1.17
PointLightingIntensityInteriorNight=1.15
PointLightingCurveSunrise=1.3
PointLightingCurveSunset=1.33
PointLightingCurveInteriorDay=1.06
PointLightingCurveInteriorNight=1.16
PointLightingDesaturationSunrise=0.08
PointLightingDesaturationSunset=0.06
PointLightingDesaturationInteriorDay=0.03
PointLightingDesaturationInteriorNight=0.04
ParticleLightsIntensitySunrise=0.92
ParticleLightsIntensityDay=0.86
ParticleLightsIntensitySunset=0.93
ParticleLightsIntensityNight=0.96
ParticleLightsIntensityInteriorDay=0.62
ParticleLightsIntensityInteriorNight=0.81
FogColorMultiplierSunrise=0.4
FogColorMultiplierSunset=0.35
FogColorMultiplierInteriorDay=0.39
FogColorMultiplierInteriorNight=0.13
FogColorCurveSunrise=1.47
FogColorCurveSunset=1.88
FogColorCurveInteriorDay=0.72
FogColorCurveInteriorNight=1.49
ColorPowSunrise=1.0
ColorPowSunset=1.0
ColorPowInteriorDay=1.0
ColorPowInteriorNight=1.0
IgnoreWeatherSystem=true
[SKY]
Enable=true
StarsIntensity=1.88
StarsCurve=1.23
AuroraBorealisIntensity=1.2
AuroraBorealisCurve=0.46
CloudsIntensityDay=1.020001
CloudsIntensityNight=0.510001
CloudsIntensityInterior=1.49
CloudsCurveDay=1.18
CloudsCurveNight=1.03
CloudsCurveInterior=1.5
CloudsDesaturationDay=0.15
CloudsDesaturationNight=0.06
CloudsDesaturationInterior=0.14
CloudsEdgeClamp=0.84
CloudsEdgeIntensity=2.53
GradientIntensityDay=1.310001
GradientIntensityNight=0.740001
GradientIntensityInterior=0.85
GradientDesaturationDay=0.29
GradientDesaturationNight=0.04
GradientDesaturationInterior=0.325
GradientTopIntensityDay=2.570001
GradientTopIntensityNight=1.550001
GradientTopIntensityInterior=5.6125
GradientTopCurveDay=2.21
GradientTopCurveNight=1.57
GradientTopCurveInterior=2.15
GradientMiddleIntensityDay=2.360001
GradientMiddleIntensityNight=1.020001
GradientMiddleIntensityInterior=2.4
GradientMiddleCurveDay=2.06
GradientMiddleCurveNight=1.41
GradientMiddleCurveInterior=1.65
GradientHorizonIntensityDay=3.76
GradientHorizonIntensityNight=1.840001
GradientHorizonIntensityInterior=2.33
GradientHorizonCurveDay=1.52
GradientHorizonCurveNight=1.36
GradientHorizonCurveInterior=1.25
SunIntensity=3.0
SunDesaturation=0.0
SunCoronaIntensity=0.911
SunCoronaCurve=3.19
SunCoronaDesaturation=0.09
MoonIntensity=1.6
MoonCurve=1.0
MoonDesaturation=0.2
DisableWrongSkyMath=true
CloudsIntensitySunrise=0.550001
CloudsIntensitySunset=0.63
CloudsIntensityInteriorDay=0.98
CloudsIntensityInteriorNight=0.44
CloudsCurveSunrise=1.67
CloudsCurveSunset=1.46
CloudsCurveInteriorDay=1.12
CloudsCurveInteriorNight=1.05
CloudsDesaturationSunrise=0.04
CloudsDesaturationSunset=0.02
CloudsDesaturationInteriorDay=0.13
CloudsDesaturationInteriorNight=0.04
GradientIntensitySunrise=0.920001
GradientIntensitySunset=0.930001
GradientIntensityInteriorDay=1.41
GradientIntensityInteriorNight=0.870001
GradientDesaturationSunrise=0.53
GradientDesaturationSunset=0.1
GradientDesaturationInteriorDay=0.29
GradientDesaturationInteriorNight=0.04
GradientTopIntensitySunrise=1.620001
GradientTopIntensitySunset=1.69
GradientTopIntensityInteriorDay=2.7
GradientTopIntensityInteriorNight=1.48
GradientTopCurveSunrise=1.97
GradientTopCurveSunset=2.04
GradientTopCurveInteriorDay=2.47
GradientTopCurveInteriorNight=1.59
GradientMiddleIntensitySunrise=0.770001
GradientMiddleIntensitySunset=1.13
GradientMiddleIntensityInteriorDay=2.6
GradientMiddleIntensityInteriorNight=1.09
GradientMiddleCurveSunrise=2.3
GradientMiddleCurveSunset=2.6
GradientMiddleCurveInteriorDay=2.2
GradientMiddleCurveInteriorNight=1.4
GradientHorizonIntensitySunrise=2.05
GradientHorizonIntensitySunset=2.21
GradientHorizonIntensityInteriorDay=3.78
GradientHorizonIntensityInteriorNight=1.82
GradientHorizonCurveSunrise=1.13
GradientHorizonCurveSunset=1.13
GradientHorizonCurveInteriorDay=1.44
GradientHorizonCurveInteriorNight=1.34
SunIntensitySunrise=1.28
SunIntensityDay=1.1
SunIntensitySunset=1.07
SunIntensityNight=1.04
SunIntensityInteriorDay=1.09
SunIntensityInteriorNight=1.03
SunDesaturationSunrise=0.0
SunDesaturationDay=0.0
SunDesaturationSunset=0.0
SunDesaturationNight=0.0
SunDesaturationInteriorDay=0.0
SunDesaturationInteriorNight=0.0
SunColorFilterSunrise=1, 0.788, 0.161
SunColorFilterDay=1, 1, 1
SunColorFilterSunset=0.82, 0.239, 0.137
SunColorFilterNight=0, 0, 0
SunColorFilterInteriorDay=1, 1, 1
SunColorFilterInteriorNight=0, 0, 0
SunGlowIntensitySunrise=3.64
SunGlowIntensityDay=3.15
SunGlowIntensitySunset=4.37
SunGlowIntensityNight=2.92
SunGlowIntensityInteriorDay=3.45
SunGlowIntensityInteriorNight=3.24
SunGlowHazinessSunrise=0.08
SunGlowHazinessDay=0.37
SunGlowHazinessSunset=0.07
SunGlowHazinessNight=0.17
SunGlowHazinessInteriorDay=0.28
SunGlowHazinessInteriorNight=0.11
MoonIntensitySunrise=0.85
MoonIntensityDay=0.72
MoonIntensitySunset=1.24
MoonIntensityNight=1.52
MoonIntensityInteriorDay=0.58
MoonIntensityInteriorNight=1.3
MoonCurveSunrise=0.97
MoonCurveDay=0.88
MoonCurveSunset=0.93
MoonCurveNight=1.07
MoonCurveInteriorDay=0.86
MoonCurveInteriorNight=1.04
MoonDesaturationSunrise=0.17
MoonDesaturationDay=0.23
MoonDesaturationSunset=0.14
MoonDesaturationNight=0.12
MoonDesaturationInteriorDay=0.22
MoonDesaturationInteriorNight=0.13
CloudsOpacitySunrise=1.48
CloudsOpacityDay=1.52
CloudsOpacitySunset=1.37
CloudsOpacityNight=1.12
CloudsOpacityInteriorDay=1.63
CloudsOpacityInteriorNight=1.43
CloudsEdgeFadeRange=0.95
CloudsEdgeMoonMultiplier=4.32
IgnoreWeatherSystem=true
[OBJECT]
SubSurfaceScatteringMultiplierDay=0.0
SubSurfaceScatteringMultiplierNight=0.0
SubSurfaceScatteringMultiplierInterior=0.0
SubSurfaceScatteringPowerDay=1.0
SubSurfaceScatteringPowerNight=1.0
SubSurfaceScatteringPowerInterior=1.1
SubSurfaceScatteringMultiplierSunrise=0.0
SubSurfaceScatteringMultiplierSunset=0.0
SubSurfaceScatteringMultiplierInteriorDay=0.0
SubSurfaceScatteringMultiplierInteriorNight=0.0
SubSurfaceScatteringPowerSunrise=1.0
SubSurfaceScatteringPowerSunset=1.0
SubSurfaceScatteringPowerInteriorDay=1.0
SubSurfaceScatteringPowerInteriorNight=1.0
IgnoreWeatherSystem=true
[LIGHTSPRITE]
IntensityDay=0.53
IntensityNight=0.81
IntensityInterior=0.5
CurveDay=0.93
CurveNight=1.305
CurveInterior=0.925
IntensitySunrise=0.64
IntensitySunset=0.7
IntensityInteriorDay=1.07
IntensityInteriorNight=0.96
CurveSunrise=1.16
CurveSunset=0.93
CurveInteriorDay=1.25
CurveInteriorNight=1.34
IgnoreWeatherSystem=true
[WINDOWLIGHT]
Intensity=2.625
Curve=1.0
IntensitySunrise=1.02
IntensityDay=0.89
IntensitySunset=1.53
IntensityNight=1.88
IntensityInteriorDay=1.98
IntensityInteriorNight=0.85
CurveSunrise=1.07
CurveDay=1.14
CurveSunset=1.33
CurveNight=1.14
CurveInteriorDay=0.86
CurveInteriorNight=1.32
IgnoreWeatherSystem=true
[VOLUMETRICFOG]
IntensityDay=1.106
IntensityNight=0.89
IntensityInterior=0.265
CurveDay=1.11
CurveNight=0.8
CurveInterior=1.0
IntensitySunrise=0.38
IntensitySunset=0.56
IntensityInteriorDay=1.17
IntensityInteriorNight=0.85
CurveSunrise=1.05
CurveSunset=1.15
CurveInteriorDay=1.16
CurveInteriorNight=0.86
LightingInfluenceSunrise=1.03
LightingInfluenceDay=0.58
LightingInfluenceSunset=1.27
LightingInfluenceNight=0.85
LightingInfluenceInteriorDay=0.58
LightingInfluenceInteriorNight=0.9
EnableShadows=true
IgnoreWeatherSystem=true
[FIRE]
IntensityDay=1.875
IntensityNight=1.5
IntensityInterior=1.65
CurveDay=0.75
CurveNight=1.04
CurveInterior=1.0
IntensitySunrise=1.63
IntensitySunset=1.42
IntensityInteriorDay=1.31
IntensityInteriorNight=1.21
CurveSunrise=0.94
CurveSunset=0.91
CurveInteriorDay=0.84
CurveInteriorNight=0.9
AdditiveBlending=true
IgnoreWeatherSystem=true
[COLORCORRECTION]
DarkeningAmountDay=0
ScreenLevelDay=0
ScreenLevelNight=0
DarkeningAmountNight=0
GammaCurveDay=0
GammaCurveNight=0
ColorSaturationDay=0
ColorSaturationNight=0
UsePaletteTexture=0
[WATER]
UseWaterDeep=0
WaterDeepness=0
WaterQuality=0
UsePaletteTexture=true
Brightness=1.0
GammaCurve=1.0
UseProceduralCorrection=true
[SHADOW]
ShadowFadeStart=0
ShadowFadeEnd=0
ShadowAmountDay=0
ShadowAmountNight=0
ShadowScreenLevelDay=0
ShadowScreenLevelNight=0
ShadowQuality=0
UseShadowFilter=0
FilterQuality=0
ShadowBlurRange=0
[ENGINE]
ForceAnisotropicFiltering=0
MaxAnisotropy=16
ForceDisplayRefreshRate=0
DisplayRefreshRateHz=60
[MOTIONBLUR]
MotionBlurQuality=0
MotionBlurVelocity=0
MotionBlurRotation=0
[PERPIXELLIGHTING]
SpecularColorMin=0
SpecularColorMax=0
SpecularColorMultiplier=0
SpecularGlossinessMin=0
SpecularGlossinessMax=0
SpecularGlossinessMultiplier=0
ShadowCastersFix=true
ShadowQualityFix=true
DetailedShadowQuality=1
UseBilateralShadowFilter=true
UseShadowFilter=true
ShadowFilterQuality=1
ShadowBlurRange=1.65
ShadowBlurRangeInterior=1.17
IgnoreWeatherSystem=true
[DEPTHOFFIELD]
DOFQuality=0
DOFNumberOfPasses=0
DOFFocusRange=0
DOFBlurinessRange=0
FadeTime=0.85
Quality=1
IgnoreWeatherSystem=true
[RAYS]
SunRaysMultiplier=0.75
SunRaysMultiplierSunrise=0.59
SunRaysMultiplierDay=0.24
SunRaysMultiplierSunset=0.54
SunRaysMultiplierNight=0.32
SunRaysMultiplierInteriorDay=0.37
SunRaysMultiplierInteriorNight=0.44
IgnoreWeatherSystem=true
[SKYLIGHTING]
Quality=1
FilterQuality=1
AmbientMinLevel=0.39375
AmbientMinLevelSunrise=0.33
AmbientMinLevelDay=0.64
AmbientMinLevelSunset=0.4
AmbientMinLevelNight=0.29
AmbientMinLevelInteriorDay=0.22
AmbientMinLevelInteriorNight=0.18
IgnoreWeatherSystem=true
[WEATHER]
EnableMultipleWeathers=false
[TIMEOFDAY]
Enable=true
DawnDuration=2.0
SunriseTime=6.5
DayTime=12.0
SunsetTime=18.5
DuskDuration=2.0
NightTime=0.0
[VEGETATION]
SubSurfaceScatteringMultiplierSunrise=0.0
SubSurfaceScatteringMultiplierDay=0.0
SubSurfaceScatteringMultiplierSunset=0.0
SubSurfaceScatteringMultiplierNight=0.0
SubSurfaceScatteringMultiplierInteriorDay=0.0
SubSurfaceScatteringMultiplierInteriorNight=0.0
SubSurfaceScatteringPowerSunrise=1.0
SubSurfaceScatteringPowerDay=1.0
SubSurfaceScatteringPowerSunset=1.0
SubSurfaceScatteringPowerNight=1.0
SubSurfaceScatteringPowerInteriorDay=1.0
SubSurfaceScatteringPowerInteriorNight=1.0
IgnoreWeatherSystem=true
[PARTICLE]
IntensitySunrise=0.81
IntensityDay=0.94
IntensitySunset=0.85
IntensityNight=0.72
IntensityInteriorDay=1.14
IntensityInteriorNight=0.73
LightingInfluenceSunrise=1.49
LightingInfluenceDay=0.86
LightingInfluenceSunset=1.82
LightingInfluenceNight=0.92
LightingInfluenceInteriorDay=0.84
LightingInfluenceInteriorNight=0.95
IgnoreWeatherSystem=true
[REFLECTION]
Quality=1
FilterQuality=1
FilterBluriness=1.0
SizeScale=0.5
SourceTexturesScale=0.5
Amount=0.56
Power=1.41
GlosinessMin=0.0
GlosinessMax=1.0
EnableDenoiser=false
DenoiserType=0
EnableSupersampling=false
ExteriorEnable=true
InteriorEnable=true
IgnoreWeatherSystem=true
[IMAGEBASEDLIGHTING]
AdditiveAmountSunrise=0.02
AdditiveAmountDay=0.03
AdditiveAmountSunset=0.02
AdditiveAmountNight=0.01
AdditiveAmountInteriorDay=0.02
AdditiveAmountInteriorNight=0.01
MultiplicativeAmountSunrise=0.09
MultiplicativeAmountDay=0.06
MultiplicativeAmountSunset=0.1
MultiplicativeAmountNight=0.03
MultiplicativeAmountInteriorDay=0.05
MultiplicativeAmountInteriorNight=0.02
ReflectiveAmountSunrise=0.15
ReflectiveAmountDay=0.12
ReflectiveAmountSunset=0.17
ReflectiveAmountNight=0.06
ReflectiveAmountInteriorDay=0.11
ReflectiveAmountInteriorNight=0.04
IgnoreWeatherSystem=true
[RAIN]
Enable=true
EnableAntialiasing=false
EnableSupersampling=false
MotionStretch=0.35
MotionTransparency=0.89
IgnoreWeatherSystem=true
[EYES]
SubSurfaceScatteringMultiplierSunrise=0.0
SubSurfaceScatteringMultiplierDay=0.0
SubSurfaceScatteringMultiplierSunset=0.0
SubSurfaceScatteringMultiplierNight=0.0
SubSurfaceScatteringMultiplierInteriorDay=0.0
SubSurfaceScatteringMultiplierInteriorNight=0.0
SubSurfaceScatteringPowerSunrise=1.0
SubSurfaceScatteringPowerDay=1.0
SubSurfaceScatteringPowerSunset=1.0
SubSurfaceScatteringPowerNight=1.0
SubSurfaceScatteringPowerInteriorDay=1.0
SubSurfaceScatteringPowerInteriorNight=1.0
IgnoreWeatherSystem=true
[SUBSURFACESCATTERING]
Quality=1
Radius=2.18
Amount=0.5
EpidermalAmount=1.23
SubdermalAmount=2.25
EpidermalDiffuseSaturation=-0.13
SubdermalDiffuseSaturation=0.03
EpidermalMix=0.92
SubdermalMix=0.49
SubdermalTranslucency=0.95
SubdermalPhase=0.92
IgnoreWeatherSystem=true
[LENS]
ReflectionIntensitySunrise=1.049999
ReflectionIntensityDay=0.99
ReflectionIntensitySunset=1.16
ReflectionIntensityNight=1.4
ReflectionIntensityInteriorDay=0.88
ReflectionIntensityInteriorNight=1.120001
ReflectionPowerSunrise=1.68
ReflectionPowerDay=2.05
ReflectionPowerSunset=1.5
ReflectionPowerNight=1.11
ReflectionPowerInteriorDay=1.43
ReflectionPowerInteriorNight=1.22
DirtIntensitySunrise=1.79
DirtIntensityDay=1.51
DirtIntensitySunset=1.84
DirtIntensityNight=1.08
DirtIntensityInteriorDay=1.44
DirtIntensityInteriorNight=1.22
DirtPowerSunrise=1.16
DirtPowerDay=1.33
DirtPowerSunset=1.06
DirtPowerNight=1.5
DirtPowerInteriorDay=1.39
DirtPowerInteriorNight=1.49
IgnoreWeatherSystem=true
[WATER]
EnableDispersion=true
EnableCaustics=true
ReflectionAmount=0.86
FrennelMultiplier=3.16
FrennelMin=0.18
FrennelMax=1.0
DispersionAmount=0.93
CausticsAmount=1.46
EnableParallax=true
EnableShadow=true
EnableSelfReflection=true
EnableLighting=true
EnableDisplacement=true
DisplacementQuality=1
SunSpecularMultiplier=1.63
SunScatteringMultiplier=2.07
WavesAmplitudeSunrise=1.0
WavesAmplitudeDay=1.0
WavesAmplitudeSunset=1.0
WavesAmplitudeNight=1.0
WavesAmplitudeInteriorDay=1.0
WavesAmplitudeInteriorNight=1.0
ShadowQuality=1
EnableShadowNoise=true
SunLightingMultiplier=0.76
WetMultiplier=0.7
Muddiness=0.44
EnablePreCache=true
EnableVolumetricShadow=true
DisplacementFilterQuality=1
IgnoreWeatherSystem=true
[UNDERWATER]
EnableDispersion=true
EnableParallax=true
EnableDisplacement=true
EnableSilhouette=true
EnableBlurring=true
EnableReflection=true
EnableShadow=true
ShadowQuality=1
DispersionAmount=0.96
ReflectionAmount=0.97
TransparencyFade=3.56
TransparencyCurve=1.03
DeepnessFade=3.88
DeepnessDarkening=0.93
TintAmount=3.27
TintFade=4.7
SunScatteringMultiplier=1.68
IgnoreWeatherSystem=true
[CLOUDSHADOWS]
EnableAtNight=true
OpacitySunrise=0.73
OpacityDay=0.57
OpacitySunset=0.76
OpacityNight=0.91
OpacityInteriorDay=0.62
OpacityInteriorNight=0.98
IgnoreWeatherSystem=true
[VOLUMETRICRAYS]
Quality=1
IntensitySunrise=0.67
IntensityDay=0.42
IntensitySunset=0.77
IntensityNight=0.41
IntensityInteriorDay=0.58
IntensityInteriorNight=0.5
DensitySunrise=1.76
DensityDay=0.94
DensitySunset=1.6
DensityNight=0.62
DensityInteriorDay=1.44
DensityInteriorNight=0.51
SkyColorAmountSunrise=0.89
SkyColorAmountDay=0.69
SkyColorAmountSunset=0.87
SkyColorAmountNight=0.72
SkyColorAmountInteriorDay=0.63
SkyColorAmountInteriorNight=0.78
IgnoreWeatherSystem=true
[PROCEDURALSUN]
Size=0.68
EdgeSoftness=0.51
GlowIntensitySunrise=0.88
GlowIntensityDay=0.57
GlowIntensitySunset=0.89
GlowIntensityNight=0.16
GlowIntensityInteriorDay=0.95
GlowIntensityInteriorNight=0.09
GlowCurveSunrise=9.68
GlowCurveDay=7.46
GlowCurveSunset=8.29
GlowCurveNight=1.85
GlowCurveInteriorDay=9.31
GlowCurveInteriorNight=1.48
IgnoreWeatherSystem=true
[MIST]
ColorFromEnvironmentFog=0.75
SkyLightingAmountSunrise=0.55
SkyLightingAmountDay=0.37
SkyLightingAmountSunset=0.36
SkyLightingAmountNight=0.39
SkyLightingAmountInteriorDay=0.88
SkyLightingAmountInteriorNight=0.48
SunLightingAmountSunrise=1.18
SunLightingAmountDay=0.92
SunLightingAmountSunset=1.19
SunLightingAmountNight=0.19
SunLightingAmountInteriorDay=0.87
SunLightingAmountInteriorNight=0.05
DesaturationSunrise=0.0
DesaturationDay=0.0
DesaturationSunset=0.0
DesaturationNight=0.0
DesaturationInteriorDay=0.0
DesaturationInteriorNight=0.0
ColorFilterSunrise=1, 0.957, 0.863
ColorFilterDay=0.925, 0.984, 1
ColorFilterSunset=1, 0.714, 0.58
ColorFilterNight=0.396, 0.494, 0.663
ColorFilterInteriorDay=0.922, 0.988, 1
ColorFilterInteriorNight=0.443, 0.506, 0.69
RelativeToCameraSunrise=0.12
RelativeToCameraDay=0.51
RelativeToCameraSunset=0.17
RelativeToCameraNight=0.25
RelativeToCameraInteriorDay=0.58
RelativeToCameraInteriorNight=0.21
VerticalOffsetSunrise=-9.31
VerticalOffsetDay=-10.97
VerticalOffsetSunset=-9.04
VerticalOffsetNight=-11.14
VerticalOffsetInteriorDay=-10.44
VerticalOffsetInteriorNight=-11.26
DensitySunrise=1.41
DensityDay=1.25
DensitySunset=1.28
DensityNight=1.14
DensityInteriorDay=1.29
DensityInteriorNight=1.17
VerticalFadeSunrise=4.93
VerticalFadeDay=4.46
VerticalFadeSunset=5.07
VerticalFadeNight=4.83
VerticalFadeInteriorDay=4.39
VerticalFadeInteriorNight=4.78
BottomTopSunrise=0.17
BottomTopDay=0.0
BottomTopSunset=0.09
BottomTopNight=0.03
BottomTopInteriorDay=0.0
BottomTopInteriorNight=0.01
ExponentialFadeSunrise=0.89
ExponentialFadeDay=0.95
ExponentialFadeSunset=0.83
ExponentialFadeNight=1.15
ExponentialFadeInteriorDay=0.96
ExponentialFadeInteriorNight=1.09
IgnoreWeatherSystem=true
EnableAnchors=false

297
enbseries/_weatherlist.ini Normal file
View file

@ -0,0 +1,297 @@
[WEATHER001]
FileName=
WeatherIDs=
[WEATHER002]
FileName=
WeatherIDs=
[WEATHER003]
FileName=
WeatherIDs=
[WEATHER004]
FileName=
WeatherIDs=
[WEATHER005]
FileName=
WeatherIDs=
[WEATHER006]
FileName=
WeatherIDs=
[WEATHER007]
FileName=
WeatherIDs=
[WEATHER008]
FileName=
WeatherIDs=
[WEATHER009]
FileName=
WeatherIDs=
[WEATHER010]
FileName=
WeatherIDs=
[WEATHER011]
FileName=
WeatherIDs=
[WEATHER012]
FileName=
WeatherIDs=
[WEATHER013]
FileName=
WeatherIDs=
[WEATHER014]
FileName=
WeatherIDs=
[WEATHER015]
FileName=
WeatherIDs=
[WEATHER016]
FileName=
WeatherIDs=
[WEATHER017]
FileName=
WeatherIDs=
[WEATHER018]
FileName=
WeatherIDs=
[WEATHER019]
FileName=
WeatherIDs=
[WEATHER020]
FileName=
WeatherIDs=
[WEATHER021]
FileName=
WeatherIDs=
[WEATHER022]
FileName=
WeatherIDs=
[WEATHER023]
FileName=
WeatherIDs=
[WEATHER024]
FileName=
WeatherIDs=
[WEATHER025]
FileName=
WeatherIDs=
[WEATHER026]
FileName=
WeatherIDs=
[WEATHER027]
FileName=
WeatherIDs=
[WEATHER028]
FileName=
WeatherIDs=
[WEATHER029]
FileName=
WeatherIDs=
[WEATHER030]
FileName=
WeatherIDs=
[WEATHER031]
FileName=
WeatherIDs=
[WEATHER032]
FileName=
WeatherIDs=
[WEATHER033]
FileName=
WeatherIDs=
[WEATHER034]
FileName=
WeatherIDs=
[WEATHER035]
FileName=
WeatherIDs=
[WEATHER036]
FileName=
WeatherIDs=
[WEATHER037]
FileName=
WeatherIDs=
[WEATHER038]
FileName=
WeatherIDs=
[WEATHER039]
FileName=
WeatherIDs=
[WEATHER040]
FileName=
WeatherIDs=
[WEATHER041]
FileName=
WeatherIDs=
[WEATHER042]
FileName=
WeatherIDs=
[WEATHER043]
FileName=
WeatherIDs=
[WEATHER044]
FileName=
WeatherIDs=
[WEATHER045]
FileName=
WeatherIDs=
[WEATHER046]
FileName=
WeatherIDs=
[WEATHER047]
FileName=
WeatherIDs=
[WEATHER048]
FileName=
WeatherIDs=
[WEATHER049]
FileName=
WeatherIDs=
[WEATHER050]
FileName=
WeatherIDs=
[WEATHER051]
FileName=
WeatherIDs=
[WEATHER052]
FileName=
WeatherIDs=
[WEATHER053]
FileName=
WeatherIDs=
[WEATHER054]
FileName=
WeatherIDs=
[WEATHER055]
FileName=
WeatherIDs=
[WEATHER056]
FileName=
WeatherIDs=
[WEATHER057]
FileName=
WeatherIDs=
[WEATHER058]
FileName=
WeatherIDs=
[WEATHER059]
FileName=
WeatherIDs=
[WEATHER060]
FileName=
WeatherIDs=
[WEATHER061]
FileName=
WeatherIDs=
[WEATHER062]
FileName=
WeatherIDs=
[WEATHER063]
FileName=
WeatherIDs=
[WEATHER064]
FileName=
WeatherIDs=
[WEATHER065]
FileName=
WeatherIDs=
[WEATHER066]
FileName=
WeatherIDs=
[WEATHER067]
FileName=
WeatherIDs=
[WEATHER068]
FileName=
WeatherIDs=
[WEATHER069]
FileName=
WeatherIDs=
[WEATHER070]
FileName=
WeatherIDs=
[WEATHER071]
FileName=
WeatherIDs=
[WEATHER072]
FileName=
WeatherIDs=
[WEATHER073]
FileName=
WeatherIDs=
[WEATHER074]
FileName=
WeatherIDs=
[WEATHER075]
FileName=
WeatherIDs=
[WEATHER076]
FileName=
WeatherIDs=
[WEATHER077]
FileName=
WeatherIDs=
[WEATHER078]
FileName=
WeatherIDs=
[WEATHER079]
FileName=
WeatherIDs=
[WEATHER080]
FileName=
WeatherIDs=
[WEATHER081]
FileName=
WeatherIDs=
[WEATHER082]
FileName=
WeatherIDs=
[WEATHER083]
FileName=
WeatherIDs=
[WEATHER084]
FileName=
WeatherIDs=
[WEATHER085]
FileName=
WeatherIDs=
[WEATHER086]
FileName=
WeatherIDs=
[WEATHER087]
FileName=
WeatherIDs=
[WEATHER088]
FileName=
WeatherIDs=
[WEATHER089]
FileName=
WeatherIDs=
[WEATHER090]
FileName=
WeatherIDs=
[WEATHER091]
FileName=
WeatherIDs=
[WEATHER092]
FileName=
WeatherIDs=
[WEATHER093]
FileName=
WeatherIDs=
[WEATHER094]
FileName=
WeatherIDs=
[WEATHER095]
FileName=
WeatherIDs=
[WEATHER096]
FileName=
WeatherIDs=
[WEATHER097]
FileName=
WeatherIDs=
[WEATHER098]
FileName=
WeatherIDs=
[WEATHER099]
FileName=
WeatherIDs=

96
enbseries/effect.txt.ini Normal file
View file

@ -0,0 +1,96 @@
[EFFECT.TXT]
TECHNIQUE=0
EnableFXAA=false
FXAASpanMax=3.999999
FXAAReduceMul=16.0
FXAAReduceMin=128.0
EnableBorderBlur=true
BorderBlurSamplingRange=1.0
BorderBlurPower=22.0
BorderBlurCurve=1.5
BorderBlurRadius=0.55
BorderBlurSize=1
EnableCrossBlur=true
CrossBlurSamplingRange=1.0
CrossBlurSize=1
EnableCompensate=true
CompensateFactor=0.19
CompensatePower=1.05
CompensateSaturation=0.3
CompensateBump=0.0
EnableGrading=true
GradingAddR=0.0
GradingAddG=0.0
GradingAddB=0.0
GradingMulR=1.02
GradingMulG=1.08
GradingMulB=1.04
GradingPowR=1.07
GradingPowG=1.12
GradingPowB=1.08
GradingColR=0.04
GradingColG=0.07
GradingColB=0.59
GradingColFactor=-0.24
EnableSoftGrain=true
SoftGrainSpeed=2.679999
SoftGrainIntensity=0.04
SoftGrainSaturation=0.09
SoftGrainPatterned=true
SoftGrainBlendfunc=1
SoftGrainDeviation=0.05
SoftGrainMagnification11=2.049997
SoftGrainMagnification12=3.109994
SoftGrainMagnification13=2.22
SoftGrainMagnification21=4.249999
SoftGrainMagnification22=0.419999
SoftGrainMagnification23=6.290002
SoftGrainPower=2.93
EnableBlockGFX=false
BlockGFXResolutionW=1.0
BlockGFXResolutionH=1.0
BlockGFXNoScale=false
BlockGFXAspect=false
BlockGFXBorder=0.0
BlockGFXpalette=5
EnableDotMatrix=false
DotBlend=0.2
DotSize=1
EnableDirt=true
DirtFactor=0.03
EnableCurvature=false
CurveChromaticAberration=0.03
CurveZoom=49.999928
CurveLens=0.0
CurveLensCubic=0.0
SoftGrainTwopass=true
SoftGrainMagnification1=1.250002
SoftGrainMagnification2=0.639998
SoftGrainMagnification3=0.350001
DirtCoordFactor=0.09
DirtLuminanceFactor=0.0
DirtCoordMagnification=3.039998
DirtLuminanceMagnification=1.0
EnableBox=true
BoxHorizontal=1.5
BoxVertical=1.0
BoxSoften=0.02
BoxAlpha=6.069999
BlockGFXcgamode=0
DarkEnable=true
DarkRadius=0.37
DarkCurve=1.94
DarkBump=0.79
BlurEnable=true
BlurSample=2.25
BlurLevel=1
BlurPower=15.46
BlurCurve=1.2
BlurRadius=0.69
EnableMud=true
MudLevel=3
MudSample=16.32
MudFactor=1.52
MudPower=1.73
MudSaturation=1.6
MudBump=-0.32

View file

@ -0,0 +1,2 @@
[ENBBLOOM.FX]
TECHNIQUE=0

View file

@ -0,0 +1,23 @@
[ENBEFFECT.FX]
TECHNIQUE=0
EBrightnessV2Day=6.25
EAdaptationMinV2Day=0.03
EAdaptationMaxV2Day=0.93
EToneMappingCurveV2Day=3.61
EIntensityContrastV2Day=0.97
EToneMappingOversaturationV2Day=15.990001
EColorSaturationV2Day=1.01
EBrightnessV2Night=3.77
EAdaptationMinV2Night=1.14
EAdaptationMaxV2Night=0.05
EToneMappingCurveV2Night=3.26
EIntensityContrastV2Night=0.94
EToneMappingOversaturationV2Night=26.289999
EColorSaturationV2Night=0.9
EBrightnessV2Interior=10.27
EAdaptationMinV2Interior=1.27
EAdaptationMaxV2Interior=0.1
EToneMappingCurveV2Interior=3.62
EIntensityContrastV2Interior=0.99
EToneMappingOversaturationV2Interior=15.94
EColorSaturationV2Interior=1.09

View file

@ -0,0 +1,2 @@
[ENBEFFECTPREPASS.FX]
TECHNIQUE=0

25
enbseries/enblens.fx.ini Normal file
View file

@ -0,0 +1,25 @@
[ENBLENS.FX]
TECHNIQUE=0
EnableLens=true
LensAspect=false
LensGhosts=3
LensDistortion=0.85
LensBaseScale=1.94
LensBaseBias=-0.32
LensDisplacement=0.79
LensHalo=0.44
LensHaloScale=0.44
LensHaloBias=-0.74
LensBasePower=6.33
LensHaloPower=2.85
LensMirrorScale=3.25
LensMirrorBias=-0.33
LensMirrorPower=0.67
LensBaseSaturation=0.52
LensHaloSaturation=0.67
LensMirrorSaturation=0.74
DirtFactor=0.42
DirtPower=1.65
DirtSample=8.0
LensLevel=0
LensSample=8.0

View file

@ -0,0 +1,2 @@
[ENBSUNSPRITE.FX]
TECHNIQUE=0

735
enbsunsprite.fx Normal file
View file

@ -0,0 +1,735 @@
// K ENB
// Multiple Passes Lenzes w_Individual Size and Color Control
// Code extensive modifications by KYO aka Oyama w/some help from Boris ;)
// Lenz Texture by OpethFeldt
// Copyright (c) 2007-2013 Boris Vorontsov
// Medium Hexagons
//=====================================================================================================
// Internal parameters
//=====================================================================================================
float ELenzIntensity=1.0; //[Global Intensity]
float LenzScaleFactor=0.288; //[Global Scale, will affect all lenzes] //1.0, 0.75, 0.66, 0.5, 0.25, 0.33, 0.322, so on
float LenzFactorDraw=1.0; //[Allows for separated factors in case of additional Draw techniques, such as Draw2, ect...]
float LenzContrastDraw=1.3; //[Contrast to clouds - More is weaker opacity compared to clouds]
/**
* Separated Lenzes controls for Draw techniques : Offset, Scale, Scale Factor, Color RGB, Color Multiplier
* KYO : color balance will also act as a separate intensity control for each lenz
* Color : 1.0, 1.0, 1.0 is full intensity / opacity
* If color components are below 1.0, lenz is losing opacity
* You can counterbalance it by increasing f#_ColorMultiplier over 1.0
* Fine tuning is balancing global intensity, RGB balance, multiplier
*/
//Lenz #1
#define f1_LenzOffset -0.8 //Position from Sun to Eye
#define f1_LenzScale 0.093 //Size of the Lenz Flare
#define f1_LenzFactor 1.0 //Multiplier for Size, in case 2 lenzes are sharing close offset a/o scale
#define f1_LenzColor float3(0.75, 0.75, 0.50) //Color in RGB (0.00 to 1.00) for the Lenz Flare
#define f1_ColorMultiplier 1.0 //Color Multiplier, in case RGB values are too low - Fine Tuning
//Lenz #2
#define f2_LenzOffset -0.54
#define f2_LenzScale 0.066
#define f2_LenzFactor 1.0
#define f2_LenzColor float3(0.85, 0.65, 0.85)
#define f2_ColorMultiplier 1.2
//Lenz #3
#define f3_LenzOffset -0.34
#define f3_LenzScale 0.100
#define f3_LenzFactor 1.0
#define f3_LenzColor float3(1.0, 1.0, 1.0)
#define f3_ColorMultiplier 1.0
//Lenz #4
#define f4_LenzOffset -0.14
#define f4_LenzScale 0.099
#define f4_LenzFactor 0.75
#define f4_LenzColor float3(0.25, 1.0, 0.75)
#define f4_ColorMultiplier 1.0
//Lenz #5
#define f5_LenzOffset -0.27
#define f5_LenzScale 0.072
#define f5_LenzFactor 1.0
#define f5_LenzColor float3(0.3, 0.3, 0.25)
#define f5_ColorMultiplier 2.0
//Lenz #6
#define f6_LenzOffset -0.3
#define f6_LenzScale 0.115
#define f6_LenzFactor 0.75
#define f6_LenzColor float3(0.20, 0.30, 0.35)
#define f6_ColorMultiplier 1.2
//Lenz #7
#define f7_LenzOffset -0.4
#define f7_LenzScale 0.098
#define f7_LenzFactor 1.0
#define f7_LenzColor float3(1.0, 1.0, 1.0)
#define f7_ColorMultiplier 1.0
//Lenz #8
#define f8_LenzOffset -0.2
#define f8_LenzScale 0.081
#define f8_LenzFactor 0.5
#define f8_LenzColor float3(0.25, 0.95, 0.45)
#define f8_ColorMultiplier 1.8
//Lenz #9
#define f9_LenzOffset -0.1
#define f9_LenzScale 0.121
#define f9_LenzFactor 0.85
#define f9_LenzColor float3(1.0, 1.0, 1.0)
#define f9_ColorMultiplier 1.0
//Lenz #10
#define f10_LenzOffset 0.0
#define f10_LenzScale 0.111
#define f10_LenzFactor 1.0
#define f10_LenzColor float3(0.55, 0.55, 0.55)
#define f10_ColorMultiplier 1.0
//Lenz #11
#define f11_LenzOffset 0.8
#define f11_LenzScale 0.234
#define f11_LenzFactor 1.11
#define f11_LenzColor float3(0.35, 0.45, 0.62)
#define f11_ColorMultiplier 2.0
//Lenz #12
#define f12_LenzOffset 0.9
#define f12_LenzScale 0.144
#define f12_LenzFactor 1.11
#define f12_LenzColor float3(0.35, 0.35, 0.42)
#define f12_ColorMultiplier 1.0
//Lenz #13
#define f13_LenzOffset 1.0
#define f13_LenzScale 0.174
#define f13_LenzFactor 1.11
#define f13_LenzColor float3(0.35, 0.35, 0.42)
#define f13_ColorMultiplier 1.0
//Lenz #14
#define f14_LenzOffset 0.42
#define f14_LenzScale 0.064
#define f14_LenzFactor 1.11
#define f14_LenzColor float3(0.35, 0.35, 0.42)
#define f14_ColorMultiplier 1.0
//Lenz #15
#define f15_LenzOffset 0.53
#define f15_LenzScale 0.074
#define f15_LenzFactor 1.11
#define f15_LenzColor float3(0.35, 0.35, 0.42)
#define f15_ColorMultiplier 1.0
//Lenz #16
#define f16_LenzOffset 0.65
#define f16_LenzScale 0.094
#define f16_LenzFactor 1.11
#define f16_LenzColor float3(0.35, 0.35, 0.42)
#define f16_ColorMultiplier 1.0
//Lenz #17
#define f17_LenzOffset 0.76
#define f17_LenzScale 0.104
#define f17_LenzFactor 1.11
#define f17_LenzColor float3(0.35, 0.35, 0.42)
#define f17_ColorMultiplier 1.0
//Lenz #18
#define f18_LenzOffset 0.9
#define f18_LenzScale 0.114
#define f18_LenzFactor 1.11
#define f18_LenzColor float3(0.35, 0.35, 0.42)
#define f18_ColorMultiplier 1.0
//Lenz #19
#define f19_LenzOffset 1.0
#define f19_LenzScale 0.174
#define f19_LenzFactor 1.11
#define f19_LenzColor float3(0.35, 0.35, 0.42)
#define f19_ColorMultiplier 1.0
//Lenz #20
#define f20_LenzOffset 1.2
#define f20_LenzScale 0.224
#define f20_LenzFactor 1.11
#define f20_LenzColor float3(0.35, 0.35, 0.42)
#define f20_ColorMultiplier 1.0
//Lenz #21
#define f21_LenzOffset 1.6
#define f21_LenzScale 0.234
#define f21_LenzFactor 1.11
#define f21_LenzColor float3(0.35, 0.35, 0.42)
#define f21_ColorMultiplier 1.0
//Lenz #22
#define f22_LenzOffset 1.9
#define f22_LenzScale 0.064
#define f22_LenzFactor 1.11
#define f22_LenzColor float3(0.35, 0.35, 0.42)
#define f22_ColorMultiplier 1.0
//Add or Remove additional Lenzes controls here, as done above
//This being done, a/o remove passes of technique below
//=====================================================================================================
// External parameters
//=====================================================================================================
//Keyboard controlled temporary variables (in some versions exists in the config file).
//Press and hold key 1,2,3...8 together with PageUp or PageDown to modify. By default all set to 1.0
float4 tempF1; //0,1,2,3
float4 tempF2; //5,6,7,8
float4 tempF3; //9,0
//x=Width, y=1/Width, z=ScreenScaleY, w=1/ScreenScaleY
float4 ScreenSize;
//x=generic timer in range 0..1, period of 16777216 ms (4.6 hours), w=frame time elapsed (in seconds)
float4 Timer;
//xy=sun position on screen, w=visibility
float4 LightParameters;
//textures
texture2D texColor;
texture2D texMask;
sampler2D SamplerColor = sampler_state
{
Texture = <texColor>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};
sampler2D SamplerMask = sampler_state
{
Texture = <texMask>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
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;
};
/**
* Several sprites moving similar to lenz effect
* They are transformed in vertex shader and drawed separately for better performance
* Offset is set in passes of technique
*/
VS_OUTPUT_POST VS_Draw(VS_INPUT_POST IN, uniform float offset, uniform float scale)
{
VS_OUTPUT_POST OUT;
float4 pos=float4(IN.pos.x,IN.pos.y,IN.pos.z,1.0);
pos.y*=ScreenSize.z;
//create own parameters instead of this, including uv offsets
float2 shift=LightParameters.xy * offset;
pos.xy=pos.xy * (scale * LenzScaleFactor) - shift;
OUT.vpos=pos;
OUT.txcoord.xy=IN.txcoord.xy;
return OUT;
}
float4 PS_Draw(VS_OUTPUT_POST IN, float2 vPos : VPOS, uniform float3 colorfilter, uniform float colormultiplier) : COLOR
{
float4 res;
float2 coord=IN.txcoord.xy;
//read sun visibility as amount of effect
float sunmask=tex2D(SamplerMask, float2(0.5, 0.5)).x;
sunmask=pow(sunmask, LenzContrastDraw); //more contrast to clouds
clip(sunmask-0.02);//early exit if too low
float4 origcolor=tex2D(SamplerColor, coord.xy);
sunmask*=LightParameters.w * (ELenzIntensity * LenzFactorDraw);
res.xyz=origcolor * sunmask;
float clipper=dot(res.xyz, 0.333);
clip(clipper-0.0003);//skip draw if black
res.xyz*=colorfilter * colormultiplier;
res.w=1.0;
return res;
}
//-------------------------------------------------------------------------------------------------------------------------
/**
* TECHNIQUES
*/
technique Draw
{
pass P0
{
VertexShader = compile vs_3_0 VS_Draw(f1_LenzOffset, (f1_LenzScale * f1_LenzFactor)); //offset, scale, scale factor
PixelShader = compile ps_3_0 PS_Draw(f1_LenzColor, f1_ColorMultiplier); //Color RGB
AlphaBlendEnable=TRUE;
SrcBlend=ONE;
DestBlend=ONE;
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
DitherEnable=FALSE;
ZEnable=FALSE;
CullMode=NONE;
ALPHATESTENABLE=FALSE;
SEPARATEALPHABLENDENABLE=FALSE;
StencilEnable=FALSE;
FogEnable=FALSE;
SRGBWRITEENABLE=FALSE;
}
pass P1
{
VertexShader = compile vs_3_0 VS_Draw(f2_LenzOffset, (f2_LenzScale * f2_LenzFactor));
PixelShader = compile ps_3_0 PS_Draw(f2_LenzColor, f2_ColorMultiplier);
AlphaBlendEnable=TRUE;
SrcBlend=ONE;
DestBlend=ONE;
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
DitherEnable=FALSE;
ZEnable=FALSE;
CullMode=NONE;
ALPHATESTENABLE=FALSE;
SEPARATEALPHABLENDENABLE=FALSE;
StencilEnable=FALSE;
FogEnable=FALSE;
SRGBWRITEENABLE=FALSE;
}
pass P2
{
VertexShader = compile vs_3_0 VS_Draw(f3_LenzOffset, (f3_LenzScale * f3_LenzFactor));
PixelShader = compile ps_3_0 PS_Draw(f3_LenzColor, f3_ColorMultiplier);
AlphaBlendEnable=TRUE;
SrcBlend=ONE;
DestBlend=ONE;
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
DitherEnable=FALSE;
ZEnable=FALSE;
CullMode=NONE;
ALPHATESTENABLE=FALSE;
SEPARATEALPHABLENDENABLE=FALSE;
StencilEnable=FALSE;
FogEnable=FALSE;
SRGBWRITEENABLE=FALSE;
}
pass P3
{
VertexShader = compile vs_3_0 VS_Draw(f4_LenzOffset, (f4_LenzScale * f4_LenzFactor));
PixelShader = compile ps_3_0 PS_Draw(f4_LenzColor, f4_ColorMultiplier);
AlphaBlendEnable=TRUE;
SrcBlend=ONE;
DestBlend=ONE;
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
DitherEnable=FALSE;
ZEnable=FALSE;
CullMode=NONE;
ALPHATESTENABLE=FALSE;
SEPARATEALPHABLENDENABLE=FALSE;
StencilEnable=FALSE;
FogEnable=FALSE;
SRGBWRITEENABLE=FALSE;
}
pass P4
{
VertexShader = compile vs_3_0 VS_Draw(f5_LenzOffset, (f5_LenzScale * f5_LenzFactor));
PixelShader = compile ps_3_0 PS_Draw(f5_LenzColor, f5_ColorMultiplier);
AlphaBlendEnable=TRUE;
SrcBlend=ONE;
DestBlend=ONE;
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
DitherEnable=FALSE;
ZEnable=FALSE;
CullMode=NONE;
ALPHATESTENABLE=FALSE;
SEPARATEALPHABLENDENABLE=FALSE;
StencilEnable=FALSE;
FogEnable=FALSE;
SRGBWRITEENABLE=FALSE;
}
pass P5
{
VertexShader = compile vs_3_0 VS_Draw(f6_LenzOffset, (f6_LenzScale * f6_LenzFactor));
PixelShader = compile ps_3_0 PS_Draw(f6_LenzColor, f6_ColorMultiplier);
AlphaBlendEnable=TRUE;
SrcBlend=ONE;
DestBlend=ONE;
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
DitherEnable=FALSE;
ZEnable=FALSE;
CullMode=NONE;
ALPHATESTENABLE=FALSE;
SEPARATEALPHABLENDENABLE=FALSE;
StencilEnable=FALSE;
FogEnable=FALSE;
SRGBWRITEENABLE=FALSE;
}
pass P6
{
VertexShader = compile vs_3_0 VS_Draw(f7_LenzOffset, (f7_LenzScale * f7_LenzFactor));
PixelShader = compile ps_3_0 PS_Draw(f7_LenzColor, f7_ColorMultiplier);
AlphaBlendEnable=TRUE;
SrcBlend=ONE;
DestBlend=ONE;
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
DitherEnable=FALSE;
ZEnable=FALSE;
CullMode=NONE;
ALPHATESTENABLE=FALSE;
SEPARATEALPHABLENDENABLE=FALSE;
StencilEnable=FALSE;
FogEnable=FALSE;
SRGBWRITEENABLE=FALSE;
}
pass P7
{
VertexShader = compile vs_3_0 VS_Draw(f8_LenzOffset, (f8_LenzScale * f8_LenzFactor));
PixelShader = compile ps_3_0 PS_Draw(f8_LenzColor, f8_ColorMultiplier);
AlphaBlendEnable=TRUE;
SrcBlend=ONE;
DestBlend=ONE;
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
DitherEnable=FALSE;
ZEnable=FALSE;
CullMode=NONE;
ALPHATESTENABLE=FALSE;
SEPARATEALPHABLENDENABLE=FALSE;
StencilEnable=FALSE;
FogEnable=FALSE;
SRGBWRITEENABLE=FALSE;
}
pass P8
{
VertexShader = compile vs_3_0 VS_Draw(f9_LenzOffset, (f9_LenzScale * f9_LenzFactor));
PixelShader = compile ps_3_0 PS_Draw(f9_LenzColor, f9_ColorMultiplier);
AlphaBlendEnable=TRUE;
SrcBlend=ONE;
DestBlend=ONE;
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
DitherEnable=FALSE;
ZEnable=FALSE;
CullMode=NONE;
ALPHATESTENABLE=FALSE;
SEPARATEALPHABLENDENABLE=FALSE;
StencilEnable=FALSE;
FogEnable=FALSE;
SRGBWRITEENABLE=FALSE;
}
pass P9
{
VertexShader = compile vs_3_0 VS_Draw(f10_LenzOffset, (f10_LenzScale * f10_LenzFactor));
PixelShader = compile ps_3_0 PS_Draw(f10_LenzColor, f10_ColorMultiplier);
AlphaBlendEnable=TRUE;
SrcBlend=ONE;
DestBlend=ONE;
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
DitherEnable=FALSE;
ZEnable=FALSE;
CullMode=NONE;
ALPHATESTENABLE=FALSE;
SEPARATEALPHABLENDENABLE=FALSE;
StencilEnable=FALSE;
FogEnable=FALSE;
SRGBWRITEENABLE=FALSE;
}
pass P10
{
VertexShader = compile vs_3_0 VS_Draw(f11_LenzOffset, (f11_LenzScale * f11_LenzFactor));
PixelShader = compile ps_3_0 PS_Draw(f11_LenzColor, f11_ColorMultiplier);
AlphaBlendEnable=TRUE;
SrcBlend=ONE;
DestBlend=ONE;
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
DitherEnable=FALSE;
ZEnable=FALSE;
CullMode=NONE;
ALPHATESTENABLE=FALSE;
SEPARATEALPHABLENDENABLE=FALSE;
StencilEnable=FALSE;
FogEnable=FALSE;
SRGBWRITEENABLE=FALSE;
}
pass P11
{
VertexShader = compile vs_3_0 VS_Draw(f11_LenzOffset, (f12_LenzScale * f12_LenzFactor));
PixelShader = compile ps_3_0 PS_Draw(f12_LenzColor, f12_ColorMultiplier);
AlphaBlendEnable=TRUE;
SrcBlend=ONE;
DestBlend=ONE;
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
DitherEnable=FALSE;
ZEnable=FALSE;
CullMode=NONE;
ALPHATESTENABLE=FALSE;
SEPARATEALPHABLENDENABLE=FALSE;
StencilEnable=FALSE;
FogEnable=FALSE;
SRGBWRITEENABLE=FALSE;
}
pass P12
{
VertexShader = compile vs_3_0 VS_Draw(f13_LenzOffset, (f13_LenzScale * f13_LenzFactor));
PixelShader = compile ps_3_0 PS_Draw(f13_LenzColor, f13_ColorMultiplier);
AlphaBlendEnable=TRUE;
SrcBlend=ONE;
DestBlend=ONE;
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
DitherEnable=FALSE;
ZEnable=FALSE;
CullMode=NONE;
ALPHATESTENABLE=FALSE;
SEPARATEALPHABLENDENABLE=FALSE;
StencilEnable=FALSE;
FogEnable=FALSE;
SRGBWRITEENABLE=FALSE;
}
pass P13
{
VertexShader = compile vs_3_0 VS_Draw(f14_LenzOffset, (f14_LenzScale * f14_LenzFactor));
PixelShader = compile ps_3_0 PS_Draw(f14_LenzColor, f14_ColorMultiplier);
AlphaBlendEnable=TRUE;
SrcBlend=ONE;
DestBlend=ONE;
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
DitherEnable=FALSE;
ZEnable=FALSE;
CullMode=NONE;
ALPHATESTENABLE=FALSE;
SEPARATEALPHABLENDENABLE=FALSE;
StencilEnable=FALSE;
FogEnable=FALSE;
SRGBWRITEENABLE=FALSE;
}
pass P14
{
VertexShader = compile vs_3_0 VS_Draw(f15_LenzOffset, (f15_LenzScale * f15_LenzFactor));
PixelShader = compile ps_3_0 PS_Draw(f15_LenzColor, f15_ColorMultiplier);
AlphaBlendEnable=TRUE;
SrcBlend=ONE;
DestBlend=ONE;
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
DitherEnable=FALSE;
ZEnable=FALSE;
CullMode=NONE;
ALPHATESTENABLE=FALSE;
SEPARATEALPHABLENDENABLE=FALSE;
StencilEnable=FALSE;
FogEnable=FALSE;
SRGBWRITEENABLE=FALSE;
}
pass P15
{
VertexShader = compile vs_3_0 VS_Draw(f16_LenzOffset, (f16_LenzScale * f16_LenzFactor));
PixelShader = compile ps_3_0 PS_Draw(f16_LenzColor, f16_ColorMultiplier);
AlphaBlendEnable=TRUE;
SrcBlend=ONE;
DestBlend=ONE;
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
DitherEnable=FALSE;
ZEnable=FALSE;
CullMode=NONE;
ALPHATESTENABLE=FALSE;
SEPARATEALPHABLENDENABLE=FALSE;
StencilEnable=FALSE;
FogEnable=FALSE;
SRGBWRITEENABLE=FALSE;
}
pass P16
{
VertexShader = compile vs_3_0 VS_Draw(f17_LenzOffset, (f17_LenzScale * f17_LenzFactor));
PixelShader = compile ps_3_0 PS_Draw(f17_LenzColor, f17_ColorMultiplier);
AlphaBlendEnable=TRUE;
SrcBlend=ONE;
DestBlend=ONE;
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
DitherEnable=FALSE;
ZEnable=FALSE;
CullMode=NONE;
ALPHATESTENABLE=FALSE;
SEPARATEALPHABLENDENABLE=FALSE;
StencilEnable=FALSE;
FogEnable=FALSE;
SRGBWRITEENABLE=FALSE;
}
pass P17
{
VertexShader = compile vs_3_0 VS_Draw(f18_LenzOffset, (f18_LenzScale * f18_LenzFactor));
PixelShader = compile ps_3_0 PS_Draw(f18_LenzColor, f18_ColorMultiplier);
AlphaBlendEnable=TRUE;
SrcBlend=ONE;
DestBlend=ONE;
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
DitherEnable=FALSE;
ZEnable=FALSE;
CullMode=NONE;
ALPHATESTENABLE=FALSE;
SEPARATEALPHABLENDENABLE=FALSE;
StencilEnable=FALSE;
FogEnable=FALSE;
SRGBWRITEENABLE=FALSE;
}
pass P18
{
VertexShader = compile vs_3_0 VS_Draw(f19_LenzOffset, (f19_LenzScale * f19_LenzFactor));
PixelShader = compile ps_3_0 PS_Draw(f19_LenzColor, f19_ColorMultiplier);
AlphaBlendEnable=TRUE;
SrcBlend=ONE;
DestBlend=ONE;
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
DitherEnable=FALSE;
ZEnable=FALSE;
CullMode=NONE;
ALPHATESTENABLE=FALSE;
SEPARATEALPHABLENDENABLE=FALSE;
StencilEnable=FALSE;
FogEnable=FALSE;
SRGBWRITEENABLE=FALSE;
}
pass P19
{
VertexShader = compile vs_3_0 VS_Draw(f20_LenzOffset, (f20_LenzScale * f20_LenzFactor));
PixelShader = compile ps_3_0 PS_Draw(f20_LenzColor, f20_ColorMultiplier);
AlphaBlendEnable=TRUE;
SrcBlend=ONE;
DestBlend=ONE;
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
DitherEnable=FALSE;
ZEnable=FALSE;
CullMode=NONE;
ALPHATESTENABLE=FALSE;
SEPARATEALPHABLENDENABLE=FALSE;
StencilEnable=FALSE;
FogEnable=FALSE;
SRGBWRITEENABLE=FALSE;
}
pass P20
{
VertexShader = compile vs_3_0 VS_Draw(f21_LenzOffset, (f21_LenzScale * f21_LenzFactor));
PixelShader = compile ps_3_0 PS_Draw(f21_LenzColor, f21_ColorMultiplier);
AlphaBlendEnable=TRUE;
SrcBlend=ONE;
DestBlend=ONE;
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
DitherEnable=FALSE;
ZEnable=FALSE;
CullMode=NONE;
ALPHATESTENABLE=FALSE;
SEPARATEALPHABLENDENABLE=FALSE;
StencilEnable=FALSE;
FogEnable=FALSE;
SRGBWRITEENABLE=FALSE;
}
pass P21
{
VertexShader = compile vs_3_0 VS_Draw(f22_LenzOffset, (f22_LenzScale * f22_LenzFactor));
PixelShader = compile ps_3_0 PS_Draw(f22_LenzColor, f22_ColorMultiplier);
AlphaBlendEnable=TRUE;
SrcBlend=ONE;
DestBlend=ONE;
ColorWriteEnable = ALPHA|RED|GREEN|BLUE;
DitherEnable=FALSE;
ZEnable=FALSE;
CullMode=NONE;
ALPHATESTENABLE=FALSE;
SEPARATEALPHABLENDENABLE=FALSE;
StencilEnable=FALSE;
FogEnable=FALSE;
SRGBWRITEENABLE=FALSE;
}
}
// KYO : and so on...

BIN
enbsunsprite.tga Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 KiB

BIN
menbnoise1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 KiB

BIN
menbnoise2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

BIN
menbnoise3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 KiB