Advertisement
Kocayine

Untitled

Jul 2nd, 2013
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 21.83 KB | None | 0 0
  1. //++++++++++++++++++++++++++++++++++++++++++++
  2. // ENBSeries effect file
  3. // visit http://enbdev.com for updates
  4. // Copyright 2010 (c) Boris Vorontsov
  5. // Using decompiled shader of GTA4 game by
  6. // Rockstar Games.
  7. //++++++++++++++++++++++++++++++++++++++++++++
  8.  
  9. float VignetteAmount = 0.0; //Çàòåìíåíèå íà óãëàõ äèñïëåÿ.
  10.  
  11. #define BLEACH
  12. float BP_factor = 0.55;
  13.  
  14. // sampler2D AdapLumSampler;
  15. // sampler2D BloomSampler;
  16. // float4 ColorCorrect;
  17. // float4 ColorShift;
  18. // float Exposure;
  19. // sampler2D GBufferTextureSampler2;
  20. // sampler2D GBufferTextureSampler3;
  21. // sampler2D HDRSampler;
  22. // sampler2D JitterSampler;
  23. // float PLAYER_MASK;
  24. // sampler2D StencilCopySampler;
  25. // float4 TexelSize;
  26. // float4 ToneMapParams;
  27. // float4 deSatContrastGamma;
  28. // float4 dofBlur;
  29. // float4 dofDist;
  30. // float4 dofProj;
  31. // float gDirectionalMotionBlurLength;
  32. // float4 globalScreenSize;
  33. // row_major float4x4 motionBlurMatrix;
  34. //
  35. //
  36. // Registers:
  37. //
  38. // Name Reg Size
  39. // ---------------------------- ----- ----
  40. // globalScreenSize c44 1
  41. // Exposure c66 1
  42. // motionBlurMatrix c72 4
  43. // TexelSize c76 1
  44. // dofProj c77 1
  45. // dofDist c78 1
  46. // dofBlur c79 1
  47. // gDirectionalMotionBlurLength c80 1
  48. // ToneMapParams c81 1
  49. // deSatContrastGamma c82 1
  50. // ColorCorrect c83 1
  51. // ColorShift c84 1
  52. // PLAYER_MASK c85 1
  53. // GBufferTextureSampler2 s0 1
  54. // GBufferTextureSampler3 s1 1
  55. // HDRSampler s2 1
  56. // BloomSampler s3 1
  57. // AdapLumSampler s4 1
  58. // JitterSampler s5 1
  59. // StencilCopySampler s6 1
  60.  
  61. //quad
  62. struct VS_OUTPUT_POST
  63. {
  64. float4 vpos : POSITION;
  65. float2 txcoord0 : TEXCOORD0;
  66. };
  67. struct VS_INPUT_POST
  68. {
  69. float3 pos : POSITION;
  70. float2 txcoord0 : TEXCOORD0;
  71. };
  72.  
  73. //int4 _i0 : register(i0);
  74.  
  75. /*
  76. float4 _c0 : register(c0);
  77. float4 _c1 : register(c1);
  78. float4 _c2 : register(c2);
  79. float4 _c3 : register(c3);
  80. float4 _c4 : register(c4);
  81. float4 _c5 : register(c5);
  82. float4 _c6 : register(c6);
  83. */
  84. float4 _c44 : register(c44);
  85. float4 _c66 : register(c66);
  86. float4 _c72 : register(c72);
  87. float4 _c73 : register(c73);
  88. float4 _c74 : register(c74);
  89. float4 _c75 : register(c75);
  90. float4 _c76 : register(c76);
  91. float4 _c77 : register(c77);
  92. float4 _c78 : register(c78);
  93. float4 _c79 : register(c79);
  94. float4 _c80 : register(c80);
  95. float4 _c81 : register(c81);
  96. float4 _c82 : register(c82);
  97. float4 _c83 : register(c83);
  98. float4 _c84 : register(c84);
  99. float4 _c85 : register(c85);
  100. float maxi : register(c86);
  101. float temp : register(c87);
  102.  
  103. texture2D texs0 : register(s0);
  104. texture2D texs1 : register(s1);
  105. texture2D texs2 : register(s2);
  106. texture2D texs3 : register(s3);
  107. texture2D texs4 : register(s4);
  108. texture2D texs5 : register(s5);
  109. texture2D texs6 : register(s6);
  110. texture2D texs7 : register(s7);
  111. texture2D texs13 : register(s13);//palette
  112. texture2D texs15 : register(s15);
  113. //sampler2D s0=sampler_state { Texture=<texs0>; };
  114. //sampler2D s1=sampler_state { Texture=<texs1>; };
  115. sampler2D s2=sampler_state { Texture=<texs2>; };
  116. //sampler2D s3=sampler_state { Texture=<texs3>; };
  117. sampler2D s4=sampler_state { Texture=<texs4>; };
  118. sampler2D s5=sampler_state { Texture=<texs5>; };
  119. sampler2D s6=sampler_state { Texture=<texs6>; };
  120. sampler2D s7=sampler_state { Texture=<texs7>; };
  121. //sampler2D s13=sampler_state { Texture=<texs13>; };
  122. sampler2D s15=sampler_state { Texture=<texs15>; };
  123.  
  124. //next samplers states fixing problems on ATI cards
  125. sampler2D s0 = sampler_state
  126. {
  127. Texture = <texs0>;
  128. MinFilter = LINEAR;//
  129. MagFilter = LINEAR;//
  130. MipFilter = NONE;//NONE;//LINEAR;
  131. AddressU = Clamp;
  132. AddressV = Clamp;
  133. SRGBTexture=FALSE;
  134. MaxMipLevel=0;
  135. MipMapLodBias=0;
  136. };
  137.  
  138. sampler2D s1 = sampler_state
  139. {
  140. Texture = <texs1>;
  141. MinFilter = LINEAR;//
  142. MagFilter = LINEAR;//
  143. MipFilter = NONE;//NONE;//LINEAR;
  144. AddressU = Clamp;
  145. AddressV = Clamp;
  146. SRGBTexture=FALSE;
  147. MaxMipLevel=0;
  148. MipMapLodBias=0;
  149. };
  150.  
  151. sampler2D s3 = sampler_state
  152. {
  153. Texture = <texs3>;
  154. MinFilter = LINEAR;//
  155. MagFilter = LINEAR;//
  156. MipFilter = NONE;//NONE;//LINEAR;
  157. AddressU = Clamp;
  158. AddressV = Clamp;
  159. SRGBTexture=FALSE;
  160. MaxMipLevel=0;
  161. MipMapLodBias=0;
  162. };
  163. /*
  164. sampler2D s5 = sampler_state
  165. {
  166. Texture = <texs5>;
  167. MinFilter = GaussianQuad;//
  168. MagFilter = GaussianQuad;//
  169. MipFilter = NONE;
  170. AddressU = Wrap;
  171. AddressV = wrap;
  172. SRGBTexture=FALSE;
  173. MaxMipLevel=0;
  174. MipMapLodBias=0;
  175. };
  176. */
  177.  
  178.  
  179. sampler2D s13 = sampler_state
  180. {
  181. Texture = <texs13>;
  182. MinFilter = LINEAR;
  183. MagFilter = LINEAR;
  184. MipFilter = NONE;
  185. AddressU = Clamp;
  186. AddressV = Clamp;
  187. SRGBTexture=FALSE;
  188. MaxMipLevel=0;
  189. MipMapLodBias=0;
  190. };
  191.  
  192. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  193. //
  194. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  195.  
  196.  
  197.  
  198.  
  199. float4 PS_C215BE6E(VS_OUTPUT_POST IN) : COLOR
  200. {
  201. float4 _oC0=0.0; //output
  202.  
  203. float4 _c0=float4(0, 0.212500006, 0.715399981, 0.0720999986);
  204. float4 _c1=float4(0.25, 1, 256, 0);
  205. float4 _c2=float4(0, 2, 4, 8);
  206. float4 _c3=float4(58.1640015, 47.1300011, 0, 0);
  207. float4 _c4=float4(-0.5, -1.5, 1.5, 0.5);
  208. float4 _c5=float4(2, -1, 0.125, 0);
  209. float4 _c6=float4(256, 2, 4, 8);
  210. //mine
  211. float4 _c7=float4(1.0, 0.1, 0.8, 1.0);
  212. float4 _c8=float4(0.0, 0.1, 0.8, 0.333);
  213. float4 _c9=float4(0.06, 0.1, 0.8, 0.1);
  214. float4 _c10=float4(0.01, 1.4, 0.0, 0.32);
  215. float4 _c11=float4(0.333333, 1.0, 0.0, 0.0);
  216. //float4 _c12=float4(0.27, 0.67, 0.06, 0.0);
  217. float4 _c12=float4(0.299, 0.587, 0.114, 0.0);
  218. float4 _c13=float4(0.0, 0.0, 0.0, 0.00001);
  219. float4 _c150=float4(0.55, 0.9, 0.85, 0.9);
  220. float4 _c195=float4(0.0, 0.0, 0.0, 0.07);//0.7
  221.  
  222.  
  223. float4 r0;
  224. float4 r1;
  225. float4 r2;
  226. float4 r3;
  227. float4 r4;
  228. float4 r5;
  229. float4 r6;
  230. float4 r7;
  231. float4 r8;
  232. float4 r9;
  233. float4 r10;
  234. float4 r11;
  235.  
  236.  
  237. float4 _v0=0.0;
  238. _v0.xy=IN.txcoord0.xy;
  239.  
  240.  
  241. r1=tex2D(s2, _v0.xy); //HDRSampler
  242. r2=tex2D(s3, _v0.xy); //BloomSampler
  243.  
  244.  
  245. r0=tex2D(s1, _v0.xy); //GBufferTextureSampler3
  246. r0.y=-_c77.x + _c77.y; //-dofProj.x + dofProj.y
  247. r0.y=1.0/r0.y;
  248. r0.z=r0.y * _c77.y; //dofProj.y
  249. r0.z=r0.z * -_c77.x; //dofProj.x
  250. r0.x=_c77.y * -r0.y + r0.x;
  251. r0.x=1.5/r0.x;
  252. r0.y=r0.z * r0.x;
  253.  
  254. r1=tex2D(s2, _v0.xy); //HDRSampler
  255. r2=tex2D(s3, _v0.xy); //BloomSampler
  256.  
  257. //r1*=10.0;
  258.  
  259.  
  260. r0.w=abs(_c79.w);
  261. r3=_c4; //-0.5, -1.5, 1.5, 0.5
  262.  
  263. float2 center;
  264. float distance;
  265. float focus;
  266. float farblur;
  267. float dof;
  268.  
  269. distance=r0.z * r0.x - _c78.w; //dofDist.w
  270. distance+=_c78.y * -r3.w; //dofDist.y
  271. distance+=140;//offset
  272. center.x=_v0.x-0.5;
  273. center.y=0.5-_v0.y;
  274. focus=length(center.xy)*1.41;
  275. focus=pow(focus,3)*2;
  276. focus=max(focus,0.4);
  277. farblur=clamp(distance*0.10,0.2,2);
  278. if(distance*0.1>2)dof=0.9;
  279. else dof=0.0;
  280.  
  281. //TEMP decrease bluriness for edge smoothing
  282. float2 off_c76=_c76.xy*(farblur);
  283.  
  284. r4.xy=off_c76.xy * r3.xy + _v0.xy; //TexelSize.xy
  285. r4=tex2D(s2, r4.xy); //HDRSampler
  286.  
  287. r5.xy=off_c76.xy * r3.zx + _v0.xy; //TexelSize.xy
  288. r5=tex2D(s2, r5.xy); //HDRSampler
  289.  
  290. r3.xz=off_c76.xy * r3.wz + _v0.xy; //TexelSize.xy
  291. r6=tex2D(s2, r3.xz); //HDRSampler
  292.  
  293. r3.xy=off_c76.xy * r3.yw + _v0; //TexelSize.xy
  294. r7=tex2D(s2, r3.xy); //HDRSampler
  295.  
  296.  
  297. r1.w=dot(r4.xyz, r4.xyz);
  298. r1.w=1.0/r1.w;
  299. if (-r1.w<0.0)
  300. {
  301. r3.xyz=r4.xyz;
  302. } else r3.xyz=_c0.x;
  303.  
  304. r1.w=dot(r5.xyz, r5.xyz); //dp3
  305. r1.w=1.0/r1.w;
  306. if (-r1.w<0.0)
  307. {
  308. r4.xyz=r5.xyz;
  309. } else r4.xyz=_c0.x;
  310.  
  311. r1.w=dot(r6.xyz, r6.xyz); //dp3
  312. r1.w=1.0/r1.w;
  313. if (-r1.w<0.0)
  314. {
  315. r5.xyz=r6.xyz;
  316. } else r5.xyz=_c0.x;
  317.  
  318. r1.w=dot(r7.xyz, r7.xyz); //dp3
  319. r1.w=1.0/r1.w;
  320. if (-r1.w<0.0)
  321. {
  322. r6.xyz=r7.xyz;
  323. } else r6.xyz=_c0.x;
  324.  
  325. r1.w=dot(r1.xyz, r1.xyz); //dp3
  326. r1.w=1.0/r1.w;
  327. if (-r1.w<0.0)
  328. {
  329. r7.xyz=r1.xyz;
  330. } else r7.xyz=_c0.x;
  331.  
  332. r0.x=r0.z * r0.x - _c78.w; //dofDist.w
  333. r0.x=_c78.y * -r3.w + r0.x; //dofDist.y
  334. r1.w=max(r0.x, _c0.x); //0.0
  335. r0.x=1.0/_c78.z; //dofDist.z
  336. r0.x=r1.w * r0.x;
  337. r1.w=lerp(_c79.y, _c79.z, r0.x);//dofBlur
  338. r0.x=min(_c79.z, r1.w); //dofBlur.z
  339.  
  340. r0.z=dot(r7.xyz, _c0.yzw); //0.212500006, 0.715399981, 0.0720999986
  341. r8.x=dot(r3.xyz, _c0.yzw); //0.212500006, 0.715399981, 0.0720999986
  342. r8.y=dot(r4.xyz, _c0.yzw); //0.212500006, 0.715399981, 0.0720999986
  343. r8.z=dot(r5.xyz, _c0.yzw); //0.212500006, 0.715399981, 0.0720999986
  344. r8.w=dot(r6.xyz, _c0.yzw); //0.212500006, 0.715399981, 0.0720999986
  345. r1.w=dot(r8, _c1.xxxx); //0.25
  346.  
  347. r8=r8 - r1.w;
  348. r2.w=dot(r8, r8);
  349. r0.z=r0.z - r1.w;
  350. r0.z=r0.z * r0.z - r2.w;
  351. r0.x=r0.x*r0.x;
  352. if (r0.z<0.0)
  353. {
  354. r0.x=r0.x;
  355. } else r0.x=_c1.y; //1.0
  356.  
  357.  
  358. r8=tex2D(s0, _v0.xy); //GBufferTextureSampler2
  359.  
  360.  
  361. r8.yz=_c1.yz; // 1.0, 256.0
  362. r9=r8.w * -r8.z + _c2; //0, 2, 4, 8
  363. if (r9.w<0.0) //r9<0.0
  364. {
  365. r9=_c1.w; //0.0
  366. } else r9=_c1.y; //1.0
  367. //r9 is filtered sky mask
  368. float sky = r9.x;
  369.  
  370. //r10=r8.w + tempc6;//c6.yzwx; //256, 2, 4, 8
  371. r10=r8.w * -_c6.x + _c6.yzwx; //256, 2, 4, 8
  372.  
  373.  
  374. if (r10.x<0.0)
  375. {
  376. r10.x=-_c1.w; //0.0
  377. } else r10.x=-_c1.y; //1.0
  378.  
  379. if (r10.y<0.0)
  380. {
  381. r10.y=-_c1.w; //0.0
  382. } else r10.y=-_c1.y; //1.0
  383.  
  384. if (r10.z<0.0)
  385. {
  386. r10.z=-_c1.w; //0.0
  387. } else r10.z=-_c1.y; //1.0
  388.  
  389. if (r10.w<0.0)
  390. {
  391. r10.w=-_c1.w; //0.0
  392. } else r10.w=-_c1.y; //1.0
  393.  
  394.  
  395. r9=r9 + r10;
  396. r9=r9 * _c4.x; //-0.5
  397.  
  398.  
  399. r0.z=dot(r9, _c1.yyyy); //1.0
  400. r0.z=r0.z + _c4.w; //0.5
  401. r0.z=1.0/r0.z;
  402. r8.xzw=r3.xyz * r9.x;
  403.  
  404.  
  405. r7.xyz=r7 * _c4.w + r8.xzw; //0.5
  406. r7.xyz=r4 * r9.y + r7;
  407. r7.xyz=r5 * r9.z + r7;
  408. r7.xyz=r6 * r9.w + r7;
  409. r7.xyz=r0.z * r7;
  410. r0.z=_c1.y - r0.x; //1.0
  411. r1.w=r0.x * _c1.x; //0.25
  412.  
  413.  
  414. r3.xyz=r3 * r1.w;
  415. r3.xyz=r7 * r0.z + r3;
  416. r3.xyz=r4 * r1.w + r3;
  417. r3.xyz=r5 * r1.w + r3;
  418. r3.xyz=r6 * r1.w + r3;
  419.  
  420.  
  421. r4.xyz=_v0.yxy * _c5.x + _c5.y; //2, -1
  422. // r4.x=_v0.y * _c5.x + _c5.y;
  423. // r4.y=_v0.x * _c5.x + _c5.y;
  424. // r4.z=_v0.y * _c5.x + _c5.y;
  425.  
  426. r0.z=r4.y * _c77.z; //dofProj.z
  427. r0.z=r0.y * r0.z;
  428. r1.w=-r4.x * _c77.w; //dofProj.w
  429. r1.w=r0.y * r1.w;
  430. r5.xyz=r1.w * _c73; //motionBlurMatrix.2
  431. r5.xyz=r0.z * _c72 + r5; //motionBlurMatrix.1
  432. r5.xyz=-r0.y * _c74 + r5; //motionBlurMatrix.3
  433. r5.xyz=r5 + _c75; //motionBlurMatrix.4
  434.  
  435. r0.y=-r5.z * _c77.z; //dofProj.z
  436. r0.y=1/r0.y;
  437. r6.x=r5.x * r0.y;
  438. r0.y=r5.z * _c77.w; //dofProj.w
  439. r0.y=1/r0.y;
  440. r6.y=r5.y * r0.y;
  441. //r0.yz=-r4 + r6.xxyw;
  442. r0.yz=-r4.yz + r6.xy;
  443.  
  444. //r0.yz=r0 * _c80.x; //gDirectionalMotionBlurLength.x
  445. r0.y=r0.y * _c80.x;
  446. r0.z=r0.z * _c80.x;
  447. r4.xy=r0.yz * _c5.z; //0.125
  448. r5=tex2D(s6, _v0.xy); //StencilCopySampler
  449. r1.w=r5.x - _c85.x; //PLAYER_MASK.x
  450. r4.zw=r3.xy * _c2.w; //8.0
  451. r4.zw=_v0.xy * _c3.xy + r4.zw; //58.1640015, 47.1300011
  452. r5=tex2D(s5, r4.zw); //JitterSampler
  453. //r2.w=r5.x - 0.5; //-0.5
  454. r4.zw=r4.xy * (r5.x - 4) + _v0.xy; //0.082 fixed
  455. r5.xyz=r3.xyz;
  456. r2.w=_c1.y; //1.0
  457. r3.w=_c1.y; //1.0
  458.  
  459. //motion blur
  460. for (int iii=0; iii<10; iii++)
  461. {
  462. r6.x=r4.x * r3.w + r4.z;
  463. r6.y=r4.y * r3.w + r4.w;
  464. r7=tex2D(s6, r6.xy);
  465. r5.w=r7.x - _c85.x;
  466. if (r5.w<-0.3)
  467. {
  468. r5.w=_c1.y; //1.0
  469. } else r5.w=_c1.w; //0.0
  470. r6=tex2D(s2, r6.xy);
  471. r5.xyz=r6.xyz * r5.w + r5.xyz;
  472. r2.w=r2.w + r5.w;
  473. r3.w=r3.w + _c1.y; //1.0
  474. }
  475.  
  476.  
  477. r2.w=1.0/r2.w;
  478.  
  479. //r0.yz=r0 * _c44.xxyw; //globalScreenSize
  480. r0.y=r0.y * _c44.x; //globalScreenSize
  481. r0.z=r0.z * _c44.y; //globalScreenSize
  482.  
  483. r0.y=dot(r0.yz, r0.yz)+_c0.x;//dp2
  484.  
  485. //r0.y=sqrt(r0.y);
  486. //r0.y=1.0/r0.y;
  487. r0.y=pow(r0.y, _c4.w); //0.5
  488.  
  489. r0.y=r0.y * _c4.w; //0.5
  490. r0.x=r0.x + _c1.y; //1.0
  491. r0.x=1.0/r0.x;
  492. //r0.y is wrong
  493. r0.x=saturate(r0.y * r0.x);
  494. r4.xyz=r5 * r2.w - r3;
  495. r0.xyz=r0.x * r4 + r3;
  496.  
  497. //_oC0.xyz=0.5*r0.xyz;
  498.  
  499. if (-r1.w<0.0) r0.xyz=r3.xyz;
  500. if (-r0.w<0.0) r0.xyz=r1.xyz;
  501.  
  502. //for future use
  503. r11=r0;
  504.  
  505.  
  506. r1=tex2D(s4, _c0.x); //AdapLumSampler , 0.0
  507. r0.w=1.0/r1.x;
  508. r0.w=r0.w * _c81.y; //ToneMapParams.y
  509. r1.x=1.0/r0.w;
  510. r1.x=r1.x * _c81.x; //ToneMapParams.x
  511. r1.xyz=r2 * _c66.x - r1.x; //Exposure.x
  512. r2.xyz=max(r1, _c0.x); //0.0
  513. r1.xyz=r2 * _c81.z; //ToneMapParams.z
  514. r1.xyz=r1 * _c1.x; //0.25
  515. r0.xyz=r0 * _c66.x + r1; //Exposure.x
  516. r1.xyz=r0.w * r0;
  517. r1.x=dot(r1.xyz, _c0.yzw); //0.212, 0.715, 0.072
  518. r0.xyz=r0 * r0.w - r1.x;
  519. r0.xyz=_c82.x * r0 + r1.x; //deSatContrastGamma.x
  520. r0.w=r1.x * _c84.w; //ColorShift.w
  521. r1.yzw=r0.w * _c84.xxyz; //ColorShift
  522. //darken as DarkeningAmount, but keeps colors
  523. r2.x=saturate(r0.w);
  524. r0.xyz=r0.xyz - _c84.xyz * r0.w; //ColorShift
  525. r0.xyz=r2.x * r0.xyz + r1.yzww;
  526.  
  527. //coloring (green, brown, ...)
  528. r0.xyz=2.0 * r0.xyz * _c83.xyz; //ColorCorrect
  529.  
  530. //keeps colors, changes luma
  531. r1.x=saturate(r1.x);//luma
  532. r0.w=_c82.z - _c1.y; //deSatContrastGamma.z - 1.0
  533. r2.x=pow(r1.x, r0.w);
  534.  
  535. _oC0.xyz=r0.xyz * r2.x; //orig
  536. _oC0.w=_c1.y; //1.0
  537.  
  538. //MY CODE BEGINS HERE
  539.  
  540. //tonemap of brightness
  541. //float grayorig=dot(c, c8.w);
  542. //float gray=pow(grayorig, c199.z);
  543. //c=c*gray/grayorig;
  544.  
  545. //TODO make adapration
  546. r5=tex2D(s4, _c0.x);//adaptation luminance
  547. //r5=1.0;
  548.  
  549. //DISABLED
  550. //r0=tex2D(s2, _v0.xy);//hdr color
  551. r0=r11; //FROM ORIGINAL CODE AFTER BLUR
  552.  
  553.  
  554. //adaptation
  555. r5.w=r5.x;
  556. r5.w=1.0/r5.w;
  557. r0.xyz=r0 * r5.w;
  558. r3.xy=_c10.xwxw;
  559. r3.xy=r3.xy * r5.w;
  560.  
  561. r7=tex2D(s3, _v0.xy); //bloom
  562. //mad r0, r7, c199.y, r0
  563. //r0=r7 * _c10.w + r0;
  564. //HERE 0.15 is bloom factor 1, soft bloom
  565. r0=r7 *0.05 + r0; //0.05 //TEMP DISABLED
  566. //power from intensity
  567. //dp3 r10, r0.xyz, c8.www //0.333
  568. //dp3 r10, r0.xyz, c8.www
  569. //r10=dot(r0.xyz, _c8.www);
  570. r10=dot(r0.xyz, _c12.xyz); //luminance
  571.  
  572. float Defog=0.1;
  573. float4 FogColor={0.4, 0.2, 0.15, 0.0}; //
  574. float4 FogColor2={0.09, 0.1, 0.02, 0.0};//
  575. float Exposure=1.1;
  576. float Gamma=1.2;
  577. float BlueShift=0.005;
  578.  
  579. r0.rgb = max(0, r0.rgb - Defog * FogColor.rgb);
  580. r0.rgb *= pow(2.0f, Exposure);
  581. float3 d = r0.rgb * float3(1.05f, 0.97f, 1.27f);
  582. r0.rgb = lerp(r0.rgb, d, BlueShift);
  583.  
  584. //HERE 1.5 is brightness
  585. r9.x=r10.x * 1.5;//c199.x;
  586. //pow r9.x, r10.x, c10.y //c199.w
  587. r10.x=1.0/r10.x;
  588. r10=r10 * r9.x;
  589. r0=r0 * r10.x;
  590. r0=r0 * _c7.y; //pre multiply
  591. r1=r0 * _c7.z; //e multiply
  592. r1=r1 + _c7.w;
  593. r1.xyz=1.0/r1.xyz;
  594. r0=r0 * r1;
  595. //mul r0, r0, c8.z //post multiply
  596. //texld r7, v0, s3 //bloom
  597.  
  598. float middlegray=(r0.r+r0.g+r0.b)*0.333; //dot(r0.xyz, 0.333); //dot(r0.xyz, float3(0.27, 0.67, 0.06));
  599. float3 diffcolor=r0.rgb-middlegray;
  600. r0.rgb+=diffcolor*-0.10;
  601.  
  602. //HERE 0.8 is bloom for additive mix
  603. r0=0.95*r7 * r3.x + r0; //c10.x
  604. //r0=r7 * 0.015 + r0;
  605. //mad r0, r7, c199.y, r0
  606. //mul r0, r2, c199.w
  607.  
  608. #ifdef BLEACH
  609. float luma = dot(r0.xyz, _c12.xyz);
  610.  
  611. float3 blend = luma.xxx;
  612. float L = min(1, max(0, 10*(luma - 0.45)));
  613. float3 result1 = 2.0 * r0.xyz * blend;
  614. float3 result2 = 1.0 - 2.0*(1.0 - blend)*(1.0 - r0.xyz);
  615. float3 newColor = lerp(result1.xyz, result2.xyz, L);
  616. float3 mixRGB = BP_factor * newColor.xyz;
  617. mixRGB += ((1.0f - BP_factor) * r0.xyz);
  618.  
  619. r0.xyz = mixRGB;
  620. #endif
  621.  
  622.  
  623. focus=length(center.xy)*1.41;
  624. focus=pow(focus, 4);
  625.  
  626. r0.xyz-=focus * VignetteAmount;
  627.  
  628. _oC0.xyz=r0.xyz;
  629.  
  630. //_oC0.w=1.0;
  631. return _oC0;
  632. }
  633.  
  634. //mine temporary post process
  635. technique Shader_C215BE6E
  636. {
  637. pass p0
  638. {
  639. PixelShader = compile ps_3_0 PS_C215BE6E();
  640. }
  641. }
  642.  
  643. //original shader of post processing
  644. technique Shader_ORIGINALPOSTPROCESS
  645. {
  646. pass p0
  647. {
  648.  
  649. PixelShader=
  650. asm
  651. {
  652. //
  653. // Generated by Microsoft (R) HLSL Shader Compiler 9.23.949.2378
  654. //
  655. // Parameters:
  656. //
  657. // sampler2D AdapLumSampler;
  658. // sampler2D BloomSampler;
  659. // float4 ColorCorrect;
  660. // float4 ColorShift;
  661. // float Exposure;
  662. // sampler2D GBufferTextureSampler2;
  663. // sampler2D GBufferTextureSampler3;
  664. // sampler2D HDRSampler;
  665. // sampler2D JitterSampler;
  666. // float PLAYER_MASK;
  667. // sampler2D StencilCopySampler;
  668. // float4 TexelSize;
  669. // float4 ToneMapParams;
  670. // float4 deSatContrastGamma;
  671. // float4 dofBlur;
  672. // float4 dofDist;
  673. // float4 dofProj;
  674. // float gDirectionalMotionBlurLength;
  675. // float4 globalScreenSize;
  676. // row_major float4x4 motionBlurMatrix;
  677. //
  678. //
  679. // Registers:
  680. //
  681. // Name Reg Size
  682. // ---------------------------- ----- ----
  683. // globalScreenSize c44 1
  684. // Exposure c66 1
  685. // motionBlurMatrix c72 4
  686. // TexelSize c76 1
  687. // dofProj c77 1
  688. // dofDist c78 1
  689. // dofBlur c79 1
  690. // gDirectionalMotionBlurLength c80 1
  691. // ToneMapParams c81 1
  692. // deSatContrastGamma c82 1
  693. // ColorCorrect c83 1
  694. // ColorShift c84 1
  695. // PLAYER_MASK c85 1
  696. // GBufferTextureSampler2 s0 1
  697. // GBufferTextureSampler3 s1 1
  698. // HDRSampler s2 1
  699. // BloomSampler s3 1
  700. // AdapLumSampler s4 1
  701. // JitterSampler s5 1
  702. // StencilCopySampler s6 1
  703. //
  704.  
  705. ps_3_0
  706. def c0, 0, 0.212500006, 0.715399981, 0.0720999986
  707. def c1, 0.25, 1, 256, 0
  708. def c2, 0, 2, 4, 8
  709. def c3, 58.1640015, 47.1300011, 0, 0
  710. def c4, -0.5, -1.5, 1.5, 0.5
  711. def c5, 2, -1, 0.125, 0
  712. def c6, 256, 2, 4, 8
  713. def c180, 0.0, 0.0, 0.0, 100.5
  714. def c181, 1.0, 0.0, 0.0, 20.01
  715. def c183, 800.0, 600.0, 0.0, 100.5
  716. defi i0, 7, 0, 0, 0
  717. dcl_texcoord v0.xy
  718. dcl_2d s0
  719. dcl_2d s1
  720. dcl_2d s2
  721. dcl_2d s3
  722. dcl_2d s4
  723. dcl_2d s5
  724. dcl_2d s6
  725. texld r0, v0, s1
  726. add r0.y, -c77.x, c77.y
  727. rcp r0.y, r0.y
  728. mul r0.z, r0.y, c77.y
  729. mul r0.z, r0.z, -c77.x
  730. mad r0.x, c77.y, -r0.y, r0.x
  731. rcp r0.x, r0.x
  732. mul r0.y, r0.z, r0.x
  733. texld r1, v0, s2
  734. texld r2, v0, s3
  735. abs r0.w, c79.w
  736. mov r3, c4
  737. mad r4.xy, c76, r3, v0
  738. texld r4, r4, s2
  739. mad r5.xy, c76, r3.zxzw, v0
  740. texld r5, r5, s2
  741. mad r3.xz, c76.xyyw, r3.wyzw, v0.xyyw
  742. texld r6, r3.xzzw, s2
  743. mad r3.xy, c76, r3.ywzw, v0
  744. texld r7, r3, s2
  745. dp3 r1.w, r4, r4
  746. rcp r1.w, r1.w
  747. cmp r3.xyz, -r1.w, c0.x, r4
  748. dp3 r1.w, r5, r5
  749. rcp r1.w, r1.w
  750. cmp r4.xyz, -r1.w, c0.x, r5
  751. dp3 r1.w, r6, r6
  752. rcp r1.w, r1.w
  753. cmp r5.xyz, -r1.w, c0.x, r6
  754. dp3 r1.w, r7, r7
  755. rcp r1.w, r1.w
  756. cmp r6.xyz, -r1.w, c0.x, r7
  757. dp3 r1.w, r1, r1
  758. rcp r1.w, r1.w
  759. cmp r7.xyz, -r1.w, c0.x, r1
  760. mad r0.x, r0.z, r0.x, -c78.w
  761. mad r0.x, c78.y, -r3.w, r0.x
  762. max r1.w, r0.x, c0.x
  763. rcp r0.x, c78.z
  764. mul r0.x, r1.w, r0.x
  765. lrp r1.w, r0.x, c79.z, c79.y
  766. min r0.x, c79.z, r1.w
  767. dp3 r0.z, r7, c0.yzww
  768. dp3 r8.x, r3, c0.yzww
  769. dp3 r8.y, r4, c0.yzww
  770. dp3 r8.z, r5, c0.yzww
  771. dp3 r8.w, r6, c0.yzww
  772. dp4 r1.w, r8, c1.x
  773. add r8, r8, -r1.w
  774. dp4 r2.w, r8, r8
  775. add r0.z, r0.z, -r1.w
  776. mad r0.z, r0.z, r0.z, -r2.w
  777. mul r0.x, r0.x, r0.x
  778. cmp r0.x, r0.z, c1.y, r0.x
  779. texld r8, v0, s0
  780. mov r8.yz, c1
  781. mad r9, r8.w, -r8.z, c2
  782. cmp r9, r9, c1.y, c1.w
  783. mad r10, r8.w, -c6.x, c6.yzwx
  784. cmp r10, r10, -c1.y, -c1.w
  785. add r9, r9, r10
  786. mul r9, r9, c4.x
  787. dp4 r0.z, r9, c1.y
  788. add r0.z, r0.z, c4.w
  789. rcp r0.z, r0.z
  790. mul r8.xzw, r3.xyyz, r9.x
  791. mad r7.xyz, r7, c4.w, r8.xzww
  792. mad r7.xyz, r4, r9.y, r7
  793. mad r7.xyz, r5, r9.z, r7
  794. mad r7.xyz, r6, r9.w, r7
  795. mul r7.xyz, r0.z, r7
  796. add r0.z, -r0.x, c1.y
  797. mul r1.w, r0.x, c1.x
  798. mul r3.xyz, r3, r1.w
  799. mad r3.xyz, r7, r0.z, r3
  800. mad r3.xyz, r4, r1.w, r3
  801. mad r3.xyz, r5, r1.w, r3
  802. mad r3.xyz, r6, r1.w, r3
  803. mad r4.xyz, v0.yxyw, c5.x, c5.y
  804. mul r0.z, r4.y, c77.z
  805. mul r0.z, r0.y, r0.z
  806. mul r1.w, -r4.x, c77.w
  807. mul r1.w, r0.y, r1.w
  808. mul r5.xyz, r1.w, c73
  809. mad r5.xyz, r0.z, c72, r5
  810. mad r5.xyz, -r0.y, c74, r5
  811. add r5.xyz, r5, c75
  812. mul r0.y, -r5.z, c77.z
  813. rcp r0.y, r0.y
  814. mul r6.x, r5.x, r0.y
  815. mul r0.y, r5.z, c77.w
  816. rcp r0.y, r0.y
  817. mul r6.y, r5.y, r0.y
  818. add r0.yz, -r4, r6.xxyw
  819. mul r0.yz, r0, c80.x
  820. mul r4.xy, r0.yzzw, c5.z
  821. texld r5, v0, s6
  822. add r1.w, r5.x, -c85.x
  823. mul r4.zw, r3.xyxy, c2.w
  824. mad r4.zw, v0.xyxy, c3.xyxy, r4
  825. texld r5, r4.zwzw, s5
  826. add r2.w, r5.x, c4.x
  827. mad r4.zw, r4.xyxy, r2.w, v0.xyxy
  828. mov r5.xyz, r3
  829. mov r2.w, c1.y
  830. mov r3.w, c1.y
  831.  
  832. rep i0
  833. mad r6.xy, r4, r3.w, r4.zwzw
  834. texld r7, r6, s6
  835. add r5.w, r7.x, -c85.x
  836. cmp r5.w, r5.w, c1.w, c1.y
  837. texld r6, r6, s2
  838. mad r5.xyz, r6, r5.w, r5
  839. add r2.w, r2.w, r5.w
  840. add r3.w, r3.w, c1.y
  841. endrep
  842.  
  843. rcp r2.w, r2.w
  844. mul r0.yz, r0, c183.xxyw//c44.xxyw
  845. dp2add r0.y, r0.yzzw, r0.yzzw, c0.x
  846. rsq r0.y, r0.y
  847. rcp r0.y, r0.y
  848. mul r0.y, r0.y, c4.w
  849. add r0.x, r0.x, c1.y
  850. rcp r0.x, r0.x
  851. mul_sat r0.x, r0.y, r0.x
  852. mad r4.xyz, r5, r2.w, -r3
  853. mad r0.xyz, r0.x, r4, r3
  854. cmp r0.xyz, r1.w, r3, r0
  855. cmp r0.xyz, -r0.w, r0, r1
  856.  
  857. texld r1, c0.x, s4
  858. rcp r0.w, r1.x
  859. mul r0.w, r0.w, c81.y
  860. rcp r1.x, r0.w
  861. mul r1.x, r1.x, c81.x
  862. mad r1.xyz, r2, c66.x, -r1.x
  863. max r2.xyz, r1, c0.x
  864. mul r1.xyz, r2, c81.z
  865. mul r1.xyz, r1, c1.x
  866. mad r0.xyz, r0, c66.x, r1
  867. mul r1.xyz, r0.w, r0
  868. dp3 r1.x, r1, c0.yzww
  869. mad r0.xyz, r0, r0.w, -r1.x
  870. mad r0.xyz, c82.x, r0, r1.x
  871. mul r0.w, r1.x, c84.w
  872. mul r1.yzw, r0.w, c84.xxyz
  873. mov_sat r2.x, r0.w
  874. mad r0.xyz, c84, -r0.w, r0
  875. mad r0.xyz, r2.x, r0, r1.yzww
  876. mul r0.xyz, r0, c83
  877. add r0.xyz, r0, r0
  878. mov_sat r1.x, r1.x
  879. add r0.w, -r8.y, c82.z
  880. pow r2.x, r1.x, r0.w
  881. //mul r2.x, r2.x, c181.x
  882. mul oC0.xyz, r0, r2.x
  883. mov oC0.w, c1.y
  884.  
  885. //texld r1, v0, s2
  886. //mul oC0.xyz, r1, c199.z
  887. };
  888. }
  889. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement