renamed to VertexInputLayout instead of VertexAttributeBinding

This commit is contained in:
HuYingzhuo(hugo/hyzboy) 2022-10-11 19:16:06 +08:00
parent bb3b06f168
commit cd2f278e84
31 changed files with 145 additions and 145 deletions

@ -1 +1 @@
Subproject commit 6682f0050a0ac5614f6c3f401a64289477eafb04
Subproject commit fba5b2deea8784703ccdf7f6c18056178daefc3c

View File

@ -54,15 +54,15 @@ private:
bool InitMaterial()
{
//2D渲染Position坐标全部是使用整数这里强制要求Position输入流使用RGBA16I格式
VABConfigInfo vab_config;
VILConfig vil_config;
VAConfig va_cfg;
va_cfg.format=VF_V4I16;
va_cfg.instance=false;
vab_config.Add("Position",va_cfg);
vil_config.Add("Position",va_cfg);
material_instance=db->CreateMaterialInstance(OS_TEXT("res/material/RoundedBox"),&vab_config);
material_instance=db->CreateMaterialInstance(OS_TEXT("res/material/RoundedBox"),&vil_config);
if(!material_instance)
return(false);

View File

@ -81,7 +81,7 @@ private:
bool InitScene()
{
ro_sphere=inline_geometry::CreateSphere(db,material_instance->GetVAB(),128);
ro_sphere=inline_geometry::CreateSphere(db,material_instance->GetVIL(),128);
render_root.CreateSubNode(scale(100),db->CreateRenderable(ro_sphere,material_instance,pipeline_solid));

View File

@ -128,17 +128,17 @@ private:
aci.size=GetCameraInfo().zfar;
ro_axis=CreateAxis(db,axis_mi->GetVAB(),&aci);
ro_axis=CreateAxis(db,axis_mi->GetVIL(),&aci);
}
{
struct CubeCreateInfo cci;
ro_cube=CreateCube(db,sky_mi->GetVAB(),&cci);
ro_cube=CreateCube(db,sky_mi->GetVIL(),&cci);
}
{
ro_sphere=CreateSphere(db,envmap_mi->GetVAB(),64);
ro_sphere=CreateSphere(db,envmap_mi->GetVIL(),64);
}
}

View File

