rename and layout codes.

This commit is contained in:
2024-05-27 01:42:10 +08:00
parent 8bb97ef2de
commit 742fe201ad
12 changed files with 115 additions and 118 deletions

View File

@@ -143,20 +143,20 @@ bool RenderCmdBuffer::BindVAB(Renderable *ri)
if(!ri)
return(false);
const VertexInputData *vid=ri->GetVertexInputData();
const PrimitiveRenderBuffer *prb=ri->GetRenderBuffer();
if(vid->vab_count<=0)
if(prb->vab_count<=0)
return(false);
const DrawData *dd=ri->GetDrawData();
const PrimitiveRenderData *prd=ri->GetRenderData();
if(dd->vertex_count<=0)
if(prd->vertex_count<=0)
return(false);
vkCmdBindVertexBuffers(cmd_buf,0,vid->vab_count,vid->vab_list,dd->vab_offset);
vkCmdBindVertexBuffers(cmd_buf,0,prb->vab_count,prb->vab_list,prd->vab_offset);
if(vid->ibo&&dd->index_count)
BindIBO(vid->ibo,dd->index_start);
if(prb->ibo&&prd->index_count)
BindIBO(prb->ibo,prd->index_start);
return(true);
}
@@ -185,15 +185,15 @@ void RenderCmdBuffer::DrawIndexedIndirect( VkBuffer buffer,
vkCmdDrawIndexedIndirect(cmd_buf,buffer,offset+i*stride,1,stride);
}
void RenderCmdBuffer::Draw(const VertexInputData *vid,const DrawData *dd)
void RenderCmdBuffer::Draw(const PrimitiveRenderBuffer *prb,const PrimitiveRenderData *prd)
{
if(!vid||!dd)
if(!prb||!prd)
return;
if (vid->ibo)
DrawIndexed(dd->index_count);
if (prb->ibo)
DrawIndexed(prd->index_count);
else
Draw(dd->vertex_count);
Draw(prd->vertex_count);
}
//void RenderCmdBuffer::DrawIndexed(const IBAccess *iba,const uint32_t instance_count)

View File

