//orginal authors and math boris v. icelaglace dpeasant3 cne dkt70 l3evo team		
//edits by corporalvenus 		
// 		
// 		
//		
//		
// 		
		
float	VignetteAmount = 0.04;	
		
		
//   sampler2D AdapLumSampler;		
//   sampler2D BloomSampler;		
//   float4 ColorCorrect;		
//   float4 ColorShift;		
//   float Exposure;		
//   sampler2D GBufferTextureSampler2;		
//   sampler2D GBufferTextureSampler3;		
//   sampler2D HDRSampler;		
//   sampler2D JitterSampler;		
//   float PLAYER_MASK;		
//   sampler2D StencilCopySampler;		
//   float4 TexelSize;		
//   float4 ToneMapParams;		
//   float4 deSatContrastGamma;		
//   float4 dofBlur;		
//   float4 dofDist;		
//   float4 dofProj;		
//   float gDirectionalMotionBlurLength;		
//   float4 globalScreenSize;		
//   row_major float4x4 motionBlurMatrix;		
//		
//		
// Registers:		
//		
//   Name                         Reg   Size		
//   ---------------------------- ----- ----		
//   globalScreenSize             c44      1		
//   Exposure                     c66      1		
//   motionBlurMatrix             c72      4		
//   TexelSize                    c76      1		
//   dofProj                      c77      		
//   dofDist                      c78      1		
//   dofBlur                      c79      1		
//   gDirectionalMotionBlurLength c80      1		
//   ToneMapParams                c81      1		
//   deSatContrastGamma           c82      1		
//   ColorCorrect                 c83      1		
//   ColorShift                   c84      1		
//   PLAYER_MASK                  c85      1		
//   GBufferTextureSampler2       s0       1		
//   GBufferTextureSampler3       s1       1		
//   HDRSampler                   s2       1		
//   BloomSampler                 s3       1		
//   AdapLumSampler               s4       1		
//   JitterSampler                s5       1		
//   StencilCopySampler           s6       1		
		
//quad		
struct VS_OUTPUT_POST		
{		
float4 vpos  : POSITION;		
float2 txcoord0 : TEXCOORD0;		
};		
struct VS_INPUT_POST		
{		
float3 pos  : POSITION;		
float2 txcoord0 : TEXCOORD0;		
};		
		
//int4	_i0 : register(i0);	
		
/*		
float4	_c0 : register(c0);	
float4	_c1 : register(c1);	
float4	_c2 : register(c2);	
float4	_c3 : register(c3);	
float4	_c4 : register(c4);	
float4	_c5 : register(c5);	
float4	_c6 : register(c6);	
*/		
float4	_c44 : register(c44);	
float4	_c66 : register(c66);	
float4	_c72 : register(c72);	
float4	_c73 : register(c73);	
float4	_c74 : register(c74);	
float4	_c75 : register(c75);	
float4	_c76 : register(c76);	
float4	_c77 : register(c77);	
float4	_c78 : register(c78);	
float4	_c79 : register(c79);	
float4	_c80 : register(c80);	
float4	_c81 : register(c81);	
float4	_c82 : register(c82);	
float4	_c83 : register(c83);	
float4	_c84 : register(c84);	
float4	_c85 : register(c85);	
float	maxi : register(c86);	
float	temp : register(c87);	
		
texture2D texs0 : register(s0);		
texture2D texs1 : register(s1);		
texture2D texs2 : register(s2);		
texture2D texs3 : register(s3);		
texture2D texs4 : register(s4);		
texture2D texs5 : register(s5);		
texture2D texs6 : register(s6);		
texture2D texs7 : register(s7);		
texture2D texs13 : register(s13);//palette		
texture2D texs15 : register(s15);		
//sampler2D s0=sampler_state { Texture=<texs0>; };		
//sampler2D s1=sampler_state { Texture=<texs1>; };		
sampler2D s2=sampler_state { Texture=<texs2>; };		
//sampler2D s3=sampler_state { Texture=<texs3>; };		
sampler2D s4=sampler_state { Texture=<texs4>; };		
sampler2D s5=sampler_state { Texture=<texs5>; };		
sampler2D s6=sampler_state { Texture=<texs6>; };		
sampler2D s7=sampler_state { Texture=<texs7>; };		
//sampler2D s13=sampler_state { Texture=<texs13>; };		
sampler2D s15=sampler_state { Texture=<texs15>; };		
		
//next samplers states fixing problems on ATI cards		
sampler2D s0 = sampler_state		
{		
   Texture   = <texs0>;		
MinFilter = LINEAR;//		
MagFilter = LINEAR;//		
MipFilter = 2;//2;//LINEAR;		
AddressU  = Clamp;		
AddressV  = Clamp;		
SRGBTexture=FALSE;		
MaxMipLevel=2;		
MipMapLodBias=2;		
};		
		
sampler2D s1 = sampler_state		
{		
   Texture   = <texs1>;		
MinFilter = LINEAR;//		
MagFilter = LINEAR;//		
MipFilter = 2;//2;//LINEAR;		
AddressU  = Clamp;		
AddressV  = Clamp;		
SRGBTexture=FALSE;		
MaxMipLevel=2;		
MipMapLodBias=2;		
};		
		
