variant

shader 变体与宏定义

Shader 变体

Shader 多重编译

有多重编译的 Shader 被称为 uber shader

全局宏定义

  • #pragma multi_compile 打包所有变体

  • #pragma shader_feature 打包会剔除未被材质使用的着色器变体。

本地宏定义

  • #pragma multi_compile_local _ LIGHTMAP_SHADOW_MIXING

  • #pragma shader_feature_local _RECEIVE_SHADOWS_OFF

不能使用 Shader.EnableKeyword 全局开启定义, 而是通过材质面板或者代码 EnableKeyword

指定宏定义阶段

  • #pragma shader_feature_local_fragment _LASER_SCAN

指定只有 fragment 阶段才开启宏定义

最后更新于