Advertisement
Guest User

NGU

a guest
Jun 12th, 2017
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.88 KB | None | 0 0
  1. //!HOOK something
  2. //!BIND HOOKED
  3.  
  4. vec4 hook() {
  5.     int x = 0;
  6.     vec4 c[21];
  7.     for (int i=-2; i<=2; i++){
  8.         int min=-2, max=2;
  9.         if(i==-2 || i==2){ min=-1; max=1; }
  10.         for (int j=min; j<=max; j++){
  11.             c[x++] = HOOKED_texOff(vec2(i, j));
  12.         }
  13.     }
  14.  
  15.     vec2 g[21] = vec2[](vec2(0.000088, 0.015019), vec2(0.000451, 0.023792), vec2(0.000088, 0.015019),
  16.                         vec2(0.000088, 0.015019), vec2(0.019740, 0.059912), vec2(0.100843, 0.094907), vec2(0.019740, 0.059912), vec2(0.000088, 0.015019),
  17.                         vec2(0.000451, 0.023792), vec2(0.100843, 0.094907), vec2(0.0, 0.0), vec2(0.100843, 0.094907), vec2(0.000451, 0.023792),
  18.                         vec2(0.000088, 0.015019), vec2(0.019740, 0.059912), vec2(0.100843, 0.094907), vec2(0.019740, 0.059912), vec2(0.000088, 0.015019),
  19.                         vec2(0.000088, 0.015019), vec2(0.000451, 0.023792), vec2(0.000088, 0.015019));
  20.  
  21.     for (x=0; x<21; x++){
  22.             if(x==10) continue;
  23.             vec3 t2 = vec3(0);
  24.             for (int i = 5; i>0; i--){
  25.                 t2.yz = vec2(t2.z) + vec2(-2.0,1.0);
  26.                 t2.x = 0.0;
  27.                 for (int j = 5; j>0; j--){
  28.                     t2.xw = vec2(t2.x) + vec2(1.0,-2.0);
  29.                     vec2 pos = t2.yw * HOOKED_pt + HOOKED_pos;
  30.                     c[x] = c[x] * textureLod(Weight?_raw, pos, 0.0);
  31.                 }
  32.             }
  33.     }
  34.  
  35.     vec2 r[21];
  36.     r[10] = c[10].zw - vec2(0.5);
  37.     vec2 w = (r[10].x>=0.0) ? vec2(r[10].x, 1.0) : vec2(c[10].z, 0.0);
  38.     w.x = w.x * 64.0 + 0.5;
  39.     float f = w.x - fract(w.x);
  40.     w.x = (-abs(f) >= 0) ? 1.0 : 0.0;
  41.  
  42.     vec2 w2;
  43.     for (x=0; x<21; x++){
  44.         if(x==10) continue;
  45.         r[x].x = c[x].z - 0.5;
  46.         w2 = (r[x].x >= 0) ? vec2(1.0,-0.5) : vec2(0);
  47.         w2.y = w2.y + c[x].z;
  48.         w2.y = w2.y * 64.0 + 0.5;
  49.         w2.y = w2.y - fract(w2.y);
  50.         w2.y = f - w2.y;
  51.         w2.y = (-abs(w2.y) >= 0) ? 1.0 : 0.0;
  52.         w2.xy = w.yx + w2.xy;
  53.         w.y = ((-w2.y) >= 0) ? w.y : w2.x;
  54.     }
  55.  
  56.     w.y = clamp(w.y*0.25, 0.0, 1.0);
  57.     for (x=0; x<21; x++){
  58.         c[x].xy = (r[x].x >= 0) ? ( (x==10) ? vec2(c[x].y, f) : c[x].yz ) : vec2(mix(c[x].y, c[x].x, w.y), 0.0);
  59.     }
  60.  
  61.     float sum=0.0;
  62.     for (x=0; x<21; x++)
  63.         sum += c[x].x;
  64.  
  65.     float ms0 = sum * -0.047619 + c[10].x;
  66.     float ms = pow(ms0, 2.0);
  67.     for (x=1; x<21; x++){
  68.         if(x==10) continue;
  69.         ms += pow(sum * -0.047619 + c[x].x, 2.0);
  70.     }
  71.  
  72.     ms = sqrt(ms * 0.047619);
  73.  
  74.     vec3 p = vec3(0.150342, c[10].x * 0.150342, (0.5 - c[10].y >= 0) ? 0.0 : 1.0);
  75.     if(abs(ms0) < ms){
  76.         float h = max(-ms, -0.025490);
  77.         ms = abs(c[0].x-c[10].x) + h;
  78.         vec4 temp;
  79.         temp.wx = (0.5 - c[0].y >= 0) ? vec2(g[0].x, 0.150430) : vec2(g[0].y, 0.165361);
  80.         temp.y = c[0].x * temp.w + p.y;
  81.         temp.z = (0.5 - c[0].y >= 0) ? p.z : (0.5 - c[10].y >= 0) ? 1.0 : 2.0;
  82.         p = (ms >= 0) ? p : temp.xyz;
  83.         for (x=1; x<21; x++){
  84.             if(x==10) continue;
  85.             ms = abs(c[x].x-c[10].x) + h;
  86.             temp.x = (0.5 - c[x].y >= 0) ? g[x].x : g[x].y;
  87.             temp.y = c[x].x * temp.x + p.y;
  88.             temp.x = p.x + temp.x;
  89.             temp.z = (0.5 - c[x].y >= 0) ? p.z : p.z + 1.0;
  90.             p = (ms >= 0) ? p : temp;
  91.         }
  92.     }
  93.  
  94.     float pr = 6.0 - p.z;
  95.     float l = (pr >= 0) ? c[10].x : (1.0 / p.x) * p.y;
  96.     float dn = (pr >= 0) ? 0.0 : (r[10].y >= 0) ? 0.0 : 1.0;
  97.     if (dn != -dn){
  98.         l = 0.5 * p.x * c[10].w * (texture(Random?_tex, Random?_pos).x - 0.5) + l;
  99.     }
  100.  
  101.     vec4 Out = vec4(l, texture(Chroma?_tex, Chroma?_pos).yz - vec2(0.5), c[10].w);
  102.     //Output0.x = dot(vec2(1.0, 1.5748), vec2(Out.xzzw)) + 0.0;
  103.     //Output0.y = dot(vec3(1.0, -0.187324, -0.468124), Out.xyz);
  104.     //Output0.z = dot(vec2(1.0, 1.8556), vec2(Out)) + 0.0;
  105.     //Output0.w = 0.0;
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement