iCEnhancer Forum :: Search Results10 Most Recent Posts 10 Results Found
Result 1 of 10: Author Topic: Game Will Not Launch with iCE enhancer (Read 2 times)
camsaur Modding Rookie member is offline Joined: May 2013 Gender: Male Posts: 1 Karma: 0Game Will Not Launch with iCE enhancer « Result #1 Today at 2:46am »
Hello, my GTA IV ELFC 1.0.7.0 will not launch with iCE enhancer ( ) and I have not see it anywhere how to fix. (It gets stuck in loading screen and will not stop playing the music. Then eventually, after 5-10 minutes, it gets unresponsive) Please respond guys!! THANKS!
Result 2 of 10: Author Topic: Guys Please help! (Read 24 times)
ahmeddam Modding Rookie member is offline Joined: May 2013 Gender: Male Posts: 1 Karma: 0Guys Please help! « Result #2 on May 19, 2013, 2:58pm »
Hey there guys, Actually i have been confused about the graphics card! eveyone says me to Get a HD 7870.... I just wanted to know will IcEnhancer or any Graphic Mods will support HD 7870 Smoothly? Thank you
Result 3 of 10: Author Topic: LENS FLARE DEACTIVATION HELP; :) (Read 9 times)
smily Modding Rookie member is offline Joined: May 2013 Gender: Male Posts: 4 Karma: 0LENS FLARE DEACTIVATION HELP; :) « Result #3 on May 18, 2013, 9:39pm »
How do I deactivate lens flare in this bloom fx file float4 BloomParameters; float4 TempParameters; float4 ScreenSize; float BloomRadius3 = 64; float BloomRadius4 = 128; float MixFactor = 0.5; float3 violetfirstpass = float3(.8, .8, 0); float3 violetsun = float3(1, .7, 0); float3 overallcolor = float3(.7, .7, 0); //quad struct VS_OUTPUT_POST { float4 vpos : POSITION; float2 txcoord0 : TEXCOORD0; }; struct VS_INPUT_POST { float3 pos : POSITION; float2 txcoord0 : TEXCOORD0; }; texture2D texBloom1; texture2D texBloom2; texture2D texBloom3; texture2D texBloom4; texture2D texBloom5; 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; }; //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 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 //zero pass HQ, input texture is fullscreen //SamplerBloom1 - fullscreen texture float4 PS_BloomPrePass(VS_OUTPUT_POST In) : COLOR { float4 bloomuv; float4 overbright; float bthreshold = 60; float4 bloom=tex2D(SamplerBloom1, In.txcoord0); const float2 offset[16]= { float2(-0.94201624, -0.39906216), float2( 0.94558609, -0.76890725), float2(-0.09418410, -0.92938870), float2( 0.34495938, 0.29387760), float2(-0.91588581, 0.45771432), float2(-0.81544232, -0.87912464), float2(-0.38277543, 0.27676845), float2( 0.97484398, 0.75648379), float2( 0.44323325, -0.97511554), float2( 0.53742981, -0.47373420), float2(-0.26496911, -0.41893023), float2( 0.79197514, 0.19090188), float2(-0.24188840, 0.99706507), float2(-0.81409955, 0.91437590), float2( 0.19984126, 0.78641367), float2( 0.14383161, -0.14100790) }; float2 screenfact=1; screenfact.y*=ScreenSize.z; screenfact.xy*=TempParameters.z*6; float4 srcbloom=bloom; for (int i=0; i<16; i++) { bloomuv.xy= In.txcoord0.xy; //bloomuv.xy=offset[i]; //bloomuv.xy=(bloomuv.xy*screenfact.xy)+In.txcoord0.xy;//-(1.0/256.0);//-(1.0/512.0); bloomuv.x = bloomuv.x - 0.5; bloomuv.y = 0.5 - bloomuv.y; bloomuv.xy -= bloomuv.xy* floor(i*0.25) *0.25; bloomuv.xy = -bloomuv.xy; bloomuv.xy *= 0.25 + i * 1; bloomuv.x = bloomuv.x + 0.5; bloomuv.y = 0.5 - bloomuv.y; bloomuv.xy = saturate(bloomuv.xy); overbright = tex2D(SamplerBloom1, bloomuv.xy); overbright.w = dot(overbright.xyz, 0.3333); overbright.w = saturate(overbright.w - bthreshold); if(overbright.w) bloom.xyz += overbright.xyz; else { bloomuv.xy=offset[i]; bloomuv.xy=(bloomuv.xy*screenfact.xy)+In.txcoord0.xy;//-(1.0/256.0);//-(1.0/512.0); bloom+=tex2D(SamplerBloom1, bloomuv.xy); } } bloom*=0.06;//0.12; float3 violet=violetsun; float ttt=dot(bloom.xyz, 0.333)-dot(srcbloom.xyz, 0.333); ttt=max(ttt, 0.0); float gray=BloomParameters.z*ttt;//max(srcbloom.x, max(srcbloom.y, srcbloom.z)); float mixfact=(gray/(1.0+gray)); mixfact*=1.0-saturate((TempParameters.w-1.0)*0.0); violet.xy+=saturate((TempParameters.w-1.0)*0.0); violet.xy=saturate(violet.xy); bloom.xyz*=lerp(1.0, violet.xyz, mixfact); bloom.w=1.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 bloomuv2; float4 bloom=tex2D(SamplerBloom1, In.txcoord0); const float2 offset[16]= { float2(-0.94201624, -0.39906216), float2( 0.94558609, -0.76890725), float2(-0.09418410, -0.92938870), float2( 0.34495938, 0.29387760), float2(-0.91588581, 0.45771432), float2(-0.81544232, -0.87912464), float2(-0.38277543, 0.27676845), float2( 0.97484398, 0.75648379), float2( 0.44323325, -0.97511554), float2( 0.53742981, -0.47373420), float2(-0.26496911, -0.41893023), float2( 0.79197514, 0.19090188), float2(-0.24188840, 0.99706507), float2(-0.81409955, 0.91437590), float2( 0.19984126, 0.78641367), float2( 0.14383161, -0.14100790) }; float2 screenfact=1.0; screenfact.y*=ScreenSize.z; screenfact.xy/=ScreenSize.x; float4 srcbloom=bloom; float step=(TempParameters.w-0.5);//*1.5; screenfact.xy*=step; float4 bloomadd=bloom; for (int i=0; i<16; i++) { bloomuv.xy=offset[i]*BloomParameters.x; bloomuv.xy=(bloomuv.xy*screenfact.xy)+In.txcoord0.xy;//-(1.0/256.0);//-(1.0/512.0); bloomuv2.xy=offset[i]*BloomRadius3; bloomuv2.xy=(bloomuv2.xy*screenfact.xy)+In.txcoord0.xy; //v2 float4 tempbloom1=tex2D(SamplerBloom1, bloomuv.xy); float4 tempbloom2=tex2D(SamplerBloom1, bloomuv2.xy); float4 tempbloom = lerp(tempbloom1, tempbloom2, MixFactor); bloomadd+=tempbloom; bloom.xyz = max(bloom.xyz, tempbloom.xyz*0.99); } //v1 bloomadd*=0.111111; //v0 bloom.xyz=lerp(bloomadd.xyz, bloom.xyz, BloomParameters.w); //float3 violet=float3(.8, .8, 0); //float3 violet=float3(.8, .8, 0);//v2 float3 violet=violetfirstpass;//v3 //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;//max(srcbloom.x, max(srcbloom.y, srcbloom.z)); float mixfact=(gray/(1.0+gray)); mixfact*=1.0-saturate((TempParameters.w-1.0)*0.4); violet.xy+=saturate((TempParameters.w-1.0)*0.4); 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 bloomuv2; float4 bloom=tex2D(SamplerBloom1, In.txcoord0); const float2 offset[16]= { float2(-0.94201624, -0.39906216), float2( 0.94558609, -0.76890725), float2(-0.09418410, -0.92938870), float2( 0.34495938, 0.29387760), float2(-0.91588581, 0.45771432), float2(-0.81544232, -0.87912464), float2(-0.38277543, 0.27676845), float2( 0.97484398, 0.75648379), float2( 0.44323325, -0.97511554), float2( 0.53742981, -0.47373420), float2(-0.26496911, -0.41893023), float2( 0.79197514, 0.19090188), float2(-0.24188840, 0.99706507), float2(-0.81409955, 0.91437590), float2( 0.19984126, 0.78641367), float2( 0.14383161, -0.14100790) }; float2 screenfact=1.0; screenfact.y*=ScreenSize.z; screenfact.xy/=ScreenSize.x; float4 srcbloom=bloom; float step=(TempParameters.w-0.5)*1.2;//v3 screenfact.xy*=step; float4 rotvec=0.0; sincos(0.19635, rotvec.x, rotvec.y); for (int i=0; i<16; i++) { bloomuv.xy=offset[i]; bloomuv.xy=reflect(bloomuv.xy, rotvec.xy); bloomuv.xy*=BloomParameters.y; //separate code is much faster without constant table operations bloomuv.xy=(bloomuv.xy*screenfact.xy)+In.txcoord0.xy;//-(1.0/256.0);//-(1.0/512.0); float4 tempbloom1 = tex2D(SamplerBloom1, bloomuv.xy); bloomuv2.xy=offset[i]; bloomuv2.xy=reflect(bloomuv2.xy, rotvec.xy); bloomuv2.xy*=BloomRadius4; bloomuv2.xy=(bloomuv2.xy*screenfact.xy)+In.txcoord0.xy;//-(1.0/256.0);//-(1.0/512.0); float4 tempbloom2 = tex2D(SamplerBloom1, bloomuv2.xy); float4 tempbloom = lerp(tempbloom1, tempbloom2, MixFactor); bloom+=tempbloom; } float3 violet=overallcolor; float ttt=dot(bloom.xyz, 0.333)-dot(srcbloom.xyz, 0.333); ttt=max(ttt, 0.0); float gray=BloomParameters.z*ttt;//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.2); violet.xy=saturate(violet.xy); bloom.xyz*=lerp(1.0, violet.xyz, mixfact); bloom*=0.06;//0.125; bloom.w=1.0; return bloom; } //last pass, mix several bloom textures //SamplerBloom5 is the result of prepass float4 PS_BloomPostPass(VS_OUTPUT_POST In) : COLOR { float4 bloom; float4 temp; //v1 bloom =tex2D(SamplerBloom1, In.txcoord0); bloom+=tex2D(SamplerBloom2, In.txcoord0); bloom+=tex2D(SamplerBloom3, In.txcoord0); bloom+=tex2D(SamplerBloom4, In.txcoord0); bloom+=tex2D(SamplerBloom5, In.txcoord0); bloom*=0.2; temp = bloom; //v2 float4 bloom1=tex2D(SamplerBloom1, In.txcoord0); float4 bloom2=tex2D(SamplerBloom2, In.txcoord0); float4 bloom3=tex2D(SamplerBloom3, In.txcoord0); float4 bloom4=tex2D(SamplerBloom4, In.txcoord0); float4 bloom5=tex2D(SamplerBloom5, In.txcoord0); bloom=max(bloom1, bloom2); bloom=max(bloom, bloom3); bloom=max(bloom, bloom4); bloom=max(bloom, bloom5); bloom = lerp(temp, bloom, 0.3); //bloom =tex2D(SamplerBloom1, In.txcoord0); bloom.w=1.0; 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; } }
Result 4 of 10: Author Topic: Faking god rays (Read 15 times)
smily Modding Rookie member is offline Joined: May 2013 Gender: Male Posts: 4 Karma: 0Faking god rays « Result #4 on May 16, 2013, 1:42pm »
does anyone have any idea how to fake godrays in the icebloom.fx 2.1 file?
Result 5 of 10: Author Topic: Help adding bloom from one iceshader.fx to another (Read 10 times)
smily Modding Rookie member is offline Joined: May 2013 Gender: Male Posts: 4 Karma: 0Help adding bloom from one iceshader.fx to another « Result #5 on May 16, 2013, 8:13am »
I WANT TO ADD JUST THE BLOOM FROM THE FIRST ICESHADER.FX LISTED BELOW TO THE 2ND FX FILE ALSO LISTED BELOW //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); 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 = NONE;//NONE;//LINEAR; AddressU = Clamp; AddressV = Clamp; SRGBTexture=FALSE; MaxMipLevel=0; MipMapLodBias=0; }; sampler2D s1 = sampler_state { Texture = <texs1>; MinFilter = LINEAR;// MagFilter = LINEAR;// MipFilter = NONE;//NONE;//LINEAR; AddressU = Clamp; AddressV = Clamp; SRGBTexture=FALSE; MaxMipLevel=0; MipMapLodBias=0; }; sampler2D s3 = sampler_state { Texture = <texs3>; MinFilter = LINEAR;// MagFilter = LINEAR;// MipFilter = NONE;//NONE;//LINEAR; AddressU = Clamp; AddressV = Clamp; 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 _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; 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; r1=tex2D(s2, _v0.xy); //HDRSampler r2=tex2D(s3, _v0.xy); //BloomSampler //r1*=10.0; r0.w=abs(_c79.w); r3=_c4; //-0.5, -1.5, 1.5, 0.5 float2 center; float distance; float focus; float farblur; float dof; distance=r0.z * r0.x - _c78.w; //dofDist.w distance+=_c78.y * -r3.w; //dofDist.y distance+=140;//offset center.x=_v0.x-0.5; center.y=0.5-_v0.y; focus=length(center.xy)*1.41421; focus=pow(focus,3)*2; focus=max(focus,0.4); farblur=clamp(distance*0.05,0.2,0.999); if(distance*0.1>2)dof=0.9; else dof=0.0; //TEMP decrease bluriness for edge smoothing float2 off_c76=_c76.xy*(farblur); r4.xy=off_c76.xy * r3.xy + _v0.xy; //TexelSize.xy r4=tex2D(s2, r4.xy); //HDRSampler r5.xy=off_c76.xy * r3.zx + _v0.xy; //TexelSize.xy r5=tex2D(s2, r5.xy); //HDRSampler r3.xz=off_c76.xy * r3.wz + _v0.xy; //TexelSize.xy r6=tex2D(s2, r3.xz); //HDRSampler r3.xy=off_c76.xy * r3.yw + _v0; //TexelSize.xy r7=tex2D(s2, r3.xy); //HDRSampler r1.w=dot(r4.xyz, r4.xyz); r1.w=1.0/r1.w; if (-r1.w<0.0) { r3.xyz=r4.xyz; } else r3.xyz=_c0.x; r1.w=dot(r5.xyz, r5.xyz); //dp3 r1.w=1.0/r1.w; if (-r1.w<0.0) { r4.xyz=r5.xyz; } else r4.xyz=_c0.x; r1.w=dot(r6.xyz, r6.xyz); //dp3 r1.w=1.0/r1.w; if (-r1.w<0.0) { r5.xyz=r6.xyz; } else r5.xyz=_c0.x; r1.w=dot(r7.xyz, r7.xyz); //dp3 r1.w=1.0/r1.w; if (-r1.w<0.0) { r6.xyz=r7.xyz; } else r6.xyz=_c0.x; r1.w=dot(r1.xyz, r1.xyz); //dp3 r1.w=1.0/r1.w; if (-r1.w<0.0) { r7.xyz=r1.xyz; } else r7.xyz=_c0.x; 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.0/r0.y; r6.x=r5.x * r0.y; r0.y=r5.z * _c77.w; //dofProj.w r0.y=1.0/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.yzzw * _c5.z; //0.125 r4.x=r0.y * _c5.z; r4.y=r0.z * _c5.z; r5=tex2D(s6, _v0.xy); //StencilCopySampler r1.w=r5.x + -_c85.x; //PLAYER_MASK.x r4.zw=r3.xyxy * _c2.w; //8.0 //r4.z=r3.x * _c2.w; //r4.w=r3.y * _c2.w; //r4.zw=_v0.xyxy * _c3.xyxy + r4; //58.1640015, 47.1300011 r4.z=_v0.x * _c3.x + r4.z; //v2 r4.w=_v0.y * _c3.y + r4.w; //v2 r5=tex2D(s5, r4.zw); //JitterSampler r2.w=r5.x + _c4.x; //-0.5 //r4.zw=r4.xyxy * r2.w + _v0.xyxy; //v0 r4.z=r4.x * r2.w + _v0.x; //v2 r4.w=r4.y * r2.w + _v0.y; //v2 r5.xyz=r3.xyz; r2.w=_c1.y; //1.0 r3.w=_c1.y; //1.0 //motion blur for (int iii=0; iii<7; iii++) { // r6.xy=r4 * r3.w + r4.zwzw; //v0 r6.x=r4.x * r3.w + r4.z; //v2 r6.y=r4.y * r3.w + r4.w; //v2 r7=tex2D(s6, r6.xy); r5.w=r7.x - _c85.x; if (r5.w<0.0) { 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 #ifndef POSTPROCESS_V2 r5=tex2D(s4, _c0.x);//adaptation luminance //r5=1.0; float4 color; //r0=tex2D(s2, _v0.xy);//hdr color color=r0 + r11; float luma=0.27*color.r + 0.67*color.g + 0.06*color.b; //increase color float cgray=dot(color.xyz, 0.333);//luma float3 poweredcolor=pow(color.xyz, EColorSaturation); float newgray=dot(poweredcolor.xyz, 0.333); color.xyz=poweredcolor.xyz*cgray/(newgray+0.0001); float4 colorbloom=tex2D(s3, _v0.xy); //bloom colorbloom.r*=1.1; colorbloom.g*=1.0; colorbloom.b*=0.9; //HERE 0.15 is bloom factor 1, soft bloom color=colorbloom * EBloomAmountV1 + color; //power from intensity r10.x=dot(color.xyz, _c12.xyz); //luminance r10.x*=EBrightnessV1; color*=r10.x; color=pow(color*2, 0.6)*0.3 + color*0.7; //adaptation r5.w=r5.x; r5.w=1.0/r5.w; color.xyz=color.xyz * r5.w; r3.xy=_c10.xwxw; r3.xy=r3.xy * r5.w; color=color * _c7.y; //pre multiply r1=color * _c7.z; //e multiply r1=r1 + _c7.w; //color=color / (r1 + _c7.w); //+1.0 color=color / r1; //HERE 0.8 is bloom for additive mix color=EBloomAmountAdditiveV1*colorbloom * r3.x + color; color=(1 - pow(2.4,-color))*0.5 + color*0.5 - pow(2, -color*2)*0.02; float middlegray=dot(color.xyz, 0.37); float3 diffcolor=color.rgb-middlegray; color.rgb+=diffcolor*0.8; color.xyz=saturate(color.xyz); color.xyz=color.xyz*0.6 + sin(color.xyz*1.57079)*0.4; #endif //not POSTPROCESS_V2 #ifdef POSTPROCESS_V2 //float4 color=r11; float4 color=r0; float luma=0.27*color.r + 0.67*color.g + 0.06*color.b; //increase color float cgray=dot(color.xyz, 0.333);//luma float3 poweredcolor=pow(color.xyz, EColorSaturation); float newgray=dot(poweredcolor.xyz, 0.333); color.xyz=poweredcolor.xyz*cgray/(newgray+0.0001); r5=tex2D(s4, _c0.x);//adaptation luminance r5.w=r5.x; r5.w=1.0/r5.w; color.xyz=color.xyz * r5.w; luma=dot(color.xyz, _c12.xyz); color.xyz*=pow(luma, 1.2); color.xyz=1 - pow(2.71, -color.xyz*EBrightnessV2); float4 colorbloom=r5.w*EBloomAmountV2*tex2D(s3, _v0.xy);//0.5 colorbloom.r*=1.1; colorbloom.g*=1.0; colorbloom.b*=0.9; float bloomgray=dot(colorbloom.xyz, 0.333); color.xyz=lerp(color.xyz, color.xyz*0.8+colorbloom.xyz*0.2, saturate(bloomgray)); color.xyz=max(color.xyz, 0.0001); float colorgray=dot(color.xyz, 0.333);//luma//max(color.x, max(color.y, color.z));// float3 middlecolor=(color.xyz+0.0001)/(colorgray+0.000001); middlecolor.xyz=lerp(middlecolor.xyz, dot(middlecolor.xyz, 0.333), EColoringV2);//0.6 //color color.xyz=middlecolor.xyz*pow(colorgray, EDarkeningV2);//0.4*tempF2.z //darken color.xyz-=pow(2,-r0*2)*0.05; float middlegray=dot(color.xyz, 0.333); float3 diffcolor=color.rgb-middlegray; color.rgb+=diffcolor*0.3; color.xyz=saturate(color.xyz); color.xyz=color.xyz*0.9 + sin(color.xyz*1.570796)*0.1; #endif //POSTPROCESS_V2 #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 _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 { // 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 }; } }) Thats the file with the bloom i want how do i add just the bloom to this file struct VS_OUTPUT_POST { float4 vpos : POSITION; float2 txcoord0 : TEXCOORD0; }; struct VS_INPUT_POST { float3 pos : POSITION; float2 txcoord0 : TEXCOORD0; }; 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); 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 s2=sampler_state { Texture=<texs2>; }; sampler2D s4=sampler_state { Texture=<texs4>; }; #ifdef NormalMB sampler2D s5=sampler_state { Texture=<texs5>; }; #endif sampler2D s6=sampler_state { Texture=<texs6>; }; sampler2D s7=sampler_state { Texture=<texs7>; }; sampler2D s15=sampler_state { Texture=<texs15>; }; sampler2D s0 = sampler_state { Texture = <texs0>; MinFilter = LINEAR;// MagFilter = LINEAR;// MipFilter = NONE;//NONE;//LINEAR; AddressU = Clamp; AddressV = Clamp; SRGBTexture=FALSE; MaxMipLevel=0; MipMapLodBias=0; }; sampler2D s1 = sampler_state { Texture = <texs1>; MinFilter = LINEAR;// MagFilter = LINEAR;// MipFilter = NONE;//NONE;//LINEAR; AddressU = Clamp; AddressV = Clamp; SRGBTexture=FALSE; MaxMipLevel=0; MipMapLodBias=0; }; sampler2D s3 = sampler_state { Texture = <texs3>; MinFilter = LINEAR;// MagFilter = LINEAR;// MipFilter = NONE;//NONE;//LINEAR; AddressU = Clamp; AddressV = Clamp; SRGBTexture=FALSE; MaxMipLevel=0; MipMapLodBias=0; }; #ifdef AlternativeMB sampler2D s5 = sampler_state //fixed { Texture = <texs5>; MinFilter = LINEAR; MagFilter = LINEAR; MipFilter = NONE; AddressU = Wrap; AddressV = Wrap; SRGBTexture=FALSE; MaxMipLevel=0; MipMapLodBias=0; }; #endif 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); 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 _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 //************************* #ifdef HQ_DOF 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 #ifndef AUTOFOCUS float4 vDofParams = float4(-4, 1, 5000.0, 1); #else float4 vDofParams = float4(-5000, 1, 30000.0, 1); #endif 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; #endif #ifdef DEPTH_OF_FIELD 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; #ifdef AUTOFOCUS float cdepth; cdepth=r4.z * r4.x - _c78.w; //dofDist.w cdepth+=_c78.y * -r3.w; //dofDist.y cdepth+=150;//offset r4.w = tex2D(s0, FocusPoint).w; if(r4.w > 0) { vDofParams.z = cdepth*10.0; vDofParams.y = cdepth; } #endif #ifdef HQ_DOF depth = max(depth, 0); 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; #endif #ifdef DOF_NORMAL_QUALITY static float3 poisson[24]= { float3(1.0, 0.0, 1.0000 ), //0 degrees float3(0.0, -1.0, 1.0000 ), float3(-1.0, 0.0, 1.0000 ), float3(0.0, 1.0, 1.0000 ), float3(0.7071, 0.7071, 1.0000 ), //45 degrees float3(0.7071, 0.7071, 1.0000 ), float3(-0.7071, -0.7071, 1.0000 ), float3(-0.7071, 0.7071, 1.0000 ), float3(0.9659, 0.2588, 1.0000 ), //15 degrees float3(0.2588, -0.9659, 1.0000 ), float3(-0.9659, -0.2588, 1.0000 ), float3(-0.2588, 0.9659, 1.0000 ), float3(0.8660, 0.5000, 1.0000 ), //60 degrees float3(0.5000, -0.8660, 1.0000 ), float3(-0.8660, -0.5000, 1.0000 ), float3(-0.5000, 0.8660, 1.0000 ), float3(0.5000, 0.8660, 1.0000 ), //30 degrees float3(0.8660, -0.5000, 1.0000 ), float3(-0.5000, -0.8660, 1.0000 ), float3(-0.8660, 0.5000, 1.0000 ), float3(0.2588, 0.9659, 1.0000 ), //75 degrees float3(0.9659, -0.2588, 1.0000 ), float3(-0.2588, -0.9659, 1.0000 ), float3(-0.9659, 0.2588, 1.0000 ), }; #endif #ifdef DOF_HIGH_QUALITY static float3 poisson[60] = { float3( 0.2165, 0.1250, 1.0000 ), float3( 0.0000, 0.2500, 1.0000 ), float3( -0.2165, 0.1250, 1.0000 ), float3( -0.2165, -0.1250, 1.0000 ), float3( -0.0000, -0.2500, 1.0000 ), float3( 0.2165, -0.1250, 1.0000 ), float3( 0.4330, 0.2500, 1.0000 ), float3( 0.0000, 0.5000, 1.0000 ), float3( -0.4330, 0.2500, 1.0000 ), float3( -0.4330, -0.2500, 1.0000 ), float3( -0.0000, -0.5000, 1.0000 ), float3( 0.4330, -0.2500, 1.0000 ), float3( 0.6495, 0.3750, 1.0000 ), float3( 0.0000, 0.7500, 1.0000 ), float3( -0.6495, 0.3750, 1.0000 ), float3( -0.6495, -0.3750, 1.0000 ), float3( -0.0000, -0.7500, 1.0000 ), float3( 0.6495, -0.3750, 1.0000 ), float3( 0.8660, 0.5000, 1.0000 ), float3( 0.0000, 1.0000, 1.0000 ), float3( -0.8660, 0.5000, 1.0000 ), float3( -0.8660, -0.5000, 1.0000 ), float3( -0.0000, -1.0000, 1.0000 ), float3( 0.8660, -0.5000, 1.0000 ), float3( 0.2163, 0.3754, 0.8670 ), float3( -0.2170, 0.3750, 0.8670 ), float3( -0.4333, -0.0004, 0.8670 ), float3( -0.2163, -0.3754, 0.8670 ), float3( 0.2170, -0.3750, 0.8670 ), float3( 0.4333, 0.0004, 0.8670 ), float3( 0.4328, 0.5004, 0.8847 ), float3( -0.2170, 0.6250, 0.8847 ), float3( -0.6498, 0.1246, 0.8847 ), float3( -0.4328, -0.5004, 0.8847 ), float3( 0.2170, -0.6250, 0.8847 ), float3( 0.6498, -0.1246, 0.8847 ), float3( 0.6493, 0.6254, 0.9065 ), float3( -0.2170, 0.8750, 0.9065 ), float3( -0.8663, 0.2496, 0.9065 ), float3( -0.6493, -0.6254, 0.9065 ), float3( 0.2170, -0.8750, 0.9065 ), float3( 0.8663, -0.2496, 0.9065 ), float3( 0.2160, 0.6259, 0.8851 ), float3( -0.4340, 0.5000, 0.8851 ), float3( -0.6500, -0.1259, 0.8851 ), float3( -0.2160, -0.6259, 0.8851 ), float3( 0.4340, -0.5000, 0.8851 ), float3( 0.6500, 0.1259, 0.8851 ), float3( 0.4325, 0.7509, 0.8670 ), float3( -0.4340, 0.7500, 0.8670 ), float3( -0.8665, -0.0009, 0.8670 ), float3( -0.4325, -0.7509, 0.8670 ), float3( 0.4340, -0.7500, 0.8670 ), float3( 0.8665, 0.0009, 0.8670 ), float3( 0.2158, 0.8763, 0.9070 ), float3( -0.6510, 0.6250, 0.9070 ), float3( -0.8668, -0.2513, 0.9070 ), float3( -0.2158, -0.8763, 0.9070 ), float3( 0.6510, -0.6250, 0.9070 ), float3( 0.8668, 0.2513, 0.9070 ) }; #endif 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 *= PixelSizeMultiplier; pixelSizeLow.xy = pixelSizeHigh.xy; float2 vMaxCoC = float2(5.0, 10.0); float radiusScale = BlurIntensity; 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 < DoF_TAPS; 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 += 150;//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.0; else tap.w = abs(tap.w * 2.0 - 1.0); r1.xyz += tap.xyz * tap.w; r1.w += tap.w; } r1.xyz /= r1.w; #endif #ifdef HQ_DOF 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; #endif /////////////////////////////////////// /////////////////////////////////////// #ifdef LQ_DOF float MaxBlur = 1; float MinBlur = 0.25; float2 center; float distance; float focus; float farblur; float dof; float centerdist; float deltadist; float autofocus; float sampleradius = 0.01; float errorradius = 2; float blurradius = 20.0; r3=_c4; //-0.5, -1.5, 1.5, 0.5 static float2 d_offset[60]= { float2( 0.2165, 0.1250 ), float2( 0.0000, 0.2500 ), float2( -0.2165, 0.1250 ), float2( -0.1250, 1.0000 ), float2( -0.0000, -0.2500 ), float2( 0.1250, 1.0000 ), float2( 0.4330, 1.0000 ), float2( 0.0000, 0.5000 ), float2( -0.4330, 1.0000 ), float2( 0.4330, -1.0000 ), float2( -0.5000, 1.0000 ), float2( 0.4330, -0.2500 ), float2( 0.6495, 0.3750 ), float2( 0.0000, 0.7500 ), float2( -0.6495, 0.3750 ), float2( 0.6495, -0.3750 ), float2( -0.7500, 1.0000 ), float2( -0.3750, 1.0000 ), float2( 0.8660, 0.5000 ), float2( 1.0000, 1.0000 ), float2( -0.8660, -0.5000 ), float2( -0.8660, 0.5000 ), float2( -1.0000, -1.0000 ), float2( 0.8660, 1.0000 ), float2( 0.2163, 0.3754 ), float2( -0.2170, 0.8670 ), float2( -0.4333, -0.0004 ), float2( 0.2163, -0.8670 ), float2( 0.2170, -0.3750 ), float2( 0.4333, 0.0004 ), float2( 0.4328, 0.5004 ), float2( -0.2170, 0.6250 ), float2( -0.6498, 0.1246 ), float2( -0.5004, 0.8847 ), float2( 0.2170, 0.8847 ), float2( -0.1246, -0.8847 ), float2( 0.6254, -0.9065 ), float2( 0.8750, 0.9065 ), float2( -0.8663, 0.9065 ), float2( -0.6493, -0.6254 ), float2( 0.2170, 0.9065 ), float2( 0.8663, -0.9065 ), float2( 0.6259, 0.8851 ), float2( -0.4340, 0.8851 ), float2( -0.6500, -0.1259 ), float2( -0.6259, -0.8851 ), float2( -0.5000, -0.8851 ), float2( 0.6500, 0.1259 ), float2( 0.7509, 0.1259 ), float2( -0.4340, 0.8670 ), float2( -0.8665, -0.0009 ), float2( -0.7509, 0.8670 ), float2( 0.4340, -0.7500 ), float2( 0.0009, 0.8670 ), float2( 0.2158, 0.9070 ), float2( -0.6510, 0.9070 ), float2( -0.2513, -0.9070 ), float2( -0.8763, -0.9070 ), float2( 0.6510, -0.6250 ), float2( 0.2513, 0.9070 ) }; float distsum = 0; for(int i=0; i < 25; i++) { r0 = tex2D(s1, 0.5 + d_offset[i] * sampleradius); 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; distance=r0.z * r0.x - _c78.w; //dofDist.w distance+=_c78.y * -r3.w; //dofDist.y distance+=140;//offset distsum += distance; } centerdist = distance; distsum *= 0.04; deltadist = abs(distsum - centerdist); 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); distance = r0.z * r0.x - _c78.w; //dofDist.w distance += _c78.y * -r3.w; //dofDist.y distance += 140;//offset center.x = _v0.x-0.5; center.y = 0.5-_v0.y; focus = length(center.xy)*1.41421; focus = pow(focus,2); focus *= MaxBlur; farblur = saturate((distance - 25)*0.0025) * 0.1; if(distance < 25) { farblur = 1; dof = MinBlur; } else dof = MaxBlur; blurradius = 1 / blurradius; if(deltadist < errorradius) { dof = MaxBlur; autofocus = abs(distance - centerdist); autofocus = saturate(autofocus * blurradius); } else autofocus = farblur; if(centerdist > 50) autofocus = farblur; //TEMP decrease bluriness for edge smoothing float2 off_c76 = _c76.xy * min(dof + focus, MaxBlur); r1=tex2D(s2, _v0.xy); //HDRSampler r2=tex2D(s3, _v0.xy); //BloomSampler float2 tempuvx=0.0; //r3=float4(-0.5, -1.5, 1.5, 0.5); //-0.5, -1.5 //-0.5, 1.5 // 1.5, 0.5 //-1.5, 0.5 float4 r12=r3; r4.xy=off_c76.xy * r3.xy + _v0.xy; //TexelSize.xy r4=tex2D(s2, r4.xy); //HDRSampler r4=0.5*(r4 + tex2D(s2, _v0.xy + 1*off_c76.xy * reflect(r12.xy, normalize(float3(sin(0.7853981634*2), cos (0.7853981634*2), 0.0)))) ); r5.xy=off_c76.xy * r3.zx + _v0.xy; //TexelSize.xy r5=tex2D(s2, r5.xy); //HDRSampler r5=0.5*(r5 + tex2D(s2, _v0.xy + 1*off_c76.xy * reflect(r12.zx, normalize(float3(sin(0.7853981634*2), cos (0.7853981634*2), 0.0)))) ); r3.xz=off_c76.xy * r3.wz + _v0.xy; //TexelSize.xy r6=tex2D(s2, r3.xz); //HDRSampler r6=0.5*(r6 + tex2D(s2, _v0.xy + 1*off_c76.xy * reflect(r12.wz, normalize(float3(sin(0.7853981634*2), cos (0.7853981634*2), 0.0)))) ); //r3.xy=off_c76.xy * r3.yw + _v0; //TexelSize.xy r3.xy=_c76.xy * r3.yw*(0.2+1.0) + _v0; r7=tex2D(s2, r3.xy); //HDRSampler r7=0.5*(r7 + tex2D(s2, _v0.xy + 1*off_c76.xy * reflect(r12.yw, normalize(float3(sin(0.7853981634*2), cos (0.7853981634*2), 0.0)))) ); r1.w=dot(r4.xyz, r4.xyz); r1.w=1.0/r1.w; if (-r1.w<0.0) { r3.xyz=r4.xyz; } else r3.xyz=_c0.x; r1.w=dot(r5.xyz, r5.xyz); //dp3 r1.w=1.0/r1.w; if (-r1.w<0.0) { r4.xyz=r5.xyz; } else r4.xyz=_c0.x; r1.w=dot(r6.xyz, r6.xyz); //dp3 r1.w=1.0/r1.w; if (-r1.w<0.0) { r5.xyz=r6.xyz; } else r5.xyz=_c0.x; r1.w=dot(r7.xyz, r7.xyz); //dp3 r1.w=1.0/r1.w; if (-r1.w<0.0) { r6.xyz=r7.xyz; } else r6.xyz=_c0.x; r1.w=dot(r1.xyz, r1.xyz); //dp3 r1.w=1.0/r1.w; if (-r1.w<0.0) { r7.xyz=r1.xyz; } else r7.xyz=_c0.x; #endif /////////////////////////////////////// /////////////////////////////////////// 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 //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<5; 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; 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); r0.w=_c82.z - r8.y; //deSatContrastGamma.z r2.x=pow(r1.x, r0.w); _oC0.xyz=r0.xyz * r2.x; //orig _oC0.w=_c1.y; //1.0 r5=tex2D(s4, _c0.x);//adaptation luminance r0=tex2D(s2, _v0.xy); #ifdef LQ_DOF r11.xyz = lerp(r0.xyz, r11.xyz, autofocus); #endif r0=r11; r5.w=r5.x; r5.w=AdaptationValue/r5.w; r0.xyz=r0 * r5.w; r3.xy=_c10.xwxw; r3.xy=r3.xy * r5.w; r7=tex2D(s3, _v0.xy); //0.15 is bloom r0=r7 * BloomAdditive + r0; //0.05 //TEMP DISABLED r10=dot(r0.xyz, _c12.xyz); r9.x=r10.x * 1.50;//c199.x; r10.x=1.0/r10.x; r10=r10 * r9.x; r0=r0 * r10.x; r0=r0 * _c7.y; r1=r0 * _c7.z; r1=r1 + _c7.w; r1.xyz=1.0/r1.xyz; r0=r0 * r1; //pallete texture (0.082 version feature) #ifdef E_CC_PALETTE r0.rgb=saturate(r0.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=r0.r; palette.r=tex2Dlod(s13, uvsrc).r; uvsrc.x=r0.g; uvsrc.y=brightness.g; palette.g=tex2Dlod(s13, uvsrc).g; uvsrc.x=r0.b; uvsrc.y=brightness.b; palette.b=tex2Dlod(s13, uvsrc).b; r0.rgb=palette.rgb; #endif //E_CC_PALETTE #ifdef GlobalSaturation //float lumasat=dot(r0.xyz,_c12.xyz); float gris=dot(r0.xyz, 0.333); float3 SaturatedColor=pow(r0.xyz, Saturation); float Niveaudegris=dot(SaturatedColor.xyz, 0.333); float3 Resultat=SaturatedColor.xyz*gris/(Niveaudegris+0.0001); #ifdef HQ_DOF float4 Mix=lerp(1, 0.75, saturate(pow(depth/1000.0, 1))); #endif #ifdef LQ_DOF float4 Mix=lerp(1, 0.75, saturate(pow(distance/1000.0, 1))); #endif r0.xyz = pow(Resultat,Mix); #endif //#define CROSSPROCESS #ifdef CROSSPROCESS float Weight; float fRatio = 0.5; float moodR = 0.33; float moodG = 0.35; float moodB = 0.4; 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)); r0.rgb=max(0, colOutput); r0.a=1.0; #endif #ifdef BLEACH float luma = dot(r0.xyz, _c12.xyz); float3 blend = luma.xxx; float L = min(1, max(0, 10*(luma - 0.45))); float3 result1 = 2.0 * r0.xyz * blend; float3 result2 = 1.0 - 2.0*(1.0 - blend)*(1.0 - r0.xyz); float3 newColor = lerp(result1.xyz, result2.xyz, L); float3 mixRGB = BP_factor * newColor.xyz; mixRGB += ((1.0f - BP_factor) * r0.xyz); r0.xyz = mixRGB; #endif #ifdef FILMICCURVE float A = 0.15; //= Shoulder Strength float B = 0.50; //= Linear Strength float C = 0.10; //= Linear Angle float D = 0.20; //= Toe Strength float E = 0.02; //= Toe Numerator float F = 0.30; //= Toe Denominator float W = 11.2; //= Weight float4 curr = ((r0*(A*r0+C*B)+D*E)/(r0*(A*r0+B)+D*F))-E/F; float4 whiteScale = ((W*(A*W+C*B)+D*E)/(W*(A*W+B)+D*F))-E/F; r0 = curr*whiteScale; r0 = r0 * 5.5; #ifdef FILMICGAMMA r0 = pow(r0,1/2.2); #endif #endif #ifdef REINHARD_ICE21 float pixelLumi = dot(r0.xyz, _c12.xyz); float toneMapCalc = pixelLumi / (pixelLumi + 1); r0 = toneMapCalc * pow(r0 / pixelLumi, Saturation); r0 = r0 * toneMapExposure; #endif #ifdef REINHARD r0 = r0 * toneMapExposure; float pixelLumi = dot(r0.xyz, _c12.xyz); float toneMapCalc = pixelLumi / (pixelLumi + 1); r0 = toneMapCalc * pow(r0 / pixelLumi, Saturation); #endif #ifdef HELJ r0 = r0 * toneMapExposure; r0 = max(0, r0 - 0.004); r0 = (r0 * (6.2 * r0 + 0.5)) / (r0 * (6.2 * r0 + 1.7)+ 0.06); r0 = pow(r0, 2.2); #endif #ifdef LOGARITHMIC r0 = r0 * toneMapExposure; float pixelLumi = dot(r0.xyz, _c12.xyz); float toneMapCalc= log10(1 + pixelLumi) / log10(1 + r10); r0 = toneMapCalc * pow(r0 / pixelLumi, Saturation); #endif r0.xyz = lerp(r0.xyz, 0.5 * (1 + sin((r0.xyz - 0.5)*3.1415926)), AddContrast); r0=BloomAmountMix*r7 * r3.x + r0; #ifdef BLACKBARS //Vignette code from hd7 float rovigpwr = 0; //for a circular vignette float2 sqvigpwr = float2( 1.5, 1.5 ); // for the top and bottom of the screen float vsatstrength = 0; // color distortion float vignettepow = 0; // increases the contrast and sharpness float vstrengthatnight = 7.5; float2 inTex = _v0; float vhnd = 0.5; float4 voriginal = r0; float4 vcolor = voriginal; vcolor.xyz=1; inTex -= 0.5; // center inTex.y += 0.01; // offset from the center float vignette = 1.0 - dot( inTex, inTex ); vcolor *= pow( vignette, vignettepow ); float4 rvigtex = vcolor; rvigtex.xyz = pow( vcolor, 1 ); rvigtex.xyz = lerp(float3(0.5, 0.5, 0.5), rvigtex.xyz, 2.0); // contrast rvigtex.xyz = lerp(float3(1,1,1),rvigtex.xyz,rovigpwr); // strength of the circular vinetty //darken the top and bottom float4 vigtex = vcolor; vcolor.xyz = float3(1,1,1); float3 topv = min((inTex.y+0.5)*2,1.5) * 2; // top float3 botv = min(((0-inTex.y)+0.5)*2,1.5) * 2; // botton topv= lerp(float3(1,1,1), topv, sqvigpwr.x); botv= lerp(float3(1,1,1), botv, sqvigpwr.y); vigtex.xyz = (topv)*(botv); //vigtex.xyz = lerp(float3(1,1,1),vigtex.xyz,sqvigpwr); // strength of the top and bottom // mix the two types of vignettes vigtex.xyz*=rvigtex.xyz; vigtex.xyz = lerp(vigtex.xyz,float3(1,1,1),(1-vstrengthatnight)*(1-vhnd)); //for a dark screen vigtex.xyz = min(vigtex.xyz,1); vigtex.xyz = max(vigtex.xyz,0); float3 vtintensity = dot(r0.xyz, float3(0.2125, 0.7154, 0.0721)); r0.xyz = lerp(vtintensity, r0.xyz, ((((1-(vigtex.xyz*2))+2)-1)*vsatstrength)+1 ); //color.xyz+=0.02; r0.xyz *= (vigtex.xyz); #endif //#define VIGNETTE #ifdef VIGNETTE float rovigpwr = 0.75; //for a circular vignette float2 sqvigpwr = float2( 0.5, 0.5 ); // for the top and bottom of the screen float vsatstrength = 1; // color distortion float vignettepow = 1; // increases the contrast and sharpness float vstrengthatnight = 10.25; float2 inTex = _v0; float vhnd = 0.5; float4 voriginal = r0; float4 vcolor = voriginal; vcolor.xyz=1; inTex -= 0.5; // center inTex.y += 0.01; // offset from the center float vignette = 1.0 - dot( inTex, inTex ); vcolor *= pow( vignette, vignettepow ); float4 rvigtex = vcolor; rvigtex.xyz = pow( vcolor, 1 ); rvigtex.xyz = lerp(float3(0.5, 0.5, 0.5), rvigtex.xyz, 2.0); // contrast rvigtex.xyz = lerp(float3(1,1,1),rvigtex.xyz,rovigpwr); // strength of the circular vinetty float4 vigtex = vcolor; vcolor.xyz = float3(1,1,1); float3 topv = min((inTex.y+0.5)*2,1.5) * 2; // top float3 botv = min(((0-inTex.y)+0.5)*2,1.5) * 2; // botton topv= lerp(float3(1,1,1), topv, sqvigpwr.x); botv= lerp(float3(1,1,1), botv, sqvigpwr.y); vigtex.xyz = (topv)*(botv); vigtex.xyz*=rvigtex.xyz; vigtex.xyz = lerp(vigtex.xyz,float3(1,1,1),(1-vstrengthatnight)*(1-vhnd)); //for a dark screen vigtex.xyz = min(vigtex.xyz,1); vigtex.xyz = max(vigtex.xyz,0); float3 vtintensity = dot(r0.xyz, float3(0.2125, 0.7154, 0.0721)); r0.xyz = lerp(vtintensity, r0.xyz, ((((1-(vigtex.xyz*2))+2)-1)*vsatstrength)+1 ); r0.xyz *= (vigtex.xyz); #endif focus = length(center.xy)*1.41421; focus = pow(focus, 4); r0.xyz -= focus * Vignetting; _oC0.xyz=r0.xyz; //_oC0=0.077*tex2D(s15, _v0.xy);//s2 //_oC0.xyz=1.0; //_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 ® 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 }; } }
Result 6 of 10: Author Topic: ICENHANCER SUN COLOR (Read 25 times)
smily Modding Rookie member is offline Joined: May 2013 Gender: Male Posts: 4 Karma: 0ICENHANCER SUN COLOR « Result #6 on May 15, 2013, 10:01pm »
Ok so when i change the iceshader.fx file to a different one i get the sun color i want but Alot of other graphical effects I don't want how do I make it to where just the sun color is changed? Can I add the code from the shader with the sun I want to the Shader that I am gonna use please help?
Please login to download attachments.
Result 7 of 10: Author Topic: help with 4GB card (Read 25 times)
drvenkman Modding Rookie member is offline Joined: May 2013 Gender: Male Posts: 1 Karma: 0help with 4GB card « Result #7 on May 13, 2013, 10:21am »
Hi, i've managed to install icehancer 2.1 but can't change any graphic options in the GTAIV menu. I used the -norestrictions -nomemrestrict fix which worked in the vanilla version but will not work with icehancer. I've also tried creating a text file renaming it command line to no avail. Any help would be appreciated. Its a GTX680 for ref.
Result 8 of 10: Author Topic: Peformance issues (Read 110 times)
itsmatas Modding Rookie member is offline Joined: May 2013 Gender: Male Posts: 2 Karma: 0Re: Peformance issues « Result #8 on May 12, 2013, 1:32pm »
Yes I do, -norestrictions -nomemrestrict -percentvidmem 100 -memrestrict 681574400 -memrestrict 629145600 -availablevidmem 2 -noprecache -novblank I now have my 7870 Tahiti LE and even with it overclocked to nearly 1.2GHz I'm still dropping to like 20FPS.
Result 9 of 10: Author Topic: GTA IV Video Thread (Read 8,876 times)
outlawtuner Modding Rookie member is offline Joined: Nov 2012 Gender: Male Posts: 2 Karma: 0Re: GTA IV Video Thread « Result #9 on May 12, 2013, 12:54am »
Result 10 of 10: Author Topic: Help! I've been at this for a while. (Read 57 times)
mortyfillimeter Modding Rookie member is offline Joined: May 2013 Gender: Male Posts: 1 Karma: 0Help! I've been at this for a while. « Result #10 on May 9, 2013, 3:45am »
I know I'm probably just going to get Installation Guide 4 copy and pasted as a reply but I've literally been at this for quite some time, it isn't a problem with icenhancer itself but with 1.04 and I have no clue where else to go. At this point I've reinstalled 6 or so times. I'm using Razor 1911 crack. Game starts properly with 1.0.0 I have tried to run the maintenance update for 1.4 (Knowing it probably wouldn't work because illegal copy) and it gives me an integrity failure. So I've tried a couple different 1.04 files I've found around the web. Everthing from replacing the common and pc folders along with binkw32.dll, GTAIV.exe, and a few other files to just replacing a 1911.dll and GTAIVLauncher.exe (I've tried both on their own fresh installs) It'll do the load ups with Rockstar and GTA IV and then the client stops responding every time. When I try to exit out it's changed it's display so I did some digging and even tried to modify the target on the GTAIV.exe to 1920 x 1080 but it still stopped responding. Windows 7 x64 Intel i3 @ 3.20GHz Nvidia 460 GTX 6 gigs of RAM
Forum Jump -------------------- » Home -------------------- » General -------------------- - The Lounge - Gaming -------------------- » iCEnhancer -------------------- - Help --- German --- French - Screenshots & videos - Downloads - News