主要观点:
- 《Celeste》的很大一部分是其氛围,光照在其中起重要作用,且光照需与环境交互。
- 最初光照实现较复杂,通过为每个光构建网格来绘制,但有很多边缘情况和精度问题。
- 后来改用镂空实现,先将光的“聚光灯”绘制到纹理,再绘制表面的阴影投影,更简单但每个光需单独纹理。
- 进行单通道掩码优化,使每个光仅用一个纹理通道,可在一个纹理上绘制 4 个重叠光,进而减少纹理使用。
- 考虑到游戏是像素艺术,屏幕分辨率小,将所有光放在一个 2048x2048 的纹理网格中,能一次绘制所有光掩码且不频繁切换纹理,比网格实现更快,能在屏幕上同时显示大量光且影响小。
关键信息:
- 早期光照决定要与环境交互,简单“聚光灯”不行。
- 网格实现过程:为光创建表面列表并连接成网格,存在多种操作步骤和问题。
- 镂空实现:先画“聚光灯”到纹理,再画阴影投影“覆盖”,结果较好但需每个光单独纹理。
- 单通道掩码优化可在一个纹理上绘制更多光。
- 因游戏像素艺术特性,将光放在单个大纹理网格中,快速且影响小。
重要细节:
- 展示了网格实现和镂空实现的对比图。
- 说明单通道掩码在同一纹理上绘制 2 个光的示例。
- 给出最终在单个大纹理中放置 256 个光的效果图及相关说明。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。