Hidden/Post FX/Uber 着色器在 post 处理插件中花费太长时间

Take too long Hidden/Post FX/Uber Shader in post processing plugin

2D项目(Unity 2018.3.0)

  1. 我下载Unity的插件Post处理
  2. 将脚本添加到相机 https://imgur.com/a/EduR7zw

  3. 仅配置颜色分级 https://imgur.com/a/1tPOc4r

  4. 尝试构建,但花费的时间太长,导致出现在充电栏着色器中。 https://imgur.com/a/IhHBhTH

这里有什么解决办法吗?

编译时间很长,因为 uber 着色器中有一个 multi_compiles 的度量 fuckton。着色器变体的数量为 2^(multi_compiles 的数量)。

您可以通过手动编辑 ubershader 并删除一些 multi_compile 引用您不使用的功能的行来减少变体的数量。

Here 是您可以注释掉的一些行的示例。

  1. 转到资源->后处理->资源->着色器
  2. 找到"Uber"并打开代码。
  3. 在脚本的第一行你会看到这个:

    #pragma multi_compile __ UNITY_COLORSPACE_GAMMA
    #pragma multi_compile __ CHROMATIC_ABERRATION
    #pragma multi_compile __ DEPTH_OF_FIELD DEPTH_OF_FIELD_COC_VIEW
    #pragma multi_compile __ BLOOM BLOOM_LENS_DIRT
    #pragma multi_compile __ COLOR_GRADING COLOR_GRADING_LOG_VIEW
    #pragma multi_compile __ USER_LUT
    #pragma multi_compile __ GRAIN
    #pragma multi_compile __ VIGNETTE_CLASSIC VIGNETTE_MASKED
    #pragma multi_compile __ DITHERING
    
  4. 将“#pragma”更改为“#define”,如果您要使用此过程,则只留在 pragma 中

在我的例子中,我只使用 ColorGrading

#define  multi_compile __ UNITY_COLORSPACE_GAMMA
    #define  multi_compile __ CHROMATIC_ABERRATION
    #define  multi_compile __ DEPTH_OF_FIELD DEPTH_OF_FIELD_COC_VIEW
    #define  multi_compile __ BLOOM BLOOM_LENS_DIRT
    #pragma multi_compile __ COLOR_GRADING COLOR_GRADING_LOG_VIEW
    #define  multi_compile __ USER_LUT
    #define  multi_compile __ GRAIN
    #define  multi_compile __ VIGNETTE_CLASSIC VIGNETTE_MASKED
    #define  multi_compile __ DITHERING