sampler2D s3 = sampler_state		
{		
   Texture   = <texs3>;		
MinFilter = LINEAR;//		
MagFilter = LINEAR;//		
MipFilter = 2;//2;//LINEAR;		
AddressU  = Clamp;		
AddressV  = Clamp;		
SRGBTexture=FALSE;		
MaxMipLevel=2;		
MipMapLodBias=2;		
};		
/*		
sampler2D s5 = sampler_state		
{		
    Texture   = <texs5>;		
	MinFilter = GaussianQuad;//	
	MagFilter = GaussianQuad;//	
	MipFilter = NONE;	
	AddressU  = Wrap;	
	AddressV  = wrap;	
	SRGBTexture=FALSE;	
	MaxMipLevel=0;	
	MipMapLodBias=0;	
};		
/		
		
		
sampler2D s13 = sampler_state		
{		
Texture   = <texs13>;		
MinFilter = LINEAR;		
MagFilter = LINEAR;		
MipFilter = NONE;		
AddressU  = Clamp;		
AddressV  = Clamp;		
SRGBTexture=FALSE;		
MaxMipLevel=0;		
MipMapLodBias=0;		
};		
		
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++		
//		
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++		
		
		
		
		
float4 PS_C215BE6E(VS_OUTPUT_POST IN) : COLOR		
{		
float4 _oC0=0.0; //output		
		
"float4 _c0=float4(0, 0.212500006, 0.715399981, 0.0720999986);"		
"float4 _c1=float4(0.25, 1, 256, 0);"		
"float4 _c2=float4(0, 2, 4, 8);"		
"float4 _c3=float4(58.1640015, 47.1300011, 0, 0);"		
"float4 _c4=float4(-0.5, -1.5, 1.5, 0.5);"		
"float4 _c5=float4(2, -1, 0.125, 0);"		
"float4 _c6=float4(256, 2, 4, 8);"		
//mine		
"float4 _c7=float4(1.0, 0.1, 0.8, 1.0);"		
"float4 _c8=float4(0.0, 0.1, 0.8, 0.333);"		
"float4 _c9=float4(0.06, 0.1, 0.8, 0.1);"		
"float4 _c10=float4(0.01, 1.4, 0.0, 0.32);"		
"float4 _c11=float4(0.333333, 1.0, 0.0, 0.0);"		
"//float4 _c12=float4(0.27, 0.67, 0.06, 0.0);"		
"float4 _c12=float4(0.299, 0.587, 0.114, 0.0);"		
"float4 _c13=float4(0.0, 0.0, 0.0, 0.00001);"		
"float4 _c150=float4(0.55, 0.9, 0.85, 0.9);"		
"float4 _c195=float4(0.0, 0.0, 0.0, 0.07);//0.7"		
		
		
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(s2, _v0.xy); //HDRSampler"		
"r2=tex2D(s3, _v0.xy); //BloomSampler"		
		
		
		
//*************************		
		
	float2	center;
	float	depth;
	float	focus;
		
		
	"r0=tex2D(s1, _v0.xy); //GBufferTextureSampler3"	
	r0.y=-_c77.x + _c77.y; //-dofProj.x + dofProj.y	
	r0.y=1.0/r0.y;	
	r0.z=r0.y * _c77.y; //dofProj.y	
	r0.z=r0.z * -_c77.x; //dofProj.x	
	r0.x=_c77.y * -r0.y + r0.x;	
	r0.x=1.0/r0.x;	
	r0.y=r0.z * r0.x;	
		
	r0.w=abs(_c79.w);	
	"r3=_c4; //-0.5, -1.5, 1.5, 0.5"	
		
		
	depth=r0.z * r0.x - _c78.w; //dofDist.w	
	depth+=_c78.y * -r3.w; //dofDist.y	
	depth+=148;//offset	
	center.x=_v0.x-0.5;	
	center.y=0.5-_v0.y;	
		
	float4	"vDofParams = float4(-50, 1.5, 50000, 1);"
		
//*************************************		
		
        float2	"FocusPoint = float2(0.5, 0.45);"	
	"r4=tex2D(s1, FocusPoint); //GBufferTextureSampler3"	
	r4.y=-_c77.x + _c77.y; //-dofProj.x + dofProj.y	
	r4.y=1/r4.y;	
	r4.z=r4.y * _c77.y; //dofProj.y	
	r4.z=r4.z * -_c77.x; //dofProj.x	
	r4.x=_c77.y * -r4.y + r4.x;	
	r4.x=1/r4.x;	
	r4.y=r4.z * r4.x;	
		
	float cdepth;	
		
	cdepth=r4.z * r4.x - _c78.w; //dofDist.w	
	cdepth+=_c78.y * -r3.w; //dofDist.y	
	cdepth+=148;//offset	
		
		
	"r4.w = tex2D(s0, FocusPoint).w;"	
	if(r4.w > 0)	
	{	
		vDofParams.z = cdepth*6.0;
		vDofParams.y = cdepth;
	}	
		
		
//**************		
		
	"depth = max(depth, 0); //fix zoom bug"	
		
	float	dist;
		
	if(depth < vDofParams.y)	
	    dist = (depth - vDofParams.y)/(vDofParams.y - vDofParams.x);	
	else	
	{	
	    dist = (depth - vDofParams.y)/(vDofParams.z - vDofParams.y);	
	"    dist = clamp(dist, 0, vDofParams.w);"	
	}	
		
    	dist = dist * 0.5 + 0.5;	
		
		
static float3 poisson[8]=		
	{	
		"float3(0.0,    0.0, 1.0), //0 degrees"
		"float3(0.527, -0.085, 1.0),"
		"float3(-0.040,  0.536, 1.0 ),"
		"float3(-0.670, -0.179, 1.0 ),"
		"float3(-0.419, -0.616, 1.0 ),"
		"float3( 0.440, -0.639, 1.0), //45 degrees"
		"float3(-0.757,  0.349, 1.0 ),"
		"float3(0.574,  0.685, 1.0),"
	};	
		
		
	float2	pixelSizeHigh;
	float2	pixelSizeLow;
		
		
	pixelSizeHigh.x = 1.000 / _c44.x;	
	pixelSizeHigh.y = 1.000 / _c44.y;	
		
	//pixelSizeHigh.x = 2.0 / _c44.x;	
	//pixelSizeHigh.y = 2.0 / _c44.y;	
		
	pixelSizeHigh.xy *= 1.0;	
		
	pixelSizeLow.xy = pixelSizeHigh.xy;	
		
	float2	"vMaxCoC = float2(5.0, 10.0);"
		
	float	radiusScale = 0.4;
		
	float	discRadius;
	float	discRadiusLow;
	float	centerDepth;
	float4	tdepth;
		
	float4  tapHigh;	
	float4  tapLow;	
		
	centerDepth = dist;	
		
	discRadius = abs(centerDepth * vMaxCoC.y - vMaxCoC.x);	
	discRadiusLow = discRadius * radiusScale;	
		
	r1 = 0.0;	
		
	for(int t = 0; t < 8; t++)	
	{	
	    float2  coordLow = _v0.xy + (pixelSizeLow.xy * poisson[t].xy * discRadiusLow);	
	    float2  coordHigh = _v0.xy + (pixelSizeHigh.xy * poisson[t].xy * discRadius);	
		
	"    tapLow = tex2D(s2, coordLow.xy) * poisson[t].z;"	
	"    tapHigh = tex2D(s2, coordHigh.xy) * poisson[t].z;"	
		
	"    tdepth = tex2D(s1, coordHigh.xy); //GBufferTextureSampler3"	
	    tdepth.y = -_c77.x + _c77.y; //-dofProj.x + dofProj.y	
	    tdepth.y = 1.0 / tdepth.y;	
	    tdepth.z = tdepth.y * _c77.y; //dofProj.y	
	    tdepth.z = tdepth.z * -_c77.x; //dofProj.x	
	    tdepth.x = _c77.y * -tdepth.y + tdepth.x;	
	    tdepth.x = 1.0 / tdepth.x;	
		
	    tdepth.w = tdepth.z * tdepth.x - _c78.w; //dofDist.w	
	    tdepth.w += _c78.y * -r3.w; //dofDist.y	
	    tdepth.w += 148;//offset	
		
	"    tdepth.w = max(tdepth.w, 0); //fix zoom bug"	
		
	    if(tdepth.w < vDofParams.y)	
	        tapHigh.w = (tdepth.w - vDofParams.y)/(vDofParams.y - vDofParams.x);	
	    else	
	    {	
	        tapHigh.w = (tdepth.w - vDofParams.y)/(vDofParams.z - vDofParams.y);	
	"        tapHigh.w = clamp(tapHigh.w, 0, vDofParams.w);"	
	    }	
		
    	    tapHigh.w = tapHigh.w * 0.5 + 0.5;	
		
	    tapLow.w = tapHigh.w;	
		
	    float  tapBlur = abs(tapHigh.w * 2.0 - 1.0);	
	"    float4  tap = lerp(tapHigh, tapLow, tapBlur);"	
		
	    if(tap.w >= centerDepth)	tap.w = 1;
	    else	tap.w = abs(tap.w * 2.0 - 1.0);
		
	    r1.xyz += tap.xyz * tap.w;	
	    r1.w += tap.w;	
		
		
	}	
		
	r1.xyz /= r1.w;	
		
	//float4 dofcolor = r1;	
		
	//dofcolor.w = r1.w / DoF_TAPS;	
		
		
//***************		
		
	"r1.w=dot(r1.xyz, r1.xyz); //dp3"	
	r1.w=1.0/r1.w;	
		
	//if (-r1.w<0.0) r3 = r1;	
	//else r3 = _c0.x;	
		
	"r3 = lerp(_c0.x, r1, saturate(r1.w * 10000));"	
		
	r4 = r3;	
	r5 = r3;	
	r6 = r3;	
	r7 = r3;	
		
	r0.x=r0.z * r0.x - _c78.w; //dofDist.w	
	r0.x=_c78.y * -r3.w + r0.x; //dofDist.y	
	"r1.w=max(r0.x, _c0.x); //0.0"	
	r0.x=1.0/_c78.z; //dofDist.z	
	r0.x=r1.w * r0.x;	
	"r1.w=lerp(_c79.y, _c79.z, r0.x);//dofBlur"	
	"r0.x=min(_c79.z, r1.w); //dofBlur.z"	
		
	"r0.z=dot(r7.xyz, _c0.yzw); //0.212500006, 0.715399981, 0.0720999986"	
	"r8.x=dot(r3.xyz, _c0.yzw); //0.212500006, 0.715399981, 0.0720999986"	
	"r8.y=dot(r4.xyz, _c0.yzw); //0.212500006, 0.715399981, 0.0720999986"	
	"r8.z=dot(r5.xyz, _c0.yzw); //0.212500006, 0.715399981, 0.0720999986"	
	"r8.w=dot(r6.xyz, _c0.yzw); //0.212500006, 0.715399981, 0.0720999986"	
	"r1.w=dot(r8, _c1.xxxx); //0.25"	
		
	r8=r8 - r1.w;	
	"r2.w=dot(r8, r8);"	
	r0.z=r0.z - r1.w;	
	r0.z=r0.z * r0.z - r2.w;	
	r0.x=r0.x*r0.x;	
	if (r0.z<0.0)	
	{	
		r0.x=r0.x;
	} else r0.x=_c1.y; //1.0	
		
		
	"r8=tex2D(s0, _v0.xy); //GBufferTextureSampler2"	
		
		
		
"r8.yz=_c1.yz; // 1.0, 256.0"		
"r9=r8.w * -r8.z + _c2; //0, 2, 4, 8"		
if (r9.w<0.0) //r9<0.0		
{		
 r9=_c1.w; //0.0		
} else r9=_c1.y; //1.0		
//r9 is filtered sky mask		
		
"//r10=r8.w + tempc6;//c6.yzwx; //256, 2, 4, 8"		
"r10=r8.w * -_c6.x + _c6.yzwx; //256, 2, 4, 8"		
		
		
		
if (r10.x<0.0)		
{		
 r10.x=-_c1.w; //0.0		
} else r10.x=-_c1.y; //1.0		
		
if (r10.y<0.0)		
{		
 r10.y=-_c1.w; //0.0		
} else r10.y=-_c1.y; //1.0		
		
if (r10.z<0.0)		
{		
 r10.z=-_c1.w; //0.0		
} else r10.z=-_c1.y; //1.0		
		
if (r10.w<0.0)		
{		
 r10.w=-_c1.w; //0.0		
} else r10.w=-_c1.y; //1.0		
		
		
r9=r9 + r10;		
r9=r9 * _c4.x; //-0.5		
		
		
"r0.z=dot(r9, _c1.yyyy); //1.0"		
r0.z=r0.z + _c4.w; //0.5		
r0.z=1.0/r0.z;		
r8.xzw=r3.xyz * r9.x;		
		
		
r7.xyz=r7 * _c4.w + r8.xzw; //0.5		
r7.xyz=r4 * r9.y + r7;		
r7.xyz=r5 * r9.z + r7;		
r7.xyz=r6 * r9.w + r7;		
r7.xyz=r0.z * r7;		
r0.z=-r0.x + _c1.y; //1.0		
r1.w=r0.x * _c1.x; //0.25		
		
		
r3.xyz=r3 * r1.w;		
r3.xyz=r7 * r0.z + r3;		
r3.xyz=r4 * r1.w + r3;		
r3.xyz=r5 * r1.w + r3;		
r3.xyz=r6 * r1.w + r3;		
		
		
"//r4.xyz=_v0.yxy * _c5.x + _c5.y; //2, -1"		
r4.x=_v0.y * _c5.x + _c5.y;		
r4.y=_v0.x * _c5.x + _c5.y;		
r4.z=_v0.y * _c5.x + _c5.y;		
		
r0.z=r4.y * _c77.z; //dofProj.z		
r0.z=r0.y * r0.z;		
r1.w=-r4.x * _c77.w; //dofProj.w		
r1.w=r0.y * r1.w;		
r5.xyz=r1.w * _c73; //motionBlurMatrix.2		
r5.xyz=r0.z * _c72 + r5; //motionBlurMatrix.1		
r5.xyz=-r0.y * _c74 + r5; //motionBlurMatrix.3		
r5.xyz=r5 + _c75; //motionBlurMatrix.4		
		
r0.y=-r5.z * _c77.z; //dofProj.z		
r0.y=1/r0.y;		
r6.x=r5.x * r0.y;		
r0.y=r5.z * _c77.w; //dofProj.w		
r0.y=1/r0.y;		
r6.y=r5.y * r0.y;		
//r0.yz=-r4 + r6.xxyw;		
r0.yz=-r4.yz + r6.xy;		
		
//r0.yz=r0 * _c80.x; //gDirectionalMotionBlurLength.x		
r0.y=r0.y * _c80.x;		
r0.z=r0.z * _c80.x;		
r4.xy=r0.yz * _c5.z; //0.125		
"r5=tex2D(s6, _v0.xy); //StencilCopySampler"		
r1.w=r5.x - _c85.x; //PLAYER_MASK.x		
r4.zw=r3.xy * _c2.w; //8.0		
"r4.zw=_v0.xy * _c3.xy + r4.zw; //58.1640015, 47.1300011"		
"r5=tex2D(s5, r4.zw); //JitterSampler"		
//r2.w=r5.x - 0.5; //-0.5		
r4.zw=r4.xy * (r5.x - 4) + _v0.xy; //0.082 fixed		
r5.xyz=r3.xyz;		
r2.w=_c1.y; //1.0		
r3.w=_c1.y; //1.0		
		
for (int iii=0; iii<25; iii++)		
{		
r6.x=r4.x * r3.w + r4.z;		
r6.y=r4.y * r3.w + r4.w;		
" r7=tex2D(s6, r6.xy);"		
 r5.w=r7.x - _c85.x;		
 if (r5.w<-0.3)		
 {		
 	r5.w=_c1.y; //1.0	
 } else r5.w=_c1.w; //0.0		
" r6=tex2D(s2, r6.xy);"		
 r5.xyz=r6.xyz * r5.w + r5.xyz;		
 r2.w=r2.w + r5.w;		
 r3.w=r3.w + _c1.y; //1.0		
}		
		
		
r2.w=1.0/r2.w;		
		
//r0.yz=r0 * _c44.xxyw; //globalScreenSize		
r0.y=r0.y * _c44.x; //globalScreenSize		
r0.z=r0.z * _c44.y; //globalScreenSize		
		
"r0.y=dot(r0.yz, r0.yz)+_c0.x;//dp2"		
		
//r0.y=sqrt(r0.y);		
//r0.y=1.0/r0.y;		
"r0.y=pow(r0.y, _c4.w); //0.5"		
		
r0.y=r0.y * _c4.w; //0.5		
r0.x=r0.x + _c1.y; //1.0		
r0.x=1.0/r0.x;		
//r0.y is wrong		
r0.x=saturate(r0.y * r0.x);		
r4.xyz=r5 * r2.w - r3;		
r0.xyz=r0.x * r4 + r3;		
		
//_oC0.xyz=0.5*r0.xyz;		
		
if (-r1.w<0.0) r0.xyz=r3.xyz;		
if (-r0.w<0.0) r0.xyz=r1.xyz;		
		
		
		
//for future use		
r11=r0;		
		
		
		
		
"r1=tex2D(s4, _c0.x); //AdapLumSampler , 0.0"		
r0.w=1.0/r1.x;		
r0.w=r0.w * _c81.y; //ToneMapParams.y		
r1.x=1.0/r0.w;		
r1.x=r1.x * _c81.x; //ToneMapParams.x		
r1.xyz=r2 * _c66.x - r1.x; //Exposure.x		
"r2.xyz=max(r1, _c0.x); //0.0"		
r1.xyz=r2 * _c81.z; //ToneMapParams.z		
r1.xyz=r1 * _c1.x; //0.25		
r0.xyz=r0 * _c66.x + r1; //Exposure.x		
r1.xyz=r0.w * r0;		
"r1.x=dot(r1.xyz, _c0.yzw); //0.2125, 0.7154, 0.0721"		
r0.xyz=r0 * r0.w - r1.x;		
r0.xyz=_c82.x * r0 + r1.x; //deSatContrastGamma.x		
r0.w=r1.x * _c84.w; //ColorShift.w		
r1.yzw=r0.w * _c84.xxyz; //ColorShift		
		
"//darken as DarkeningAmount, but keeps colors"		
r2.x=saturate(r0.w);		
r0.xyz=r0.xyz - _c84.xyz * r0.w; //ColorShift		
r0.xyz=r2.x * r0.xyz + r1.yzww;		
		
"//coloring (green, brown, ...)"		
r0.xyz=2.0 * r0.xyz * _c83.xyz; //ColorCorrect		
		
"//keeps colors, changes luma"		
r1.x=saturate(r1.x);//luma		
r0.w=_c82.z - _c1.y; //deSatContrastGamma.z - 1.0		
"r2.x=pow(r1.x, r0.w);"		
		
_oC0.xyz=r0.xyz * r2.x; //orig		
_oC0.w=_c1.y; //1.0		
		
		
//*******************		
		
float4	color = r11;	
"float4 origcolor = tex2D(s2, _v0.xy);"		
		
"r5=tex2D(s4, _c0.x);//adaptation luminance"		
r5.w=r5.x;		
r5.w=1.0/r5.w;		
color.xyz=color.xyz * r5.w;		
		
		
		
"float4 colorbloom = tex2D(s3, _v0.xy);//0.5"		
colorbloom *= r5.w;		
"colorbloom.r*=lerp(0.5, 1.8, saturate(pow(depth/250.0, 0.5)));"		
"colorbloom.g*=lerp(0.5, 1.8, saturate(pow(depth/250.0, 0.5)));"		
"colorbloom.b*=lerp(0.5, 1.3, saturate(pow(depth/250.0, 0.5)));"		
		
//increase color		
		
"float cgray=dot(color.xyz, 0.333);//luma"		
"float3 poweredcolor=pow(color.xyz, 1);"		
"float newgray=dot(poweredcolor.xyz, 0.333);"		
color.xyz=poweredcolor.xyz*cgray/(newgray+0.0001);		
		
		
"float bloomgray=dot(colorbloom.xyz, 0.333) * 0.01;"		
		
colorbloom.r *= 1;		
colorbloom.g *= 1;		
colorbloom.b *= 1;		
		
"color.xyz=lerp(color.xyz, color.xyz*0.8+colorbloom.xyz*0.3, saturate(bloomgray));"		
		
"color.xyz=max(color.xyz, 0.0001);"		
		
color *= 0.5;		
		
float4 curr = ((color*(0.1*color+0.1*0.5)+0.2*0.02)/(color*(0.1*color+0.5)+0.2*2.3))-0.02/2.3;		
float4 whiteScale = ((11.2*(0.1*11.2+0.1*0.5)+0.2*0.02)/(11.2*(0.1*11.2+0.5)+0.2*2.3))-0.02/2.3;		
color = curr*whiteScale;		
		
"color = pow(color,1/2.2);"		
		
color.xyz = saturate(color.xyz);		
		
//bleach bypass		
		
float	"luma = dot(color.xyz, _c12.xyz);"	
		
float3	blend = luma.xxx;	
float	"L = min(1, max(0, 10*(luma - 0.45)));"	
float3 result1 = 2.0 * color.xyz * blend;		
float3 result2 = 1.0 - 2.0*(1.0 - blend)*(1.0 - color.xyz);		
"float3 newColor = lerp(result1.xyz, result2.xyz, L);"		
float3 mixRGB = 0.25 * newColor.xyz;		
mixRGB += ((1.0f - 0.25) * color.xyz);		
		
color.xyz = mixRGB;		
		
"color.xyz = lerp(color.xyz, 0.5 * (1 + sin((color.xyz - 0.5)*3.1415926)), 1.25);"		
		
#ifdef APPLYGAMECOLORCORRECTION		
//apply original corrections (((		
r0.w=1.0;//_c81.y/r5.x;//r5 is AdapLumSampler		
		
luma=0.27*color.r + 0.67*color.g + 0.06*color.b;		
color.xyz=color.xyz * r0.w - luma;		
color.xyz=_c82.x * color.xyz + luma; //deSatContrastGamma.x		
r0.w=luma * _c84.w; //ColorShift.w		
r1.xyz=r0.w * _c84.xyz; //ColorShift		
		
"//darken as DarkeningAmount, but keeps colors"		
color.xyz=color.xyz - _c84.xyz * r0.w; //ColorShift		
color.xyz=saturate(r0.w) * color.xyz + r1.xyz;		
		
"//coloring (green, brown, ...)"		
color.xyz=2.0 * color.xyz * _c83.xyz; //ColorCorrect		
		
//desaturating		
luma=saturate(luma);		
r0.w=_c82.z - _c1.y; //deSatContrastGamma.z - 1.0		
"color.xyz=color.xyz * pow(luma, r0.w);"		
#endif //APPLYGAMECOLORCORRECTION		
		
//pallete texture (0.082 version feature)		
#ifdef E_CC_PALETTE		
color.rgb=saturate(color.rgb);		
"float3 brightness=0.001;//tex2D(s4, _c0.x);//adaptation luminance"		
//	brightness=brightness/(brightness+1.0);	
float3 palette;		
float4 uvsrc=0.0;		
uvsrc.y=brightness.r;		
uvsrc.x=color.r;		
"palette.r=tex2Dlod(s13, uvsrc).r;"		
uvsrc.x=color.g;		
uvsrc.y=brightness.g;		
"palette.g=tex2Dlod(s13, uvsrc).g;"		
uvsrc.x=color.b;		
uvsrc.y=brightness.b;		
"palette.b=tex2Dlod(s13, uvsrc).b;"		
color.rgb=palette.rgb;		
#endif //E_CC_PALETTE		
		
/////////////// KBLPWNINGCOLORCORRECTIONVIP 1.0 BEST		
/////////////// Just remove the /* at the top & */ on the bottom of the code.		
/////////////// If you wanna use it. 		
"/////////////// To disable it, just put the /* & */ like before."		
		
