scenario-unity-rendering-lighting

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Rendering and lighting (lighter / graphics TA)

渲染与光照(灯光美术 / 图形 TA)

Expert lighting in Unity is a measured loop: fix exposure, light to anchors, bake, grade, judging every stage from the same camera bookmarks with numbers (gray cards, clipping, bake memory, native passes) before taste. This skill drives URP 17.3 on Unity 6.3 from code; everything here ran in Unity 6000.3.21f1 on an Apple M5 Max (Metal) on 2026-09-24. If a sibling skill named here is missing from your available skills, ask the user to install it (
npx skills add scenario-labs/skills --skill <name>
); unattended, proceed from tool schemas and flag the gap.
REQUIRED BACKGROUND: scenario-unity-expert (channels,
ut_run
,
AgentCapture
,
AgentProfile
,
ut_review
, 6.3 traps).
Unity 中的专业布光是一个可量化循环:先修正曝光,再按锚点布光,然后烘焙、调色;在诉诸审美之前,每一阶段都应使用相同的相机书签并结合数值(灰卡、裁剪、烘焙内存、Native Pass)进行判断。本 skill 以代码方式驱动 Unity 6.3 上的 URP 17.3;本文所有内容均于 2026-09-24 在 Apple M5 Max(Metal)上的 Unity 6000.3.21f1 中运行验证。如果可用 skills 中缺少这里提及的同级 skill,请让用户安装(
npx skills add scenario-labs/skills --skill <name>
);在无人值守模式下,则依据工具 schema 继续执行并标记该缺口。
必需背景: scenario-unity-expert(channels、
ut_run
、
AgentCapture
、
AgentProfile
、
ut_review
、6.3 陷阱)。

Stance (the expert delta)

立场(专家差异)

  1. Exposure first, lights second (Pierre Yves Donzallaz, yqCHiZrgKzs [00:20:21]). URP 6.3 has Fixed exposure only: one Post Exposure per zone, lights solved from an 18% gray card (the unaided sun 2.0 read +1.03 EV with no tonemapper; the solved 0.98 read +0.16 EV under Neutral).
  2. Expect gray after baking; fix it in post under the tonemapper you chose early (Kyle Banks, 1agSNKuAfTM [00:04:58]; PYD [01:01:29]): Neutral for lookdev; contrast, saturation, Shadows Midtones Highlights pushed too far, then dialed back. ACES darkens (K3-wPnhmDi4 [00:54:50]; measured -1.4 EV): re-solve exposure under it.
  3. Shadow distance before resolution (6.3 Manual; HCXCmHgV7Sk [00:15:32]): 1024 over 10 m beats 2048 over 40 m. Max Distance = farthest dynamic shadow the player sees; last cascade ends at the last caster. Stylized room with soft shadows: 1024 was the sweet spot, higher looked "too crisp" (URP e-book).
  4. The asset that renders is the Quality level's, and so is its post (URPS [00:03:14], [00:30:06]). Report before editing. Unity 6 stacks the Graphics default profile, the active URP asset's profile, then scene volumes, per parameter: tier-dependent post (bloom cost, DoF, APV leak reduction) goes on each tier's asset profile, never in scene volumes, which win on every tier (measured). The template's two assets share one profile, and its Neutral tonemapper.
  5. Bake what does not move; split settings by cost (Ciro Continisio, hMnetI4-dNY [00:35:51]): texel density, max size, directional mode and shadowmask cost memory, samples and bounces only bake time. Small props keep Contribute GI with Receive GI = Light Probes ([00:48:30]). A shadowmask texel holds 4 shadowed Mixed lights (6.3 Manual). Lightmaps sample 3 to 4 times cheaper than APV but take 3 times the memory (APV24 IpVuIZYFRg4 frame 00:23:43): phones keep lightmaps for static geometry.
  6. The sky is the default interior light (PYD22 DlxuvvYZO4Q [00:08:17]; U25 [00:45:56]). Without baked GI and a local box probe, interiors and glossy surfaces take the sky (a smoothness-0.3 table read gray-blue until one probe existed).
  7. Stylized is a production choice, not a filter (Kyle Banks [00:22:04] to [00:23:06]): one palette texture, triplanar world noise, one shared shader (7 samples over 3 textures, fine on Switch); Simple Lit on the low tier (URP e-book); Subtractive as the cheapest mixed mode (TRB). A toon shader must still sample lightmaps, shadowmask and probes or the bake vanishes; 6.3 builds custom lighting on the URP Unlit target (deltas section 5).
  8. On tilers, bandwidth is the budget; prove it (6.3 Manual; U25 [00:30:26]; Ryan Keeble, bl0vKZkzNOs [00:14:30]): Forward, no depth or opaque texture unless needed (copy After Transparents), no soft shadows, MSAA 2x, 1 to 2 ms per extra full-screen pass on a Quest 2-class GPU.
    PassAudit
    reads the Render Graph's native passes: a depth copy After Opaques or the Opaque Texture splits the opaque, skybox and transparent pass (measured).
  1. 先曝光,后灯光(Pierre Yves Donzallaz,yqCHiZrgKzs [00:20:21])。URP 6.3 仅支持 Fixed exposure:每个区域使用一个 Post Exposure,并以 18% 灰卡反解灯光(无 Tonemapper 且未使用其他曝光设置时,太阳 2.0 的原始读数对应 +1.03 EV;使用 Neutral 后,解析出的 0.98 读数对应 +0.16 EV)。
  2. 烘焙后发灰是预期现象;应尽早选定 Tonemapper,并在 Post 阶段修复(Kyle Banks,1agSNKuAfTM [00:04:58];PYD [01:01:29]):Lookdev 阶段使用 Neutral;Contrast、Saturation 和 Shadows Midtones Highlights 曾被推得过高,之后再回调。ACES 会压暗画面(K3-wPnhmDi4 [00:54:50];实测 -1.4 EV):应在其下重新解析曝光。
  3. 先考虑阴影距离,再考虑分辨率(6.3 Manual;HCXCmHgV7Sk [00:15:32]):10 m 范围使用 1024,优于 40 m 范围使用 2048。Max Distance = 玩家能看到的最远动态阴影;最后一个 Cascade 的末端应对准最后一个 Caster。在带柔化阴影的风格化房间中,1024 是最佳平衡点,再高则显得“过于锐利”(URP e-book)。
  4. 实际用于渲染的 Asset 取决于 Quality Level,其 Post 同样如此(URPS [00:03:14]、[00:30:06])。修改前先提交报告。Unity 6 会针对每个参数依次叠加 Graphics 默认 Profile、当前 URP Asset 的 Profile,然后是场景 Volume:与层级相关的 Post(Bloom 成本、DoF、APV 泄漏削减)应放在各层级的 Asset Profile 中,绝不能放在场景 Volume 中,因为后者会在所有层级上覆盖前者(实测)。模板中的两个 Asset 共用一个 Profile,并使用 Neutral Tonemapper。
  5. 烘焙所有不会移动的物体;按成本拆分设置(Ciro Continisio,hMnetI4-dNY [00:35:51]):Texel 密度、最大尺寸、定向模式和 Shadowmask 会消耗内存;Samples 与 Bounces 只影响烘焙时间。小型道具保留 Contribute GI,并设置 Receive GI = Light Probes([00:48:30])。一个 Shadowmask Texel 可容纳 4 盏带阴影的 Mixed Light(6.3 Manual)。Lightmap 的采样成本仅为 APV 的 1/3 到 1/4,但内存占用是 APV 的 3 倍(APV24 IpVuIZYFRg4 frame 00:23:43):手机端的静态几何体继续使用 Lightmap。
  6. 天空是室内的默认光源(PYD22 DlxuvvYZO4Q [00:08:17];U25 [00:45:56])。如果没有烘焙 GI 和局部 Box Probe,室内环境与光泽表面会直接接收天空光(创建 Probe 前,一张 smoothness 为 0.3 的桌面读数呈灰蓝色)。
  7. 风格化是制作方案,而不是滤镜(Kyle Banks [00:22:04] 至 [00:23:06]):采用一张 Palette 纹理、一套 Triplanar World Noise 和一个共享 Shader(在 3 张纹理上共采样 7 次,在 Switch 上也运行良好);低层级使用 Simple Lit(URP e-book);最省成本的 Mixed 模式是 Subtractive(TRB)。Toon Shader 仍必须采样 Lightmap、Shadowmask 和 Probe,否则烘焙光照会消失;6.3 基于 URP Unlit Target 构建自定义光照(差异部分第 5 节)。
  8. 在 Tile-based GPU(tiler)上,带宽就是预算;要用数据证明(6.3 Manual;U25 [00:30:26];Ryan Keeble,bl0vKZkzNOs [00:14:30]):使用 Forward,除非必要否则不使用 Depth 或 Opaque Texture(在 After Transparents 复制),关闭 Soft Shadows,使用 MSAA 2x;在 Quest 2 级 GPU 上,每增加一个全屏 Pass 会增加 1 到 2 ms。
    PassAudit
    读取 Render Graph 的 Native Pass:在 After Opaques 复制 Depth,或使用 Opaque Texture,都会拆分 Opaque、Skybox 和 Transparent Pass(实测)。

