Shader `#pragma` 逐个讲透:用两段代码对比搞懂每条指令的编译期机制
本文的规矩很土,但有效:每讲一个点,给你两段几乎一样的代码,只差一行,然后告诉你结果差在哪。⚠️ 代码基于 Unity URP 风格。各引擎 API 有差异,以官方文档为准。一、开篇:两段代码,差一个单词下面是两个同事写的「角色淡出」效果。找找差别在哪。1.1 小李的版本#pragma shader_feature _ _FADE_ON1.2 小王的版本#pragma multi_compile _ _FADE_ON除了这一行,两人的 HLSL 代码一字不差,C# 调用也一字不差:material.EnableKeyword("_FADE_ON"); material.SetFloat("_FadeAmount", 0.3f);1.3 结果┌──────────────────────────────────────────────────────┐ │ Editor 里 真机包里 │ ├────────────────────────────────────