2019-04-18 16:38:58 +08:00
|
|
|
|
#ifndef HGL_GRAPH_VULKAN_PIPELINE_INCLUDE
|
|
|
|
|
#define HGL_GRAPH_VULKAN_PIPELINE_INCLUDE
|
|
|
|
|
|
2020-10-21 11:43:18 +08:00
|
|
|
|
#include<hgl/graph/VK.h>
|
|
|
|
|
#include<hgl/graph/VKPipelineData.h>
|
|
|
|
|
#include<hgl/graph/VKInlinePipeline.h>
|
2019-05-16 20:50:09 +08:00
|
|
|
|
#include<hgl/io/DataOutputStream.h>
|
2019-04-18 16:38:58 +08:00
|
|
|
|
VK_NAMESPACE_BEGIN
|
2024-10-25 23:17:14 +08:00
|
|
|
|
/**
|
|
|
|
|
* 管线<br>
|
|
|
|
|
* 管线管理了一批次渲染的所有基础条件,包括顶点输入、着色器、混合、深度测试等等
|
|
|
|
|
*/
|
2019-04-18 16:38:58 +08:00
|
|
|
|
class Pipeline
|
|
|
|
|
{
|
2019-04-18 16:53:14 +08:00
|
|
|
|
VkDevice device;
|
2023-10-12 05:55:39 +08:00
|
|
|
|
|
|
|
|
|
AnsiString name;
|
|
|
|
|
|
2019-04-18 16:38:58 +08:00
|
|
|
|
VkPipeline pipeline;
|
2024-07-01 02:55:48 +08:00
|
|
|
|
|
|
|
|
|
const VIL *vil;
|
2020-09-19 14:58:54 +08:00
|
|
|
|
PipelineData *data;
|
2019-04-18 16:38:58 +08:00
|
|
|
|
|
2019-05-23 13:29:23 +08:00
|
|
|
|
bool alpha_test;
|
|
|
|
|
bool alpha_blend;
|
2021-09-22 15:32:20 +08:00
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
2021-09-22 17:15:17 +08:00
|
|
|
|
friend class RenderPass;
|
2021-09-22 15:32:20 +08:00
|
|
|
|
|
2024-07-01 02:55:48 +08:00
|
|
|
|
Pipeline(const AnsiString &n,VkDevice dev,VkPipeline p,const VIL *v,PipelineData *pd)
|
2021-09-22 15:32:20 +08:00
|
|
|
|
{
|
2023-10-12 05:55:39 +08:00
|
|
|
|
name=n;
|
|
|
|
|
|
2021-09-22 15:32:20 +08:00
|
|
|
|
device=dev;
|
|
|
|
|
pipeline=p;
|
2024-07-01 02:55:48 +08:00
|
|
|
|
vil=v;
|
2021-09-22 15:32:20 +08:00
|
|
|
|
data=pd;
|
|
|
|
|
|
|
|
|
|
alpha_test=false;
|
|
|
|
|
alpha_blend=false;
|
|
|
|
|
}
|
2019-05-23 13:29:23 +08:00
|
|
|
|
|
2019-04-18 16:38:58 +08:00
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
virtual ~Pipeline();
|
2019-04-18 21:02:42 +08:00
|
|
|
|
|
2023-10-12 05:55:39 +08:00
|
|
|
|
const AnsiString &GetName()const{return name;}
|
|
|
|
|
|
2019-04-18 21:02:42 +08:00
|
|
|
|
operator VkPipeline(){return pipeline;}
|
2019-05-23 13:29:23 +08:00
|
|
|
|
|
2024-07-01 02:55:48 +08:00
|
|
|
|
const VIL *GetVIL()const{return vil;}
|
2023-03-29 21:19:06 +08:00
|
|
|
|
const PipelineData *GetData()const{return data;}
|
|
|
|
|
|
2020-09-19 14:58:54 +08:00
|
|
|
|
const bool IsAlphaTest()const{return data->alpha_test>0;}
|
|
|
|
|
const bool IsAlphaBlend()const{return data->alpha_blend;}
|
2019-04-18 16:38:58 +08:00
|
|
|
|
};//class GraphicsPipeline
|
|
|
|
|
VK_NAMESPACE_END
|
|
|
|
|
#endif//HGL_GRAPH_VULKAN_PIPELINE_INCLUDE
|
2020-09-19 16:43:23 +08:00
|
|
|
|
|