/*		
float Weight;		
r0.xyz=color.xyz;		
"r2.x = dot(color.xyz, 0.3333);"		
"r2.x = 1 - pow(2.71, -r2.x*6.0);"		
r2.x = r2.x * 0.125;		
r0.xyz = saturate(r0.xyz - r2.x);		
"r0.xyz = lerp(r0.xyz, sin(r0.xyz*1.570796), 1.0);"		
Weight=0.6 - r2.x*0.3;		
"color.xyz=lerp(color.xyz, r0.xyz, Weight);"		
"r10.x = dot(color.xyz, _c12.xyz);"		
"color.xyz = lerp(color.xyz, r10.x, 0.1);"		
float fRatio = 0.55;		
float moodR = 1.0;		
float moodG = 1.1;		
float moodB = 0.5;		
float4 colInput = r0;		
float4 colMood = 1.0f;		
colMood.r = moodR;		
colMood.g = moodG;		
colMood.b = moodB;		
float fLum = ( colInput.r + colInput.g + colInput.b ) / 3;		
"colMood = lerp(0, colMood, saturate(fLum * 2.0));"		
"colMood = lerp(colMood, 1, saturate(fLum - 0.5) * 2.0);"		
"float4 colOutput = lerp(colInput, colMood, saturate(fLum * fRatio));"		
"color.rgb=max(0, colOutput);"		
r0.a=1.0;		
*/		
		
