standalone RenderList2D

This commit is contained in:
2023-03-24 22:14:43 +08:00
parent 19a20411d8
commit 8e52595123
8 changed files with 73 additions and 179 deletions

View File

@@ -13,25 +13,26 @@ namespace hgl
{
namespace graph
{
using MaterialSets=SortedSets<Material *>;
/**
* 渲染对象列表<br>
* 已经展开的渲染对象列表产生mvp用UBO/SSBO等数据最终创建RenderCommandBuffer
*/
class RenderList
{
protected:
protected:
GPUDevice * device;
RenderCmdBuffer *cmd_buf;
GPUDevice * device;
RenderCmdBuffer * cmd_buf;
private:
RenderNodeList render_node_list; ///<场景节点列表
MaterialSets material_sets; ///<材质合集
GPUArrayBuffer * mvp_array;
CameraInfo camera_info;
RenderNodeComparator *render_node_comparator;
RenderNode3DList render_node_list; ///<场景节点列表
MaterialSets material_sets; ///<材质合集
RenderNode3DComparator *render_node_comparator;
private:
@@ -61,49 +62,11 @@ namespace hgl
RenderList(GPUDevice *);
virtual ~RenderList();
virtual bool Expend(const CameraInfo &,SceneNode *);
virtual bool Render(RenderCmdBuffer *);
};//class RenderList
class RenderList2D:public RenderList
{
protected:
virtual bool Begin() override;
virtual bool Expend(SceneNode *) override;
virtual void End() override;
public:
RenderList2D();
virtual ~RenderList2D() override;
virtual bool Expend(SceneNode *);
};
class RenderList3D:public RenderList
{
protected:
CameraInfo camera_info;
GPUArrayBuffer *mvp_array;
protected:
virtual bool Begin() override;
virtual bool Expend(SceneNode *) override;
virtual void End() override;
public:
RenderList3D();
virtual ~RenderList3D() override;
bool Expend(const CameraInfo &,SceneNode *);
};
}//namespace graph
}//namespace hgl
#endif//HGL_GRAPH_RENDER_LIST_INCLUDE

View File

@@ -1,37 +1,34 @@
#ifndef HGL_GRAPH_RENDER_LIST_INCLUDE
#define HGL_GRAPH_RENDER_LIST_INCLUDE
#ifndef HGL_GRAPH_RENDER_LIST_2D_INCLUDE
#define HGL_GRAPH_RENDER_LIST_2D_INCLUDE
#include<hgl/graph/VK.h>
#include<hgl/graph/Camera.h>
#include<hgl/graph/SceneNode.h>
#include<hgl/graph/RenderNode.h>
#include<hgl/graph/RenderNode2D.h>
#include<hgl/graph/VKArrayBuffer.h>
#include<hgl/graph/SceneInfo.h>
#include<hgl/color/Color4f.h>
#include<hgl/type/SortedSets.h>
#include<hgl/graph/VKMaterial.h>
namespace hgl
{
namespace graph
{
using MaterialSets=SortedSets<Material *>;
/**
* 渲染对象列表<br>
* 已经展开的渲染对象列表产生mvp用UBO/SSBO等数据最终创建RenderCommandBuffer
*/
class RenderList
class RenderList2D
{
protected:
GPUDevice * device;
RenderCmdBuffer *cmd_buf;
GPUDevice * device;
RenderCmdBuffer * cmd_buf;
private:
RenderNodeList render_node_list; ///<场景节点列表
MaterialSets material_sets; ///<材质合集
// GPUArrayBuffer * mvp_array;
RenderNodeComparator *render_node_comparator;
RenderNode2DList render_node_list; ///<场景节点列表
MaterialSets material_sets; ///<材质合集
RenderNode2DComparator render_node_comparator;
private:
@@ -46,7 +43,7 @@ namespace hgl
protected:
virtual bool Begin();
virtual bool Expend(SceneNode *);
virtual bool ExpendNode(SceneNode *);
virtual void End();
private:
@@ -59,51 +56,13 @@ namespace hgl
public:
RenderList(GPUDevice *);
virtual ~RenderList();
RenderList2D(GPUDevice *);
virtual ~RenderList2D();
virtual bool Expend(const CameraInfo &,SceneNode *);
virtual bool Expend(SceneNode *);
virtual bool Render(RenderCmdBuffer *);
};//class RenderList
class RenderList2D:public RenderList
{
protected:
virtual bool Begin() override;
virtual bool Expend(SceneNode *) override;
virtual void End() override;
public:
RenderList2D();
virtual ~RenderList2D() override;
virtual bool Expend(SceneNode *);
};
class RenderList3D:public RenderList
{
protected:
CameraInfo camera_info;
GPUArrayBuffer *mvp_array;
protected:
virtual bool Begin() override;
virtual bool Expend(SceneNode *) override;
virtual void End() override;
public:
RenderList3D();
virtual ~RenderList3D() override;
bool Expend(const CameraInfo &,SceneNode *);
};
};//class RenderList2D
}//namespace graph
}//namespace hgl
#endif//HGL_GRAPH_RENDER_LIST_INCLUDE
#endif//HGL_GRAPH_RENDER_LIST_2D_INCLUDE

View File

@@ -1,30 +1,16 @@
#ifndef HGL_GRAPH_RENDER_NODE_2D_INCLUDE
#define HGL_GRAPH_RENDER_NODE_2D_INCLUDE
#include<hgl/math/Vector.h>
#include<hgl/type/List.h>
#include<hgl/graph/SceneInfo.h>
#include<hgl/math/Math.h>
namespace hgl
{
namespace graph
{
class Renderable;
struct Transiton2D
{
Vector2f move;
Vector2f center; //中心点
//下方的不管是缩放还是旋转均以上面的center为中心变换
Vector2f scale;
float rotate;
float z;
};
struct RenderNode2D
{
Transiton2D trans;
Matrix3x4f local_to_world;
Renderable *ri;
};

View File

@@ -78,5 +78,7 @@ public:
bool Release(VIL *);
const uint GetVILCount();
};//class Material
using MaterialSets=SortedSets<Material *>;
VK_NAMESPACE_END
#endif//HGL_GRAPH_VULKAN_MATERIAL_INCLUDE

View File

@@ -43,7 +43,6 @@ public:
public:
#define MP_TYPE_IS(name) const bool is##name()const{return set_type==DescriptorSetType::name;}
MP_TYPE_IS(Skeleton)
MP_TYPE_IS(Instance)
MP_TYPE_IS(PerObject)
MP_TYPE_IS(PerMaterial)