From e2dd652c3a99d162e9051cfed0ddb16568b86f17 Mon Sep 17 00:00:00 2001 From: "HuYingzhuo(hugo/hyzboy)" Date: Wed, 31 May 2023 20:14:45 +0800 Subject: [PATCH] added few codes about MaterialInstance --- CMSceneGraph | 2 +- inc/hgl/shadergen/MaterialCreateInfo.h | 1 + src/ShaderGen/MaterialCreateInfo.cpp | 10 ++++++++++ src/ShaderGen/ShaderCreateInfoVertex.cpp | 2 -- src/ShaderGen/common/MFCommon.h | 3 +-- 5 files changed, 13 insertions(+), 5 deletions(-) diff --git a/CMSceneGraph b/CMSceneGraph index 8fd176b8..bd4984ee 160000 --- a/CMSceneGraph +++ b/CMSceneGraph @@ -1 +1 @@ -Subproject commit 8fd176b8fa8ca605a4b80e766c06c48ce5b1aa85 +Subproject commit bd4984ee4272d358967b15cd6179249bba60f882 diff --git a/inc/hgl/shadergen/MaterialCreateInfo.h b/inc/hgl/shadergen/MaterialCreateInfo.h index cf5700f8..f65d876e 100644 --- a/inc/hgl/shadergen/MaterialCreateInfo.h +++ b/inc/hgl/shadergen/MaterialCreateInfo.h @@ -21,6 +21,7 @@ protected: AnsiString mi_codes; ///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()AddOutput(VAT_UINT,VAN::MaterialInstanceID,Interpolation::Flat); + sc->AddFunction(mtl::func::HandoverMI); + } + sc->CreateShader(last); last=sc; diff --git a/src/ShaderGen/ShaderCreateInfoVertex.cpp b/src/ShaderGen/ShaderCreateInfoVertex.cpp index a14d8208..a5cdedff 100644 --- a/src/ShaderGen/ShaderCreateInfoVertex.cpp +++ b/src/ShaderGen/ShaderCreateInfoVertex.cpp @@ -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() diff --git a/src/ShaderGen/common/MFCommon.h b/src/ShaderGen/common/MFCommon.h index 15ba58f6..b8a0073f 100644 --- a/src/ShaderGen/common/MFCommon.h +++ b/src/ShaderGen/common/MFCommon.h @@ -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()