@@ -13,7 +13,7 @@ Material::Material(const AnsiString &n)
{
name=n;
vertex_input_data=nullptr;
primitive_render_buffer=nullptr;
shader_maps=new ShaderModuleMap;
desc_manager=nullptr;
pipeline_layout_data=nullptr;
@@ -28,7 +28,7 @@ Material::~Material()
{
SAFE_CLEAR(mi_data_manager);
ReleaseVertexInput(vertex_input_data);
ReleaseVertexInput(primitive_render_buffer);
delete shader_maps; //不用SAFE_CLEAR是因为这个一定会有
SAFE_CLEAR(desc_manager);
SAFE_CLEAR(pipeline_layout_data);
@@ -49,22 +49,22 @@ const bool Material::hasSet(const DescriptorSetType &dst)const
const VIL *Material::GetDefaultVIL()const
{
return vertex_input_data->GetDefaultVIL();
return primitive_render_buffer->GetDefaultVIL();
}
VIL *Material::CreateVIL(const VILConfig *format_map)
{
return vertex_input_data->CreateVIL(format_map);
return primitive_render_buffer->CreateVIL(format_map);
}
bool Material::Release(VIL *vil)
{
return vertex_input_data->Release(vil);
return primitive_render_buffer->Release(vil);
}
const uint Material::GetVILCount()
{
return vertex_input_data->GetInstanceCount();
return primitive_render_buffer->GetInstanceCount();
}
bool Material::BindUBO(const DescriptorSetType &type,const AnsiString &name,DeviceBuffer *ubo,bool dynamic)

View File

@@ -19,12 +19,12 @@ class PrimitiveData
{
protected:
const VIL * vil;
const VIL * vil;
uint32_t vertex_count;
uint32_t vertex_count;
VABAccess *vab_access;
IBAccess ib_access;
VABAccess * vab_access;
IBAccess ib_access;
public:

View File

@@ -124,7 +124,7 @@ Material *RenderResource::CreateMaterial(const mtl::MaterialCreateInfo *mci)
ShaderCreateInfoVertex *vert=mci->GetVS();
if(vert)
mtl->vertex_input_data=GetVertexInput(vert->sdm->GetShaderStageIO().input);
mtl->primitive_render_buffer=GetVertexInput(vert->sdm->GetShaderStageIO().input);
}
{

View File

@@ -7,7 +7,7 @@
#include<hgl/log/LogInfo.h>
VK_NAMESPACE_BEGIN
VertexInputData::VertexInputData(const uint32_t c,const uint32_t vc,const IBAccess *iba)
PrimitiveRenderBuffer::PrimitiveRenderBuffer(const uint32_t c,const uint32_t vc,const IBAccess *iba)
{
vab_count=c;
@@ -19,38 +19,38 @@ VertexInputData::VertexInputData(const uint32_t c,const uint32_t vc,const IBAcce
ibo=nullptr;
}
VertexInputData::~VertexInputData()
PrimitiveRenderBuffer::~PrimitiveRenderBuffer()
{
delete[] vab_list;
}
const bool VertexInputData::Comp(const VertexInputData *vid)const
const bool PrimitiveRenderBuffer::Comp(const PrimitiveRenderBuffer *prb)const
{
if(!vid)return(false);
if(!prb)return(false);
if(vab_count!=vid->vab_count)return(false);
if(vab_count!=prb->vab_count)return(false);
for(uint32_t i=0;i<vab_count;i++)
{
if(vab_list[i]!=vid->vab_list[i])return(false);
if(vab_list[i]!=prb->vab_list[i])return(false);
}
if(ibo!=vid->ibo)return(false);
if(ibo!=prb->ibo)return(false);
return(true);
}
Renderable::Renderable(Primitive *r,MaterialInstance *mi,Pipeline *p,VertexInputData *vid,DrawData *dd)
Renderable::Renderable(Primitive *r,MaterialInstance *mi,Pipeline *p,PrimitiveRenderBuffer *prb,PrimitiveRenderData *prd)
{
primitive=r;
pipeline=p;
mat_inst=mi;
vertex_input_data=vid;
draw_data=dd;
primitive_render_buffer=prb;
primitive_render_data=prd;
}
DrawData::DrawData(const uint32_t bc,const VkDeviceSize vc,const IBAccess *iba)
PrimitiveRenderData::PrimitiveRenderData(const uint32_t bc,const uint32_t vc,const IBAccess *iba)
{
vab_count=bc;
@@ -65,26 +65,26 @@ DrawData::DrawData(const uint32_t bc,const VkDeviceSize vc,const IBAccess *iba)
}
}
DrawData::~DrawData()
PrimitiveRenderData::~PrimitiveRenderData()
{
delete[] vab_offset;
}
const bool DrawData::Comp(const DrawData *dd)const
const bool PrimitiveRenderData::Comp(const PrimitiveRenderData *prd)const
{
if(!dd)return(false);
if(!prd)return(false);
if(vab_count!=dd->vab_count)return(false);
if(vab_count!=prd->vab_count)return(false);
for(uint i=0;i<vab_count;i++)
{
if(vab_offset[i]!=dd->vab_offset[i])return(false);
if(vab_offset[i]!=prd->vab_offset[i])return(false);
}
if(vertex_count!=dd->vertex_count)return(false);
if(vertex_count!=prd->vertex_count)return(false);
if(index_start!=dd->index_start)return(false);
if(index_count!=dd->index_count)return(false);
if(index_start!=prd->index_start)return(false);
if(index_count!=prd->index_count)return(false);
return(true);
}
@@ -106,10 +106,11 @@ Renderable *CreateRenderable(Primitive *prim,MaterialInstance *mi,Pipeline *p)
const IBAccess *iba=prim->GetIBAccess();
VertexInputData *vid=new VertexInputData(input_count,prim->GetVertexCount(),iba);
DrawData *dd=new DrawData(input_count,prim->GetVertexCount(),iba);
PrimitiveRenderBuffer * prb=new PrimitiveRenderBuffer( input_count,prim->GetVertexCount(),iba);
PrimitiveRenderData * prd=new PrimitiveRenderData( input_count,prim->GetVertexCount(),iba);
const VertexInputFormat *vif=vil->GetVIFList(VertexInputGroup::Basic);
VABAccess *vab_access;
for(uint i=0;i<input_count;i++)
@@ -145,11 +146,11 @@ Renderable *CreateRenderable(Primitive *prim,MaterialInstance *mi,Pipeline *p)
return(nullptr);
}
dd->vab_offset[i]=vab_access->start;
vid->vab_list[i]=vab_access->vab->GetBuffer();
prd->vab_offset[i]=vab_access->start;
prb->vab_list[i]=vab_access->vab->GetBuffer();
++vif;
}
return(new Renderable(prim,mi,p,vid,dd));
return(new Renderable(prim,mi,p,prb,prd));
}
VK_NAMESPACE_END