Advertisement
Guest User

Untitled

a guest
Jul 11th, 2013
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 40.05 KB | None | 0 0
  1. // ORIGINAL NFS-HR ENBEFFECT.FX / ICESSHADER.FX BY MASTERKONTROL
  2. //
  3. //
  4. //"""""" """""" """""" """"""
  5. //"::::" "::::" "::::" "::::"
  6. //"::::" "::::"TTTTTTTTTTTTTTTTTTTTTTT hhhhhhh SSSSSSSSSSSSSSS iiii "::::" "::::"
  7. // ":::" ":::" T:::::::::::::::::::::T h:::::h SS:::::::::::::::S i::::i ":::" ":::"
  8. // "::" "::" T:::::::::::::::::::::T h:::::h S:::::SSSSSS::::::S iiii "::" "::"
  9. // """ """ T:::::TT:::::::TT:::::T h:::::h S:::::S SSSSSSS """ """
  10. // TTTTTT T:::::T TTTTTTeeeeeeeeeeee h::::h hhhhh S:::::S eeeeeeeeeeee nnnn nnnnnnnn ssssssssss eeeeeeeeeeee iiiiiii
  11. // T:::::T ee::::::::::::ee h::::hh:::::hhh S:::::S ee::::::::::::ee n:::nn::::::::nn ss::::::::::s ee::::::::::::ee i:::::i
  12. // T:::::T e::::::eeeee:::::eeh::::::::::::::hh S::::SSSS e::::::eeeee:::::een::::::::::::::nn ss:::::::::::::s e::::::eeeee:::::eei::::i
  13. // T:::::T e::::::e e:::::eh:::::::hhh::::::h SS::::::SSSSS e::::::e e:::::enn:::::::::::::::ns::::::ssss:::::se::::::e e:::::ei::::i
  14. // T:::::T e:::::::eeeee::::::eh::::::h h::::::h SSS::::::::SS e:::::::eeeee::::::e n:::::nnnn:::::n s:::::s ssssss e:::::::eeeee::::::ei::::i
  15. // T:::::T e:::::::::::::::::e h:::::h h:::::h SSSSSS::::S e:::::::::::::::::e n::::n n::::n s::::::s e:::::::::::::::::e i::::i
  16. // T:::::T e::::::eeeeeeeeeee h:::::h h:::::h S:::::Se::::::eeeeeeeeeee n::::n n::::n s::::::s e::::::eeeeeeeeeee i::::i
  17. // T:::::T e:::::::e h:::::h h:::::h S:::::Se:::::::e n::::n n::::nssssss s:::::s e:::::::e i::::i
  18. // TT:::::::TT e::::::::e h:::::h h:::::h SSSSSSS S:::::Se::::::::e n::::n n::::ns:::::ssss::::::se::::::::e i::::::i
  19. // T:::::::::T e::::::::eeeeeeee h:::::h h:::::h S::::::SSSSSS:::::S e::::::::eeeeeeee n::::n n::::ns::::::::::::::s e::::::::eeeeeeee i::::::i
  20. // T:::::::::T ee:::::::::::::e h:::::h h:::::h S:::::::::::::::SS ee:::::::::::::e n::::n n::::n s:::::::::::ss ee:::::::::::::e i::::::i
  21. // TTTTTTTTTTT eeeeeeeeeeeeee hhhhhhh hhhhhhh SSSSSSSSSSSSSSS eeeeeeeeeeeeee nnnnnn nnnnnn sssssssssss eeeeeeeeeeeeee iiiiiiii
  22. //MMMMMMMM MMMMMMMM tttt KKKKKKKKK KKKKKKK tttt lllllll
  23. //M:::::::M M:::::::M ttt:::t K:::::::K K:::::K ttt:::t l:::::l
  24. //M::::::::M M::::::::M t:::::t K:::::::K K:::::K t:::::t l:::::l
  25. //M:::::::::M M:::::::::M t:::::t K:::::::K K::::::K t:::::t l:::::l
  26. //M::::::::::M M::::::::::M aaaaaaaaaaaaa ssssssssss ttttttt:::::ttttttt eeeeeeeeeeee rrrrr rrrrrrrrr KK::::::K K:::::KKK ooooooooooo nnnn nnnnnnnn ttttttt:::::ttttttt rrrrr rrrrrrrrr ooooooooooo l::::l
  27. //M:::::::::::M M:::::::::::M a::::::::::::a ss::::::::::s t:::::::::::::::::t ee::::::::::::ee r::::rrr:::::::::r K:::::K K:::::K oo:::::::::::oo n:::nn::::::::nn t:::::::::::::::::t r::::rrr:::::::::r oo:::::::::::oo l::::l
  28. //M:::::::M::::M M::::M:::::::M aaaaaaaaa:::::ass:::::::::::::s t:::::::::::::::::t e::::::eeeee:::::eer:::::::::::::::::r K::::::K:::::K o:::::::::::::::on::::::::::::::nn t:::::::::::::::::t r:::::::::::::::::r o:::::::::::::::o l::::l
  29. //M::::::M M::::M M::::M M::::::M a::::as::::::ssss:::::stttttt:::::::tttttt e::::::e e:::::err::::::rrrrr::::::rK:::::::::::K o:::::ooooo:::::onn:::::::::::::::ntttttt:::::::tttttt rr::::::rrrrr::::::ro:::::ooooo:::::o l::::l
  30. //M::::::M M::::M::::M M::::::M aaaaaaa:::::a s:::::s ssssss t:::::t e:::::::eeeee::::::e r:::::r r:::::rK:::::::::::K o::::o o::::o n:::::nnnn:::::n t:::::t r:::::r r:::::ro::::o o::::o l::::l
  31. //M::::::M M:::::::M M::::::M aa::::::::::::a s::::::s t:::::t e:::::::::::::::::e r:::::r rrrrrrrK::::::K:::::K o::::o o::::o n::::n n::::n t:::::t r:::::r rrrrrrro::::o o::::o l::::l
  32. //M::::::M M:::::M M::::::M a::::aaaa::::::a s::::::s t:::::t e::::::eeeeeeeeeee r:::::r K:::::K K:::::K o::::o o::::o n::::n n::::n t:::::t r:::::r o::::o o::::o l::::l
  33. //M::::::M MMMMM M::::::Ma::::a a:::::assssss s:::::s t:::::t tttttte:::::::e r:::::r KK::::::K K:::::KKKo::::o o::::o n::::n n::::n t:::::t ttttttr:::::r o::::o o::::o l::::l
  34. //M::::::M M::::::Ma::::a a:::::as:::::ssss::::::s t::::::tttt:::::te::::::::e r:::::r K:::::::K K::::::Ko:::::ooooo:::::o n::::n n::::n t::::::tttt:::::tr:::::r o:::::ooooo:::::ol::::::l
  35. //M::::::M M::::::Ma:::::aaaa::::::as::::::::::::::s tt::::::::::::::t e::::::::eeeeeeee r:::::r K:::::::K K:::::Ko:::::::::::::::o n::::n n::::n tt::::::::::::::tr:::::r o:::::::::::::::ol::::::l
  36. //M::::::M M::::::M a::::::::::aa:::as:::::::::::ss tt:::::::::::tt ee:::::::::::::e r:::::r K:::::::K K:::::K oo:::::::::::oo n::::n n::::n tt:::::::::::ttr:::::r oo:::::::::::oo l::::::l
  37. //MMMMMMMM MMMMMMMM aaaaaaaaaa aaaa sssssssssss ttttttttttt eeeeeeeeeeeeee rrrrrrr KKKKKKKKK KKKKKKK ooooooooooo nnnnnn nnnnnn ttttttttttt rrrrrrr ooooooooooo llllllll
  38. //
  39.  
  40. //++++++++++++++++++++++++++++++++++++++++++++
  41. // ENBSeries effect file
  42. // visit http://enbdev.com for updates
  43. // Copyright 2010 (c) Boris Vorontsov
  44. // Master Kontrol - END.OF.LINE.......... NFS-HR Project 2011
  45. // ENB FX By IceLaGlace V1.35 2011 (c)
  46. // Rockstar Games - 2008 (c)
  47. //++++++++++++++++++++++++++++++++++++++++++++
  48. //NOTE: enable or disable these
  49. //to disable, write // symbols before #define
  50. //#define POSTPROCESS_V2 //overwise v1 of color processing // LEAVE THIS!!!!!!!!!!!!!!!!!!!!!!!!!!
  51. //#define APPLYGAMECOLORCORRECTION //use contrast, brightness, saturation from game
  52.  
  53.  
  54.  
  55. // DEPTH OF FIELD SETTINGS.
  56. //////////////////////////////////-----------------------------------------------------------------]
  57. // ICE 135 (-150, 1.5, 10.0, 1) PACKET (-150, 0, 0, 0); MK (-5.0, 2.0, 25.0, 1.0) MK (4.0, 1.4, 65.0, 1.0) MK (-1.0, 1.0, 200.0, 1.0)
  58. // TILT (50.0 1 100.0 1)? MADE (0.05, 0.25, 40.0, 0.025) MK DDOF (0.5 2.0 16.0 -1.0) LAST (1.0, 2.0, 28.0, 1.0) Tilt-ish
  59.  
  60. float NearBlur = -25.0;
  61. float FocalPlane = 1.95;
  62. float FarBlur = 1.0;
  63. float BlurCutoffConstant = 1.05;
  64.  
  65. float Dist1 = 0.25;
  66. float Dist2 = 0.25;
  67. float2 MaxCoC = float2 (5.0, 18.0);
  68.  
  69. int PixelSizeMultiplier = 1.25;
  70. float BlurIntensity = 0.125;
  71. float2 FocusPoint= float2 (0.475, 0.475);
  72. //float4 FocusPoint= float4 (-0.45, 0.65, -0.15, 0.85);
  73.  
  74. // DOF STYLES.
  75. /////////////////----------------------------------------------------------------------------------]
  76.  
  77. #define STATIC_DOF
  78. #define DYNAMIC_DOF
  79.  
  80. // DOF QUALITY.
  81. ///////////////////--------------------------------------------------------------------------------]
  82. // LQ = 24 TAPS, HQ = 60 TAPS.... CHOOSE ONE ONLY!!
  83.  
  84. //#define DOF_LQ
  85. #define DOF_HQ
  86.  
  87. // MOTION BLUR.
  88. ////////////////////-------------------------------------------------------------------------------]
  89.  
  90. int MBSteps = 11;
  91. int MBAmount = 0.55;
  92.  
  93. // Bloom
  94. ///////////////////////////
  95. float Contrast = 0.75;
  96. float BloomR = 1.50;
  97. float BloomG = 0.88;
  98. float BloomB = 0.30;
  99.  
  100. /////////////////////////////
  101. float EColorSaturation=1.65;
  102. float EBloomAmount=0.03;
  103. float AdaptationDepth = 0.35;
  104.  
  105. // HDR Settings
  106. ///////////////////////////
  107. float4 FogColor={0.75, 0.25, 1.25, 0.75};
  108. float Defog=0.0;
  109. float Exposure=0.041;
  110. float Gamma=0.5;
  111. float BlueShift=0;
  112.  
  113. // Ice filmic
  114. ///////////////////////////
  115. float A = 0.113; // SCREEN LUMA
  116. float B = 0.302; // OVERALL BLEACH DARKNESS / Lower=Darker
  117. float C = 0.480; // FOREGROUND SCREEN BRIGHTNESS / Higher=Brighter
  118. float D = 0.011; // OVERALL CONTRAST
  119. float E = 0.002; // MIDDLE SCREEN CONTRAST
  120. float F = 2.500;
  121. float W = 9.20; // LUMINANCE BRIGHTNESS BRIGHTS
  122.  
  123. // Bleach Bypass
  124. ///////////////////////////
  125. float BP_factor = 0.25;
  126.  
  127.  
  128. // Vignette
  129. ///////////////////////////
  130.  
  131. float VignetteAmount = 0.0;
  132.  
  133.  
  134. // sampler2D AdapLumSampler;
  135. // sampler2D BloomSampler;
  136. // float4 ColorCorrect;
  137. // float4 ColorShift;
  138. // float4 FogColor
  139. // float Exposure;
  140. // sampler2D GBufferTextureSampler2;
  141. // sampler2D GBufferTextureSampler3;
  142. // sampler2D HDRSampler;
  143. // sampler2D JitterSampler;
  144. // float PLAYER_MASK;
  145. // sampler2D StencilCopySampler;
  146. // float4 TexelSize;
  147. // float4 ToneMapParams;
  148. // float4 deSatContrastGamma;
  149. // float4 dofBlur;
  150. // float4 dofDist;
  151. // float4 dofProj;
  152. // float gDirectionalMotionBlurLength;
  153. // float4 globalScreenSize;
  154. // row_major float4x4 motionBlurMatrix;
  155. //
  156. //
  157. // Registers:
  158. //
  159. // Name Reg Size
  160. // ------------------------------------------ ------- -------
  161. // globalScreenSize c44 1
  162. // Exposure c66 1
  163. // motionBlurMatrix c72 4
  164. // TexelSize c76 1
  165. // dofProj c77 1
  166. // dofDist c78 1
  167. // dofBlur c79 1
  168. // gDirectionalMotionBlurLength c80 1
  169. // ToneMapParams c81 1
  170. // deSatContrastGamma c82 1
  171. // ColorCorrect c83 1
  172. // ColorShift c84 1
  173. // PLAYER_MASK c85 1
  174. // GBufferTextureSampler2 s0 1
  175. // GBufferTextureSampler3 s1 1
  176. // HDRSampler s2 1
  177. // BloomSampler s3 1
  178. // AdapLumSampler s4 1
  179. // JitterSampler s5 1
  180. // StencilCopySampler s6 1
  181.  
  182. //Quad
  183. /////////////////////////////
  184. struct VS_OUTPUT_POST
  185. {
  186. float4 vpos : POSITION;
  187. float2 txcoord0 : TEXCOORD0;
  188. };
  189. struct VS_INPUT_POST
  190. {
  191. float3 pos : POSITION;
  192. float2 txcoord0 : TEXCOORD0;
  193. };
  194.  
  195. //int4 _i0 : register(i0);
  196.  
  197. /*
  198. float4 _c0 : register(c0);
  199. float4 _c1 : register(c1);
  200. float4 _c2 : register(c2);
  201. float4 _c3 : register(c3);
  202. float4 _c4 : register(c4);
  203. float4 _c5 : register(c5);
  204. float4 _c6 : register(c6);
  205. */
  206. float4 _c44 : register(c44);
  207. float4 _c66 : register(c66);
  208. float4 _c72 : register(c72);
  209. float4 _c73 : register(c73);
  210. float4 _c74 : register(c74);
  211. float4 _c75 : register(c75);
  212. float4 _c76 : register(c76);
  213. float4 _c77 : register(c77);
  214. float4 _c78 : register(c78);
  215. float4 _c79 : register(c79);
  216. float4 _c80 : register(c80);
  217. float4 _c81 : register(c81);
  218. float4 _c82 : register(c82);
  219. float4 _c83 : register(c83);
  220. float4 _c84 : register(c84);
  221. float4 _c85 : register(c85);
  222. float maxi : register(c86);
  223. float temp : register(c87);
  224.  
  225. texture2D texs0 : register(s0);
  226. texture2D texs1 : register(s1);
  227. texture2D texs2 : register(s2);
  228. texture2D texs3 : register(s3);
  229. texture2D texs4 : register(s4);
  230. texture2D texs5 : register(s5); //Motion Blur
  231. texture2D texs6 : register(s6);
  232. texture2D texs7 : register(s7);
  233. texture2D texs13 : register(s13); //Palette (0.82)
  234. texture2D texs15 : register(s15);
  235. //sampler2D s0=sampler_state { Texture=<texs0>; };
  236. //sampler2D s1=sampler_state { Texture=<texs1>; };
  237. sampler2D s2=sampler_state { Texture=<texs2>; };
  238. //sampler2D s3=sampler_state { Texture=<texs3>; };
  239. sampler2D s4=sampler_state { Texture=<texs4>; };
  240. //sampler2D s5=sampler_state { Texture=<texs5>; };
  241. sampler2D s6=sampler_state { Texture=<texs6>; };
  242. sampler2D s7=sampler_state { Texture=<texs7>; };
  243. //sampler2D s13=sampler_state { Texture=<texs13>; };
  244. sampler2D s15=sampler_state { Texture=<texs15>; };
  245.  
  246. //Next samplers states fixing problems on ATI cards
  247. ///////////////////////////////////////////////////////////
  248.  
  249. sampler2D s0 = sampler_state
  250. {
  251. Texture = <texs0>;
  252. MinFilter = LINEAR;//
  253. MagFilter = LINEAR;//
  254. MipFilter = NONE;//NONE;//LINEAR;
  255. AddressU = Clamp;
  256. AddressV = Clamp;
  257. SRGBTexture=FALSE;
  258. MaxMipLevel=0;
  259. MipMapLodBias=0;
  260. };
  261.  
  262. sampler2D s1 = sampler_state
  263. {
  264. Texture = <texs1>;
  265. MinFilter = LINEAR;//
  266. MagFilter = LINEAR;//
  267. MipFilter = NONE;//NONE;//LINEAR;
  268. AddressU = Clamp;
  269. AddressV = Clamp;
  270. SRGBTexture=FALSE;
  271. MaxMipLevel=0;
  272. MipMapLodBias=0;
  273. };
  274.  
  275. sampler2D s3 = sampler_state
  276. {
  277. Texture = <texs3>;
  278. MinFilter = LINEAR;//
  279. MagFilter = LINEAR;//
  280. MipFilter = NONE;//NONE;//LINEAR;
  281. AddressU = Clamp;
  282. AddressV = Clamp;
  283. SRGBTexture=FALSE;
  284. MaxMipLevel=0;
  285. MipMapLodBias=0;
  286. };
  287.  
  288. sampler2D s5 = sampler_state
  289. {
  290. Texture = <texs5>;
  291. MinFilter = GaussianQuad;
  292. MagFilter = GaussianQuad;
  293. MipFilter = LINEAR;
  294. AddressU = Wrap;
  295. AddressV = wrap;
  296. SRGBTexture=FALSE;
  297. MaxMipLevel=0;
  298. MipMapLodBias=0;
  299. };
  300.  
  301. sampler2D s13 = sampler_state
  302. {
  303. Texture = <texs13>;
  304. MinFilter = LINEAR;
  305. MagFilter = LINEAR;
  306. MipFilter = NONE;//NONE;//LINEAR;
  307. AddressU = Clamp;
  308. AddressV = Clamp;
  309. SRGBTexture=FALSE;
  310. MaxMipLevel=0;
  311. MipMapLodBias=0;
  312. };
  313.  
  314. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  315. //
  316. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  317.  
  318. float4 PS_C215BE6E(VS_OUTPUT_POST IN) : COLOR
  319. {
  320. float4 _oC0=0.0; //output
  321.  
  322. float4 _c0=float4(0, 0.212500006, 0.715399981, 0.0720999986);
  323. float4 _c1=float4(0.25, 1, 256, 0);
  324. float4 _c2=float4(0, 2, 4, 8);
  325. float4 _c3=float4(58.1640015, 47.1300011, 0, 0);
  326. float4 _c4=float4(-0.5, -1.5, 1.5, 0.5);
  327. float4 _c5=float4(2, -1, 0.125, 0);
  328. float4 _c6=float4(256, 2, 4, 8);
  329.  
  330. //Mine
  331.  
  332. float4 _c7=float4(1.0, 0.1, 0.8, 1.0);
  333. float4 _c8=float4(0.0, 0.1, 0.8, 0.333);
  334. float4 _c9=float4(0.06, 0.1, 0.8, 0.1);
  335. float4 _c10=float4(0.01, 1.4, 0.0, 0.32);
  336. float4 _c11=float4(0.333333, 1.0, 0.0, 0.0);
  337. //float4 _c12=float4(0.27, 0.67, 0.06, 0.0);
  338. float4 _c12=float4(0.299, 0.587, 0.114, 0.0);
  339. float4 _c13=float4(0.0, 0.0, 0.0, 0.00001);
  340. float4 _c150=float4(0.55, 0.9, 0.85, 0.9);
  341. float4 _c195=float4(0.0, 0.0, 0.0, 0.07);//0.7
  342.  
  343.  
  344. float4 r0;
  345. float4 r1;
  346. float4 r2;
  347. float4 r3;
  348. float4 r4;
  349. float4 r5;
  350. float4 r6;
  351. float4 r7;
  352. float4 r8;
  353. float4 r9;
  354. float4 r10;
  355. float4 r11;
  356.  
  357.  
  358. float4 _v0=0.0;
  359. _v0.xy=IN.txcoord0.xy;
  360.  
  361.  
  362. r1=tex2D(s2, _v0.xy); //HDRSampler
  363. r2=tex2D(s3, _v0.xy); //BloomSampler
  364.  
  365. //DOF - IceLaGlace - MK Edit-ion 2012 :)
  366. //////////////////////////////////////////////-------------------------------------------------------]
  367.  
  368. float2 center;
  369. float depth;
  370. float focus;
  371.  
  372. r0=tex2D(s1, _v0.xy); //GBufferTextureSampler3
  373. r0.y=-_c77.x + _c77.y; //-dofProj.x + dofProj.y
  374. r0.y=1.0/r0.y;
  375. r0.z=r0.y * _c77.y; //DofProj.y
  376. r0.z=r0.z * -_c77.x; //DofProj.x
  377. r0.x=_c77.y * -r0.y + r0.x;
  378. r0.x=1.0/r0.x;
  379. r0.y=r0.z * r0.x;
  380.  
  381. r0.w=abs(_c79.w);
  382. r3=_c4; //-0.5, -1.5, 1.5, 0.5
  383.  
  384. depth=r0.z * r0.x - _c78.w; //DofDist.w
  385. depth+=_c78.y * -r3.w; //DofDist.y
  386. depth+=148; //Offset
  387. center.x=_v0.x-0.5;
  388. center.y=0.5-_v0.y;
  389.  
  390. // (-150, 1.5, 10.0, 1); PACKET (-150, 0, 0, 0); MK (-5.0, 2.0, 25.0, 1.0) MK (4.0, 1.4, 65.0, 1.0) MK (-1.0, 1.0, 200.0, 1.0)
  391. //float4 vDofParams = float4(-15.0, 2.0, 45.0, 1.0);
  392. float4 vDofParams = float4(NearBlur, FocalPlane, FarBlur, BlurCutoffConstant);
  393. // Near Blur, Focal Plane, Far Blur, Blur Cutoff Constant
  394.  
  395. #ifdef STATIC_DOF
  396. r4=tex2D(s1, FocusPoint); //GBufferTextureSampler3
  397. r4.y=-_c77.x + _c77.y; //-dofProj.x + dofProj.y
  398. r4.y=1.0/r4.y;
  399. r4.z=r4.y * _c77.y; //DofProj.y
  400. r4.z=r4.z * -_c77.x; //DofProj.x
  401. r4.x=_c77.y * -r4.y + r4.x;
  402. r4.x=1.0/r4.x;
  403. r4.y=r4.z * r4.x;
  404.  
  405. #ifdef DYNAMIC_DOF
  406. float cdepth;
  407.  
  408. cdepth=r4.z * r4.x - _c78.w; //DofDist.w
  409. cdepth+=_c78.y * -r3.w; //DofDist.y
  410. cdepth+=148; //Offset
  411.  
  412. r4.w = tex2D(s0, FocusPoint).w;
  413. if(r4.w > 0)
  414. {
  415. vDofParams.z = cdepth*6.0; // Default was 6.0 (ICE)
  416. vDofParams.y = cdepth;
  417. }
  418. #endif
  419.  
  420. depth = max(depth, 0); //Zoom Bug Fixed
  421.  
  422. float dist;
  423.  
  424. if(depth < vDofParams.y)
  425. dist = (depth - vDofParams.y)/(vDofParams.y - vDofParams.x);
  426. else
  427. {
  428. dist = (depth - vDofParams.y)/(vDofParams.z - vDofParams.y);
  429. dist = clamp(dist, 0, vDofParams.w);
  430. }
  431.  
  432. dist = dist * Dist1 + Dist2; // MK - Top switches
  433.  
  434. #ifdef DOF_LQ
  435.  
  436. int DoF_TAPS=24;
  437.  
  438. static float3 poisson[24]=
  439. {
  440. float3(1.0, 0.0, 1.0000 ),
  441. float3(0.0, -1.0, 1.0000 ),
  442. float3(-1.0, 0.0, 1.0000 ),
  443. float3(0.0, 1.0, 1.0000 ),
  444. float3(0.7071, 0.7071, 1.0000 ),
  445. float3(0.7071, 0.7071, 1.0000 ),
  446. float3(-0.7071, -0.7071, 1.0000 ),
  447. float3(-0.7071, 0.7071, 1.0000 ),
  448. float3(0.9659, 0.2588, 1.0000 ),
  449. float3(0.2588, -0.9659, 1.0000 ),
  450. float3(-0.9659, -0.2588, 1.0000 ),
  451. float3(-0.2588, 0.9659, 1.0000 ),
  452. float3(0.8660, 0.5000, 1.0000 ),
  453. float3(0.5000, -0.8660, 1.0000 ),
  454. float3(-0.8660, -0.5000, 1.0000 ),
  455. float3(-0.5000, 0.8660, 1.0000 ),
  456. float3(0.5000, 0.8660, 1.0000 ),
  457. float3(0.8660, -0.5000, 1.0000 ),
  458. float3(-0.5000, -0.8660, 1.0000 ),
  459. float3(-0.8660, 0.5000, 1.0000 ),
  460. float3(0.2588, 0.9659, 1.0000 ),
  461. float3(0.9659, -0.2588, 1.0000 ),
  462. float3(-0.2588, -0.9659, 1.0000 ),
  463. float3(-0.9659, 0.2588, 1.0000 )
  464. };
  465. #endif
  466.  
  467. #ifdef DOF_HQ
  468.  
  469. int DoF_TAPS=60;
  470.  
  471. static float3 poisson[60] =
  472. {
  473. float3( 0.2165, 0.1250, 1.0000 ),
  474. float3( 0.0000, 0.2500, 1.0000 ),
  475. float3( -0.2165, 0.1250, 1.0000 ),
  476. float3( -0.2165, -0.1250, 1.0000 ),
  477. float3( -0.0000, -0.2500, 1.0000 ),
  478. float3( 0.2165, -0.1250, 1.0000 ),
  479. float3( 0.4330, 0.2500, 1.0000 ),
  480. float3( 0.0000, 0.5000, 1.0000 ),
  481. float3( -0.4330, 0.2500, 1.0000 ),
  482. float3( -0.4330, -0.2500, 1.0000 ),
  483. float3( -0.0000, -0.5000, 1.0000 ),
  484. float3( 0.4330, -0.2500, 1.0000 ),
  485. float3( 0.6495, 0.3750, 1.0000 ),
  486. float3( 0.0000, 0.7500, 1.0000 ),
  487. float3( -0.6495, 0.3750, 1.0000 ),
  488. float3( -0.6495, -0.3750, 1.0000 ),
  489. float3( -0.0000, -0.7500, 1.0000 ),
  490. float3( 0.6495, -0.3750, 1.0000 ),
  491. float3( 0.8660, 0.5000, 1.0000 ),
  492. float3( 0.0000, 1.0000, 1.0000 ),
  493. float3( -0.8660, 0.5000, 1.0000 ),
  494. float3( -0.8660, -0.5000, 1.0000 ),
  495. float3( -0.0000, -1.0000, 1.0000 ),
  496. float3( 0.8660, -0.5000, 1.0000 ),
  497. float3( 0.2163, 0.3754, 0.8670 ),
  498. float3( -0.2170, 0.3750, 0.8670 ),
  499. float3( -0.4333, -0.0004, 0.8670 ),
  500. float3( -0.2163, -0.3754, 0.8670 ),
  501. float3( 0.2170, -0.3750, 0.8670 ),
  502. float3( 0.4333, 0.0004, 0.8670 ),
  503. float3( 0.4328, 0.5004, 0.8847 ),
  504. float3( -0.2170, 0.6250, 0.8847 ),
  505. float3( -0.6498, 0.1246, 0.8847 ),
  506. float3( -0.4328, -0.5004, 0.8847 ),
  507. float3( 0.2170, -0.6250, 0.8847 ),
  508. float3( 0.6498, -0.1246, 0.8847 ),
  509. float3( 0.6493, 0.6254, 0.9065 ),
  510. float3( -0.2170, 0.8750, 0.9065 ),
  511. float3( -0.8663, 0.2496, 0.9065 ),
  512. float3( -0.6493, -0.6254, 0.9065 ),
  513. float3( 0.2170, -0.8750, 0.9065 ),
  514. float3( 0.8663, -0.2496, 0.9065 ),
  515. float3( 0.2160, 0.6259, 0.8851 ),
  516. float3( -0.4340, 0.5000, 0.8851 ),
  517. float3( -0.6500, -0.1259, 0.8851 ),
  518. float3( -0.2160, -0.6259, 0.8851 ),
  519. float3( 0.4340, -0.5000, 0.8851 ),
  520. float3( 0.6500, 0.1259, 0.8851 ),
  521. float3( 0.4325, 0.7509, 0.8670 ),
  522. float3( -0.4340, 0.7500, 0.8670 ),
  523. float3( -0.8665, -0.0009, 0.8670 ),
  524. float3( -0.4325, -0.7509, 0.8670 ),
  525. float3( 0.4340, -0.7500, 0.8670 ),
  526. float3( 0.8665, 0.0009, 0.8670 ),
  527. float3( 0.2158, 0.8763, 0.9070 ),
  528. float3( -0.6510, 0.6250, 0.9070 ),
  529. float3( -0.8668, -0.2513, 0.9070 ),
  530. float3( -0.2158, -0.8763, 0.9070 ),
  531. float3( 0.6510, -0.6250, 0.9070 ),
  532. float3( 0.8668, 0.2513, 0.9070 )
  533. };
  534. #endif
  535.  
  536. float2 pixelSizeHigh;
  537. float2 pixelSizeLow;
  538.  
  539. pixelSizeHigh.x = 1.0 / _c44.x;
  540. pixelSizeHigh.y = 1.0 / _c44.y;
  541.  
  542. pixelSizeHigh.xy *= PixelSizeMultiplier;
  543.  
  544. pixelSizeLow.xy = pixelSizeHigh.xy;
  545.  
  546. float2 vMaxCoC = MaxCoC; // float2 (5.0, 10.0); MK TESTING
  547.  
  548. float radiusScale = BlurIntensity;
  549.  
  550. float discRadius;
  551. float discRadiusLow;
  552. float centerDepth;
  553. float4 tdepth;
  554.  
  555. float4 tapHigh;
  556. float4 tapLow;
  557.  
  558. centerDepth = dist;
  559.  
  560. discRadius = abs(centerDepth * vMaxCoC.y - vMaxCoC.x);
  561. discRadiusLow = discRadius * radiusScale;
  562.  
  563. r1 = 0.0;
  564.  
  565. for(int t = 0; t < DoF_TAPS; t++)
  566. {
  567. float2 coordLow = _v0.xy + (pixelSizeLow.xy * poisson[t].xy * discRadiusLow);
  568. float2 coordHigh = _v0.xy + (pixelSizeHigh.xy * poisson[t].xy * discRadius);
  569.  
  570. tapLow = tex2D(s2, coordLow.xy) * poisson[t].z;
  571. tapHigh = tex2D(s2, coordHigh.xy) * poisson[t].z;
  572.  
  573. tdepth = tex2D(s1, coordHigh.xy); //GBufferTextureSampler3
  574. tdepth.y = -_c77.x + _c77.y; //-dofProj.x + dofProj.y
  575. tdepth.y = 2.0 / tdepth.y;
  576. tdepth.z = tdepth.y * _c77.y; //dofProj.y
  577. tdepth.z = tdepth.z * -_c77.x; //dofProj.x
  578. tdepth.x = _c77.y * -tdepth.y + tdepth.x;
  579. tdepth.x = 2.0 / tdepth.x;
  580.  
  581. tdepth.w = tdepth.z * tdepth.x - _c78.w; //DofDist.w
  582. tdepth.w += _c78.y * -r3.w; //DofDist.y
  583. tdepth.w += 148; //Offset
  584.  
  585. tdepth.w = max(tdepth.w, 0); //Fixed Zoom Bug
  586.  
  587. if(tdepth.w < vDofParams.y)
  588. tapHigh.w = (tdepth.w - vDofParams.y)/(vDofParams.y - vDofParams.x);
  589. else
  590. {
  591. tapHigh.w = (tdepth.w - vDofParams.y)/(vDofParams.z - vDofParams.y);
  592. tapHigh.w = clamp(tapHigh.w, 0, vDofParams.w);
  593. }
  594.  
  595. tapHigh.w = tapHigh.w * 0.5 + 0.5;
  596.  
  597. tapLow.w = tapHigh.w;
  598.  
  599. float tapBlur = abs(tapHigh.w * 2.0 - 1.0);
  600. float4 tap = lerp(tapHigh, tapLow, tapBlur);
  601.  
  602. if(tap.w >= centerDepth)tap.w = 1.0;
  603. else tap.w = abs(tap.w * 2.0 - 1.0);
  604.  
  605. r1.xyz += tap.xyz * tap.w;
  606. r1.w += tap.w;
  607. }
  608.  
  609. r1.xyz /= r1.w;
  610.  
  611. float4 dofcolor = r11;
  612. dofcolor.w = r1.w / DoF_TAPS;
  613.  
  614. #endif //DEPTH OF FIELD.
  615.  
  616. r1.w=dot(r1.xyz, r1.xyz); //dp2
  617. r1.w=1.0/r1.w;
  618.  
  619. //if (-r1.w<0.0) //r3 = r1;
  620. //else r3 = _c0.x;
  621.  
  622. r3 = lerp(_c0.x, r1, saturate(r1.w * 10000));
  623.  
  624. r4 = r3;
  625. r5 = r3;
  626. r6 = r3;
  627. r7 = r3;
  628.  
  629. /////////////////////////////-------------------------------------------------------------------------]
  630.  
  631. r0.x=r0.z * r0.x - _c78.w; //DofDist.w
  632. r0.x=_c78.y * -r3.w + r0.x; //DofDist.y
  633. r1.w=max(r0.x, _c0.x); //0.0
  634. r0.x=1.0/_c78.z; //DofDist.z
  635. r0.x=r1.w * r0.x;
  636. r1.w=lerp(_c79.y, _c79.z, r0.x);//DofBlur
  637. r0.x=min(_c79.z, r1.w); //DofBlur.z
  638.  
  639. r0.z=dot(r7.xyz, _c0.yzw); //0.212500006, 0.715399981, 0.0720999986
  640. r8.x=dot(r3.xyz, _c0.yzw); //0.212500006, 0.715399981, 0.0720999986
  641. r8.y=dot(r4.xyz, _c0.yzw); //0.212500006, 0.715399981, 0.0720999986
  642. r8.z=dot(r5.xyz, _c0.yzw); //0.212500006, 0.715399981, 0.0720999986
  643. r8.w=dot(r6.xyz, _c0.yzw); //0.212500006, 0.715399981, 0.0720999986
  644. r1.w=dot(r8, _c1.xxxx);
  645.  
  646. r8=r8 - r1.w;
  647. r2.w=dot(r8, r8);
  648. r0.z=r0.z - r1.w;
  649. r0.z=r0.z * r0.z - r2.w;
  650. r0.x=r0.x*r0.x;
  651. if (r0.z<0.0)
  652. {
  653. r0.x=r0.x;
  654. } else r0.x=_c1.y;
  655.  
  656. r8=tex2D(s0, _v0.xy); //GBufferTextureSampler2
  657.  
  658. r8.yz=_c1.yz; // 1.0, 256.0
  659. r9=r8.w * -r8.z + _c2; //0, 2, 4, 8
  660. if (r9.w<0.0) //r9<0.0
  661. {
  662. r9=_c1.w; //0.0
  663. } else r9=_c1.y; //1.0
  664. //r9 = Filtered Sky Mask
  665.  
  666. //r10=r8.w + tempc6;//c6.yzwx; //256, 2, 4, 8
  667. r10=r8.w * -_c6.x + _c6.yzwx; //256, 2, 4, 8
  668.  
  669. if (r10.x<0.0)
  670. {
  671. r10.x=-_c1.w;
  672. } else r10.x=-_c1.y;
  673.  
  674. if (r10.y<0.0)
  675. {
  676. r10.y=-_c1.w; //0.0
  677. } else r10.y=-_c1.y; //1.0
  678.  
  679. if (r10.z<0.0)
  680. {
  681. r10.z=-_c1.w;
  682. } else r10.z=-_c1.y;
  683.  
  684. if (r10.z<0.0)
  685. {
  686. r10.z=-_c1.w;
  687. } else r10.z=-_c1.y;
  688.  
  689. if (r10.w<0.0)
  690. {
  691. r10.w=-_c1.w;
  692. } else r10.w=-_c1.y;
  693.  
  694.  
  695. r9=r9 + r10;
  696. r9=r9 * _c4.x;
  697.  
  698.  
  699. r0.z=dot(r9, _c1.yyyy);
  700. r0.z=r0.z + _c4.w;
  701. r0.z=1.0/r0.z;
  702. r8.xzw=r3.xyz * r9.x;
  703.  
  704.  
  705. r7.xyz=r7 * _c4.w + r8.xzw;
  706. r7.xyz=r4 * r9.y + r7;
  707. r7.xyz=r5 * r9.z + r7;
  708. r7.xyz=r6 * r9.w + r7;
  709. r7.xyz=r0.z * r7;
  710. r0.z=-r0.x + _c1.y;
  711. r1.w=r0.x * _c1.x;
  712.  
  713. r3.xyz=r3 * r1.w;
  714. r3.xyz=r7 * r0.z + r3;
  715. r3.xyz=r4 * r1.w + r3;
  716. r3.xyz=r5 * r1.w + r3;
  717. r3.xyz=r6 * r1.w + r3;
  718.  
  719. //r4.xyz=_v0.yxy * _c5.x + _c5.y;
  720. r4.x=_v0.y * _c5.x + _c5.y;
  721. r4.y=_v0.x * _c5.x + _c5.y;
  722. r4.z=_v0.y * _c5.x + _c5.y;
  723.  
  724. r0.z=r4.y * _c77.z; //DofProj.z
  725. r0.z=r0.y * r0.z;
  726. r1.w=-r4.x * _c77.w; //DofProj.w
  727. r1.w=r0.y * r1.w;
  728. r5.xyz=r1.w * _c73; //MotionBlurMatrix.2
  729. r5.xyz=r0.z * _c72 + r5; //MotionBlurMatrix.1
  730. r5.xyz=-r0.y * _c74 + r5; //MotionBlurMatrix.3
  731. r5.xyz=r5 + _c75; //MotionBlurMatrix.4
  732.  
  733. r0.y=-r5.z * _c77.z; //DofProj.z
  734. r0.y=1.0/r0.y;
  735. r6.x=r5.x * r0.y;
  736. r0.y=r5.z * _c77.w; //DofProj.w
  737. r0.y=1.0/r0.y;
  738. r6.y=r5.y * r0.y;
  739. //r0.yz=-r4 + r6.xxyw;
  740. r0.yz=-r4.yz + r6.xy;
  741.  
  742. //MOTION BLUR STYLES - MasterKontrol.
  743. ////////////////////////////////////////////////-----------------------------------------------------]
  744.  
  745. r0.y=r0.y * _c80.x;
  746. r0.z=r0.z * _c80.x;
  747. r4.xy=r0.yz * _c5.z;
  748. r5=tex2D(s6, _v0.xy);
  749. r1.w=r5.x - _c85.x;
  750. r4.zw=r3.xy * _c2.w;
  751. r4.zw=_v0.xy * _c3.xy + r4.zw;
  752. r5=tex2D(s5, r4.zw);
  753. r4.zw=r4.xy * (r5.x - 4) + _v0.xy;
  754. r5.xyz=r3.xyz;
  755. r2.w=_c1.y;
  756. r3.w=_c1.y;
  757.  
  758. // MOTION BLUR STRENGTH.
  759. //////////////////////////////////-------------------------------------------------------------------]
  760. for (int iii=0; iii<MBSteps; iii++)
  761. {
  762. r6.x=r4.x * r3.w + r4.z;
  763. r6.y=r4.y * r3.w + r4.w;
  764. r7=tex2D(s6, r6.xy);
  765. r5.w=r7.x - _c85.x;
  766. if (r5.w<MBAmount)
  767. {
  768. r5.w=_c1.y; //1.0
  769. } else r5.w=_c1.w; //0.0
  770. r6=tex2D(s2, r6.xy);
  771. r5.xyz=r6.xyz * r5.w + r5.xyz;
  772. r2.w=r2.w + r5.w;
  773. r3.w=r3.w + _c1.y; //1.0
  774. }
  775.  
  776. r2.w=1.0/r2.w;
  777.  
  778. r0.y=r0.y * _c44.x; //GlobalScreenSize
  779. r0.z=r0.z * _c44.y; //GlobalScreenSize
  780.  
  781. r0.y=dot(r0.yz, r0.yz)+_c0.x; //dp2
  782.  
  783. //r0.y=sqrt(r0.y);
  784. //r0.y=1.0/r0.y;
  785. r0.y=pow(r0.y, _c4.w); //0.5
  786.  
  787. r0.y=r0.y * _c4.w; //0.5
  788. r0.x=r0.x + _c1.y; //1.0
  789. r0.x=1.0/r0.x;
  790.  
  791. r0.x=saturate(r0.y * r0.x);
  792. r4.xyz=r5 * r2.w - r3;
  793. r0.xyz=r0.x * r4 + r3;
  794.  
  795. if (-r1.w<0.0) r0.xyz=r3.xyz;
  796. if (-r0.w<0.0) r0.xyz=r1.xyz;
  797.  
  798. //Color Processing
  799.  
  800. r11=r0;
  801.  
  802. r1=tex2D(s4, _c0.x); //AdapLumSampler , 0.0
  803. r0.w=1.0/r1.x;
  804. r0.w=r0.w * _c81.y; //ToneMapParams.y
  805. r1.x=1.0/r0.w;
  806. r1.x=r1.x * _c81.x; //ToneMapParams.x
  807. r1.xyz=r2 * _c66.x - r1.x; //Exposure.x
  808. r2.xyz=max(r1, _c0.x); //0.0
  809. r1.xyz=r2 * _c81.z; //ToneMapParams.z
  810. r1.xyz=r1 * _c1.x; //0.25
  811. r0.xyz=r0 * _c66.x + r1; //Exposure.x
  812. r1.xyz=r0.w * r0;
  813. r1.x=dot(r1.xyz, _c0.yzw); //0.2125, 0.7154, 0.0721
  814. r0.xyz=r0 * r0.w - r1.x;
  815. r0.xyz=_c82.x * r0 + r1.x; //DeSatContrastGamma.x
  816. r0.w=r1.x * _c84.w; //ColorShift.w
  817. r1.yzw=r0.w * _c84.xxyz; //ColorShift
  818.  
  819. //Darken as DarkeningAmount, Keeps Colors
  820. r2.x=saturate(r0.w);
  821. r0.xyz=r0.xyz - _c84.xyz * r0.w; //ColorShift
  822. r0.xyz=r2.x * r0.xyz + r1.yzww;
  823.  
  824. //Coloring (Green, Brown, ...)
  825. r0.xyz=2.0 * r0.xyz * _c83.xyz; //ColorCorrect
  826.  
  827. //Keeps Colors, Changes Luma
  828. r1.x=saturate(r1.x);//luma
  829. r0.w=_c82.z - _c1.y; //deSatContrastGamma.z - 1.0
  830. r2.x=pow(r1.x, r0.w);
  831.  
  832. _oC0.xyz=r0.xyz * r2.x; //orig
  833. _oC0.w=_c1.y; //1.0
  834.  
  835.  
  836. //Process.
  837.  
  838. //float4 color = r0 * r11;
  839. r0=tex2D(s2, _v0.xyz); //HDR Color - MK
  840. float4 color = r0;
  841. float4 origcolor = tex2D(s2, _v0.xyz);
  842.  
  843. //Adaptation Luminance
  844. r5=tex2D(s4, _c0.x);
  845. //Adaptation
  846. r5.w=r5.x;
  847. r5.w=AdaptationDepth/r5.w;
  848. r0.xyz=r11 * r5.w;
  849. r3.xy=_c10.xwxw;
  850. r3.xy=r3.xy * r5.w;
  851. color.xyz=color.xyz * r5.w;
  852.  
  853. //Temp 2.0 Test
  854. r7=tex2D(s3, _v0.xy);
  855. color=r7 * 0 + r0; // * 0 + r11 does not work
  856.  
  857. float4 colorbloom = tex2D(s3, _v0.xy);//0.5
  858. colorbloom *= r5.w;
  859. colorbloom.r*=lerp(1, 1.5, saturate(pow(depth/250.0, 0.5)));
  860. colorbloom.g*=lerp(1, 1.5, saturate(pow(depth/250.0, 0.5)));
  861. colorbloom.b*=lerp(1, 1.5, saturate(pow(depth/250.0, 0.5)));
  862.  
  863. //Increase Color
  864.  
  865. float cgray=dot(color.xyz, 0.333);//luma
  866. float3 poweredcolor=pow(color.xyz, EColorSaturation);
  867. float newgray=dot(poweredcolor.xyz, 0.333);
  868. color.xyz=poweredcolor.xyz*cgray/(newgray+0.0001);
  869.  
  870. float bloomgray=dot(colorbloom.xyz, 0.333) * EBloomAmount;
  871.  
  872. colorbloom.r *= BloomR;
  873. colorbloom.g *= BloomG;
  874. colorbloom.b *= BloomB;
  875.  
  876.  
  877. float4 dirtTex=tex2D(s13, _v0.xy);
  878. float4 uvsrclens=0.0;
  879. float3 lensDirt=saturate(lensDirt.xyz);
  880. lensDirt=dirtTex.xyz;
  881. colBloom.xyz+=colBloom.xyz*lensDirt.xyz*0.5;
  882.  
  883.  
  884.  
  885. color.xyz=lerp(color.xyz, color.xyz*0.8+colorbloom.xyz*0.3, saturate(bloomgray));
  886. color.xyz=max(color.xyz, 0.0001);
  887. color *= Exposure;
  888.  
  889. float4 curr = ((color*(A*color+C*B)+D*E)/(color*(A*color+B)+D*F))-E/F;
  890. float4 whiteScale = ((W*(A*W+C*B)+D*E)/(W*(A*W+B)+D*F))-E/F;
  891. color = curr*whiteScale;
  892. color = pow(color,1/2.2);
  893. //color.xyz = saturate(color.xyz);
  894. color.xyz=color.xyz*0.98 + sin(color.xyz*1.570796)*0.08;
  895.  
  896. //Bleach Bypass Code
  897. ///////////////////////////////////////////
  898.  
  899. float luma = dot(color.xyz, _c12.xyz);
  900. float3 blend = luma.xxx;
  901. float L = min(1, max(0, 10*(luma - 0.5)));
  902. float3 result1 = 1.5 * color.xyz * blend;
  903. float3 result2 = 1.0 - 1.5*(1.0 - blend)*(1.0 - color.xyz);
  904. float3 newColor = lerp(result1.xyz, result2.xyz, L);
  905. float3 mixRGB = BP_factor * newColor.xyz;
  906. mixRGB += ((1.0f - BP_factor) * color.xyz);
  907.  
  908. color.xyz = mixRGB;
  909.  
  910. //Increase Constrast
  911. ////////////////////////////////////////////
  912. color.xyz = lerp(color.xyz, 0.5 * (1 + sin((color.xyz - 0.5)*3.1415926)), Contrast);
  913.  
  914. #ifdef APPLYGAMECOLORCORRECTION
  915. //Apply Original Corrections (((
  916.  
  917. r0.w=1.0;//_c81.y/r5.x; //r5 is Adaptation Luminance Sampler
  918.  
  919. luma=0.27*color.r + 0.67*color.g + 0.06*color.b;
  920. color.xyz=color.xyz * r0.w - luma;
  921. color.xyz=_c82.x * color.xyz + luma; //DeSatContrastGamma.x
  922. r0.w=luma * _c84.w; //ColorShift.w
  923. r1.xyz=r0.w * _c84.xyz; //ColorShift
  924.  
  925. //Darken as DarkeningAmount, Keeps Colors
  926. color.xyz=color.xyz - _c84.xyz * r0.w; //ColorShift
  927. color.xyz=saturate(r0.w) * color.xyz + r1.xyz;
  928.  
  929. //Coloring (green, brown, ...)
  930. color.xyz=2.0 * color.xyz * _c83.xyz; //ColorCorrect
  931.  
  932. //Desaturating
  933. luma=saturate(luma);
  934. r0.w=_c82.z - _c1.y; //deSatContrastGamma.z - 1.0
  935. color.xyz=color.xyz * pow(luma, r0.w);
  936. #endif //APPLYGAMECOLORCORRECTION
  937.  
  938.  
  939. //Cross Processing Code - IceLaGlace 2011 (c)
  940. ////////////////////////////////////////////////////
  941.  
  942. float Weight;
  943. r0.xyz=color.xyz;
  944. r2.x = dot(color.xyz, 0.333);
  945. r2.x = 1 - pow(1.71, -r2.x*5.0);
  946. r2.x = r2.x * 0.094; // 8-19-2012 Changing Gamma / Brightness Levels
  947. r0.xyz = saturate(r0.xyz - r2.x);
  948. r0.xyz = lerp(r0.xyz, sin(r0.xyz*1.570796), 1.25);
  949. Weight=0.6 - r2.x*0.5;
  950. color.xyz=lerp(color.xyz, r0.xyz, Weight);
  951. r10.x = dot(color.xyz, _c12.xyz);
  952. color.xyz = lerp(color.xyz, r10.x, 0.1);
  953. float fRatio = 0.5;
  954. float moodR = 1.02;
  955. float moodG = 1.02;
  956. float moodB = 1.01;
  957. float4 colInput = r0;
  958. float4 colMood = 0.56;
  959. colMood.r = moodR;
  960. colMood.g = moodG;
  961. colMood.b = moodB;
  962. float fLum = ( colInput.r + colInput.g + colInput.b ) / 3;
  963. colMood = lerp(0, colMood, saturate(fLum * 2.0));
  964. colMood = lerp(colMood, 1, saturate(fLum - 0.5) * 2.0);
  965. float4 colOutput = lerp(colInput, colMood, saturate(fLum * fRatio));
  966. color.rgb=max(0, colOutput);
  967. r0.a=1.0;
  968.  
  969.  
  970. //Vignette Code
  971. ////////////////////////////////////////
  972. focus = length(center.xy)*1.41421;
  973. focus = pow(focus, 4);
  974. color.xyz -= focus * VignetteAmount;
  975.  
  976.  
  977. _oC0.xyz=color.xyz;
  978.  
  979. //_oC0.w=1.0;
  980.  
  981. return _oC0;
  982. }
  983.  
  984. //Temporary Post Process
  985. technique Shader_C215BE6E
  986. {
  987. pass p0
  988. {
  989. PixelShader = compile ps_3_0 PS_C215BE6E();
  990. }
  991. }
  992.  
  993.  
  994.  
  995.  
  996. //Original Post Process
  997. technique Shader_ORIGINALPOSTPROCESS
  998. {
  999. pass p0
  1000. {
  1001.  
  1002. PixelShader=
  1003. asm
  1004. {
  1005. //
  1006. // Generated by Microsoft (R) HLSL Shader Compiler 9.23.949.2378
  1007. //
  1008. // Parameters:
  1009. //
  1010. // sampler2D AdapLumSampler;
  1011. // sampler2D BloomSampler;
  1012. // float4 ColorCorrect;
  1013. // float4 ColorShift;
  1014. // float4 FogColor
  1015. // float Exposure;
  1016. // sampler2D GBufferTextureSampler2;
  1017. // sampler2D GBufferTextureSampler3;
  1018. // sampler2D HDRSampler;
  1019. // sampler2D JitterSampler;
  1020. // float PLAYER_MASK;
  1021. // sampler2D StencilCopySampler;
  1022. // float4 TexelSize;
  1023. // float4 ToneMapParams;
  1024. // float4 deSatContrastGamma;
  1025. // float4 dofBlur;
  1026. // float4 dofDist;
  1027. // float4 dofProj;
  1028. // float gDirectionalMotionBlurLength;
  1029. // float4 globalScreenSize;
  1030. // row_major float4x4 motionBlurMatrix;
  1031. //
  1032. //
  1033. // Registers:
  1034. //
  1035. // Name Reg Size
  1036. // ------------------------------------------ ------- -------
  1037. // globalScreenSize c44 1
  1038. // Exposure c66 1
  1039. // motionBlurMatrix c72 4
  1040. // TexelSize c76 1
  1041. // dofProj c77 1
  1042. // dofDist c78 1
  1043. // dofBlur c79 1
  1044. // gDirectionalMotionBlurLength c80 1
  1045. // ToneMapParams c81 1
  1046. // deSatContrastGamma c82 1
  1047. // ColorCorrect c83 1
  1048. // ColorShift c84 1
  1049. // PLAYER_MASK c85 1
  1050. // GBufferTextureSampler2 s0 1
  1051. // GBufferTextureSampler3 s1 1
  1052. // HDRSampler s2 1
  1053. // BloomSampler s3 1
  1054. // AdapLumSampler s4 1
  1055. // JitterSampler s5 1
  1056. // StencilCopySampler s6 1
  1057. //
  1058.  
  1059. ps_3_0
  1060. def c0, 0, 0.212500006, 0.715399981, 0.0720999986
  1061. def c1, 0.25, 1, 256, 0
  1062. def c2, 0, 2, 4, 8
  1063. def c3, 58.1640015, 47.1300011, 0, 0
  1064. def c4, -0.5, -1.5, 1.5, 0.5
  1065. def c5, 2, -1, 0.125, 0
  1066. def c6, 256, 2, 4, 8
  1067. def c180, 0.0, 0.0, 0.0, 100.5
  1068. def c181, 1.0, 0.0, 0.0, 20.01
  1069. def c183, 800.0, 600.0, 0.0, 100.5
  1070. defi i0, 7, 0, 0, 0
  1071. dcl_texcoord v0.xy
  1072. dcl_2d s0
  1073. dcl_2d s1
  1074. dcl_2d s2
  1075. dcl_2d s3
  1076. dcl_2d s4
  1077. dcl_2d s5
  1078. dcl_2d s6
  1079. texld r0, v0, s1
  1080. add r0.y, -c77.x, c77.y
  1081. rcp r0.y, r0.y
  1082. mul r0.z, r0.y, c77.y
  1083. mul r0.z, r0.z, -c77.x
  1084. mad r0.x, c77.y, -r0.y, r0.x
  1085. rcp r0.x, r0.x
  1086. mul r0.y, r0.z, r0.x
  1087. texld r1, v0, s2
  1088. texld r2, v0, s3
  1089. abs r0.w, c79.w
  1090. mov r3, c4
  1091. mad r4.xy, c76, r3, v0
  1092. texld r4, r4, s2
  1093. mad r5.xy, c76, r3.zxzw, v0
  1094. texld r5, r5, s2
  1095. mad r3.xz, c76.xyyw, r3.wyzw, v0.xyyw
  1096. texld r6, r3.xzzw, s2
  1097. mad r3.xy, c76, r3.ywzw, v0
  1098. texld r7, r3, s2
  1099. dp3 r1.w, r4, r4
  1100. rcp r1.w, r1.w
  1101. cmp r3.xyz, -r1.w, c0.x, r4
  1102. dp3 r1.w, r5, r5
  1103. rcp r1.w, r1.w
  1104. cmp r4.xyz, -r1.w, c0.x, r5
  1105. dp3 r1.w, r6, r6
  1106. rcp r1.w, r1.w
  1107. cmp r5.xyz, -r1.w, c0.x, r6
  1108. dp3 r1.w, r7, r7
  1109. rcp r1.w, r1.w
  1110. cmp r6.xyz, -r1.w, c0.x, r7
  1111. dp3 r1.w, r1, r1
  1112. rcp r1.w, r1.w
  1113. cmp r7.xyz, -r1.w, c0.x, r1
  1114. mad r0.x, r0.z, r0.x, -c78.w
  1115. mad r0.x, c78.y, -r3.w, r0.x
  1116. max r1.w, r0.x, c0.x
  1117. rcp r0.x, c78.z
  1118. mul r0.x, r1.w, r0.x
  1119. lrp r1.w, r0.x, c79.z, c79.y
  1120. min r0.x, c79.z, r1.w
  1121. dp3 r0.z, r7, c0.yzww
  1122. dp3 r8.x, r3, c0.yzww
  1123. dp3 r8.y, r4, c0.yzww
  1124. dp3 r8.z, r5, c0.yzww
  1125. dp3 r8.w, r6, c0.yzww
  1126. dp4 r1.w, r8, c1.x
  1127. add r8, r8, -r1.w
  1128. dp4 r2.w, r8, r8
  1129. add r0.z, r0.z, -r1.w
  1130. mad r0.z, r0.z, r0.z, -r2.w
  1131. mul r0.x, r0.x, r0.x
  1132. cmp r0.x, r0.z, c1.y, r0.x
  1133. texld r8, v0, s0
  1134. mov r8.yz, c1
  1135. mad r9, r8.w, -r8.z, c2
  1136. cmp r9, r9, c1.y, c1.w
  1137. mad r10, r8.w, -c6.x, c6.yzwx
  1138. cmp r10, r10, -c1.y, -c1.w
  1139. add r9, r9, r10
  1140. mul r9, r9, c4.x
  1141. dp4 r0.z, r9, c1.y
  1142. add r0.z, r0.z, c4.w
  1143. rcp r0.z, r0.z
  1144. mul r8.xzw, r3.xyyz, r9.x
  1145. mad r7.xyz, r7, c4.w, r8.xzww
  1146. mad r7.xyz, r4, r9.y, r7
  1147. mad r7.xyz, r5, r9.z, r7
  1148. mad r7.xyz, r6, r9.w, r7
  1149. mul r7.xyz, r0.z, r7
  1150. add r0.z, -r0.x, c1.y
  1151. mul r1.w, r0.x, c1.x
  1152. mul r3.xyz, r3, r1.w
  1153. mad r3.xyz, r7, r0.z, r3
  1154. mad r3.xyz, r4, r1.w, r3
  1155. mad r3.xyz, r5, r1.w, r3
  1156. mad r3.xyz, r6, r1.w, r3
  1157. mad r4.xyz, v0.yxyw, c5.x, c5.y
  1158. mul r0.z, r4.y, c77.z
  1159. mul r0.z, r0.y, r0.z
  1160. mul r1.w, -r4.x, c77.w
  1161. mul r1.w, r0.y, r1.w
  1162. mul r5.xyz, r1.w, c73
  1163. mad r5.xyz, r0.z, c72, r5
  1164. mad r5.xyz, -r0.y, c74, r5
  1165. add r5.xyz, r5, c75
  1166. mul r0.y, -r5.z, c77.z
  1167. rcp r0.y, r0.y
  1168. mul r6.x, r5.x, r0.y
  1169. mul r0.y, r5.z, c77.w
  1170. rcp r0.y, r0.y
  1171. mul r6.y, r5.y, r0.y
  1172. add r0.yz, -r4, r6.xxyw
  1173. mul r0.yz, r0, c80.x
  1174. mul r4.xy, r0.yzzw, c5.z
  1175. texld r5, v0, s6
  1176. add r1.w, r5.x, -c85.x
  1177. mul r4.zw, r3.xyxy, c2.w
  1178. mad r4.zw, v0.xyxy, c3.xyxy, r4
  1179. texld r5, r4.zwzw, s5
  1180. add r2.w, r5.x, c4.x
  1181. mad r4.zw, r4.xyxy, r2.w, v0.xyxy
  1182. mov r5.xyz, r3
  1183. mov r2.w, c1.y
  1184. mov r3.w, c1.y
  1185.  
  1186. rep i0
  1187. mad r6.xy, r4, r3.w, r4.zwzw
  1188. texld r7, r6, s6
  1189. add r5.w, r7.x, -c85.x
  1190. cmp r5.w, r5.w, c1.w, c1.y
  1191. texld r6, r6, s2
  1192. mad r5.xyz, r6, r5.w, r5
  1193. add r2.w, r2.w, r5.w
  1194. add r3.w, r3.w, c1.y
  1195. endrep
  1196.  
  1197. rcp r2.w, r2.w
  1198. mul r0.yz, r0, c183.xxyw//c44.xxyw
  1199. dp2add r0.y, r0.yzzw, r0.yzzw, c0.x
  1200. rsq r0.y, r0.y
  1201. rcp r0.y, r0.y
  1202. mul r0.y, r0.y, c4.w
  1203. add r0.x, r0.x, c1.y
  1204. rcp r0.x, r0.x
  1205. mul_sat r0.x, r0.y, r0.x
  1206. mad r4.xyz, r5, r2.w, -r3
  1207. mad r0.xyz, r0.x, r4, r3
  1208. cmp r0.xyz, r1.w, r3, r0
  1209. cmp r0.xyz, -r0.w, r0, r1
  1210.  
  1211. texld r1, c0.x, s4
  1212. rcp r0.w, r1.x
  1213. mul r0.w, r0.w, c81.y
  1214. rcp r1.x, r0.w
  1215. mul r1.x, r1.x, c81.x
  1216. mad r1.xyz, r2, c66.x, -r1.x
  1217. max r2.xyz, r1, c0.x
  1218. mul r1.xyz, r2, c81.z
  1219. mul r1.xyz, r1, c1.x
  1220. mad r0.xyz, r0, c66.x, r1
  1221. mul r1.xyz, r0.w, r0
  1222. dp3 r1.x, r1, c0.yzww
  1223. mad r0.xyz, r0, r0.w, -r1.x
  1224. mad r0.xyz, c82.x, r0, r1.x
  1225. mul r0.w, r1.x, c84.w
  1226. mul r1.yzw, r0.w, c84.xxyz
  1227. mov_sat r2.x, r0.w
  1228. mad r0.xyz, c84, -r0.w, r0
  1229. mad r0.xyz, r2.x, r0, r1.yzww
  1230. mul r0.xyz, r0, c83
  1231. add r0.xyz, r0, r0
  1232. mov_sat r1.x, r1.x
  1233. add r0.w, -r8.y, c82.z
  1234. pow r2.x, r1.x, r0.w
  1235. //mul r2.x, r2.x, c181.x
  1236. mul oC0.xyz, r0, r2.x
  1237. mov oC0.w, c1.y
  1238.  
  1239. //texld r1, v0, s2
  1240. //mul oC0.xyz, r1, c199.z
  1241. };
  1242. }
  1243. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement