您可以使用 Unity 着色器在 GPU 上运行的程序。 更多信息
参见 术语表 指令快捷方式来创建着色器关键字和变体的集合。例如,以下示例添加了 SHADOWS_DEPTH 和 SHADOWS_CUBE 关键字和变体
#pragma multi_compile_shadowcaster
| 快捷方式 | Unity 添加的着色器关键字 | Unity 添加一个所有关键字都关闭的变体 | 使用这些变体的着色器通道 |
|---|---|---|---|
multi_compile_fog |
FOG_LINEAR, FOG_EXP, FOG_EXP2 |
是 | 雾 |
multi_compile_fwdadd |
POINT DIRECTIONAL SPOT POINT_COOKIE DIRECTIONAL_COOKIE |
否 | PassType.ForwardAdd |
multi_compile_fwdadd_fullshadows |
POINT, DIRECTIONAL, SPOT, POINT_COOKIE, DIRECTIONAL_COOKIE, SHADOWS_DEPTH SHADOWS_SCREEN SHADOWS_CUBE SHADOWS_SOFT SHADOWS_SHADOWMASK, LIGHTMAP_SHADOW_MIXING |
否 |
PassType.ForwardAdd. 添加了让灯光拥有实时阴影的功能。 |
multi_compile_fwdbase |
DIRECTIONAL, LIGHTMAP_ON, DIRLIGHTMAP_COMBINED, DYNAMICLIGHTMAP_ON, SHADOWS_SCREEN, SHADOWS_SHADOWMASK, LIGHTMAP_SHADOW_MIXING, LIGHTPROBE_SH |
否 | PassType.ForwardBase. |
multi_compile_fwdbasealpha |
DIRECTIONAL, LIGHTMAP_ON, DIRLIGHTMAP_COMBINED, DYNAMICLIGHTMAP_ON, LIGHTMAP_SHADOW_MIXING, VERTEXLIGHT_ON, LIGHTPROBE_SH |
否 | PassType.ForwardBase |
multi_compile_instancing |
INSTANCING_ON. 如果您的项目使用过程化实例化,也会添加 PROCEDURAL_ON。 |
是 | 实例化 |
multi_compile_lightpass |
POINT, DIRECTIONAL, SPOT, POINT_COOKIE, DIRECTIONAL_COOKIE, SHADOWS_DEPTH, SHADOWS_SCREEN, SHADOWS_CUBE, SHADOWS_SOFT, SHADOWS_SHADOWMASK, LIGHTMAP_SHADOW_MIXING |
否 | 所有绘制实时灯光和阴影的通道,除了 光探针光探针存储有关灯光如何穿过场景空间的信息。 在给定空间内排列的光探针的集合可以改善该空间内移动物体和静态 LOD 景观的照明效果。 更多信息 参见 术语表. |
multi_compile_particles |
SOFTPARTICLES_ON |
是 | 粒子系统通过在场景中生成和动画化大量小型 2D 图像来模拟液体、云和火焰等流体实体的组件。 更多信息 参见 术语表 通道。 |
multi_compile_prepassfinal |
LIGHTMAP_ON, DIRLIGHTMAP_COMBINED, DYNAMICLIGHTMAP_ON, UNITY_HDR_ON, SHADOWS_SHADOWMASK, LIGHTPROBE_SH |
是 | PassType.Deferred |
multi_compile_shadowcaster |
SHADOWS_DEPTH, SHADOWS_CUBE |
否 | PassType.ShadowCaster |
multi_compile_shadowcollector |
SHADOWS_SPLIT_SPHERES, SHADOWS_SINGLE_CASCADE |
是 | 屏幕空间阴影。 |
您可以使用 skip_variants 指令来移除您不使用的关键字。
例如,以下示例添加了 multi_compile_fwdadd 集的关键字,但移除了 POINT 和 POINT_COOKIES 变体。
#pragma multi_compile_fwdadd
#pragma skip_variants POINT POINT_COOKIE
有关移除变体的更多信息,请参阅 着色器变体剥离。