ULRE/inc/hgl/graph/SceneInfo.h

39 lines
1.1 KiB
C
Raw Normal View History

2022-01-11 10:41:18 +08:00
#ifndef HGL_GRAPH_SCENE_INFO_INCLUDE
2021-05-24 20:44:20 +08:00
#define HGL_GRAPH_SCENE_INFO_INCLUDE
#include<hgl/math/Matrix.h>
#include<hgl/CompOperator.h>
namespace hgl
{
namespace graph
{
/**
2022-01-11 10:41:18 +08:00
* MVP矩阵
*/
struct MVPMatrix
{
Matrix4f l2w; ///< Local to World
2022-01-11 10:41:18 +08:00
//Matrix4f normal; ///<transpose(inverse(mat3(l2w)));
Matrix3x4f normal; ///<这里用3x4在Shader中是3x3(但实际它是3x4保存)
2022-01-11 10:41:18 +08:00
Matrix4f mv; ///< view * local_to_world
Matrix4f mvp; ///< projection * view * local_to_world
public:
2022-01-11 10:41:18 +08:00
void Set(const Matrix4f &w,const Matrix4f &vp,const Matrix4f &v)
{
l2w=w;
2022-01-11 10:41:18 +08:00
normal=transpose(inverse(l2w));
mv=v*l2w;
mvp=vp*l2w;
}
CompOperatorMemcmp(const MVPMatrix &);
};//struct MVPMatrix
constexpr size_t MVPMatrixBytes=sizeof(MVPMatrix);
}//namespace graph
2021-04-30 18:56:20 +08:00
}//namespace hgl
2021-05-24 20:44:20 +08:00
#endif//HGL_GRAPH_SCENE_INFO_INCLUDE