code: public Matrix4f pick(float x, float y, float width, float height, int[] viewport, Matrix4f dest) {
          float sx = viewport[2] / width;
          float sy = viewport[3] / height;
          float tx = (viewport[2] + 2.0f * (viewport[0] - x)) / width;
          float ty = (viewport[3] + 2.0f * (viewport[1] - y)) / height;
          dest._m30(m00 * tx + m10 * ty + m30);
          dest._m31(m01 * tx + m11 * ty + m31);
          dest._m32(m02 * tx + m12 * ty + m32);
          dest._m33(m03 * tx + m13 * ty + m33);
          dest._m00(m00 * sx);
          dest._m01(m01 * sx);
          dest._m02(m02 * sx);
          dest._m03(m03 * sx);
          dest._m10(m10 * sy);
          dest._m11(m11 * sy);
          dest._m12(m12 * sy);
          dest._m13(m13 * sy);
          dest._properties(0);
          return dest;
      }
docs: /* (non-Javadoc)
  @see org.joml.Matrix4fc#pick(float, float, float, float, int[], org.joml.Matrix4f)