Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Projection

A 4×4 matrix for 3D projective transformations.

Description

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 requires less memory.

Used internally as Camera3D's projection matrix.

Note

There are notable differences when using this API with C#. See C# API differences to GDScript for more information.

Properties

Vector4

w

Vector4(0, 0, 0, 1)

Vector4

x

Vector4(1, 0, 0, 0)

Vector4

y

Vector4(0, 1, 0, 0)

Vector4

z

Vector4(0, 0, 1, 0)

Constructors

Projection

Projection ( )

Projection

Projection ( Projection from )

Projection

Projection ( Transform3D from )

Projection

Projection ( Vector4 x_axis, Vector4 y_axis, Vector4 z_axis, Vector4 w_axis )

Methods

Projection

create_depth_correction ( bool flip_y ) static

Projection

create_fit_aabb ( AABB aabb ) static

Projection

create_for_hmd ( int eye, float aspect, float intraocular_dist, float display_width, float display_to_lens, float oversample, float z_near, float z_far ) static

Projection

create_frustum ( float left, float right, float bottom, float top, float z_near, float z_far ) static

Projection

create_frustum_aspect ( float size, float aspect, Vector2 offset, float z_near, float z_far, bool flip_fov=false ) static

Projection

create_light_atlas_rect ( Rect2 rect ) static

Projection

create_orthogonal ( float left, float right, float bottom, float top, float z_near, float z_far ) static

Projection

create_orthogonal_aspect ( float size, float aspect, float z_near, float z_far, bool flip_fov=false ) static

Projection

create_perspective ( float fovy, float aspect, float z_near, float z_far, bool flip_fov=false ) static

Projection

create_perspective_hmd ( float fovy, float aspect, float z_near, float z_far, bool flip_fov, int eye, float intraocular_dist, float convergence_dist ) static

float

determinant ( ) const

Projection

flipped_y ( ) const

float

get_aspect ( ) const

Vector2

get_far_plane_half_extents ( ) const

float

get_fov ( ) const

float

get_fovy ( float fovx, float aspect ) static

float

get_lod_multiplier ( ) const

int

get_pixels_per_meter ( int for_pixel_width ) const

Plane

get_projection_plane ( int plane ) const

Vector2

get_viewport_half_extents ( ) const

float

get_z_far ( ) const

float

get_z_near ( ) const

Projection

inverse ( ) const

bool

is_orthogonal ( ) const

Projection

jitter_offseted ( Vector2 offset ) const

Projection

perspective_znear_adjusted ( float new_znear ) const

Operators

bool

operator != ( Projection right )

Projection

operator * ( Projection right )

Vector4

operator * ( Vector4 right )

bool

operator == ( Projection right )

Vector4

operator [] ( int index )


Constants

PLANE_NEAR = 0

The index value of the projection's near clipping plane.

PLANE_FAR = 1

The index value of the projection's far clipping plane.

PLANE_LEFT = 2

The index value of the projection's left clipping plane.

PLANE_TOP = 3

The index value of the projection's top clipping plane.

PLANE_RIGHT = 4

The index value of the projection's right clipping plane.

PLANE_BOTTOM = 5

The index value of the projection bottom clipping plane.

IDENTITY = Projection(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)

A Projection with no transformation defined. When applied to other data structures, no transformation is performed.

ZERO = Projection(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,