Establish first

首先确定

Ask once: platforms and device tiers (compute or GLES); frame budget (mobile at 65%); one emotion sentence (KB [00:03:25]), references, stylized or realistic; time of day; what moves; interiors; custom shaders; baked-memory budget.
DecisionDefaultChange when
PipelineURP 17.3HDRP only for PC/console needing its exclusive features; no new features, no mobile, web or Switch 1 (rps)
PC tierForward+, depth texture, MSAA 4x, HDR 32-bit, 2048 shadows over 60 m in 2 cascades, soft Medium, additional shadows, Distance Shadowmask (verified on Forward+), GPU Resident Drawer when draw calls bind the CPUdevice tests
Mobile tierForward, no depth/opaque texture (the Opaque Texture also silently drops MSAA without StoreAndResolve), MSAA 2x, render scale 0.85, 1024 shadows over 30 m, 1 cascade, soft off, no additional shadows, Shadowmask mode, bias 0.1 / 0.5 (template 1 / 1 leaked)a wide device spread: add a low tier with
copy_from
(Simple Lit, no realtime shadows) [added]
Post per tierone Grading Mode (HDR) and LUT 32 everywhere; Mobile profile: bloom Kawase or Dual (6.3), no HQ filtering, Half or Quarter, at most 5 iterations, no DoF, no SSAO, Leak Reduction Performance; PC: SSAO Downsample, Leak Reduction Qualityart direction
GIStatic geometry lightmapped with a Mixed sun (Shadowmask where a phone tier bakes static sun shadows, else Baked Indirect); APV for dynamic objects; open or changing layouts: APV onlySubtractive for low-end stylized (CC [00:41:17]); APV scenarios or sky occlusion for time of day
ProbesAdaptive Probe VolumesLight Probe Groups without compute or when probes must move (APV24 [00:08:31])
AAPC MSAA 4x or TAA/STP; mobile MSAA 2x or FXAATAA/STP never with MSAA, stacking or dynamic resolution; STP not on GLES
一次性询问:目标平台和设备层级(Compute 或 GLES);帧预算(移动端按 65%);一句情绪描述(KB [00:03:25])、参考素材、风格化或写实;一天中的时段;哪些对象会移动;室内场景;自定义 Shader;烘焙内存预算。
决策默认值何时更改
管线URP 17.3仅当 PC/主机需要 HDRP 独占功能时改用 HDRP;无独占新功能需求,或面向移动端、Web、Switch 1(rps)时不要改用
PC 层级Forward+、Depth Texture、MSAA 4x、HDR 32-bit、2048 阴影覆盖 60 m 并分为 2 个 Cascade、Medium Soft Shadows、Additional Shadows、Distance Shadowmask(已在 Forward+ 上验证),当 Draw Call 数量使 CPU 达到瓶颈时启用 GPU Resident Drawer设备测试
Mobile 层级Forward,不使用 Depth/Opaque Texture(Opaque Texture 还会在没有 StoreAndResolve 时悄悄关闭 MSAA),MSAA 2x,Render Scale 0.85,1024 阴影覆盖 30 m,1 个 Cascade,关闭 Soft Shadows,不使用 Additional Shadows,Shadowmask 模式,Bias 0.1 / 0.5(模板的 1 / 1 会产生泄漏)设备覆盖范围较广:增加一个带
copy_from
的低层级(Simple Lit,无实时阴影)[新增]
各层级 Post统一使用一种 Grading Mode(HDR)和 32-bit LUT;Mobile Profile:Bloom 使用 Kawase 或 Dual(6.3),不使用 HQ Filtering,使用 Half 或 Quarter,最多 5 次迭代,不使用 DoF、SSAO,Leak Reduction 使用 Performance;PC:SSAO Downsample,Leak Reduction Quality艺术指导
GI静态几何体使用 Lightmap,并搭配一盏 Mixed Sun(手机层级需要烘焙静态太阳阴影时使用 Shadowmask,否则使用 Baked Indirect);动态对象使用 APV;开放式或会变化的布局:仅使用 APV低端风格化方案使用 Subtractive(CC [00:41:17]);APV 场景或 Sky Occlusion 可用于表现一天中的时段变化
ProbeAdaptive Probe Volumes不支持 Compute 或 Probe 必须移动时使用 Light Probe Groups(APV24 [00:08:31])
抗锯齿PC 使用 MSAA 4x 或 TAA/STP;移动端使用 MSAA 2x 或 FXAATAA/STP 不可与 MSAA、叠加或动态分辨率同时使用;STP 不支持 GLES

