Compare commits
4 Commits
692eeff4a3
...
e778f64f00
Author | SHA1 | Date | |
---|---|---|---|
e778f64f00 | |||
a641c56381 | |||
4b2f344c5c | |||
014fce2c8e |
@ -1 +1 @@
|
||||
Subproject commit 6da4b9973812162a966de0db505572f25f1caaca
|
||||
Subproject commit 9d9fad791d9c6569189bcc57dd4b219df62bc98a
|
@ -38,7 +38,7 @@ class TestApp:public VulkanApplicationFramework
|
||||
private:
|
||||
|
||||
MaterialInstance * material_instance =nullptr;
|
||||
Renderable * render_obj =nullptr;
|
||||
Mesh * render_obj =nullptr;
|
||||
|
||||
Pipeline * pipeline =nullptr;
|
||||
|
||||
@ -74,7 +74,7 @@ private:
|
||||
if(!rpc.WriteVAB(VAN::Position, PositionFormat, position_data))return(false);
|
||||
if(!rpc.WriteVAB(VAN::Color, ColorFormat, color_data ))return(false);
|
||||
|
||||
render_obj=db->CreateRenderable(&rpc,material_instance,pipeline);
|
||||
render_obj=db->CreateMesh(&rpc,material_instance,pipeline);
|
||||
return(render_obj);
|
||||
}
|
||||
|
||||
|
@ -36,7 +36,7 @@ private:
|
||||
Camera cam;
|
||||
|
||||
MaterialInstance * material_instance =nullptr;
|
||||
Renderable * render_obj =nullptr;
|
||||
Mesh * render_obj =nullptr;
|
||||
DeviceBuffer * ubo_camera_info =nullptr;
|
||||
DeviceBuffer * ubo_color_material =nullptr;
|
||||
DeviceBuffer * ubo_line_config =nullptr;
|
||||
@ -118,7 +118,7 @@ private:
|
||||
|
||||
if(!primitive->Set(VAN::Position, db->CreateVAB(VF_V2F,VERTEX_COUNT,position_data)))return(false);
|
||||
|
||||
render_obj=db->CreateRenderable(primitive,material_instance,pipeline);
|
||||
render_obj=db->CreateMesh(primitive,material_instance,pipeline);
|
||||
return(true);
|
||||
}
|
||||
|
||||
|
@ -42,7 +42,7 @@ private:
|
||||
Camera cam;
|
||||
|
||||
MaterialInstance * material_instance =nullptr;
|
||||
Renderable * render_obj =nullptr;
|
||||
Mesh * render_obj =nullptr;
|
||||
|
||||
DeviceBuffer * ubo_camera_info =nullptr;
|
||||
DeviceBuffer * ubo_rb_config =nullptr;
|
||||
@ -140,7 +140,7 @@ private:
|
||||
|
||||
if(!primitive->Set(VAN::Position, db->CreateVAB(VF_V4I16,VERTEX_COUNT,position_data)))return(false);
|
||||
|
||||
render_obj=db->CreateRenderable(primitive,material_instance,pipeline);
|
||||
render_obj=db->CreateMesh(primitive,material_instance,pipeline);
|
||||
return(true);
|
||||
}
|
||||
|
||||
|
@ -38,7 +38,7 @@ private:
|
||||
|
||||
MaterialInstance * mi_billboard =nullptr;
|
||||
Pipeline * pipeline_billboard =nullptr;
|
||||
Renderable * ro_billboard =nullptr;
|
||||
Mesh * ro_billboard =nullptr;
|
||||
|
||||
Texture2D * texture =nullptr;
|
||||
Sampler * sampler =nullptr;
|
||||
@ -110,13 +110,13 @@ private:
|
||||
return(true);
|
||||
}
|
||||
|
||||
Renderable *Add(Primitive *r,MaterialInstance *mi,Pipeline *p)
|
||||
Mesh *Add(Primitive *r,MaterialInstance *mi,Pipeline *p)
|
||||
{
|
||||
Renderable *ri=db->CreateRenderable(r,mi,p);
|
||||
Mesh *ri=db->CreateMesh(r,mi,p);
|
||||
|
||||
if(!ri)
|
||||
{
|
||||
LOG_ERROR(OS_TEXT("Create Renderable failed."));
|
||||
LOG_ERROR(OS_TEXT("Create Mesh failed."));
|
||||
return(nullptr);
|
||||
}
|
||||
|
||||
@ -151,7 +151,7 @@ private:
|
||||
if(!pc.WriteVAB(VAN::Position,VF_V3F,position_data))
|
||||
return(false);
|
||||
|
||||
ro_billboard=db->CreateRenderable(&pc,mi_billboard,pipeline_billboard);
|
||||
ro_billboard=db->CreateMesh(&pc,mi_billboard,pipeline_billboard);
|
||||
if(!ro_billboard)
|
||||
return(false);
|
||||
}
|
||||
|
@ -38,7 +38,7 @@ private:
|
||||
SceneNode render_root;
|
||||
|
||||
MaterialInstance * material_instance =nullptr;
|
||||
Renderable * render_obj =nullptr;
|
||||
Mesh * render_obj =nullptr;
|
||||
|
||||
Pipeline * pipeline =nullptr;
|
||||
|
||||
@ -72,7 +72,7 @@ private:
|
||||
|
||||
bool InitVBO()
|
||||
{
|
||||
render_obj=CreateRenderable("Triangle",VERTEX_COUNT,material_instance,pipeline,
|
||||
render_obj=CreateMesh("Triangle",VERTEX_COUNT,material_instance,pipeline,
|
||||
{
|
||||
{VAN::Position, VF_V2F, position_data},
|
||||
{VAN::Color, VF_V4UN8, color_data }
|
||||
|
@ -38,7 +38,7 @@ private:
|
||||
struct
|
||||
{
|
||||
MaterialInstance * mi;
|
||||
Renderable * r;
|
||||
Mesh * r;
|
||||
}render_obj[DRAW_OBJECT_COUNT]{};
|
||||
|
||||
Pipeline * pipeline =nullptr;
|
||||
@ -95,7 +95,7 @@ private:
|
||||
|
||||
for(uint i=0;i<DRAW_OBJECT_COUNT;i++)
|
||||
{
|
||||
render_obj[i].r=db->CreateRenderable(prim,render_obj[i].mi,pipeline);
|
||||
render_obj[i].r=db->CreateMesh(prim,render_obj[i].mi,pipeline);
|
||||
|
||||
if(!render_obj[i].r)
|
||||
return(false);
|
||||
|
@ -68,7 +68,7 @@ private:
|
||||
#endif
|
||||
|
||||
MaterialInstance * material_instance =nullptr;
|
||||
Renderable * render_obj =nullptr;
|
||||
Mesh * render_obj =nullptr;
|
||||
|
||||
Pipeline * pipeline =nullptr;
|
||||
|
||||
@ -113,7 +113,7 @@ private:
|
||||
Float32toFloat16(position_data_hf,position_data_float,VERTEX_COUNT*2);
|
||||
#endif//USE_HALF_FLOAT_POSITION
|
||||
|
||||
render_obj=CreateRenderable("Triangle",VERTEX_COUNT,material_instance,pipeline,
|
||||
render_obj=CreateMesh("Triangle",VERTEX_COUNT,material_instance,pipeline,
|
||||
{
|
||||
{VAN::Position,PositionFormat,position_data},
|
||||
{VAN::Color, ColorFormat, color_data}
|
||||
|
@ -38,7 +38,7 @@ private:
|
||||
Color4f clear_color =Color4f(0.2f,0.2f,0.2f,1.0f);
|
||||
|
||||
MaterialInstance * material_instance =nullptr;
|
||||
Renderable * render_obj =nullptr;
|
||||
Mesh * render_obj =nullptr;
|
||||
|
||||
Pipeline * pipeline =nullptr;
|
||||
|
||||
@ -85,7 +85,7 @@ private:
|
||||
position_data[i][1]=position_data_float[i][1]*ext.height;
|
||||
}
|
||||
|
||||
render_obj=CreateRenderable("Triangle",VERTEX_COUNT,material_instance,pipeline,
|
||||
render_obj=CreateMesh("Triangle",VERTEX_COUNT,material_instance,pipeline,
|
||||
{
|
||||
{VAN::Position,POSITION_DATA_FORMAT,position_data},
|
||||
{VAN::Color, COLOR_DATA_FORMAT, color_data}
|
||||
|
@ -34,7 +34,7 @@ private:
|
||||
Color4f clear_color =Color4f(0.2f,0.2f,0.2f,1.0f);
|
||||
|
||||
MaterialInstance * material_instance =nullptr;
|
||||
Renderable * render_obj =nullptr;
|
||||
Mesh * render_obj =nullptr;
|
||||
|
||||
Pipeline * pipeline =nullptr;
|
||||
|
||||
@ -61,7 +61,7 @@ private:
|
||||
|
||||
bool InitVBO()
|
||||
{
|
||||
render_obj=CreateRenderable("Triangle",VERTEX_COUNT,material_instance,pipeline,
|
||||
render_obj=CreateMesh("Triangle",VERTEX_COUNT,material_instance,pipeline,
|
||||
{
|
||||
{VAN::Position,VF_V2F,position_data},
|
||||
{VAN::Color, VF_V4F,color_data}
|
||||
|
@ -15,7 +15,7 @@ private:
|
||||
TextRender * text_render =nullptr;
|
||||
|
||||
TextPrimitive * text_primitive =nullptr;
|
||||
Renderable * render_obj =nullptr;
|
||||
Mesh * render_obj =nullptr;
|
||||
|
||||
public:
|
||||
|
||||
@ -44,7 +44,7 @@ private:
|
||||
if(!text_primitive)
|
||||
return(false);
|
||||
|
||||
render_obj=text_render->CreateRenderable(text_primitive);
|
||||
render_obj=text_render->CreateMesh(text_primitive);
|
||||
if(!render_obj)
|
||||
return(false);
|
||||
|
||||
|
@ -34,7 +34,7 @@ enum class GizmoShape:uint
|
||||
bool InitGizmoResource(RenderResource *);
|
||||
void FreeGizmoResource();
|
||||
|
||||
Renderable *GetGizmoRenderable(const GizmoShape &shape,const GizmoColor &color);
|
||||
Mesh *GetGizmoRenderable(const GizmoShape &shape,const GizmoColor &color);
|
||||
|
||||
StaticMesh *GetGizmoMoveStaticMesh();
|
||||
StaticMesh *GetGizmoScaleStaticMesh();
|
||||
|
@ -45,22 +45,22 @@ void ClearGizmoMoveStaticMesh()
|
||||
|
||||
bool InitGizmoMoveStaticMesh()
|
||||
{
|
||||
Renderable *sphere=GetGizmoRenderable(GizmoShape::Sphere,GizmoColor::White);
|
||||
Renderable *cylinder[3]
|
||||
Mesh *sphere=GetGizmoRenderable(GizmoShape::Sphere,GizmoColor::White);
|
||||
Mesh *cylinder[3]
|
||||
{
|
||||
GetGizmoRenderable(GizmoShape::Cylinder,GizmoColor::Red),
|
||||
GetGizmoRenderable(GizmoShape::Cylinder,GizmoColor::Green),
|
||||
GetGizmoRenderable(GizmoShape::Cylinder,GizmoColor::Blue),
|
||||
};
|
||||
|
||||
Renderable *cone[3]
|
||||
Mesh *cone[3]
|
||||
{
|
||||
GetGizmoRenderable(GizmoShape::Cone,GizmoColor::Red),
|
||||
GetGizmoRenderable(GizmoShape::Cone,GizmoColor::Green),
|
||||
GetGizmoRenderable(GizmoShape::Cone,GizmoColor::Blue),
|
||||
};
|
||||
|
||||
Renderable *circle[3]=
|
||||
Mesh *circle[3]=
|
||||
{
|
||||
GetGizmoRenderable(GizmoShape::Circle,GizmoColor::Red),
|
||||
GetGizmoRenderable(GizmoShape::Circle,GizmoColor::Green),
|
||||
|
@ -22,7 +22,7 @@ void ClearGizmoRotateStaticMesh()
|
||||
|
||||
bool InitGizmoRotateStaticMesh()
|
||||
{
|
||||
Renderable *torus[4]
|
||||
Mesh *torus[4]
|
||||
{
|
||||
GetGizmoRenderable(GizmoShape::Torus,GizmoColor::Red),
|
||||
GetGizmoRenderable(GizmoShape::Torus,GizmoColor::Green),
|
||||
|
@ -45,22 +45,22 @@ void ClearGizmoScaleStaticMesh()
|
||||
|
||||
bool InitGizmoScaleStaticMesh()
|
||||
{
|
||||
Renderable *center_cube=GetGizmoRenderable(GizmoShape::Cube,GizmoColor::White);
|
||||
Renderable *cylinder[3]
|
||||
Mesh *center_cube=GetGizmoRenderable(GizmoShape::Cube,GizmoColor::White);
|
||||
Mesh *cylinder[3]
|
||||
{
|
||||
GetGizmoRenderable(GizmoShape::Cylinder,GizmoColor::Red),
|
||||
GetGizmoRenderable(GizmoShape::Cylinder,GizmoColor::Green),
|
||||
GetGizmoRenderable(GizmoShape::Cylinder,GizmoColor::Blue),
|
||||
};
|
||||
|
||||
Renderable *cube[3]
|
||||
Mesh *cube[3]
|
||||
{
|
||||
GetGizmoRenderable(GizmoShape::Cube,GizmoColor::Red),
|
||||
GetGizmoRenderable(GizmoShape::Cube,GizmoColor::Green),
|
||||
GetGizmoRenderable(GizmoShape::Cube,GizmoColor::Blue),
|
||||
};
|
||||
|
||||
Renderable *square[3]=
|
||||
Mesh *square[3]=
|
||||
{
|
||||
GetGizmoRenderable(GizmoShape::Square,GizmoColor::Red),
|
||||
GetGizmoRenderable(GizmoShape::Square,GizmoColor::Green),
|
||||
|
@ -43,7 +43,7 @@ namespace
|
||||
{
|
||||
Primitive *prim;
|
||||
|
||||
Renderable *renderable[size_t(GizmoColor::RANGE_SIZE)];
|
||||
Mesh *renderable[size_t(GizmoColor::RANGE_SIZE)];
|
||||
};
|
||||
|
||||
GizmoRenderable gizmo_rederable[size_t(GizmoShape::RANGE_SIZE)]{};
|
||||
@ -58,7 +58,7 @@ namespace
|
||||
gr->prim=prim;
|
||||
|
||||
for(uint i=0;i<uint(GizmoColor::RANGE_SIZE);i++)
|
||||
gr->renderable[i]=CreateRenderable(prim,gizmo_triangle.mi[i],p);
|
||||
gr->renderable[i]=CreateMesh(prim,gizmo_triangle.mi[i],p);
|
||||
}
|
||||
|
||||
bool InitMI(GizmoResource *gr)
|
||||
@ -306,7 +306,7 @@ void FreeGizmoResource()
|
||||
SAFE_CLEAR(gizmo_line.vdm);
|
||||
}
|
||||
|
||||
Renderable *GetGizmoRenderable(const GizmoShape &shape,const GizmoColor &color)
|
||||
Mesh *GetGizmoRenderable(const GizmoShape &shape,const GizmoColor &color)
|
||||
{
|
||||
if(!gizmo_rr)
|
||||
return(nullptr);
|
||||
|
@ -35,7 +35,7 @@ constexpr const float GIZMO_CYLINDER_OFFSET =GIZMO_CYLINDER_HALF_LENGTH+GIZM
|
||||
|
||||
constexpr const float GIZMO_TWO_AXIS_OFFSET =5.0F; ///<二轴调节点偏移量(方片或圆)
|
||||
|
||||
Renderable *GetGizmoRenderable(const GizmoShape &gs,const GizmoColor &);
|
||||
Mesh *GetGizmoRenderable(const GizmoShape &gs,const GizmoColor &);
|
||||
|
||||
StaticMesh *CreateGizmoStaticMesh(SceneNode *);
|
||||
|
||||
|
@ -93,9 +93,9 @@ private:
|
||||
return ro_plane;
|
||||
}
|
||||
|
||||
Renderable *Add(MaterialInstance *mi,const Matrix4f &mat)
|
||||
Mesh *Add(MaterialInstance *mi,const Matrix4f &mat)
|
||||
{
|
||||
Renderable *ri=db->CreateRenderable(ro_plane,mi,pipeline);
|
||||
Mesh *ri=db->CreateMesh(ro_plane,mi,pipeline);
|
||||
|
||||
if(!ri)
|
||||
return(nullptr);
|
||||
|
@ -74,9 +74,9 @@ private:
|
||||
return prim_plane_grid;
|
||||
}
|
||||
|
||||
Renderable *Add(MaterialInstance *mi,const Matrix4f &mat)
|
||||
Mesh *Add(MaterialInstance *mi,const Matrix4f &mat)
|
||||
{
|
||||
Renderable *ri=db->CreateRenderable(prim_plane_grid,mi,pipeline);
|
||||
Mesh *ri=db->CreateMesh(prim_plane_grid,mi,pipeline);
|
||||
|
||||
if(!ri)
|
||||
return(nullptr);
|
||||
|
@ -92,13 +92,13 @@ private:
|
||||
return(true);
|
||||
}
|
||||
|
||||
Renderable *Add(Primitive *r,MaterialInstance *mi,Pipeline *p)
|
||||
Mesh *Add(Primitive *r,MaterialInstance *mi,Pipeline *p)
|
||||
{
|
||||
Renderable *ri=db->CreateRenderable(r,mi,p);
|
||||
Mesh *ri=db->CreateMesh(r,mi,p);
|
||||
|
||||
if(!ri)
|
||||
{
|
||||
LOG_ERROR(OS_TEXT("Create Renderable failed."));
|
||||
LOG_ERROR(OS_TEXT("Create Mesh failed."));
|
||||
return(nullptr);
|
||||
}
|
||||
|
||||
|
@ -243,7 +243,7 @@ private:
|
||||
return(true);
|
||||
}
|
||||
|
||||
Renderable *Add(Primitive *r,MaterialInstance *mi,Pipeline *p,const Matrix4f &mat=Identity4f)
|
||||
Mesh *Add(Primitive *r,MaterialInstance *mi,Pipeline *p,const Matrix4f &mat=Identity4f)
|
||||
{
|
||||
if(!r)
|
||||
return(nullptr);
|
||||
@ -252,11 +252,11 @@ private:
|
||||
if(!p)
|
||||
return(nullptr);
|
||||
|
||||
Renderable *ri=db->CreateRenderable(r,mi,p);
|
||||
Mesh *ri=db->CreateMesh(r,mi,p);
|
||||
|
||||
if(!ri)
|
||||
{
|
||||
LOG_ERROR("Create Renderable failed! Primitive: "+r->GetName());
|
||||
LOG_ERROR("Create Mesh failed! Primitive: "+r->GetName());
|
||||
return(nullptr);
|
||||
}
|
||||
|
||||
|
@ -44,7 +44,7 @@ private:
|
||||
Sampler * sampler =nullptr;
|
||||
Material * material =nullptr;
|
||||
MaterialInstance * material_instance =nullptr;
|
||||
Renderable * render_obj =nullptr;
|
||||
Mesh * render_obj =nullptr;
|
||||
Pipeline * pipeline =nullptr;
|
||||
|
||||
private:
|
||||
@ -92,7 +92,7 @@ private:
|
||||
if(!rpc.WriteVAB(VAN::Position, VF_V2F, position_data))return(false);
|
||||
if(!rpc.WriteVAB(VAN::TexCoord, VF_V2F, tex_coord_data))return(false);
|
||||
|
||||
render_obj=db->CreateRenderable(&rpc,material_instance,pipeline);
|
||||
render_obj=db->CreateMesh(&rpc,material_instance,pipeline);
|
||||
return(render_obj);
|
||||
}
|
||||
|
||||
|
@ -40,7 +40,7 @@ private:
|
||||
Sampler * sampler =nullptr;
|
||||
Material * material =nullptr;
|
||||
MaterialInstance * material_instance =nullptr;
|
||||
Renderable * render_obj =nullptr;
|
||||
Mesh * render_obj =nullptr;
|
||||
Pipeline * pipeline =nullptr;
|
||||
|
||||
private:
|
||||
@ -88,7 +88,7 @@ private:
|
||||
if(!rpc.WriteVAB(VAN::Position,VF_V4F,position_data))return(false);
|
||||
if(!rpc.WriteVAB(VAN::TexCoord,VF_V4F,tex_coord_data))return(false);
|
||||
|
||||
render_obj=db->CreateRenderable(&rpc,material_instance,pipeline);
|
||||
render_obj=db->CreateMesh(&rpc,material_instance,pipeline);
|
||||
return(render_obj);
|
||||
}
|
||||
|
||||
|
@ -61,7 +61,7 @@ private:
|
||||
struct
|
||||
{
|
||||
MaterialInstance * mi;
|
||||
Renderable * r;
|
||||
Mesh * r;
|
||||
}render_obj[TexCount]{};
|
||||
|
||||
private:
|
||||
@ -144,7 +144,7 @@ private:
|
||||
|
||||
for(uint32_t i=0;i<TexCount;i++)
|
||||
{
|
||||
render_obj[i].r=db->CreateRenderable(prim_rectangle,render_obj[i].mi,pipeline);
|
||||
render_obj[i].r=db->CreateMesh(prim_rectangle,render_obj[i].mi,pipeline);
|
||||
|
||||
if(!render_obj[i].r)
|
||||
return(false);
|
||||
|
@ -5,7 +5,7 @@
|
||||
#include<hgl/filesystem/FileSystem.h>
|
||||
#include<hgl/graph/InlineGeometry.h>
|
||||
#include<hgl/graph/VKRenderResource.h>
|
||||
#include<hgl/graph/VKRenderable.h>
|
||||
#include<hgl/graph/Mesh.h>
|
||||
#include<hgl/graph/RenderList.h>
|
||||
|
||||
using namespace hgl;
|
||||
|
@ -5,7 +5,7 @@
|
||||
#include<hgl/filesystem/FileSystem.h>
|
||||
#include<hgl/graph/InlineGeometry.h>
|
||||
#include<hgl/graph/VKRenderResource.h>
|
||||
#include<hgl/graph/VKRenderable.h>
|
||||
#include<hgl/graph/Mesh.h>
|
||||
#include<hgl/graph/VKTexture.h>
|
||||
#include<hgl/graph/RenderList.h>
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
#include<hgl/filesystem/FileSystem.h>
|
||||
#include<hgl/graph/InlineGeometry.h>
|
||||
#include<hgl/graph/VKRenderResource.h>
|
||||
#include<hgl/graph/VKRenderable.h>
|
||||
#include<hgl/graph/Mesh.h>
|
||||
#include<hgl/graph/RenderList.h>
|
||||
#include<hgl/graph/VKTexture.h>
|
||||
#include<hgl/graph/VKImageView.h>
|
||||
|
@ -5,7 +5,7 @@
|
||||
#include<hgl/filesystem/FileSystem.h>
|
||||
#include<hgl/graph/InlineGeometry.h>
|
||||
#include<hgl/graph/VKRenderResource.h>
|
||||
#include<hgl/graph/VKRenderable.h>
|
||||
#include<hgl/graph/Mesh.h>
|
||||
#include<hgl/graph/VKTexture.h>
|
||||
#include<hgl/graph/RenderList.h>
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
#include<hgl/filesystem/FileSystem.h>
|
||||
#include<hgl/graph/InlineGeometry.h>
|
||||
#include<hgl/graph/VKRenderResource.h>
|
||||
#include<hgl/graph/VKRenderable.h>
|
||||
#include<hgl/graph/Mesh.h>
|
||||
#include<hgl/graph/VKTexture.h>
|
||||
#include<hgl/graph/RenderList.h>
|
||||
|
||||
|
@ -220,7 +220,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
bool BuildCommandBuffer(RenderCmdBuffer *cb,Framebuffer *fbo,Renderable *ri)
|
||||
bool BuildCommandBuffer(RenderCmdBuffer *cb,Framebuffer *fbo,Mesh *ri)
|
||||
{
|
||||
if(!ri)return(false);
|
||||
|
||||
@ -238,7 +238,7 @@ public:
|
||||
return(true);
|
||||
}
|
||||
|
||||
bool BuildCommandBuffer(uint32_t index,Renderable *ri)
|
||||
bool BuildCommandBuffer(uint32_t index,Mesh *ri)
|
||||
{
|
||||
if(!ri)return(false);
|
||||
|
||||
@ -246,7 +246,7 @@ public:
|
||||
sc_render_target->GetFramebuffer(),ri);
|
||||
}
|
||||
|
||||
bool BuildCommandBuffer(Renderable *ri)
|
||||
bool BuildCommandBuffer(Mesh *ri)
|
||||
{
|
||||
if(!ri)return(false);
|
||||
|
||||
@ -256,7 +256,7 @@ public:
|
||||
return(true);
|
||||
}
|
||||
|
||||
bool BuildCurrentCommandBuffer(Renderable *ri)
|
||||
bool BuildCurrentCommandBuffer(Mesh *ri)
|
||||
{
|
||||
if(!ri)return(false);
|
||||
|
||||
|
@ -91,7 +91,7 @@ namespace hgl
|
||||
const graph::VIL *vil,
|
||||
const std::initializer_list<graph::VertexAttribDataPtr> &vad_list);
|
||||
|
||||
graph::Renderable *CreateRenderable(const AnsiString &name,
|
||||
graph::Mesh *CreateMesh(const AnsiString &name,
|
||||
const uint32_t vertices_count,
|
||||
graph::MaterialInstance *mi,
|
||||
graph::Pipeline *pipeline,
|
||||
|
@ -1,13 +1,13 @@
|
||||
#pragma once
|
||||
|
||||
#include<hgl/component/PrimitiveComponent.h>
|
||||
#include<hgl/graph/VKRenderable.h>
|
||||
#include<hgl/graph/Mesh.h>
|
||||
|
||||
COMPONENT_NAMESPACE_BEGIN
|
||||
|
||||
struct StaticMeshComponentData:public ComponentData
|
||||
{
|
||||
Renderable *renderable;
|
||||
Mesh *renderable;
|
||||
};//struct StaticMeshComponentData
|
||||
|
||||
class StaticMeshComponent;
|
||||
|
@ -68,12 +68,12 @@ private:
|
||||
|
||||
MaterialInstance * mi;
|
||||
|
||||
const PrimitiveDataBuffer * pdb;
|
||||
const PrimitiveRenderData * prd;
|
||||
const MeshDataBuffer * pdb;
|
||||
const MeshRenderData * prd;
|
||||
|
||||
public:
|
||||
|
||||
void Set(Renderable *);
|
||||
void Set(Mesh *);
|
||||
};
|
||||
|
||||
IndirectDrawBuffer *icb_draw;
|
||||
@ -92,14 +92,14 @@ protected:
|
||||
|
||||
VABList * vab_list;
|
||||
|
||||
const PrimitiveDataBuffer * last_data_buffer;
|
||||
const MeshDataBuffer * last_data_buffer;
|
||||
const VDM * last_vdm;
|
||||
const PrimitiveRenderData * last_render_data;
|
||||
const MeshRenderData * last_render_data;
|
||||
|
||||
int first_indirect_draw_index=-1;
|
||||
uint indirect_draw_count=0;
|
||||
|
||||
bool BindVAB(const PrimitiveDataBuffer *,const uint);
|
||||
bool BindVAB(const MeshDataBuffer *,const uint);
|
||||
|
||||
void ProcIndirectRender();
|
||||
void Render(RenderItem *);
|
||||
|
@ -12,7 +12,7 @@ VK_NAMESPACE_BEGIN
|
||||
* 原始图元数据缓冲区<Br>
|
||||
* 提供在渲染之前的数据绑定信息
|
||||
*/
|
||||
struct PrimitiveDataBuffer:public Comparator<PrimitiveDataBuffer>
|
||||
struct MeshDataBuffer:public Comparator<MeshDataBuffer>
|
||||
{
|
||||
uint32_t vab_count;
|
||||
VkBuffer * vab_list;
|
||||
@ -29,17 +29,17 @@ struct PrimitiveDataBuffer:public Comparator<PrimitiveDataBuffer>
|
||||
|
||||
public:
|
||||
|
||||
PrimitiveDataBuffer(const uint32_t,IndexBuffer *,VertexDataManager *_v=nullptr);
|
||||
~PrimitiveDataBuffer();
|
||||
MeshDataBuffer(const uint32_t,IndexBuffer *,VertexDataManager *_v=nullptr);
|
||||
~MeshDataBuffer();
|
||||
|
||||
const int compare(const PrimitiveDataBuffer &pdb)const override;
|
||||
};//struct PrimitiveDataBuffer
|
||||
const int compare(const MeshDataBuffer &pdb)const override;
|
||||
};//struct MeshDataBuffer
|
||||
|
||||
/**
|
||||
* 原始图元渲染数据<Br>
|
||||
* 提供在渲染时的数据
|
||||
*/
|
||||
struct PrimitiveRenderData:public ComparatorData<PrimitiveRenderData>
|
||||
struct MeshRenderData:public ComparatorData<MeshRenderData>
|
||||
{
|
||||
//因为要VAB是流式访问,所以我们这个结构会被用做排序依据
|
||||
//也因此,把vertex_offset放在最前面
|
||||
@ -52,7 +52,7 @@ struct PrimitiveRenderData:public ComparatorData<PrimitiveRenderData>
|
||||
|
||||
public:
|
||||
|
||||
PrimitiveRenderData(const uint32_t vc,const uint32_t ic,const int32_t vo=0,const uint32_t fi=0)
|
||||
MeshRenderData(const uint32_t vc,const uint32_t ic,const int32_t vo=0,const uint32_t fi=0)
|
||||
{
|
||||
vertex_count =vc;
|
||||
index_count =ic;
|
||||
@ -62,32 +62,31 @@ public:
|
||||
};
|
||||
|
||||
/**
|
||||
* 原始可渲染对象(即仅一个模型一个材质)
|
||||
* 未来考虑改名StaticMesh哦!
|
||||
* 网格体(网格中的最小渲染单位)
|
||||
*/
|
||||
class Renderable ///可渲染对象实例
|
||||
class Mesh
|
||||
{
|
||||
Pipeline * pipeline;
|
||||
MaterialInstance * mat_inst;
|
||||
Primitive * primitive;
|
||||
|
||||
PrimitiveDataBuffer * primitive_data_buffer;
|
||||
PrimitiveRenderData * primitive_render_data;
|
||||
MeshDataBuffer * data_buffer;
|
||||
MeshRenderData * render_data;
|
||||
|
||||
private:
|
||||
|
||||
friend Renderable *CreateRenderable(Primitive *,MaterialInstance *,Pipeline *);
|
||||
friend Mesh *CreateMesh(Primitive *,MaterialInstance *,Pipeline *);
|
||||
|
||||
Renderable(Primitive *,MaterialInstance *,Pipeline *,PrimitiveDataBuffer *,PrimitiveRenderData *);
|
||||
Mesh(Primitive *,MaterialInstance *,Pipeline *,MeshDataBuffer *,MeshRenderData *);
|
||||
|
||||
public:
|
||||
|
||||
virtual ~Renderable()
|
||||
virtual ~Mesh()
|
||||
{
|
||||
//需要在这里添加删除pipeline/desc_sets/primitive引用计数的代码
|
||||
|
||||
SAFE_CLEAR(primitive_data_buffer);
|
||||
SAFE_CLEAR(primitive_render_data);
|
||||
SAFE_CLEAR(data_buffer);
|
||||
SAFE_CLEAR(render_data);
|
||||
}
|
||||
|
||||
void UpdatePipeline (Pipeline *p){pipeline=p;}
|
||||
@ -99,8 +98,8 @@ public:
|
||||
Primitive * GetPrimitive (){return primitive;}
|
||||
const AABB & GetBoundingBox ()const{return primitive->GetBoundingBox();}
|
||||
|
||||
const PrimitiveDataBuffer *GetDataBuffer ()const{return primitive_data_buffer;}
|
||||
const PrimitiveRenderData *GetRenderData ()const{return primitive_render_data;}
|
||||
const MeshDataBuffer * GetDataBuffer ()const{return data_buffer;}
|
||||
const MeshRenderData * GetRenderData ()const{return render_data;}
|
||||
|
||||
public:
|
||||
|
||||
@ -115,7 +114,7 @@ public:
|
||||
mat_inst=mi;
|
||||
return(true);
|
||||
}
|
||||
};//class Renderable
|
||||
};//class Mesh
|
||||
|
||||
Renderable *CreateRenderable(Primitive *,MaterialInstance *,Pipeline *);
|
||||
Mesh *CreateMesh(Primitive *,MaterialInstance *,Pipeline *);
|
||||
VK_NAMESPACE_END
|
@ -7,7 +7,7 @@ namespace hgl
|
||||
{
|
||||
namespace graph
|
||||
{
|
||||
class Renderable;
|
||||
class Mesh;
|
||||
class MaterialInstance;
|
||||
class SceneNode;
|
||||
|
||||
|
@ -31,7 +31,7 @@ namespace hgl
|
||||
AABB LocalBoundingBox; ///<本地坐标绑定盒
|
||||
//AABB WorldBoundingBox; ///<世界坐标绑定盒
|
||||
|
||||
Renderable *render_obj=nullptr; ///<可渲染实例
|
||||
Mesh *render_obj=nullptr; ///<可渲染实例
|
||||
|
||||
protected:
|
||||
|
||||
@ -51,9 +51,9 @@ namespace hgl
|
||||
SceneNode(const SceneNode &)=delete;
|
||||
SceneNode(const SceneNode *)=delete;
|
||||
SceneNode(const SceneOrient &so ):SceneOrient(so) {}
|
||||
SceneNode( Renderable *ri ) {render_obj=ri;}
|
||||
SceneNode( Mesh *ri ) {render_obj=ri;}
|
||||
SceneNode(const Matrix4f &mat ):SceneOrient(mat) {}
|
||||
SceneNode(const Matrix4f &mat, Renderable *ri ):SceneOrient(mat) {render_obj=ri;}
|
||||
SceneNode(const Matrix4f &mat, Mesh *ri ):SceneOrient(mat) {render_obj=ri;}
|
||||
|
||||
public:
|
||||
|
||||
@ -85,9 +85,9 @@ namespace hgl
|
||||
SceneNode * GetParent() noexcept{return ParentNode;}
|
||||
const SceneNode * GetParent()const noexcept{return ParentNode;}
|
||||
|
||||
void SetRenderable(Renderable *);
|
||||
Renderable *GetRenderable() noexcept{return render_obj;}
|
||||
const Renderable *GetRenderable()const noexcept{return render_obj;}
|
||||
void SetRenderable(Mesh *);
|
||||
Mesh * GetRenderable() noexcept{return render_obj;}
|
||||
const Mesh * GetRenderable()const noexcept{return render_obj;}
|
||||
|
||||
SceneNode *Add(SceneNode *sn)
|
||||
{
|
||||
|
@ -73,8 +73,8 @@ class DeviceBuffer;
|
||||
struct DeviceBufferData;
|
||||
template<typename T> class DeviceBufferMap;
|
||||
|
||||
struct PrimitiveDataBuffer;
|
||||
struct PrimitiveRenderData;
|
||||
struct MeshDataBuffer;
|
||||
struct MeshRenderData;
|
||||
|
||||
class VertexAttribBuffer;
|
||||
using VAB=VertexAttribBuffer;
|
||||
@ -123,7 +123,7 @@ using VIL=VertexInputLayout;
|
||||
|
||||
class PrimitiveData;
|
||||
class Primitive;
|
||||
class Renderable;
|
||||
class Mesh;
|
||||
|
||||
class VertexDataManager;
|
||||
using VDM=VertexDataManager;
|
||||
|
@ -4,7 +4,7 @@
|
||||
#include<hgl/graph/VKVABList.h>
|
||||
#include<hgl/graph/VKPipeline.h>
|
||||
#include<hgl/graph/VKDescriptorSet.h>
|
||||
#include<hgl/graph/VKRenderable.h>
|
||||
#include<hgl/graph/Mesh.h>
|
||||
#include<hgl/color/Color4f.h>
|
||||
VK_NAMESPACE_BEGIN
|
||||
class VulkanCmdBuffer
|
||||
@ -202,7 +202,7 @@ public:
|
||||
|
||||
void BindIBO(IndexBuffer *,const VkDeviceSize byte_offset=0);
|
||||
|
||||
bool BindDataBuffer(const PrimitiveDataBuffer *);
|
||||
bool BindDataBuffer(const MeshDataBuffer *);
|
||||
|
||||
void SetViewport (uint32_t first,uint32_t count,const VkViewport *vp) {vkCmdSetViewport(cmd_buf,first,count,vp);}
|
||||
void SetScissor (uint32_t first,uint32_t count,const VkRect2D *sci) {vkCmdSetScissor(cmd_buf,first,count,sci);}
|
||||
@ -239,13 +239,13 @@ public: //draw
|
||||
void DrawIndirect (VkBuffer buf, uint32_t drawCount,uint32_t stride=sizeof(VkDrawIndirectCommand )){return DrawIndirect( buf,0,drawCount,stride);}
|
||||
void DrawIndexedIndirect(VkBuffer buf, uint32_t drawCount,uint32_t stride=sizeof(VkDrawIndexedIndirectCommand )){return DrawIndexedIndirect( buf,0,drawCount,stride);}
|
||||
|
||||
void Draw (const PrimitiveDataBuffer *prb,const PrimitiveRenderData *prd,const uint32_t instance_count=1,const uint32_t first_instance=0);
|
||||
void Draw (const MeshDataBuffer *prb,const MeshRenderData *prd,const uint32_t instance_count=1,const uint32_t first_instance=0);
|
||||
|
||||
public: //dynamic state
|
||||
|
||||
public:
|
||||
|
||||
void Render(Renderable *ri)
|
||||
void Render(Mesh *ri)
|
||||
{
|
||||
if(!ri)return;
|
||||
|
||||
|
@ -11,7 +11,7 @@
|
||||
#include<hgl/graph/VKTexture.h>
|
||||
#include<hgl/graph/VKMaterialParameters.h>
|
||||
#include<hgl/graph/VKMaterialInstance.h>
|
||||
#include<hgl/graph/VKRenderable.h>
|
||||
#include<hgl/graph/Mesh.h>
|
||||
#include<hgl/graph/font/TextPrimitive.h>
|
||||
#include<hgl/type/ObjectManage.h>
|
||||
#include<hgl/shadergen/MaterialCreateInfo.h>
|
||||
@ -54,7 +54,7 @@ class RenderResource
|
||||
IDObjectManage<PrimitiveID, Primitive> rm_primitives; ///<图元合集
|
||||
IDObjectManage<BufferID, DeviceBuffer> rm_buffers; ///<顶点缓冲区合集
|
||||
IDObjectManage<SamplerID, Sampler> rm_samplers; ///<采样器合集
|
||||
IDObjectManage<RenderableID, Renderable> rm_renderables; ///<渲染实例集合集
|
||||
IDObjectManage<RenderableID, Mesh> rm_renderables; ///<渲染实例集合集
|
||||
|
||||
private:
|
||||
|
||||
@ -97,7 +97,7 @@ public: //添加数据到管理器(如果指针为nullptr会返回-1)
|
||||
PrimitiveID Add(Primitive * p ){return rm_primitives.Add(p);}
|
||||
BufferID Add(DeviceBuffer * buf ){return rm_buffers.Add(buf);}
|
||||
SamplerID Add(Sampler * s ){return rm_samplers.Add(s);}
|
||||
RenderableID Add(Renderable * r ){return rm_renderables.Add(r);}
|
||||
RenderableID Add(Mesh * r ){return rm_renderables.Add(r);}
|
||||
|
||||
public: // VAB/VAO
|
||||
|
||||
@ -143,8 +143,8 @@ public: //Material
|
||||
|
||||
MaterialInstance * CreateMaterialInstance(const AnsiString &mtl_name,const mtl::MaterialCreateInfo *,const VILConfig *vil_cfg=nullptr);
|
||||
|
||||
Renderable * CreateRenderable(Primitive *r,MaterialInstance *mi,Pipeline *p);
|
||||
Renderable * CreateRenderable(PrimitiveCreater *pc,MaterialInstance *mi,Pipeline *p);
|
||||
Mesh * CreateMesh(Primitive *r,MaterialInstance *mi,Pipeline *p);
|
||||
Mesh * CreateMesh(PrimitiveCreater *pc,MaterialInstance *mi,Pipeline *p);
|
||||
|
||||
Sampler * CreateSampler(VkSamplerCreateInfo *sci=nullptr);
|
||||
Sampler * CreateSampler(Texture *);
|
||||
@ -157,7 +157,7 @@ public: //Get
|
||||
Primitive * GetPrimitive (const PrimitiveID &id){return rm_primitives.Get(id);}
|
||||
DeviceBuffer * GetBuffer (const BufferID &id){return rm_buffers.Get(id);}
|
||||
Sampler * GetSampler (const SamplerID &id){return rm_samplers.Get(id);}
|
||||
Renderable * GetRenderable (const RenderableID &id){return rm_renderables.Get(id);}
|
||||
Mesh * GetRenderable (const RenderableID &id){return rm_renderables.Get(id);}
|
||||
|
||||
public: //Release
|
||||
|
||||
@ -167,7 +167,7 @@ public: //Release
|
||||
void Release(Primitive * p ){rm_primitives.Release(p);}
|
||||
void Release(DeviceBuffer * buf ){rm_buffers.Release(buf);}
|
||||
void Release(Sampler * s ){rm_samplers.Release(s);}
|
||||
void Release(Renderable * r ){rm_renderables.Release(r);}
|
||||
void Release(Mesh * r ){rm_renderables.Release(r);}
|
||||
};//class RenderResource
|
||||
|
||||
/**
|
||||
|
@ -44,7 +44,7 @@ namespace hgl
|
||||
|
||||
bool WriteVertex (const int16 *fp);
|
||||
bool WriteTexCoord (const float *fp);
|
||||
};//class TextPrimitive:public Renderable
|
||||
};//class TextPrimitive:public Mesh
|
||||
}//namespace graph
|
||||
}//namespace hgl
|
||||
#endif//HGL_GRAPH_FONT_PRIMITIVE_INCLUDE
|
||||
|
@ -58,7 +58,7 @@ namespace hgl
|
||||
|
||||
bool Layout(TextPrimitive *tr,const U16String &str);
|
||||
|
||||
Renderable *CreateRenderable(TextPrimitive *text_primitive);
|
||||
Mesh *CreateMesh(TextPrimitive *text_primitive);
|
||||
|
||||
void Release(TextPrimitive *);
|
||||
};//class TextRender
|
||||
|
@ -23,7 +23,9 @@ SET(SG_PRIMITIVE_SOURCE ${SG_INCLUDE_PATH}/VKPrimitive.h
|
||||
SOURCE_GROUP("Primitive" FILES ${SG_PRIMITIVE_SOURCE})
|
||||
|
||||
SET(TILE_SOURCE ${SG_INCLUDE_PATH}/TileData.h
|
||||
TileData.cpp)
|
||||
TileData.cpp
|
||||
Vulkan/VKTileData.cpp
|
||||
Vulkan/VKTileFont.cpp)
|
||||
|
||||
SOURCE_GROUP("Tile" FILES ${TILE_SOURCE})
|
||||
|
||||
@ -282,12 +284,10 @@ SET(VK_CMD_BUFFER_SOURCE ${SG_INCLUDE_PATH}/VKCommandBuffer.h
|
||||
|
||||
SOURCE_GROUP("Vulkan\\Command Buffer" FILES ${VK_CMD_BUFFER_SOURCE})
|
||||
|
||||
SET(VK_RENDERABLE_SOURCE ${SG_INCLUDE_PATH}/VKRenderable.h
|
||||
Vulkan/VKRenderable.cpp
|
||||
Vulkan/VKTileData.cpp
|
||||
Vulkan/VKTileFont.cpp)
|
||||
SET(VK_MESH_SOURCE ${SG_INCLUDE_PATH}/Mesh.h
|
||||
Vulkan/Mesh.cpp)
|
||||
|
||||
SOURCE_GROUP("Vulkan\\Renderable" FILES ${VK_RENDERABLE_SOURCE})
|
||||
SOURCE_GROUP("Vulkan\\Mesh" FILES ${VK_MESH_SOURCE})
|
||||
|
||||
set(COMPONENT_INCLUDE_PATH ${ROOT_INCLUDE_PATH}/hgl/component)
|
||||
|
||||
@ -361,7 +361,7 @@ SET(VULKAN_RENDER_SOURCE ${VK_RR_SOURCE}
|
||||
${VK_RENDER_TARGET_SOURCE}
|
||||
#${VK_RENDER_CONTEXT_SOURCE}
|
||||
${VK_CMD_BUFFER_SOURCE}
|
||||
${VK_RENDERABLE_SOURCE}
|
||||
${VK_MESH_SOURCE}
|
||||
${VK_RENDER_DEVICE_SOURCE})
|
||||
|
||||
add_cm_library(ULRE.SceneGraph "ULRE" ${SCENE_GRAPH_FILES}
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include<hgl/graph/VKRenderable.h>
|
||||
#include<hgl/graph/Mesh.h>
|
||||
#include<hgl/graph/VKMaterialInstance.h>
|
||||
#include<hgl/graph/VKMaterialParameters.h>
|
||||
#include<hgl/graph/VKMaterial.h>
|
||||
@ -7,7 +7,7 @@
|
||||
#include<hgl/log/LogInfo.h>
|
||||
|
||||
VK_NAMESPACE_BEGIN
|
||||
PrimitiveDataBuffer::PrimitiveDataBuffer(const uint32_t c,IndexBuffer *ib,VertexDataManager *_vdm)
|
||||
MeshDataBuffer::MeshDataBuffer(const uint32_t c,IndexBuffer *ib,VertexDataManager *_vdm)
|
||||
{
|
||||
vab_count=c;
|
||||
|
||||
@ -18,13 +18,13 @@ PrimitiveDataBuffer::PrimitiveDataBuffer(const uint32_t c,IndexBuffer *ib,Vertex
|
||||
vdm=_vdm;
|
||||
}
|
||||
|
||||
PrimitiveDataBuffer::~PrimitiveDataBuffer()
|
||||
MeshDataBuffer::~MeshDataBuffer()
|
||||
{
|
||||
delete[] vab_offset;
|
||||
delete[] vab_list;
|
||||
}
|
||||
|
||||
const int PrimitiveDataBuffer::compare(const PrimitiveDataBuffer &pdb)const
|
||||
const int MeshDataBuffer::compare(const MeshDataBuffer &pdb)const
|
||||
{
|
||||
ptrdiff_t off;
|
||||
|
||||
@ -52,17 +52,17 @@ const int PrimitiveDataBuffer::compare(const PrimitiveDataBuffer &pdb)const
|
||||
return off;
|
||||
}
|
||||
|
||||
Renderable::Renderable(Primitive *r,MaterialInstance *mi,Pipeline *p,PrimitiveDataBuffer *pdb,PrimitiveRenderData *prd)
|
||||
Mesh::Mesh(Primitive *r,MaterialInstance *mi,Pipeline *p,MeshDataBuffer *pdb,MeshRenderData *prd)
|
||||
{
|
||||
primitive=r;
|
||||
pipeline=p;
|
||||
mat_inst=mi;
|
||||
|
||||
primitive_data_buffer=pdb;
|
||||
primitive_render_data=prd;
|
||||
data_buffer=pdb;
|
||||
render_data=prd;
|
||||
}
|
||||
|
||||
Renderable *CreateRenderable(Primitive *prim,MaterialInstance *mi,Pipeline *p)
|
||||
Mesh *CreateMesh(Primitive *prim,MaterialInstance *mi,Pipeline *p)
|
||||
{
|
||||
if(!prim||!mi||!p)return(nullptr);
|
||||
|
||||
@ -76,13 +76,13 @@ Renderable *CreateRenderable(Primitive *prim,MaterialInstance *mi,Pipeline *p)
|
||||
|
||||
if(prim->GetVABCount()<input_count) //小于材质要求的数量?那自然是不行的
|
||||
{
|
||||
LOG_ERROR("[FATAL ERROR] input buffer count of Renderable lesser than Material, Material name: "+mtl_name);
|
||||
LOG_ERROR("[FATAL ERROR] input buffer count of Mesh lesser than Material, Material name: "+mtl_name);
|
||||
|
||||
return(nullptr);
|
||||
}
|
||||
|
||||
PrimitiveDataBuffer *pdb=new PrimitiveDataBuffer(input_count,prim->GetIBO(),prim->GetVDM());
|
||||
PrimitiveRenderData *prd=new PrimitiveRenderData(prim->GetVertexCount(),prim->GetIndexCount(),prim->GetVertexOffset(),prim->GetFirstIndex());
|
||||
MeshDataBuffer *pdb=new MeshDataBuffer(input_count,prim->GetIBO(),prim->GetVDM());
|
||||
MeshRenderData *prd=new MeshRenderData(prim->GetVertexCount(),prim->GetIndexCount(),prim->GetVertexOffset(),prim->GetFirstIndex());
|
||||
|
||||
const VertexInputFormat *vif=vil->GetVIFList(VertexInputGroup::Basic);
|
||||
|
||||
@ -104,7 +104,7 @@ Renderable *CreateRenderable(Primitive *prim,MaterialInstance *mi,Pipeline *p)
|
||||
if(vab->GetFormat()!=vif->format)
|
||||
{
|
||||
LOG_ERROR( "[FATAL ERROR] VAB \""+AnsiString(vif->name)+
|
||||
AnsiString("\" format can't match Renderable, Material(")+mtl_name+
|
||||
AnsiString("\" format can't match Mesh, Material(")+mtl_name+
|
||||
AnsiString(") Format(")+GetVulkanFormatName(vif->format)+
|
||||
AnsiString("), VAB Format(")+GetVulkanFormatName(vab->GetFormat())+
|
||||
")");
|
||||
@ -114,7 +114,7 @@ Renderable *CreateRenderable(Primitive *prim,MaterialInstance *mi,Pipeline *p)
|
||||
if(vab->GetStride()!=vif->stride)
|
||||
{
|
||||
LOG_ERROR( "[FATAL ERROR] VAB \""+AnsiString(vif->name)+
|
||||
AnsiString("\" stride can't match Renderable, Material(")+mtl_name+
|
||||
AnsiString("\" stride can't match Mesh, Material(")+mtl_name+
|
||||
AnsiString(") stride(")+AnsiString::numberOf(vif->stride)+
|
||||
AnsiString("), VAB stride(")+AnsiString::numberOf(vab->GetStride())+
|
||||
")");
|
||||
@ -126,6 +126,6 @@ Renderable *CreateRenderable(Primitive *prim,MaterialInstance *mi,Pipeline *p)
|
||||
++vif;
|
||||
}
|
||||
|
||||
return(new Renderable(prim,mi,p,pdb,prd));
|
||||
return(new Mesh(prim,mi,p,pdb,prd));
|
||||
}
|
||||
VK_NAMESPACE_END
|
@ -1,7 +1,7 @@
|
||||
#include<hgl/graph/VKCommandBuffer.h>
|
||||
#include<hgl/graph/VKRenderPass.h>
|
||||
#include<hgl/graph/VKFramebuffer.h>
|
||||
#include<hgl/graph/VKRenderable.h>
|
||||
#include<hgl/graph/Mesh.h>
|
||||
#include<hgl/graph/VKDeviceAttribute.h>
|
||||
#include<hgl/graph/VKPhysicalDevice.h>
|
||||
#include<hgl/graph/VKIndexBuffer.h>
|
||||
@ -134,7 +134,7 @@ void RenderCmdBuffer::BindIBO(IndexBuffer *ibo,const VkDeviceSize byte_offset)
|
||||
VkIndexType(ibo->GetType()));
|
||||
}
|
||||
|
||||
bool RenderCmdBuffer::BindDataBuffer(const PrimitiveDataBuffer *pdb)
|
||||
bool RenderCmdBuffer::BindDataBuffer(const MeshDataBuffer *pdb)
|
||||
{
|
||||
if(!pdb)
|
||||
return(false);
|
||||
@ -178,7 +178,7 @@ void RenderCmdBuffer::DrawIndexedIndirect( VkBuffer buffer,
|
||||
vkCmdDrawIndexedIndirect(cmd_buf,buffer,offset+i*stride,1,stride);
|
||||
}
|
||||
|
||||
void RenderCmdBuffer::Draw(const PrimitiveDataBuffer *pdb,const PrimitiveRenderData *prd,const uint32_t instance_count,const uint32_t first_instance)
|
||||
void RenderCmdBuffer::Draw(const MeshDataBuffer *pdb,const MeshRenderData *prd,const uint32_t instance_count,const uint32_t first_instance)
|
||||
{
|
||||
if(!pdb||!prd)
|
||||
return;
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
VK_NAMESPACE_BEGIN
|
||||
|
||||
//bool Renderable::Set(const int stage_input_binding,VIL *vil,VkDeviceSize offset)
|
||||
//bool Mesh::Set(const int stage_input_binding,VIL *vil,VkDeviceSize offset)
|
||||
//{
|
||||
// if(stage_input_binding<0||stage_input_binding>=buf_count||!vil)return(false);
|
||||
//
|
||||
|
@ -1,6 +1,6 @@
|
||||
#include<hgl/graph/VKRenderResource.h>
|
||||
#include<hgl/graph/VKDevice.h>
|
||||
#include<hgl/graph/VKRenderable.h>
|
||||
#include<hgl/graph/Mesh.h>
|
||||
#include<hgl/graph/VKInlinePipeline.h>
|
||||
#include<hgl/graph/VKVertexAttribBuffer.h>
|
||||
#include<hgl/graph/VKIndexBuffer.h>
|
||||
@ -80,12 +80,12 @@ MaterialInstance *RenderResource::CreateMaterialInstance(const AnsiString &mtl_n
|
||||
return CreateMaterialInstance(mtl,vil_cfg);
|
||||
}
|
||||
|
||||
Renderable *RenderResource::CreateRenderable(Primitive *r,MaterialInstance *mi,Pipeline *p)
|
||||
Mesh *RenderResource::CreateMesh(Primitive *r,MaterialInstance *mi,Pipeline *p)
|
||||
{
|
||||
if(!p||!mi||!r)
|
||||
return(nullptr);
|
||||
|
||||
Renderable *ri=VK_NAMESPACE::CreateRenderable(r,mi,p);
|
||||
Mesh *ri=VK_NAMESPACE::CreateMesh(r,mi,p);
|
||||
|
||||
if(ri)
|
||||
Add(ri);
|
||||
@ -93,7 +93,7 @@ Renderable *RenderResource::CreateRenderable(Primitive *r,MaterialInstance *mi,P
|
||||
return ri;
|
||||
}
|
||||
|
||||
Renderable *RenderResource::CreateRenderable(PrimitiveCreater *pc,MaterialInstance *mi,Pipeline *p)
|
||||
Mesh *RenderResource::CreateMesh(PrimitiveCreater *pc,MaterialInstance *mi,Pipeline *p)
|
||||
{
|
||||
if(!p||!mi||!pc)
|
||||
return(nullptr);
|
||||
@ -103,7 +103,7 @@ Renderable *RenderResource::CreateRenderable(PrimitiveCreater *pc,MaterialInstan
|
||||
if(!prim)
|
||||
return(nullptr);
|
||||
|
||||
Renderable *ri=VK_NAMESPACE::CreateRenderable(prim,mi,p);
|
||||
Mesh *ri=VK_NAMESPACE::CreateMesh(prim,mi,p);
|
||||
|
||||
if(ri)
|
||||
{
|
||||
|
@ -1,5 +1,5 @@
|
||||
#include<hgl/graph/MaterialRenderList.h>
|
||||
#include<hgl/graph/VKRenderable.h>
|
||||
#include<hgl/graph/Mesh.h>
|
||||
#include<hgl/graph/VKDevice.h>
|
||||
#include<hgl/graph/VKCommandBuffer.h>
|
||||
#include<hgl/graph/VKVertexInput.h>
|
||||
@ -31,8 +31,8 @@ const int RenderNode::compare(const RenderNode &other)const
|
||||
{
|
||||
hgl::int64 off;
|
||||
|
||||
hgl::graph::Renderable *ri_one=other.scene_node->GetRenderable();
|
||||
hgl::graph::Renderable *ri_two=scene_node->GetRenderable();
|
||||
hgl::graph::Mesh *ri_one=other.scene_node->GetRenderable();
|
||||
hgl::graph::Mesh *ri_two=scene_node->GetRenderable();
|
||||
|
||||
auto *prim_one=ri_one->GetPrimitive();
|
||||
auto *prim_two=ri_two->GetPrimitive();
|
||||
@ -203,7 +203,7 @@ void MaterialRenderList::UpdateMaterialInstance(SceneNode *sn)
|
||||
}
|
||||
}
|
||||
|
||||
void MaterialRenderList::RenderItem::Set(Renderable *ri)
|
||||
void MaterialRenderList::RenderItem::Set(Mesh *ri)
|
||||
{
|
||||
mi =ri->GetMaterialInstance();
|
||||
pdb =ri->GetDataBuffer();
|
||||
@ -261,7 +261,7 @@ void MaterialRenderList::Stat()
|
||||
ri_array.Alloc(count);
|
||||
|
||||
RenderItem *ri=ri_array.GetData();
|
||||
Renderable *ro=rn->scene_node->GetRenderable();
|
||||
Mesh *ro=rn->scene_node->GetRenderable();
|
||||
|
||||
ri_count=1;
|
||||
|
||||
@ -324,14 +324,14 @@ void MaterialRenderList::Stat()
|
||||
icb_draw_indexed->Unmap();
|
||||
}
|
||||
|
||||
bool MaterialRenderList::BindVAB(const PrimitiveDataBuffer *pdb,const uint ri_index)
|
||||
bool MaterialRenderList::BindVAB(const MeshDataBuffer *pdb,const uint ri_index)
|
||||
{
|
||||
//binding号都是在VertexInput::CreateVIL时连续紧密排列生成的,所以bind时first_binding写0就行了。
|
||||
|
||||
//const VIL *vil=last_vil;
|
||||
|
||||
//if(vil->GetCount(VertexInputGroup::Basic)!=prb->vab_count)
|
||||
// return(false); //这里基本不太可能,因为CreateRenderable时就会检查值是否一样
|
||||
// return(false); //这里基本不太可能,因为CreateMesh时就会检查值是否一样
|
||||
|
||||
vab_list->Restart();
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
#include<hgl/graph/VKMaterialInstance.h>
|
||||
#include<hgl/graph/SceneNode.h>
|
||||
#include<hgl/graph/RenderNode.h>
|
||||
#include<hgl/graph/VKRenderable.h>
|
||||
#include<hgl/graph/Mesh.h>
|
||||
#include<hgl/graph/VKRenderAssign.h>
|
||||
#include<hgl/graph/mtl/UBOCommon.h>
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
#include<hgl/graph/VK.h>
|
||||
#include<hgl/graph/VKCommandBuffer.h>
|
||||
#include<hgl/graph/VKMaterial.h>
|
||||
#include<hgl/graph/VKRenderable.h>
|
||||
#include<hgl/graph/Mesh.h>
|
||||
|
||||
namespace hgl
|
||||
{
|
||||
@ -22,7 +22,7 @@ namespace hgl
|
||||
{
|
||||
if(!sn)return(false);
|
||||
|
||||
Renderable *ri=sn->GetRenderable();
|
||||
Mesh *ri=sn->GetRenderable();
|
||||
|
||||
if(ri)
|
||||
{
|
||||
@ -89,7 +89,7 @@ namespace hgl
|
||||
{
|
||||
if(!sn)return;
|
||||
|
||||
Renderable *ri=sn->GetRenderable();
|
||||
Mesh *ri=sn->GetRenderable();
|
||||
|
||||
if(!ri)return;
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
#include<hgl/graph/SceneNode.h>
|
||||
#include<hgl/graph/VKRenderable.h>
|
||||
#include<hgl/graph/Mesh.h>
|
||||
namespace hgl
|
||||
{
|
||||
namespace graph
|
||||
@ -21,7 +21,7 @@ namespace hgl
|
||||
return node;
|
||||
}
|
||||
|
||||
void SceneNode::SetRenderable(Renderable *ri)
|
||||
void SceneNode::SetRenderable(Mesh *ri)
|
||||
{
|
||||
render_obj=ri;
|
||||
|
||||
|
@ -98,7 +98,7 @@ namespace hgl
|
||||
return prim;
|
||||
}
|
||||
|
||||
graph::Renderable *WorkObject::CreateRenderable( const AnsiString &name,
|
||||
graph::Mesh *WorkObject::CreateMesh( const AnsiString &name,
|
||||
const uint32_t vertices_count,
|
||||
graph::MaterialInstance *mi,
|
||||
graph::Pipeline *pipeline,
|
||||
@ -109,6 +109,6 @@ namespace hgl
|
||||
if(!prim)
|
||||
return(nullptr);
|
||||
|
||||
return db->CreateRenderable(prim,mi,pipeline);
|
||||
return db->CreateMesh(prim,mi,pipeline);
|
||||
}
|
||||
}//namespcae hgl
|
||||
|
Loading…
x
Reference in New Issue
Block a user