包含此页的版本:
不含此页的版本:
声明着色器在 GPU 上运行的程序。更多信息
请参阅术语表关键字,请使用#pragma指令。例如:
#pragma shader_feature REFLECTION_TYPE1 REFLECTION_TYPE2 REFLECTION_TYPE3
使用以下着色器指令之一:
dynamic_branch将分支代码保留在一个已编译的着色器程序中。multi_compile或shader_feature编译多个着色器变体,这意味着每个分支都有一个单独的着色器程序。有关何时使用哪个着色器指令的信息,请参阅 Unity 如何编译分支着色器。
如果着色器总共使用超过 128 个关键字,则项目可能会变慢。因此,最好保持较低的关键字数量。关键字总数包括 Unity 始终保留的每个着色器 4 个关键字。
单个关键字#pragma语句统称为集合。
例如,要声明一组三个关键字:
#pragma shader_feature REFLECTION_TYPE1 REFLECTION_TYPE2 REFLECTION_TYPE3
可以在单个着色器中声明多组关键字。例如,要创建两个集合:
#pragma shader_feature REFLECTION_TYPE1 REFLECTION_TYPE2 REFLECTION_TYPE3
#pragma shader_feature RED GREEN BLUE WHITE
您无法执行以下作:
dynamic_branch和shader_feature或multi_compile.Unity 使用dynamic_branch如果你这样做。在运行时,Unity 没有集合的概念。您可以独立启用或禁用任何关键字。因此,可以同时启用同一集中的两个或多个关键字,或禁用所有关键字。
如果您使用shader_feature并启用同一集中的多个关键字,Unity 会尝试找到最匹配的着色器变体。这可能会导致意想不到的结果。