2
0

class_projection.rst 49 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736
  1. :github_url: hide
  2. .. DO NOT EDIT THIS FILE!!!
  3. .. Generated automatically from Godot engine sources.
  4. .. Generator: https://github.com/godotengine/godot/tree/master/doc/tools/make_rst.py.
  5. .. XML source: https://github.com/godotengine/godot/tree/master/doc/classes/Projection.xml.
  6. .. _class_Projection:
  7. Projection
  8. ==========
  9. A 4×4 matrix for 3D projective transformations.
  10. .. rst-class:: classref-introduction-group
  11. Description
  12. -----------
  13. A 4×4 matrix used for 3D projective transformations. It can represent transformations such as translation, rotation, scaling, shearing, and perspective division. It consists of four :ref:`Vector4<class_Vector4>` columns.
  14. For purely linear transformations (translation, rotation, and scale), it is recommended to use :ref:`Transform3D<class_Transform3D>`, as it is more performant and requires less memory.
  15. Used internally as :ref:`Camera3D<class_Camera3D>`'s projection matrix.
  16. .. note::
  17. There are notable differences when using this API with C#. See :ref:`doc_c_sharp_differences` for more information.
  18. .. rst-class:: classref-reftable-group
  19. Properties
  20. ----------
  21. .. table::
  22. :widths: auto
  23. +-------------------------------+---------------------------------------+-------------------------+
  24. | :ref:`Vector4<class_Vector4>` | :ref:`w<class_Projection_property_w>` | ``Vector4(0, 0, 0, 1)`` |
  25. +-------------------------------+---------------------------------------+-------------------------+
  26. | :ref:`Vector4<class_Vector4>` | :ref:`x<class_Projection_property_x>` | ``Vector4(1, 0, 0, 0)`` |
  27. +-------------------------------+---------------------------------------+-------------------------+
  28. | :ref:`Vector4<class_Vector4>` | :ref:`y<class_Projection_property_y>` | ``Vector4(0, 1, 0, 0)`` |
  29. +-------------------------------+---------------------------------------+-------------------------+
  30. | :ref:`Vector4<class_Vector4>` | :ref:`z<class_Projection_property_z>` | ``Vector4(0, 0, 1, 0)`` |
  31. +-------------------------------+---------------------------------------+-------------------------+
  32. .. rst-class:: classref-reftable-group
  33. Constructors
  34. ------------
  35. .. table::
  36. :widths: auto
  37. +-------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  38. | :ref:`Projection<class_Projection>` | :ref:`Projection<class_Projection_constructor_Projection>`\ (\ ) |
  39. +-------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  40. | :ref:`Projection<class_Projection>` | :ref:`Projection<class_Projection_constructor_Projection>`\ (\ from\: :ref:`Projection<class_Projection>`\ ) |
  41. +-------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  42. | :ref:`Projection<class_Projection>` | :ref:`Projection<class_Projection_constructor_Projection>`\ (\ from\: :ref:`Transform3D<class_Transform3D>`\ ) |
  43. +-------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  44. | :ref:`Projection<class_Projection>` | :ref:`Projection<class_Projection_constructor_Projection>`\ (\ x_axis\: :ref:`Vector4<class_Vector4>`, y_axis\: :ref:`Vector4<class_Vector4>`, z_axis\: :ref:`Vector4<class_Vector4>`, w_axis\: :ref:`Vector4<class_Vector4>`\ ) |
  45. +-------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  46. .. rst-class:: classref-reftable-group
  47. Methods
  48. -------
  49. .. table::
  50. :widths: auto
  51. +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  52. | :ref:`Projection<class_Projection>` | :ref:`create_depth_correction<class_Projection_method_create_depth_correction>`\ (\ flip_y\: :ref:`bool<class_bool>`\ ) |static| |
  53. +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  54. | :ref:`Projection<class_Projection>` | :ref:`create_fit_aabb<class_Projection_method_create_fit_aabb>`\ (\ aabb\: :ref:`AABB<class_AABB>`\ ) |static| |
  55. +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  56. | :ref:`Projection<class_Projection>` | :ref:`create_for_hmd<class_Projection_method_create_for_hmd>`\ (\ eye\: :ref:`int<class_int>`, aspect\: :ref:`float<class_float>`, intraocular_dist\: :ref:`float<class_float>`, display_width\: :ref:`float<class_float>`, display_to_lens\: :ref:`float<class_float>`, oversample\: :ref:`float<class_float>`, z_near\: :ref:`float<class_float>`, z_far\: :ref:`float<class_float>`\ ) |static| |
  57. +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  58. | :ref:`Projection<class_Projection>` | :ref:`create_frustum<class_Projection_method_create_frustum>`\ (\ left\: :ref:`float<class_float>`, right\: :ref:`float<class_float>`, bottom\: :ref:`float<class_float>`, top\: :ref:`float<class_float>`, z_near\: :ref:`float<class_float>`, z_far\: :ref:`float<class_float>`\ ) |static| |
  59. +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  60. | :ref:`Projection<class_Projection>` | :ref:`create_frustum_aspect<class_Projection_method_create_frustum_aspect>`\ (\ size\: :ref:`float<class_float>`, aspect\: :ref:`float<class_float>`, offset\: :ref:`Vector2<class_Vector2>`, z_near\: :ref:`float<class_float>`, z_far\: :ref:`float<class_float>`, flip_fov\: :ref:`bool<class_bool>` = false\ ) |static| |
  61. +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  62. | :ref:`Projection<class_Projection>` | :ref:`create_light_atlas_rect<class_Projection_method_create_light_atlas_rect>`\ (\ rect\: :ref:`Rect2<class_Rect2>`\ ) |static| |
  63. +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  64. | :ref:`Projection<class_Projection>` | :ref:`create_orthogonal<class_Projection_method_create_orthogonal>`\ (\ left\: :ref:`float<class_float>`, right\: :ref:`float<class_float>`, bottom\: :ref:`float<class_float>`, top\: :ref:`float<class_float>`, z_near\: :ref:`float<class_float>`, z_far\: :ref:`float<class_float>`\ ) |static| |
  65. +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  66. | :ref:`Projection<class_Projection>` | :ref:`create_orthogonal_aspect<class_Projection_method_create_orthogonal_aspect>`\ (\ size\: :ref:`float<class_float>`, aspect\: :ref:`float<class_float>`, z_near\: :ref:`float<class_float>`, z_far\: :ref:`float<class_float>`, flip_fov\: :ref:`bool<class_bool>` = false\ ) |static| |
  67. +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  68. | :ref:`Projection<class_Projection>` | :ref:`create_perspective<class_Projection_method_create_perspective>`\ (\ fovy\: :ref:`float<class_float>`, aspect\: :ref:`float<class_float>`, z_near\: :ref:`float<class_float>`, z_far\: :ref:`float<class_float>`, flip_fov\: :ref:`bool<class_bool>` = false\ ) |static| |
  69. +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  70. | :ref:`Projection<class_Projection>` | :ref:`create_perspective_hmd<class_Projection_method_create_perspective_hmd>`\ (\ fovy\: :ref:`float<class_float>`, aspect\: :ref:`float<class_float>`, z_near\: :ref:`float<class_float>`, z_far\: :ref:`float<class_float>`, flip_fov\: :ref:`bool<class_bool>`, eye\: :ref:`int<class_int>`, intraocular_dist\: :ref:`float<class_float>`, convergence_dist\: :ref:`float<class_float>`\ ) |static| |
  71. +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  72. | :ref:`float<class_float>` | :ref:`determinant<class_Projection_method_determinant>`\ (\ ) |const| |
  73. +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  74. | :ref:`Projection<class_Projection>` | :ref:`flipped_y<class_Projection_method_flipped_y>`\ (\ ) |const| |
  75. +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  76. | :ref:`float<class_float>` | :ref:`get_aspect<class_Projection_method_get_aspect>`\ (\ ) |const| |
  77. +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  78. | :ref:`Vector2<class_Vector2>` | :ref:`get_far_plane_half_extents<class_Projection_method_get_far_plane_half_extents>`\ (\ ) |const| |
  79. +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  80. | :ref:`float<class_float>` | :ref:`get_fov<class_Projection_method_get_fov>`\ (\ ) |const| |
  81. +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  82. | :ref:`float<class_float>` | :ref:`get_fovy<class_Projection_method_get_fovy>`\ (\ fovx\: :ref:`float<class_float>`, aspect\: :ref:`float<class_float>`\ ) |static| |
  83. +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  84. | :ref:`float<class_float>` | :ref:`get_lod_multiplier<class_Projection_method_get_lod_multiplier>`\ (\ ) |const| |
  85. +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  86. | :ref:`int<class_int>` | :ref:`get_pixels_per_meter<class_Projection_method_get_pixels_per_meter>`\ (\ for_pixel_width\: :ref:`int<class_int>`\ ) |const| |
  87. +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  88. | :ref:`Plane<class_Plane>` | :ref:`get_projection_plane<class_Projection_method_get_projection_plane>`\ (\ plane\: :ref:`int<class_int>`\ ) |const| |
  89. +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  90. | :ref:`Vector2<class_Vector2>` | :ref:`get_viewport_half_extents<class_Projection_method_get_viewport_half_extents>`\ (\ ) |const| |
  91. +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  92. | :ref:`float<class_float>` | :ref:`get_z_far<class_Projection_method_get_z_far>`\ (\ ) |const| |
  93. +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  94. | :ref:`float<class_float>` | :ref:`get_z_near<class_Projection_method_get_z_near>`\ (\ ) |const| |
  95. +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  96. | :ref:`Projection<class_Projection>` | :ref:`inverse<class_Projection_method_inverse>`\ (\ ) |const| |
  97. +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  98. | :ref:`bool<class_bool>` | :ref:`is_orthogonal<class_Projection_method_is_orthogonal>`\ (\ ) |const| |
  99. +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  100. | :ref:`Projection<class_Projection>` | :ref:`jitter_offseted<class_Projection_method_jitter_offseted>`\ (\ offset\: :ref:`Vector2<class_Vector2>`\ ) |const| |
  101. +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  102. | :ref:`Projection<class_Projection>` | :ref:`perspective_znear_adjusted<class_Projection_method_perspective_znear_adjusted>`\ (\ new_znear\: :ref:`float<class_float>`\ ) |const| |
  103. +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  104. .. rst-class:: classref-reftable-group
  105. Operators
  106. ---------
  107. .. table::
  108. :widths: auto
  109. +-------------------------------------+-----------------------------------------------------------------------------------------------------------------+
  110. | :ref:`bool<class_bool>` | :ref:`operator !=<class_Projection_operator_neq_Projection>`\ (\ right\: :ref:`Projection<class_Projection>`\ ) |
  111. +-------------------------------------+-----------------------------------------------------------------------------------------------------------------+
  112. | :ref:`Projection<class_Projection>` | :ref:`operator *<class_Projection_operator_mul_Projection>`\ (\ right\: :ref:`Projection<class_Projection>`\ ) |
  113. +-------------------------------------+-----------------------------------------------------------------------------------------------------------------+
  114. | :ref:`Vector4<class_Vector4>` | :ref:`operator *<class_Projection_operator_mul_Vector4>`\ (\ right\: :ref:`Vector4<class_Vector4>`\ ) |
  115. +-------------------------------------+-----------------------------------------------------------------------------------------------------------------+
  116. | :ref:`bool<class_bool>` | :ref:`operator ==<class_Projection_operator_eq_Projection>`\ (\ right\: :ref:`Projection<class_Projection>`\ ) |
  117. +-------------------------------------+-----------------------------------------------------------------------------------------------------------------+
  118. | :ref:`Vector4<class_Vector4>` | :ref:`operator []<class_Projection_operator_idx_int>`\ (\ index\: :ref:`int<class_int>`\ ) |
  119. +-------------------------------------+-----------------------------------------------------------------------------------------------------------------+
  120. .. rst-class:: classref-section-separator
  121. ----
  122. .. rst-class:: classref-descriptions-group
  123. Constants
  124. ---------
  125. .. _class_Projection_constant_PLANE_NEAR:
  126. .. rst-class:: classref-constant
  127. **PLANE_NEAR** = ``0`` :ref:`🔗<class_Projection_constant_PLANE_NEAR>`
  128. The index value of the projection's near clipping plane.
  129. .. _class_Projection_constant_PLANE_FAR:
  130. .. rst-class:: classref-constant
  131. **PLANE_FAR** = ``1`` :ref:`🔗<class_Projection_constant_PLANE_FAR>`
  132. The index value of the projection's far clipping plane.
  133. .. _class_Projection_constant_PLANE_LEFT:
  134. .. rst-class:: classref-constant
  135. **PLANE_LEFT** = ``2`` :ref:`🔗<class_Projection_constant_PLANE_LEFT>`
  136. The index value of the projection's left clipping plane.
  137. .. _class_Projection_constant_PLANE_TOP:
  138. .. rst-class:: classref-constant
  139. **PLANE_TOP** = ``3`` :ref:`🔗<class_Projection_constant_PLANE_TOP>`
  140. The index value of the projection's top clipping plane.
  141. .. _class_Projection_constant_PLANE_RIGHT:
  142. .. rst-class:: classref-constant
  143. **PLANE_RIGHT** = ``4`` :ref:`🔗<class_Projection_constant_PLANE_RIGHT>`
  144. The index value of the projection's right clipping plane.
  145. .. _class_Projection_constant_PLANE_BOTTOM:
  146. .. rst-class:: classref-constant
  147. **PLANE_BOTTOM** = ``5`` :ref:`🔗<class_Projection_constant_PLANE_BOTTOM>`
  148. The index value of the projection bottom clipping plane.
  149. .. _class_Projection_constant_IDENTITY:
  150. .. rst-class:: classref-constant
  151. **IDENTITY** = ``Projection(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)`` :ref:`🔗<class_Projection_constant_IDENTITY>`
  152. A **Projection** with no transformation defined. When applied to other data structures, no transformation is performed.
  153. .. _class_Projection_constant_ZERO:
  154. .. rst-class:: classref-constant
  155. **ZERO** = ``Projection(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)`` :ref:`🔗<class_Projection_constant_ZERO>`
  156. A **Projection** with all values initialized to 0. When applied to other data structures, they will be zeroed.
  157. .. rst-class:: classref-section-separator
  158. ----
  159. .. rst-class:: classref-descriptions-group
  160. Property Descriptions
  161. ---------------------
  162. .. _class_Projection_property_w:
  163. .. rst-class:: classref-property
  164. :ref:`Vector4<class_Vector4>` **w** = ``Vector4(0, 0, 0, 1)`` :ref:`🔗<class_Projection_property_w>`
  165. The projection matrix's W vector (column 3). Equivalent to array index ``3``.
  166. .. rst-class:: classref-item-separator
  167. ----
  168. .. _class_Projection_property_x:
  169. .. rst-class:: classref-property
  170. :ref:`Vector4<class_Vector4>` **x** = ``Vector4(1, 0, 0, 0)`` :ref:`🔗<class_Projection_property_x>`
  171. The projection matrix's X vector (column 0). Equivalent to array index ``0``.
  172. .. rst-class:: classref-item-separator
  173. ----
  174. .. _class_Projection_property_y:
  175. .. rst-class:: classref-property
  176. :ref:`Vector4<class_Vector4>` **y** = ``Vector4(0, 1, 0, 0)`` :ref:`🔗<class_Projection_property_y>`
  177. The projection matrix's Y vector (column 1). Equivalent to array index ``1``.
  178. .. rst-class:: classref-item-separator
  179. ----
  180. .. _class_Projection_property_z:
  181. .. rst-class:: classref-property
  182. :ref:`Vector4<class_Vector4>` **z** = ``Vector4(0, 0, 1, 0)`` :ref:`🔗<class_Projection_property_z>`
  183. The projection matrix's Z vector (column 2). Equivalent to array index ``2``.
  184. .. rst-class:: classref-section-separator
  185. ----
  186. .. rst-class:: classref-descriptions-group
  187. Constructor Descriptions
  188. ------------------------
  189. .. _class_Projection_constructor_Projection:
  190. .. rst-class:: classref-constructor
  191. :ref:`Projection<class_Projection>` **Projection**\ (\ ) :ref:`🔗<class_Projection_constructor_Projection>`
  192. Constructs a default-initialized **Projection** identical to :ref:`IDENTITY<class_Projection_constant_IDENTITY>`.
  193. \ **Note:** In C#, this constructs a **Projection** identical to :ref:`ZERO<class_Projection_constant_ZERO>`.
  194. .. rst-class:: classref-item-separator
  195. ----
  196. .. rst-class:: classref-constructor
  197. :ref:`Projection<class_Projection>` **Projection**\ (\ from\: :ref:`Projection<class_Projection>`\ )
  198. Constructs a **Projection** as a copy of the given **Projection**.
  199. .. rst-class:: classref-item-separator
  200. ----
  201. .. rst-class:: classref-constructor
  202. :ref:`Projection<class_Projection>` **Projection**\ (\ from\: :ref:`Transform3D<class_Transform3D>`\ )
  203. Constructs a Projection as a copy of the given :ref:`Transform3D<class_Transform3D>`.
  204. .. rst-class:: classref-item-separator
  205. ----
  206. .. rst-class:: classref-constructor
  207. :ref:`Projection<class_Projection>` **Projection**\ (\ x_axis\: :ref:`Vector4<class_Vector4>`, y_axis\: :ref:`Vector4<class_Vector4>`, z_axis\: :ref:`Vector4<class_Vector4>`, w_axis\: :ref:`Vector4<class_Vector4>`\ )
  208. Constructs a Projection from four :ref:`Vector4<class_Vector4>` values (matrix columns).
  209. .. rst-class:: classref-section-separator
  210. ----
  211. .. rst-class:: classref-descriptions-group
  212. Method Descriptions
  213. -------------------
  214. .. _class_Projection_method_create_depth_correction:
  215. .. rst-class:: classref-method
  216. :ref:`Projection<class_Projection>` **create_depth_correction**\ (\ flip_y\: :ref:`bool<class_bool>`\ ) |static| :ref:`🔗<class_Projection_method_create_depth_correction>`
  217. Creates a new **Projection** that projects positions from a depth range of ``-1`` to ``1`` to one that ranges from ``0`` to ``1``, and flips the projected positions vertically, according to ``flip_y``.
  218. .. rst-class:: classref-item-separator
  219. ----
  220. .. _class_Projection_method_create_fit_aabb:
  221. .. rst-class:: classref-method
  222. :ref:`Projection<class_Projection>` **create_fit_aabb**\ (\ aabb\: :ref:`AABB<class_AABB>`\ ) |static| :ref:`🔗<class_Projection_method_create_fit_aabb>`
  223. Creates a new **Projection** that scales a given projection to fit around a given :ref:`AABB<class_AABB>` in projection space.
  224. .. rst-class:: classref-item-separator
  225. ----
  226. .. _class_Projection_method_create_for_hmd:
  227. .. rst-class:: classref-method
  228. :ref:`Projection<class_Projection>` **create_for_hmd**\ (\ eye\: :ref:`int<class_int>`, aspect\: :ref:`float<class_float>`, intraocular_dist\: :ref:`float<class_float>`, display_width\: :ref:`float<class_float>`, display_to_lens\: :ref:`float<class_float>`, oversample\: :ref:`float<class_float>`, z_near\: :ref:`float<class_float>`, z_far\: :ref:`float<class_float>`\ ) |static| :ref:`🔗<class_Projection_method_create_for_hmd>`
  229. 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.
  230. \ ``eye`` creates the projection for the left eye when set to 1, or the right eye when set to 2.
  231. .. rst-class:: classref-item-separator
  232. ----
  233. .. _class_Projection_method_create_frustum:
  234. .. rst-class:: classref-method
  235. :ref:`Projection<class_Projection>` **create_frustum**\ (\ left\: :ref:`float<class_float>`, right\: :ref:`float<class_float>`, bottom\: :ref:`float<class_float>`, top\: :ref:`float<class_float>`, z_near\: :ref:`float<class_float>`, z_far\: :ref:`float<class_float>`\ ) |static| :ref:`🔗<class_Projection_method_create_frustum>`
  236. Creates a new **Projection** that projects positions in a frustum with the given clipping planes.
  237. .. rst-class:: classref-item-separator
  238. ----
  239. .. _class_Projection_method_create_frustum_aspect:
  240. .. rst-class:: classref-method
  241. :ref:`Projection<class_Projection>` **create_frustum_aspect**\ (\ size\: :ref:`float<class_float>`, aspect\: :ref:`float<class_float>`, offset\: :ref:`Vector2<class_Vector2>`, z_near\: :ref:`float<class_float>`, z_far\: :ref:`float<class_float>`, flip_fov\: :ref:`bool<class_bool>` = false\ ) |static| :ref:`🔗<class_Projection_method_create_frustum_aspect>`
  242. Creates a new **Projection** that projects positions in a frustum with the given size, X:Y aspect ratio, offset, and clipping planes.
  243. \ ``flip_fov`` determines whether the projection's field of view is flipped over its diagonal.
  244. .. rst-class:: classref-item-separator
  245. ----
  246. .. _class_Projection_method_create_light_atlas_rect:
  247. .. rst-class:: classref-method
  248. :ref:`Projection<class_Projection>` **create_light_atlas_rect**\ (\ rect\: :ref:`Rect2<class_Rect2>`\ ) |static| :ref:`🔗<class_Projection_method_create_light_atlas_rect>`
  249. Creates a new **Projection** that projects positions into the given :ref:`Rect2<class_Rect2>`.
  250. .. rst-class:: classref-item-separator
  251. ----
  252. .. _class_Projection_method_create_orthogonal:
  253. .. rst-class:: classref-method
  254. :ref:`Projection<class_Projection>` **create_orthogonal**\ (\ left\: :ref:`float<class_float>`, right\: :ref:`float<class_float>`, bottom\: :ref:`float<class_float>`, top\: :ref:`float<class_float>`, z_near\: :ref:`float<class_float>`, z_far\: :ref:`float<class_float>`\ ) |static| :ref:`🔗<class_Projection_method_create_orthogonal>`
  255. Creates a new **Projection** that projects positions using an orthogonal projection with the given clipping planes.
  256. .. rst-class:: classref-item-separator
  257. ----
  258. .. _class_Projection_method_create_orthogonal_aspect:
  259. .. rst-class:: classref-method
  260. :ref:`Projection<class_Projection>` **create_orthogonal_aspect**\ (\ size\: :ref:`float<class_float>`, aspect\: :ref:`float<class_float>`, z_near\: :ref:`float<class_float>`, z_far\: :ref:`float<class_float>`, flip_fov\: :ref:`bool<class_bool>` = false\ ) |static| :ref:`🔗<class_Projection_method_create_orthogonal_aspect>`
  261. Creates a new **Projection** that projects positions using an orthogonal projection with the given size, X:Y aspect ratio, and clipping planes.
  262. \ ``flip_fov`` determines whether the projection's field of view is flipped over its diagonal.
  263. .. rst-class:: classref-item-separator
  264. ----
  265. .. _class_Projection_method_create_perspective:
  266. .. rst-class:: classref-method
  267. :ref:`Projection<class_Projection>` **create_perspective**\ (\ fovy\: :ref:`float<class_float>`, aspect\: :ref:`float<class_float>`, z_near\: :ref:`float<class_float>`, z_far\: :ref:`float<class_float>`, flip_fov\: :ref:`bool<class_bool>` = false\ ) |static| :ref:`🔗<class_Projection_method_create_perspective>`
  268. 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.
  269. \ ``flip_fov`` determines whether the projection's field of view is flipped over its diagonal.
  270. .. rst-class:: classref-item-separator
  271. ----
  272. .. _class_Projection_method_create_perspective_hmd:
  273. .. rst-class:: classref-method
  274. :ref:`Projection<class_Projection>` **create_perspective_hmd**\ (\ fovy\: :ref:`float<class_float>`, aspect\: :ref:`float<class_float>`, z_near\: :ref:`float<class_float>`, z_far\: :ref:`float<class_float>`, flip_fov\: :ref:`bool<class_bool>`, eye\: :ref:`int<class_int>`, intraocular_dist\: :ref:`float<class_float>`, convergence_dist\: :ref:`float<class_float>`\ ) |static| :ref:`🔗<class_Projection_method_create_perspective_hmd>`
  275. 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.
  276. \ ``eye`` creates the projection for the left eye when set to 1, or the right eye when set to 2.
  277. \ ``flip_fov`` determines whether the projection's field of view is flipped over its diagonal.
  278. .. rst-class:: classref-item-separator
  279. ----
  280. .. _class_Projection_method_determinant:
  281. .. rst-class:: classref-method
  282. :ref:`float<class_float>` **determinant**\ (\ ) |const| :ref:`🔗<class_Projection_method_determinant>`
  283. 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.
  284. The determinant can be used to calculate the invertibility of a matrix or solve linear systems of equations involving the matrix, among other applications.
  285. .. rst-class:: classref-item-separator
  286. ----
  287. .. _class_Projection_method_flipped_y:
  288. .. rst-class:: classref-method
  289. :ref:`Projection<class_Projection>` **flipped_y**\ (\ ) |const| :ref:`🔗<class_Projection_method_flipped_y>`
  290. Returns a copy of this **Projection** with the signs of the values of the Y column flipped.
  291. .. rst-class:: classref-item-separator
  292. ----
  293. .. _class_Projection_method_get_aspect:
  294. .. rst-class:: classref-method
  295. :ref:`float<class_float>` **get_aspect**\ (\ ) |const| :ref:`🔗<class_Projection_method_get_aspect>`
  296. Returns the X:Y aspect ratio of this **Projection**'s viewport.
  297. .. rst-class:: classref-item-separator
  298. ----
  299. .. _class_Projection_method_get_far_plane_half_extents:
  300. .. rst-class:: classref-method
  301. :ref:`Vector2<class_Vector2>` **get_far_plane_half_extents**\ (\ ) |const| :ref:`🔗<class_Projection_method_get_far_plane_half_extents>`
  302. Returns the dimensions of the far clipping plane of the projection, divided by two.
  303. .. rst-class:: classref-item-separator
  304. ----
  305. .. _class_Projection_method_get_fov:
  306. .. rst-class:: classref-method
  307. :ref:`float<class_float>` **get_fov**\ (\ ) |const| :ref:`🔗<class_Projection_method_get_fov>`
  308. Returns the horizontal field of view of the projection (in degrees).
  309. .. rst-class:: classref-item-separator
  310. ----
  311. .. _class_Projection_method_get_fovy:
  312. .. rst-class:: classref-method
  313. :ref:`float<class_float>` **get_fovy**\ (\ fovx\: :ref:`float<class_float>`, aspect\: :ref:`float<class_float>`\ ) |static| :ref:`🔗<class_Projection_method_get_fovy>`
  314. Returns the vertical field of view of the projection (in degrees) associated with the given horizontal field of view (in degrees) and aspect ratio.
  315. .. rst-class:: classref-item-separator
  316. ----
  317. .. _class_Projection_method_get_lod_multiplier:
  318. .. rst-class:: classref-method
  319. :ref:`float<class_float>` **get_lod_multiplier**\ (\ ) |const| :ref:`🔗<class_Projection_method_get_lod_multiplier>`
  320. Returns the factor by which the visible level of detail is scaled by this **Projection**.
  321. .. rst-class:: classref-item-separator
  322. ----
  323. .. _class_Projection_method_get_pixels_per_meter:
  324. .. rst-class:: classref-method
  325. :ref:`int<class_int>` **get_pixels_per_meter**\ (\ for_pixel_width\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_Projection_method_get_pixels_per_meter>`
  326. Returns the number of pixels with the given pixel width displayed per meter, after this **Projection** is applied.
  327. .. rst-class:: classref-item-separator
  328. ----
  329. .. _class_Projection_method_get_projection_plane:
  330. .. rst-class:: classref-method
  331. :ref:`Plane<class_Plane>` **get_projection_plane**\ (\ plane\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_Projection_method_get_projection_plane>`
  332. Returns the clipping plane of this **Projection** whose index is given by ``plane``.
  333. \ ``plane`` should be equal to one of :ref:`PLANE_NEAR<class_Projection_constant_PLANE_NEAR>`, :ref:`PLANE_FAR<class_Projection_constant_PLANE_FAR>`, :ref:`PLANE_LEFT<class_Projection_constant_PLANE_LEFT>`, :ref:`PLANE_TOP<class_Projection_constant_PLANE_TOP>`, :ref:`PLANE_RIGHT<class_Projection_constant_PLANE_RIGHT>`, or :ref:`PLANE_BOTTOM<class_Projection_constant_PLANE_BOTTOM>`.
  334. .. rst-class:: classref-item-separator
  335. ----
  336. .. _class_Projection_method_get_viewport_half_extents:
  337. .. rst-class:: classref-method
  338. :ref:`Vector2<class_Vector2>` **get_viewport_half_extents**\ (\ ) |const| :ref:`🔗<class_Projection_method_get_viewport_half_extents>`
  339. Returns the dimensions of the viewport plane that this **Projection** projects positions onto, divided by two.
  340. .. rst-class:: classref-item-separator
  341. ----
  342. .. _class_Projection_method_get_z_far:
  343. .. rst-class:: classref-method
  344. :ref:`float<class_float>` **get_z_far**\ (\ ) |const| :ref:`🔗<class_Projection_method_get_z_far>`
  345. Returns the distance for this **Projection** beyond which positions are clipped.
  346. .. rst-class:: classref-item-separator
  347. ----
  348. .. _class_Projection_method_get_z_near:
  349. .. rst-class:: classref-method
  350. :ref:`float<class_float>` **get_z_near**\ (\ ) |const| :ref:`🔗<class_Projection_method_get_z_near>`
  351. Returns the distance for this **Projection** before which positions are clipped.
  352. .. rst-class:: classref-item-separator
  353. ----
  354. .. _class_Projection_method_inverse:
  355. .. rst-class:: classref-method
  356. :ref:`Projection<class_Projection>` **inverse**\ (\ ) |const| :ref:`🔗<class_Projection_method_inverse>`
  357. Returns a **Projection** that performs the inverse of this **Projection**'s projective transformation.
  358. .. rst-class:: classref-item-separator
  359. ----
  360. .. _class_Projection_method_is_orthogonal:
  361. .. rst-class:: classref-method
  362. :ref:`bool<class_bool>` **is_orthogonal**\ (\ ) |const| :ref:`🔗<class_Projection_method_is_orthogonal>`
  363. Returns ``true`` if this **Projection** performs an orthogonal projection.
  364. .. rst-class:: classref-item-separator
  365. ----
  366. .. _class_Projection_method_jitter_offseted:
  367. .. rst-class:: classref-method
  368. :ref:`Projection<class_Projection>` **jitter_offseted**\ (\ offset\: :ref:`Vector2<class_Vector2>`\ ) |const| :ref:`🔗<class_Projection_method_jitter_offseted>`
  369. Returns a **Projection** with the X and Y values from the given :ref:`Vector2<class_Vector2>` added to the first and second values of the final column respectively.
  370. .. rst-class:: classref-item-separator
  371. ----
  372. .. _class_Projection_method_perspective_znear_adjusted:
  373. .. rst-class:: classref-method
  374. :ref:`Projection<class_Projection>` **perspective_znear_adjusted**\ (\ new_znear\: :ref:`float<class_float>`\ ) |const| :ref:`🔗<class_Projection_method_perspective_znear_adjusted>`
  375. Returns a **Projection** with the near clipping distance adjusted to be ``new_znear``.
  376. \ **Note:** The original **Projection** must be a perspective projection.
  377. .. rst-class:: classref-section-separator
  378. ----
  379. .. rst-class:: classref-descriptions-group
  380. Operator Descriptions
  381. ---------------------
  382. .. _class_Projection_operator_neq_Projection:
  383. .. rst-class:: classref-operator
  384. :ref:`bool<class_bool>` **operator !=**\ (\ right\: :ref:`Projection<class_Projection>`\ ) :ref:`🔗<class_Projection_operator_neq_Projection>`
  385. Returns ``true`` if the projections are not equal.
  386. \ **Note:** Due to floating-point precision errors, this may return ``true``, even if the projections are virtually equal. An ``is_equal_approx`` method may be added in a future version of Godot.
  387. .. rst-class:: classref-item-separator
  388. ----
  389. .. _class_Projection_operator_mul_Projection:
  390. .. rst-class:: classref-operator
  391. :ref:`Projection<class_Projection>` **operator ***\ (\ right\: :ref:`Projection<class_Projection>`\ ) :ref:`🔗<class_Projection_operator_mul_Projection>`
  392. Returns a **Projection** that applies the combined transformations of this **Projection** and ``right``.
  393. .. rst-class:: classref-item-separator
  394. ----
  395. .. _class_Projection_operator_mul_Vector4:
  396. .. rst-class:: classref-operator
  397. :ref:`Vector4<class_Vector4>` **operator ***\ (\ right\: :ref:`Vector4<class_Vector4>`\ ) :ref:`🔗<class_Projection_operator_mul_Vector4>`
  398. Projects (multiplies) the given :ref:`Vector4<class_Vector4>` by this **Projection** matrix.
  399. .. rst-class:: classref-item-separator
  400. ----
  401. .. _class_Projection_operator_eq_Projection:
  402. .. rst-class:: classref-operator
  403. :ref:`bool<class_bool>` **operator ==**\ (\ right\: :ref:`Projection<class_Projection>`\ ) :ref:`🔗<class_Projection_operator_eq_Projection>`
  404. Returns ``true`` if the projections are equal.
  405. \ **Note:** Due to floating-point precision errors, this may return ``false``, even if the projections are virtually equal. An ``is_equal_approx`` method may be added in a future version of Godot.
  406. .. rst-class:: classref-item-separator
  407. ----
  408. .. _class_Projection_operator_idx_int:
  409. .. rst-class:: classref-operator
  410. :ref:`Vector4<class_Vector4>` **operator []**\ (\ index\: :ref:`int<class_int>`\ ) :ref:`🔗<class_Projection_operator_idx_int>`
  411. Returns the column of the **Projection** with the given index.
  412. Indices are in the following order: x, y, z, w.
  413. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
  414. .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
  415. .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
  416. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
  417. .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
  418. .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`
  419. .. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)`
  420. .. |void| replace:: :abbr:`void (No return value.)`