from user Ewyncat: adds invcameratrans, cameratoscrren, and screentocamera postfx and shader matrix interfaces.

also a bit of backend work to normalize those later once we've proof-of-concepted the calcs
This commit is contained in:
AzaezelX 2019-09-06 14:25:17 -05:00
parent 7c3bd49615
commit 022b87cac2
9 changed files with 53 additions and 1 deletions

View file

@ -43,6 +43,7 @@ class MatrixSet
ObjectToWorld = 0, // World
WorldToCamera, // View
CameraToScreen, // Projection
ScreenToCamera, // Projection^-1
ObjectToScreen, // World * View * Proj
ObjectToCamera, // World * View
WorldToObject, // World^-1
@ -63,6 +64,7 @@ class MatrixSet
MATRIX_SET_GET_VALUE(ObjectToWorld);
MATRIX_SET_GET_VALUE(WorldToCamera);
MATRIX_SET_GET_VALUE(CameraToScreen);
MATRIX_SET_GET_VALUE(ScreenToCamera);
MATRIX_SET_GET_VALUE(ObjectToCamera);
MATRIX_SET_GET_VALUE(WorldToObject);
MATRIX_SET_GET_VALUE(CameraToWorld);
@ -82,6 +84,8 @@ class MatrixSet
MATRIX_SET_MULT_ASSIGN(WorldToScreen, ObjectToWorld, ObjectToScreen);
MATRIX_SET_IS_INVERSE_OF(ScreenToCamera, CameraToScreen);
public:
MatrixSet();
@ -89,6 +93,7 @@ public:
inline const MatrixF &getObjectToWorld() const { return mTransform[ObjectToWorld]; }
inline const MatrixF &getWorldToCamera() const { return mTransform[WorldToCamera]; }
inline const MatrixF &getCameraToScreen() const { return mTransform[CameraToScreen]; }
inline const MatrixF &getScreenToCamera() const { return mTransform[ScreenToCamera]; }
// Delegate driven, lazy-evaluation accessors
inline const MatrixF &getWorldToScreen() const { return mEvalDelegate[WorldToScreen](); }
@ -131,6 +136,7 @@ public:
mTransform[CameraToScreen] = projection;
mEvalDelegate[ObjectToScreen].bind(this, &MatrixSet::MATRIX_SET_MULT_ASSIGN_FN(WorldToScreen, ObjectToWorld, ObjectToScreen));
mEvalDelegate[WorldToScreen].bind(this, &MatrixSet::MATRIX_SET_MULT_ASSIGN_FN(CameraToScreen, WorldToCamera, WorldToScreen));
mEvalDelegate[ScreenToCamera].bind(this, &MatrixSet::MATRIX_SET_IS_INVERSE_OF_FN(ScreenToCamera, CameraToScreen));
}
void setSceneView(const MatrixF &view)