Workflow

工作流

Channel:
ut_run.run_method(P, "AgentKit.Lighting....", args, graphics=True)
for anything that renders or bakes;
-nographics
only for reports, tiers, volumes and audits (it cannot bake GI:
Bake
refuses). Plain command (
L.raw_command
):
Unity -batchmode -nographics -quit -projectPath P -logFile <job>/unity.log -executeMethod <method> -agentJob <job>
, args in
<job>/args.json
, result on the
AGENT_RESULT
line. Full code and results:
references/procedures.md
.
  1. Report the pipeline.
    LightingPipeline.ReportPipeline
    : asset per level, renderer, features, asset profile, GRD prerequisites. GATE: every level has its own asset.
  2. Tiers as data.
    ConfigureTiers
    (
    asset_props
    ,
    renderer_props
    ,
    quality_props
    ,
    renderer_features
    ,
    volume_profile
    +
    volume_overrides
    , project
    graphics
    for BRG variants and static batching), then ReportPipeline in a new process and
    L.tier_check
    . GATE: 0 mismatches, 0 errors (grading mismatch, GRD chain, APV masks without Use Rendering Layers).
  3. Bookmarks and cards.
    AgentView_*
    cameras, gray cards (sun, shade, one per zone), a chrome ball indoors;
    CaptureStage
    . GATE:
    L.stage_review
    0 errors; sheet opened.
  4. Exposure, then lights. Lookdev volume (Neutral, fixed Post Exposure); sun
    I * 2^-EV(card)
    ; other lights by ratio; zone exposure volumes at priority 1. GATE: sunlit card within half a stop; sun-to-shade at most 4 stops [added].
  5. Bake.
    LightingAudit.AuditLighting
    first (contributors, lightmap UVs, shaders that cannot show or feed the bake, Shadowmask overlap,
    style: "stylized"
    rules), then
    LightingBake.Bake
    preview, then final. Verify the Lighting Mode each tier really renders with the shadowmask range scene (P13). GATE: bake report within budget, no UV warnings, audit 0 errors.
  6. Reflections and leaks. Box probes per zone (importance 2, blend 0.25 m). Leak ladder: wall thickness near probe spacing, APV Options biases (0.1 / 0.175), Rendering Layer masks (
    apv_layers
    , max 4, rebake), Probe Adjustment Volume last (APV24 [00:18:13] to [00:23:13]). GATE: mid-smooth surfaces not sky-blue indoors (blue-minus-red at or below 0).
  7. Grade. Final look in the scene volume, cost fields in the tier profiles, exposure re-solved. GATE: saturation and contrast above the baked stage, clipped at most 5%, cards in band.
  8. Measure.
    AgentProfile
    +
    ut_stat.budget_check
    ;
    PassAudit
    per tier; PC vs Mobile captures; a development player for tier-only oddities (P12) and the PSO trace and progressive warm-up (P15). GATE: budget as a trend, device verdict after a thermal soak with a vendor GPU capture (scenario-unity-mobile); Mobile within 0.35 EV and 15% saturation of PC [added].
