ULRE/src/SceneGraph/Vulkan/VKRenderTargetPipeline.cpp

61 lines
1.7 KiB
C++

#include<hgl/graph/VKRenderTarget.h>
#include<hgl/graph/VKMaterialParameters.h>
#include<hgl/graph/VKDevice.h>
#include<hgl/graph/VKInlinePipeline.h>
#include<hgl/graph/VKPipelineData.h>
VK_NAMESPACE_BEGIN
Pipeline *RenderTarget::CreatePipeline(Material *mtl,const InlinePipeline &ip,const Prim &prim,const bool prim_restart)
{
if(!mtl)return(nullptr);
PipelineData *pd=GetPipelineData(ip);
pd->Set(prim,prim_restart);
Pipeline *p=device->CreatePipeline(pd,mtl,this);
if(p)
pipeline_list.Add(p);
return p;
}
Pipeline *RenderTarget::CreatePipeline(MaterialParameters *mi,const InlinePipeline &ip,const Prim &prim,const bool prim_restart)
{
if(!mi)return(nullptr);
return CreatePipeline(mi->GetMaterial(),ip,prim,prim_restart);
}
Pipeline *RenderTarget::CreatePipeline(Material *mtl,PipelineData *pd,const Prim &prim,const bool prim_restart)
{
pd->Set(prim,prim_restart);
Pipeline *p=device->CreatePipeline(pd,mtl,this);
if(p)
pipeline_list.Add(p);
return(p);
}
Pipeline *RenderTarget::CreatePipeline(MaterialParameters *mi,PipelineData *pd,const Prim &prim,const bool prim_restart)
{
return CreatePipeline(mi->GetMaterial(),pd,prim,prim_restart);
}
Pipeline *RenderTarget::CreatePipeline(Material *mtl,const OSString &pipeline_filename,const Prim &prim,const bool prim_restart)
{
PipelineData *pd=GetPipelineData(pipeline_filename);
if(!pd)return(nullptr);
return CreatePipeline(mtl,pd,prim,prim_restart);
}
Pipeline *RenderTarget::CreatePipeline(MaterialParameters *mi,const OSString &filename,const Prim &prim,const bool prim_restart)
{
return CreatePipeline(mi->GetMaterial(),filename,prim,prim_restart);
}
VK_NAMESPACE_END