文章摘要
作者感慨1990年的《模拟地球》游戏虽经典但技术陈旧,决定自行开发新一代地球模拟器。他放弃写信请求原开发者制作续作,转而投入数千小时自主开发,重点模拟板块构造、洋流等地球深层机制。本文分享了一年多来的开发历程和阶段性成果,尽管离目标尚远,但已取得满意进展。
文章总结
标题:在GPU上模拟行星:第一部分 —— Patrick Celentano
虽然经典游戏《模拟地球》依然可以运行,但32年来的计算技术进步却未能催生《模拟地球2》。作者在尝试过多边形分割和立方体贴图等传统方法后,最终转向了GPU计算着色器技术,实现了板块构造的初步模拟。文章详细记录了作者一年多的探索历程,包括:
- 多边形方法的局限
- 使用Delaunay三角剖分和Voronoi镶嵌技术生成球面多边形
- 在Unity/C#环境中发现多边形数量限制导致无法真实模拟板块碰撞
- 尝试C++/Vulkan方案后意识到开发自定义引擎的工程量过大
- GPU计算着色器突破
- 将计算任务从CPU转移到GPU
- 通过立方体贴图实现板块碰撞、俯冲和海床扩张的模拟
- 发现该方法无法实现地壳形变的缺陷
- 平滑粒子流体动力学(SPH)创新
- 受沙盘物理模拟启发,采用SPH技术模拟可变形的地壳粒子
- 克服计算着色器编程和调试的挑战
- 总结出"计算廉价而内存昂贵"的重要优化经验
项目展望包括: - 洋流可视化 - 大气环流云层模拟 - 完整的水循环系统(含雨影效应) - 洋流对气候的影响模拟 - 火山热点等地貌特征 - 硬件兼容性优化
作者表示这仅是系列文章的第一部分,后续将分享更多进展。完整模拟器可通过文末链接获取。
(注:原文中与主题关联较弱的内容如具体代码框架、外部链接、个人经历等细节已酌情删减,保留了技术路线的关键转折点和核心创新点。)
评论总结
总结评论内容:
- 对着色器编程的热情
- 认为着色器编程是最有趣的编程类型之一,语言简单且能获得直观的视觉效果
- "Low-level / relatively simple language, often tied to a satisfying visual result"("底层/相对简单的语言,通常能获得令人满意的视觉效果")
- "I am coding from the perspective of a single pixel"("我是从单个像素的角度进行编码")
- 对复杂模拟的挑战与展望
- 认为复杂模拟需要大量资源和团队协作,但看好GPU发展带来的可能性
- "I won't get even close to what I want, without having a big team at disposal"("没有一个大团队,我根本无法接近我想要的目标")
- "GPUs are on the rise and I am optimistic for the future"("GPU正在发展,我对未来持乐观态度")
- 对GPU能力的求知欲
- 希望更直观地了解GPU的能力边界
- "how many points can I move around?"("我可以移动多少个点?")
- 推荐相关技术资源
- 推荐了tectonics.js博客作为板块构造模拟的优质参考
- "some really incredible write-ups on how to do proper simulation of plate tectonics"("关于如何正确模拟板块构造的一些非常棒的文章")
- 对项目进展的关注
- 认为项目很有野心但似乎没有后续
- "it's really starting from the basics, simulating tectonic plates"("它确实是从基础开始,模拟构造板块")
- "there never was a Part 2, was it?"("从来没有第二部分,是吗?")