一幅实时渲染出来的画。
起点是 Ivan Shishkin 的《橡树林中的雨》(Rain in an Oak Forest,1891):细雨,薄雾,压低的土色,情绪留得很开,看的人会把自己的感受带进去。风景画常这么用天气,雨是悲伤,暴风雨是怒。Ruskin 把这叫“情感误置”,认为是个毛病。

在这个实时的版本里,天气由看的人自己来改。
场景里的那块画布
风景里立着一块画布,上面是实时渲染和油画混在一起的图像。天气一变,材质读到当前状态,就在晴天的画、阴天的画和实时场景之间慢慢过渡。
技术和画面是一起决定的:光线步进的云,会淋湿又会干回去的地面,还有把风显出来的草木。


天气是一种叙事手段。
这个项目把古典绘画的想法和实时图形放在一起,落点在天气和情绪。
生成的图像和原画
这个项目也在问:程序生成的图像和一幅画是什么关系?再创作和它所依据的原作又是什么关系?这片风景是着色器和模拟光照实时算出来的,但构图和打光都照着古典风景画来。场景里的画布把 Shishkin 的画和实时渲染放在一起,天气一变就从一个过渡到另一个,原作和再创作在同一个画面里就能比。天气是看的人定的,所以每看一次,画都不一样。
理论
- 多模态分析(Burn,2016)。天气是一种象征性的叙事工具,光线、云的厚薄、颜色的变化,都变成情绪的隐喻。
- 读者反应理论(Ryan,2003)。人是拿自己的经验去理解媒介的,所以项目关心的是每个玩家各自怎么读一个会变的天气系统,没有预设的唯一答案。
案例
《橡树林中的雨》(Rain in an Oak Forest,Shishkin,1891)
细雨,雾中的林子,压低的土色:安静,孤独,往里看。意思留得很开,看的人会把自己的感受投上去。
Red Dead Redemption 2(Rockstar,2018)
被雨泡透的地面,远山上的雾,环境里的雨声。暴风雨里走得更慢这类机制,把情绪和玩家的移动绑在一起。
技术研究
- 光线步进,做体积云、雾和大雨。
- 程序化着色器,做随天气变化的地面湿度、水洼和水的折射。
- Niagara,做雨、闪电和天气过渡,和场景里的事件同步。
- 自适应声音,跟着天气强度和玩家位置变。
设计与渲染。
艺术构想
设计是从古典风景画来的。天气过渡靠色调、光照强度和体积深度的变化来渲染,每种天气各担一个叙事角色:雨是忧郁,暴风雨是紧张,晴天是宁静。
选哪些天气
选雨、雾和暴风雨,一是它们在象征上对应悲伤、不确定和紧张,二是它们在视觉上拉得开。哪里对氛围有帮助,写实就往那里夸一点;过渡全部做了混合,不会突然一跳。
环境构成
- 模块化地景:树、石头和水景拼起来,世界可以跟着情绪的走向变。
- 昼夜循环:一套连续变化的时间系统,同时推着环境光和天空盒走,光影带着看的人经历这些变化。
- 开放探索:什么时候换天气,看的人自己决定。
技术美术本身就是作品
着色器和体积光照直接扛起视觉叙事。实时流水线、LOD 管理和优化过的 Niagara 效果保证帧率稳得住。



技术附录:系统、着色器和流水线
系统概览。

天气控制
- 输入:两个滑块,一个管天气(晴 / 阴 / 雨),一个管时间(白天 / 夜晚)。
- 云:颜色、密度和运动都由云管理器调。
- 地形:贴图、水洼和植被跟着当前状态变。
- 雨和雷:交给 Niagara。
- 光照:环境光和地景光照做了混合,一种天气滑进下一种。
体积云
光线步进算的是光穿过体积数据的路径,所以密度、光照和运动都能实时变。天空每次不一样,光穿过云层会出现丁达尔光束这样的效果。
动态地形
- 水洼:雨留下的最实在的痕迹。大小是动态的,正在下、刚下过和晴天,地面上看起来各不相同。
- 植被:风本身看不见,所以用顶点着色器让草木摆起来,风就显出来了。
- 按坡度贴图:地形向量判断一块地是平的还是斜的,据此选贴图,交界处用线性插值过渡。
雨和闪电
近处的雨用 CPU 算,这样能和可交互的物体做碰撞检测;远处和背景的雨用 GPU 算,省开销。闪电改了好几版。第一版只有一道光,于是加了一个屏幕空间点光源,让整个场景跟着亮一下,雷声在闪电之后一到三秒响。
实时渲染作为生成艺术
场景里的画布显示的是实时渲染和美术作品的混合。混合材质从界面读当前的天气值,在晴天的画、阴天的画和实时场景之间做线性插值,画面就跟着天空慢慢变。
测试与迭代
改动和下一步。
- 色彩校正:对照视频和照片里真实的天气,调整预设。
- 屏幕雨滴层:一个玻璃上的雨水效果,看的人能看到雨滴顺着镜头往下流,雨大了它也跟着变。
- 光照与环境混合器:再调一调参数,让氛围更鲜明。
后续
现在的画作整合靠的是算法叠加和混合。更好的做法是逐个分析画家的作品,给每位画家建一套材质函数和风格预设,再用这些去生成新的画。
之后还可以加测试环节:让参与者用模拟器,同时用参与式观察记录他们的情绪反应。另外是更多种天气,以及让玩家自己动手画。
静帧。





