2020-06-06 19:45:38 +08:00
|
|
|
#pragma once
|
|
|
|
#include<hgl/type/BaseString.h>
|
2020-06-08 19:12:29 +08:00
|
|
|
#include<hgl/type/List.h>
|
|
|
|
#include<vulkan/vulkan.h>
|
2020-06-06 19:45:38 +08:00
|
|
|
|
|
|
|
namespace hgl
|
|
|
|
{
|
|
|
|
namespace graph
|
|
|
|
{
|
2020-06-08 19:12:29 +08:00
|
|
|
struct ShaderStage
|
|
|
|
{
|
|
|
|
UTF8String name;
|
|
|
|
uint location;
|
|
|
|
VkFormat format;
|
|
|
|
};//struct ShaderStage
|
|
|
|
|
|
|
|
using ShaderStageList=ObjectList<ShaderStage>;
|
|
|
|
|
|
|
|
struct ShaderDescriptor
|
|
|
|
{
|
|
|
|
UTF8String name;
|
|
|
|
uint binding;
|
|
|
|
};//struct ShaderDescriptor
|
|
|
|
|
|
|
|
using ShaderDescriptorList=ObjectList<ShaderDescriptor>;
|
|
|
|
|
2020-06-06 19:45:38 +08:00
|
|
|
class ShaderResource
|
|
|
|
{
|
2020-06-08 19:12:29 +08:00
|
|
|
ShaderStageList is_list;
|
|
|
|
ShaderStageList os_list;
|
|
|
|
|
|
|
|
ShaderDescriptorList ubo_list;
|
|
|
|
ShaderDescriptorList sampler_list;
|
|
|
|
|
2020-06-06 19:45:38 +08:00
|
|
|
public:
|
2020-06-08 19:12:29 +08:00
|
|
|
|
|
|
|
ShaderStageList &GetInputStages(){return is_list;}
|
|
|
|
ShaderStageList &GetOutputStages(){return os_list;}
|
|
|
|
|
|
|
|
ShaderDescriptorList &GetUBO(){return ubo_list;}
|
|
|
|
ShaderDescriptorList &GetSampler(){return sampler_list;}
|
2020-06-06 19:45:38 +08:00
|
|
|
};//class ShaderResource
|
|
|
|
|
|
|
|
ShaderResource *LoadShaderResoruce(const OSString &filename);
|
|
|
|
}//namespace graph
|
|
|
|
}//namespace hgl
|