Codes layout
This commit is contained in:
parent
5ef1d2bb75
commit
7eedffe8ed
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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);}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user