code: public Vector4d unprojectInv(double winX, double winY, double winZ, int[] viewport, Vector4d dest) {
          double ndcX = (winX-viewport[0])/viewport[2]*2.0-1.0;
          double ndcY = (winY-viewport[1])/viewport[3]*2.0-1.0;
          double ndcZ = winZ+winZ-1.0;
          double invW = 1.0 / (m03 * ndcX + m13 * ndcY + m23 * ndcZ + m33);
          dest.x = (m00 * ndcX + m10 * ndcY + m20 * ndcZ + m30) * invW;
          dest.y = (m01 * ndcX + m11 * ndcY + m21 * ndcZ + m31) * invW;
          dest.z = (m02 * ndcX + m12 * ndcY + m22 * ndcZ + m32) * invW;
          dest.w = 1.0;
          return dest;
      }
docs: /* (non-Javadoc)
  @see org.joml.Matrix4dc#unprojectInv(double, double, double, int[], org.joml.Vector4d)