|
Gamp v0.0.7-54-gccdc599
Gamp: Graphics, Audio, Multimedia and Processing
|

PMVMatrix4 implements the basic computer graphics Matrix4 pack using projection (P), modelview (Mv) and texture (T) Matrix4 operations. More...
#include <pmvmat4.hpp>
Public Types | |
| typedef const value_type * | const_iterator |
| typedef const value_type * | const_pointer |
| typedef const value_type & | const_reference |
| typedef value_type * | iterator |
| typedef Matrix4< value_type > | Mat4 |
| typedef value_type * | pointer |
| typedef Ray3F< value_type > | Ray3 |
| typedef value_type & | reference |
| typedef SyncMatrices4< value_type > | SyncMats4 |
| typedef Value_type | value_type |
| typedef Vector3F< value_type > | Vec3 |
| typedef Vector4F< value_type > | Vec4 |
Public Member Functions | |
| PMVMatrix4 () noexcept | |
| Creates an instance of PMVMatrix4. | |
| PMVMatrix4 (PMVData derivedMatrices) noexcept | |
| Creates an instance of PMVMatrix4. | |
| const jau::type_info & | compSignature () const noexcept |
| Returns the component's value_type signature. | |
| void | frustumP (const float left, const float right, const float bottom, const float top, const float zNear, const float zFar) |
Multiply the projection matrix with the frustum matrix. | |
| constexpr PMVData | getDirtyBits () noexcept |
| Returns the dirty bits due to mutable operations, i.e. | |
| jau::math::geom::Frustum | getFrustum () noexcept |
| Returns the frustum, derived from projection x modelview. | |
| constexpr PMVMod | getModifiedBits (const bool clear) noexcept |
| Returns the modified bits due to mutable operations. | |
| constexpr Mat4 & | getMulMvP (Mat4 &result) noexcept |
Returns multiplication result of Mv and P matrix, i.e. | |
| constexpr Mat4 & | getMulPMv (Mat4 &result) noexcept |
Returns multiplication result of P and Mv matrix, i.e. | |
| constexpr const Mat4 & | getMv () const noexcept |
| constexpr Mat4 & | getMv () noexcept |
Returns the modelview matrix (Mv). | |
| const Mat4 & | getMvi () |
Returns the inverse modelview matrix (Mvi) if requested. | |
| const Mat4 & | getMvit () |
Returns the inverse transposed modelview matrix (Mvit) if requested. | |
| constexpr const Mat4 & | getP () const noexcept |
| constexpr Mat4 & | getP () noexcept |
Returns the projection matrix (P). | |
| const Mat4 & | getPi () |
Returns the inverse modelview matrix (Pi) if requested. | |
| constexpr Mat4 & | getPMv () noexcept |
| Returns the pre-multiplied projection x modelview, P x Mv. | |
| constexpr Mat4 & | getPMvi () noexcept |
Returns the pre-multiplied inverse projection x modelview, if Mat4#invert(Mat4) succeeded, otherwise null. | |
| constexpr const Mat4 & | getT () const noexcept |
| constexpr Mat4 & | getT () noexcept |
Returns the texture matrix (T). | |
| constexpr bool | isReqDirty () noexcept |
Returns true if the one of the requested bits are are set dirty due to mutable operations, i.e. | |
| constexpr PMVMatrix4 & | loadMv (const Mat4 &m) noexcept |
Load the modelview matrix with the values of the given Mat4. | |
| constexpr PMVMatrix4 & | loadMv (const Quat4f &quat) noexcept |
Load the modelview matrix with the values of the given Quaternion's rotation Quaternion::toMatrix() representation. | |
| constexpr PMVMatrix4 & | loadMv (float values[]) noexcept |
Load the modelview matrix with the provided values. | |
| constexpr PMVMatrix4 & | loadMvIdentity () noexcept |
Load the modelview matrix with the values of the given Mat4. | |
| constexpr PMVMatrix4 & | loadP (const Mat4 &m) |
Load the projection matrix with the values of the given Mat4. | |
| constexpr PMVMatrix4 & | loadP (const Quat4f &quat) noexcept |
Load the projection matrix with the values of the given Quaternion's rotation Quaternion::toMatrix() representation. | |
| constexpr PMVMatrix4 & | loadP (float values[]) noexcept |
Load the projection matrix with the provided values. | |
| constexpr PMVMatrix4 & | loadPIdentity () noexcept |
Load the projection matrix with the values of the given Mat4. | |
| constexpr PMVMatrix4 & | loadT (const Quat4f &quat) noexcept |
Load the texture matrix with the values of the given Quaternion's rotation Quaternion::toMatrix() representation. | |
| constexpr PMVMatrix4 & | loadT (float values[]) noexcept |
Load the texture matrix with the provided values. | |
| constexpr PMVMatrix4 & | loadT (Mat4 &m) noexcept |
Load the texture matrix with the values of the given Mat4. | |
| constexpr PMVMatrix4 & | loadTIdentity () noexcept |
Load the texture matrix with the values of the given Mat4. | |
| constexpr PMVMatrix4 & | lookAtMv (const Vec3 &eye, const Vec3 ¢er, const Vec3 &up) noexcept |
Multiply the modelview matrix with the eye, object and orientation (camera), i.e. | |
| constexpr SyncMats4 | makeSyncMv () noexcept |
Returns a new SyncMatrix of modelview matrix (Mv). | |
| SyncMats4 | makeSyncMvi () |
Returns a new SyncMatrix of inverse modelview matrix (Mvi) if requested. | |
| SyncMats4 | makeSyncMvit () |
Returns a new SyncMatrix of inverse transposed modelview matrix (Mvit) if requested. | |
| constexpr SyncMats4 | makeSyncP () noexcept |
Returns a new SyncMatrix of projection matrix (P). | |
| SyncMats4f | makeSyncPMv () noexcept |
Returns a new SyncMatrices4f of 2 matrices within one FloatBuffer: P and Mv. | |
| SyncMats4f | makeSyncPMvMvi () |
Returns a new SyncMatrices4f of 3 matrices within one FloatBuffer: P, Mv and Mvi if requested. | |
| SyncMats4f | makeSyncPMvMviMvit () |
Returns a new SyncMatrices4f of 4 matrices within one FloatBuffer: P, Mv, Mvi and Mvit if requested. | |
| SyncMats4f | makeSyncPMvReq () |
| Returns a new SyncMatrices4f of either 4 matrices makeSyncPMvMviMvit(), 3 matrices makeSyncPMvMvi() or 2 matrices makeSyncPMv() depending on requestedBits(). | |
| SyncMats4 | makeSyncT () noexcept |
Returns a new SyncMatrix of texture matrix (T). | |
| bool | mapObjToWin (const Vec3 &objPos, const Recti &viewport, Vec3 &winPos) const noexcept |
| Map object coordinates to window coordinates. | |
| bool | mapViewToWin (const Vec3 &view, const Recti &viewport, Vec3 &winPos) const noexcept |
| Map view coordinates ( Mv x object ) to window coordinates. | |
| bool | mapWinToObj (const float winx, const float winy, const float winz, const Recti &viewport, Vec3 &objPos) noexcept |
| Map window coordinates to object coordinates. | |
| bool | mapWinToObj4 (const float winx, const float winy, const float winz, const float clipw, const Recti &viewport, const float near, const float far, Vec4 &objPos) const noexcept |
| Map window coordinates to object coordinates. | |
| bool | mapWinToObjRay (const float winx, const float winy, const float winz0, const float winz1, const Recti &viewport, Ray3f &ray) noexcept |
Map two window coordinates w/ shared X/Y and distinctive Z to a Ray in object space. | |
| bool | mapWinToView (const float winx, const float winy, const float winz, const Recti &viewport, Vec3 &objPos) noexcept |
| Map window coordinates to view coordinates. | |
| bool | mapWinToViewRay (const float winx, const float winy, const float winz0, const float winz1, const Recti &viewport, Ray3f &ray) noexcept |
Map two window coordinates w/ shared X/Y and distinctive Z to a Ray in view space. | |
| bool | mapWinToWorld (const float winx, const float winy, const float winz, const Mat4 &matVi, const Recti &viewport, Vec3 &objPos) noexcept |
| Map window coordinates to object coordinates. | |
| bool | mapWinToWorldRay (const float winx, const float winy, const float winz0, const float winz1, const Mat4 &matVi, const Recti &viewport, Ray3f &ray) noexcept |
Map two window coordinates w/ shared X/Y and distinctive Z to a Ray in world space. | |
| bool | mapWorldToWin (const Vec3 &objPos, const Mat4 &matV, const Recti &viewport, Vec3 &winPos) const noexcept |
| Map world coordinates to window coordinates. | |
| size_t | matrixCount () const noexcept |
| Return the number of Mat4 referenced by matrices() | |
| constexpr PMVMatrix4 & | mulMv (const Mat4 &m) noexcept |
Multiply the modelview matrix: [c] = [c] x [m]. | |
| constexpr PMVMatrix4 & | mulP (const Mat4 &m) noexcept |
Multiply the projection matrix: [c] = [c] x [m]. | |
| constexpr PMVMatrix4 & | mulT (const Mat4 &m) noexcept |
Multiply the texture matrix: [c] = [c] x [m]. | |
| constexpr Vec3 & | mulWithMv (const Vec3 &v_in, Vec3 &v_out) noexcept |
| v_out = Mv x v_in | |
| constexpr Vec4 & | mulWithMv (const Vec4 &v_in, Vec4 &v_out) noexcept |
| v_out = Mv x v_in | |
| constexpr Vec4 & | mulWithMv (Vec4 &v_inout) noexcept |
| v_inout = Mv x v_inout | |
| constexpr void | orthoP (const float left, const float right, const float bottom, const float top, const float zNear, const float zFar) noexcept |
Multiply the projection matrix with the orthogonal matrix. | |
| PMVMatrix4 & | perspectiveP (const float fovy_rad, const float aspect, const float zNear, const float zFar) |
Multiply the projection matrix with the perspective/frustum matrix. | |
| constexpr_cxx20 PMVMatrix4 & | popMv () noexcept |
Pop the modelview matrix from its stack. | |
| constexpr_cxx20 PMVMatrix4 & | popP () noexcept |
Pop the projection matrix from its stack. | |
| constexpr_cxx20 PMVMatrix4 & | popT () noexcept |
Pop the texture matrix from its stack. | |
| constexpr_cxx20 PMVMatrix4 & | pushMv () noexcept |
Push the modelview matrix to its stack, while preserving its values. | |
| constexpr_cxx20 PMVMatrix4 & | pushP () noexcept |
Push the projection matrix to its stack, while preserving its values. | |
| constexpr_cxx20 PMVMatrix4 & | pushT () noexcept |
Push the texture matrix to its stack, while preserving its values. | |
| constexpr PMVData | requestedBits () noexcept |
| Returns the request bit mask, which uses bit values equal to the dirty mask and may contain. | |
| constexpr void | reset () noexcept |
Issues Mat4#loadIdentity() on all matrices and resets all internal states. | |
| constexpr_cxx26 PMVMatrix4 & | rotateMv (const float ang_rad, const float x, const float y, const float z) noexcept |
Rotate the modelview matrix by the given axis and angle in radians. | |
| constexpr_cxx26 PMVMatrix4 & | rotateMv (const float ang_rad, const Vec3 &axis) noexcept |
Rotate the modelview matrix by the given axis and angle in radians. | |
| constexpr PMVMatrix4 & | rotateMv (const Quat4f &quat) noexcept |
Rotate the modelview matrix with the given Quaternion's rotation matrix representation. | |
| constexpr_cxx26 PMVMatrix4 & | rotateP (const float ang_rad, const float x, const float y, const float z) noexcept |
Rotate the projection matrix by the given axis and angle in radians. | |
| constexpr_cxx26 PMVMatrix4 & | rotateP (const float ang_rad, const Vec3 &axis) noexcept |
Rotate the projection matrix by the given axis and angle in radians. | |
| constexpr PMVMatrix4 & | rotateP (const Quat4f &quat) noexcept |
Rotate the projection matrix with the given Quaternion's rotation matrix representation. | |
| constexpr PMVMatrix4 & | scaleMv (const Vec3 &s) noexcept |
Scale the modelview matrix. | |
| constexpr PMVMatrix4 & | scaleMv (float x, float y, float z) noexcept |
Scale the modelview matrix. | |
| constexpr PMVMatrix4 & | scaleP (const Vec3 &s) noexcept |
Scale the projection matrix. | |
| constexpr PMVMatrix4 & | scaleP (float x, float y, float z) noexcept |
Scale the projection matrix. | |
| constexpr void | setModelviewDirty () noexcept |
Sets the Modelview (Mv) matrix dirty and modified, i.e. | |
| constexpr void | setProjectionDirty () noexcept |
Sets the Projection (P) matrix dirty and modified, i.e. | |
| constexpr void | setTextureDirty () noexcept |
Sets the Texture (T) matrix modified. | |
| constexpr PMVMatrix4 & | setToLookAtMv (const Vec3 &eye, const Vec3 ¢er, const Vec3 &up) noexcept |
Set the modelview matrix to the eye, object and orientation (camera), i.e. | |
| PMVMatrix4 & | setToPerspective (const float fovy_rad, const float aspect, const float zNear, const float zFar) |
Set the projection matrix to the perspective/frustum matrix. | |
| std::string | toString () const noexcept |
| std::string & | toString (std::string &sb, const std::string &f) const noexcept |
| constexpr PMVMatrix4 & | translateMv (const Vec3 &t) noexcept |
Translate the modelview matrix. | |
| constexpr PMVMatrix4 & | translateMv (float x, float y, float z) noexcept |
Translate the modelview matrix. | |
| constexpr PMVMatrix4 & | translateP (const Vec3 &t) noexcept |
Translate the projection matrix. | |
| constexpr PMVMatrix4 & | translateP (float x, float y, float z) noexcept |
Translate the projection matrix. | |
| bool | update () noexcept |
Update the derived inverse modelview (Mvi), inverse transposed modelview (Mvit) matrices if they are dirty and requested via the constructor PMVMatrix4(int). | |
Static Public Member Functions | |
| static size_t | matrixCount (PMVData derivedMatrices) noexcept |
| Return the number of Mat4 referenced by matrices() | |
PMVMatrix4 implements the basic computer graphics Matrix4 pack using projection (P), modelview (Mv) and texture (T) Matrix4 operations.
PMVMatrix4 provides the inverse modelview matrix (Mvi) and inverse transposed modelview matrix (Mvit). Frustum is also provided by getFrustum().
To keep these derived values synchronized after mutable Mv operations like rotateMv(Quaternion) users have to call update() before using Mvi and Mvit.
All matrices are provided in column-major order, as specified in the OpenGL fixed function pipeline, i.e. compatibility profile. See Matrix4.
Maintaining the inverse projection provides conversion to and from view space.
Passing the view or inverse-view matrix to map-functions allows conversion to and from world space.
PMVMatrix4 can supplement GL2ES2 applications w/ the lack of the described matrix functionality.
The native data layout of the matrices are preserved, linear and can be utilized by GLUniformData directly to be pushed to the GPU eventually via SyncMatrix4 and SyncMatrices4, both SyncBuffer specializations for Matrix4.
SyncBuffer's provided sync_action_t ensures that derived matrices, e.g. getMvi(), are updated before use.
SyncBuffer's sync_action_t is called by GLUniformData::getBuffer() i.e. before the data is pushed to the GPU.
Definition at line 116 of file pmvmat4.hpp.
| typedef Value_type jau::math::util::PMVMatrix4< Value_type >::value_type |
Definition at line 118 of file pmvmat4.hpp.
| typedef value_type* jau::math::util::PMVMatrix4< Value_type >::pointer |
Definition at line 119 of file pmvmat4.hpp.
| typedef const value_type* jau::math::util::PMVMatrix4< Value_type >::const_pointer |
Definition at line 120 of file pmvmat4.hpp.
| typedef value_type& jau::math::util::PMVMatrix4< Value_type >::reference |
Definition at line 121 of file pmvmat4.hpp.
| typedef const value_type& jau::math::util::PMVMatrix4< Value_type >::const_reference |
Definition at line 122 of file pmvmat4.hpp.
| typedef value_type* jau::math::util::PMVMatrix4< Value_type >::iterator |
Definition at line 123 of file pmvmat4.hpp.
| typedef const value_type* jau::math::util::PMVMatrix4< Value_type >::const_iterator |
Definition at line 124 of file pmvmat4.hpp.
| typedef Vector3F<value_type> jau::math::util::PMVMatrix4< Value_type >::Vec3 |
Definition at line 126 of file pmvmat4.hpp.
| typedef Vector4F<value_type> jau::math::util::PMVMatrix4< Value_type >::Vec4 |
Definition at line 127 of file pmvmat4.hpp.
| typedef Ray3F<value_type> jau::math::util::PMVMatrix4< Value_type >::Ray3 |
Definition at line 128 of file pmvmat4.hpp.
| typedef Matrix4<value_type> jau::math::util::PMVMatrix4< Value_type >::Mat4 |
Definition at line 129 of file pmvmat4.hpp.
| typedef SyncMatrices4<value_type> jau::math::util::PMVMatrix4< Value_type >::SyncMats4 |
Definition at line 130 of file pmvmat4.hpp.
|
inlinenoexcept |
Creates an instance of PMVMatrix4.
This constructor only sets up an instance w/o additional derived INVERSE_MODELVIEW, INVERSE_PROJECTION or INVERSE_TRANSPOSED_MODELVIEW matrices.
Definition at line 176 of file pmvmat4.hpp.
|
inlinenoexcept |
Creates an instance of PMVMatrix4.
Additional derived matrices can be requested via derivedMatrices, i.e.
Implementation uses native Matrix4 elements using column-order fields. Derived matrices are updated at retrieval, e.g. getMvi(), or via synchronized access, e.g. makeSyncMvi(), to the actual Mat4 instances.
| derivedMatrices | additional matrices can be requested by passing bits INVERSE_MODELVIEW, INVERSE_PROJECTION and INVERSE_TRANSPOSED_MODELVIEW. |
Definition at line 196 of file pmvmat4.hpp.
|
inlinenoexcept |
Returns the component's value_type signature.
Definition at line 204 of file pmvmat4.hpp.
|
inlinestaticnoexcept |
Return the number of Mat4 referenced by matrices()
Definition at line 207 of file pmvmat4.hpp.
|
inlinenoexcept |
Return the number of Mat4 referenced by matrices()
Definition at line 224 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Issues Mat4#loadIdentity() on all matrices and resets all internal states.
Definition at line 229 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Returns the texture matrix (T).
Consider using setTextureDirty() if modifying the returned Mat4.
Definition at line 251 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Definition at line 252 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Returns the projection matrix (P).
Consider using setProjectionDirty() if modifying the returned Mat4.
Definition at line 263 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Definition at line 264 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Returns the modelview matrix (Mv).
Consider using setModelviewDirty() if modifying the returned Mat4.
Definition at line 275 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Definition at line 276 of file pmvmat4.hpp.
|
inline |
Returns the inverse modelview matrix (Pi) if requested.
| IllegalArgumentException | if INVERSE_PROJECTION has not been requested in ctor PMVMatrix4(int). |
Definition at line 285 of file pmvmat4.hpp.
|
inline |
Returns the inverse modelview matrix (Mvi) if requested.
| IllegalArgumentException | if INVERSE_MODELVIEW has not been requested in ctor PMVMatrix4(int). |
Definition at line 300 of file pmvmat4.hpp.
|
inline |
Returns the inverse transposed modelview matrix (Mvit) if requested.
| IllegalArgumentException | if INVERSE_TRANSPOSED_MODELVIEW has not been requested in ctor PMVMatrix4(int). |
Definition at line 315 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Returns a new SyncMatrix of projection matrix (P).
Definition at line 329 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Returns a new SyncMatrix of modelview matrix (Mv).
Definition at line 337 of file pmvmat4.hpp.
|
inlinenoexcept |
Returns a new SyncMatrices4f of 2 matrices within one FloatBuffer: P and Mv.
Definition at line 345 of file pmvmat4.hpp.
|
inlinenoexcept |
Returns a new SyncMatrix of texture matrix (T).
Definition at line 353 of file pmvmat4.hpp.
|
inline |
Returns a new SyncMatrix of inverse modelview matrix (Mvi) if requested.
| IllegalArgumentException | if INVERSE_MODELVIEW has not been requested in ctor PMVMatrix4(int). |
Definition at line 362 of file pmvmat4.hpp.
|
inline |
Returns a new SyncMatrix of inverse transposed modelview matrix (Mvit) if requested.
| IllegalArgumentException | if INVERSE_TRANSPOSED_MODELVIEW has not been requested in ctor PMVMatrix4(int). |
Definition at line 376 of file pmvmat4.hpp.
|
inline |
Returns a new SyncMatrices4f of 3 matrices within one FloatBuffer: P, Mv and Mvi if requested.
| IllegalArgumentException | if PMVData::inv_mv has not been requested in ctor. |
Definition at line 390 of file pmvmat4.hpp.
|
inline |
Returns a new SyncMatrices4f of 4 matrices within one FloatBuffer: P, Mv, Mvi and Mvit if requested.
| IllegalArgumentException | if PMVData::inv_mv or PMVData::inv_tps_mv has not been requested in ctor. |
Definition at line 404 of file pmvmat4.hpp.
|
inline |
Returns a new SyncMatrices4f of either 4 matrices makeSyncPMvMviMvit(), 3 matrices makeSyncPMvMvi() or 2 matrices makeSyncPMv() depending on requestedBits().
Definition at line 419 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Returns multiplication result of P and Mv matrix, i.e.
result = P x Mv
| result | 4x4 matrix storage for result |
Definition at line 447 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Returns multiplication result of Mv and P matrix, i.e.
result = Mv x P
| result | 4x4 matrix storage for result |
Definition at line 459 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
v_out = Mv x v_in
| v_in | input vector, can be v_out for in-place transformation |
| v_out | output vector |
Definition at line 469 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
v_inout = Mv x v_inout
| v_inout | input and output vector, i.e. in-place transformation |
Definition at line 478 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
v_out = Mv x v_in
Affine 3f-vector transformation by 4x4 matrix, see Mat4#mulVec3(Vec3, Vec3).
| v_in | input vector, can be v_out for in-place transformation |
| v_out | output vector |
Definition at line 491 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Load the modelview matrix with the provided values.
Definition at line 502 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Load the modelview matrix with the values of the given Mat4.
Definition at line 510 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Load the modelview matrix with the values of the given Quaternion's rotation Quaternion::toMatrix() representation.
Definition at line 518 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Load the projection matrix with the provided values.
Definition at line 527 of file pmvmat4.hpp.
|
inlineconstexpr |
Load the projection matrix with the values of the given Mat4.
Definition at line 535 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Load the projection matrix with the values of the given Quaternion's rotation Quaternion::toMatrix() representation.
Definition at line 543 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Load the texture matrix with the provided values.
Definition at line 552 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Load the texture matrix with the values of the given Mat4.
Definition at line 560 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Load the texture matrix with the values of the given Quaternion's rotation Quaternion::toMatrix() representation.
Definition at line 568 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Load the modelview matrix with the values of the given Mat4.
Definition at line 577 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Load the projection matrix with the values of the given Mat4.
Definition at line 586 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Load the texture matrix with the values of the given Mat4.
Definition at line 595 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Multiply the modelview matrix: [c] = [c] x [m].
| m | the right hand Mat4 |
Definition at line 606 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Multiply the projection matrix: [c] = [c] x [m].
| m | the right hand Mat4 |
Definition at line 617 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Multiply the texture matrix: [c] = [c] x [m].
| m | the right hand Mat4 |
Definition at line 628 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Translate the modelview matrix.
| x | |
| y | |
| z |
Definition at line 641 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Translate the modelview matrix.
| t | translation vec3 |
Definition at line 650 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Translate the projection matrix.
| x | |
| y | |
| z |
Definition at line 662 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Translate the projection matrix.
| t | translation vec3 |
Definition at line 671 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Scale the modelview matrix.
| x | |
| y | |
| z |
Definition at line 683 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Scale the modelview matrix.
| s | scale vec4f |
Definition at line 692 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Scale the projection matrix.
| x | |
| y | |
| z |
Definition at line 704 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Scale the projection matrix.
| s | scale vec4f |
Definition at line 713 of file pmvmat4.hpp.
|
inlinenoexcept |
Rotate the modelview matrix by the given axis and angle in radians.
Consider using rotateMv(Quaternion)
| ang_rad | angle in radians |
| axis | rotation axis |
Definition at line 728 of file pmvmat4.hpp.
|
inlinenoexcept |
Rotate the modelview matrix by the given axis and angle in radians.
Consider using rotateMv(Quaternion)
| ang_rad | angle in radians |
| axis | rotation axis |
Definition at line 742 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Rotate the modelview matrix with the given Quaternion's rotation matrix representation.
| quat | the Quaternion |
Definition at line 751 of file pmvmat4.hpp.
|
inlinenoexcept |
Rotate the projection matrix by the given axis and angle in radians.
Consider using rotateP(Quaternion)
| ang_rad | angle in radians |
| axis | rotation axis |
Definition at line 766 of file pmvmat4.hpp.
|
inlinenoexcept |
Rotate the projection matrix by the given axis and angle in radians.
Consider using rotateP(Quaternion)
| ang_rad | angle in radians |
| axis | rotation axis |
Definition at line 780 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Rotate the projection matrix with the given Quaternion's rotation matrix representation.
| quat | the Quaternion |
Definition at line 789 of file pmvmat4.hpp.
|
inlinenoexcept |
Pop the modelview matrix from its stack.
Definition at line 795 of file pmvmat4.hpp.
|
inlinenoexcept |
Pop the projection matrix from its stack.
Definition at line 801 of file pmvmat4.hpp.
|
inlinenoexcept |
Pop the texture matrix from its stack.
Definition at line 807 of file pmvmat4.hpp.
|
inlinenoexcept |
Push the modelview matrix to its stack, while preserving its values.
Definition at line 813 of file pmvmat4.hpp.
|
inlinenoexcept |
Push the projection matrix to its stack, while preserving its values.
Definition at line 818 of file pmvmat4.hpp.
|
inlinenoexcept |
Push the texture matrix to its stack, while preserving its values.
Definition at line 823 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Multiply the projection matrix with the orthogonal matrix.
| left | |
| right | |
| bottom | |
| top | |
| zNear | |
| zFar |
Definition at line 838 of file pmvmat4.hpp.
|
inline |
Multiply the projection matrix with the frustum matrix.
| IllegalArgumentException | if zNear <= 0 or zFar <= zNear or left == right, or bottom == top. |
Definition at line 850 of file pmvmat4.hpp.
|
inline |
Set the projection matrix to the perspective/frustum matrix.
| fovy_rad | fov angle in radians |
| aspect | aspect ratio width / height |
| zNear | |
| zFar |
| IllegalArgumentException | if zNear <= 0 or zFar <= zNear |
Definition at line 869 of file pmvmat4.hpp.
|
inline |
Multiply the projection matrix with the perspective/frustum matrix.
| fovy_rad | fov angle in radians |
| aspect | aspect ratio width / height |
| zNear | |
| zFar |
| IllegalArgumentException | if zNear <= 0 or zFar <= zNear |
Definition at line 885 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Set the modelview matrix to the eye, object and orientation (camera), i.e.
Mat4#setToLookAt(Vec3, Vec3, Vec3, Mat4).
Definition at line 895 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Multiply the modelview matrix with the eye, object and orientation (camera), i.e.
Mat4#setToLookAt(Vec3, Vec3, Vec3, Mat4).
Definition at line 905 of file pmvmat4.hpp.
|
inlinenoexcept |
Map object coordinates to window coordinates.
Traditional gluProject implementation.
| objPos | 3 component object coordinate |
| viewport | Rect4i viewport |
| winPos | 3 component window coordinate, the result |
Definition at line 921 of file pmvmat4.hpp.
|
inlinenoexcept |
Map world coordinates to window coordinates.
| objPos | 3 component object coordinate |
| matV | the view matrix |
| viewport | Rect4i viewport |
| winPos | 3 component window coordinate, the result |
Definition at line 938 of file pmvmat4.hpp.
|
inlinenoexcept |
Map view coordinates ( Mv x object ) to window coordinates.
| view | view position, 3 component vector |
| mP | projection matrix |
| viewport | Rect4i viewport |
| winPos | 3 component window coordinate, the result |
Definition at line 951 of file pmvmat4.hpp.
|
inlinenoexcept |
Map window coordinates to object coordinates.
Traditional gluUnProject implementation.
| winx | |
| winy | |
| winz | |
| viewport | Rect4i viewport |
| objPos | 3 component object coordinate, the result |
Definition at line 968 of file pmvmat4.hpp.
|
inlinenoexcept |
Map window coordinates to object coordinates.
The INVERSE_PROJECTION must have been request in the constructor.
| winx | |
| winy | |
| winz | |
| matVi | the inverse view matrix |
| viewport | Rect4i viewport |
| objPos | 3 component object coordinate, the result |
Definition at line 993 of file pmvmat4.hpp.
|
inlinenoexcept |
Map window coordinates to view coordinates.
| winx | |
| winy | |
| winz | |
| viewport | Rect4i viewport |
| objPos | 3 component object coordinate, the result |
Definition at line 1014 of file pmvmat4.hpp.
|
inlinenoexcept |
Map window coordinates to object coordinates.
Traditional gluUnProject4 implementation.
| winx | |
| winy | |
| winz | |
| clipw | |
| viewport | Rect4i viewport |
| near | |
| far | |
| objPos | 4 component object coordinate, the result |
Definition at line 1039 of file pmvmat4.hpp.
|
inlinenoexcept |
Map two window coordinates w/ shared X/Y and distinctive Z to a Ray in object space.
The resulting Ray maybe used for picking using a bounding box of a shape also in object space.
Notes for picking winz0 and winz1:
| winx | |
| winy | |
| winz0 | |
| winz1 | |
| viewport | |
| ray | storage for the resulting Ray |
Definition at line 1068 of file pmvmat4.hpp.
|
inlinenoexcept |
Map two window coordinates w/ shared X/Y and distinctive Z to a Ray in world space.
The resulting Ray maybe used for picking using a bounding box of a shape also in world space.
The INVERSE_PROJECTION must have been request in the constructor.
Notes for picking winz0 and winz1:
| winx | |
| winy | |
| winz0 | |
| winz1 | |
| matVi | the inverse view matrix |
| viewport | |
| ray | storage for the resulting Ray |
Definition at line 1102 of file pmvmat4.hpp.
|
inlinenoexcept |
Map two window coordinates w/ shared X/Y and distinctive Z to a Ray in view space.
The resulting Ray maybe used for picking using a bounding box of a shape also in view space.
Notes for picking winz0 and winz1:
| winx | |
| winy | |
| winz0 | |
| winz1 | |
| viewport | |
| ray | storage for the resulting Ray |
Definition at line 1129 of file pmvmat4.hpp.
|
inlinenoexcept |
Definition at line 1134 of file pmvmat4.hpp.
|
inlinenoexcept |
|
inlineconstexprnoexcept |
Returns the modified bits due to mutable operations.
A modified bit is set, if the corresponding matrix had been modified by a mutable operation since last update() or getModifiedBits(true) call.
| clear | if true, clears the modified bits, otherwise leaves them untouched. |
Definition at line 1194 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Returns the dirty bits due to mutable operations, i.e.
INVERSE_MODELVIEW (if requested)INVERSE_PROJECTION (if requested)INVERSE_TRANSPOSED_MODELVIEW (if requested)FRUSTUM (always, cleared via getFrustum() A dirty bit is set, if the corresponding matrix had been modified by a mutable operation since last update() call and requested in the constructor PMVMatrix4(int).
update() clears the dirty state for the matrices and getFrustum() for FRUSTUM.
Definition at line 1229 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Returns true if the one of the requested bits are are set dirty due to mutable operations, i.e.
at least one of
A dirty bit is set, if the corresponding matrix had been modified by a mutable operation since last update() call and requested in the constructor PMVMatrix4(int).
update() clears the dirty state for the matrices and getFrustum() for FRUSTUM.
Definition at line 1256 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Sets the Modelview (Mv) matrix dirty and modified, i.e.
adds INVERSE_MODELVIEW | INVERSE_TRANSPOSED_MODELVIEW | MANUAL_BITS to dirty bits.
Definition at line 1265 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Sets the Projection (P) matrix dirty and modified, i.e.
adds INVERSE_PROJECTION | MANUAL_BITS to dirty bits.
Definition at line 1274 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Sets the Texture (T) matrix modified.
Definition at line 1282 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Returns the request bit mask, which uses bit values equal to the dirty mask and may contain.
The request bit mask is set by in the constructor PMVMatrix4(PMVMats).
Definition at line 1305 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Returns the pre-multiplied projection x modelview, P x Mv.
This Mat4 instance should be re-fetched via this method and not locally stored to have it updated from a potential modification of underlying projection and/or modelview matrix. update() has no effect on this Mat4.
This pre-multipled P x Mv is considered dirty, if its corresponding P matrix or Mv matrix has been modified since its last update.
Definition at line 1320 of file pmvmat4.hpp.
|
inlineconstexprnoexcept |
Returns the pre-multiplied inverse projection x modelview, if Mat4#invert(Mat4) succeeded, otherwise null.
This Mat4 instance should be re-fetched via this method and not locally stored to have it updated from a potential modification of underlying projection and/or modelview matrix. update() has no effect on this Mat4.
This pre-multipled invert(P x Mv) is considered dirty, if its corresponding P matrix or Mv matrix has been modified since its last update.
Definition at line 1342 of file pmvmat4.hpp.
|
inlinenoexcept |
Returns the frustum, derived from projection x modelview.
This Frustum instance should be re-fetched via this method and not locally stored to have it updated from a potential modification of underlying projection and/or modelview matrix. update() has no effect on this Frustum.
The Frustum is considered dirty, if its corresponding P matrix or Mv matrix has been modified since its last update.
Definition at line 1364 of file pmvmat4.hpp.
|
inlinenoexcept |
Update the derived inverse modelview (Mvi), inverse transposed modelview (Mvit) matrices if they are dirty and requested via the constructor PMVMatrix4(int).
Hence updates the following dirty bits.
The Frustum is updated only via getFrustum() separately.
The Mvi and Mvit matrices are considered dirty, if their corresponding Mv matrix has been modified since their last update.
Method is automatically called by SyncMat4 and SyncMatrices4f instances SyncAction as retrieved by e.g. makeSyncMvit(). This ensures an automatic update cycle if used with com.jogamp.opengl.GLUniformData.
Method may be called manually in case mutable operations has been called and caller operates on already fetched references, i.e. not calling getMvi(), getMvit() anymore.
Method clears the modified bits like getModifiedBits(true), which are set by any mutable operation. The modified bits have no impact on this method, but the return value.
Definition at line 1415 of file pmvmat4.hpp.