used VABConfigInfo at CreateMaterialInstance of TextRenderable
This commit is contained in:
@@ -81,7 +81,7 @@ private:
|
||||
|
||||
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));
|
||||
|
||||
|
@@ -171,18 +171,18 @@ private:
|
||||
|
||||
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)
|
||||
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;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
@@ -287,20 +287,20 @@ private:
|
||||
return(true);
|
||||
}
|
||||
|
||||
void CreateRenderObject(Material *mtl)
|
||||
void CreateRenderObject(const VAB *vab)
|
||||
{
|
||||
{
|
||||
struct PlaneCreateInfo pci;
|
||||
ro_plane=CreateRenderablePlane(db,mtl,&pci);
|
||||
ro_plane=CreateRenderablePlane(db,vab,&pci);
|
||||
}
|
||||
|
||||
{
|
||||
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.y=1;
|
||||
|
||||
ro_torus=CreateRenderableTorus(db,mtl,&tci);
|
||||
ro_torus=CreateRenderableTorus(db,vab,&tci);
|
||||
}
|
||||
|
||||
{
|
||||
@@ -325,7 +325,7 @@ private:
|
||||
cci.radius=10;
|
||||
cci.numberSlices=32;
|
||||
|
||||
ro_cylinder=CreateRenderableCylinder(db,mtl,&cci);
|
||||
ro_cylinder=CreateRenderableCylinder(db,vab,&cci);
|
||||
}
|
||||
|
||||
{
|
||||
@@ -336,13 +336,13 @@ private:
|
||||
cci.numberSlices=128;
|
||||
cci.numberStacks=32;
|
||||
|
||||
ro_cone=CreateRenderableCone(db,mtl,&cci);
|
||||
ro_cone=CreateRenderableCone(db,vab,&cci);
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
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)
|
||||
{
|
||||
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( 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));
|
||||
|
@@ -27,6 +27,7 @@ class TestApp:public VulkanApplicationFramework
|
||||
private:
|
||||
|
||||
Sampler * sampler =nullptr;
|
||||
Material * material =nullptr;
|
||||
MaterialInstance * material_instance =nullptr;
|
||||
GPUBuffer * ubo_camera_info =nullptr;
|
||||
GPUBuffer * ubo_color =nullptr;
|
||||
@@ -56,8 +57,21 @@ private:
|
||||
|
||||
bool InitMaterial()
|
||||
{
|
||||
material_instance=db->CreateMaterialInstance(OS_TEXT("res/material/LumTextureRect2D"));
|
||||
if(!material_instance)return(false);
|
||||
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);
|
||||
}
|
||||
|
||||
pipeline=CreatePipeline(material_instance,InlinePipeline::Solid2D,Prim::SolidRectangles);
|
||||
if(!pipeline)return(false);
|
||||
|
@@ -215,8 +215,8 @@ private:
|
||||
render_obj=db->CreateRenderable(tile_count);
|
||||
if(!render_obj)return(false);
|
||||
|
||||
render_obj->Set(VAN::Position,db->CreateVBO(VF_VEC4,tile_count,vertex_data));
|
||||
render_obj->Set(VAN::TexCoord,db->CreateVBO(VF_VEC4,tile_count,tex_coord_data));
|
||||
render_obj->Set(VAN::Position,db->CreateVBO(VF_V4F,tile_count,vertex_data));
|
||||
render_obj->Set(VAN::TexCoord,db->CreateVBO(VF_V4F,tile_count,tex_coord_data));
|
||||
|
||||
render_instance=db->CreateRenderableInstance(render_obj,material_instance,pipeline);
|
||||
|
||||
|
@@ -7,8 +7,8 @@
|
||||
using namespace hgl;
|
||||
using namespace hgl::graph;
|
||||
|
||||
constexpr uint32_t SCREEN_WIDTH=128;
|
||||
constexpr uint32_t SCREEN_HEIGHT=128;
|
||||
constexpr uint32_t SCREEN_WIDTH=256;
|
||||
constexpr uint32_t SCREEN_HEIGHT=256;
|
||||
|
||||
constexpr uint32_t VERTEX_COUNT=4;
|
||||
|
||||
@@ -78,7 +78,7 @@ private:
|
||||
auto render_obj=db->CreateRenderable(VERTEX_COUNT);
|
||||
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);
|
||||
return(true);
|
||||
@@ -107,6 +107,8 @@ public:
|
||||
|
||||
void Resize(int w,int h)override
|
||||
{
|
||||
cam.width=w;
|
||||
cam.height=h;
|
||||
cam.vp_width=w;
|
||||
cam.vp_height=h;
|
||||
|
||||
|
@@ -85,16 +85,18 @@ private:
|
||||
pgci.color.Set(0.5,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.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.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);
|
||||
}
|
||||
|
@@ -85,7 +85,7 @@ private:
|
||||
axis_mi=db->CreateMaterialInstance(axis_material);
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -143,7 +143,7 @@ private:
|
||||
pipeline_data=GetPipelineData(InlinePipeline::Solid3D);
|
||||
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);
|
||||
|
||||
return(true);
|
||||
@@ -156,18 +156,20 @@ private:
|
||||
|
||||
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;
|
||||
cci.has_color=true;
|
||||
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.y=1;
|
||||
|
||||
ro_torus=CreateRenderableTorus(db,material,&tci);
|
||||
ro_torus=CreateRenderableTorus(db,vab,&tci);
|
||||
}
|
||||
|
||||
{
|
||||
@@ -192,7 +194,7 @@ private:
|
||||
cci.radius=10;
|
||||
cci.numberSlices=32;
|
||||
|
||||
ro_cylinder=CreateRenderableCylinder(db,material,&cci);
|
||||
ro_cylinder=CreateRenderableCylinder(db,vab,&cci);
|
||||
}
|
||||
|
||||
{
|
||||
@@ -203,7 +205,7 @@ private:
|
||||
cci.numberSlices=128;
|
||||
cci.numberStacks=32;
|
||||
|
||||
ro_cone=CreateRenderableCone(db,material,&cci);
|
||||
ro_cone=CreateRenderableCone(db,vab,&cci);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -56,6 +56,7 @@ public:
|
||||
~TestApp()
|
||||
{
|
||||
SAFE_CLEAR(cube.render_list);
|
||||
SAFE_CLEAR(os.pipeline);
|
||||
SAFE_CLEAR(os.render_taget);
|
||||
}
|
||||
|
||||
@@ -114,7 +115,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->GetMaterial(),&cci);
|
||||
Renderable *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);
|
||||
@@ -156,7 +157,7 @@ public:
|
||||
{
|
||||
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);
|
||||
|
||||
cube.renderable_instance=db->CreateRenderableInstance(render_obj,cube.material_instance,cube.pipeline);
|
||||
|
@@ -109,8 +109,8 @@ private:
|
||||
|
||||
if(!render_obj)return(false);
|
||||
|
||||
render_obj->Set(VAN::Position,db->CreateVBO(VF_VEC4,VERTEX_COUNT,vertex_data));
|
||||
render_obj->Set(VAN::TexCoord,db->CreateVBO(VF_VEC4,VERTEX_COUNT,tex_coord_data));
|
||||
render_obj->Set(VAN::Position,db->CreateVBO(VF_V4F,VERTEX_COUNT,vertex_data));
|
||||
render_obj->Set(VAN::TexCoord,db->CreateVBO(VF_V4F,VERTEX_COUNT,tex_coord_data));
|
||||
|
||||
render_instance=db->CreateRenderableInstance(render_obj,material_instance,pipeline);
|
||||
|
||||
|
@@ -87,8 +87,8 @@ private:
|
||||
Renderable *render_obj=db->CreateRenderable(VERTEX_COUNT);
|
||||
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::Color, db->CreateVBO(VF_VEC4,VERTEX_COUNT,color_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_V4F,VERTEX_COUNT,color_data)))return(false);
|
||||
|
||||
render_instance=db->CreateRenderableInstance(render_obj,material_instance,pipeline);
|
||||
return(true);
|
||||
|
@@ -87,7 +87,7 @@ private:
|
||||
auto render_obj=db->CreateRenderable(VERTEX_COUNT);
|
||||
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);
|
||||
|
||||
renderable_instance=db->CreateRenderableInstance(render_obj,material_instance,pipeline);
|
||||
|
@@ -121,8 +121,8 @@ private:
|
||||
auto render_obj=db->CreateRenderable(VERTEX_COUNT);
|
||||
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::TexCoord,db->CreateVBO(VF_VEC2,VERTEX_COUNT,tex_coord_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_V2F,VERTEX_COUNT,tex_coord_data)))return(false);
|
||||
if(!render_obj->Set(db->CreateIBO16(INDEX_COUNT,index_data)))return(false);
|
||||
|
||||
renderable_instance=db->CreateRenderableInstance(render_obj,material_instance,pipeline);
|
||||
|
@@ -87,8 +87,8 @@ private:
|
||||
Renderable *render_obj=db->CreateRenderable(VERTEX_COUNT);
|
||||
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::Color, db->CreateVBO(VF_VEC4,VERTEX_COUNT,color_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_V4F,VERTEX_COUNT,color_data)))return(false);
|
||||
|
||||
render_instance=db->CreateRenderableInstance(render_obj,material_instance,pipeline);
|
||||
|
||||
|
Reference in New Issue
Block a user