renamed to VertexInputLayout instead of VertexAttributeBinding
This commit is contained in:
parent
bb3b06f168
commit
cd2f278e84
@ -1 +1 @@
|
|||||||
Subproject commit 6682f0050a0ac5614f6c3f401a64289477eafb04
|
Subproject commit fba5b2deea8784703ccdf7f6c18056178daefc3c
|
@ -54,15 +54,15 @@ private:
|
|||||||
bool InitMaterial()
|
bool InitMaterial()
|
||||||
{
|
{
|
||||||
//2D渲染Position坐标全部是使用整数,这里强制要求Position输入流使用RGBA16I格式
|
//2D渲染Position坐标全部是使用整数,这里强制要求Position输入流使用RGBA16I格式
|
||||||
VABConfigInfo vab_config;
|
VILConfig vil_config;
|
||||||
VAConfig va_cfg;
|
VAConfig va_cfg;
|
||||||
|
|
||||||
va_cfg.format=VF_V4I16;
|
va_cfg.format=VF_V4I16;
|
||||||
va_cfg.instance=false;
|
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)
|
if(!material_instance)
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
|
@ -81,7 +81,7 @@ private:
|
|||||||
|
|
||||||
bool InitScene()
|
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));
|
render_root.CreateSubNode(scale(100),db->CreateRenderable(ro_sphere,material_instance,pipeline_solid));
|
||||||
|
|
||||||
|
@ -128,17 +128,17 @@ private:
|
|||||||
|
|
||||||
aci.size=GetCameraInfo().zfar;
|
aci.size=GetCameraInfo().zfar;
|
||||||
|
|
||||||
ro_axis=CreateAxis(db,axis_mi->GetVAB(),&aci);
|
ro_axis=CreateAxis(db,axis_mi->GetVIL(),&aci);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
struct CubeCreateInfo cci;
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -339,22 +339,22 @@ private:
|
|||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CreateRenderObject(const VAB *vab)
|
void CreateRenderObject(const VIL *vil)
|
||||||
{
|
{
|
||||||
using namespace inline_geometry;
|
using namespace inline_geometry;
|
||||||
|
|
||||||
{
|
{
|
||||||
struct PlaneCreateInfo pci;
|
struct PlaneCreateInfo pci;
|
||||||
ro_plane=CreatePlane(db,vab,&pci);
|
ro_plane=CreatePlane(db,vil,&pci);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
struct CubeCreateInfo cci;
|
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.x=4;
|
||||||
tci.uv_scale.y=1;
|
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.radius=10;
|
||||||
cci.numberSlices=32;
|
cci.numberSlices=32;
|
||||||
|
|
||||||
ro_cylinder=CreateCylinder(db,vab,&cci);
|
ro_cylinder=CreateCylinder(db,vil,&cci);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -390,13 +390,13 @@ private:
|
|||||||
cci.numberSlices=128;
|
cci.numberSlices=128;
|
||||||
cci.numberStacks=32;
|
cci.numberStacks=32;
|
||||||
|
|
||||||
ro_cone=CreateCone(db,vab,&cci);
|
ro_cone=CreateCone(db,vil,&cci);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool InitCompositionRenderable()
|
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);
|
if(!ro_gbc_plane)return(false);
|
||||||
|
|
||||||
ro_gbc_plane_ri=db->CreateRenderable(ro_gbc_plane,sp_composition.material_instance,sp_composition.pipeline_fan);
|
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)
|
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( 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( 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));
|
render_root.CreateSubNode( scale(20,20,20), db->CreateRenderable(ro_sphere ,sp->material_instance,sp->pipeline_triangles));
|
||||||
|
@ -64,7 +64,7 @@ private:
|
|||||||
|
|
||||||
void CreateRenderObject()
|
void CreateRenderObject()
|
||||||
{
|
{
|
||||||
ro_sphere=inline_geometry::CreateSphere(db,envmap_mi->GetVAB(),128);
|
ro_sphere=inline_geometry::CreateSphere(db,envmap_mi->GetVIL(),128);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool InitUBO()
|
bool InitUBO()
|
||||||
|
@ -76,18 +76,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);
|
||||||
|
|
||||||
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.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]=CreatePlaneGrid(db,vab,&pgci);
|
ro_plane_grid[1]=CreatePlaneGrid(db,vil,&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]=CreatePlaneGrid(db,vab,&pgci);
|
ro_plane_grid[2]=CreatePlaneGrid(db,vil,&pgci);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool InitScene()
|
bool InitScene()
|
||||||
|
@ -154,10 +154,10 @@ private:
|
|||||||
|
|
||||||
aci.size=200;
|
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;
|
struct CubeCreateInfo cci;
|
||||||
@ -166,11 +166,11 @@ private:
|
|||||||
cci.tex_coord=true;
|
cci.tex_coord=true;
|
||||||
cci.color_type=CubeCreateInfo::ColorType::SameColor;
|
cci.color_type=CubeCreateInfo::ColorType::SameColor;
|
||||||
cci.color[0]=Vector4f(1,1,1,1);
|
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.x=4;
|
||||||
tci.uv_scale.y=1;
|
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.radius=10;
|
||||||
cci.numberSlices=32;
|
cci.numberSlices=32;
|
||||||
|
|
||||||
ro_cylinder=CreateCylinder(db,vab,&cci);
|
ro_cylinder=CreateCylinder(db,vil,&cci);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -206,7 +206,7 @@ private:
|
|||||||
cci.numberSlices=128;
|
cci.numberSlices=128;
|
||||||
cci.numberStacks=32;
|
cci.numberStacks=32;
|
||||||
|
|
||||||
ro_cone=CreateCone(db,vab,&cci);
|
ro_cone=CreateCone(db,vil,&cci);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -107,7 +107,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);
|
||||||
|
|
||||||
Primitive *primitive=CreateCircle(db,os.material_instance->GetVAB(),&cci);
|
Primitive *primitive=CreateCircle(db,os.material_instance->GetVIL(),&cci);
|
||||||
if(!primitive)return(false);
|
if(!primitive)return(false);
|
||||||
|
|
||||||
os.renderable=db->CreateRenderable(primitive,os.material_instance,os.pipeline);
|
os.renderable=db->CreateRenderable(primitive,os.material_instance,os.pipeline);
|
||||||
@ -145,7 +145,7 @@ public:
|
|||||||
|
|
||||||
cci.tex_coord=true;
|
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);
|
if(!primitive)return(false);
|
||||||
|
|
||||||
cube.renderable=db->CreateRenderable(primitive,cube.material_instance,cube.pipeline);
|
cube.renderable=db->CreateRenderable(primitive,cube.material_instance,cube.pipeline);
|
||||||
|
@ -97,9 +97,9 @@ private:
|
|||||||
pgci.color.Set(0.25,0,0,1);
|
pgci.color.Set(0.25,0,0,1);
|
||||||
pgci.side_color.Set(1,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);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -67,7 +67,7 @@ private:
|
|||||||
|
|
||||||
void CreateRenderObject()
|
void CreateRenderObject()
|
||||||
{
|
{
|
||||||
primitive=inline_geometry::CreateSphere(db,material_instance->GetVAB(),40);
|
primitive=inline_geometry::CreateSphere(db,material_instance->GetVIL(),40);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool InitUBO()
|
bool InitUBO()
|
||||||
|
@ -88,9 +88,9 @@ private:
|
|||||||
|
|
||||||
void CreateRenderObject()
|
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()
|
bool InitScene()
|
||||||
|
@ -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.color.Set(0.75,0.75,0.75);
|
||||||
pgci.side_color.Set(1,0,0,1);
|
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()
|
bool InitScene()
|
||||||
|
@ -20,12 +20,12 @@ namespace hgl
|
|||||||
RectScope2f scope;
|
RectScope2f scope;
|
||||||
};//struct RectangleCreateInfo
|
};//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; ///<圆角精度
|
uint32_t round_per; ///<圆角精度
|
||||||
};//struct RoundRectangleCreateInfo:public RectangleCreateInfo
|
};//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圆形(扇形/线圈)
|
* 创建一个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
|
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
|
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
|
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,0,半径为1的球体(三角形)
|
* 创建一个球心坐标为0,0,0,半径为1的球体(三角形)
|
||||||
*/
|
*/
|
||||||
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
|
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
|
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
|
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
|
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 inline_geometry
|
||||||
}//namespace graph
|
}//namespace graph
|
||||||
};//namespace hgl
|
};//namespace hgl
|
||||||
|
@ -35,7 +35,7 @@ namespace hgl
|
|||||||
RenderResource *db;
|
RenderResource *db;
|
||||||
Material *mtl;
|
Material *mtl;
|
||||||
|
|
||||||
const VAB *vab;
|
const VIL *vil;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
@ -46,7 +46,7 @@ namespace hgl
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
PrimitiveCreater(RenderResource *sdb,const VAB *);
|
PrimitiveCreater(RenderResource *sdb,const VIL *);
|
||||||
virtual ~PrimitiveCreater()=default;
|
virtual ~PrimitiveCreater()=default;
|
||||||
|
|
||||||
virtual bool Init(const uint32 vertices_count); ///<初始化,参数为顶点数量
|
virtual bool Init(const uint32 vertices_count); ///<初始化,参数为顶点数量
|
||||||
@ -56,7 +56,7 @@ namespace hgl
|
|||||||
template<typename T>
|
template<typename T>
|
||||||
T * CreateVADA(const AnsiString &name) ///<创建一个顶点属性缓冲区以及访问器
|
T * CreateVADA(const AnsiString &name) ///<创建一个顶点属性缓冲区以及访问器
|
||||||
{
|
{
|
||||||
const VkFormat format=vab->GetFormat(name);
|
const VkFormat format=vil->GetFormat(name);
|
||||||
|
|
||||||
if(format!=T::GetVulkanFormat())
|
if(format!=T::GetVulkanFormat())
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
|
@ -125,10 +125,10 @@ public:
|
|||||||
CompOperatorMemcmp(const VAConfig &);
|
CompOperatorMemcmp(const VAConfig &);
|
||||||
};
|
};
|
||||||
|
|
||||||
using VABConfigInfo=Map<AnsiString,VAConfig>;
|
using VILConfig=Map<AnsiString,VAConfig>;
|
||||||
|
|
||||||
class VertexAttributeBinding;
|
class VertexInputLayout;
|
||||||
using VAB=VertexAttributeBinding;
|
using VIL=VertexInputLayout;
|
||||||
|
|
||||||
class Primitive;
|
class Primitive;
|
||||||
class Renderable;
|
class Renderable;
|
||||||
|
@ -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 *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 *);
|
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 相关
|
public: //Command Buffer 相关
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ class MaterialInstance
|
|||||||
{
|
{
|
||||||
Material *material;
|
Material *material;
|
||||||
|
|
||||||
VAB *vab;
|
VIL *vil;
|
||||||
|
|
||||||
MaterialParameters *mp_value;
|
MaterialParameters *mp_value;
|
||||||
|
|
||||||
@ -16,7 +16,7 @@ private:
|
|||||||
|
|
||||||
friend class GPUDevice;
|
friend class GPUDevice;
|
||||||
|
|
||||||
MaterialInstance(Material *,VAB *,MaterialParameters *);
|
MaterialInstance(Material *,VIL *,MaterialParameters *);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@ -24,7 +24,7 @@ public:
|
|||||||
|
|
||||||
Material *GetMaterial(){return material;}
|
Material *GetMaterial(){return material;}
|
||||||
|
|
||||||
const VAB *GetVAB()const{return vab;}
|
const VIL *GetVIL()const{return vil;}
|
||||||
MaterialParameters *GetMP(){return mp_value;}
|
MaterialParameters *GetMP(){return mp_value;}
|
||||||
MaterialParameters *GetMP(const DescriptorSetsType &type);
|
MaterialParameters *GetMP(const DescriptorSetsType &type);
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ protected:
|
|||||||
|
|
||||||
ObjectList<Pipeline> pipeline_list;
|
ObjectList<Pipeline> pipeline_list;
|
||||||
|
|
||||||
Pipeline *CreatePipeline(Material *,PipelineData *,const VAB *);
|
Pipeline *CreatePipeline(Material *,PipelineData *,const VIL *);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
@ -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 *,const VABConfigInfo *vab_cfg=nullptr);
|
MaterialInstance * CreateMaterialInstance(Material *,const VILConfig *vil_cfg=nullptr);
|
||||||
MaterialInstance * CreateMaterialInstance(const OSString &,const VABConfigInfo *vab_cfg=nullptr);
|
MaterialInstance * CreateMaterialInstance(const OSString &,const VILConfig *vil_cfg=nullptr);
|
||||||
|
|
||||||
Primitive * CreatePrimitive(const uint32_t vertex_count=0);
|
Primitive * CreatePrimitive(const uint32_t vertex_count=0);
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ class VertexShaderModule:public ShaderModule
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
SortedSets<VAB *> vab_sets;
|
SortedSets<VIL *> vil_sets;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@ -87,9 +87,9 @@ public:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
VAB * CreateVAB(const VABConfigInfo *format_map=nullptr);
|
VIL * CreateVIL(const VILConfig *format_map=nullptr);
|
||||||
bool Release(VAB *);
|
bool Release(VIL *);
|
||||||
const uint32_t GetInstanceCount()const{return vab_sets.GetCount();}
|
const uint32_t GetInstanceCount()const{return vil_sets.GetCount();}
|
||||||
};//class VertexShaderModule:public ShaderModule
|
};//class VertexShaderModule:public ShaderModule
|
||||||
VK_NAMESPACE_END
|
VK_NAMESPACE_END
|
||||||
#endif//HGL_GRAPH_VULKAN_SHADER_MODULE_INCLUDE
|
#endif//HGL_GRAPH_VULKAN_SHADER_MODULE_INCLUDE
|
||||||
|
@ -14,9 +14,9 @@ namespace hgl
|
|||||||
{
|
{
|
||||||
namespace inline_geometry
|
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))
|
if(!rc.Init(4))
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
@ -31,18 +31,18 @@ namespace hgl
|
|||||||
return rc.Finish();
|
return rc.Finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
Primitive *CreateGBufferCompositionRectangle(RenderResource *db,const VAB *vab)
|
Primitive *CreateGBufferCompositionRectangle(RenderResource *db,const VIL *vil)
|
||||||
{
|
{
|
||||||
RectangleCreateInfo rci;
|
RectangleCreateInfo rci;
|
||||||
|
|
||||||
rci.scope.Set(-1,-1,2,2);
|
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) //这是要画矩形
|
if(rci->radius==0||rci->round_per<=1) //这是要画矩形
|
||||||
{
|
{
|
||||||
@ -114,9 +114,9 @@ namespace hgl
|
|||||||
return rc.Finish();
|
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;
|
uint edge;
|
||||||
|
|
||||||
@ -162,9 +162,9 @@ namespace hgl
|
|||||||
return rc.Finish();
|
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))
|
if(!rc.Init(((pgci->step.x+1)+(pgci->step.y+1))*2))
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
@ -209,14 +209,14 @@ namespace hgl
|
|||||||
return rc.Finish();
|
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 };
|
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);
|
||||||
|
|
||||||
PrimitiveCreater rc(db,vab);
|
PrimitiveCreater rc(db,vil);
|
||||||
|
|
||||||
if(!rc.Init(4))
|
if(!rc.Init(4))
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
@ -250,7 +250,7 @@ namespace hgl
|
|||||||
return rc.Finish();
|
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
|
* 4 5
|
||||||
@ -303,7 +303,7 @@ namespace hgl
|
|||||||
16, 17, 18, 16, 18, 19,
|
16, 17, 18, 16, 18, 19,
|
||||||
20, 23, 22, 20, 22, 21};
|
20, 23, 22, 20, 22, 21};
|
||||||
|
|
||||||
PrimitiveCreater rc(db,vab);
|
PrimitiveCreater rc(db,vil);
|
||||||
|
|
||||||
if(!rc.Init(24))
|
if(!rc.Init(24))
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
@ -442,9 +442,9 @@ namespace hgl
|
|||||||
* @param numberSlices 切片数
|
* @param numberSlices 切片数
|
||||||
* @return 可渲染数据
|
* @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 numberParallels = (numberSlices+1) / 2;
|
||||||
uint numberVertices = (numberParallels + 1) * (numberSlices + 1);
|
uint numberVertices = (numberParallels + 1) * (numberSlices + 1);
|
||||||
@ -518,9 +518,9 @@ namespace hgl
|
|||||||
return rc.Finish();
|
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;
|
uint i, j;
|
||||||
|
|
||||||
@ -639,9 +639,9 @@ namespace hgl
|
|||||||
}
|
}
|
||||||
}//namespace
|
}//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]
|
// s, t = parametric values of the equations, in the range [0,1]
|
||||||
float s = 0;
|
float s = 0;
|
||||||
@ -795,14 +795,14 @@ namespace hgl
|
|||||||
}
|
}
|
||||||
}//namespace
|
}//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;
|
uint numberIndices = cci->numberSlices * 3 * 2 + cci->numberSlices * 6;
|
||||||
|
|
||||||
if(numberIndices<=0)
|
if(numberIndices<=0)
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
|
|
||||||
PrimitiveCreater rc(db,vab);
|
PrimitiveCreater rc(db,vil);
|
||||||
|
|
||||||
uint numberVertices = (cci->numberSlices + 2) * 2 + (cci->numberSlices + 1) * 2;
|
uint numberVertices = (cci->numberSlices + 2) * 2 + (cci->numberSlices + 1) * 2;
|
||||||
|
|
||||||
@ -1014,9 +1014,9 @@ namespace hgl
|
|||||||
}
|
}
|
||||||
}//namespace
|
}//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;
|
uint i, j;
|
||||||
|
|
||||||
@ -1141,11 +1141,11 @@ namespace hgl
|
|||||||
return rc.Finish();
|
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))
|
if(!rc.Init(6))
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
@ -1168,7 +1168,7 @@ namespace hgl
|
|||||||
return rc.Finish();
|
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.
|
// 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,
|
||||||
@ -1190,7 +1190,7 @@ namespace hgl
|
|||||||
0,4, 1,5, 2,6, 3,7
|
0,4, 1,5, 2,6, 3,7
|
||||||
};
|
};
|
||||||
|
|
||||||
PrimitiveCreater rc(db,vab);
|
PrimitiveCreater rc(db,vil);
|
||||||
|
|
||||||
if(!rc.Init(8))
|
if(!rc.Init(8))
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
|
@ -5,10 +5,10 @@ namespace hgl
|
|||||||
{
|
{
|
||||||
namespace graph
|
namespace graph
|
||||||
{
|
{
|
||||||
PrimitiveCreater::PrimitiveCreater(RenderResource *sdb,const VAB *v)
|
PrimitiveCreater::PrimitiveCreater(RenderResource *sdb,const VIL *v)
|
||||||
{
|
{
|
||||||
db =sdb;
|
db =sdb;
|
||||||
vab =v;
|
vil =v;
|
||||||
|
|
||||||
vertices_number =0;
|
vertices_number =0;
|
||||||
ibo =nullptr;
|
ibo =nullptr;
|
||||||
@ -25,10 +25,10 @@ namespace hgl
|
|||||||
|
|
||||||
VAD *PrimitiveCreater::CreateVAD(const AnsiString &name)
|
VAD *PrimitiveCreater::CreateVAD(const AnsiString &name)
|
||||||
{
|
{
|
||||||
if(!vab)return(nullptr);
|
if(!vil)return(nullptr);
|
||||||
if(name.IsEmpty())return(nullptr);
|
if(name.IsEmpty())return(nullptr);
|
||||||
|
|
||||||
const auto *va=vab->GetVertexAttribute(name);
|
const auto *va=vil->GetConfig(name);
|
||||||
|
|
||||||
if(!va)
|
if(!va)
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
@ -58,7 +58,7 @@ namespace hgl
|
|||||||
|
|
||||||
bool PrimitiveCreater::WriteVAD(const AnsiString &name,const void *data,const uint32_t bytes)
|
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(name.IsEmpty())return(false);
|
||||||
if(!data)return(false);
|
if(!data)return(false);
|
||||||
if(!bytes)return(false);
|
if(!bytes)return(false);
|
||||||
@ -68,7 +68,7 @@ namespace hgl
|
|||||||
if(ssb_map.Get(name,ssb))
|
if(ssb_map.Get(name,ssb))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
const auto *va=vab->GetVertexAttribute(name);
|
const auto *va=vil->GetConfig(name);
|
||||||
|
|
||||||
if(!va)
|
if(!va)
|
||||||
return(false);
|
return(false);
|
||||||
@ -107,7 +107,7 @@ namespace hgl
|
|||||||
|
|
||||||
Primitive *PrimitiveCreater::Finish()
|
Primitive *PrimitiveCreater::Finish()
|
||||||
{
|
{
|
||||||
const uint si_count=vab->GetVertexAttrCount();
|
const uint si_count=vil->GetAttrCount();
|
||||||
|
|
||||||
if(ssb_map.GetCount()!=si_count)
|
if(ssb_map.GetCount()!=si_count)
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
#include<hgl/graph/VKMaterialParameters.h>
|
#include<hgl/graph/VKMaterialParameters.h>
|
||||||
#include<hgl/graph/VKDescriptorSets.h>
|
#include<hgl/graph/VKDescriptorSets.h>
|
||||||
#include<hgl/graph/VKShaderModuleMap.h>
|
#include<hgl/graph/VKShaderModuleMap.h>
|
||||||
#include<hgl/graph/VKVertexAttributeBinding.h>
|
#include<hgl/graph/VKVertexInputLayout.h>
|
||||||
#include"VKPipelineLayoutData.h"
|
#include"VKPipelineLayoutData.h"
|
||||||
|
|
||||||
VK_NAMESPACE_BEGIN
|
VK_NAMESPACE_BEGIN
|
||||||
|
@ -5,26 +5,26 @@
|
|||||||
#include<hgl/graph/VKShaderModule.h>
|
#include<hgl/graph/VKShaderModule.h>
|
||||||
|
|
||||||
VK_NAMESPACE_BEGIN
|
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);
|
if(!mtl)return(nullptr);
|
||||||
|
|
||||||
VertexShaderModule *vsm=mtl->GetVertexShaderModule();
|
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);
|
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;
|
material=mtl;
|
||||||
|
|
||||||
vab=v;
|
vil=v;
|
||||||
|
|
||||||
mp_value=p;
|
mp_value=p;
|
||||||
}
|
}
|
||||||
|
@ -4,19 +4,19 @@
|
|||||||
#include<hgl/graph/VKVertexAttribBuffer.h>
|
#include<hgl/graph/VKVertexAttribBuffer.h>
|
||||||
|
|
||||||
VK_NAMESPACE_BEGIN
|
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 VkVertexInputBindingDescription *desc=vertex_sm->GetDesc(stage_input_binding);
|
||||||
// const VkVertexInputAttributeDescription *attr=vertex_sm->GetAttr(stage_input_binding);
|
// const VkVertexInputAttributeDescription *attr=vertex_sm->GetAttr(stage_input_binding);
|
||||||
//
|
//
|
||||||
// if(vab->GetFormat()!=attr->format)return(false);
|
// if(vil->GetFormat()!=attr->format)return(false);
|
||||||
// if(vab->GetStride()!=desc->stride)return(false);
|
// if(vil->GetStride()!=desc->stride)return(false);
|
||||||
//
|
//
|
||||||
// //format信息来自于shader,实际中可以不一样。但那样需要为每一个格式产生一个同样shader的material instance,不同的格式又需要不同的pipeline,我们不支持这种行为
|
// //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;
|
// buf_offset[stage_input_binding]=offset;
|
||||||
//
|
//
|
||||||
// return(true);
|
// return(true);
|
||||||
|
@ -23,12 +23,12 @@ RenderPass::~RenderPass()
|
|||||||
vkDestroyRenderPass(device,render_pass,nullptr);
|
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;
|
VkPipeline graphicsPipeline;
|
||||||
|
|
||||||
pd->InitShaderStage(mtl->GetStageList());
|
pd->InitShaderStage(mtl->GetStageList());
|
||||||
pd->InitVertexInputState(vab);
|
pd->InitVertexInputState(vil);
|
||||||
|
|
||||||
pd->SetColorAttachments(color_formats.GetCount());
|
pd->SetColorAttachments(color_formats.GetCount());
|
||||||
|
|
||||||
@ -58,7 +58,7 @@ Pipeline *RenderPass::CreatePipeline(MaterialInstance *mi,const PipelineData *da
|
|||||||
|
|
||||||
PipelineData *pd=new PipelineData(data);
|
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)
|
Pipeline *RenderPass::CreatePipeline(MaterialInstance *mi,const InlinePipeline &ip)
|
||||||
@ -80,7 +80,7 @@ Pipeline *RenderPass::CreatePipeline(MaterialInstance *mi,const InlinePipeline &
|
|||||||
|
|
||||||
pd->Set(prim,prim_restart);
|
pd->Set(prim,prim_restart);
|
||||||
|
|
||||||
Pipeline *p=CreatePipeline(mi->GetMaterial(),pd,mi->GetVAB());
|
Pipeline *p=CreatePipeline(mi->GetMaterial(),pd,mi->GetVIL());
|
||||||
|
|
||||||
if(p)
|
if(p)
|
||||||
pipeline_list.Add(p);
|
pipeline_list.Add(p);
|
||||||
@ -94,7 +94,7 @@ Pipeline *RenderPass::CreatePipeline(MaterialInstance *mi,const PipelineData *cp
|
|||||||
|
|
||||||
pd->Set(prim,prim_restart);
|
pd->Set(prim,prim_restart);
|
||||||
|
|
||||||
Pipeline *p=CreatePipeline(mi->GetMaterial(),pd,mi->GetVAB());
|
Pipeline *p=CreatePipeline(mi->GetMaterial(),pd,mi->GetVIL());
|
||||||
|
|
||||||
if(p)
|
if(p)
|
||||||
pipeline_list.Add(p);
|
pipeline_list.Add(p);
|
||||||
|
@ -50,11 +50,11 @@ IndexBuffer *RenderResource::CreateIBO(IndexType index_type,uint32_t count,const
|
|||||||
return(buf);
|
return(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
MaterialInstance *RenderResource::CreateMaterialInstance(Material *mtl,const VABConfigInfo *vab_cfg)
|
MaterialInstance *RenderResource::CreateMaterialInstance(Material *mtl,const VILConfig *vil_cfg)
|
||||||
{
|
{
|
||||||
if(!mtl)return(nullptr);
|
if(!mtl)return(nullptr);
|
||||||
|
|
||||||
MaterialInstance *mi=device->CreateMI(mtl,vab_cfg);
|
MaterialInstance *mi=device->CreateMI(mtl,vil_cfg);
|
||||||
|
|
||||||
if(mi)
|
if(mi)
|
||||||
Add(mi);
|
Add(mi);
|
||||||
@ -62,14 +62,14 @@ MaterialInstance *RenderResource::CreateMaterialInstance(Material *mtl,const VAB
|
|||||||
return mi;
|
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);
|
Material *mtl=this->CreateMaterial(mtl_filename);
|
||||||
|
|
||||||
if(!mtl)
|
if(!mtl)
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
|
|
||||||
return CreateMaterialInstance(mtl,vab_cfg);
|
return CreateMaterialInstance(mtl,vil_cfg);
|
||||||
}
|
}
|
||||||
|
|
||||||
Primitive *RenderResource::CreatePrimitive(const uint32_t vertex_count)
|
Primitive *RenderResource::CreatePrimitive(const uint32_t vertex_count)
|
||||||
|
@ -36,8 +36,8 @@ Renderable *CreateRenderable(Primitive *r,MaterialInstance *mi,Pipeline *p)
|
|||||||
{
|
{
|
||||||
if(!r||!mi||!p)return(nullptr);
|
if(!r||!mi||!p)return(nullptr);
|
||||||
|
|
||||||
const VAB *vab=mi->GetVAB();
|
const VIL *vil=mi->GetVIL();
|
||||||
const int input_count=vab->GetVertexAttrCount();
|
const int input_count=vil->GetAttrCount();
|
||||||
const UTF8String &mtl_name=mi->GetMaterial()->GetName();
|
const UTF8String &mtl_name=mi->GetMaterial()->GetName();
|
||||||
|
|
||||||
if(r->GetBufferCount()<input_count) //小于材质要求的数量?那自然是不行的
|
if(r->GetBufferCount()<input_count) //小于材质要求的数量?那自然是不行的
|
||||||
@ -51,9 +51,9 @@ Renderable *CreateRenderable(Primitive *r,MaterialInstance *mi,Pipeline *p)
|
|||||||
AutoDeleteArray<VkDeviceSize> buffer_size(input_count);
|
AutoDeleteArray<VkDeviceSize> buffer_size(input_count);
|
||||||
|
|
||||||
VBO *vbo;
|
VBO *vbo;
|
||||||
const AnsiString ** name_list=vab->GetVertexNameList();
|
const AnsiString ** name_list=vil->GetNameList();
|
||||||
const VkVertexInputBindingDescription * bind_list=vab->GetVertexBindingList();
|
const VkVertexInputBindingDescription * bind_list=vil->GetBindingList();
|
||||||
const VkVertexInputAttributeDescription * attr_list=vab->GetVertexAttributeList();
|
const VkVertexInputAttributeDescription * attr_list=vil->GetAttributeList();
|
||||||
|
|
||||||
for(int i=0;i<input_count;i++)
|
for(int i=0;i<input_count;i++)
|
||||||
{
|
{
|
||||||
@ -61,7 +61,7 @@ Renderable *CreateRenderable(Primitive *r,MaterialInstance *mi,Pipeline *p)
|
|||||||
|
|
||||||
if(!vbo)
|
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);
|
return(nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#include<hgl/graph/VKShaderModule.h>
|
#include<hgl/graph/VKShaderModule.h>
|
||||||
#include<hgl/graph/VKVertexAttributeBinding.h>
|
#include<hgl/graph/VKVertexInputLayout.h>
|
||||||
#include<hgl/graph/VKDevice.h>
|
#include<hgl/graph/VKDevice.h>
|
||||||
|
|
||||||
VK_NAMESPACE_BEGIN
|
VK_NAMESPACE_BEGIN
|
||||||
@ -60,7 +60,7 @@ VertexShaderModule::VertexShaderModule(VkDevice dev,VkPipelineShaderStageCreateI
|
|||||||
|
|
||||||
VertexShaderModule::~VertexShaderModule()
|
VertexShaderModule::~VertexShaderModule()
|
||||||
{
|
{
|
||||||
if(vab_sets.GetCount()>0)
|
if(vil_sets.GetCount()>0)
|
||||||
{
|
{
|
||||||
//还有在用的,这是个错误
|
//还有在用的,这是个错误
|
||||||
}
|
}
|
||||||
@ -69,7 +69,7 @@ VertexShaderModule::~VertexShaderModule()
|
|||||||
delete[] name_list;
|
delete[] name_list;
|
||||||
}
|
}
|
||||||
|
|
||||||
VAB *VertexShaderModule::CreateVAB(const VABConfigInfo *cfg)
|
VIL *VertexShaderModule::CreateVIL(const VILConfig *cfg)
|
||||||
{
|
{
|
||||||
VkVertexInputBindingDescription *binding_list=new VkVertexInputBindingDescription[attr_count];
|
VkVertexInputBindingDescription *binding_list=new VkVertexInputBindingDescription[attr_count];
|
||||||
VkVertexInputAttributeDescription *attribute_list=new VkVertexInputAttributeDescription[attr_count];
|
VkVertexInputAttributeDescription *attribute_list=new VkVertexInputAttributeDescription[attr_count];
|
||||||
@ -126,15 +126,15 @@ VAB *VertexShaderModule::CreateVAB(const VABConfigInfo *cfg)
|
|||||||
++si;
|
++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
|
VK_NAMESPACE_END
|
||||||
|
@ -84,15 +84,15 @@ namespace hgl
|
|||||||
|
|
||||||
//文本渲染Position坐标全部是使用整数,这里强制要求Position输入流使用RGBA16I格式
|
//文本渲染Position坐标全部是使用整数,这里强制要求Position输入流使用RGBA16I格式
|
||||||
{
|
{
|
||||||
VABConfigInfo vab_config;
|
VILConfig vil_config;
|
||||||
VAConfig va_cfg;
|
VAConfig va_cfg;
|
||||||
|
|
||||||
va_cfg.format=VF_V4I16;
|
va_cfg.format=VF_V4I16;
|
||||||
va_cfg.instance=false;
|
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);
|
if(!material_instance)return(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user