code: function (m) {
          var v = this.array;
          m = m.array;
  
          // Perspective projection
          if (m[15] === 0) {
              var w = -1 / v[2];
              v[0] = m[0] * v[0] * w;
              v[1] = m[5] * v[1] * w;
              v[2] = (m[10] * v[2] + m[14]) * w;
          }
          else {
              v[0] = m[0] * v[0] + m[12];
              v[1] = m[5] * v[1] + m[13];
              v[2] = m[10] * v[2] + m[14];
          }
          this._dirty = true;
  
          return this;
      }
docs: Trasnform self into projection space with m
  @param  {clay.Matrix4} m
  @return {clay.Vector3}