renamed to VertexInputLayout instead of VertexAttributeBinding

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

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