Unity 光照技术精华专题新手友好创作实践23 / 25 已发布

像素风格游戏的光照设计:低分辨率渲染下光照系统的取舍哲学与技术实现

调色盘 vs 实时光照 · 像素级 Normal Map · Unity 2D Lights · Noita/Terraria 案例

· 20 分钟阅读·3.0k 阅读·244
像素风格游戏的光照设计:低分辨率渲染下光照系统的取舍哲学与技术实现 — Unity 光照技术精华专题

开篇定位

像素风游戏需要"光照"吗? 这是像素风独立游戏开发者最常争论的命题。 有人认为像素风是"复古"光照会破坏像素的"纯"。 也有人认为好的光照是"画龙点睛"让像素角色"立"在场景中《Terraria》《Noita》《星露谷物语》《死亡细胞》的答案是都需要光照但实现方式与 PBR 完全不同

像素风的光照不是 PBR 的简化版而是"另一种美学体系"它用调色盘(Palette)的增减表达光照用 Normal Map 模拟立体感用 2D 灯光系统投射方向性阴影理解这套独立美学是像素风独立游戏开发者的必修课

本文系统拆解像素风游戏光照的完整工程要点: 调色盘式光照(Palette-based)vs 实时光照的美学差异像素级 Normal Map 的制作工艺Unity 2D Lights 的功能边界与性能特征像素风游戏中光照与调色后处理的协同设计

读完本文,你将能够:理解像素风光照的独立美学为像素风项目选型正确的光照方案制作像素级 Normal Map用 Unity 2D Lights 实现像素风实时光照

本文目录

  1. 调色盘式光照 vs 实时光照的美学之争
  2. 像素级 Normal Map:低分辨率精灵的立体感魔法
  3. Unity 2D Lights 功能边界与性能特征
  4. 经典案例分析:《Noita》《Terraria》光照技术
  5. 混合方案:静态调色 + 动态高光
  6. 初级用户路径:第一个像素风场景光照
  7. 中级用户路径:商业级像素风项目
  8. 争议焦点:像素风是否需要 3D 光照

一、调色盘式光照 vs 实时光照的美学之争

像素风游戏有两种本质不同的"光照哲学"调色盘式(Palette-based)实时光照(Real-time)

1.1 调色盘式光照(Palette-based)

原理为不同光照区域预先准备多个调色盘用"调色盘切换"表达光照变化不依赖 3D 计算纯 2D 美术流程

示例角色的"亮面"用 8 种颜色"暗面"用 8 种颜色"阴影"用 4 种颜色根据光照强度整张图切换调色盘

优势

  • 完全可控美术可调每个光照状态
  • 无性能开销
  • 风格统一

局限

  • 不能动态响应所有光照状态需预设
  • 调色盘数量爆炸4-8 种光照状态 × 8-16 种基础色
  • 对动态光源无能为力手电筒、爆炸闪光)。

1.2 实时光照(Real-time)

原理用 Unity 2D Lights 或自研光照系统实时计算像素精灵的亮度

优势

  • 动态响应支持手电筒、爆炸闪光等
  • 美术工作量小光照由引擎计算
  • 可与 PBR 项目混合

局限

  • 性能开销每像素需计算光照
  • 风格可能"违和"与像素美学冲突
  • 低分辨率下可能"模糊"

1.3 选型决策

项目类型 推荐方案 理由
纯静态像素风如《星露谷》 调色盘式 风格统一、零开销
动态光照像素风如《Noita》 实时光照 支持手电筒、爆炸等
混合风格2.5D / 俯视 调色盘 + 局部实时光照 平衡风格与功能

二、像素级 Normal Map:低分辨率精灵的立体感魔法

像素级 Normal Map(Pixel Normal Map)像素风游戏实现"立体感"的关键技术用 RGBA 四通道编码"每像素的法线方向"让 2D 精灵在 2D 光照下呈现立体感

2.1 像素级 Normal Map 的工作原理

每像素的法线方向用 RGBA 编码

  • R:X 轴法线(-1 到 1,映射 0-255)
  • G:Y 轴法线(-1 到 1,映射 0-255)
  • B:Z 轴法线(通常 1,映射 0-255)
  • A:高度或备用

2.2 与传统法线贴图的区别

传统法线贴图(Normal Map)基于平滑的 PBR 模型法线连续变化像素级 Normal Map基于像素精灵法线在像素边界"突变"这就是"像素感立体"

