used VABConfigInfo at CreateMaterialInstance of TextRenderable
This commit is contained in:
parent
f55186a9c8
commit
e7ad21c82e
@ -1 +1 @@
|
|||||||
Subproject commit 41b0c430ed3cc09384a59f3d29e6d6405b8a045d
|
Subproject commit 3031a9e4e4881060352475686cb6b9b6b84e9b24
|
@ -101,7 +101,7 @@ private:
|
|||||||
Renderable *render_obj=db->CreateRenderable(VERTEX_COUNT);
|
Renderable *render_obj=db->CreateRenderable(VERTEX_COUNT);
|
||||||
if(!render_obj)return(false);
|
if(!render_obj)return(false);
|
||||||
|
|
||||||
if(!render_obj->Set(VAN::Position, db->CreateVBO(VF_VEC2,VERTEX_COUNT,vertex_data)))return(false);
|
if(!render_obj->Set(VAN::Position, db->CreateVBO(VF_V2F,VERTEX_COUNT,vertex_data)))return(false);
|
||||||
|
|
||||||
render_instance=db->CreateRenderableInstance(render_obj,material_instance,pipeline);
|
render_instance=db->CreateRenderableInstance(render_obj,material_instance,pipeline);
|
||||||
return(true);
|
return(true);
|
||||||
|
@ -81,7 +81,7 @@ private:
|
|||||||
|
|
||||||
bool InitScene()
|
bool InitScene()
|
||||||
{
|
{
|
||||||
ro_sphere=CreateRenderableSphere(db,material_instance->GetMaterial(),128);
|
ro_sphere=CreateRenderableSphere(db,material_instance->GetVAB(),128);
|
||||||
|
|
||||||
render_root.CreateSubNode(scale(100),db->CreateRenderableInstance(ro_sphere,material_instance,pipeline_solid));
|
render_root.CreateSubNode(scale(100),db->CreateRenderableInstance(ro_sphere,material_instance,pipeline_solid));
|
||||||
|
|
||||||
|
@ -171,18 +171,18 @@ private:
|
|||||||
|
|
||||||
bool InitGBufferPipeline(SubpassParam *sp)
|
bool InitGBufferPipeline(SubpassParam *sp)
|
||||||
{
|
{
|
||||||
sp->pipeline_triangles =gbuffer.rp->CreatePipeline(sp->material,InlinePipeline::Solid3D,Prim::Triangles);
|
sp->pipeline_triangles =gbuffer.rp->CreatePipeline(sp->material_instance,InlinePipeline::Solid3D,Prim::Triangles);
|
||||||
if(!sp->pipeline_triangles)
|
if(!sp->pipeline_triangles)
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
sp->pipeline_fan =gbuffer.rp->CreatePipeline(sp->material,InlinePipeline::Solid3D,Prim::Fan);
|
sp->pipeline_fan =gbuffer.rp->CreatePipeline(sp->material_instance,InlinePipeline::Solid3D,Prim::Fan);
|
||||||
|
|
||||||
return sp->pipeline_fan;
|
return sp->pipeline_fan;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool InitCompositionPipeline(SubpassParam *sp)
|
bool InitCompositionPipeline(SubpassParam *sp)
|
||||||
{
|
{
|
||||||
sp->pipeline_fan=device_render_pass->CreatePipeline(sp->material,InlinePipeline::Solid2D,Prim::Fan);
|
sp->pipeline_fan=device_render_pass->CreatePipeline(sp->material_instance,InlinePipeline::Solid2D,Prim::Fan);
|
||||||
|
|
||||||
return sp->pipeline_fan;
|
return sp->pipeline_fan;
|
||||||
}
|
}
|
||||||
@ -287,20 +287,20 @@ private:
|
|||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CreateRenderObject(Material *mtl)
|
void CreateRenderObject(const VAB *vab)
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
struct PlaneCreateInfo pci;
|
struct PlaneCreateInfo pci;
|
||||||
ro_plane=CreateRenderablePlane(db,mtl,&pci);
|
ro_plane=CreateRenderablePlane(db,vab,&pci);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
struct CubeCreateInfo cci;
|
struct CubeCreateInfo cci;
|
||||||
ro_cube=CreateRenderableCube(db,mtl,&cci);
|
ro_cube=CreateRenderableCube(db,vab,&cci);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
ro_sphere=CreateRenderableSphere(db,mtl,64);
|
ro_sphere=CreateRenderableSphere(db,vab,64);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -315,7 +315,7 @@ private:
|
|||||||
tci.uv_scale.x=4;
|
tci.uv_scale.x=4;
|
||||||
tci.uv_scale.y=1;
|
tci.uv_scale.y=1;
|
||||||
|
|
||||||
ro_torus=CreateRenderableTorus(db,mtl,&tci);
|
ro_torus=CreateRenderableTorus(db,vab,&tci);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -325,7 +325,7 @@ private:
|
|||||||
cci.radius=10;
|
cci.radius=10;
|
||||||
cci.numberSlices=32;
|
cci.numberSlices=32;
|
||||||
|
|
||||||
ro_cylinder=CreateRenderableCylinder(db,mtl,&cci);
|
ro_cylinder=CreateRenderableCylinder(db,vab,&cci);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -336,13 +336,13 @@ private:
|
|||||||
cci.numberSlices=128;
|
cci.numberSlices=128;
|
||||||
cci.numberStacks=32;
|
cci.numberStacks=32;
|
||||||
|
|
||||||
ro_cone=CreateRenderableCone(db,mtl,&cci);
|
ro_cone=CreateRenderableCone(db,vab,&cci);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool InitCompositionRenderable()
|
bool InitCompositionRenderable()
|
||||||
{
|
{
|
||||||
ro_gbc_plane=CreateRenderableGBufferComposition(db,sp_composition.material);
|
ro_gbc_plane=CreateRenderableGBufferComposition(db,sp_composition.material_instance->GetVAB());
|
||||||
if(!ro_gbc_plane)return(false);
|
if(!ro_gbc_plane)return(false);
|
||||||
|
|
||||||
ro_gbc_plane_ri=db->CreateRenderableInstance(ro_gbc_plane,sp_composition.material_instance,sp_composition.pipeline_fan);
|
ro_gbc_plane_ri=db->CreateRenderableInstance(ro_gbc_plane,sp_composition.material_instance,sp_composition.pipeline_fan);
|
||||||
@ -353,7 +353,7 @@ private:
|
|||||||
|
|
||||||
bool InitScene(SubpassParam *sp)
|
bool InitScene(SubpassParam *sp)
|
||||||
{
|
{
|
||||||
CreateRenderObject(sp->material);
|
CreateRenderObject(sp->material_instance->GetVAB());
|
||||||
render_root.CreateSubNode( scale(100,100,1), db->CreateRenderableInstance(ro_plane ,sp->material_instance,sp->pipeline_fan ));
|
render_root.CreateSubNode( scale(100,100,1), db->CreateRenderableInstance(ro_plane ,sp->material_instance,sp->pipeline_fan ));
|
||||||
render_root.CreateSubNode( db->CreateRenderableInstance(ro_torus ,sp->material_instance,sp->pipeline_triangles));
|
render_root.CreateSubNode( db->CreateRenderableInstance(ro_torus ,sp->material_instance,sp->pipeline_triangles));
|
||||||
render_root.CreateSubNode( scale(20,20,20), db->CreateRenderableInstance(ro_sphere ,sp->material_instance,sp->pipeline_triangles));
|
render_root.CreateSubNode( scale(20,20,20), db->CreateRenderableInstance(ro_sphere ,sp->material_instance,sp->pipeline_triangles));
|
||||||
|
@ -27,6 +27,7 @@ class TestApp:public VulkanApplicationFramework
|
|||||||
private:
|
private:
|
||||||
|
|
||||||
Sampler * sampler =nullptr;
|
Sampler * sampler =nullptr;
|
||||||
|
Material * material =nullptr;
|
||||||
MaterialInstance * material_instance =nullptr;
|
MaterialInstance * material_instance =nullptr;
|
||||||
GPUBuffer * ubo_camera_info =nullptr;
|
GPUBuffer * ubo_camera_info =nullptr;
|
||||||
GPUBuffer * ubo_color =nullptr;
|
GPUBuffer * ubo_color =nullptr;
|
||||||
@ -56,8 +57,21 @@ private:
|
|||||||
|
|
||||||
bool InitMaterial()
|
bool InitMaterial()
|
||||||
{
|
{
|
||||||
material_instance=db->CreateMaterialInstance(OS_TEXT("res/material/LumTextureRect2D"));
|
material=db->CreateMaterial(OS_TEXT("res/material/LumTextureRect2D"));
|
||||||
|
|
||||||
|
//文本渲染Position坐标全部是使用整数,这里强制要求Position输入流使用RGBA16I格式
|
||||||
|
{
|
||||||
|
VABConfigInfo vab_config;
|
||||||
|
VAConfig va_cfg;
|
||||||
|
|
||||||
|
va_cfg.format=VF_V4I16;
|
||||||
|
va_cfg.instance=false;
|
||||||
|
|
||||||
|
vab_config.Add("Position",va_cfg);
|
||||||
|
|
||||||
|
material_instance=db->CreateMaterialInstance(material,&vab_config);
|
||||||
if(!material_instance)return(false);
|
if(!material_instance)return(false);
|
||||||
|
}
|
||||||
|
|
||||||
pipeline=CreatePipeline(material_instance,InlinePipeline::Solid2D,Prim::SolidRectangles);
|
pipeline=CreatePipeline(material_instance,InlinePipeline::Solid2D,Prim::SolidRectangles);
|
||||||
if(!pipeline)return(false);
|
if(!pipeline)return(false);
|
||||||
|
@ -215,8 +215,8 @@ private:
|
|||||||
render_obj=db->CreateRenderable(tile_count);
|
render_obj=db->CreateRenderable(tile_count);
|
||||||
if(!render_obj)return(false);
|
if(!render_obj)return(false);
|
||||||
|
|
||||||
render_obj->Set(VAN::Position,db->CreateVBO(VF_VEC4,tile_count,vertex_data));
|
render_obj->Set(VAN::Position,db->CreateVBO(VF_V4F,tile_count,vertex_data));
|
||||||
render_obj->Set(VAN::TexCoord,db->CreateVBO(VF_VEC4,tile_count,tex_coord_data));
|
render_obj->Set(VAN::TexCoord,db->CreateVBO(VF_V4F,tile_count,tex_coord_data));
|
||||||
|
|
||||||
render_instance=db->CreateRenderableInstance(render_obj,material_instance,pipeline);
|
render_instance=db->CreateRenderableInstance(render_obj,material_instance,pipeline);
|
||||||
|
|
||||||
|
@ -7,8 +7,8 @@
|
|||||||
using namespace hgl;
|
using namespace hgl;
|
||||||
using namespace hgl::graph;
|
using namespace hgl::graph;
|
||||||
|
|
||||||
constexpr uint32_t SCREEN_WIDTH=128;
|
constexpr uint32_t SCREEN_WIDTH=256;
|
||||||
constexpr uint32_t SCREEN_HEIGHT=128;
|
constexpr uint32_t SCREEN_HEIGHT=256;
|
||||||
|
|
||||||
constexpr uint32_t VERTEX_COUNT=4;
|
constexpr uint32_t VERTEX_COUNT=4;
|
||||||
|
|
||||||
@ -78,7 +78,7 @@ private:
|
|||||||
auto render_obj=db->CreateRenderable(VERTEX_COUNT);
|
auto render_obj=db->CreateRenderable(VERTEX_COUNT);
|
||||||
if(!render_obj)return(false);
|
if(!render_obj)return(false);
|
||||||
|
|
||||||
if(!render_obj->Set(VAN::Position,db->CreateVBO(VF_VEC2,VERTEX_COUNT,vertex_data)))return(false);
|
if(!render_obj->Set(VAN::Position,db->CreateVBO(VF_V2F,VERTEX_COUNT,vertex_data)))return(false);
|
||||||
|
|
||||||
renderable_instance=db->CreateRenderableInstance(render_obj,material_instance,pipeline);
|
renderable_instance=db->CreateRenderableInstance(render_obj,material_instance,pipeline);
|
||||||
return(true);
|
return(true);
|
||||||
@ -107,6 +107,8 @@ public:
|
|||||||
|
|
||||||
void Resize(int w,int h)override
|
void Resize(int w,int h)override
|
||||||
{
|
{
|
||||||
|
cam.width=w;
|
||||||
|
cam.height=h;
|
||||||
cam.vp_width=w;
|
cam.vp_width=w;
|
||||||
cam.vp_height=h;
|
cam.vp_height=h;
|
||||||
|
|
||||||
|
@ -85,16 +85,18 @@ private:
|
|||||||
pgci.color.Set(0.5,0,0,1);
|
pgci.color.Set(0.5,0,0,1);
|
||||||
pgci.side_color.Set(1,0,0,1);
|
pgci.side_color.Set(1,0,0,1);
|
||||||
|
|
||||||
ro_plane_grid[0]=CreateRenderablePlaneGrid(db,material,&pgci);
|
const VAB *vab=material_instance->GetVAB();
|
||||||
|
|
||||||
|
ro_plane_grid[0]=CreateRenderablePlaneGrid(db,vab,&pgci);
|
||||||
|
|
||||||
pgci.color.Set(0,0.5,0,1);
|
pgci.color.Set(0,0.5,0,1);
|
||||||
pgci.side_color.Set(0,1,0,1);
|
pgci.side_color.Set(0,1,0,1);
|
||||||
|
|
||||||
ro_plane_grid[1]=CreateRenderablePlaneGrid(db,material,&pgci);
|
ro_plane_grid[1]=CreateRenderablePlaneGrid(db,vab,&pgci);
|
||||||
|
|
||||||
pgci.color.Set(0,0,0.5,1);
|
pgci.color.Set(0,0,0.5,1);
|
||||||
pgci.side_color.Set(0,0,1,1);
|
pgci.side_color.Set(0,0,1,1);
|
||||||
ro_plane_grid[2]=CreateRenderablePlaneGrid(db,material,&pgci);
|
ro_plane_grid[2]=CreateRenderablePlaneGrid(db,vab,&pgci);
|
||||||
|
|
||||||
camera->pos=Vector4f(200,200,200,1.0);
|
camera->pos=Vector4f(200,200,200,1.0);
|
||||||
}
|
}
|
||||||
|
@ -85,7 +85,7 @@ private:
|
|||||||
axis_mi=db->CreateMaterialInstance(axis_material);
|
axis_mi=db->CreateMaterialInstance(axis_material);
|
||||||
if(!axis_mi)return(false);
|
if(!axis_mi)return(false);
|
||||||
|
|
||||||
axis_pipeline=CreatePipeline(axis_material,InlinePipeline::Solid3D,Prim::Lines);
|
axis_pipeline=CreatePipeline(axis_mi,InlinePipeline::Solid3D,Prim::Lines);
|
||||||
if(!axis_pipeline)return(false);
|
if(!axis_pipeline)return(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -143,7 +143,7 @@ private:
|
|||||||
pipeline_data=GetPipelineData(InlinePipeline::Solid3D);
|
pipeline_data=GetPipelineData(InlinePipeline::Solid3D);
|
||||||
if(!pipeline_data)return(false);
|
if(!pipeline_data)return(false);
|
||||||
|
|
||||||
pipeline_solid=CreatePipeline(material,pipeline_data,Prim::Triangles);
|
pipeline_solid=CreatePipeline(material_instance,pipeline_data,Prim::Triangles);
|
||||||
if(!pipeline_solid)return(false);
|
if(!pipeline_solid)return(false);
|
||||||
|
|
||||||
return(true);
|
return(true);
|
||||||
@ -156,18 +156,20 @@ private:
|
|||||||
|
|
||||||
aci.size=200;
|
aci.size=200;
|
||||||
|
|
||||||
ro_axis=CreateRenderableAxis(db,axis_material,&aci);
|
ro_axis=CreateRenderableAxis(db,axis_mi->GetVAB(),&aci);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const VAB *vab=material_instance->GetVAB();
|
||||||
|
|
||||||
{
|
{
|
||||||
struct CubeCreateInfo cci;
|
struct CubeCreateInfo cci;
|
||||||
cci.has_color=true;
|
cci.has_color=true;
|
||||||
cci.color=Vector4f(1,1,1,1);
|
cci.color=Vector4f(1,1,1,1);
|
||||||
ro_cube=CreateRenderableCube(db,material,&cci);
|
ro_cube=CreateRenderableCube(db,vab,&cci);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
ro_sphere=CreateRenderableSphere(db,material,64);
|
ro_sphere=CreateRenderableSphere(db,vab,64);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -182,7 +184,7 @@ private:
|
|||||||
tci.uv_scale.x=4;
|
tci.uv_scale.x=4;
|
||||||
tci.uv_scale.y=1;
|
tci.uv_scale.y=1;
|
||||||
|
|
||||||
ro_torus=CreateRenderableTorus(db,material,&tci);
|
ro_torus=CreateRenderableTorus(db,vab,&tci);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -192,7 +194,7 @@ private:
|
|||||||
cci.radius=10;
|
cci.radius=10;
|
||||||
cci.numberSlices=32;
|
cci.numberSlices=32;
|
||||||
|
|
||||||
ro_cylinder=CreateRenderableCylinder(db,material,&cci);
|
ro_cylinder=CreateRenderableCylinder(db,vab,&cci);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -203,7 +205,7 @@ private:
|
|||||||
cci.numberSlices=128;
|
cci.numberSlices=128;
|
||||||
cci.numberStacks=32;
|
cci.numberStacks=32;
|
||||||
|
|
||||||
ro_cone=CreateRenderableCone(db,material,&cci);
|
ro_cone=CreateRenderableCone(db,vab,&cci);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,6 +56,7 @@ public:
|
|||||||
~TestApp()
|
~TestApp()
|
||||||
{
|
{
|
||||||
SAFE_CLEAR(cube.render_list);
|
SAFE_CLEAR(cube.render_list);
|
||||||
|
SAFE_CLEAR(os.pipeline);
|
||||||
SAFE_CLEAR(os.render_taget);
|
SAFE_CLEAR(os.render_taget);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,7 +115,7 @@ public:
|
|||||||
cci.center_color=Vector4f(1,1,1,1);
|
cci.center_color=Vector4f(1,1,1,1);
|
||||||
cci.border_color=Vector4f(1,1,1,0);
|
cci.border_color=Vector4f(1,1,1,0);
|
||||||
|
|
||||||
Renderable *render_obj=CreateRenderableCircle(db,os.material_instance->GetMaterial(),&cci);
|
Renderable *render_obj=CreateRenderableCircle(db,os.material_instance->GetVAB(),&cci);
|
||||||
if(!render_obj)return(false);
|
if(!render_obj)return(false);
|
||||||
|
|
||||||
os.renderable_instance=db->CreateRenderableInstance(render_obj,os.material_instance,os.pipeline);
|
os.renderable_instance=db->CreateRenderableInstance(render_obj,os.material_instance,os.pipeline);
|
||||||
@ -156,7 +157,7 @@ public:
|
|||||||
{
|
{
|
||||||
CubeCreateInfo cci;
|
CubeCreateInfo cci;
|
||||||
|
|
||||||
Renderable *render_obj=CreateRenderableCube(db,cube.material_instance->GetMaterial(),&cci);
|
Renderable *render_obj=CreateRenderableCube(db,cube.material_instance->GetVAB(),&cci);
|
||||||
if(!render_obj)return(false);
|
if(!render_obj)return(false);
|
||||||
|
|
||||||
cube.renderable_instance=db->CreateRenderableInstance(render_obj,cube.material_instance,cube.pipeline);
|
cube.renderable_instance=db->CreateRenderableInstance(render_obj,cube.material_instance,cube.pipeline);
|
||||||
|
@ -109,8 +109,8 @@ private:
|
|||||||
|
|
||||||
if(!render_obj)return(false);
|
if(!render_obj)return(false);
|
||||||
|
|
||||||
render_obj->Set(VAN::Position,db->CreateVBO(VF_VEC4,VERTEX_COUNT,vertex_data));
|
render_obj->Set(VAN::Position,db->CreateVBO(VF_V4F,VERTEX_COUNT,vertex_data));
|
||||||
render_obj->Set(VAN::TexCoord,db->CreateVBO(VF_VEC4,VERTEX_COUNT,tex_coord_data));
|
render_obj->Set(VAN::TexCoord,db->CreateVBO(VF_V4F,VERTEX_COUNT,tex_coord_data));
|
||||||
|
|
||||||
render_instance=db->CreateRenderableInstance(render_obj,material_instance,pipeline);
|
render_instance=db->CreateRenderableInstance(render_obj,material_instance,pipeline);
|
||||||
|
|
||||||
|
@ -87,8 +87,8 @@ private:
|
|||||||
Renderable *render_obj=db->CreateRenderable(VERTEX_COUNT);
|
Renderable *render_obj=db->CreateRenderable(VERTEX_COUNT);
|
||||||
if(!render_obj)return(false);
|
if(!render_obj)return(false);
|
||||||
|
|
||||||
if(!render_obj->Set(VAN::Position, db->CreateVBO(VF_VEC2,VERTEX_COUNT,vertex_data)))return(false);
|
if(!render_obj->Set(VAN::Position, db->CreateVBO(VF_V2F,VERTEX_COUNT,vertex_data)))return(false);
|
||||||
if(!render_obj->Set(VAN::Color, db->CreateVBO(VF_VEC4,VERTEX_COUNT,color_data)))return(false);
|
if(!render_obj->Set(VAN::Color, db->CreateVBO(VF_V4F,VERTEX_COUNT,color_data)))return(false);
|
||||||
|
|
||||||
render_instance=db->CreateRenderableInstance(render_obj,material_instance,pipeline);
|
render_instance=db->CreateRenderableInstance(render_obj,material_instance,pipeline);
|
||||||
return(true);
|
return(true);
|
||||||
|
@ -87,7 +87,7 @@ private:
|
|||||||
auto render_obj=db->CreateRenderable(VERTEX_COUNT);
|
auto render_obj=db->CreateRenderable(VERTEX_COUNT);
|
||||||
if(!render_obj)return(false);
|
if(!render_obj)return(false);
|
||||||
|
|
||||||
if(!render_obj->Set(VAN::Position,db->CreateVBO(VF_VEC2,VERTEX_COUNT,vertex_data)))return(false);
|
if(!render_obj->Set(VAN::Position,db->CreateVBO(VF_V2F,VERTEX_COUNT,vertex_data)))return(false);
|
||||||
if(!render_obj->Set(db->CreateIBO16(INDEX_COUNT,index_data)))return(false);
|
if(!render_obj->Set(db->CreateIBO16(INDEX_COUNT,index_data)))return(false);
|
||||||
|
|
||||||
renderable_instance=db->CreateRenderableInstance(render_obj,material_instance,pipeline);
|
renderable_instance=db->CreateRenderableInstance(render_obj,material_instance,pipeline);
|
||||||
|
@ -121,8 +121,8 @@ private:
|
|||||||
auto render_obj=db->CreateRenderable(VERTEX_COUNT);
|
auto render_obj=db->CreateRenderable(VERTEX_COUNT);
|
||||||
if(!render_obj)return(false);
|
if(!render_obj)return(false);
|
||||||
|
|
||||||
if(!render_obj->Set(VAN::Position,db->CreateVBO(VF_VEC2,VERTEX_COUNT,vertex_data)))return(false);
|
if(!render_obj->Set(VAN::Position,db->CreateVBO(VF_V2F,VERTEX_COUNT,vertex_data)))return(false);
|
||||||
if(!render_obj->Set(VAN::TexCoord,db->CreateVBO(VF_VEC2,VERTEX_COUNT,tex_coord_data)))return(false);
|
if(!render_obj->Set(VAN::TexCoord,db->CreateVBO(VF_V2F,VERTEX_COUNT,tex_coord_data)))return(false);
|
||||||
if(!render_obj->Set(db->CreateIBO16(INDEX_COUNT,index_data)))return(false);
|
if(!render_obj->Set(db->CreateIBO16(INDEX_COUNT,index_data)))return(false);
|
||||||
|
|
||||||
renderable_instance=db->CreateRenderableInstance(render_obj,material_instance,pipeline);
|
renderable_instance=db->CreateRenderableInstance(render_obj,material_instance,pipeline);
|
||||||
|
@ -87,8 +87,8 @@ private:
|
|||||||
Renderable *render_obj=db->CreateRenderable(VERTEX_COUNT);
|
Renderable *render_obj=db->CreateRenderable(VERTEX_COUNT);
|
||||||
if(!render_obj)return(false);
|
if(!render_obj)return(false);
|
||||||
|
|
||||||
if(!render_obj->Set(VAN::Position, db->CreateVBO(VF_VEC2,VERTEX_COUNT,vertex_data)))return(false);
|
if(!render_obj->Set(VAN::Position, db->CreateVBO(VF_V2F,VERTEX_COUNT,vertex_data)))return(false);
|
||||||
if(!render_obj->Set(VAN::Color, db->CreateVBO(VF_VEC4,VERTEX_COUNT,color_data)))return(false);
|
if(!render_obj->Set(VAN::Color, db->CreateVBO(VF_V4F,VERTEX_COUNT,color_data)))return(false);
|
||||||
|
|
||||||
render_instance=db->CreateRenderableInstance(render_obj,material_instance,pipeline);
|
render_instance=db->CreateRenderableInstance(render_obj,material_instance,pipeline);
|
||||||
|
|
||||||
|
@ -18,12 +18,12 @@ namespace hgl
|
|||||||
RectScope2f scope;
|
RectScope2f scope;
|
||||||
};//struct RectangleCreateInfo
|
};//struct RectangleCreateInfo
|
||||||
|
|
||||||
Renderable *CreateRenderableRectangle(RenderResource *db,Material *mtl,const RectangleCreateInfo *rci);
|
Renderable *CreateRenderableRectangle(RenderResource *db,const VAB *vab,const RectangleCreateInfo *rci);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建延迟渲染用全屏平面
|
* 创建延迟渲染用全屏平面
|
||||||
*/
|
*/
|
||||||
Renderable *CreateRenderableGBufferComposition(RenderResource *db,Material *mtl);
|
Renderable *CreateRenderableGBufferComposition(RenderResource *db,const VAB *vab);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 圆角矩形创建信息(扇形/线圈)
|
* 圆角矩形创建信息(扇形/线圈)
|
||||||
@ -34,7 +34,7 @@ namespace hgl
|
|||||||
uint32_t round_per; ///<圆角精度
|
uint32_t round_per; ///<圆角精度
|
||||||
};//struct RoundRectangleCreateInfo:public RectangleCreateInfo
|
};//struct RoundRectangleCreateInfo:public RectangleCreateInfo
|
||||||
|
|
||||||
Renderable *CreateRenderableRoundRectangle(RenderResource *db,Material *mtl,const RoundRectangleCreateInfo *rci);
|
Renderable *CreateRenderableRoundRectangle(RenderResource *db,const VAB *vab,const RoundRectangleCreateInfo *rci);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 圆形创建信息
|
* 圆形创建信息
|
||||||
@ -54,7 +54,7 @@ namespace hgl
|
|||||||
/**
|
/**
|
||||||
* 创建一个2D圆形(扇形/线圈)
|
* 创建一个2D圆形(扇形/线圈)
|
||||||
*/
|
*/
|
||||||
Renderable *CreateRenderableCircle(RenderResource *db,Material *mtl,const CircleCreateInfo *cci);
|
Renderable *CreateRenderableCircle(RenderResource *db,const VAB *vab,const CircleCreateInfo *cci);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 平面网格创建信息
|
* 平面网格创建信息
|
||||||
@ -73,7 +73,7 @@ namespace hgl
|
|||||||
/**
|
/**
|
||||||
* 创建一个平面网格(线条)
|
* 创建一个平面网格(线条)
|
||||||
*/
|
*/
|
||||||
Renderable *CreateRenderablePlaneGrid(RenderResource *db,Material *mtl,const PlaneGridCreateInfo *pgci);
|
Renderable *CreateRenderablePlaneGrid(RenderResource *db,const VAB *vab,const PlaneGridCreateInfo *pgci);
|
||||||
|
|
||||||
struct PlaneCreateInfo
|
struct PlaneCreateInfo
|
||||||
{
|
{
|
||||||
@ -91,7 +91,7 @@ namespace hgl
|
|||||||
/**
|
/**
|
||||||
* 创建一个平面(三角形)
|
* 创建一个平面(三角形)
|
||||||
*/
|
*/
|
||||||
Renderable *CreateRenderablePlane(RenderResource *db,Material *mtl,const PlaneCreateInfo *pci);
|
Renderable *CreateRenderablePlane(RenderResource *db,const VAB *vab,const PlaneCreateInfo *pci);
|
||||||
|
|
||||||
struct CubeCreateInfo
|
struct CubeCreateInfo
|
||||||
{
|
{
|
||||||
@ -131,17 +131,17 @@ namespace hgl
|
|||||||
/**
|
/**
|
||||||
* 创建一个立方体(三角形)
|
* 创建一个立方体(三角形)
|
||||||
*/
|
*/
|
||||||
Renderable *CreateRenderableCube(RenderResource *db,Material *mtl,const CubeCreateInfo *cci);
|
Renderable *CreateRenderableCube(RenderResource *db,const VAB *vab,const CubeCreateInfo *cci);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建一个绑定盒(线条)
|
* 创建一个绑定盒(线条)
|
||||||
*/
|
*/
|
||||||
Renderable *CreateRenderableBoundingBox(RenderResource *db,Material *mtl,const CubeCreateInfo *cci);
|
Renderable *CreateRenderableBoundingBox(RenderResource *db,const VAB *vab,const CubeCreateInfo *cci);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建一个球心坐标为0,0,0,半径为1的球体(三角形)
|
* 创建一个球心坐标为0,0,0,半径为1的球体(三角形)
|
||||||
*/
|
*/
|
||||||
Renderable *CreateRenderableSphere(RenderResource *db,Material *mtl,const uint numberSlices);
|
Renderable *CreateRenderableSphere(RenderResource *db,const VAB *vab,const uint numberSlices);
|
||||||
|
|
||||||
struct DomeCreateInfo
|
struct DomeCreateInfo
|
||||||
{
|
{
|
||||||
@ -152,7 +152,7 @@ namespace hgl
|
|||||||
/**
|
/**
|
||||||
* 创建一个穹顶(三角形)
|
* 创建一个穹顶(三角形)
|
||||||
*/
|
*/
|
||||||
Renderable *CreateRenderableDome(RenderResource *db,Material *mtl, const DomeCreateInfo *);
|
Renderable *CreateRenderableDome(RenderResource *db,const VAB *vab, const DomeCreateInfo *);
|
||||||
|
|
||||||
struct TorusCreateInfo
|
struct TorusCreateInfo
|
||||||
{
|
{
|
||||||
@ -168,7 +168,7 @@ namespace hgl
|
|||||||
/**
|
/**
|
||||||
* 创建一个圆环(三角形)
|
* 创建一个圆环(三角形)
|
||||||
*/
|
*/
|
||||||
Renderable *CreateRenderableTorus(RenderResource *db,Material *mtl,const TorusCreateInfo *tci);
|
Renderable *CreateRenderableTorus(RenderResource *db,const VAB *vab,const TorusCreateInfo *tci);
|
||||||
|
|
||||||
struct CylinderCreateInfo
|
struct CylinderCreateInfo
|
||||||
{
|
{
|
||||||
@ -180,7 +180,7 @@ namespace hgl
|
|||||||
/**
|
/**
|
||||||
* 创建一个圆柱(三角形)
|
* 创建一个圆柱(三角形)
|
||||||
*/
|
*/
|
||||||
Renderable *CreateRenderableCylinder(RenderResource *db,Material *mtl,const CylinderCreateInfo *cci);
|
Renderable *CreateRenderableCylinder(RenderResource *db,const VAB *vab,const CylinderCreateInfo *cci);
|
||||||
|
|
||||||
struct ConeCreateInfo
|
struct ConeCreateInfo
|
||||||
{
|
{
|
||||||
@ -193,7 +193,7 @@ namespace hgl
|
|||||||
/**
|
/**
|
||||||
* 创建一个圆锥(三角形)
|
* 创建一个圆锥(三角形)
|
||||||
*/
|
*/
|
||||||
Renderable *CreateRenderableCone(RenderResource *db,Material *mtl,const ConeCreateInfo *cci);
|
Renderable *CreateRenderableCone(RenderResource *db,const VAB *vab,const ConeCreateInfo *cci);
|
||||||
|
|
||||||
struct AxisCreateInfo
|
struct AxisCreateInfo
|
||||||
{
|
{
|
||||||
@ -214,7 +214,7 @@ namespace hgl
|
|||||||
/**
|
/**
|
||||||
* 创建一个坐标线(线条)
|
* 创建一个坐标线(线条)
|
||||||
*/
|
*/
|
||||||
Renderable *CreateRenderableAxis(RenderResource *db,Material *mtl,const AxisCreateInfo *aci);
|
Renderable *CreateRenderableAxis(RenderResource *db,const VAB *vab,const AxisCreateInfo *aci);
|
||||||
}//namespace graph
|
}//namespace graph
|
||||||
};//namespace hgl
|
};//namespace hgl
|
||||||
#endif//HGL_GRAPH_INLINE_GEOMETRY_INCLUDE
|
#endif//HGL_GRAPH_INLINE_GEOMETRY_INCLUDE
|
||||||
|
@ -117,8 +117,8 @@ class Pipeline;
|
|||||||
|
|
||||||
struct VAConfig
|
struct VAConfig
|
||||||
{
|
{
|
||||||
VkFormat format;
|
VkFormat format=PF_UNDEFINED;
|
||||||
bool instance;
|
bool instance=false;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ public:
|
|||||||
public:
|
public:
|
||||||
|
|
||||||
Pipeline *CreatePipeline(MaterialInstance *, PipelineData *);
|
Pipeline *CreatePipeline(MaterialInstance *, PipelineData *);
|
||||||
Pipeline *CreatePipeline(MaterialInstance *,const InlinePipeline &);
|
Pipeline *CreatePipeline(MaterialInstance *, const InlinePipeline &);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
@ -90,8 +90,8 @@ public: //Material
|
|||||||
const ShaderModule *CreateShaderModule(const OSString &filename,ShaderResource *shader_resource);
|
const ShaderModule *CreateShaderModule(const OSString &filename,ShaderResource *shader_resource);
|
||||||
|
|
||||||
Material * CreateMaterial(const OSString &);
|
Material * CreateMaterial(const OSString &);
|
||||||
MaterialInstance * CreateMaterialInstance(Material *);
|
MaterialInstance * CreateMaterialInstance(Material *,const VABConfigInfo *vab_cfg=nullptr);
|
||||||
MaterialInstance * CreateMaterialInstance(const OSString &);
|
MaterialInstance * CreateMaterialInstance(const OSString &,const VABConfigInfo *vab_cfg=nullptr);
|
||||||
|
|
||||||
Renderable * CreateRenderable(const uint32_t vertex_count=0);
|
Renderable * CreateRenderable(const uint32_t vertex_count=0);
|
||||||
TextRenderable * CreateTextRenderable(Material *);
|
TextRenderable * CreateTextRenderable(Material *);
|
||||||
|
@ -15,8 +15,6 @@ struct ShaderStage
|
|||||||
|
|
||||||
VertexAttribType type; ///<成份数量(如vec4中的4)
|
VertexAttribType type; ///<成份数量(如vec4中的4)
|
||||||
|
|
||||||
uint binding;
|
|
||||||
|
|
||||||
bool global; ///<是否全局数据
|
bool global; ///<是否全局数据
|
||||||
bool dynamic; ///<是否动态数量
|
bool dynamic; ///<是否动态数量
|
||||||
};//struct ShaderStage
|
};//struct ShaderStage
|
||||||
|
2
res
2
res
@ -1 +1 @@
|
|||||||
Subproject commit 10431c5bb52464f73911c503e236baa3d0663037
|
Subproject commit cff431d24a2e511112e26b6d75b74286cf697dfd
|
@ -12,9 +12,9 @@ namespace hgl
|
|||||||
{
|
{
|
||||||
namespace graph
|
namespace graph
|
||||||
{
|
{
|
||||||
Renderable *CreateRenderableRectangle(RenderResource *db,Material *mtl,const RectangleCreateInfo *rci)
|
Renderable *CreateRenderableRectangle(RenderResource *db,const VAB *vab,const RectangleCreateInfo *rci)
|
||||||
{
|
{
|
||||||
RenderableCreater rc(db,mtl);
|
RenderableCreater rc(db,vab);
|
||||||
|
|
||||||
if(!rc.Init(4))
|
if(!rc.Init(4))
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
@ -29,18 +29,18 @@ namespace hgl
|
|||||||
return rc.Finish();
|
return rc.Finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
Renderable *CreateRenderableGBufferComposition(RenderResource *db,Material *mtl)
|
Renderable *CreateRenderableGBufferComposition(RenderResource *db,const VAB *vab)
|
||||||
{
|
{
|
||||||
RectangleCreateInfo rci;
|
RectangleCreateInfo rci;
|
||||||
|
|
||||||
rci.scope.Set(-1,-1,2,2);
|
rci.scope.Set(-1,-1,2,2);
|
||||||
|
|
||||||
return CreateRenderableRectangle(db,mtl,&rci);
|
return CreateRenderableRectangle(db,vab,&rci);
|
||||||
}
|
}
|
||||||
|
|
||||||
Renderable *CreateRenderableRoundRectangle(RenderResource *db,Material *mtl,const RoundRectangleCreateInfo *rci)
|
Renderable *CreateRenderableRoundRectangle(RenderResource *db,const VAB *vab,const RoundRectangleCreateInfo *rci)
|
||||||
{
|
{
|
||||||
RenderableCreater rc(db,mtl);
|
RenderableCreater rc(db,vab);
|
||||||
|
|
||||||
if(rci->radius==0||rci->round_per<=1) //这是要画矩形
|
if(rci->radius==0||rci->round_per<=1) //这是要画矩形
|
||||||
{
|
{
|
||||||
@ -112,9 +112,9 @@ namespace hgl
|
|||||||
return rc.Finish();
|
return rc.Finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
Renderable *CreateRenderableCircle(RenderResource *db,Material *mtl,const CircleCreateInfo *cci)
|
Renderable *CreateRenderableCircle(RenderResource *db,const VAB *vab,const CircleCreateInfo *cci)
|
||||||
{
|
{
|
||||||
RenderableCreater rc(db,mtl);
|
RenderableCreater rc(db,vab);
|
||||||
|
|
||||||
uint edge;
|
uint edge;
|
||||||
|
|
||||||
@ -160,9 +160,9 @@ namespace hgl
|
|||||||
return rc.Finish();
|
return rc.Finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
Renderable *CreateRenderablePlaneGrid(RenderResource *db,Material *mtl,const PlaneGridCreateInfo *pgci)
|
Renderable *CreateRenderablePlaneGrid(RenderResource *db,const VAB *vab,const PlaneGridCreateInfo *pgci)
|
||||||
{
|
{
|
||||||
RenderableCreater rc(db,mtl);
|
RenderableCreater rc(db,vab);
|
||||||
|
|
||||||
if(!rc.Init(((pgci->step.x+1)+(pgci->step.y+1))*2))
|
if(!rc.Init(((pgci->step.x+1)+(pgci->step.y+1))*2))
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
@ -207,14 +207,14 @@ namespace hgl
|
|||||||
return rc.Finish();
|
return rc.Finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
Renderable *CreateRenderablePlane(RenderResource *db,Material *mtl,const PlaneCreateInfo *pci)
|
Renderable *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 };
|
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 };
|
float xy_tex_coord[] = { 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f };
|
||||||
const Vector3f xy_normal(0.0f,0.0f,1.0f);
|
const Vector3f xy_normal(0.0f,0.0f,1.0f);
|
||||||
const Vector3f xy_tangent(1.0f,0.0f,0.0f);
|
const Vector3f xy_tangent(1.0f,0.0f,0.0f);
|
||||||
|
|
||||||
RenderableCreater rc(db,mtl);
|
RenderableCreater rc(db,vab);
|
||||||
|
|
||||||
if(!rc.Init(4))
|
if(!rc.Init(4))
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
@ -248,7 +248,7 @@ namespace hgl
|
|||||||
return rc.Finish();
|
return rc.Finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
Renderable *CreateRenderableCube(RenderResource *db,Material *mtl,const CubeCreateInfo *cci)
|
Renderable *CreateRenderableCube(RenderResource *db,const VAB *vab,const CubeCreateInfo *cci)
|
||||||
{ // Points of a cube.
|
{ // Points of a cube.
|
||||||
/* 4 5 */ constexpr float points[]={ -0.5f, -0.5f, -0.5f, -0.5f, -0.5f, +0.5f, +0.5f, -0.5f, +0.5f, +0.5f, -0.5f, -0.5f, -0.5f, +0.5f, -0.5f, -0.5f, +0.5f, +0.5f,
|
/* 4 5 */ constexpr float points[]={ -0.5f, -0.5f, -0.5f, -0.5f, -0.5f, +0.5f, +0.5f, -0.5f, +0.5f, +0.5f, -0.5f, -0.5f, -0.5f, +0.5f, -0.5f, -0.5f, +0.5f, +0.5f,
|
||||||
/* *------------* */ +0.5f, +0.5f, +0.5f, +0.5f, +0.5f, -0.5f, -0.5f, -0.5f, -0.5f, -0.5f, +0.5f, -0.5f, +0.5f, +0.5f, -0.5f, +0.5f, -0.5f, -0.5f,
|
/* *------------* */ +0.5f, +0.5f, +0.5f, +0.5f, +0.5f, -0.5f, -0.5f, -0.5f, -0.5f, -0.5f, +0.5f, -0.5f, +0.5f, +0.5f, -0.5f, +0.5f, -0.5f, -0.5f,
|
||||||
@ -271,7 +271,7 @@ namespace hgl
|
|||||||
1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f,
|
1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f,
|
||||||
0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f };
|
0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f };
|
||||||
|
|
||||||
RenderableCreater rc(db,mtl);
|
RenderableCreater rc(db,vab);
|
||||||
|
|
||||||
if(!rc.Init(24))
|
if(!rc.Init(24))
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
@ -426,9 +426,9 @@ namespace hgl
|
|||||||
* @param numberSlices 切片数
|
* @param numberSlices 切片数
|
||||||
* @return 可渲染数据
|
* @return 可渲染数据
|
||||||
*/
|
*/
|
||||||
Renderable *CreateRenderableSphere(RenderResource *db,Material *mtl,const uint numberSlices)
|
Renderable *CreateRenderableSphere(RenderResource *db,const VAB *vab,const uint numberSlices)
|
||||||
{
|
{
|
||||||
RenderableCreater rc(db,mtl);
|
RenderableCreater rc(db,vab);
|
||||||
|
|
||||||
uint numberParallels = (numberSlices+1) / 2;
|
uint numberParallels = (numberSlices+1) / 2;
|
||||||
uint numberVertices = (numberParallels + 1) * (numberSlices + 1);
|
uint numberVertices = (numberParallels + 1) * (numberSlices + 1);
|
||||||
@ -502,9 +502,9 @@ namespace hgl
|
|||||||
return rc.Finish();
|
return rc.Finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
Renderable *CreateRenderableDome(RenderResource *db,Material *mtl,const DomeCreateInfo *dci)
|
Renderable *CreateRenderableDome(RenderResource *db,const VAB *vab,const DomeCreateInfo *dci)
|
||||||
{
|
{
|
||||||
RenderableCreater rc(db,mtl);
|
RenderableCreater rc(db,vab);
|
||||||
|
|
||||||
uint i, j;
|
uint i, j;
|
||||||
|
|
||||||
@ -621,9 +621,9 @@ namespace hgl
|
|||||||
}
|
}
|
||||||
}//namespace
|
}//namespace
|
||||||
|
|
||||||
Renderable *CreateRenderableTorus(RenderResource *db,Material *mtl,const TorusCreateInfo *tci)
|
Renderable *CreateRenderableTorus(RenderResource *db,const VAB *vab,const TorusCreateInfo *tci)
|
||||||
{
|
{
|
||||||
RenderableCreater rc(db,mtl);
|
RenderableCreater rc(db,vab);
|
||||||
|
|
||||||
// s, t = parametric values of the equations, in the range [0,1]
|
// s, t = parametric values of the equations, in the range [0,1]
|
||||||
float s = 0;
|
float s = 0;
|
||||||
@ -777,14 +777,14 @@ namespace hgl
|
|||||||
}
|
}
|
||||||
}//namespace
|
}//namespace
|
||||||
|
|
||||||
Renderable *CreateRenderableCylinder(RenderResource *db,Material *mtl,const CylinderCreateInfo *cci)
|
Renderable *CreateRenderableCylinder(RenderResource *db,const VAB *vab,const CylinderCreateInfo *cci)
|
||||||
{
|
{
|
||||||
uint numberIndices = cci->numberSlices * 3 * 2 + cci->numberSlices * 6;
|
uint numberIndices = cci->numberSlices * 3 * 2 + cci->numberSlices * 6;
|
||||||
|
|
||||||
if(numberIndices<=0)
|
if(numberIndices<=0)
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
|
|
||||||
RenderableCreater rc(db,mtl);
|
RenderableCreater rc(db,vab);
|
||||||
|
|
||||||
uint numberVertices = (cci->numberSlices + 2) * 2 + (cci->numberSlices + 1) * 2;
|
uint numberVertices = (cci->numberSlices + 2) * 2 + (cci->numberSlices + 1) * 2;
|
||||||
|
|
||||||
@ -996,9 +996,9 @@ namespace hgl
|
|||||||
}
|
}
|
||||||
}//namespace
|
}//namespace
|
||||||
|
|
||||||
Renderable *CreateRenderableCone(RenderResource *db,Material *mtl,const ConeCreateInfo *cci)
|
Renderable *CreateRenderableCone(RenderResource *db,const VAB *vab,const ConeCreateInfo *cci)
|
||||||
{
|
{
|
||||||
RenderableCreater rc(db,mtl);
|
RenderableCreater rc(db,vab);
|
||||||
|
|
||||||
uint i, j;
|
uint i, j;
|
||||||
|
|
||||||
@ -1123,11 +1123,11 @@ namespace hgl
|
|||||||
return rc.Finish();
|
return rc.Finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
Renderable *CreateRenderableAxis(RenderResource *db,Material *mtl,const AxisCreateInfo *aci)
|
Renderable *CreateRenderableAxis(RenderResource *db,const VAB *vab,const AxisCreateInfo *aci)
|
||||||
{
|
{
|
||||||
if(!db||!mtl||!aci)return(nullptr);
|
if(!db||!vab||!aci)return(nullptr);
|
||||||
|
|
||||||
RenderableCreater rc(db,mtl);
|
RenderableCreater rc(db,vab);
|
||||||
|
|
||||||
if(!rc.Init(6))
|
if(!rc.Init(6))
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
@ -1150,7 +1150,7 @@ namespace hgl
|
|||||||
return rc.Finish();
|
return rc.Finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
Renderable *CreateRenderableBoundingBox(RenderResource *db,Material *mtl,const CubeCreateInfo *cci)
|
Renderable *CreateRenderableBoundingBox(RenderResource *db,const VAB *vab,const CubeCreateInfo *cci)
|
||||||
{
|
{
|
||||||
// Points of a cube.
|
// 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,
|
/* 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,
|
||||||
@ -1172,7 +1172,7 @@ namespace hgl
|
|||||||
0,4, 1,5, 2,6, 3,7
|
0,4, 1,5, 2,6, 3,7
|
||||||
};
|
};
|
||||||
|
|
||||||
RenderableCreater rc(db,mtl);
|
RenderableCreater rc(db,vab);
|
||||||
|
|
||||||
if(!rc.Init(8))
|
if(!rc.Init(8))
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
|
@ -38,9 +38,14 @@ namespace hgl
|
|||||||
if(ssb_map.Get(name,ssb))
|
if(ssb_map.Get(name,ssb))
|
||||||
return ssb->data;
|
return ssb->data;
|
||||||
|
|
||||||
|
VAD *vad=hgl::graph::CreateVertexAttribData(vertices_number,va->format,va->vec_size,va->stride);
|
||||||
|
|
||||||
|
if(!vad)
|
||||||
|
return(nullptr);
|
||||||
|
|
||||||
ssb=new ShaderStageBind;
|
ssb=new ShaderStageBind;
|
||||||
|
|
||||||
ssb->data =hgl::graph::CreateVertexAttribData(vertices_number,va->format,va->vec_size,va->stride);
|
ssb->data =vad;
|
||||||
ssb->name =name;
|
ssb->name =name;
|
||||||
ssb->binding=va->binding;
|
ssb->binding=va->binding;
|
||||||
|
|
||||||
@ -49,7 +54,6 @@ namespace hgl
|
|||||||
ssb_map.Add(name,ssb);
|
ssb_map.Add(name,ssb);
|
||||||
|
|
||||||
return ssb->data;
|
return ssb->data;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RenderableCreater::WriteVAD(const AnsiString &name,const void *data,const uint32_t bytes)
|
bool RenderableCreater::WriteVAD(const AnsiString &name,const void *data,const uint32_t bytes)
|
||||||
|
@ -6,10 +6,10 @@ namespace hgl
|
|||||||
{
|
{
|
||||||
VAD *CreateVertexAttribData(const uint32_t vertex_count,const VkFormat fmt,const int vec_size,const uint stride)
|
VAD *CreateVertexAttribData(const uint32_t vertex_count,const VkFormat fmt,const int vec_size,const uint stride)
|
||||||
{
|
{
|
||||||
if(!vertex_count<=0
|
if(vertex_count<=0
|
||||||
||vec_size<1||vec_size>4
|
||vec_size<1||vec_size>4
|
||||||
||stride<1||stride>8*4
|
||stride<1||stride>8*4
|
||||||
||CheckVulkanFormat(fmt))
|
||!CheckVulkanFormat(fmt))
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
|
|
||||||
return(new VertexAttribData(vertex_count,vec_size,stride,fmt));
|
return(new VertexAttribData(vertex_count,vec_size,stride,fmt));
|
||||||
|
@ -15,7 +15,6 @@ void GPUDevice::InitRenderPassManage()
|
|||||||
|
|
||||||
void GPUDevice::ClearRenderPassManage()
|
void GPUDevice::ClearRenderPassManage()
|
||||||
{
|
{
|
||||||
SAFE_CLEAR(device_render_pass);
|
|
||||||
SAFE_CLEAR(render_pass_manage);
|
SAFE_CLEAR(render_pass_manage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -195,6 +195,19 @@ DeviceRenderPassManage::DeviceRenderPassManage(VkDevice dev,VkPipelineCache pc)
|
|||||||
DeviceRenderPassManage::~DeviceRenderPassManage()
|
DeviceRenderPassManage::~DeviceRenderPassManage()
|
||||||
{
|
{
|
||||||
SAFE_CLEAR(hash);
|
SAFE_CLEAR(hash);
|
||||||
|
|
||||||
|
const int count=RenderPassList.GetCount();
|
||||||
|
|
||||||
|
auto *obj=RenderPassList.GetDataList();
|
||||||
|
|
||||||
|
for(int i=0;i<count;i++)
|
||||||
|
{
|
||||||
|
delete (*obj)->right;
|
||||||
|
|
||||||
|
++obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
RenderPassList.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
|
@ -17,12 +17,6 @@ MaterialInstance *GPUDevice::CreateMI(Material *mtl,const VABConfigInfo *vab_cfg
|
|||||||
|
|
||||||
MaterialParameters *mp=CreateMP(mtl,DescriptorSetsType::Value);
|
MaterialParameters *mp=CreateMP(mtl,DescriptorSetsType::Value);
|
||||||
|
|
||||||
if(!mp)
|
|
||||||
{
|
|
||||||
delete vab;
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
return(new MaterialInstance(mtl,vab,mp));
|
return(new MaterialInstance(mtl,vab,mp));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,11 +50,11 @@ IndexBuffer *RenderResource::CreateIBO(IndexType index_type,uint32_t count,const
|
|||||||
return(buf);
|
return(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
MaterialInstance *RenderResource::CreateMaterialInstance(Material *mtl)
|
MaterialInstance *RenderResource::CreateMaterialInstance(Material *mtl,const VABConfigInfo *vab_cfg)
|
||||||
{
|
{
|
||||||
if(!mtl)return(nullptr);
|
if(!mtl)return(nullptr);
|
||||||
|
|
||||||
MaterialInstance *mi=device->CreateMI(mtl);
|
MaterialInstance *mi=device->CreateMI(mtl,vab_cfg);
|
||||||
|
|
||||||
if(mi)
|
if(mi)
|
||||||
Add(mi);
|
Add(mi);
|
||||||
@ -62,14 +62,14 @@ MaterialInstance *RenderResource::CreateMaterialInstance(Material *mtl)
|
|||||||
return mi;
|
return mi;
|
||||||
}
|
}
|
||||||
|
|
||||||
MaterialInstance *RenderResource::CreateMaterialInstance(const OSString &mtl_filename)
|
MaterialInstance *RenderResource::CreateMaterialInstance(const OSString &mtl_filename,const VABConfigInfo *vab_cfg)
|
||||||
{
|
{
|
||||||
Material *mtl=this->CreateMaterial(mtl_filename);
|
Material *mtl=this->CreateMaterial(mtl_filename);
|
||||||
|
|
||||||
if(!mtl)
|
if(!mtl)
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
|
|
||||||
return CreateMaterialInstance(mtl);
|
return CreateMaterialInstance(mtl,vab_cfg);
|
||||||
}
|
}
|
||||||
|
|
||||||
Renderable *RenderResource::CreateRenderable(const uint32_t vertex_count)
|
Renderable *RenderResource::CreateRenderable(const uint32_t vertex_count)
|
||||||
|
@ -42,14 +42,10 @@ VK_NAMESPACE_BEGIN
|
|||||||
ss->type.basetype =(VertexAttribBaseType)*data++;
|
ss->type.basetype =(VertexAttribBaseType)*data++;
|
||||||
ss->type.vec_size =*data++;
|
ss->type.vec_size =*data++;
|
||||||
|
|
||||||
// ss->format =VK_NAMESPACE::GetVulkanFormat(&(ss->type));
|
|
||||||
|
|
||||||
str_len=*data++;
|
str_len=*data++;
|
||||||
ss->name.SetString((char *)data,str_len);
|
ss->name.SetString((char *)data,str_len);
|
||||||
data+=str_len;
|
data+=str_len;
|
||||||
|
|
||||||
ss->binding=i;
|
|
||||||
|
|
||||||
ss_list.Add(ss);
|
ss_list.Add(ss);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ namespace hgl
|
|||||||
if(vbo_position)
|
if(vbo_position)
|
||||||
delete vbo_position;
|
delete vbo_position;
|
||||||
|
|
||||||
vbo_position =device->CreateVBO(PF_RGBA16I,max_count);
|
vbo_position =device->CreateVBO(VF_V4I16,max_count);
|
||||||
Set(VAN::Position,vbo_position);
|
Set(VAN::Position,vbo_position);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -43,7 +43,7 @@ namespace hgl
|
|||||||
if(vbo_tex_coord)
|
if(vbo_tex_coord)
|
||||||
delete vbo_tex_coord;
|
delete vbo_tex_coord;
|
||||||
|
|
||||||
vbo_tex_coord =device->CreateVBO(VF_VEC4,max_count);
|
vbo_tex_coord =device->CreateVBO(VF_V4F,max_count);
|
||||||
Set(VAN::TexCoord,vbo_tex_coord);
|
Set(VAN::TexCoord,vbo_tex_coord);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user