Codes layout

This commit is contained in:
hyzboy 2020-07-20 17:31:33 +08:00
parent 5ef1d2bb75
commit 7eedffe8ed
3 changed files with 23 additions and 21 deletions

View File

@ -10,16 +10,16 @@ VK_NAMESPACE_BEGIN
AnsiString name; AnsiString name;
uint location; uint location;
uint base_type; uint base_type; ///<基本类型(如vec4中的vec)
uint component; uint component; ///<成份数量(如vec4中的4)
VkFormat format; VkFormat format; ///<对应的Vulkan格式(如vec4对应的FMT_RGBA32F)
uint binding; uint binding;
};//struct ShaderStage };//struct ShaderStage
using ShaderStageList=ObjectList<ShaderStage>; using ShaderStageList =ObjectList<ShaderStage>;
using ShaderBindingList=List<uint32_t>; using ShaderBindingList =List<uint32_t>;
struct ShaderDescriptorList struct ShaderDescriptorList
{ {
@ -58,22 +58,22 @@ VK_NAMESPACE_BEGIN
ShaderResource(const void *,const VkShaderStageFlagBits &,const void *,const uint32); ShaderResource(const void *,const VkShaderStageFlagBits &,const void *,const uint32);
virtual ~ShaderResource(); virtual ~ShaderResource();
const VkShaderStageFlagBits GetStage()const{return stage_flag;} const VkShaderStageFlagBits GetStage ()const {return stage_flag;}
const uint32_t *GetCode ()const{return (uint32_t *)spv_data;} const uint32_t * GetCode ()const {return (uint32_t *)spv_data;}
const uint32_t GetCodeSize ()const{return spv_size;} const uint32_t GetCodeSize ()const {return spv_size;}
ShaderStageList &GetStageInputs(){return stage_inputs;} ShaderStageList & GetStageInputs () {return stage_inputs;}
ShaderStageList &GetStageOutputs(){return stage_outputs;} ShaderStageList & GetStageOutputs () {return stage_outputs;}
const uint GetStageInputCount()const{return stage_inputs.GetCount();} const uint GetStageInputCount ()const {return stage_inputs.GetCount();}
const uint GetStageOutputCount()const{return stage_outputs.GetCount();} const uint GetStageOutputCount ()const {return stage_outputs.GetCount();}
const ShaderStage * GetStageInput (const AnsiString &)const; const ShaderStage * GetStageInput (const AnsiString &)const;
const int GetStageInputBinding(const AnsiString &)const; const int GetStageInputBinding(const AnsiString &)const;
const ShaderDescriptorList *GetDescriptorList()const{return descriptor_list;} const ShaderDescriptorList * GetDescriptorList ()const {return descriptor_list;}
ShaderDescriptorList *GetDescriptorList(VkDescriptorType desc_type) ShaderDescriptorList * GetDescriptorList (VkDescriptorType desc_type)
{ {
if(desc_type<VK_DESCRIPTOR_TYPE_BEGIN_RANGE if(desc_type<VK_DESCRIPTOR_TYPE_BEGIN_RANGE
||desc_type>VK_DESCRIPTOR_TYPE_END_RANGE)return nullptr; ||desc_type>VK_DESCRIPTOR_TYPE_END_RANGE)return nullptr;
@ -81,8 +81,8 @@ VK_NAMESPACE_BEGIN
return descriptor_list+desc_type; return descriptor_list+desc_type;
} }
ShaderDescriptorList &GetUBO(){return descriptor_list[VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER];} ShaderDescriptorList &GetUBO (){return descriptor_list[VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER];}
ShaderDescriptorList &GetSSBO(){return descriptor_list[VK_DESCRIPTOR_TYPE_STORAGE_BUFFER];} ShaderDescriptorList &GetSSBO (){return descriptor_list[VK_DESCRIPTOR_TYPE_STORAGE_BUFFER];}
ShaderDescriptorList &GetSampler(){return descriptor_list[VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER];} ShaderDescriptorList &GetSampler(){return descriptor_list[VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER];}
const int GetBinding (VkDescriptorType desc_type,const AnsiString &name)const; const int GetBinding (VkDescriptorType desc_type,const AnsiString &name)const;

View File

@ -44,6 +44,8 @@ class RenderPass;
class Fence; class Fence;
class Semaphore; class Semaphore;
struct ShaderStage;
class ShaderModule; class ShaderModule;
class ShaderModuleManage; class ShaderModuleManage;
class VertexShaderModule; class VertexShaderModule;

View File

@ -87,9 +87,9 @@ public: //Buffer相关
Buffer * CreateBuffer(VkBufferUsageFlags buf_usage,VkDeviceSize size,const void *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE); Buffer * CreateBuffer(VkBufferUsageFlags buf_usage,VkDeviceSize size,const void *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE);
Buffer * CreateBuffer(VkBufferUsageFlags buf_usage,VkDeviceSize size,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateBuffer(buf_usage,size,nullptr,sharing_mode);} Buffer * CreateBuffer(VkBufferUsageFlags buf_usage,VkDeviceSize size,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateBuffer(buf_usage,size,nullptr,sharing_mode);}
VertexAttribBuffer * CreateVAB(VkFormat format,uint32_t count,const void *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE); VertexAttribBuffer *CreateVAB(VkFormat format,uint32_t count,const void *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE);
VertexAttribBuffer * CreateVAB(VkFormat format,uint32_t count,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateVAB(format,count,nullptr,sharing_mode);} VertexAttribBuffer *CreateVAB(VkFormat format,uint32_t count,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateVAB(format,count,nullptr,sharing_mode);}
VertexAttribBuffer * CreateVAB(const VertexAttribData *vbc,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateVAB(vbc->GetDataType(),vbc->GetCount(),vbc->GetData(),sharing_mode);} VertexAttribBuffer *CreateVAB(const VertexAttribData *vad,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateVAB(vad->GetVulkanFormat(),vad->GetCount(),vad->GetData(),sharing_mode);}
IndexBuffer * CreateIBO(VkIndexType index_type,uint32_t count,const void *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE); IndexBuffer * CreateIBO(VkIndexType index_type,uint32_t count,const void *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE);
IndexBuffer * CreateIBO16(uint32_t count,const uint16 *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateIBO(VK_INDEX_TYPE_UINT16,count,(void *)data,sharing_mode);} IndexBuffer * CreateIBO16(uint32_t count,const uint16 *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateIBO(VK_INDEX_TYPE_UINT16,count,(void *)data,sharing_mode);}