renamed to Primitive from Renderable
This commit is contained in:
parent
1e0e74da2f
commit
0fca6b8fc4
@ -1 +1 @@
|
||||
Subproject commit ecbb0682a2c5b33348431d44e64b3a4b775829ee
|
||||
Subproject commit 1bf41ad683d9fdfc092dee259567ac8054199bc6
|
@ -113,7 +113,7 @@ private:
|
||||
|
||||
bool InitVBO()
|
||||
{
|
||||
Renderable *render_obj=db->CreateRenderable(VERTEX_COUNT);
|
||||
Primitive *render_obj=db->CreatePrimitive(VERTEX_COUNT);
|
||||
if(!render_obj)return(false);
|
||||
|
||||
if(!render_obj->Set(VAN::Position, db->CreateVBO(VF_V2F,VERTEX_COUNT,position_data)))return(false);
|
||||
|
@ -129,7 +129,7 @@ private:
|
||||
|
||||
bool InitVBO()
|
||||
{
|
||||
Renderable *render_obj=db->CreateRenderable(VERTEX_COUNT);
|
||||
Primitive *render_obj=db->CreatePrimitive(VERTEX_COUNT);
|
||||
if(!render_obj)return(false);
|
||||
|
||||
if(!render_obj->Set(VAN::Position, db->CreateVBO(VF_V4I16,VERTEX_COUNT,position_data)))return(false);
|
||||
|
@ -43,7 +43,7 @@ private:
|
||||
GPUBuffer * ubo_atomsphere =nullptr;
|
||||
AtmosphereData atomsphere_data;
|
||||
|
||||
Renderable * ro_sphere =nullptr;
|
||||
Primitive * ro_sphere =nullptr;
|
||||
|
||||
private:
|
||||
|
||||
|
@ -41,9 +41,9 @@ private:
|
||||
Sampler * sampler =nullptr;
|
||||
TextureCube * texture =nullptr;
|
||||
|
||||
Renderable * ro_axis =nullptr;
|
||||
Renderable * ro_cube =nullptr;
|
||||
Renderable * ro_sphere =nullptr;
|
||||
Primitive * ro_axis =nullptr;
|
||||
Primitive * ro_cube =nullptr;
|
||||
Primitive * ro_sphere =nullptr;
|
||||
|
||||
private:
|
||||
|
||||
@ -148,7 +148,7 @@ private:
|
||||
return(true);
|
||||
}
|
||||
|
||||
SceneNode *Add(Renderable *r,MaterialInstance *mi,Pipeline *pl)
|
||||
SceneNode *Add(Primitive *r,MaterialInstance *mi,Pipeline *pl)
|
||||
{
|
||||
auto ri=db->CreateRenderableInstance(r,mi,pl);
|
||||
|
||||
|
@ -80,7 +80,7 @@ private:
|
||||
SubpassParam sp_gbuffer;
|
||||
SubpassParam sp_composition;
|
||||
|
||||
Renderable *ro_plane,
|
||||
Primitive *ro_plane,
|
||||
*ro_cube,
|
||||
*ro_sphere,
|
||||
*ro_torus,
|
||||
|
@ -14,7 +14,7 @@ private:
|
||||
|
||||
TextRender * text_render =nullptr;
|
||||
|
||||
TextRenderable * text_render_obj =nullptr;
|
||||
TextPrimitive * text_render_obj =nullptr;
|
||||
RenderableInstance *render_instance =nullptr;
|
||||
|
||||
public:
|
||||
@ -40,7 +40,7 @@ private:
|
||||
if(!text_render)
|
||||
return(false);
|
||||
|
||||
text_render_obj=text_render->CreateRenderable(str);
|
||||
text_render_obj=text_render->CreatePrimitive(str);
|
||||
if(!text_render_obj)
|
||||
return(false);
|
||||
|
||||
|
@ -40,7 +40,7 @@ private:
|
||||
|
||||
Sampler * sampler =nullptr;
|
||||
MaterialInstance * material_instance =nullptr;
|
||||
Renderable * render_obj =nullptr;
|
||||
Primitive * render_obj =nullptr;
|
||||
RenderableInstance *render_instance =nullptr;
|
||||
|
||||
Pipeline * pipeline =nullptr;
|
||||
@ -174,7 +174,7 @@ private:
|
||||
{
|
||||
const uint tile_count=tile_list.GetCount();
|
||||
|
||||
render_obj=db->CreateRenderable(tile_count);
|
||||
render_obj=db->CreatePrimitive(tile_count);
|
||||
if(!render_obj)return(false);
|
||||
|
||||
render_obj->Set(VAN::Position,db->CreateVBO(VF_V4F,tile_count,position_data));
|
||||
|
@ -32,7 +32,7 @@ private:
|
||||
Sampler * sampler =nullptr;
|
||||
Texture2D * texture =nullptr;
|
||||
|
||||
Renderable * ro_sphere =nullptr;
|
||||
Primitive * ro_sphere =nullptr;
|
||||
|
||||
private:
|
||||
|
||||
@ -74,7 +74,7 @@ private:
|
||||
return(true);
|
||||
}
|
||||
|
||||
SceneNode *Add(Renderable *r,MaterialInstance *mi,Pipeline *pl)
|
||||
SceneNode *Add(Primitive *r,MaterialInstance *mi,Pipeline *pl)
|
||||
{
|
||||
auto ri=db->CreateRenderableInstance(r,mi,pl);
|
||||
|
||||
|
@ -47,7 +47,7 @@ private:
|
||||
|
||||
bool InitVBO()
|
||||
{
|
||||
auto render_obj=db->CreateRenderable(VERTEX_COUNT);
|
||||
auto render_obj=db->CreatePrimitive(VERTEX_COUNT);
|
||||
if(!render_obj)return(false);
|
||||
|
||||
if(!render_obj->Set(VAN::Position,db->CreateVBO(VF_V2F,VERTEX_COUNT,position_data)))return(false);
|
||||
|
@ -35,7 +35,7 @@ private:
|
||||
|
||||
bool InitVBO()
|
||||
{
|
||||
auto render_obj=db->CreateRenderable(3);
|
||||
auto render_obj=db->CreatePrimitive(3);
|
||||
if(!render_obj)return(false);
|
||||
|
||||
renderable_instance=db->CreateRenderableInstance(render_obj,material_instance,pipeline);
|
||||
|
@ -28,7 +28,7 @@ private:
|
||||
MaterialInstance * material_instance =nullptr;
|
||||
Pipeline * pipeline =nullptr;
|
||||
|
||||
Renderable * ro_plane_grid[3];
|
||||
Primitive * ro_plane_grid[3];
|
||||
|
||||
private:
|
||||
|
||||
@ -47,7 +47,7 @@ private:
|
||||
return(true);
|
||||
}
|
||||
|
||||
RenderableInstance *Add(Renderable *r,const Matrix4f &mat)
|
||||
RenderableInstance *Add(Primitive *r,const Matrix4f &mat)
|
||||
{
|
||||
RenderableInstance *ri=db->CreateRenderableInstance(r,material_instance,pipeline);
|
||||
|
||||
|
@ -59,7 +59,7 @@ private:
|
||||
Texture2D * normal =nullptr;
|
||||
}texture;
|
||||
|
||||
Renderable *ro_axis,
|
||||
Primitive *ro_axis,
|
||||
*ro_cube,
|
||||
*ro_sphere,
|
||||
*ro_torus,
|
||||
@ -230,14 +230,14 @@ private:
|
||||
return(true);
|
||||
}
|
||||
|
||||
void Add(Renderable *r,Pipeline *pl)
|
||||
void Add(Primitive *r,Pipeline *pl)
|
||||
{
|
||||
auto ri=db->CreateRenderableInstance(r,material_instance,pl);
|
||||
|
||||
render_root.CreateSubNode(ri);
|
||||
}
|
||||
|
||||
void Add(Renderable *r,Pipeline *pl,const Matrix4f &mat)
|
||||
void Add(Primitive *r,Pipeline *pl,const Matrix4f &mat)
|
||||
{
|
||||
auto ri=db->CreateRenderableInstance(r,material_instance,pl);
|
||||
|
||||
|
@ -53,7 +53,7 @@ private:
|
||||
|
||||
bool InitVBO()
|
||||
{
|
||||
Renderable *render_obj=db->CreateRenderable(VERTEX_COUNT);
|
||||
Primitive *render_obj=db->CreatePrimitive(VERTEX_COUNT);
|
||||
if(!render_obj)return(false);
|
||||
|
||||
if(!render_obj->Set(VAN::Position, db->CreateVBO(VF_V2F,VERTEX_COUNT,position_data)))return(false);
|
||||
|
@ -23,13 +23,13 @@ using namespace hgl::graph;
|
||||
constexpr uint32_t SCREEN_WIDTH=1280;
|
||||
constexpr uint32_t SCREEN_HEIGHT=720;
|
||||
|
||||
vulkan::Renderable *CreateMeshRenderable(Database *db,vulkan::Material *mtl,const MeshData *mesh)
|
||||
vulkan::Primitive *CreateMeshRenderable(Database *db,vulkan::Material *mtl,const MeshData *mesh)
|
||||
{
|
||||
const vulkan::VertexShaderModule *vsm=mtl->GetVertexShaderModule();
|
||||
|
||||
uint draw_count=mesh->indices_count;
|
||||
|
||||
vulkan::Renderable *render_obj=nullptr;
|
||||
vulkan::Primitive *render_obj=nullptr;
|
||||
{
|
||||
const int vertex_binding=vsm->GetStageInputBinding("Vertex");
|
||||
|
||||
@ -109,13 +109,13 @@ private:
|
||||
|
||||
ModelData *model_data;
|
||||
|
||||
vulkan::Renderable **mesh_renderable;
|
||||
vulkan::Primitive **mesh_renderable;
|
||||
RenderableInstance **mesh_renderable_instance;
|
||||
|
||||
vulkan::Renderable *axis_renderable;
|
||||
vulkan::Primitive *axis_renderable;
|
||||
RenderableInstance *axis_renderable_instance;
|
||||
|
||||
vulkan::Renderable *bbox_renderable;
|
||||
vulkan::Primitive *bbox_renderable;
|
||||
RenderableInstance *bbox_renderable_instance;
|
||||
|
||||
private:
|
||||
@ -163,7 +163,7 @@ private:
|
||||
return(true);
|
||||
}
|
||||
|
||||
RenderableInstance *CreateRenderableInstance(const MP &mp,vulkan::Renderable *r)
|
||||
RenderableInstance *CreateRenderableInstance(const MP &mp,vulkan::Primitive *r)
|
||||
{
|
||||
return db->CreateRenderableInstance(mp.pipeline,mp.material_instance,r);
|
||||
}
|
||||
@ -173,7 +173,7 @@ private:
|
||||
const uint count=model_data->mesh_list.GetCount();
|
||||
MeshData **md=model_data->mesh_list.GetData();
|
||||
|
||||
mesh_renderable =new vulkan::Renderable *[count];
|
||||
mesh_renderable =new vulkan::Primitive *[count];
|
||||
mesh_renderable_instance=new RenderableInstance *[count];
|
||||
|
||||
for(uint i=0;i<count;i++)
|
||||
|
@ -105,7 +105,7 @@ public:
|
||||
cci.center_color=Vector4f(1,1,1,1);
|
||||
cci.border_color=Vector4f(1,1,1,0);
|
||||
|
||||
Renderable *render_obj=CreateRenderableCircle(db,os.material_instance->GetVAB(),&cci);
|
||||
Primitive *render_obj=CreateRenderableCircle(db,os.material_instance->GetVAB(),&cci);
|
||||
if(!render_obj)return(false);
|
||||
|
||||
os.renderable_instance=db->CreateRenderableInstance(render_obj,os.material_instance,os.pipeline);
|
||||
@ -141,7 +141,7 @@ public:
|
||||
|
||||
cci.tex_coord=true;
|
||||
|
||||
Renderable *render_obj=CreateRenderableCube(db,cube.material_instance->GetVAB(),&cci);
|
||||
Primitive *render_obj=CreateRenderableCube(db,cube.material_instance->GetVAB(),&cci);
|
||||
if(!render_obj)return(false);
|
||||
|
||||
cube.renderable_instance=db->CreateRenderableInstance(render_obj,cube.material_instance,cube.pipeline);
|
||||
|
@ -42,9 +42,9 @@ private:
|
||||
MaterialInstance * material_instance =nullptr;
|
||||
Pipeline * pipeline =nullptr;
|
||||
|
||||
Renderable * ro_plane_grid =nullptr;
|
||||
Primitive * ro_plane_grid =nullptr;
|
||||
|
||||
Renderable * ro_line =nullptr;
|
||||
Primitive * ro_line =nullptr;
|
||||
|
||||
VBO * vbo_pos =nullptr;
|
||||
|
||||
@ -67,7 +67,7 @@ private:
|
||||
return(true);
|
||||
}
|
||||
|
||||
RenderableInstance *Add(Renderable *r,const Matrix4f &mat)
|
||||
RenderableInstance *Add(Primitive *r,const Matrix4f &mat)
|
||||
{
|
||||
RenderableInstance *ri=db->CreateRenderableInstance(r,material_instance,pipeline);
|
||||
|
||||
@ -101,7 +101,7 @@ private:
|
||||
}
|
||||
|
||||
{
|
||||
ro_line=db->CreateRenderable(2);
|
||||
ro_line=db->CreatePrimitive(2);
|
||||
if(!ro_line)return(false);
|
||||
|
||||
if(!ro_line->Set(VAN::Position, vbo_pos=db->CreateVBO(VF_V3F,2,position_data)))return(false);
|
||||
|
@ -37,7 +37,7 @@ private:
|
||||
Texture2D * texture =nullptr;
|
||||
Sampler * sampler =nullptr;
|
||||
MaterialInstance * material_instance =nullptr;
|
||||
Renderable * render_obj =nullptr;
|
||||
Primitive * render_obj =nullptr;
|
||||
RenderableInstance *render_instance =nullptr;
|
||||
|
||||
Pipeline * pipeline =nullptr;
|
||||
@ -66,7 +66,7 @@ private:
|
||||
|
||||
bool InitVBO()
|
||||
{
|
||||
render_obj=db->CreateRenderable(VERTEX_COUNT);
|
||||
render_obj=db->CreatePrimitive(VERTEX_COUNT);
|
||||
|
||||
if(!render_obj)return(false);
|
||||
|
||||
|
@ -36,7 +36,7 @@ private:
|
||||
GPUBuffer * ubo_color =nullptr;
|
||||
GPUBuffer * ubo_sun =nullptr;
|
||||
|
||||
Renderable * renderable_object =nullptr;
|
||||
Primitive * renderable_object =nullptr;
|
||||
|
||||
Pipeline * pipeline =nullptr;
|
||||
|
||||
|
@ -34,7 +34,7 @@ private:
|
||||
|
||||
GPUBuffer * ubo_sky_color =nullptr;
|
||||
|
||||
Renderable * ro_skyphere =nullptr;
|
||||
Primitive * ro_skyphere =nullptr;
|
||||
|
||||
private:
|
||||
|
||||
@ -77,7 +77,7 @@ private:
|
||||
return(true);
|
||||
}
|
||||
|
||||
RenderableInstance *Add(Renderable *r,const Matrix4f &mat)
|
||||
RenderableInstance *Add(Primitive *r,const Matrix4f &mat)
|
||||
{
|
||||
RenderableInstance *ri=db->CreateRenderableInstance(r,material_instance,pipeline);
|
||||
|
||||
|
@ -28,7 +28,7 @@ constexpr uint32_t SCREEN_HEIGHT=720;
|
||||
/**
|
||||
* 创建一个地形网格
|
||||
*/
|
||||
Renderable *CreateRenderableTerrain(RenderResource *db,const VAB *vab,const TerrainCreateInfo *tci)
|
||||
Primitive *CreateRenderableTerrain(RenderResource *db,const VAB *vab,const TerrainCreateInfo *tci)
|
||||
{
|
||||
}
|
||||
|
||||
@ -47,7 +47,7 @@ private:
|
||||
MaterialInstance * material_instance =nullptr;
|
||||
Pipeline * pipeline =nullptr;
|
||||
|
||||
Renderable * renderable =nullptr;
|
||||
Primitive * renderable =nullptr;
|
||||
|
||||
private:
|
||||
|
||||
@ -66,7 +66,7 @@ private:
|
||||
return(true);
|
||||
}
|
||||
|
||||
RenderableInstance *Add(Renderable *r,const Matrix4f &mat)
|
||||
RenderableInstance *Add(Primitive *r,const Matrix4f &mat)
|
||||
{
|
||||
RenderableInstance *ri=db->CreateRenderableInstance(r,material_instance,pipeline);
|
||||
|
||||
|
@ -53,7 +53,7 @@ private:
|
||||
|
||||
bool InitVBO()
|
||||
{
|
||||
Renderable *render_obj=db->CreateRenderable(VERTEX_COUNT);
|
||||
Primitive *render_obj=db->CreatePrimitive(VERTEX_COUNT);
|
||||
if(!render_obj)return(false);
|
||||
|
||||
if(!render_obj->Set(VAN::Position, db->CreateVBO(VF_V2F,VERTEX_COUNT,position_data)))return(false);
|
||||
|
@ -56,7 +56,7 @@ private:
|
||||
|
||||
bool InitVBO()
|
||||
{
|
||||
auto render_obj=db->CreateRenderable(VERTEX_COUNT);
|
||||
auto render_obj=db->CreatePrimitive(VERTEX_COUNT);
|
||||
if(!render_obj)return(false);
|
||||
|
||||
if(!render_obj->Set(VAN::Position,db->CreateVBO(VF_V2F,VERTEX_COUNT,position_data)))return(false);
|
||||
|
@ -55,7 +55,7 @@ private:
|
||||
|
||||
bool InitVBO()
|
||||
{
|
||||
Renderable *render_obj=db->CreateRenderable(VERTEX_COUNT);
|
||||
Primitive *render_obj=db->CreatePrimitive(VERTEX_COUNT);
|
||||
if(!render_obj)return(false);
|
||||
|
||||
if(!render_obj->Set(VAN::Position, db->CreateVBO(VF_V2F,VERTEX_COUNT,position_data)))return(false);
|
||||
|
@ -80,7 +80,7 @@ private:
|
||||
|
||||
bool InitVBO()
|
||||
{
|
||||
auto render_obj=db->CreateRenderable(VERTEX_COUNT);
|
||||
auto render_obj=db->CreatePrimitive(VERTEX_COUNT);
|
||||
if(!render_obj)return(false);
|
||||
|
||||
if(!render_obj->Set(VAN::Position,db->CreateVBO(VF_V2F,VERTEX_COUNT,position_data)))return(false);
|
||||
|
@ -57,7 +57,7 @@ private:
|
||||
|
||||
bool InitVBO()
|
||||
{
|
||||
Renderable *render_obj=db->CreateRenderable(VERTEX_COUNT);
|
||||
Primitive *render_obj=db->CreatePrimitive(VERTEX_COUNT);
|
||||
if(!render_obj)return(false);
|
||||
|
||||
if(!render_obj->Set(VAN::Position, db->CreateVBO(VF_V2F,VERTEX_COUNT,position_data)))return(false);
|
||||
|
@ -7,7 +7,7 @@
|
||||
#include<hgl/graph/VKBuffer.h>
|
||||
#include<hgl/graph/VKShaderModule.h>
|
||||
#include<hgl/graph/VKImageView.h>
|
||||
#include<hgl/graph/VKRenderable.h>
|
||||
#include<hgl/graph/VKPrimitive.h>
|
||||
#include<hgl/graph/VKDescriptorSets.h>
|
||||
#include<hgl/graph/VKRenderPass.h>
|
||||
#include<hgl/graph/VKPipeline.h>
|
||||
|
@ -18,12 +18,12 @@ namespace hgl
|
||||
RectScope2f scope;
|
||||
};//struct RectangleCreateInfo
|
||||
|
||||
Renderable *CreateRenderableRectangle(RenderResource *db,const VAB *vab,const RectangleCreateInfo *rci);
|
||||
Primitive *CreateRenderableRectangle(RenderResource *db,const VAB *vab,const RectangleCreateInfo *rci);
|
||||
|
||||
/**
|
||||
* 创建延迟渲染用全屏平面
|
||||
*/
|
||||
Renderable *CreateRenderableGBufferComposition(RenderResource *db,const VAB *vab);
|
||||
Primitive *CreateRenderableGBufferComposition(RenderResource *db,const VAB *vab);
|
||||
|
||||
/**
|
||||
* 圆角矩形创建信息(扇形/线圈)
|
||||
@ -34,7 +34,7 @@ namespace hgl
|
||||
uint32_t round_per; ///<圆角精度
|
||||
};//struct RoundRectangleCreateInfo:public RectangleCreateInfo
|
||||
|
||||
Renderable *CreateRenderableRoundRectangle(RenderResource *db,const VAB *vab,const RoundRectangleCreateInfo *rci);
|
||||
Primitive *CreateRenderableRoundRectangle(RenderResource *db,const VAB *vab,const RoundRectangleCreateInfo *rci);
|
||||
|
||||
/**
|
||||
* 圆形创建信息
|
||||
@ -54,7 +54,7 @@ namespace hgl
|
||||
/**
|
||||
* 创建一个2D圆形(扇形/线圈)
|
||||
*/
|
||||
Renderable *CreateRenderableCircle(RenderResource *db,const VAB *vab,const CircleCreateInfo *cci);
|
||||
Primitive *CreateRenderableCircle(RenderResource *db,const VAB *vab,const CircleCreateInfo *cci);
|
||||
|
||||
/**
|
||||
* 平面网格创建信息
|
||||
@ -73,7 +73,7 @@ namespace hgl
|
||||
/**
|
||||
* 创建一个平面网格(线条)
|
||||
*/
|
||||
Renderable *CreateRenderablePlaneGrid(RenderResource *db,const VAB *vab,const PlaneGridCreateInfo *pgci);
|
||||
Primitive *CreateRenderablePlaneGrid(RenderResource *db,const VAB *vab,const PlaneGridCreateInfo *pgci);
|
||||
|
||||
struct PlaneCreateInfo
|
||||
{
|
||||
@ -91,7 +91,7 @@ namespace hgl
|
||||
/**
|
||||
* 创建一个平面(三角形)
|
||||
*/
|
||||
Renderable *CreateRenderablePlane(RenderResource *db,const VAB *vab,const PlaneCreateInfo *pci);
|
||||
Primitive *CreateRenderablePlane(RenderResource *db,const VAB *vab,const PlaneCreateInfo *pci);
|
||||
|
||||
struct CubeCreateInfo
|
||||
{
|
||||
@ -127,7 +127,7 @@ namespace hgl
|
||||
/**
|
||||
* 创建一个立方体(三角形)
|
||||
*/
|
||||
Renderable *CreateRenderableCube(RenderResource *db,const VAB *vab,const CubeCreateInfo *cci);
|
||||
Primitive *CreateRenderableCube(RenderResource *db,const VAB *vab,const CubeCreateInfo *cci);
|
||||
|
||||
struct BoundingBoxCreateInfo
|
||||
{
|
||||
@ -158,17 +158,17 @@ namespace hgl
|
||||
/**
|
||||
* 创建一个绑定盒(线条)
|
||||
*/
|
||||
Renderable *CreateRenderableBoundingBox(RenderResource *db,const VAB *vab,const BoundingBoxCreateInfo *cci);
|
||||
Primitive *CreateRenderableBoundingBox(RenderResource *db,const VAB *vab,const BoundingBoxCreateInfo *cci);
|
||||
|
||||
/**
|
||||
* 创建一个球心坐标为0,0,0,半径为1的球体(三角形)
|
||||
*/
|
||||
Renderable *CreateRenderableSphere(RenderResource *db,const VAB *vab,const uint numberSlices);
|
||||
Primitive *CreateRenderableSphere(RenderResource *db,const VAB *vab,const uint numberSlices);
|
||||
|
||||
/**
|
||||
* 创建一个穹顶(三角形)
|
||||
*/
|
||||
Renderable *CreateRenderableDome(RenderResource *db,const VAB *vab, const uint numberSlices);
|
||||
Primitive *CreateRenderableDome(RenderResource *db,const VAB *vab, const uint numberSlices);
|
||||
|
||||
struct TorusCreateInfo
|
||||
{
|
||||
@ -184,7 +184,7 @@ namespace hgl
|
||||
/**
|
||||
* 创建一个圆环(三角形)
|
||||
*/
|
||||
Renderable *CreateRenderableTorus(RenderResource *db,const VAB *vab,const TorusCreateInfo *tci);
|
||||
Primitive *CreateRenderableTorus(RenderResource *db,const VAB *vab,const TorusCreateInfo *tci);
|
||||
|
||||
struct CylinderCreateInfo
|
||||
{
|
||||
@ -196,7 +196,7 @@ namespace hgl
|
||||
/**
|
||||
* 创建一个圆柱(三角形)
|
||||
*/
|
||||
Renderable *CreateRenderableCylinder(RenderResource *db,const VAB *vab,const CylinderCreateInfo *cci);
|
||||
Primitive *CreateRenderableCylinder(RenderResource *db,const VAB *vab,const CylinderCreateInfo *cci);
|
||||
|
||||
struct ConeCreateInfo
|
||||
{
|
||||
@ -209,7 +209,7 @@ namespace hgl
|
||||
/**
|
||||
* 创建一个圆锥(三角形)
|
||||
*/
|
||||
Renderable *CreateRenderableCone(RenderResource *db,const VAB *vab,const ConeCreateInfo *cci);
|
||||
Primitive *CreateRenderableCone(RenderResource *db,const VAB *vab,const ConeCreateInfo *cci);
|
||||
|
||||
struct AxisCreateInfo
|
||||
{
|
||||
@ -230,7 +230,7 @@ namespace hgl
|
||||
/**
|
||||
* 创建一个坐标线(线条)
|
||||
*/
|
||||
Renderable *CreateRenderableAxis(RenderResource *db,const VAB *vab,const AxisCreateInfo *aci);
|
||||
Primitive *CreateRenderableAxis(RenderResource *db,const VAB *vab,const AxisCreateInfo *aci);
|
||||
}//namespace graph
|
||||
};//namespace hgl
|
||||
#endif//HGL_GRAPH_INLINE_GEOMETRY_INCLUDE
|
||||
|
@ -78,7 +78,7 @@ namespace hgl
|
||||
uint16 * CreateIBO16(uint count,const uint16 *data=nullptr); ///<创建16位的索引缓冲区
|
||||
uint32 * CreateIBO32(uint count,const uint32 *data=nullptr); ///<创建32位的索引缓冲区
|
||||
|
||||
virtual Renderable * Finish(); ///<结束并创建可渲染对象
|
||||
virtual Primitive * Finish(); ///<结束并创建可渲染对象
|
||||
};//class RenderableCreater
|
||||
}//namespace graph
|
||||
}//namespace hgl
|
||||
|
@ -8,7 +8,7 @@
|
||||
#include<iostream>
|
||||
#include<hgl/graph/VKNamespace.h>
|
||||
#include<hgl/graph/VKFormat.h>
|
||||
#include<hgl/graph/VKPrimivate.h>
|
||||
#include<hgl/graph/VKPrimitiveType.h>
|
||||
#include<hgl/graph/VKStruct.h>
|
||||
#include<hgl/graph/VKRenderbufferInfo.h>
|
||||
|
||||
@ -78,9 +78,9 @@ enum class DescriptorSetsType
|
||||
Material, ///<材质中永远不变的参数
|
||||
// Texture, ///<材质中的纹理参数
|
||||
Value, ///<材质中的变量参数
|
||||
Renderable, ///<渲染实例参数(如Local2World matrix)
|
||||
Primitive, ///<渲染实例参数(如Local2World matrix)
|
||||
|
||||
ENUM_CLASS_RANGE(Global,Renderable)
|
||||
ENUM_CLASS_RANGE(Global,Primitive)
|
||||
};//
|
||||
|
||||
const DescriptorSetsType CheckDescriptorSetsType(const char *str);
|
||||
@ -130,7 +130,7 @@ using VABConfigInfo=Map<AnsiString,VAConfig>;
|
||||
class VertexAttributeBinding;
|
||||
using VAB=VertexAttributeBinding;
|
||||
|
||||
class Renderable;
|
||||
class Primitive;
|
||||
class RenderableInstance;
|
||||
|
||||
class RenderResource;
|
||||
|
@ -67,7 +67,7 @@ public:
|
||||
MaterialParameters * GetMP (const DescriptorSetsType &type)
|
||||
{
|
||||
if(type==DescriptorSetsType::Material )return data->mp.m;else
|
||||
if(type==DescriptorSetsType::Renderable )return data->mp.r;else
|
||||
if(type==DescriptorSetsType::Primitive )return data->mp.r;else
|
||||
if(type==DescriptorSetsType::Global )return data->mp.g;else
|
||||
return(nullptr);
|
||||
}
|
||||
|
@ -34,7 +34,7 @@ public:
|
||||
MP_TYPE_IS(Material)
|
||||
// MP_TYPE_IS(Texture)
|
||||
MP_TYPE_IS(Value)
|
||||
MP_TYPE_IS(Renderable)
|
||||
MP_TYPE_IS(Primitive)
|
||||
MP_TYPE_IS(Global)
|
||||
#undef MP_TYPE_IS
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
#include<hgl/graph/VKMaterial.h>
|
||||
#include<hgl/graph/VKPipeline.h>
|
||||
#include<hgl/graph/VKDescriptorSets.h>
|
||||
#include<hgl/graph/VKRenderable.h>
|
||||
#include<hgl/graph/VKPrimitive.h>
|
||||
#include<hgl/graph/VKBuffer.h>
|
||||
#include<hgl/graph/VKSampler.h>
|
||||
#include<hgl/graph/VKTexture.h>
|
||||
@ -12,14 +12,14 @@
|
||||
#include<hgl/graph/VKMaterialInstance.h>
|
||||
#include<hgl/graph/VertexAttribData.h>
|
||||
#include<hgl/graph/VKRenderableInstance.h>
|
||||
#include<hgl/graph/font/TextRenderable.h>
|
||||
#include<hgl/graph/font/TextPrimitive.h>
|
||||
#include<hgl/type/ResManage.h>
|
||||
VK_NAMESPACE_BEGIN
|
||||
using MaterialID =int;
|
||||
using MaterialInstanceID =int;
|
||||
using BufferID =int;
|
||||
using DescriptorSetsID =int;
|
||||
using RenderableID =int;
|
||||
using PrimitiveID =int;
|
||||
using RenderableInstanceID =int;
|
||||
using SamplerID =int;
|
||||
using TextureID =int;
|
||||
@ -40,7 +40,7 @@ class RenderResource
|
||||
IDResManage<MaterialID, Material> rm_material; ///<材质合集
|
||||
IDResManage<MaterialInstanceID, MaterialInstance> rm_material_instance; ///<材质实例合集
|
||||
IDResManage<DescriptorSetsID, DescriptorSets> rm_desc_sets; ///<描述符合集
|
||||
IDResManage<RenderableID, Renderable> rm_renderables; ///<可渲染对象合集
|
||||
IDResManage<PrimitiveID, Primitive> rm_primitives; ///<图元合集
|
||||
IDResManage<BufferID, GPUBuffer> rm_buffers; ///<顶点缓冲区合集
|
||||
IDResManage<SamplerID, Sampler> rm_samplers; ///<采样器合集
|
||||
IDResManage<TextureID, Texture> rm_textures; ///<纹理合集
|
||||
@ -56,7 +56,7 @@ public: //Add
|
||||
MaterialID Add(Material * mtl ){return rm_material.Add(mtl);}
|
||||
MaterialInstanceID Add(MaterialInstance * mi ){return rm_material_instance.Add(mi);}
|
||||
DescriptorSetsID Add(DescriptorSets * ds ){return rm_desc_sets.Add(ds);}
|
||||
RenderableID Add(Renderable * r ){return rm_renderables.Add(r);}
|
||||
PrimitiveID Add(Primitive * p ){return rm_primitives.Add(p);}
|
||||
BufferID Add(GPUBuffer * buf ){return rm_buffers.Add(buf);}
|
||||
SamplerID Add(Sampler * s ){return rm_samplers.Add(s);}
|
||||
TextureID Add(Texture * t ){return rm_textures.Add(t);}
|
||||
@ -93,9 +93,9 @@ public: //Material
|
||||
MaterialInstance * CreateMaterialInstance(Material *,const VABConfigInfo *vab_cfg=nullptr);
|
||||
MaterialInstance * CreateMaterialInstance(const OSString &,const VABConfigInfo *vab_cfg=nullptr);
|
||||
|
||||
Renderable * CreateRenderable(const uint32_t vertex_count=0);
|
||||
Primitive * CreatePrimitive(const uint32_t vertex_count=0);
|
||||
|
||||
RenderableInstance *CreateRenderableInstance(Renderable *r,MaterialInstance *mi,Pipeline *p);
|
||||
RenderableInstance *CreateRenderableInstance(Primitive *r,MaterialInstance *mi,Pipeline *p);
|
||||
|
||||
Sampler * CreateSampler(VkSamplerCreateInfo *sci=nullptr);
|
||||
Sampler * CreateSampler(Texture *);
|
||||
@ -110,7 +110,7 @@ public: //Get
|
||||
Material * GetMaterial (const MaterialID &id){return rm_material.Get(id);}
|
||||
MaterialInstance * GetMaterialInstance (const MaterialInstanceID &id){return rm_material_instance.Get(id);}
|
||||
DescriptorSets * GetDescSets (const DescriptorSetsID &id){return rm_desc_sets.Get(id);}
|
||||
Renderable * GetRenderable (const RenderableID &id){return rm_renderables.Get(id);}
|
||||
Primitive * GetRenderable (const PrimitiveID &id){return rm_primitives.Get(id);}
|
||||
GPUBuffer * GetBuffer (const BufferID &id){return rm_buffers.Get(id);}
|
||||
Sampler * GetSampler (const SamplerID &id){return rm_samplers.Get(id);}
|
||||
Texture * GetTexture (const TextureID &id){return rm_textures.Get(id);}
|
||||
|
@ -1,89 +0,0 @@
|
||||
#ifndef HGL_GRAPH_VULKAN_RENDERABLE_INCLUDE
|
||||
#define HGL_GRAPH_VULKAN_RENDERABLE_INCLUDE
|
||||
|
||||
#include<hgl/graph/VKIndexBuffer.h>
|
||||
#include<hgl/type/Map.h>
|
||||
#include<hgl/type/String.h>
|
||||
#include<hgl/math/Math.h>
|
||||
#include<hgl/graph/AABB.h>
|
||||
VK_NAMESPACE_BEGIN
|
||||
/**
|
||||
* 可渲染数据对象<br>
|
||||
* 本对象包含材质实例信息和Mesh信息,可渲染数据对象中包含供最终API使用的VBO数据,可能存在多个MESH数据的集合。</p>
|
||||
* 比如有多种形状的石头,它们使用了同一种材质,这种情况下多个mesh就可以合并到一个Renderable中,渲染时不再切换VBO。
|
||||
*/
|
||||
class Renderable
|
||||
{
|
||||
struct VBOData
|
||||
{
|
||||
VBO *buf;
|
||||
VkDeviceSize offset;
|
||||
|
||||
public:
|
||||
|
||||
CompOperatorMemcmp(const VBOData &);
|
||||
};
|
||||
|
||||
Map<AnsiString,VBOData> buffer_list;
|
||||
|
||||
protected:
|
||||
|
||||
uint32_t draw_count;
|
||||
|
||||
IndexBuffer *indices_buffer=nullptr;
|
||||
VkDeviceSize indices_offset=0;
|
||||
|
||||
protected:
|
||||
|
||||
AABB BoundingBox;
|
||||
|
||||
protected:
|
||||
|
||||
friend class RenderableNode;
|
||||
|
||||
uint ref_count=0;
|
||||
|
||||
uint RefInc(){return ++ref_count;}
|
||||
uint RefDec(){return --ref_count;}
|
||||
|
||||
public:
|
||||
|
||||
Renderable(const uint32_t dc=0):draw_count(dc){}
|
||||
virtual ~Renderable()=default;
|
||||
|
||||
const uint GetRefCount()const{return ref_count;}
|
||||
|
||||
void SetBoundingBox(const AABB &aabb){BoundingBox=aabb;}
|
||||
const AABB & GetBoundingBox()const {return BoundingBox;}
|
||||
|
||||
bool Set(const AnsiString &name,VBO *vb,VkDeviceSize offset=0);
|
||||
|
||||
bool Set(IndexBuffer *ib,VkDeviceSize offset=0)
|
||||
{
|
||||
if(!ib)return(false);
|
||||
|
||||
indices_buffer=ib;
|
||||
indices_offset=offset;
|
||||
return(true);
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
void SetDrawCount(const uint32_t dc){draw_count=dc;} ///<设置当前对象绘制需要多少个顶点
|
||||
virtual const uint32_t GetDrawCount()const ///<取得当前对象绘制需要多少个顶点
|
||||
{
|
||||
if(indices_buffer)
|
||||
return indices_buffer->GetCount();
|
||||
|
||||
return draw_count;
|
||||
}
|
||||
|
||||
VBO * GetVBO (const AnsiString &,VkDeviceSize *);
|
||||
VkBuffer GetBuffer (const AnsiString &,VkDeviceSize *);
|
||||
const int GetBufferCount ()const {return buffer_list.GetCount();}
|
||||
|
||||
IndexBuffer * GetIndexBuffer () {return indices_buffer;}
|
||||
const VkDeviceSize GetIndexBufferOffset()const {return indices_offset;}
|
||||
};//class Renderable
|
||||
VK_NAMESPACE_END
|
||||
#endif//HGL_GRAPH_VULKAN_RENDERABLE_INCLUDE
|
@ -1,7 +1,7 @@
|
||||
#ifndef HGL_GRAPH_RENDERABLE_INSTANCE_INCLUDE
|
||||
#define HGL_GRAPH_RENDERABLE_INSTANCE_INCLUDE
|
||||
|
||||
#include<hgl/graph/VKRenderable.h>
|
||||
#include<hgl/graph/VKPrimitive.h>
|
||||
#include<hgl/graph/VKPipeline.h>
|
||||
#include<hgl/graph/VKDescriptorSets.h>
|
||||
#include<hgl/graph/VKMaterial.h>
|
||||
@ -16,7 +16,7 @@ class RenderableInstance
|
||||
{
|
||||
Pipeline * pipeline;
|
||||
MaterialInstance * mat_inst;
|
||||
Renderable * render_obj;
|
||||
Primitive * render_obj;
|
||||
|
||||
uint32_t buffer_count;
|
||||
VkBuffer * buffer_list;
|
||||
@ -26,9 +26,9 @@ class RenderableInstance
|
||||
|
||||
private:
|
||||
|
||||
friend RenderableInstance *CreateRenderableInstance(Renderable *,MaterialInstance *,Pipeline *);
|
||||
friend RenderableInstance *CreateRenderableInstance(Primitive *,MaterialInstance *,Pipeline *);
|
||||
|
||||
RenderableInstance(Renderable *,MaterialInstance *,Pipeline *,const uint32_t,VkBuffer *,VkDeviceSize *);
|
||||
RenderableInstance(Primitive *,MaterialInstance *,Pipeline *,const uint32_t,VkBuffer *,VkDeviceSize *);
|
||||
|
||||
public:
|
||||
|
||||
@ -40,7 +40,7 @@ public:
|
||||
VkPipelineLayout GetPipelineLayout (){return mat_inst->GetMaterial()->GetPipelineLayout();}
|
||||
Material * GetMaterial (){return mat_inst->GetMaterial();}
|
||||
MaterialInstance * GetMaterialInstance (){return mat_inst;}
|
||||
Renderable * GetRenderable (){return render_obj;}
|
||||
Primitive * GetRenderable (){return render_obj;}
|
||||
const AABB & GetBoundingBox ()const{return render_obj->GetBoundingBox();}
|
||||
|
||||
const uint32_t GetBufferCount ()const{return buffer_count;}
|
||||
@ -59,6 +59,6 @@ public: //instance support
|
||||
virtual const uint32_t GetInstanceCount ()const{return 1;}
|
||||
};//class RenderableInstance
|
||||
|
||||
RenderableInstance *CreateRenderableInstance(Renderable *,MaterialInstance *,Pipeline *);
|
||||
RenderableInstance *CreateRenderableInstance(Primitive *,MaterialInstance *,Pipeline *);
|
||||
VK_NAMESPACE_END
|
||||
#endif//HGL_GRAPH_RENDERABLE_INSTANCE_INCLUDE
|
||||
|
@ -11,7 +11,7 @@ namespace hgl
|
||||
namespace graph
|
||||
{
|
||||
class TileFont;
|
||||
class TextRenderable;
|
||||
class TextPrimitive;
|
||||
|
||||
/**
|
||||
* 字符属性,可精确到字也可精确到段落或是全文
|
||||
@ -112,7 +112,7 @@ namespace hgl
|
||||
|
||||
ObjectList<CharDrawAttr> draw_chars_list; ///<所有字符属性列表
|
||||
|
||||
template<typename T> bool preprocess(TextRenderable *,TileFont *,const T *,const int);
|
||||
template<typename T> bool preprocess(TextPrimitive *,TileFont *,const T *,const int);
|
||||
|
||||
protected:
|
||||
|
||||
@ -124,7 +124,7 @@ namespace hgl
|
||||
int sl_v_r2l();
|
||||
int sl_v_l2r();
|
||||
|
||||
template<typename T> int SimpleLayout(TextRenderable *,TileFont *,const String<T> &); ///<简易排版
|
||||
template<typename T> int SimpleLayout(TextPrimitive *,TileFont *,const String<T> &); ///<简易排版
|
||||
|
||||
// template<typename T> int SimpleLayout(TileFont *,const StringList<String<T>> &); ///<简易排版
|
||||
|
||||
@ -142,7 +142,7 @@ namespace hgl
|
||||
|
||||
protected:
|
||||
|
||||
TextRenderable *text_render_obj;
|
||||
TextPrimitive *text_render_obj;
|
||||
MemBlock<int16> vertex;
|
||||
MemBlock<float> tex_coord;
|
||||
|
||||
@ -167,8 +167,8 @@ namespace hgl
|
||||
|
||||
virtual bool Init (); ///<初始化排版
|
||||
|
||||
int SimpleLayout (TextRenderable *,TileFont *,const UTF16String &); ///<简易排版
|
||||
int SimpleLayout (TextRenderable *,TileFont *,const UTF32String &); ///<简易排版
|
||||
int SimpleLayout (TextPrimitive *,TileFont *,const UTF16String &); ///<简易排版
|
||||
int SimpleLayout (TextPrimitive *,TileFont *,const UTF32String &); ///<简易排版
|
||||
|
||||
// int SimpleLayout (TileFont *,const UTF16StringList &); ///<简易排版
|
||||
// int SimpleLayout (TileFont *,const UTF32StringList &); ///<简易排版
|
||||
|
@ -11,7 +11,7 @@ namespace hgl
|
||||
class FontSource;
|
||||
class TileFont;
|
||||
class TextLayout;
|
||||
class TextRenderable;
|
||||
class TextPrimitive;
|
||||
|
||||
class TextRender
|
||||
{
|
||||
@ -33,7 +33,7 @@ namespace hgl
|
||||
Color4f color;
|
||||
GPUBuffer * ubo_color;
|
||||
|
||||
SortedSets<TextRenderable *> tr_sets;
|
||||
SortedSets<TextPrimitive *> tr_sets;
|
||||
|
||||
private:
|
||||
|
||||
@ -53,14 +53,14 @@ namespace hgl
|
||||
|
||||
public:
|
||||
|
||||
TextRenderable *CreateRenderable();
|
||||
TextRenderable *CreateRenderable(const UTF16String &str);
|
||||
TextPrimitive *CreatePrimitive();
|
||||
TextPrimitive *CreatePrimitive(const UTF16String &str);
|
||||
|
||||
bool Layout(TextRenderable *tr,const UTF16String &str);
|
||||
bool Layout(TextPrimitive *tr,const UTF16String &str);
|
||||
|
||||
RenderableInstance *CreateRenderableInstance(TextRenderable *text_render_obj);
|
||||
RenderableInstance *CreateRenderableInstance(TextPrimitive *text_render_obj);
|
||||
|
||||
void Release(TextRenderable *);
|
||||
void Release(TextPrimitive *);
|
||||
};//class TextRender
|
||||
|
||||
/**
|
||||
|
@ -1,50 +0,0 @@
|
||||
#ifndef HGL_GRAPH_TEXT_RENDERABLE_INCLUDE
|
||||
#define HGL_GRAPH_TEXT_RENDERABLE_INCLUDE
|
||||
|
||||
#include<hgl/graph/VKRenderable.h>
|
||||
namespace hgl
|
||||
{
|
||||
namespace graph
|
||||
{
|
||||
/**
|
||||
* 文本可渲染对象
|
||||
*/
|
||||
class TextRenderable:public Renderable
|
||||
{
|
||||
GPUDevice * device;
|
||||
Material * mtl;
|
||||
|
||||
uint max_count; ///<缓冲区最大容量
|
||||
|
||||
VBO * vbo_position;
|
||||
VBO * vbo_tex_coord;
|
||||
|
||||
protected:
|
||||
|
||||
friend class TextLayout;
|
||||
friend class TextRender;
|
||||
|
||||
SortedSets<u32char> chars_sets;
|
||||
|
||||
const SortedSets<u32char> &GetCharsSets()const{return chars_sets;}
|
||||
void SetCharsSets(const SortedSets<u32char> &sl){chars_sets=sl;}
|
||||
void ClearCharsSets(){chars_sets.Clear();}
|
||||
|
||||
private:
|
||||
|
||||
virtual ~TextRenderable();
|
||||
|
||||
public:
|
||||
|
||||
TextRenderable(GPUDevice *,Material *,uint mc=1024);
|
||||
|
||||
public:
|
||||
|
||||
void SetCharCount (const uint);
|
||||
|
||||
bool WriteVertex (const int16 *fp);
|
||||
bool WriteTexCoord (const float *fp);
|
||||
};//class TextRenderable:public Renderable
|
||||
}//namespace graph
|
||||
}//namespace hgl
|
||||
#endif//HGL_GRAPH_TEXT_RENDERABLE_INCLUDE
|
2
res
2
res
@ -1 +1 @@
|
||||
Subproject commit 70b697f13ef20e957d51efcb0ff8632f4615e3c0
|
||||
Subproject commit 2f9727410cbe53f9867c544d8b6bd9f8ecdb97bf
|
@ -61,10 +61,10 @@ SET(TILE_FONT_SOURCE ${SG_INCLUDE_PATH}/font/TileFont.h
|
||||
SET(FONT_LAYOUT_SOURCE ${SG_INCLUDE_PATH}/font/TextLayout.h
|
||||
font/TextLayout.cpp)
|
||||
|
||||
SET(TEXT_RENDERABLE_SOURCE ${SG_INCLUDE_PATH}/font/TextRenderable.h
|
||||
SET(TEXT_RENDERABLE_SOURCE ${SG_INCLUDE_PATH}/font/TextPrimitive.h
|
||||
${SG_INCLUDE_PATH}/font/TextRender.h
|
||||
font/TextRender.cpp
|
||||
font/TextRenderable.cpp)
|
||||
font/TextPrimitive.cpp)
|
||||
|
||||
SOURCE_GROUP("Font" FILES ${FONT_MANAGE_SOURCE})
|
||||
SOURCE_GROUP("Font\\Source" FILES ${FONT_SOURCE})
|
||||
@ -220,9 +220,9 @@ 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
|
||||
SET(VK_RENDERABLE_SOURCE ${SG_INCLUDE_PATH}/VKPrimitive.h
|
||||
${SG_INCLUDE_PATH}/VKRenderableInstance.h
|
||||
Vulkan/VKRenderable.cpp
|
||||
Vulkan/VKPrimitive.cpp
|
||||
Vulkan/VKRenderableInstance.cpp
|
||||
Vulkan/VKTileData.cpp
|
||||
Vulkan/VKTileFont.cpp)
|
||||
|
@ -12,7 +12,7 @@ namespace hgl
|
||||
{
|
||||
namespace graph
|
||||
{
|
||||
Renderable *CreateRenderableRectangle(RenderResource *db,const VAB *vab,const RectangleCreateInfo *rci)
|
||||
Primitive *CreateRenderableRectangle(RenderResource *db,const VAB *vab,const RectangleCreateInfo *rci)
|
||||
{
|
||||
RenderableCreater rc(db,vab);
|
||||
|
||||
@ -29,7 +29,7 @@ namespace hgl
|
||||
return rc.Finish();
|
||||
}
|
||||
|
||||
Renderable *CreateRenderableGBufferComposition(RenderResource *db,const VAB *vab)
|
||||
Primitive *CreateRenderableGBufferComposition(RenderResource *db,const VAB *vab)
|
||||
{
|
||||
RectangleCreateInfo rci;
|
||||
|
||||
@ -38,7 +38,7 @@ namespace hgl
|
||||
return CreateRenderableRectangle(db,vab,&rci);
|
||||
}
|
||||
|
||||
Renderable *CreateRenderableRoundRectangle(RenderResource *db,const VAB *vab,const RoundRectangleCreateInfo *rci)
|
||||
Primitive *CreateRenderableRoundRectangle(RenderResource *db,const VAB *vab,const RoundRectangleCreateInfo *rci)
|
||||
{
|
||||
RenderableCreater rc(db,vab);
|
||||
|
||||
@ -112,7 +112,7 @@ namespace hgl
|
||||
return rc.Finish();
|
||||
}
|
||||
|
||||
Renderable *CreateRenderableCircle(RenderResource *db,const VAB *vab,const CircleCreateInfo *cci)
|
||||
Primitive *CreateRenderableCircle(RenderResource *db,const VAB *vab,const CircleCreateInfo *cci)
|
||||
{
|
||||
RenderableCreater rc(db,vab);
|
||||
|
||||
@ -160,7 +160,7 @@ namespace hgl
|
||||
return rc.Finish();
|
||||
}
|
||||
|
||||
Renderable *CreateRenderablePlaneGrid(RenderResource *db,const VAB *vab,const PlaneGridCreateInfo *pgci)
|
||||
Primitive *CreateRenderablePlaneGrid(RenderResource *db,const VAB *vab,const PlaneGridCreateInfo *pgci)
|
||||
{
|
||||
RenderableCreater rc(db,vab);
|
||||
|
||||
@ -207,7 +207,7 @@ namespace hgl
|
||||
return rc.Finish();
|
||||
}
|
||||
|
||||
Renderable *CreateRenderablePlane(RenderResource *db,const VAB *vab,const PlaneCreateInfo *pci)
|
||||
Primitive *CreateRenderablePlane(RenderResource *db,const VAB *vab,const PlaneCreateInfo *pci)
|
||||
{
|
||||
const float xy_vertices [] = { -0.5f,-0.5f,0.0f, +0.5f,-0.5f,0.0f, +0.5f,+0.5f,0.0f, -0.5f,+0.5f,0.0f };
|
||||
float xy_tex_coord[] = { 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f };
|
||||
@ -248,7 +248,7 @@ namespace hgl
|
||||
return rc.Finish();
|
||||
}
|
||||
|
||||
Renderable *CreateRenderableCube(RenderResource *db,const VAB *vab,const CubeCreateInfo *cci)
|
||||
Primitive *CreateRenderableCube(RenderResource *db,const VAB *vab,const CubeCreateInfo *cci)
|
||||
{
|
||||
/**
|
||||
* 4 5
|
||||
@ -440,7 +440,7 @@ namespace hgl
|
||||
* @param numberSlices 切片数
|
||||
* @return 可渲染数据
|
||||
*/
|
||||
Renderable *CreateRenderableSphere(RenderResource *db,const VAB *vab,const uint numberSlices)
|
||||
Primitive *CreateRenderableSphere(RenderResource *db,const VAB *vab,const uint numberSlices)
|
||||
{
|
||||
RenderableCreater rc(db,vab);
|
||||
|
||||
@ -516,7 +516,7 @@ namespace hgl
|
||||
return rc.Finish();
|
||||
}
|
||||
|
||||
Renderable *CreateRenderableDome(RenderResource *db,const VAB *vab,const uint numberSlices)
|
||||
Primitive *CreateRenderableDome(RenderResource *db,const VAB *vab,const uint numberSlices)
|
||||
{
|
||||
RenderableCreater rc(db,vab);
|
||||
|
||||
@ -637,7 +637,7 @@ namespace hgl
|
||||
}
|
||||
}//namespace
|
||||
|
||||
Renderable *CreateRenderableTorus(RenderResource *db,const VAB *vab,const TorusCreateInfo *tci)
|
||||
Primitive *CreateRenderableTorus(RenderResource *db,const VAB *vab,const TorusCreateInfo *tci)
|
||||
{
|
||||
RenderableCreater rc(db,vab);
|
||||
|
||||
@ -793,7 +793,7 @@ namespace hgl
|
||||
}
|
||||
}//namespace
|
||||
|
||||
Renderable *CreateRenderableCylinder(RenderResource *db,const VAB *vab,const CylinderCreateInfo *cci)
|
||||
Primitive *CreateRenderableCylinder(RenderResource *db,const VAB *vab,const CylinderCreateInfo *cci)
|
||||
{
|
||||
uint numberIndices = cci->numberSlices * 3 * 2 + cci->numberSlices * 6;
|
||||
|
||||
@ -1012,7 +1012,7 @@ namespace hgl
|
||||
}
|
||||
}//namespace
|
||||
|
||||
Renderable *CreateRenderableCone(RenderResource *db,const VAB *vab,const ConeCreateInfo *cci)
|
||||
Primitive *CreateRenderableCone(RenderResource *db,const VAB *vab,const ConeCreateInfo *cci)
|
||||
{
|
||||
RenderableCreater rc(db,vab);
|
||||
|
||||
@ -1139,7 +1139,7 @@ namespace hgl
|
||||
return rc.Finish();
|
||||
}
|
||||
|
||||
Renderable *CreateRenderableAxis(RenderResource *db,const VAB *vab,const AxisCreateInfo *aci)
|
||||
Primitive *CreateRenderableAxis(RenderResource *db,const VAB *vab,const AxisCreateInfo *aci)
|
||||
{
|
||||
if(!db||!vab||!aci)return(nullptr);
|
||||
|
||||
@ -1166,7 +1166,7 @@ namespace hgl
|
||||
return rc.Finish();
|
||||
}
|
||||
|
||||
Renderable *CreateRenderableBoundingBox(RenderResource *db,const VAB *vab,const BoundingBoxCreateInfo *cci)
|
||||
Primitive *CreateRenderableBoundingBox(RenderResource *db,const VAB *vab,const BoundingBoxCreateInfo *cci)
|
||||
{
|
||||
// Points of a cube.
|
||||
/* 4 5 */ const float points[]={ -0.5,-0.5, 0.5, 0.5,-0.5,0.5, 0.5,-0.5,-0.5, -0.5,-0.5,-0.5,
|
||||
|
@ -2,7 +2,7 @@
|
||||
#include<hgl/graph/Camera.h>
|
||||
#include<hgl/graph/SceneNode.h>
|
||||
#include<hgl/graph/VKBuffer.h>
|
||||
#include<hgl/graph/VKRenderable.h>
|
||||
#include<hgl/graph/VKPrimitive.h>
|
||||
#include<hgl/graph/VKCommandBuffer.h>
|
||||
#include<hgl/graph/VertexAttribDataAccess.h>
|
||||
#include<hgl/graph/VKMaterialParameters.h>
|
||||
@ -151,7 +151,7 @@ namespace hgl
|
||||
//为所有的材质绑定
|
||||
for(Material *mtl:material_sets)
|
||||
{
|
||||
MaterialParameters *mp=mtl->GetMP(DescriptorSetsType::Renderable);
|
||||
MaterialParameters *mp=mtl->GetMP(DescriptorSetsType::Primitive);
|
||||
|
||||
if(mp)
|
||||
{
|
||||
@ -219,7 +219,7 @@ namespace hgl
|
||||
MaterialParameters *mp;
|
||||
|
||||
for(int i=(int)DescriptorSetsType::BEGIN_RANGE;
|
||||
i<(int)DescriptorSetsType::Renderable;
|
||||
i<(int)DescriptorSetsType::Primitive;
|
||||
i++)
|
||||
{
|
||||
mp=ri->GetMP((DescriptorSetsType)i);
|
||||
@ -242,7 +242,7 @@ namespace hgl
|
||||
}
|
||||
|
||||
{
|
||||
mp=ri->GetMP(DescriptorSetsType::Renderable);
|
||||
mp=ri->GetMP(DescriptorSetsType::Primitive);
|
||||
|
||||
if(mp)
|
||||
{
|
||||
|
@ -105,14 +105,14 @@ namespace hgl
|
||||
return (uint32 *)ibo->Map();
|
||||
}
|
||||
|
||||
Renderable *RenderableCreater::Finish()
|
||||
Primitive *RenderableCreater::Finish()
|
||||
{
|
||||
const uint si_count=vab->GetVertexAttrCount();
|
||||
|
||||
if(ssb_map.GetCount()!=si_count)
|
||||
return(nullptr);
|
||||
|
||||
Renderable *render_obj=db->CreateRenderable(vertices_number);
|
||||
Primitive *render_obj=db->CreatePrimitive(vertices_number);
|
||||
|
||||
const auto *sp=ssb_map.GetDataList();
|
||||
for(uint i=0;i<si_count;i++)
|
||||
|
@ -123,7 +123,7 @@ bool RenderCmdBuffer::BindDescriptorSets(RenderableInstance *ri)
|
||||
ds[count]=mp->GetVkDescriptorSet();
|
||||
++count;
|
||||
|
||||
if((DescriptorSetsType)i==DescriptorSetsType::Renderable)
|
||||
if((DescriptorSetsType)i==DescriptorSetsType::Primitive)
|
||||
{
|
||||
dynamic_count=mp->GetCount();
|
||||
|
||||
|
@ -30,8 +30,9 @@ namespace
|
||||
#ifdef _DEBUG
|
||||
VK_EXT_DEBUG_MARKER_EXTENSION_NAME,
|
||||
#endif//_DEBUG
|
||||
VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME,
|
||||
// VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME,
|
||||
VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME,
|
||||
VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME,
|
||||
// VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME,
|
||||
// VK_EXT_HDR_METADATA_EXTENSION_NAME,
|
||||
// VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME,
|
||||
|
@ -109,7 +109,7 @@ Material *GPUDevice::CreateMaterial(const UTF8String &mtl_name,ShaderModuleMap *
|
||||
|
||||
data->pipeline_layout_data=pld;
|
||||
data->mp.m=CreateMP(mds,pld,DescriptorSetsType::Material );
|
||||
data->mp.r=CreateMP(mds,pld,DescriptorSetsType::Renderable );
|
||||
data->mp.r=CreateMP(mds,pld,DescriptorSetsType::Primitive );
|
||||
data->mp.g=CreateMP(mds,pld,DescriptorSetsType::Global );
|
||||
|
||||
return(new Material(data));
|
||||
|
@ -72,11 +72,11 @@ MaterialInstance *RenderResource::CreateMaterialInstance(const OSString &mtl_fil
|
||||
return CreateMaterialInstance(mtl,vab_cfg);
|
||||
}
|
||||
|
||||
Renderable *RenderResource::CreateRenderable(const uint32_t vertex_count)
|
||||
Primitive *RenderResource::CreatePrimitive(const uint32_t vertex_count)
|
||||
{
|
||||
if(!vertex_count)return(nullptr);
|
||||
|
||||
Renderable *ro=new Renderable(vertex_count);
|
||||
Primitive *ro=new Primitive(vertex_count);
|
||||
|
||||
if(ro)
|
||||
Add(ro);
|
||||
@ -84,7 +84,7 @@ Renderable *RenderResource::CreateRenderable(const uint32_t vertex_count)
|
||||
return ro;
|
||||
}
|
||||
|
||||
RenderableInstance *RenderResource::CreateRenderableInstance(Renderable *r,MaterialInstance *mi,Pipeline *p)
|
||||
RenderableInstance *RenderResource::CreateRenderableInstance(Primitive *r,MaterialInstance *mi,Pipeline *p)
|
||||
{
|
||||
if(!p||!mi||!r)
|
||||
return(nullptr);
|
||||
|
@ -49,7 +49,7 @@ void LoadShaderDescriptor(const uint8 *data,ShaderDescriptor *sd_list,const uint
|
||||
|
||||
sd->set_type=CheckDescriptorSetsType(sd->name);
|
||||
|
||||
if(sd->set_type==DescriptorSetsType::Renderable)
|
||||
if(sd->set_type==DescriptorSetsType::Primitive)
|
||||
{
|
||||
if(sd->desc_type==VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER)sd->desc_type=VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC;else
|
||||
if(sd->desc_type==VK_DESCRIPTOR_TYPE_STORAGE_BUFFER)sd->desc_type=VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC;
|
||||
|
@ -1,63 +0,0 @@
|
||||
#include<hgl/graph/VKRenderable.h>
|
||||
#include<hgl/graph/VKBuffer.h>
|
||||
#include<hgl/graph/VKShaderModule.h>
|
||||
#include<hgl/graph/VKVertexAttribBuffer.h>
|
||||
|
||||
VK_NAMESPACE_BEGIN
|
||||
//bool Renderable::Set(const int stage_input_binding,VAB *vab,VkDeviceSize offset)
|
||||
//{
|
||||
// if(stage_input_binding<0||stage_input_binding>=buf_count||!vab)return(false);
|
||||
//
|
||||
// const VkVertexInputBindingDescription *desc=vertex_sm->GetDesc(stage_input_binding);
|
||||
// const VkVertexInputAttributeDescription *attr=vertex_sm->GetAttr(stage_input_binding);
|
||||
//
|
||||
// if(vab->GetFormat()!=attr->format)return(false);
|
||||
// if(vab->GetStride()!=desc->stride)return(false);
|
||||
//
|
||||
// //format信息来自于shader,实际中可以不一样。但那样需要为每一个格式产生一个同样shader的material instance,不同的格式又需要不同的pipeline,我们不支持这种行为
|
||||
//
|
||||
// buf_list[stage_input_binding]=vab->GetBuffer();
|
||||
// buf_offset[stage_input_binding]=offset;
|
||||
//
|
||||
// return(true);
|
||||
//}
|
||||
|
||||
bool Renderable::Set(const AnsiString &name,VBO *vbo,VkDeviceSize offset)
|
||||
{
|
||||
if(!vbo)return(false);
|
||||
if(buffer_list.KeyExist(name))return(false);
|
||||
|
||||
VBOData bd;
|
||||
|
||||
bd.buf=vbo;
|
||||
bd.offset=offset;
|
||||
|
||||
buffer_list.Add(name,bd);
|
||||
return(true);
|
||||
}
|
||||
|
||||
VBO *Renderable::GetVBO(const AnsiString &name,VkDeviceSize *offset)
|
||||
{
|
||||
if(!offset)return(nullptr);
|
||||
if(name.IsEmpty())return(nullptr);
|
||||
|
||||
VBOData bd;
|
||||
|
||||
if(buffer_list.Get(name,bd))
|
||||
{
|
||||
*offset=bd.offset;
|
||||
return bd.buf;
|
||||
}
|
||||
|
||||
return(nullptr);
|
||||
}
|
||||
|
||||
VkBuffer Renderable::GetBuffer(const AnsiString &name,VkDeviceSize *offset)
|
||||
{
|
||||
VBO *vbo=GetVBO(name,offset);
|
||||
|
||||
if(vbo)return vbo->GetBuffer();
|
||||
|
||||
return(VK_NULL_HANDLE);
|
||||
}
|
||||
VK_NAMESPACE_END
|
@ -8,7 +8,7 @@
|
||||
VK_NAMESPACE_BEGIN
|
||||
using namespace util;
|
||||
|
||||
RenderableInstance::RenderableInstance(Renderable *r,MaterialInstance *mi,Pipeline *p,const uint32_t count,VkBuffer *bl,VkDeviceSize *bs)
|
||||
RenderableInstance::RenderableInstance(Primitive *r,MaterialInstance *mi,Pipeline *p,const uint32_t count,VkBuffer *bl,VkDeviceSize *bs)
|
||||
{
|
||||
render_obj=r;
|
||||
pipeline=p;
|
||||
@ -32,7 +32,7 @@ RenderableInstance::~RenderableInstance()
|
||||
delete[] buffer_size;
|
||||
}
|
||||
|
||||
RenderableInstance *CreateRenderableInstance(Renderable *r,MaterialInstance *mi,Pipeline *p)
|
||||
RenderableInstance *CreateRenderableInstance(Primitive *r,MaterialInstance *mi,Pipeline *p)
|
||||
{
|
||||
if(!r||!mi||!p)return(nullptr);
|
||||
|
||||
|
@ -11,7 +11,7 @@ VK_NAMESPACE_BEGIN
|
||||
{
|
||||
if(str[0]=='m')return DescriptorSetsType::Material;
|
||||
if(str[0]=='g')return DescriptorSetsType::Global;
|
||||
if(str[0]=='r')return DescriptorSetsType::Renderable;
|
||||
if(str[0]=='r')return DescriptorSetsType::Primitive;
|
||||
}
|
||||
|
||||
return DescriptorSetsType::Value;
|
||||
|
@ -1,6 +1,6 @@
|
||||
#include<hgl/graph/font/TextLayout.h>
|
||||
#include<hgl/graph/font/TileFont.h>
|
||||
#include<hgl/graph/font/TextRenderable.h>
|
||||
#include<hgl/graph/font/TextPrimitive.h>
|
||||
#include<hgl/type/Extent.h>
|
||||
|
||||
namespace hgl
|
||||
@ -48,7 +48,7 @@ namespace hgl
|
||||
* 预处理所有的字符,获取所有字符的宽高,以及是否标点符号等信息
|
||||
*/
|
||||
template<typename T>
|
||||
bool TextLayout::preprocess(TextRenderable *tr,TileFont *tile_font,const T *str,const int str_length)
|
||||
bool TextLayout::preprocess(TextPrimitive *tr,TileFont *tile_font,const T *str,const int str_length)
|
||||
{
|
||||
if(!tr
|
||||
||!tile_font
|
||||
@ -243,7 +243,7 @@ namespace hgl
|
||||
* 简易文本排版。无任何特殊处理,不支持任何转义符,不支持\r\n
|
||||
*/
|
||||
template<typename T>
|
||||
int TextLayout::SimpleLayout(TextRenderable *tr,TileFont *tf,const String<T> &str)
|
||||
int TextLayout::SimpleLayout(TextPrimitive *tr,TileFont *tf,const String<T> &str)
|
||||
{
|
||||
if(!tr)
|
||||
return(-1);
|
||||
@ -292,8 +292,8 @@ namespace hgl
|
||||
return result;
|
||||
}
|
||||
|
||||
int TextLayout::SimpleLayout(TextRenderable *tr,TileFont *tf,const UTF16String &str){return this->SimpleLayout<u16char>(tr,tf,str);}
|
||||
int TextLayout::SimpleLayout(TextRenderable *tr,TileFont *tf,const UTF32String &str){return this->SimpleLayout<u32char>(tr,tf,str);}
|
||||
int TextLayout::SimpleLayout(TextPrimitive *tr,TileFont *tf,const UTF16String &str){return this->SimpleLayout<u16char>(tr,tf,str);}
|
||||
int TextLayout::SimpleLayout(TextPrimitive *tr,TileFont *tf,const UTF32String &str){return this->SimpleLayout<u32char>(tr,tf,str);}
|
||||
|
||||
//template<typename T>
|
||||
//int TextLayout::SimpleLayout(TileFont *tf,const StringList<String<T>> &sl)
|
||||
|
@ -1,8 +1,7 @@
|
||||
#include<hgl/graph/font/TextRender.h>
|
||||
#include<hgl/graph/font/TextRenderable.h>
|
||||
#include<hgl/graph/font/TextPrimitive.h>
|
||||
#include<hgl/graph/font/TileFont.h>
|
||||
#include<hgl/graph/font/TextLayout.h>
|
||||
#include<hgl/graph/font/TextRenderable.h>
|
||||
#include<hgl/graph/VKDevice.h>
|
||||
#include<hgl/type/Color.h>
|
||||
|
||||
@ -27,7 +26,7 @@ namespace hgl
|
||||
|
||||
TextRender::~TextRender()
|
||||
{
|
||||
for(TextRenderable *tr:tr_sets)
|
||||
for(TextPrimitive *tr:tr_sets)
|
||||
{
|
||||
tile_font->Unregistry(tr->GetCharsSets().GetList());
|
||||
delete tr;
|
||||
@ -145,18 +144,18 @@ namespace hgl
|
||||
return(true);
|
||||
}
|
||||
|
||||
TextRenderable *TextRender::CreateRenderable()
|
||||
TextPrimitive *TextRender::CreatePrimitive()
|
||||
{
|
||||
TextRenderable *tr=new TextRenderable(device,material);
|
||||
TextPrimitive *tr=new TextPrimitive(device,material);
|
||||
|
||||
tr_sets.Add(tr);
|
||||
|
||||
return tr;
|
||||
}
|
||||
|
||||
TextRenderable *TextRender::CreateRenderable(const UTF16String &str)
|
||||
TextPrimitive *TextRender::CreatePrimitive(const UTF16String &str)
|
||||
{
|
||||
TextRenderable *tr=CreateRenderable();
|
||||
TextPrimitive *tr=CreatePrimitive();
|
||||
|
||||
if(tl_engine->SimpleLayout(tr,tile_font,str)<=0)
|
||||
return(tr);
|
||||
@ -164,7 +163,7 @@ namespace hgl
|
||||
return tr;
|
||||
}
|
||||
|
||||
bool TextRender::Layout(TextRenderable *tr,const UTF16String &str)
|
||||
bool TextRender::Layout(TextPrimitive *tr,const UTF16String &str)
|
||||
{
|
||||
if(!tr)
|
||||
return(false);
|
||||
@ -175,12 +174,12 @@ namespace hgl
|
||||
return true;
|
||||
}
|
||||
|
||||
RenderableInstance *TextRender::CreateRenderableInstance(TextRenderable *text_render_obj)
|
||||
RenderableInstance *TextRender::CreateRenderableInstance(TextPrimitive *text_render_obj)
|
||||
{
|
||||
return db->CreateRenderableInstance(text_render_obj,material_instance,pipeline);
|
||||
}
|
||||
|
||||
void TextRender::Release(TextRenderable *tr)
|
||||
void TextRender::Release(TextPrimitive *tr)
|
||||
{
|
||||
if(!tr)return;
|
||||
|
||||
|
@ -1,54 +0,0 @@
|
||||
#include<hgl/graph/font/TextRenderable.h>
|
||||
#include<hgl/graph/VKDevice.h>
|
||||
#include<hgl/graph/VKMaterial.h>
|
||||
#include<hgl/graph/VKVertexAttribBuffer.h>
|
||||
|
||||
namespace hgl
|
||||
{
|
||||
namespace graph
|
||||
{
|
||||
TextRenderable::TextRenderable(GPUDevice *dev,Material *m,uint mc):Renderable(mc)
|
||||
{
|
||||
device=dev;
|
||||
mtl=m;
|
||||
|
||||
max_count=0;
|
||||
|
||||
vbo_position=nullptr;
|
||||
vbo_tex_coord=nullptr;
|
||||
}
|
||||
|
||||
TextRenderable::~TextRenderable()
|
||||
{
|
||||
SAFE_CLEAR(vbo_tex_coord);
|
||||
SAFE_CLEAR(vbo_position);
|
||||
}
|
||||
|
||||
void TextRenderable::SetCharCount(const uint cc)
|
||||
{
|
||||
this->draw_count=cc;
|
||||
if(cc<=max_count)return;
|
||||
|
||||
max_count=power_to_2(cc);
|
||||
|
||||
{
|
||||
if(vbo_position)
|
||||
delete vbo_position;
|
||||
|
||||
vbo_position =device->CreateVBO(VF_V4I16,max_count);
|
||||
Set(VAN::Position,vbo_position);
|
||||
}
|
||||
|
||||
{
|
||||
if(vbo_tex_coord)
|
||||
delete vbo_tex_coord;
|
||||
|
||||
vbo_tex_coord =device->CreateVBO(VF_V4F,max_count);
|
||||
Set(VAN::TexCoord,vbo_tex_coord);
|
||||
}
|
||||
}
|
||||
|
||||
bool TextRenderable::WriteVertex (const int16 *fp){if(!fp)return(false);if(!vbo_position )return(false);return vbo_position ->Write(fp,draw_count*4*sizeof(int16));}
|
||||
bool TextRenderable::WriteTexCoord (const float *fp){if(!fp)return(false);if(!vbo_tex_coord)return(false);return vbo_tex_coord ->Write(fp,draw_count*4*sizeof(float));}
|
||||
}//namespace graph
|
||||
}//namespace hgl
|
Loading…
x
Reference in New Issue
Block a user