用 Rust 手写光线追踪器优化游戏天空

Rendering pretty sky in Around The World game

用 Rust 手写光线追踪器优化游戏天空

在开发 Around The World 游戏时,我发现 pbray 生成的云层光照表无法模拟多重散射,导致云层底部过暗。于是我亲手用 Rust 写了一个多线程递归蒙特卡洛光线追踪器来验证并生成新的查找表,显著改善了云层的通透感。此外,我还通过调整 Godot 中的法线方向来模拟云层接收的天空漫反射,让云朵在日出日落时呈现出更自然的粉蓝色调。最后,通过调整大气散射计算顺序和 tone mapping 参数,解决了地平线泛黄和 HDR 过曝问题,并构建了一个虚拟天体仪(orrery)系统来精确模拟昼夜与季节变化。

好奇心最终战胜了我,我确实用 Rust 写了一个多线程递归蒙特卡洛光线追踪器。
  1. wyrdcurt

    哇,太棒了,谢谢分享。我目前正在开发一款游戏,和这个有些相似(至少在“包含海洋航行”这一点上)。就在这个星期,我还在 Godot 里写天空着色器,云还没做出来。那一系列文章看起来对我的兴趣点很有参考价值……海洋/波浪渲染也在我的待办清单上。

    游戏本身听起来很有趣,很期待能玩到。

    > “在地球上,探索往往意味着残酷的剥削和暴力,其影响至今仍能感受到……然而,这款游戏并不关乎这些;它展示了如果人们能更友善地对待彼此,事情本可以如何发展。”

    我超爱这个概念。我构建的世界几乎与这个相反,将现实中地球肆无忌惮的剥削推演到逻辑终点,并挑战玩家在废墟中寻找更好的生存之道。尽管我们的切入点不同,但我想我们都在试图构想这个世界如何变得更好,而不是屈从于阴郁无助的末日论调。我们需要更多这样的虚构作品。

  2. shrx

    光线也会从地球反射回天空,例如在水面上方。

  3. kylecazar

    等游戏做好了我很想玩。我平时不怎么玩游戏,但最近刚在 Steam 上搜过开放世界帆船/探索类游戏。

    听起来正是我在找的……真是奇怪的巧合。

同日更多故事

2026-10-17