code: public Vector4f project(float x, float y, float z, int[] viewport, Vector4f winCoordsDest) {
          float invW = 1.0f / (m03 * x + m13 * y + m23 * z + m33);
          float nx = (m00 * x + m10 * y + m20 * z + m30) * invW;
          float ny = (m01 * x + m11 * y + m21 * z + m31) * invW;
          float nz = (m02 * x + m12 * y + m22 * z + m32) * invW;
          winCoordsDest.x = (nx*0.5f+0.5f) * viewport[2] + viewport[0];
          winCoordsDest.y = (ny*0.5f+0.5f) * viewport[3] + viewport[1];
          winCoordsDest.z = (1.0f+nz)*0.5f;
          winCoordsDest.w = 1.0f;
          return winCoordsDest;
      }
docs: /* (non-Javadoc)
  @see org.joml.Matrix4fc#project(float, float, float, int[], org.joml.Vector4f)