Advertisement
Guest User

Yakuza Kiwami Water PS

a guest
Mar 26th, 2019
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.19 KB | None | 0 0
  1. //Water reflection PS.
  2. // ---- Created with 3Dmigoto v1.3.11 on Fri Aug 03 21:56:26 2018
  3. Texture2D<float4> t5 : register(t5);
  4.  
  5. Texture2D<float4> t4 : register(t4);
  6.  
  7. Texture2D<float4> t3 : register(t3);
  8.  
  9. Texture2D<float4> t2 : register(t2);
  10.  
  11. Texture2D<float4> t1 : register(t1);
  12.  
  13. Texture2D<float4> t0 : register(t0);
  14.  
  15. SamplerState s5_s : register(s5);
  16.  
  17. SamplerState s4_s : register(s4);
  18.  
  19. SamplerState s3_s : register(s3);
  20.  
  21. SamplerState s2_s : register(s2);
  22.  
  23. SamplerState s1_s : register(s1);
  24.  
  25. SamplerState s0_s : register(s0);
  26.  
  27. cbuffer cb9 : register(b9)
  28. {
  29. float4 cb9[16];
  30. }
  31.  
  32. //cbuffer cb13 : register(b13)
  33. //{
  34. // float4 cb13[1];
  35. //}
  36.  
  37.  
  38. // 3Dmigoto declarations
  39. #define cmp -
  40. Texture1D<float4> IniParams : register(t120);
  41. Texture2D<float4> StereoParams : register(t125);
  42.  
  43.  
  44. void main(
  45. float4 v0 : TEXCOORD0,
  46. float4 v1 : TEXCOORD1,
  47. float4 v2 : TEXCOORD2,
  48. float4 v3 : TEXCOORD3,
  49. float4 v4 : TEXCOORD4,
  50. float3 v5 : TEXCOORD5,
  51. out float4 o0 : SV_Target0)
  52. {
  53. float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r20;
  54. uint4 bitmask, uiDest;
  55. float4 fDest;
  56.  
  57. float4 stereo = StereoParams.Load(0);
  58. float4 iniparams = IniParams.Load(0);
  59.  
  60. r0.x = dot(v0.xyz, v0.xyz);
  61. r0.x = rsqrt(r0.x);
  62.  
  63. //Saving depth to a register.
  64. r20.x=r0.x;
  65.  
  66. r0.xyz = v0.xyz * r0.xxx;
  67.  
  68. //Correction using depth and FOV (which comes from a resource). No.
  69. //r0.x+=stereo.x*r20.x*stereo.y*-cb13[0].x;
  70. r0.x-=stereo.x*r20.x*stereo.y*0.5/cb9[0].x;
  71.  
  72. r0.w = t5.Sample(s5_s, v4.xy).x;
  73. r0.w = v1.w * r0.w;
  74. r1.x = t4.Sample(s4_s, v3.zw).w;
  75. r1.x = r1.x * 0.199999988 + 0.800000012;
  76. r1.y = cmp(0 < r0.w);
  77. r1.y = r1.y ? 1.000000 : 0;
  78. r1.x = r1.x * r1.y + -cb9[11].x;
  79. r1.y = cmp(r1.x < 0);
  80. if (r1.y != 0) discard;
  81. r1.x = saturate(cb9[11].y * r1.x);
  82. r1.y = dot(v5.xy, v5.xy);
  83. r1.y = rsqrt(r1.y);
  84. r2.xyzw = v5.xyxy * r1.yyyy;
  85. r2.xyzw = v5.zzzz * r2.xyzw;
  86. r2.xyzw = r2.xyzw * cb9[15].xxyy + v3.xyxy;
  87. r1.yz = t2.Sample(s2_s, r2.xy).xy;
  88. r2.xy = t2.Sample(s2_s, r2.zw).xy;
  89. r2.xy = r2.xy + -r1.yz;
  90. r1.yz = cb9[15].xx * r2.xy + r1.yz;
  91. r1.yz = float2(-0.5,-0.5) + r1.yz;
  92. r2.xyz = cb9[13].xyz * r1.zzz;
  93. r1.yzw = cb9[12].xyz * r1.yyy + r2.xyz;
  94. r1.yzw = v1.xyz + r1.yzw;
  95. r2.x = dot(r1.yzw, r1.yzw);
  96. r2.x = rsqrt(r2.x);
  97. r1.yzw = r2.xxx * r1.yzw;
  98. r2.x = dot(r0.xyz, r1.yzw);
  99. r2.y = r2.x + r2.x;
  100. r0.xyz = r1.yzw * -r2.yyy + r0.xyz;
  101. r1.yzw = float3(64,64,64) * r0.xyz;
  102. r2.yzw = r0.xyz * float3(64,64,64) + v0.xyz;
  103. r3.x = dot(cb9[3].xyz, r2.yzw);
  104. r3.x = min(0, r3.x);
  105. r3.x = v2.x + -r3.x;
  106. r3.y = dot(cb9[4].xyz, r2.yzw);
  107. r3.y = min(0, r3.y);
  108. r3.y = v2.y + -r3.y;
  109. r3.xy = v2.xy / r3.xy;
  110. r3.x = min(r3.x, r3.y);
  111. r3.y = dot(cb9[5].xyz, r2.yzw);
  112. r3.y = min(0, r3.y);
  113. r3.y = v2.z + -r3.y;
  114. r3.y = v2.z / r3.y;
  115. r2.y = dot(cb9[6].xyz, r2.yzw);
  116. r2.y = min(0, r2.y);
  117. r2.y = v2.w + -r2.y;
  118. r2.y = v2.w / r2.y;
  119. r2.y = min(r3.y, r2.y);
  120. r2.y = min(r3.x, r2.y);
  121. r3.xyz = r2.yyy * r1.yzw;
  122. r2.x = 1 + -abs(r2.x);
  123. r2.x = log2(r2.x);
  124. r2.z = cb9[8].z * r2.x;
  125. r2.z = exp2(r2.z);
  126. r2.z = r2.z * cb9[8].y + cb9[8].x;
  127. r2.x = cb9[7].z * r2.x;
  128. r2.x = exp2(r2.x);
  129. r2.x = r2.x * cb9[7].y + cb9[7].x;
  130. r1.x = -cb9[11].z + r1.x;
  131. r1.x = saturate(cb9[11].w * r1.x);
  132. r1.x = r1.x * 0.5 + 0.5;
  133. r2.z = r2.z * r1.x;
  134. r1.x = r2.x * r1.x;
  135. r4.xyzw = r1.yzww * r2.yyyy + v0.xyzz;
  136. r1.yzw = r4.www * float3(10,4.64158869,2.15443468) + -r3.zzz;
  137. r1.yzw = v0.zzz / r1.yzw;
  138. r2.xyw = r3.xyz * r1.yyy;
  139. r5.xyz = r3.xyz * r1.yyy + v0.xyz;
  140. r5.w = 1;
  141. r6.x = dot(cb9[0].xyzw, r5.xyzw);
  142. r6.y = dot(cb9[1].xyzw, r5.xyzw);
  143. r3.w = dot(cb9[2].xyzw, r5.xyzw);
  144. r6.x+=stereo.x*(r3.w-stereo.y)*0.5;
  145. r6.xy = r6.xy / r3.ww;
  146.  
  147.  
  148. r7.xyz = r3.xyz * r1.zzz + v0.xyz;
  149. r7.w = 1;
  150. r8.x = dot(cb9[0].xyzw, r7.xyzw);
  151. r8.y = dot(cb9[1].xyzw, r7.xyzw);
  152. r1.z = dot(cb9[2].xyzw, r7.xyzw);
  153. r8.x+=stereo.x*(r1.z-stereo.y)*0.5;
  154. r6.zw = r8.xy / r1.zz;
  155.  
  156.  
  157. r8.xyz = r3.xyz * r1.www + v0.xyz;
  158. r8.w = 1;
  159. r3.x = dot(cb9[0].xyzw, r8.xyzw);
  160. r3.y = dot(cb9[1].xyzw, r8.xyzw);
  161. r1.z = dot(cb9[2].xyzw, r8.xyzw);
  162. r3.x+=stereo.x*(r1.z-stereo.y)*0.5;
  163. r1.zw = r3.xy / r1.zz;
  164.  
  165.  
  166. r4.w = 1;
  167. r3.x = dot(cb9[0].xyzw, r4.xyzw);
  168. r3.y = dot(cb9[1].xyzw, r4.xyzw);
  169. r3.w = dot(cb9[2].xyzw, r4.xyzw);
  170. r3.x+=stereo.x*(r3.w-stereo.y)*0.5;
  171. r3.xy = r3.xy / r3.ww;
  172.  
  173.  
  174. r3.w = t0.Sample(s0_s, r6.xy).z;
  175. r3.w = sqrt(r3.w);
  176. r3.w = r3.w * -64 + 64.0750732;
  177. r4.w = t0.Sample(s0_s, r6.zw).z;
  178. r4.w = sqrt(r4.w);
  179. r4.w = r4.w * -64 + 64.0750732;
  180. r0.x = saturate(dot(r0.xyz, cb9[9].xyz));
  181. r0.x = log2(r0.x);
  182. r0.x = cb9[9].w * r0.x;
  183. r0.x = exp2(r0.x);
  184. r0.x = r0.x * r1.x;
  185. r6.xyz = cb9[10].xyz * r0.xxx;
  186. r0.y = cmp(r3.w < -r5.z);
  187. r0.z = 0.100000001 + -v0.z;
  188. r5.w = -v0.z + -r0.z;
  189. r1.y = r3.z * r1.y + r3.w;
  190. r0.z = r1.y + -r0.z;
  191. r0.z = r5.w / r0.z;
  192. r9.xyz = r0.zzz * r2.xyw + v0.xyz;
  193. r9.w = 1;
  194. r2.x = dot(cb9[0].xyzw, r9.xyzw);
  195. r2.y = dot(cb9[1].xyzw, r9.xyzw);
  196. r0.z = dot(cb9[2].xyzw, r9.xyzw);
  197. r2.x+=stereo.x*(r0.z-stereo.y)*0.5;
  198. r2.xy = r2.xy / r0.zz;
  199.  
  200.  
  201. r9.xyzw = t3.Sample(s3_s, r2.xy).xyzw;
  202. r2.xyw = t1.Sample(s1_s, r2.xy).xyz;
  203. r0.z = t0.Sample(s0_s, r1.zw).z;
  204. r0.z = sqrt(r0.z);
  205. r0.z = r0.z * -64 + 64.0750732;
  206. r1.y = -r5.z + -r3.w;
  207. r10.xyzw = r7.zxyz + -r5.zxyz;
  208. r1.z = r10.x + r4.w;
  209. r1.z = r1.z + -r3.w;
  210. r1.y = r1.y / r1.z;
  211. r5.xyz = r1.yyy * r10.yzw + r5.xyz;
  212. r5.w = 1;
  213. r10.x = dot(cb9[0].xyzw, r5.xyzw);
  214. r10.y = dot(cb9[1].xyzw, r5.xyzw);
  215. r1.y = dot(cb9[2].xyzw, r5.xyzw);
  216. r10.x+=stereo.x*(r1.y-stereo.y)*0.5;
  217. r1.yz = r10.xy / r1.yy;
  218.  
  219.  
  220. r5.xyzw = t3.Sample(s3_s, r1.yz).xyzw;
  221. r1.yzw = t1.Sample(s1_s, r1.yz).xyz;
  222. r3.x = t0.Sample(s0_s, r3.xy).z;
  223. r3.x = sqrt(r3.x);
  224. r3.x = r3.x * -64 + 64.0750732;
  225. r3.y = -r7.z + -r4.w;
  226. r10.xyzw = r8.zxyz + -r7.zxyz;
  227. r3.z = r10.x + r0.z;
  228. r3.z = r3.z + -r4.w;
  229. r3.y = r3.y / r3.z;
  230. r10.xyz = r3.yyy * r10.yzw + r7.xyz;
  231. r10.w = 1;
  232. r7.x = dot(cb9[0].xyzw, r10.xyzw);
  233. r7.y = dot(cb9[1].xyzw, r10.xyzw);
  234. r3.y = dot(cb9[2].xyzw, r10.xyzw);
  235. r7.x+=stereo.x*(r3.y-stereo.y)*0.5;
  236. r3.yz = r7.xy / r3.yy;
  237.  
  238.  
  239. r10.xyzw = t3.Sample(s3_s, r3.yz).xyzw;
  240. r3.yzw = t1.Sample(s1_s, r3.yz).xyz;
  241. r6.w = -r8.z + -r0.z;
  242. r11.xyzw = -r8.zxyz + r4.zxyz;
  243. r4.x = r11.x + r3.x;
  244. r4.x = r4.x + -r0.z;
  245. r4.x = r6.w / r4.x;
  246. r11.xyz = r4.xxx * r11.yzw + r8.xyz;
  247. r11.w = 1;
  248. r4.x = dot(cb9[0].xyzw, r11.xyzw);
  249. r4.y = dot(cb9[1].xyzw, r11.xyzw);
  250. r6.w = dot(cb9[2].xyzw, r11.xyzw);
  251. r4.x+=stereo.x*(r6.w-stereo.y)*0.5;
  252. r4.xy = r4.xy / r6.ww;
  253.  
  254.  
  255. r11.xyzw = t3.Sample(s3_s, r4.xy).xyzw;
  256. r7.xyw = t1.Sample(s1_s, r4.xy).xyz;
  257. if (r0.y != 0) {
  258. r2.xyw = r2.xyw * r1.xxx;
  259. r2.xyw = r9.xyz * r2.zzz + r2.xyw;
  260. r2.xyw = -cb9[10].xyz * r0.xxx + r2.xyw;
  261. r6.xyz = r9.www * r2.xyw + r6.xyz;
  262. } else {
  263. r0.y = cmp(r4.w < -r7.z);
  264. if (r0.y != 0) {
  265. r1.yzw = r1.yzw * r1.xxx;
  266. r1.yzw = r5.xyz * r2.zzz + r1.yzw;
  267. r1.yzw = -cb9[10].xyz * r0.xxx + r1.yzw;
  268. r6.xyz = r5.www * r1.yzw + r6.xyz;
  269. } else {
  270. r0.y = cmp(r0.z < -r8.z);
  271. if (r0.y != 0) {
  272. r1.yzw = r3.yzw * r1.xxx;
  273. r1.yzw = r10.xyz * r2.zzz + r1.yzw;
  274. r1.yzw = -cb9[10].xyz * r0.xxx + r1.yzw;
  275. r6.xyz = r10.www * r1.yzw + r6.xyz;
  276. } else {
  277. r0.y = cmp(r3.x < -r4.z);
  278. if (r0.y != 0) {
  279. r1.xyz = r7.xyw * r1.xxx;
  280. r1.xyz = r11.xyz * r2.zzz + r1.xyz;
  281. r0.xyz = -cb9[10].xyz * r0.xxx + r1.xyz;
  282. r6.xyz = r11.www * r0.xyz + r6.xyz;
  283. }
  284. }
  285. }
  286. }
  287. o0.xyz = r6.xyz * r0.www;
  288. o0.w = cb9[8].w * r0.w;
  289. return;
  290. }
  291.  
  292. /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  293. //
  294. // Generated by Microsoft (R) D3D Shader Disassembler
  295. //
  296. // using 3Dmigoto v1.3.11 on Fri Aug 03 21:56:26 2018
  297. //
  298. //
  299. // Input signature:
  300. //
  301. // Name Index Mask Register SysValue Format Used
  302. // -------------------- ----- ------ -------- -------- ------- ------
  303. // TEXCOORD 0 xyz 0 NONE float xyz
  304. // TEXCOORD 1 xyzw 1 NONE float xyzw
  305. // TEXCOORD 2 xyzw 2 NONE float xyzw
  306. // TEXCOORD 3 xyzw 3 NONE float xyzw
  307. // TEXCOORD 4 xy 4 NONE float xy
  308. // TEXCOORD 5 xyz 5 NONE float xyz
  309. //
  310. //
  311. // Output signature:
  312. //
  313. // Name Index Mask Register SysValue Format Used
  314. // -------------------- ----- ------ -------- -------- ------- ------
  315. // SV_Target 0 xyzw 0 TARGET float xyzw
  316. //
  317. ps_5_0
  318. dcl_globalFlags refactoringAllowed
  319. dcl_constantbuffer cb9[16], immediateIndexed
  320. dcl_sampler s0, mode_default
  321. dcl_sampler s1, mode_default
  322. dcl_sampler s2, mode_default
  323. dcl_sampler s3, mode_default
  324. dcl_sampler s4, mode_default
  325. dcl_sampler s5, mode_default
  326. dcl_resource_texture2d (float,float,float,float) t0
  327. dcl_resource_texture2d (float,float,float,float) t1
  328. dcl_resource_texture2d (float,float,float,float) t2
  329. dcl_resource_texture2d (float,float,float,float) t3
  330. dcl_resource_texture2d (float,float,float,float) t4
  331. dcl_resource_texture2d (float,float,float,float) t5
  332. dcl_input_ps linear v0.xyz
  333. dcl_input_ps linear v1.xyzw
  334. dcl_input_ps linear v2.xyzw
  335. dcl_input_ps linear v3.xyzw
  336. dcl_input_ps linear v4.xy
  337. dcl_input_ps linear v5.xyz
  338. dcl_output o0.xyzw
  339. dcl_temps 12
  340. dp3 r0.x, v0.xyzx, v0.xyzx
  341. rsq r0.x, r0.x
  342. mul r0.xyz, r0.xxxx, v0.xyzx
  343. sample_indexable(texture2d)(float,float,float,float) r0.w, v4.xyxx, t5.yzwx, s5
  344. mul r0.w, r0.w, v1.w
  345. sample_indexable(texture2d)(float,float,float,float) r1.x, v3.zwzz, t4.wxyz, s4
  346. mad r1.x, r1.x, l(0.199999988), l(0.800000)
  347. lt r1.y, l(0.000000), r0.w
  348. and r1.y, r1.y, l(0x3f800000)
  349. mad r1.x, r1.x, r1.y, -cb9[11].x
  350. lt r1.y, r1.x, l(0.000000)
  351. discard_nz r1.y
  352. mul_sat r1.x, r1.x, cb9[11].y
  353. dp2 r1.y, v5.xyxx, v5.xyxx
  354. rsq r1.y, r1.y
  355. mul r2.xyzw, r1.yyyy, v5.xyxy
  356. mul r2.xyzw, r2.xyzw, v5.zzzz
  357. mad r2.xyzw, r2.xyzw, cb9[15].xxyy, v3.xyxy
  358. sample_indexable(texture2d)(float,float,float,float) r1.yz, r2.xyxx, t2.zxyw, s2
  359. sample_indexable(texture2d)(float,float,float,float) r2.xy, r2.zwzz, t2.xyzw, s2
  360. add r2.xy, -r1.yzyy, r2.xyxx
  361. mad r1.yz, cb9[15].xxxx, r2.xxyx, r1.yyzy
  362. add r1.yz, r1.yyzy, l(0.000000, -0.500000, -0.500000, 0.000000)
  363. mul r2.xyz, r1.zzzz, cb9[13].xyzx
  364. mad r1.yzw, cb9[12].xxyz, r1.yyyy, r2.xxyz
  365. add r1.yzw, r1.yyzw, v1.xxyz
  366. dp3 r2.x, r1.yzwy, r1.yzwy
  367. rsq r2.x, r2.x
  368. mul r1.yzw, r1.yyzw, r2.xxxx
  369. dp3 r2.x, r0.xyzx, r1.yzwy
  370. add r2.y, r2.x, r2.x
  371. mad r0.xyz, r1.yzwy, -r2.yyyy, r0.xyzx
  372. mul r1.yzw, r0.xxyz, l(0.000000, 64.000000, 64.000000, 64.000000)
  373. mad r2.yzw, r0.xxyz, l(0.000000, 64.000000, 64.000000, 64.000000), v0.xxyz
  374. dp3 r3.x, cb9[3].xyzx, r2.yzwy
  375. min r3.x, r3.x, l(0.000000)
  376. add r3.x, -r3.x, v2.x
  377. dp3 r3.y, cb9[4].xyzx, r2.yzwy
  378. min r3.y, r3.y, l(0.000000)
  379. add r3.y, -r3.y, v2.y
  380. div r3.xy, v2.xyxx, r3.xyxx
  381. min r3.x, r3.y, r3.x
  382. dp3 r3.y, cb9[5].xyzx, r2.yzwy
  383. min r3.y, r3.y, l(0.000000)
  384. add r3.y, -r3.y, v2.z
  385. div r3.y, v2.z, r3.y
  386. dp3 r2.y, cb9[6].xyzx, r2.yzwy
  387. min r2.y, r2.y, l(0.000000)
  388. add r2.y, -r2.y, v2.w
  389. div r2.y, v2.w, r2.y
  390. min r2.y, r2.y, r3.y
  391. min r2.y, r2.y, r3.x
  392. mul r3.xyz, r1.yzwy, r2.yyyy
  393. add r2.x, -|r2.x|, l(1.000000)
  394. log r2.x, r2.x
  395. mul r2.z, r2.x, cb9[8].z
  396. exp r2.z, r2.z
  397. mad r2.z, r2.z, cb9[8].y, cb9[8].x
  398. mul r2.x, r2.x, cb9[7].z
  399. exp r2.x, r2.x
  400. mad r2.x, r2.x, cb9[7].y, cb9[7].x
  401. add r1.x, r1.x, -cb9[11].z
  402. mul_sat r1.x, r1.x, cb9[11].w
  403. mad r1.x, r1.x, l(0.500000), l(0.500000)
  404. mul r2.z, r1.x, r2.z
  405. mul r1.x, r1.x, r2.x
  406. mad r4.xyzw, r1.yzww, r2.yyyy, v0.xyzz
  407. mad r1.yzw, r4.wwww, l(0.000000, 10.000000, 4.64158869, 2.15443468), -r3.zzzz
  408. div r1.yzw, v0.zzzz, r1.yyzw
  409. mul r2.xyw, r1.yyyy, r3.xyxz
  410. mad r5.xyz, r3.xyzx, r1.yyyy, v0.xyzx
  411. mov r5.w, l(1.000000)
  412. dp4 r6.x, cb9[0].xyzw, r5.xyzw
  413. dp4 r6.y, cb9[1].xyzw, r5.xyzw
  414. dp4 r3.w, cb9[2].xyzw, r5.xyzw
  415. div r6.xy, r6.xyxx, r3.wwww
  416. mad r7.xyz, r3.xyzx, r1.zzzz, v0.xyzx
  417. mov r7.w, l(1.000000)
  418. dp4 r8.x, cb9[0].xyzw, r7.xyzw
  419. dp4 r8.y, cb9[1].xyzw, r7.xyzw
  420. dp4 r1.z, cb9[2].xyzw, r7.xyzw
  421. div r6.zw, r8.xxxy, r1.zzzz
  422. mad r8.xyz, r3.xyzx, r1.wwww, v0.xyzx
  423. mov r8.w, l(1.000000)
  424. dp4 r3.x, cb9[0].xyzw, r8.xyzw
  425. dp4 r3.y, cb9[1].xyzw, r8.xyzw
  426. dp4 r1.z, cb9[2].xyzw, r8.xyzw
  427. div r1.zw, r3.xxxy, r1.zzzz
  428. mov r4.w, l(1.000000)
  429. dp4 r3.x, cb9[0].xyzw, r4.xyzw
  430. dp4 r3.y, cb9[1].xyzw, r4.xyzw
  431. dp4 r3.w, cb9[2].xyzw, r4.xyzw
  432. div r3.xy, r3.xyxx, r3.wwww
  433. sample_indexable(texture2d)(float,float,float,float) r3.w, r6.xyxx, t0.xywz, s0
  434. sqrt r3.w, r3.w
  435. mad r3.w, r3.w, l(-64.000000), l(64.075073)
  436. sample_indexable(texture2d)(float,float,float,float) r4.w, r6.zwzz, t0.xywz, s0
  437. sqrt r4.w, r4.w
  438. mad r4.w, r4.w, l(-64.000000), l(64.075073)
  439. dp3_sat r0.x, r0.xyzx, cb9[9].xyzx
  440. log r0.x, r0.x
  441. mul r0.x, r0.x, cb9[9].w
  442. exp r0.x, r0.x
  443. mul r0.x, r1.x, r0.x
  444. mul r6.xyz, r0.xxxx, cb9[10].xyzx
  445. lt r0.y, r3.w, -r5.z
  446. add r0.z, -v0.z, l(0.100000)
  447. add r5.w, -r0.z, -v0.z
  448. mad r1.y, r3.z, r1.y, r3.w
  449. add r0.z, -r0.z, r1.y
  450. div r0.z, r5.w, r0.z
  451. mad r9.xyz, r0.zzzz, r2.xywx, v0.xyzx
  452. mov r9.w, l(1.000000)
  453. dp4 r2.x, cb9[0].xyzw, r9.xyzw
  454. dp4 r2.y, cb9[1].xyzw, r9.xyzw
  455. dp4 r0.z, cb9[2].xyzw, r9.xyzw
  456. div r2.xy, r2.xyxx, r0.zzzz
  457. sample_indexable(texture2d)(float,float,float,float) r9.xyzw, r2.xyxx, t3.xyzw, s3
  458. sample_indexable(texture2d)(float,float,float,float) r2.xyw, r2.xyxx, t1.xywz, s1
  459. sample_indexable(texture2d)(float,float,float,float) r0.z, r1.zwzz, t0.xyzw, s0
  460. sqrt r0.z, r0.z
  461. mad r0.z, r0.z, l(-64.000000), l(64.075073)
  462. add r1.y, -r3.w, -r5.z
  463. add r10.xyzw, -r5.zxyz, r7.zxyz
  464. add r1.z, r4.w, r10.x
  465. add r1.z, -r3.w, r1.z
  466. div r1.y, r1.y, r1.z
  467. mad r5.xyz, r1.yyyy, r10.yzwy, r5.xyzx
  468. mov r5.w, l(1.000000)
  469. dp4 r10.x, cb9[0].xyzw, r5.xyzw
  470. dp4 r10.y, cb9[1].xyzw, r5.xyzw
  471. dp4 r1.y, cb9[2].xyzw, r5.xyzw
  472. div r1.yz, r10.xxyx, r1.yyyy
  473. sample_indexable(texture2d)(float,float,float,float) r5.xyzw, r1.yzyy, t3.xyzw, s3
  474. sample_indexable(texture2d)(float,float,float,float) r1.yzw, r1.yzyy, t1.wxyz, s1
  475. sample_indexable(texture2d)(float,float,float,float) r3.x, r3.xyxx, t0.zxyw, s0
  476. sqrt r3.x, r3.x
  477. mad r3.x, r3.x, l(-64.000000), l(64.075073)
  478. add r3.y, -r4.w, -r7.z
  479. add r10.xyzw, -r7.zxyz, r8.zxyz
  480. add r3.z, r0.z, r10.x
  481. add r3.z, -r4.w, r3.z
  482. div r3.y, r3.y, r3.z
  483. mad r10.xyz, r3.yyyy, r10.yzwy, r7.xyzx
  484. mov r10.w, l(1.000000)
  485. dp4 r7.x, cb9[0].xyzw, r10.xyzw
  486. dp4 r7.y, cb9[1].xyzw, r10.xyzw
  487. dp4 r3.y, cb9[2].xyzw, r10.xyzw
  488. div r3.yz, r7.xxyx, r3.yyyy
  489. sample_indexable(texture2d)(float,float,float,float) r10.xyzw, r3.yzyy, t3.xyzw, s3
  490. sample_indexable(texture2d)(float,float,float,float) r3.yzw, r3.yzyy, t1.wxyz, s1
  491. add r6.w, -r0.z, -r8.z
  492. add r11.xyzw, r4.zxyz, -r8.zxyz
  493. add r4.x, r3.x, r11.x
  494. add r4.x, -r0.z, r4.x
  495. div r4.x, r6.w, r4.x
  496. mad r11.xyz, r4.xxxx, r11.yzwy, r8.xyzx
  497. mov r11.w, l(1.000000)
  498. dp4 r4.x, cb9[0].xyzw, r11.xyzw
  499. dp4 r4.y, cb9[1].xyzw, r11.xyzw
  500. dp4 r6.w, cb9[2].xyzw, r11.xyzw
  501. div r4.xy, r4.xyxx, r6.wwww
  502. sample_indexable(texture2d)(float,float,float,float) r11.xyzw, r4.xyxx, t3.xyzw, s3
  503. sample_indexable(texture2d)(float,float,float,float) r7.xyw, r4.xyxx, t1.xywz, s1
  504. if_nz r0.y
  505. mul r2.xyw, r1.xxxx, r2.xyxw
  506. mad r2.xyw, r9.xyxz, r2.zzzz, r2.xyxw
  507. mad r2.xyw, -cb9[10].xyxz, r0.xxxx, r2.xyxw
  508. mad r6.xyz, r9.wwww, r2.xywx, r6.xyzx
  509. else
  510. lt r0.y, r4.w, -r7.z
  511. if_nz r0.y
  512. mul r1.yzw, r1.xxxx, r1.yyzw
  513. mad r1.yzw, r5.xxyz, r2.zzzz, r1.yyzw
  514. mad r1.yzw, -cb9[10].xxyz, r0.xxxx, r1.yyzw
  515. mad r6.xyz, r5.wwww, r1.yzwy, r6.xyzx
  516. else
  517. lt r0.y, r0.z, -r8.z
  518. if_nz r0.y
  519. mul r1.yzw, r1.xxxx, r3.yyzw
  520. mad r1.yzw, r10.xxyz, r2.zzzz, r1.yyzw
  521. mad r1.yzw, -cb9[10].xxyz, r0.xxxx, r1.yyzw
  522. mad r6.xyz, r10.wwww, r1.yzwy, r6.xyzx
  523. else
  524. lt r0.y, r3.x, -r4.z
  525. if_nz r0.y
  526. mul r1.xyz, r1.xxxx, r7.xywx
  527. mad r1.xyz, r11.xyzx, r2.zzzz, r1.xyzx
  528. mad r0.xyz, -cb9[10].xyzx, r0.xxxx, r1.xyzx
  529. mad r6.xyz, r11.wwww, r0.xyzx, r6.xyzx
  530. endif
  531. endif
  532. endif
  533. endif
  534. mul o0.xyz, r0.wwww, r6.xyzx
  535. mul o0.w, r0.w, cb9[8].w
  536. ret
  537. // Approximately 0 instruction slots used
  538.  
  539. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement