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代码
|
||||
uint32_t mi_length; ///<MaterialInstance数据长度
|
||||
uint32_t mi_shader_stage; ///<MaterialInstance着色器阶段
|
||||
|
||||
ShaderCreateInfoMap shader_map; ///<着色器列表
|
||||
|
||||
|
@ -16,6 +16,7 @@ MaterialCreateInfo::MaterialCreateInfo(const MaterialConfig *mc)
|
||||
if(hasFragment ())shader_map.Add(frag=new ShaderCreateInfoFragment(&mdi));else frag=nullptr;
|
||||
|
||||
mi_length=0;
|
||||
mi_shader_stage=0;
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
mi_shader_stage=shader_stage;
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
@ -176,6 +179,13 @@ bool MaterialCreateInfo::CreateShader()
|
||||
if(!shader_map.GetValue(i,sc))
|
||||
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);
|
||||
|
||||
last=sc;
|
||||
|
@ -34,8 +34,6 @@ int ShaderCreateInfoVertex::AddInput(const AnsiString &type,const AnsiString &na
|
||||
void ShaderCreateInfoVertex::AddMaterialInstanceID()
|
||||
{
|
||||
AddInput(VAT_UINT, VAN::MaterialInstanceID,VK_VERTEX_INPUT_RATE_INSTANCE,VertexInputGroup::MaterialInstanceID);
|
||||
|
||||
AddFunction(mtl::func::HandoverMI);
|
||||
}
|
||||
|
||||
void ShaderCreateInfoVertex::AddJoint()
|
||||
|
@ -22,8 +22,7 @@ mat4 GetJointMatrix()
|
||||
joint.mats[JointID.y]*JointWeight.y+
|
||||
joint.mats[JointID.z]*JointWeight.z+
|
||||
joint.mats[JointID.w]*JointWeight.w;
|
||||
}
|
||||
)";
|
||||
})";
|
||||
|
||||
constexpr const char HandoverMI[]=R"(
|
||||
void HandoverMI()
|
||||
|
Loading…
x
Reference in New Issue
Block a user