@ -339,22 +339,22 @@ private:
return(true);
}
void CreateRenderObject(const VAB *vab)
void CreateRenderObject(const VIL *vil)
{
using namespace inline_geometry;
{
struct PlaneCreateInfo pci;
ro_plane=CreatePlane(db,vab,&pci);
ro_plane=CreatePlane(db,vil,&pci);
}
{
struct CubeCreateInfo cci;
ro_cube=CreateCube(db,vab,&cci);
ro_cube=CreateCube(db,vil,&cci);
}
{
ro_sphere=CreateSphere(db,vab,64);
ro_sphere=CreateSphere(db,vil,64);
}
{
@ -369,7 +369,7 @@ private:
tci.uv_scale.x=4;
tci.uv_scale.y=1;
ro_torus=CreateTorus(db,vab,&tci);
ro_torus=CreateTorus(db,vil,&tci);
}
{
@ -379,7 +379,7 @@ private:
cci.radius=10;
cci.numberSlices=32;
ro_cylinder=CreateCylinder(db,vab,&cci);
ro_cylinder=CreateCylinder(db,vil,&cci);
}
{
@ -390,13 +390,13 @@ private:
cci.numberSlices=128;
cci.numberStacks=32;
ro_cone=CreateCone(db,vab,&cci);
ro_cone=CreateCone(db,vil,&cci);
}
}
bool InitCompositionRenderable()
{
ro_gbc_plane=inline_geometry::CreateGBufferCompositionRectangle(db,sp_composition.material_instance->GetVAB());
ro_gbc_plane=inline_geometry::CreateGBufferCompositionRectangle(db,sp_composition.material_instance->GetVIL());
if(!ro_gbc_plane)return(false);
ro_gbc_plane_ri=db->CreateRenderable(ro_gbc_plane,sp_composition.material_instance,sp_composition.pipeline_fan);
@ -407,7 +407,7 @@ private:
bool InitScene(SubpassParam *sp)
{
CreateRenderObject(sp->material_instance->GetVAB());
CreateRenderObject(sp->material_instance->GetVIL());
render_root.CreateSubNode( scale(100,100,1), db->CreateRenderable(ro_plane ,sp->material_instance,sp->pipeline_fan ));
render_root.CreateSubNode( db->CreateRenderable(ro_torus ,sp->material_instance,sp->pipeline_triangles));
render_root.CreateSubNode( scale(20,20,20), db->CreateRenderable(ro_sphere ,sp->material_instance,sp->pipeline_triangles));

View File

@ -64,7 +64,7 @@ private:
void CreateRenderObject()
{
ro_sphere=inline_geometry::CreateSphere(db,envmap_mi->GetVAB(),128);
ro_sphere=inline_geometry::CreateSphere(db,envmap_mi->GetVIL(),128);
}
bool InitUBO()

View File

@ -76,18 +76,18 @@ private:
pgci.color.Set(0.5,0,0,1);
pgci.side_color.Set(1,0,0,1);
const VAB *vab=material_instance->GetVAB();
const VIL *vil=material_instance->GetVIL();
ro_plane_grid[0]=CreatePlaneGrid(db,vab,&pgci);
ro_plane_grid[0]=CreatePlaneGrid(db,vil,&pgci);
pgci.color.Set(0,0.5,0,1);
pgci.side_color.Set(0,1,0,1);
ro_plane_grid[1]=CreatePlaneGrid(db,vab,&pgci);
ro_plane_grid[1]=CreatePlaneGrid(db,vil,&pgci);
pgci.color.Set(0,0,0.5,1);
pgci.side_color.Set(0,0,1,1);
ro_plane_grid[2]=CreatePlaneGrid(db,vab,&pgci);
ro_plane_grid[2]=CreatePlaneGrid(db,vil,&pgci);
}
bool InitScene()

View File

@ -154,10 +154,10 @@ private:
aci.size=200;
ro_axis=CreateAxis(db,axis_mi->GetVAB(),&aci);
ro_axis=CreateAxis(db,axis_mi->GetVIL(),&aci);
}
const VAB *vab=material_instance->GetVAB();
const VIL *vil=material_instance->GetVIL();
{
struct CubeCreateInfo cci;
@ -166,11 +166,11 @@ private:
cci.tex_coord=true;
cci.color_type=CubeCreateInfo::ColorType::SameColor;
cci.color[0]=Vector4f(1,1,1,1);
ro_cube=CreateCube(db,vab,&cci);
ro_cube=CreateCube(db,vil,&cci);
}
{
ro_sphere=CreateSphere(db,vab,64);
ro_sphere=CreateSphere(db,vil,64);
}
{
@ -185,7 +185,7 @@ private:
tci.uv_scale.x=4;
tci.uv_scale.y=1;
ro_torus=CreateTorus(db,vab,&tci);
ro_torus=CreateTorus(db,vil,&tci);
}
{
@ -195,7 +195,7 @@ private:
cci.radius=10;
cci.numberSlices=32;
ro_cylinder=CreateCylinder(db,vab,&cci);
ro_cylinder=CreateCylinder(db,vil,&cci);
}
{
@ -206,7 +206,7 @@ private:
cci.numberSlices=128;
cci.numberStacks=32;
ro_cone=CreateCone(db,vab,&cci);
ro_cone=CreateCone(db,vil,&cci);
}
}

View File

@ -107,7 +107,7 @@ public:
cci.center_color=Vector4f(1,1,1,1);
cci.border_color=Vector4f(1,1,1,0);
Primitive *primitive=CreateCircle(db,os.material_instance->GetVAB(),&cci);
Primitive *primitive=CreateCircle(db,os.material_instance->GetVIL(),&cci);
if(!primitive)return(false);
os.renderable=db->CreateRenderable(primitive,os.material_instance,os.pipeline);
@ -145,7 +145,7 @@ public:
cci.tex_coord=true;
Primitive *primitive=CreateCube(db,cube.material_instance->GetVAB(),&cci);
Primitive *primitive=CreateCube(db,cube.material_instance->GetVIL(),&cci);
if(!primitive)return(false);
cube.renderable=db->CreateRenderable(primitive,cube.material_instance,cube.pipeline);

View File

@ -97,9 +97,9 @@ private:
pgci.color.Set(0.25,0,0,1);
pgci.side_color.Set(1,0,0,1);
const VAB *vab=material_instance->GetVAB();
const VIL *vil=material_instance->GetVIL();
ro_plane_grid=CreatePlaneGrid(db,vab,&pgci);
ro_plane_grid=CreatePlaneGrid(db,vil,&pgci);
}
{

View File

@ -67,7 +67,7 @@ private:
void CreateRenderObject()
{
primitive=inline_geometry::CreateSphere(db,material_instance->GetVAB(),40);
primitive=inline_geometry::CreateSphere(db,material_instance->GetVIL(),40);
}
bool InitUBO()

View File

@ -88,9 +88,9 @@ private:
void CreateRenderObject()
{
const VAB *vab=material_instance->GetVAB();
const VIL *vil=material_instance->GetVIL();
ro_skyphere=inline_geometry::CreateDome(db,vab,64);
ro_skyphere=inline_geometry::CreateDome(db,vil,64);
}
bool InitScene()

View File

@ -28,7 +28,7 @@ constexpr uint32_t SCREEN_HEIGHT=720;
/**
*
*/
Primitive *CreateRenderableTerrain(RenderResource *db,const VAB *vab,const TerrainCreateInfo *tci)
Primitive *CreateRenderableTerrain(RenderResource *db,const VIL *vil,const TerrainCreateInfo *tci)
{
}
@ -95,9 +95,9 @@ private:
pgci.color.Set(0.75,0.75,0.75);
pgci.side_color.Set(1,0,0,1);
const VAB *vab=material_instance->GetVAB();
const VIL *vil=material_instance->GetVIL();
renderable=CreatePlaneGrid(db,vab,&pgci);
renderable=CreatePlaneGrid(db,vil,&pgci);
}
bool InitScene()

