renamed to VertexInputLayout instead of VertexAttributeBinding
This commit is contained in:
@@ -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
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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);
|
||||
|
@@ -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);
|
||||
|
@@ -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)
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user