调用通道:对于任何会渲染或烘焙的操作,使用
ut_run.run_method(P, "AgentKit.Lighting....", args, graphics=True)
;
-nographics
仅用于报告、层级、Volume 和审计(无法烘焙 GI:
Bake
会拒绝执行)。直接命令(
L.raw_command
):
Unity -batchmode -nographics -quit -projectPath P -logFile <job>/unity.log -executeMethod <method> -agentJob <job>
,参数位于
<job>/args.json
,结果输出在
AGENT_RESULT
行。完整代码和结果:
references/procedures.md
。
  1. 报告渲染管线。
    LightingPipeline.ReportPipeline
    :每个层级的 Asset、Renderer、Features、Asset Profile、GRD 前置条件。门禁:每个层级都有独立 Asset。
  2. 将层级作为数据管理。
    ConfigureTiers
    (
    asset_props
    、
    renderer_props
    、
    quality_props
    、
    renderer_features
    、
    volume_profile
    、
    volume_overrides
    ,以及项目
    graphics
    中的 BRG 变体和 Static Batching 设置),然后在新进程中运行 ReportPipeline,再运行
    L.tier_check
    。门禁:0 个不匹配、0 个错误,包括调色不匹配、GRD 链路问题,以及 APV Mask 未启用 Use Rendering Layers。
  3. 相机书签与标定卡。
    AgentView_*
    相机、灰卡(太阳下、阴影下,每个区域各一张),室内放置一个 Chrome Ball;运行
    CaptureStage
    。门禁:
    L.stage_review
    为 0 个错误;阶段对比表已打开。
  4. 先曝光,后布光。 Lookdev Volume(Neutral、固定 Post Exposure);太阳使用
    I * 2^-EV(card)
    ;其他灯光按比例设置;区域曝光 Volume 的优先级为 1。门禁:日照下灰卡的误差不超过半档;阳光与阴影区域最多相差 4 档 [新增]。
  5. 烘焙。 先运行
    LightingAudit.AuditLighting
    (贡献光源、Lightmap UV、无法显示或参与烘焙的 Shader、Shadowmask 重叠、
    style: "stylized"
    规则),然后运行
    LightingBake.Bake
    预览,再执行最终烘焙。使用 Shadowmask Range 场景验证每个层级实际渲染的 Lighting Mode(P13)。门禁:烘焙报告未超出预算、无 UV 警告、审计结果为 0 个错误。
  6. 反射与泄漏。 每个区域放置 Box Probe(importance 2、blend 0.25 m)。泄漏排查顺序:根据 Probe 间距检查墙体厚度、APV Options Bias(0.1 / 0.175)、Rendering Layer Mask(
    apv_layers
    ,最多 4 个,需要重新烘焙),最后再调整 Probe Adjustment Volume(APV24 [00:18:13] 至 [00:23:13])。门禁:室内的中等光滑表面不呈天蓝色(蓝色通道减红色通道不高于 0)。
  7. 调色。 最终 Look 放在场景 Volume 中,成本字段放在层级 Profile 中,并重新解析曝光。门禁:调色后的饱和度和对比度高于烘焙阶段,高光裁剪不超过 5%,标定卡处于目标区间。
  8. 测量。
    AgentProfile
    +
    ut_stat.budget_check
    ;对每个层级运行
    PassAudit
    ;采集 PC 与 Mobile 对比图;针对仅在特定层级出现的问题使用 Development Player(P12),并进行 PSO Trace 和渐进式预热(P15)。门禁:预算以趋势判断;完成热浸测试后,结合厂商 GPU 捕获结果给出设备结论(scenario-unity-mobile);Mobile 相对 PC 的差异控制在 0.35 EV 和 15% 饱和度以内 [新增]。

Numbers

数值

