supported MaterialInstance in ShaderGen module.
This commit is contained in:
@@ -52,23 +52,7 @@ public:
|
||||
MaterialCreateInfo(const MaterialConfig *);
|
||||
~MaterialCreateInfo()=default;
|
||||
|
||||
/**
|
||||
* 设置材质实例代码与数据长度
|
||||
* @param mi_glsl_codes 材质实例GLSL代码
|
||||
* @param mi_struct_bytes 单个材质实例数据长度
|
||||
* @return 是否设置成功
|
||||
*/
|
||||
bool SetMaterialInstance(const AnsiString &mi_glsl_codes,const uint32_t mi_struct_bytes)
|
||||
{
|
||||
if(mi_struct_bytes>0&&mi_glsl_codes.Length()<4)return(false);
|
||||
|
||||
mi_length=mi_struct_bytes;
|
||||
|
||||
if(mi_struct_bytes>0)
|
||||
mi_codes=mi_glsl_codes;
|
||||
|
||||
return(true);
|
||||
}
|
||||
bool SetMaterialInstance(const AnsiString &mi_glsl_codes,const uint32_t mi_struct_bytes,const uint32_t shader_stage);
|
||||
|
||||
bool AddStruct(const AnsiString &ubo_typename,const AnsiString &codes);
|
||||
bool AddStruct(const ShaderBufferSource &ss)
|
||||
|
@@ -28,7 +28,7 @@ public:
|
||||
return(true);
|
||||
}
|
||||
|
||||
bool GetStruct(const AnsiString &name,AnsiString &code) const
|
||||
bool GetStruct(const AnsiString &name,AnsiString &code)
|
||||
{
|
||||
return(struct_map.Get(name,code));
|
||||
}
|
||||
@@ -38,8 +38,8 @@ public:
|
||||
return(struct_map.KeyExist(name));
|
||||
}
|
||||
|
||||
const UBODescriptor *AddUBO(VkShaderStageFlagBits ssb,DescriptorSetType set_type,UBODescriptor *sd);
|
||||
const SamplerDescriptor *AddSampler(VkShaderStageFlagBits ssb,DescriptorSetType set_type,SamplerDescriptor *sd);
|
||||
const UBODescriptor *AddUBO(uint32_t shader_stage_flag_bits,DescriptorSetType set_type,UBODescriptor *sd);
|
||||
const SamplerDescriptor *AddSampler(uint32_t shader_stage_flag_bits,DescriptorSetType set_type,SamplerDescriptor *sd);
|
||||
|
||||
UBODescriptor *GetUBO(const AnsiString &name);
|
||||
SamplerDescriptor *GetSampler(const AnsiString &name);
|
||||
|
@@ -13,6 +13,8 @@ struct SPVData;
|
||||
class MaterialDescriptorInfo;
|
||||
class ShaderDescriptorInfo;
|
||||
|
||||
struct UBODescriptor;
|
||||
|
||||
class ShaderCreateInfo
|
||||
{
|
||||
protected:
|
||||
@@ -63,6 +65,8 @@ public:
|
||||
|
||||
void AddFunction(const AnsiString &str){function_list.Add(str);}
|
||||
|
||||
void SetMaterialInstance(UBODescriptor *);
|
||||
|
||||
const AnsiString &GetOutputStruct()const{return output_struct;}
|
||||
const AnsiString &GetShaderSource()const{return final_shader;}
|
||||
|
||||
|
@@ -19,28 +19,9 @@ namespace hgl
|
||||
int AddInput(const graph::VAT &type,const AnsiString &name,const VkVertexInputRate input_rate=VK_VERTEX_INPUT_RATE_VERTEX,const VertexInputGroup &group=VertexInputGroup::Basic);
|
||||
int AddInput(const AnsiString &type,const AnsiString &name,const VkVertexInputRate input_rate=VK_VERTEX_INPUT_RATE_VERTEX,const VertexInputGroup &group=VertexInputGroup::Basic);
|
||||
|
||||
void AddMaterialID()
|
||||
{
|
||||
AddInput(VAT_UINT,VAN::MaterialInstanceID,VK_VERTEX_INPUT_RATE_INSTANCE,VertexInputGroup::MaterialInstanceID);
|
||||
}
|
||||
|
||||
void AddJoint()
|
||||
{
|
||||
AddInput(VAT_UVEC4, VAN::JointID, VK_VERTEX_INPUT_RATE_VERTEX,VertexInputGroup::JointID);
|
||||
AddInput(VAT_VEC4, VAN::JointWeight,VK_VERTEX_INPUT_RATE_VERTEX,VertexInputGroup::JointWeight);
|
||||
}
|
||||
|
||||
void AddLocalToWorld()
|
||||
{
|
||||
char name[]= "LocalToWorld_?";
|
||||
|
||||
for(uint i=0;i<4;i++)
|
||||
{
|
||||
name[sizeof(name)-2]='0'+i;
|
||||
|
||||
AddInput(VAT_VEC4,name,VK_VERTEX_INPUT_RATE_INSTANCE,VertexInputGroup::LocalToWorld);
|
||||
}
|
||||
}
|
||||
void AddMaterialInstanceID();
|
||||
void AddJoint();
|
||||
void AddLocalToWorld();
|
||||
};//class ShaderCreateInfoVertex:public ShaderCreateInfo
|
||||
}//namespace graph
|
||||
}//namespace hgl::graph
|
||||
|
Reference in New Issue
Block a user