Added VIL in Pipeline, add comp VIL in CreateRenderable

This commit is contained in:
hyzboy 2024-07-01 02:55:48 +08:00
parent 04b77cadf9
commit 107251c9ad
3 changed files with 10 additions and 3 deletions

View File

@ -13,6 +13,8 @@ class Pipeline
AnsiString name;
VkPipeline pipeline;
const VIL *vil;
PipelineData *data;
bool alpha_test;
@ -22,12 +24,13 @@ private:
friend class RenderPass;
Pipeline(const AnsiString &n,VkDevice dev,VkPipeline p,PipelineData *pd)
Pipeline(const AnsiString &n,VkDevice dev,VkPipeline p,const VIL *v,PipelineData *pd)
{
name=n;
device=dev;
pipeline=p;
vil=v;
data=pd;
alpha_test=false;
@ -42,6 +45,7 @@ public:
operator VkPipeline(){return pipeline;}
const VIL *GetVIL()const{return vil;}
const PipelineData *GetData()const{return data;}
const bool IsAlphaTest()const{return data->alpha_test>0;}

View File

@ -53,10 +53,9 @@ Pipeline *RenderPass::CreatePipeline(const AnsiString &name,PipelineData *pd,con
return(nullptr);
}
return(new Pipeline(name,device,graphicsPipeline,pd));
return(new Pipeline(name,device,graphicsPipeline,vil,pd));
}
Pipeline *RenderPass::CreatePipeline(Material *mtl,const VIL *vil,const PipelineData *cpd,const Prim &prim,const bool prim_restart)
{
PipelineData *pd=new PipelineData(cpd);

View File

@ -60,6 +60,10 @@ Renderable *CreateRenderable(Primitive *prim,MaterialInstance *mi,Pipeline *p)
if(!prim||!mi||!p)return(nullptr);
const VIL *vil=mi->GetVIL();
if(vil->Comp(p->GetVIL()))
return(nullptr);
const uint32_t input_count=vil->GetVertexAttribCount(VertexInputGroup::Basic); //不统计Bone/LocalToWorld组的
const UTF8String &mtl_name=mi->GetMaterial()->GetName();