ValueRelative toSource
EV100 14 sun, 10 overcast, 8 sunset, 6 bright interior, 1 dark interiorreal-world anchors; URP has no EV, use ratiosPYD [00:17:37]
51 vs 102 texels/m2048 over 40 m vs 1024 over 10 m6.3 Manual
spot 1, point 6, max 16 mapsadditional-light shadow atlas6.3 Manual
256 samples; 4 lights per texeldenoiser floor; shadowmask channels6.3 Manual
0.2 background, 1 play areaScale In LightmapCC [00:17:30]
0.20 vs 0.67 to 0.83 ms; 42.7 vs 14.5 MBlightmaps vs APV sampling (PS4 1080p); memoryAPV24
1,723 / 9 / 0 / 0 pxsun leak on Mobile: template bias, 0.1 / 0.5, Shadowmask, Subtractiveobserved
1.33 vs 0.67 MBinterior lightmap set, Shadowmask vs Subtractive (512 x 512)observed
about 2,450 to 22 to 38 draw calls; main thread / 3900 cubes, GRD off vs on, Editor Play modeobserved
6 / 8 / 7 native passesMobile: depth off / copy After Opaques / After Transparentsobserved
14 PSOs, warmed in 5 framesoutdoor scene, Metal development player, 3 per frameobserved
1 to 2 ms per full-screen passQuest 2-class tilerRK [00:14:30]
数值比较基准来源
EV100 14(太阳)、10(阴天)、8(日落)、6(明亮室内)、1(昏暗室内)现实世界锚点;URP 没有 EV,使用比值PYD [00:17:37]
51 与 102 texels/m40 m 范围配 2048,对比 10 m 范围配 10246.3 Manual
聚光灯 1、点光源 6、最多 16 张 Map附加光源阴影图集6.3 Manual
256 Samples;每个 Texel 4 盏灯降噪下限;Shadowmask 通道6.3 Manual
0.2 背景、1 个玩法区域Lightmap 中的 ScaleCC [00:17:30]
0.20 对 0.67 至 0.83 ms;42.7 对 14.5 MBLightmap 与 APV 采样对比(PS4 1080p);内存APV24
1,723 / 9 / 0 / 0 pxMobile 上的太阳泄漏:模板 Bias、0.1 / 0.5、Shadowmask、Subtractive实测
1.33 对 0.67 MB室内 Lightmap 集合,Shadowmask 与 Subtractive 对比(512 x 512)实测
约 2,450 降至 22 到 38 个 Draw Call;主线程 / 3900 个 Cube,GRD 关闭与开启对比,Editor Play Mode实测
6 / 8 / 7 个 Native PassMobile:关闭 Depth / 在 After Opaques 复制 / 在 After Transparents 复制实测
14 个 PSO,在 5 帧内完成预热室外场景、Metal Development Player、每帧 3 个实测
每个全屏 Pass 1 到 2 msQuest 2 级 tilerRK [00:14:30]

Quality gates

质量门禁

  • Measurable: fresh-process tier readback 0 mismatches; ReportPipeline and AuditLighting 0 errors; bake within budget; cards in band under the final tonemapper; clipped at most 5%, crushed at most 30%; chrome ball not sky-blue indoors; far shadows present where the tier promises them (P13); opaque, skybox and transparent in one native pass on phones;
    budget_check
    as a trend.
  • Visual: the stage sheet after every stage; crisp shadows without acne or seams; no leaks at joints; no sky tint; the emotion sentence describes the frame; Mobile reads as the same image (
    references/critique.md
    ).
  • 可测量: 在新进程中回读层级,结果为 0 个不匹配;ReportPipeline 和 AuditLighting 均为 0 个错误;烘焙未超出预算;最终 Tonemapper 下的标定卡处于目标区间;裁剪不超过 5%,暗部压死不超过 30%;室内的 Chrome Ball 不呈天蓝色;层级承诺的远距离阴影实际存在(P13);手机端的 Opaque、Skybox 和 Transparent 位于同一个 Native Pass;将
    budget_check
    作为趋势指标。
  • 视觉: 每个阶段都生成阶段对比表;阴影清晰且没有 Shadow Acne 或接缝;接合处没有泄漏;没有天空染色;情绪描述能够准确描述画面;Mobile 呈现相同的画面观感(
    references/critique.md
    )。

Common mistakes

常见错误

