ULRE/inc/hgl/graph/shader/ShaderResource.h

47 lines
1.2 KiB
C
Raw Normal View History

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