ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Shader `#pragma` 逐个讲透:用两段代码对比搞懂每条指令的编译期机制

Shader `#pragma` 逐个讲透:用两段代码对比搞懂每条指令的编译期机制

本文的规矩很土,但有效:每讲一个点,给你两段几乎一样的代码,只差一行,然后告诉你结果差在哪。

⚠️ 代码基于 Unity URP 风格。各引擎 API 有差异,以官方文档为准。


一、开篇:两段代码,差一个单词

下面是两个同事写的「角色淡出」效果。找找差别在哪。

1.1 小李的版本

#pragma shader_feature _ _FADE_ON

1.2 小王的版本

#pragma multi_compile _ _FADE_ON

除了这一行,两人的 HLSL 代码一字不差,C# 调用也一字不差:

material.EnableKeyword("_FADE_ON"); material.SetFloat("_FadeAmount", 0.3f);

1.3 结果

┌──────────────────────────────────────────────────────┐ │ Editor 里 真机包里 │ ├────────────────────────────────────
返回列表