源码单元1 包入口与Shader索引
沿Unity 6 URP固定提交掌握ShaderPathID、Shaders目录、ShaderLibrary目录、包提交、依赖图。
先预测,再读源码
先预测这个文件或符号会影响哪个Pass、缓冲、关键字和GPU阶段,再打开源码与帧调试观察。先从Shaders.cs与目录结构建立索引,再按ShaderLab入口、材质输入、Pass实现、共享库和运行时选择五层追踪。课程固定到Unity Graphics 6000.0/staging提交,避免master更新造成源码与讲解错位。 本单元用、、、、建立静态源码与运行时证据之间的对应关系。
官方源码基线
本页一一对应 Unity Technologies 官方 Graphics 仓库 6000.0/staging 提交 275a7f9a 中的源码单元。课程核对日期为 2026-07-15;所有路径均固定到该提交,不把 master 开发代码与发布分支混用。
必读文件
Packages/com.unity.render-pipelines.universal/Shaders/Shaders.csPackages/com.unity.render-pipelines.universal/Shaders/Lit.shaderPackages/com.unity.render-pipelines.universal/Shaders/SimpleLit.shaderPackages/com.unity.render-pipelines.universal/Shaders/BakedLit.shaderPackages/com.unity.render-pipelines.universal/Shaders/Unlit.shader
五个核心符号
- ShaderPathID:由运行时代码定位URP内置Shader资源的稳定枚举。
- Shaders目录:保存内置材质、Pass实现和专用渲染Shader的源码根。
- ShaderLibrary目录:保存跨材质共享的输入、光照、阴影和平台函数。
- 包提交:把课程内容固定到可复查Git提交的版本证书。
- 依赖图:从ShaderLab include到HLSL函数和运行时Pass的有向关系。
生产者到消费者链
先从Shaders.cs与目录结构建立索引,再按ShaderLab入口、材质输入、Pass实现、共享库和运行时选择五层追踪。课程固定到Unity Graphics 6000.0/staging提交,避免master更新造成源码与讲解错位。 阅读顺序固定为资源入口、ShaderLab Properties与Pass、HLSL输入结构、核心函数、共享库、运行时Renderer选择。每个箭头都写明文件、符号、参数、关键字和目标缓冲。
公式中的位置、方向、深度、颜色和索引必须标注空间、范围与来源。源码中能找到函数不证明它在当前变体执行,必须继续核对pragma、关键字、LightMode和Renderer配置。
最小源码探针
Shader.Find(ShaderUtils.GetShaderPath(ShaderPathID.Lit));探针顺序是常量输出、输入结构可视化、核心函数分项、固定状态和目标缓冲。先确认实际Shader变体和Pass,再解释颜色或性能差异。
运行时互证
source: commit + package path + symbol
material: shader + keywords + UnityPerMaterial layout
renderer: renderer asset + rendering path + pass event
frame: draw + LightMode + target + attachments
evidence: Frame Debugger + GPU capture + variant log用Frame Debugger确认实际Pass和关键字,用GPU捕获确认RenderState、资源绑定、MRT与时序,用构建日志确认变体是否保留。修改包源码时还要记录嵌入包与上游提交的差异。
边界、兼容与性能
测试Forward与Deferred、主光与附加光、Lightmap与Probe、透明与Alpha Clip、XR单通道实例、动态分辨率、DOTS实例、不同图形API和移动Tile GPU。固定Unity版本、平台、分辨率、VSync和场景后再比较CPU/GPU时间。
baseline: official commit 275a7f9ad933
candidate: exact local diff
correctness: image and buffer diff
compatibility: renderer modes, APIs, XR and platforms
performance: variants, SetPass, samples, bandwidth, CPU/GPU ms
failure: smallest replayable configuration- 在固定提交打开必读文件,定位入口、include、结构和核心函数。
- 画出生产者到消费者链,并标注关键字与LightMode。
- 用最小材质和场景触发目标变体,保存中间缓冲。
- 构造失败配置,用源码差异和GPU事件解释原因。
验收证书
证书包含提交、文件、符号、调用和include链、材质与关键字、Renderer配置、Pass事件、目标缓冲、GPU计时与失败反例。只记菜单名而不记录包版本和真实路径,升级Unity后仍用旧函数签名解释新源码。 修复后必须重放同一配置,并指出静态源码和运行时事件各发生了什么变化。
常见误区
本章回顾
本页覆盖ShaderPathID、Shaders目录、ShaderLibrary目录、包提交、依赖图。掌握标准是能给出固定路径和符号,画出数据链,触发对应Pass,再用正确性、兼容性和性能证据复现结论。