3D projection (4x4 matrix). A 4x4 matrix used for 3D projective transformations. It can represent transformations such as translation, rotation, scaling, shearing, and perspective division. It consists of four [Vector4] columns. For purely linear transformations (translation, rotation, and scale), it is recommended to use [Transform3D], as it is more performant and has a lower memory footprint. Used internally as [Camera3D]'s projection matrix. Constructs a default-initialized [Projection] set to [constant IDENTITY]. Constructs a [Projection] as a copy of the given [Projection]. Constructs a Projection as a copy of the given [Transform3D]. Constructs a Projection from four [Vector4] values (matrix columns). Creates a new [Projection] that projects positions from a depth range of [code]-1[/code] to [code]1[/code] to one that ranges from [code]0[/code] to [code]1[/code], and flips the projected positions vertically, according to [param flip_y]. Creates a new [Projection] that scales a given projection to fit around a given [AABB] in projection space. Creates a new [Projection] for projecting positions onto a head-mounted display with the given X:Y aspect ratio, distance between eyes, display width, distance to lens, oversampling factor, and depth clipping planes. [param eye] creates the projection for the left eye when set to 1, or the right eye when set to 2. Creates a new [Projection] that projects positions in a frustum with the given clipping planes. Creates a new [Projection] that projects positions in a frustum with the given size, X:Y aspect ratio, offset, and clipping planes. [param flip_fov] determines whether the projection's field of view is flipped over its diagonal. Creates a new [Projection] that projects positions into the given [Rect2]. Creates a new [Projection] that projects positions using an orthogonal projection with the given clipping planes. Creates a new [Projection] that projects positions using an orthogonal projection with the given size, X:Y aspect ratio, and clipping planes. [param flip_fov] determines whether the projection's field of view is flipped over its diagonal. Creates a new [Projection] that projects positions using a perspective projection with the given Y-axis field of view (in degrees), X:Y aspect ratio, and clipping planes. [param flip_fov] determines whether the projection's field of view is flipped over its diagonal. Creates a new [Projection] that projects positions using a perspective projection with the given Y-axis field of view (in degrees), X:Y aspect ratio, and clipping distances. The projection is adjusted for a head-mounted display with the given distance between eyes and distance to a point that can be focused on. [param eye] creates the projection for the left eye when set to 1, or the right eye when set to 2. [param flip_fov] determines whether the projection's field of view is flipped over its diagonal. Returns a scalar value that is the signed factor by which areas are scaled by this matrix. If the sign is negative, the matrix flips the orientation of the area. The determinant can be used to calculate the invertibility of a matrix or solve linear systems of equations involving the matrix, among other applications. Returns a copy of this [Projection] with the signs of the values of the Y column flipped. Returns the X:Y aspect ratio of this [Projection]'s viewport. Returns the dimensions of the far clipping plane of the projection, divided by two. Returns the horizontal field of view of the projection (in degrees). Returns the vertical field of view of the projection (in degrees) associated with the given horizontal field of view (in degrees) and aspect ratio. Returns the factor by which the visible level of detail is scaled by this [Projection]. Returns the number of pixels with the given pixel width displayed per meter, after this [Projection] is applied. Returns the clipping plane of this [Projection] whose index is given by [param plane]. [param plane] should be equal to one of [constant PLANE_NEAR], [constant PLANE_FAR], [constant PLANE_LEFT], [constant PLANE_TOP], [constant PLANE_RIGHT], or [constant PLANE_BOTTOM]. Returns the dimensions of the viewport plane that this [Projection] projects positions onto, divided by two. Returns the distance for this [Projection] beyond which positions are clipped. Returns the distance for this [Projection] before which positions are clipped. Returns a [Projection] that performs the inverse of this [Projection]'s projective transformation. Returns [code]true[/code] if this [Projection] performs an orthogonal projection. Returns a [Projection] with the X and Y values from the given [Vector2] added to the first and second values of the final column respectively. Returns a [Projection] with the near clipping distance adjusted to be [param new_znear]. [b]Note:[/b] The original [Projection] must be a perspective projection. The projection matrix's W vector (column 3). Equivalent to array index [code]3[/code]. The projection matrix's X vector (column 0). Equivalent to array index [code]0[/code]. The projection matrix's Y vector (column 1). Equivalent to array index [code]1[/code]. The projection matrix's Z vector (column 2). Equivalent to array index [code]2[/code]. The index value of the projection's near clipping plane. The index value of the projection's far clipping plane. The index value of the projection's left clipping plane. The index value of the projection's top clipping plane. The index value of the projection's right clipping plane. The index value of the projection bottom clipping plane. A [Projection] with no transformation defined. When applied to other data structures, no transformation is performed. A [Projection] with all values initialized to 0. When applied to other data structures, they will be zeroed. Returns [code]true[/code] if the projections are not equal. [b]Note:[/b] Due to floating-point precision errors, this may return [code]true[/code], even if the projections are virtually equal. An [code]is_equal_approx[/code] method may be added in a future version of Godot. Returns a [Projection] that applies the combined transformations of this [Projection] and [param right]. Projects (multiplies) the given [Vector4] by this [Projection] matrix. Returns [code]true[/code] if the projections are equal. [b]Note:[/b] Due to floating-point precision errors, this may return [code]false[/code], even if the projections are virtually equal. An [code]is_equal_approx[/code] method may be added in a future version of Godot. Returns the column of the [Projection] with the given index. Indices are in the following order: x, y, z, w.