return {
  summary = 'Set a projection using raw field of view angles.',
  description = [[
    Sets a projection matrix using raw projection angles and clipping planes.

    This can be used for asymmetric or oblique projections.
  ]],
  arguments = {
    left = {
      type = 'number',
      description = 'The left half-angle of the projection, in radians.'
    },
    right = {
      type = 'number',
      description = 'The right half-angle of the projection, in radians.'
    },
    up = {
      type = 'number',
      description = 'The top half-angle of the projection, in radians.'
    },
    down = {
      type = 'number',
      description = 'The bottom half-angle of the projection, in radians.'
    },
    near = {
      type = 'number',
      description = 'The near plane of the projection.'
    },
    far = {
      type = 'number',
      default = '0',
      description = [[
        The far plane.  Zero is a special value that will set an infinite far plane with a reversed
        Z range, which improves depth buffer precision and is the default.
      ]]
    }
  },
  returns = {
    self = {
      type = 'Mat4',
      description = 'The modified matrix.'
    }
  },
  variants = {
    {
      arguments = { 'left', 'right', 'up', 'down', 'near', 'far' },
      returns = { 'self' }
    }
  },
  related = {
    'Mat4:orthographic',
    'Mat4:perspective',
    'Pass:setProjection'
  }
}
