 }
 
 void main(){
+  dtnn = getDTNN(tex_dtnn, jump.yy);
+  ivec2 ddxy = dtnn - pos;
+  dmin = LENGTH_SQ(ddxy);
+  
   DTNN(jump.xx); DTNN(jump.yx); DTNN(jump.zx);
-  DTNN(jump.xy); DTNN(jump.yy); DTNN(jump.zy);
+  DTNN(jump.xy);                DTNN(jump.zy);
   DTNN(jump.xz); DTNN(jump.yz); DTNN(jump.zz);
 
   out_dtnn = dtnn;
 }
 
+// void main(){
+  // DTNN(jump.xx); DTNN(jump.yx); DTNN(jump.zx);
+  // DTNN(jump.xy); DTNN(jump.yy); DTNN(jump.zy);
+  // DTNN(jump.xz); DTNN(jump.yz); DTNN(jump.zz);
+
+  // out_dtnn = dtnn;
+// }
+
 #endif // PASS_DTNN
 

  // bool mask = any(notEqual(texelFetch(tex_mask, pos, 0).rgb, vec3(0.0)));
  // out_pos = mask ? pos : ivec2(POS_MAX);
  
  ivec2 pos = ivec2(gl_FragCoord.xy);
  vec4 xyzw = texelFetch(tex_mask, pos, 0);
  out_pos = (all(equal(xyzw, mask))) ? pos : ivec2(POS_MAX);
}

#endif // PASS_INIT


out ivec2 out_pos;
uniform vec4 mask = vec4(1,1,1,0);
uniform int XOR = 0; // 1 to invert mask
uniform sampler2D	tex_mask;

void main(){