View File

@ -20,12 +20,12 @@ namespace hgl
RectScope2f scope;
};//struct RectangleCreateInfo
Primitive *CreateRectangle(RenderResource *db,const VAB *vab,const RectangleCreateInfo *rci);
Primitive *CreateRectangle(RenderResource *db,const VIL *vil,const RectangleCreateInfo *rci);
/**
*
*/
Primitive *CreateGBufferCompositionRectangle(RenderResource *db,const VAB *vab);
Primitive *CreateGBufferCompositionRectangle(RenderResource *db,const VIL *vil);
/**
* (/线)
@ -36,7 +36,7 @@ namespace hgl
uint32_t round_per; ///<圆角精度
};//struct RoundRectangleCreateInfo:public RectangleCreateInfo
Primitive *CreateRoundRectangle(RenderResource *db,const VAB *vab,const RoundRectangleCreateInfo *rci);
Primitive *CreateRoundRectangle(RenderResource *db,const VIL *vil,const RoundRectangleCreateInfo *rci);
/**
*
@ -56,7 +56,7 @@ namespace hgl
/**
* 2D圆形(/线)
*/
Primitive *CreateCircle(RenderResource *db,const VAB *vab,const CircleCreateInfo *cci);
Primitive *CreateCircle(RenderResource *db,const VIL *vil,const CircleCreateInfo *cci);
/**
*
@ -75,7 +75,7 @@ namespace hgl
/**
* (线)
*/
Primitive *CreatePlaneGrid(RenderResource *db,const VAB *vab,const PlaneGridCreateInfo *pgci);
Primitive *CreatePlaneGrid(RenderResource *db,const VIL *vil,const PlaneGridCreateInfo *pgci);
struct PlaneCreateInfo
{
@ -93,7 +93,7 @@ namespace hgl
/**
* ()
*/
Primitive *CreatePlane(RenderResource *db,const VAB *vab,const PlaneCreateInfo *pci);
Primitive *CreatePlane(RenderResource *db,const VIL *vil,const PlaneCreateInfo *pci);
struct CubeCreateInfo
{
@ -129,7 +129,7 @@ namespace hgl
/**
* ()
*/
Primitive *CreateCube(RenderResource *db,const VAB *vab,const CubeCreateInfo *cci);
Primitive *CreateCube(RenderResource *db,const VIL *vil,const CubeCreateInfo *cci);
struct BoundingBoxCreateInfo
{
@ -160,17 +160,17 @@ namespace hgl
/**
* (线)
*/
Primitive *CreateBoundingBox(RenderResource *db,const VAB *vab,const BoundingBoxCreateInfo *cci);
Primitive *CreateBoundingBox(RenderResource *db,const VIL *vil,const BoundingBoxCreateInfo *cci);
/**
* 0,0,01()
*/
Primitive *CreateSphere(RenderResource *db,const VAB *vab,const uint numberSlices);
Primitive *CreateSphere(RenderResource *db,const VIL *vil,const uint numberSlices);
/**
* ()
*/
Primitive *CreateDome(RenderResource *db,const VAB *vab, const uint numberSlices);
Primitive *CreateDome(RenderResource *db,const VIL *vil, const uint numberSlices);
struct TorusCreateInfo
{
@ -186,7 +186,7 @@ namespace hgl
/**
* ()
*/
Primitive *CreateTorus(RenderResource *db,const VAB *vab,const TorusCreateInfo *tci);
Primitive *CreateTorus(RenderResource *db,const VIL *vil,const TorusCreateInfo *tci);
struct CylinderCreateInfo
{
@ -198,7 +198,7 @@ namespace hgl
/**
* ()
*/
Primitive *CreateCylinder(RenderResource *db,const VAB *vab,const CylinderCreateInfo *cci);
Primitive *CreateCylinder(RenderResource *db,const VIL *vil,const CylinderCreateInfo *cci);
struct ConeCreateInfo
{
@ -211,7 +211,7 @@ namespace hgl
/**
* ()
*/
Primitive *CreateCone(RenderResource *db,const VAB *vab,const ConeCreateInfo *cci);
Primitive *CreateCone(RenderResource *db,const VIL *vil,const ConeCreateInfo *cci);
struct AxisCreateInfo
{
@ -232,7 +232,7 @@ namespace hgl
/**
* 线(线)
*/
Primitive *CreateAxis(RenderResource *db,const VAB *vab,const AxisCreateInfo *aci);
Primitive *CreateAxis(RenderResource *db,const VIL *vil,const AxisCreateInfo *aci);
}//namespace inline_geometry
}//namespace graph
};//namespace hgl

View File

@ -35,7 +35,7 @@ namespace hgl
RenderResource *db;
Material *mtl;
const VAB *vab;
const VIL *vil;
protected:
@ -46,7 +46,7 @@ namespace hgl
public:
PrimitiveCreater(RenderResource *sdb,const VAB *);
PrimitiveCreater(RenderResource *sdb,const VIL *);
virtual ~PrimitiveCreater()=default;
virtual bool Init(const uint32 vertices_count); ///<初始化,参数为顶点数量
@ -56,7 +56,7 @@ namespace hgl
template<typename T>
T * CreateVADA(const AnsiString &name) ///<创建一个顶点属性缓冲区以及访问器
{
const VkFormat format=vab->GetFormat(name);
const VkFormat format=vil->GetFormat(name);
if(format!=T::GetVulkanFormat())
return(nullptr);
@ -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 Primitive * Finish(); ///<结束并创建可渲染对象
virtual Primitive * Finish(); ///<结束并创建可渲染对象
};//class PrimitiveCreater
}//namespace graph
}//namespace hgl

View File

@ -125,10 +125,10 @@ public:
CompOperatorMemcmp(const VAConfig &);
};
using VABConfigInfo=Map<AnsiString,VAConfig>;
using VILConfig=Map<AnsiString,VAConfig>;
class VertexAttributeBinding;
using VAB=VertexAttributeBinding;
class VertexInputLayout;
using VIL=VertexInputLayout;
class Primitive;
class Renderable;

View File

@ -229,7 +229,7 @@ public: //shader & material
Material *CreateMaterial(const UTF8String &mtl_name,const VertexShaderModule *vertex_shader_module,const ShaderModule *fragment_shader_module,MaterialDescriptorSets *);
Material *CreateMaterial(const UTF8String &mtl_name,const VertexShaderModule *vertex_shader_module,const ShaderModule *geometry_shader_module,const ShaderModule *fragment_shader_module,MaterialDescriptorSets *);
MaterialInstance *CreateMI(Material *,const VABConfigInfo *vab_cfg=nullptr);
MaterialInstance *CreateMI(Material *,const VILConfig *vil_cfg=nullptr);
public: //Command Buffer 相关

View File

@ -8,7 +8,7 @@ class MaterialInstance
{
Material *material;
VAB *vab;
VIL *vil;
MaterialParameters *mp_value;
@ -16,7 +16,7 @@ private:
friend class GPUDevice;
MaterialInstance(Material *,VAB *,MaterialParameters *);
MaterialInstance(Material *,VIL *,MaterialParameters *);
public:
@ -24,7 +24,7 @@ public:
Material *GetMaterial(){return material;}
const VAB *GetVAB()const{return vab;}
const VIL *GetVIL()const{return vil;}
MaterialParameters *GetMP(){return mp_value;}
MaterialParameters *GetMP(const DescriptorSetsType &type);

View File

@ -25,7 +25,7 @@ protected:
ObjectList<Pipeline> pipeline_list;
Pipeline *CreatePipeline(Material *,PipelineData *,const VAB *);
Pipeline *CreatePipeline(Material *,PipelineData *,const VIL *);
private:

View File

@ -90,8 +90,8 @@ public: //Material
const ShaderModule *CreateShaderModule(const OSString &filename,ShaderResource *shader_resource);
Material * CreateMaterial(const OSString &);
MaterialInstance * CreateMaterialInstance(Material *,const VABConfigInfo *vab_cfg=nullptr);
MaterialInstance * CreateMaterialInstance(const OSString &,const VABConfigInfo *vab_cfg=nullptr);
MaterialInstance * CreateMaterialInstance(Material *,const VILConfig *vil_cfg=nullptr);
MaterialInstance * CreateMaterialInstance(const OSString &,const VILConfig *vil_cfg=nullptr);
Primitive * CreatePrimitive(const uint32_t vertex_count=0);

View File

@ -62,7 +62,7 @@ class VertexShaderModule:public ShaderModule
private:
SortedSets<VAB *> vab_sets;
SortedSets<VIL *> vil_sets;
public:
@ -87,9 +87,9 @@ public:
public:
VAB * CreateVAB(const VABConfigInfo *format_map=nullptr);
bool Release(VAB *);
const uint32_t GetInstanceCount()const{return vab_sets.GetCount();}
VIL * CreateVIL(const VILConfig *format_map=nullptr);
bool Release(VIL *);
const uint32_t GetInstanceCount()const{return vil_sets.GetCount();}
};//class VertexShaderModule:public ShaderModule
VK_NAMESPACE_END
#endif//HGL_GRAPH_VULKAN_SHADER_MODULE_INCLUDE

View File

@ -14,9 +14,9 @@ namespace hgl
{
namespace inline_geometry
{
Primitive *CreateRectangle(RenderResource *db,const VAB *vab,const RectangleCreateInfo *rci)
Primitive *CreateRectangle(RenderResource *db,const VIL *vil,const RectangleCreateInfo *rci)
{
PrimitiveCreater rc(db,vab);
PrimitiveCreater rc(db,vil);
if(!rc.Init(4))
return(nullptr);
@ -31,18 +31,18 @@ namespace hgl
return rc.Finish();
}
Primitive *CreateGBufferCompositionRectangle(RenderResource *db,const VAB *vab)
Primitive *CreateGBufferCompositionRectangle(RenderResource *db,const VIL *vil)
{
RectangleCreateInfo rci;
rci.scope.Set(-1,-1,2,2);
return CreateRectangle(db,vab,&rci);
return CreateRectangle(db,vil,&rci);
}
Primitive *CreateRoundRectangle(RenderResource *db,const VAB *vab,const RoundRectangleCreateInfo *rci)
Primitive *CreateRoundRectangle(RenderResource *db,const VIL *vil,const RoundRectangleCreateInfo *rci)
{
PrimitiveCreater rc(db,vab);
PrimitiveCreater rc(db,vil);
if(rci->radius==0||rci->round_per<=1) //这是要画矩形
{
@ -114,9 +114,9 @@ namespace hgl
return rc.Finish();
}
Primitive *CreateCircle(RenderResource *db,const VAB *vab,const CircleCreateInfo *cci)
Primitive *CreateCircle(RenderResource *db,const VIL *vil,const CircleCreateInfo *cci)
{
PrimitiveCreater rc(db,vab);
PrimitiveCreater rc(db,vil);
uint edge;
@ -162,9 +162,9 @@ namespace hgl
return rc.Finish();
}
Primitive *CreatePlaneGrid(RenderResource *db,const VAB *vab,const PlaneGridCreateInfo *pgci)
Primitive *CreatePlaneGrid(RenderResource *db,const VIL *vil,const PlaneGridCreateInfo *pgci)
{
PrimitiveCreater rc(db,vab);
PrimitiveCreater rc(db,vil);
if(!rc.Init(((pgci->step.x+1)+(pgci->step.y+1))*2))
return(nullptr);
@ -209,14 +209,14 @@ namespace hgl
return rc.Finish();
}
Primitive *CreatePlane(RenderResource *db,const VAB *vab,const PlaneCreateInfo *pci)
Primitive *CreatePlane(RenderResource *db,const VIL *vil,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 };
const Vector3f xy_normal(0.0f,0.0f,1.0f);
const Vector3f xy_tangent(1.0f,0.0f,0.0f);
PrimitiveCreater rc(db,vab);
PrimitiveCreater rc(db,vil);
if(!rc.Init(4))
return(nullptr);
@ -250,7 +250,7 @@ namespace hgl
return rc.Finish();
}
Primitive *CreateCube(RenderResource *db,const VAB *vab,const CubeCreateInfo *cci)
Primitive *CreateCube(RenderResource *db,const VIL *vil,const CubeCreateInfo *cci)
{
/**
* 4 5
@ -303,7 +303,7 @@ namespace hgl
16, 17, 18, 16, 18, 19,
20, 23, 22, 20, 22, 21};
PrimitiveCreater rc(db,vab);
PrimitiveCreater rc(db,vil);
if(!rc.Init(24))
return(nullptr);
@ -442,9 +442,9 @@ namespace hgl
* @param numberSlices
* @return
*/
Primitive *CreateSphere(RenderResource *db,const VAB *vab,const uint numberSlices)
Primitive *CreateSphere(RenderResource *db,const VIL *vil,const uint numberSlices)
{
PrimitiveCreater rc(db,vab);
PrimitiveCreater rc(db,vil);
uint numberParallels = (numberSlices+1) / 2;
uint numberVertices = (numberParallels + 1) * (numberSlices + 1);
@ -518,9 +518,9 @@ namespace hgl
return rc.Finish();
}
Primitive *CreateDome(RenderResource *db,const VAB *vab,const uint numberSlices)
Primitive *CreateDome(RenderResource *db,const VIL *vil,const uint numberSlices)
{
PrimitiveCreater rc(db,vab);
PrimitiveCreater rc(db,vil);
uint i, j;
@ -639,9 +639,9 @@ namespace hgl
}
}//namespace
Primitive *CreateTorus(RenderResource *db,const VAB *vab,const TorusCreateInfo *tci)
Primitive *CreateTorus(RenderResource *db,const VIL *vil,const TorusCreateInfo *tci)
{
PrimitiveCreater rc(db,vab);
PrimitiveCreater rc(db,vil);
// s, t = parametric values of the equations, in the range [0,1]
float s = 0;
@ -795,14 +795,14 @@ namespace hgl
}
}//namespace
Primitive *CreateCylinder(RenderResource *db,const VAB *vab,const CylinderCreateInfo *cci)
Primitive *CreateCylinder(RenderResource *db,const VIL *vil,const CylinderCreateInfo *cci)
{
uint numberIndices = cci->numberSlices * 3 * 2 + cci->numberSlices * 6;
if(numberIndices<=0)
return(nullptr);
PrimitiveCreater rc(db,vab);
PrimitiveCreater rc(db,vil);
uint numberVertices = (cci->numberSlices + 2) * 2 + (cci->numberSlices + 1) * 2;
@ -1014,9 +1014,9 @@ namespace hgl
}
}//namespace
Primitive *CreateCone(RenderResource *db,const VAB *vab,const ConeCreateInfo *cci)
Primitive *CreateCone(RenderResource *db,const VIL *vil,const ConeCreateInfo *cci)
{
PrimitiveCreater rc(db,vab);
PrimitiveCreater rc(db,vil);
uint i, j;
@ -1141,11 +1141,11 @@ namespace hgl
return rc.Finish();
}
Primitive *CreateAxis(RenderResource *db,const VAB *vab,const AxisCreateInfo *aci)
Primitive *CreateAxis(RenderResource *db,const VIL *vil,const AxisCreateInfo *aci)
{
if(!db||!vab||!aci)return(nullptr);
if(!db||!vil||!aci)return(nullptr);
PrimitiveCreater rc(db,vab);
PrimitiveCreater rc(db,vil);
if(!rc.Init(6))
return(nullptr);
@ -1168,7 +1168,7 @@ namespace hgl
return rc.Finish();
}
Primitive *CreateBoundingBox(RenderResource *db,const VAB *vab,const BoundingBoxCreateInfo *cci)
Primitive *CreateBoundingBox(RenderResource *db,const VIL *vil,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,
@ -1190,7 +1190,7 @@ namespace hgl
0,4, 1,5, 2,6, 3,7
};
PrimitiveCreater rc(db,vab);
PrimitiveCreater rc(db,vil);
if(!rc.Init(8))
return(nullptr);

View File

@ -5,10 +5,10 @@ namespace hgl
{
namespace graph
{
PrimitiveCreater::PrimitiveCreater(RenderResource *sdb,const VAB *v)
PrimitiveCreater::PrimitiveCreater(RenderResource *sdb,const VIL *v)
{
db =sdb;
vab =v;
vil =v;
vertices_number =0;
ibo =nullptr;
@ -25,10 +25,10 @@ namespace hgl
VAD *PrimitiveCreater::CreateVAD(const AnsiString &name)
{
if(!vab)return(nullptr);
if(!vil)return(nullptr);
if(name.IsEmpty())return(nullptr);
const auto *va=vab->GetVertexAttribute(name);
const auto *va=vil->GetConfig(name);
if(!va)
return(nullptr);
@ -58,7 +58,7 @@ namespace hgl
bool PrimitiveCreater::WriteVAD(const AnsiString &name,const void *data,const uint32_t bytes)
{
if(!vab)return(false);
if(!vil)return(false);
if(name.IsEmpty())return(false);
if(!data)return(false);
if(!bytes)return(false);
@ -68,7 +68,7 @@ namespace hgl
if(ssb_map.Get(name,ssb))
return false;
const auto *va=vab->GetVertexAttribute(name);
const auto *va=vil->GetConfig(name);
if(!va)
return(false);
@ -107,7 +107,7 @@ namespace hgl
Primitive *PrimitiveCreater::Finish()
{
const uint si_count=vab->GetVertexAttrCount();
const uint si_count=vil->GetAttrCount();
if(ssb_map.GetCount()!=si_count)
return(nullptr);

View File

@ -4,7 +4,7 @@
#include<hgl/graph/VKMaterialParameters.h>
#include<hgl/graph/VKDescriptorSets.h>
#include<hgl/graph/VKShaderModuleMap.h>
#include<hgl/graph/VKVertexAttributeBinding.h>
#include<hgl/graph/VKVertexInputLayout.h>
#include"VKPipelineLayoutData.h"
VK_NAMESPACE_BEGIN

View File

@ -5,26 +5,26 @@
#include<hgl/graph/VKShaderModule.h>
VK_NAMESPACE_BEGIN
MaterialInstance *GPUDevice::CreateMI(Material *mtl,const VABConfigInfo *vab_cfg)
MaterialInstance *GPUDevice::CreateMI(Material *mtl,const VILConfig *vil_cfg)
{
if(!mtl)return(nullptr);
VertexShaderModule *vsm=mtl->GetVertexShaderModule();
VAB *vab=vsm->CreateVAB(vab_cfg);
VIL *vil=vsm->CreateVIL(vil_cfg);
if(!vab)return(nullptr);
if(!vil)return(nullptr);
MaterialParameters *mp=CreateMP(mtl,DescriptorSetsType::Value);
return(new MaterialInstance(mtl,vab,mp));
return(new MaterialInstance(mtl,vil,mp));
}
MaterialInstance::MaterialInstance(Material *mtl,VAB *v,MaterialParameters *p)
MaterialInstance::MaterialInstance(Material *mtl,VIL *v,MaterialParameters *p)
{
material=mtl;
vab=v;
vil=v;
mp_value=p;
}

View File

@ -4,19 +4,19 @@
#include<hgl/graph/VKVertexAttribBuffer.h>
VK_NAMESPACE_BEGIN
//bool Renderable::Set(const int stage_input_binding,VAB *vab,VkDeviceSize offset)
//bool Renderable::Set(const int stage_input_binding,VIL *vil,VkDeviceSize offset)
//{
// if(stage_input_binding<0||stage_input_binding>=buf_count||!vab)return(false);
// if(stage_input_binding<0||stage_input_binding>=buf_count||!vil)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);
// if(vil->GetFormat()!=attr->format)return(false);
// if(vil->GetStride()!=desc->stride)return(false);
//
// //format信息来自于shader实际中可以不一样。但那样需要为每一个格式产生一个同样shader的material instance不同的格式又需要不同的pipeline我们不支持这种行为
//
// buf_list[stage_input_binding]=vab->GetBuffer();
// buf_list[stage_input_binding]=vil->GetBuffer();
// buf_offset[stage_input_binding]=offset;
//
// return(true);

View File

@ -23,12 +23,12 @@ RenderPass::~RenderPass()
vkDestroyRenderPass(device,render_pass,nullptr);
}
Pipeline *RenderPass::CreatePipeline(Material *mtl,PipelineData *pd,const VAB *vab)
Pipeline *RenderPass::CreatePipeline(Material *mtl,PipelineData *pd,const VIL *vil)
{
VkPipeline graphicsPipeline;
pd->InitShaderStage(mtl->GetStageList());
pd->InitVertexInputState(vab);
pd->InitVertexInputState(vil);
pd->SetColorAttachments(color_formats.GetCount());
@ -58,7 +58,7 @@ Pipeline *RenderPass::CreatePipeline(MaterialInstance *mi,const PipelineData *da
PipelineData *pd=new PipelineData(data);
return CreatePipeline(mtl,pd,mi->GetVAB());
return CreatePipeline(mtl,pd,mi->GetVIL());
}
Pipeline *RenderPass::CreatePipeline(MaterialInstance *mi,const InlinePipeline &ip)
@ -80,7 +80,7 @@ Pipeline *RenderPass::CreatePipeline(MaterialInstance *mi,const InlinePipeline &
pd->Set(prim,prim_restart);
Pipeline *p=CreatePipeline(mi->GetMaterial(),pd,mi->GetVAB());
Pipeline *p=CreatePipeline(mi->GetMaterial(),pd,mi->GetVIL());
if(p)
pipeline_list.Add(p);
@ -94,7 +94,7 @@ Pipeline *RenderPass::CreatePipeline(MaterialInstance *mi,const PipelineData *cp
pd->Set(prim,prim_restart);
Pipeline *p=CreatePipeline(mi->GetMaterial(),pd,mi->GetVAB());
Pipeline *p=CreatePipeline(mi->GetMaterial(),pd,mi->GetVIL());
if(p)
pipeline_list.Add(p);

View File

@ -50,11 +50,11 @@ IndexBuffer *RenderResource::CreateIBO(IndexType index_type,uint32_t count,const
return(buf);
}
MaterialInstance *RenderResource::CreateMaterialInstance(Material *mtl,const VABConfigInfo *vab_cfg)
MaterialInstance *RenderResource::CreateMaterialInstance(Material *mtl,const VILConfig *vil_cfg)
{
if(!mtl)return(nullptr);
MaterialInstance *mi=device->CreateMI(mtl,vab_cfg);
MaterialInstance *mi=device->CreateMI(mtl,vil_cfg);
if(mi)
Add(mi);
@ -62,14 +62,14 @@ MaterialInstance *RenderResource::CreateMaterialInstance(Material *mtl,const VAB
return mi;
}
MaterialInstance *RenderResource::CreateMaterialInstance(const OSString &mtl_filename,const VABConfigInfo *vab_cfg)
MaterialInstance *RenderResource::CreateMaterialInstance(const OSString &mtl_filename,const VILConfig *vil_cfg)
{
Material *mtl=this->CreateMaterial(mtl_filename);
if(!mtl)
return(nullptr);
return CreateMaterialInstance(mtl,vab_cfg);
return CreateMaterialInstance(mtl,vil_cfg);
}
Primitive *RenderResource::CreatePrimitive(const uint32_t vertex_count)

View File

@ -36,8 +36,8 @@ Renderable *CreateRenderable(Primitive *r,MaterialInstance *mi,Pipeline *p)
{
if(!r||!mi||!p)return(nullptr);
const VAB *vab=mi->GetVAB();
const int input_count=vab->GetVertexAttrCount();
const VIL *vil=mi->GetVIL();
const int input_count=vil->GetAttrCount();
const UTF8String &mtl_name=mi->GetMaterial()->GetName();
if(r->GetBufferCount()<input_count) //小于材质要求的数量?那自然是不行的
@ -51,9 +51,9 @@ Renderable *CreateRenderable(Primitive *r,MaterialInstance *mi,Pipeline *p)
AutoDeleteArray<VkDeviceSize> buffer_size(input_count);
VBO *vbo;
const AnsiString ** name_list=vab->GetVertexNameList();
const VkVertexInputBindingDescription * bind_list=vab->GetVertexBindingList();
const VkVertexInputAttributeDescription * attr_list=vab->GetVertexAttributeList();
const AnsiString ** name_list=vil->GetNameList();
const VkVertexInputBindingDescription * bind_list=vil->GetBindingList();
const VkVertexInputAttributeDescription * attr_list=vil->GetAttributeList();
for(int i=0;i<input_count;i++)
{
@ -61,7 +61,7 @@ Renderable *CreateRenderable(Primitive *r,MaterialInstance *mi,Pipeline *p)
if(!vbo)
{
LOG_ERROR("[FATAL ERROR] can't find VBO \""+**name_list+"\" in Material: "+mtl_name);
LOG_ERROR("[FATAL ERROR] not found VBO \""+**name_list+"\" in Material: "+mtl_name);
return(nullptr);
}

View File

@ -1,5 +1,5 @@
#include<hgl/graph/VKShaderModule.h>
#include<hgl/graph/VKVertexAttributeBinding.h>
#include<hgl/graph/VKVertexInputLayout.h>
#include<hgl/graph/VKDevice.h>
VK_NAMESPACE_BEGIN
@ -60,7 +60,7 @@ VertexShaderModule::VertexShaderModule(VkDevice dev,VkPipelineShaderStageCreateI
VertexShaderModule::~VertexShaderModule()
{
if(vab_sets.GetCount()>0)
if(vil_sets.GetCount()>0)
{
//还有在用的,这是个错误
}
@ -69,7 +69,7 @@ VertexShaderModule::~VertexShaderModule()
delete[] name_list;
}
VAB *VertexShaderModule::CreateVAB(const VABConfigInfo *cfg)
VIL *VertexShaderModule::CreateVIL(const VILConfig *cfg)
{
VkVertexInputBindingDescription *binding_list=new VkVertexInputBindingDescription[attr_count];
VkVertexInputAttributeDescription *attribute_list=new VkVertexInputAttributeDescription[attr_count];
@ -126,15 +126,15 @@ VAB *VertexShaderModule::CreateVAB(const VABConfigInfo *cfg)
++si;
}
VAB *vab=new VAB(attr_count,name_list,type_list,binding_list,attribute_list);
VIL *vil=new VIL(attr_count,name_list,type_list,binding_list,attribute_list);
vab_sets.Add(vab);
vil_sets.Add(vil);
return(vab);
return(vil);
}
bool VertexShaderModule::Release(VAB *vab)
bool VertexShaderModule::Release(VIL *vil)
{
return vab_sets.Delete(vab);
return vil_sets.Delete(vil);
}
VK_NAMESPACE_END

View File

@ -84,15 +84,15 @@ namespace hgl
//文本渲染Position坐标全部是使用整数这里强制要求Position输入流使用RGBA16I格式
{
VABConfigInfo vab_config;
VILConfig vil_config;
VAConfig va_cfg;
va_cfg.format=VF_V4I16;
va_cfg.instance=false;
vab_config.Add("Position",va_cfg);
vil_config.Add("Position",va_cfg);
material_instance=db->CreateMaterialInstance(material,&vab_config);
material_instance=db->CreateMaterialInstance(material,&vil_config);
if(!material_instance)return(false);
}