MistakeWhat it looks likeFix
Lights by feel, exposure to rescue themcard +0.9 EV, interiors never balancegray card, fixed exposure, solve lights
Resolution raised instead of distance lowered4096 still soft near the cameraMax Distance to the last visible dynamic shadow
CPU lightmapper or
-nographics
bake on this Mac
refused, or nothing bakedGPU lightmapper,
graphics=True
; there is no CPU fallback on Apple Silicon
Small props with Contribute GI offno baked contact shadow; realtime shadows under ShadowmaskContribute GI on, Receive GI = Light Probes
More than 4 shadowed Mixed lights on one surfaceextra lights frozen as fully baked
light.shadowmask_overlap
; make extras Baked or Realtime
Toon or custom shader on lightmapped geometrybaked light and shadows gone
light.shader_no_lightmap
/
no_shadowmask
/
no_meta
; scenario-unity-shaders adds the variants
Per-tier bloom set in the scene volumeMobile keeps PC bloom costcost fields only on tier profiles
One tier LDR, one HDRtiers drift apart after gradingone Grading Mode (HDR), one LUT size
APV masks without Use Rendering Layersmasks ignored on that tier
m_SupportsLightLayers
on every asset
No local reflection probe indoorschrome and wood reflect skybox probe per zone, importance 2
Depth Priming on with custom shadersobjects vanish once MSAA is offDepthOnly and DepthNormals passes, or priming Disabled
Template Mobile bias 1 / 1 on thin wallssawtooth sun along the wall-ceiling jointbias 0.1 / 0.5; bake the sun (Shadowmask or Subtractive)
GRD on without its chainnothing batchesBRG Variants Keep All, SRP Batcher, Forward+, static batching off
错误表现修复方式
凭感觉布光,靠曝光挽救灰卡 +0.9 EV,室内始终无法平衡使用灰卡、固定曝光并反解灯光
提高分辨率,而不是缩短阴影距离靠近相机处仍显模糊将 Max Distance 设为最后一个可见动态阴影处
在此 Mac 上使用 CPU Lightmapper 或以
-nographics
烘焙
被拒绝,或没有烘焙任何内容使用 GPU Lightmapper、
graphics=True
;Apple Silicon 上没有 CPU 回退方案
关闭小型道具的 Contribute GI没有烘焙接触阴影;Shadowmask 下出现实时阴影启用 Contribute GI,设置 Receive GI = Light Probes
单个表面上超过 4 盏带阴影的 Mixed Light额外灯光被完全烘焙并固定检查
light.shadowmask_overlap
;将额外灯光设为 Baked 或 Realtime
Lightmap 几何体上使用 Toon 或自定义 Shader烘焙光照与阴影消失使用
light.shader_no_lightmap
/
no_shadowmask
/
no_meta
;scenario-unity-shaders 提供相应变体
在场景 Volume 中设置各层级的 BloomMobile 仍承担 PC Bloom 成本成本字段仅放在层级 Profile 中
一个层级使用 LDR,另一个使用 HDR调色后各层级表现分化统一 Grading Mode(HDR)和 LUT 尺寸
APV Mask 未启用 Use Rendering Layers该层级忽略 Mask每个 Asset 都设置
m_SupportsLightLayers
室内没有局部 Reflection ProbeChrome 和木材反射天空每个区域放置一个 Box Probe,importance 2
启用 Depth Priming 的同时使用自定义 Shader关闭 MSAA 后对象消失添加 DepthOnly 和 DepthNormals Pass,或禁用 Priming
模板 Mobile 在薄墙上使用 Bias 1 / 1墙面与天花板接缝处出现锯齿状阳光Bias 0.1 / 0.5;烘焙太阳(Shadowmask 或 Subtractive)
启用 GRD 但未配置其链路没有任何对象被合批BRG Variants 设为 Keep All,启用 SRP Batcher,使用 Forward+,关闭 Static Batching

Handoffs

交接

  • Receives: blockouts from scenario-unity-world-building (static flags, lightmap UVs checked here); shaders from scenario-unity-shaders (DepthOnly, DepthNormals, Meta passes; LIGHTMAP_ON and SHADOWS_SHADOWMASK variants when lightmapped); budgets from scenario-unity-performance and scenario-unity-mobile.
  • Delivers: tiers (JSON spec + readback), tier profiles, bakes with their report, stage sheets, pass audits. To scenario-unity-shaders: the stylized shading brief (palette, shared shader, ramp on the URP Unlit target that samples lightmaps, shadowmask and APV; Simple Lit variants for the low tier) and Render Graph passes. To scenario-unity-performance: GRD bench CSVs and GPU questions. To scenario-unity-mobile: the Mobile tier, PSO traces per graphics API, the thermal soak and vendor GPU captures (Xcode, Android GPU Inspector, Arm Performance Studio, Snapdragon Profiler). To scenario-unity-pipeline-automation: raw command lines for CI. 2D Renderer lights: scenario-unity-2d.
  • 接收: 来自 scenario-unity-world-building 的 Blockout(在此检查 Static Flag、Lightmap UV);来自 scenario-unity-shaders 的 Shader(DepthOnly、DepthNormals、Meta Pass;Lightmap 几何体需要 LIGHTMAP_ON 和 SHADOWS_SHADOWMASK 变体);来自 scenario-unity-performance 和 scenario-unity-mobile 的预算。
  • 交付: Tier(JSON 规格与回读)、Tier Profile、烘焙及其报告、阶段对比表、Pass 审计。向 scenario-unity-shaders 交付:风格化 Shading Brief(Palette、共享 Shader、基于 URP Unlit Target 且采样 Lightmap、Shadowmask 和 APV 的 Ramp;低层级使用 Simple Lit 变体)以及 Render Graph Pass。向 scenario-unity-performance 交付:GRD Benchmark CSV 和 GPU 问题。向 scenario-unity-mobile 交付:Mobile Tier、每种图形 API 的 PSO Trace、热浸测试和厂商 GPU 捕获(Xcode、Android GPU Inspector、Arm Performance Studio、Snapdragon Profiler)。向 scenario-unity-pipeline-automation 交付:用于 CI 的原始命令行。2D Renderer 灯光:scenario-unity-2d。

