重制《Celeste》的照明

主要观点:

  • 《Celeste》的很大一部分是其氛围,光照在其中起重要作用,且光照需与环境交互。
  • 最初光照实现较复杂,通过为每个光构建网格来绘制,但有很多边缘情况和精度问题。
  • 后来改用镂空实现,先将光的“聚光灯”绘制到纹理,再绘制表面的阴影投影,更简单但每个光需单独纹理。
  • 进行单通道掩码优化,使每个光仅用一个纹理通道,可在一个纹理上绘制 4 个重叠光,进而减少纹理使用。
  • 考虑到游戏是像素艺术,屏幕分辨率小,将所有光放在一个 2048x2048 的纹理网格中,能一次绘制所有光掩码且不频繁切换纹理,比网格实现更快,能在屏幕上同时显示大量光且影响小。

关键信息:

  • 早期光照决定要与环境交互,简单“聚光灯”不行。
  • 网格实现过程:为光创建表面列表并连接成网格,存在多种操作步骤和问题。
  • 镂空实现:先画“聚光灯”到纹理,再画阴影投影“覆盖”,结果较好但需每个光单独纹理。
  • 单通道掩码优化可在一个纹理上绘制更多光。
  • 因游戏像素艺术特性,将光放在单个大纹理网格中,快速且影响小。

重要细节:

  • 展示了网格实现和镂空实现的对比图。
  • 说明单通道掩码在同一纹理上绘制 2 个光的示例。
  • 给出最终在单个大纹理中放置 256 个光的效果图及相关说明。
阅读 12
0 条评论