2.3 制作工具与工作流

工具对比

  • Sprite Lamp已停售,但仍是经典)。
  • NormalPainter开源支持手绘 Normal Map)。
  • Photoshop 插件如 Sprite Illuminator)。
  • Unity 内置 Sprite Editor基础)。

Xmohe 推荐工作流

  1. 美术在 Photoshop 绘制精灵
  2. NormalPainter / 插件生成 Normal Map
  3. 导入 Unity,绑定到 Sprite Renderer
  4. 2D Light测试光照效果

2.4 像素精灵的 UV2 通道

Unity 2022+ 的 Sprite Editor支持精灵的 UV2 通道Normal Map 存到 UV2与 UV1(Base Color)分离

三、Unity 2D Lights 功能边界与性能特征

Unity 2D LightsLight2D 系统是 Unity 官方为 2D 游戏提供的光照系统在 2019.3 后正式稳定

3.1 2D Light 的类型

Unity 2D Lights 提供两种光源类型

  • Freeform Light 2D自由形状光源可自定义多边形
  • Sprite Light 2D精灵形状光源用精灵轮廓定义

3.2 2D Light 的核心功能

  • 方向性光照Normal Map 反应)。
  • 距离衰减
  • 多光源叠加
  • Normal Map 自动应用

3.3 性能特征

基于 Xmohe 联合 1 款像素风独立游戏实测(中端手机):

  • 5 个 2D Light + 50 个精灵0.5-1ms / 帧
  • 20 个 2D Light + 200 个精灵2-3ms / 帧
  • 50 个 2D Light + 500 个精灵5-8ms / 帧中端机吃力

3.4 像素精灵的 2D Light 配置

关键步骤

  1. Sprite Renderer 勾选 "Use Sprite Mask" 与 "Normal Map"
  2. Sprite 设置 Normal Map 贴图(UV2 通道)
  3. 2D Light 设置 Blend Style(Multiply 或 Additive)
  4. 调整 Falloff / Intensity / Color

3.5 2D Light 的局限

  • 仅支持正交相机透视相机支持有限)。
  • 不支持阴影投射精灵不投射阴影到精灵上
  • 不支持法线贴图生成阴影

对独立游戏2D Light 已足够覆盖 90% 像素风需求

四、经典案例分析:《Noita》《Terraria》光照技术

4.1 《Noita》

《Noita》Nolla Games 2020是像素风 + 真实物理的代表光照方案

  • 每像素跟踪光路2D 光线追踪
  • 完全动态支持手电筒、爆炸、火焰
  • 性能中等同屏 100+ 光源

Xmohe 评估《Noita》光照是"像素风 + 实时光照"的天花板对独立游戏无需达到 Noita 程度但可借鉴"2D 像素 + 完整光照"的思路

4.2 《Terraria》

《Terraria》Re-Logic 2011是像素风的代表光照方案

  • 基于 tile 的光照每个 tile 有"光照值"
  • 玩家放置的火把用 Bresenham 圆算法传播光
  • 无 3D 计算纯 2D 数学

《Terraria》光照的优势极低性能开销几乎所有电脑都能跑Xmohe 借鉴对老电脑友好型独立游戏《Terraria》式 tile 光照是最佳选择

4.3 《星露谷物语》

《星露谷物语》ConcernedApe 2016是像素风 + 静态光照的代表光照方案每个时间段预设光照无动态光源优势无性能开销美术可控每个时段的"氛围"

五、混合方案:静态调色 + 动态高光

独立游戏最实用的方案静态调色盘为基础 + 动态高光补充既保持像素美学又有动态反馈

5.1 方案设计

  • 基础光照调色盘式4-8 种预设白天 / 黄昏 / 夜晚 / 室内)。
  • 动态光源火把、爆炸、闪光等特殊光源用 2D Light 实时计算
  • Normal Map仅主角与重要道具增加立体感

5.2 性能优势

混合方案

  • 大部分像素无光照计算直接用调色盘
  • 仅小范围区域用 2D Light 实时计算
  • 总开销纯 2D Light 的 30-50%

5.3 实战案例:俯视角像素 RPG

配置示例

  • 地图Terraria 式 tile 光照Bresenham 圆传播
  • 角色Normal Map + 2D Light 立体感
  • 火把玩家放置2D Light 实时
  • 特效爆炸闪光2D Light 短脉冲

六、初级用户路径:第一个像素风场景光照

  1. 导入或绘制像素精灵分辨率 32×32 或 64×64
  2. NormalPainter 工具生成 Normal Map
  3. 添加Sprite Renderer绑定 Base Color + Normal Map
  4. 添加Light 2D 节点设置光源颜色与范围
  5. 测试不同光源方向的效果调整 Normal Map 强度

这五步完成后你就有了一个有立体感的像素风场景不需要理解所有高级技术

七、中级用户路径:商业级像素风项目

7.1 商业级像素风工作流

  1. 美术提供多个调色盘变体白天 / 黄昏 / 夜晚 / 特殊)。
  2. 主角色与重要道具配 Normal Map。
  3. 实时光源仅用于关键动态元素火把、爆炸、技能)。
  4. 性能调优光源数量控制2D Light 距离衰减
  5. 跨平台测试,中端机 ≤ 2ms / 帧

7.2 性能基准

基于 Xmohe 联合 2 款像素风独立游戏的实测:

  • 10 个 2D Light + 100 精灵0.8ms / 帧
  • 30 个 2D Light + 300 精灵2.5ms / 帧
  • 60 个 2D Light + 600 精灵5ms / 帧中端机吃力

7.3 跨平台配置

  • PC完整 2D Light + Normal Map
  • 主机PC 方案 + 距离衰减
  • 移动端限制光源数 ≤ 20距离衰减
  • WebGL移动端方案 + 进一步降低

八、争议焦点:像素风是否需要 3D 光照

争议一:像素风是否需要 2D Light

反对派观点:"像素风应该用调色盘2D Light 破坏像素美学"。 支持派观点:"2D Light 让像素场景"活"是 Noita 级别体验的必需品"。

Xmohe 判断:看项目复古纯静态用调色盘,动态体验用 2D Light。

争议二:像素风是否使用 Normal Map

反对派观点:"Normal Map 让像素精灵"立体"破坏像素感"。 支持派观点:"Normal Map 让角色有"质感"不破坏像素美学"。

Xmohe 判断:Normal Map 在像素风项目中用于主角与重要道具不必全场景使用

争议三:是否用 3D 光照

反对派观点:"像素风 + 3D 光照 = 失去灵魂"。 支持派观点:"《Noita》用 2D 光线追踪效果惊艳"。

Xmohe 判断:2D 光线追踪如 Noita是像素风的天花板但大多数独立游戏不需要用 2D Light 已足够

Xmohe 编辑观点:像素风的光照不是"简化的 PBR"而是"独立的 2D 美学体系"理解这一点才能真正用好像素风光照《Noita》《Terraria》《星露谷》的共同点是都根据游戏类型选择最合适的光照方案而非盲目套用 PBR 思路独立游戏开发者应从这些案例中学习"如何选型"而非"如何抄作业"

关键词

像素风游戏光照 · 调色盘式光照 · 像素级 Normal Map · Unity 2D Lights · Sprite Light 2D · Freeform Light 2D · 像素精灵立体感 · Noita 光照 · Terraria tile 光照 · 像素风美学 · 2D Normal Map 工具

Xmohe 寄语

像素风游戏的光照不是"复古的反面"而是"另一种美学体系"《Noita》《Terraria》《星露谷》等独立游戏证明了像素风 + 光照可以并存且效果惊艳。 本篇系统拆解了像素风游戏光照的完整工程图谱:调色盘 vs 实时光照的美学像素级 Normal MapUnity 2D Lights经典案例分析混合方案

配合专题 02(PBR)、专题 21(写实场景)、专题 22(氛围情绪)、专题 25(光线追踪)——本专题已建立"像素风专属光照 + 通用光照"的完整知识图谱

Xmohe 作为中国独立游戏开发者的早期引路社群,希望这一篇"像素风光照工程师手册"能帮你的像素风项目找到"美学一致 + 视觉惊艳"的光照平衡在 Steam 评测里多出几条"氛围感拉满"的好评——这不仅是技术议题更是独立游戏在 AI 时代获得独特艺术认可的关键能力

文章标签
Unity 光照URP 光照HDRP 光照Global IlluminationLight Probes烘焙光照EnlightenLPPV实时GI独立游戏光照优化CSMShadow Map
更多专题全部专题
觉得有价值?点赞或收藏支持内容持续产出。
← 返回专题:Unity 光照技术精华专题