Unity 6.3 notes

Unity 6.3 注意事项

  • Render Graph only;
    _CLUSTER_LIGHT_LOOP
    replaces
    _FORWARD_PLUS
    . The Render Graph Viewer can attach to a device player;
    PassAudit
    reads internals by reflection (
    available: false
    if they move).
  • URP exposure Fixed only, no physical light units, SSR or volumetrics; HDRP in maintenance; Built-in deprecated in 6.5.
  • The feature table says Distance Shadowmask is "Forward rendering path only" (it says the same of MSAA); on 6000.3.21f1 it rendered on Forward+ exactly as on Forward (P13).
  • GPU lightmapper only on Apple Silicon; CPU lightmapper deprecated in 6.6; OptiX deprecated in 6.5.
  • Bloom
    filter
    : Gaussian, Dual, Kawase (new in 6.3).
    GraphicsStateCollection
    is experimental.
    APVLeakReductionMode.ValidityBased
    is an obsolete alias that
    ToString()
    prints for Performance.
  • Dynamic batching deprecated in 6.5. STP forces TAA, needs compute, never GLES.
  • 仅支持 Render Graph;
    _CLUSTER_LIGHT_LOOP
    已取代
    _FORWARD_PLUS
    。Render Graph Viewer 可以挂接到设备 Player;
    PassAudit
    通过反射读取内部信息(如果内部实现发生变化,则
    available: false
    )。
  • URP 曝光仅支持 Fixed,不支持物理光照单位、SSR 或体积光;HDRP 处于维护模式;Built-in 在 6.5 中弃用。
  • 功能表称 Distance Shadowmask“仅适用于 Forward 渲染路径”(MSAA 也有同样说明);在 6000.3.21f1 上,它在 Forward+ 上的表现与 Forward 完全一致(P13)。
  • GPU Lightmapper 仅支持 Apple Silicon;CPU Lightmapper 在 6.6 中弃用;OptiX 在 6.5 中弃用。
  • Bloom
    filter
    :Gaussian、Dual、Kawase(6.3 新增)。
    GraphicsStateCollection
    仍为实验功能。
    APVLeakReductionMode.ValidityBased
    是一个已弃用的别名,
    ToString()
    会在 Performance 模式下打印它。
  • Dynamic Batching 在 6.5 中弃用。STP 强制启用 TAA,需要 Compute,且绝不支持 GLES。

References

参考资料

  • references/procedures.md
    : procedures P1 to P16 as copyable code, each with its live test and result.
  • references/critique.md
    : the rubric for captures, cards, bakes, reflections, grade, tiers, bandwidth.
  • references/expert-notes.md
    : principles by expert, the stylized recipe, disagreements, observations.
  • references/gui-paths.md
    : windows and menus for the same procedures.
  • references/sources.md
    : sources, credentials, timestamps, baseline gaps, revision history.
  • scripts/ut_lighting.py
    ,
    scripts/AgentKit/Lighting/*.cs
    ,
    scripts/Runtime/*.cs
    (player helpers: verification builds only).
  • references/procedures.md
    :P1 到 P16 的可复制代码,每项均附实时测试与结果。
  • references/critique.md
    :针对采集图、标定卡、烘焙、反射、调色、层级和带宽的评审标准。
  • references/expert-notes.md
    :按专家整理的原则、风格化配方、分歧和观察结果。
  • references/gui-paths.md
    :执行相同流程的窗口与菜单路径。
  • references/sources.md
    :来源、凭据、时间戳、基线缺口和修订历史。
  • scripts/ut_lighting.py
    、
    scripts/AgentKit/Lighting/*.cs
    、
    scripts/Runtime/*.cs
    (Player 辅助工具:仅用于验证构建)。