focus = length(center.xy)*1.41421;		
"focus = pow(focus, 4);"		
		
color.xyz -= focus * VignetteAmount;		
		
		
_oC0.xyz=color.xyz;		
		
		
		
//_oC0.w=1.0;		
		
return _oC0;		
}		
		
		
//mine temporary post process		
technique Shader_C215BE6E		
{		
   pass p0 		
   {		
 PixelShader  = compile ps_3_0 PS_C215BE6E();		
}		
}		
		
		
		
		
//original shader of post processing		
technique Shader_ORIGINALPOSTPROCESS		
{		
   pass p0 		
   {		
		
PixelShader= 		
asm		
{		
//		
// Generated by Microsoft (R) HLSL Shader Compiler 9.23.949.2378		
//		
// Parameters:		
//		
//   sampler2D AdapLumSampler;		
//   sampler2D BloomSampler;		
//   float4 ColorCorrect;		
//   float4 ColorShift;		
//   float Exposure;		
//   sampler2D GBufferTextureSampler2;		
//   sampler2D GBufferTextureSampler3;		
//   sampler2D HDRSampler;		
//   sampler2D JitterSampler;		
//   float PLAYER_MASK;		
//   sampler2D StencilCopySampler;		
//   float4 TexelSize;		
//   float4 ToneMapParams;		
//   float4 deSatContrastGamma;		
//   float4 dofBlur;		
//   float4 dofDist;		
//   float4 dofProj;		
//   float gDirectionalMotionBlurLength;		
//   float4 globalScreenSize;		
//   row_major float4x4 motionBlurMatrix;		
//		
//		
// Registers:		
//		
//   Name                         Reg   Size		
//   ---------------------------- ----- ----		
//   globalScreenSize             c44      1		
//   Exposure                     c66      1		
//   motionBlurMatrix             c72      4		
//   TexelSize                    c76      1		
//   dofProj                      c77      1		
//   dofDist                      c78      1		
//   dofBlur                      c79      1		
//   gDirectionalMotionBlurLength c80      1		
//   ToneMapParams                c81      1		
//   deSatContrastGamma           c82      1		
//   ColorCorrect                 c83      1		
//   ColorShift                   c84      1		
//   PLAYER_MASK                  c85      1		
//   GBufferTextureSampler2       s0       1		
//   GBufferTextureSampler3       s1       1		
//   HDRSampler                   s2       1		
//   BloomSampler                 s3       1		
//   AdapLumSampler               s4       1		
//   JitterSampler                s5       1		
//   StencilCopySampler           s6       1		
//		
		
   ps_3_0		
"   def c0, 0, 0.212500006, 0.715399981, 0.0720999986"		
"   def c1, 0.25, 1, 256, 0"		
"   def c2, 0, 2, 4, 8"		
"   def c3, 58.1640015, 47.1300011, 0, 0"		
"   def c4, -0.5, -1.5, 1.5, 0.5"		
"   def c5, 2, -1, 0.125, 0"		
"   def c6, 256, 2, 4, 8"		
"def c180, 0.0, 0.0, 0.0, 100.5"		
"def c181, 1.0, 0.0, 0.0, 20.01"		
"def c183, 800.0, 600.0, 0.0, 100.5"		
"   defi i0, 7, 0, 0, 0"		
   dcl_texcoord v0.xy		
   dcl_2d s0		
   dcl_2d s1		
   dcl_2d s2		
   dcl_2d s3		
   dcl_2d s4		
   dcl_2d s5		
   dcl_2d s6		
"   texld r0, v0, s1"		
"   add r0.y, -c77.x, c77.y"		
"   rcp r0.y, r0.y"		
"   mul r0.z, r0.y, c77.y"		
"   mul r0.z, r0.z, -c77.x"		
"   mad r0.x, c77.y, -r0.y, r0.x"		
"   rcp r0.x, r0.x"		
"   mul r0.y, r0.z, r0.x"		
"   texld r1, v0, s2"		
"   texld r2, v0, s3"		
"   abs r0.w, c79.w"		
"   mov r3, c4"		
"   mad r4.xy, c76, r3, v0"		
"   texld r4, r4, s2"		
"   mad r5.xy, c76, r3.zxzw, v0"		
"   texld r5, r5, s2"		
"   mad r3.xz, c76.xyyw, r3.wyzw, v0.xyyw"		
"   texld r6, r3.xzzw, s2"		
"   mad r3.xy, c76, r3.ywzw, v0"		
"   texld r7, r3, s2"		
"   dp3 r1.w, r4, r4"		
"   rcp r1.w, r1.w"		
"   cmp r3.xyz, -r1.w, c0.x, r4"		
"   dp3 r1.w, r5, r5"		
"   rcp r1.w, r1.w"		
"   cmp r4.xyz, -r1.w, c0.x, r5"		
"   dp3 r1.w, r6, r6"		
"   rcp r1.w, r1.w"		
"   cmp r5.xyz, -r1.w, c0.x, r6"		
"   dp3 r1.w, r7, r7"		
"   rcp r1.w, r1.w"		
"   cmp r6.xyz, -r1.w, c0.x, r7"		
"   dp3 r1.w, r1, r1"		
"   rcp r1.w, r1.w"		
"   cmp r7.xyz, -r1.w, c0.x, r1"		
"   mad r0.x, r0.z, r0.x, -c78.w"		
"   mad r0.x, c78.y, -r3.w, r0.x"		
"   max r1.w, r0.x, c0.x"		
"   rcp r0.x, c78.z"		
"   mul r0.x, r1.w, r0.x"		
"   lrp r1.w, r0.x, c79.z, c79.y"		
"   min r0.x, c79.z, r1.w"		
"   dp3 r0.z, r7, c0.yzww"		
"   dp3 r8.x, r3, c0.yzww"		
"   dp3 r8.y, r4, c0.yzww"		
"   dp3 r8.z, r5, c0.yzww"		
"   dp3 r8.w, r6, c0.yzww"		
"   dp4 r1.w, r8, c1.x"		
"   add r8, r8, -r1.w"		
"   dp4 r2.w, r8, r8"		
"   add r0.z, r0.z, -r1.w"		
"   mad r0.z, r0.z, r0.z, -r2.w"		
"   mul r0.x, r0.x, r0.x"		
"   cmp r0.x, r0.z, c1.y, r0.x"		
"   texld r8, v0, s0"		
"   mov r8.yz, c1"		
"   mad r9, r8.w, -r8.z, c2"		
"   cmp r9, r9, c1.y, c1.w"		
"   mad r10, r8.w, -c6.x, c6.yzwx"		
"   cmp r10, r10, -c1.y, -c1.w"		
"   add r9, r9, r10"		
"   mul r9, r9, c4.x"		
"   dp4 r0.z, r9, c1.y"		
"   add r0.z, r0.z, c4.w"		
"   rcp r0.z, r0.z"		
"   mul r8.xzw, r3.xyyz, r9.x"		
"   mad r7.xyz, r7, c4.w, r8.xzww"		
"   mad r7.xyz, r4, r9.y, r7"		
"   mad r7.xyz, r5, r9.z, r7"		
"   mad r7.xyz, r6, r9.w, r7"		
"   mul r7.xyz, r0.z, r7"		
"   add r0.z, -r0.x, c1.y"		
"   mul r1.w, r0.x, c1.x"		
"   mul r3.xyz, r3, r1.w"		
"   mad r3.xyz, r7, r0.z, r3"		
"   mad r3.xyz, r4, r1.w, r3"		
"   mad r3.xyz, r5, r1.w, r3"		
"   mad r3.xyz, r6, r1.w, r3"		
"   mad r4.xyz, v0.yxyw, c5.x, c5.y"		
"   mul r0.z, r4.y, c77.z"		
"   mul r0.z, r0.y, r0.z"		
"   mul r1.w, -r4.x, c77.w"		
"   mul r1.w, r0.y, r1.w"		
"   mul r5.xyz, r1.w, c73"		
"   mad r5.xyz, r0.z, c72, r5"		
"   mad r5.xyz, -r0.y, c74, r5"		
"   add r5.xyz, r5, c75"		
"   mul r0.y, -r5.z, c77.z"		
"   rcp r0.y, r0.y"		
"   mul r6.x, r5.x, r0.y"		
"   mul r0.y, r5.z, c77.w"		
"   rcp r0.y, r0.y"		
"   mul r6.y, r5.y, r0.y"		
"   add r0.yz, -r4, r6.xxyw"		
"   mul r0.yz, r0, c80.x"		
"   mul r4.xy, r0.yzzw, c5.z"		
"   texld r5, v0, s6"		
"   add r1.w, r5.x, -c85.x"		
"   mul r4.zw, r3.xyxy, c2.w"		
"   mad r4.zw, v0.xyxy, c3.xyxy, r4"		
"   texld r5, r4.zwzw, s5"		
"   add r2.w, r5.x, c4.x"		
"   mad r4.zw, r4.xyxy, r2.w, v0.xyxy"		
"   mov r5.xyz, r3"		
"   mov r2.w, c1.y"		
"   mov r3.w, c1.y"		
		
   rep i0		
"     mad r6.xy, r4, r3.w, r4.zwzw"		
"     texld r7, r6, s6"		
"     add r5.w, r7.x, -c85.x"		
"     cmp r5.w, r5.w, c1.w, c1.y"		
"     texld r6, r6, s2"		
"     mad r5.xyz, r6, r5.w, r5"		
"     add r2.w, r2.w, r5.w"		
"     add r3.w, r3.w, c1.y"		
   endrep		
		
"   rcp r2.w, r2.w"		
"   mul r0.yz, r0, c183.xxyw//c44.xxyw"		
"   dp2add r0.y, r0.yzzw, r0.yzzw, c0.x"		
"   rsq r0.y, r0.y"		
"   rcp r0.y, r0.y"		
"   mul r0.y, r0.y, c4.w"		
"   add r0.x, r0.x, c1.y"		
"   rcp r0.x, r0.x"		
"   mul_sat r0.x, r0.y, r0.x"		
"   mad r4.xyz, r5, r2.w, -r3"		
"   mad r0.xyz, r0.x, r4, r3"		
"   cmp r0.xyz, r1.w, r3, r0"		
"   cmp r0.xyz, -r0.w, r0, r1"		
		
"   texld r1, c0.x, s4"		
"   rcp r0.w, r1.x"		
"   mul r0.w, r0.w, c81.y"		
"   rcp r1.x, r0.w"		
"   mul r1.x, r1.x, c81.x"		
"   mad r1.xyz, r2, c66.x, -r1.x"		
"   max r2.xyz, r1, c0.x"		
"   mul r1.xyz, r2, c81.z"		
"   mul r1.xyz, r1, c1.x"		
"   mad r0.xyz, r0, c66.x, r1"		
"   mul r1.xyz, r0.w, r0"		
"   dp3 r1.x, r1, c0.yzww"		
"   mad r0.xyz, r0, r0.w, -r1.x"		
"   mad r0.xyz, c82.x, r0, r1.x"		
"   mul r0.w, r1.x, c84.w"		
"   mul r1.yzw, r0.w, c84.xxyz"		
"   mov_sat r2.x, r0.w"		
"   mad r0.xyz, c84, -r0.w, r0"		
"   mad r0.xyz, r2.x, r0, r1.yzww"		
"   mul r0.xyz, r0, c83"		
"   add r0.xyz, r0, r0"		
"   mov_sat r1.x, r1.x"		
"   add r0.w, -r8.y, c82.z"		
"   pow r2.x, r1.x, r0.w"		
"//mul r2.x, r2.x, c181.x"		
"   mul oC0.xyz, r0, r2.x"		
"   mov oC0.w, c1.y"		
		
"//texld r1, v0, s2"		
"//mul oC0.xyz, r1, c199.z"		
};		
   }		
}		
