finished write codes of CreateMaterial from MaterialCreateInfo

This commit is contained in:
2023-03-20 22:09:37 +08:00
parent 696d3259aa
commit 9302cbc3ef
13 changed files with 120 additions and 99 deletions

View File

@@ -2,15 +2,13 @@
#define HGL_GRAPH_VULKAN_MATERIAL_DESCRIPTOR_MANAGER_INCLUDE
#include<hgl/graph/VK.h>
#include<hgl/graph/VKShaderDescriptor.h>
#include<hgl/graph/VKShaderDescriptorSet.h>
VK_NAMESPACE_BEGIN
class MaterialDescriptorManager
{
UTF8String mtl_name;
bool set_has_desc[DESCRIPTOR_SET_TYPE_COUNT];
Map<AnsiString,int> binding_map[VK_DESCRIPTOR_TYPE_RANGE_SIZE];
private:
@@ -22,6 +20,7 @@ private:
public:
MaterialDescriptorManager(const UTF8String &,ShaderDescriptor *,const uint);
MaterialDescriptorManager(const UTF8String &,const ShaderDescriptorSetArray &);
~MaterialDescriptorManager();
const UTF8String &GetMaterialName()const{return mtl_name;}
@@ -35,9 +34,7 @@ public:
const DescriptorSetLayoutCreateInfo *GetDSLCI(const DescriptorSetType &type)const{return dsl_ci+size_t(type);}
//const ShaderDescriptorList &GetDescriptorList(const DescriptorSetType &type)const{return sd_list_by_set_type[size_t(type)];}
const bool hasSet(const DescriptorSetType &type)const{return set_has_desc[size_t(type)];}
const bool hasSet(const DescriptorSetType &type)const{return dsl_ci[size_t(type)].bindingCount>0;}
//!sd_list_by_set_type[size_t(type)].IsEmpty();}
};//class MaterialDescriptorManager
VK_NAMESPACE_END

View File

@@ -57,5 +57,7 @@ public:
bool AddSampler(const VkShaderStageFlagBits flag_bits,const DescriptorSetType set_type,const SamplerType &st,const AnsiString &name);
bool CreateShader();
const MaterialDescriptorInfo &GetMDI()const{return mdm;}
};//class MaterialCreateInfo
SHADERGEN_NAMESPACE_END

View File

@@ -1,7 +1,6 @@
#pragma once
#include<hgl/graph/VKShaderDescriptor.h>
#include<hgl/graph/VKDescriptorSetType.h>
#include<hgl/graph/VKShaderDescriptorSet.h>
#include<hgl/shadergen/ShaderGenNamespace.h>
#include<hgl/type/Map.h>
@@ -15,22 +14,6 @@ SHADERGEN_NAMESPACE_BEGIN
*/
class MaterialDescriptorInfo
{
struct ShaderDescriptorSet
{
DescriptorSetType set_type;
int set;
int count;
ObjectMap<AnsiString,ShaderDescriptor> descriptor_map;
public:
ShaderDescriptor *AddDescriptor(VkShaderStageFlagBits ssb,ShaderDescriptor *new_sd); ///<添加一个描述符如果它本身存在则返回false
};
using ShaderDescriptorSetArray=ShaderDescriptorSet[DESCRIPTOR_SET_TYPE_COUNT];
ShaderDescriptorSetArray desc_set_array;
Map<AnsiString,AnsiString> struct_map;
@@ -68,6 +51,11 @@ public:
void Resort(); //排序产生set号与binding号
const ShaderDescriptorSetArray &Get()const
{
return desc_set_array;
}
const bool hasSet(const DescriptorSetType &type)const
{
return desc_set_array[size_t(type)].count>0;

View File

@@ -16,7 +16,5 @@ public:
int AddInput(const graph::VAT &type,const AnsiString &name);
int AddInput(const AnsiString &type,const AnsiString &name);
const hgl::graph::ShaderAttributeArray &GetInput()const;
};
SHADERGEN_NAMESPACE_END