added few codes about MaterialInstance
This commit is contained in:
parent
a2c3438c58
commit
e2dd652c3a
@ -1 +1 @@
|
|||||||
Subproject commit 8fd176b8fa8ca605a4b80e766c06c48ce5b1aa85
|
Subproject commit bd4984ee4272d358967b15cd6179249bba60f882
|
@ -21,6 +21,7 @@ protected:
|
|||||||
|
|
||||||
AnsiString mi_codes; ///<MaterialInstance代码
|
AnsiString mi_codes; ///<MaterialInstance代码
|
||||||
uint32_t mi_length; ///<MaterialInstance数据长度
|
uint32_t mi_length; ///<MaterialInstance数据长度
|
||||||
|
uint32_t mi_shader_stage; ///<MaterialInstance着色器阶段
|
||||||
|
|
||||||
ShaderCreateInfoMap shader_map; ///<着色器列表
|
ShaderCreateInfoMap shader_map; ///<着色器列表
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@ MaterialCreateInfo::MaterialCreateInfo(const MaterialConfig *mc)
|
|||||||
if(hasFragment ())shader_map.Add(frag=new ShaderCreateInfoFragment(&mdi));else frag=nullptr;
|
if(hasFragment ())shader_map.Add(frag=new ShaderCreateInfoFragment(&mdi));else frag=nullptr;
|
||||||
|
|
||||||
mi_length=0;
|
mi_length=0;
|
||||||
|
mi_shader_stage=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MaterialCreateInfo::AddStruct(const AnsiString &struct_name,const AnsiString &codes)
|
bool MaterialCreateInfo::AddStruct(const AnsiString &struct_name,const AnsiString &codes)
|
||||||
@ -159,6 +160,8 @@ bool MaterialCreateInfo::SetMaterialInstance(const AnsiString &mi_glsl_codes,con
|
|||||||
|
|
||||||
vert->AddMaterialInstanceID(); //增加一个材质实例ID
|
vert->AddMaterialInstanceID(); //增加一个材质实例ID
|
||||||
|
|
||||||
|
mi_shader_stage=shader_stage;
|
||||||
|
|
||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -176,6 +179,13 @@ bool MaterialCreateInfo::CreateShader()
|
|||||||
if(!shader_map.GetValue(i,sc))
|
if(!shader_map.GetValue(i,sc))
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
|
if(mi_shader_stage)
|
||||||
|
if(sc->GetShaderStage()<mi_shader_stage)
|
||||||
|
{
|
||||||
|
sc->AddOutput(VAT_UINT,VAN::MaterialInstanceID,Interpolation::Flat);
|
||||||
|
sc->AddFunction(mtl::func::HandoverMI);
|
||||||
|
}
|
||||||
|
|
||||||
sc->CreateShader(last);
|
sc->CreateShader(last);
|
||||||
|
|
||||||
last=sc;
|
last=sc;
|
||||||
|
@ -34,8 +34,6 @@ int ShaderCreateInfoVertex::AddInput(const AnsiString &type,const AnsiString &na
|
|||||||
void ShaderCreateInfoVertex::AddMaterialInstanceID()
|
void ShaderCreateInfoVertex::AddMaterialInstanceID()
|
||||||
{
|
{
|
||||||
AddInput(VAT_UINT, VAN::MaterialInstanceID,VK_VERTEX_INPUT_RATE_INSTANCE,VertexInputGroup::MaterialInstanceID);
|
AddInput(VAT_UINT, VAN::MaterialInstanceID,VK_VERTEX_INPUT_RATE_INSTANCE,VertexInputGroup::MaterialInstanceID);
|
||||||
|
|
||||||
AddFunction(mtl::func::HandoverMI);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShaderCreateInfoVertex::AddJoint()
|
void ShaderCreateInfoVertex::AddJoint()
|
||||||
|
@ -22,8 +22,7 @@ mat4 GetJointMatrix()
|
|||||||
joint.mats[JointID.y]*JointWeight.y+
|
joint.mats[JointID.y]*JointWeight.y+
|
||||||
joint.mats[JointID.z]*JointWeight.z+
|
joint.mats[JointID.z]*JointWeight.z+
|
||||||
joint.mats[JointID.w]*JointWeight.w;
|
joint.mats[JointID.w]*JointWeight.w;
|
||||||
}
|
})";
|
||||||
)";
|
|
||||||
|
|
||||||
constexpr const char HandoverMI[]=R"(
|
constexpr const char HandoverMI[]=R"(
|
||||||
void HandoverMI()
|
void HandoverMI()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user