diff --git a/03-UnrealEngine/卡通渲染相关资料/渲染功能/ShaderModel/GBuffer&Material&BasePass.md b/03-UnrealEngine/卡通渲染相关资料/渲染功能/ShaderModel/GBuffer&Material&BasePass.md index 76fbb38..5a6d0ba 100644 --- a/03-UnrealEngine/卡通渲染相关资料/渲染功能/ShaderModel/GBuffer&Material&BasePass.md +++ b/03-UnrealEngine/卡通渲染相关资料/渲染功能/ShaderModel/GBuffer&Material&BasePass.md @@ -53,8 +53,6 @@ GBuffer相关信息(精度、顺序)可以参考FetchLegacyGBufferInfo()。 - TargetSeparatedMainDirLight(MRT7) 几个动态MRT的存在条件与Shader判断宏: -***查找IsUsingBasePassVelocity()*** 被使用过的地方。 - - OutGBufferE(PrecomputedShadowFactors):r.AllowStaticLighting = 1 - GBUFFER_HAS_PRECSHADOWFACTOR - WRITES_PRECSHADOWFACTOR_ZERO @@ -180,6 +178,38 @@ else if (Mat.IS_BASE_PASS) } ``` +位于FShaderCompileUtilities::ApplyDerivedDefines(),新版本逻辑遍历数据由GBufferInfo.cpp中的FetchLegacyGBufferInfo()处理。 +```c++ +#if 1 + static bool bTestNewVersion = true; + if (bTestNewVersion) + { + //if (DerivedDefines.USES_GBUFFER) + { + for (int32 Iter = 0; Iter < FGBufferInfo::MaxTargets; Iter++) + { + if (bTargetUsage[Iter]) + { + FString TargetName = FString::Printf(TEXT("PIXELSHADEROUTPUT_MRT%d"), Iter); + OutEnvironment.SetDefine(TargetName.GetCharArray().GetData(), TEXT("1")); + } + } + } + } + else + { + // This uses the legacy logic from CalculateDerivedMaterialParameters(); Just keeping it around momentarily for testing during the transition. + SET_COMPILE_BOOL_IF_TRUE(PIXELSHADEROUTPUT_MRT0) + SET_COMPILE_BOOL_IF_TRUE(PIXELSHADEROUTPUT_MRT1) + SET_COMPILE_BOOL_IF_TRUE(PIXELSHADEROUTPUT_MRT2) + SET_COMPILE_BOOL_IF_TRUE(PIXELSHADEROUTPUT_MRT3) + SET_COMPILE_BOOL_IF_TRUE(PIXELSHADEROUTPUT_MRT4) + SET_COMPILE_BOOL_IF_TRUE(PIXELSHADEROUTPUT_MRT5) + SET_COMPILE_BOOL_IF_TRUE(PIXELSHADEROUTPUT_MRT6) + } +#endif +``` + ### 是否需要Toon 在材质中: ```c++