 ivec2 dtnn = ivec2(POS_MAX);
 int   dmin = LENGTH_SQ(dtnn);
 
-void DTNN(const ivec2 off){
+void DTNN(const in ivec2 off){
   ivec2 dtnn_cur = getDTNN(tex_dtnn, off);
   ivec2 ddxy = dtnn_cur - pos;
   int dcur = LENGTH_SQ(ddxy);

  // 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

}

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.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

