https://preview.redd.it/h1e64thc28oh1.png?width=1920&format=png&auto=webp&s=4ee7a386f69e41d6712f51b385f5a2b8a43fb98e
我想分享在 GameMaker 中为一个行星创建的过程,这是为了我正在开发的地形改造游戏 Planet Doctor。这篇文章面向有一定 GameMaker 经验的读者,我已经在必要时附上了相关链接。如果术语或内容有误,欢迎指正。希望对你有所帮助!
过程如下:
1. 使用顶点缓冲区创建一个框架
https://i.redd.it/ecopxjn7w7oh1.gif
为行星创建一个球体形状。为了模拟旋转,我倾斜了摄像机角度,并使用 matrix_set 旋转行星。
2. 为行星添加噪点
https://i.redd.it/93osjp1jw7oh1.gif
在 vertex_submit 过程中,使用着色器根据行星的 v_vLocalPos 渲染平滑噪点。你可以看到值从 0(黑色)到 1(最亮)变化。
3. 划分颜色
https://i.redd.it/ywbj72a8y7oh1.gif
设定边界来分离陆地与海洋。我将 0-1 的颜色范围划分为 4 个步进,每个步进返回一个单一的纯色。
4. 分配颜色
https://i.redd.it/u7mec47hy7oh1.gif
绘制行星的颜色。着色器通过 shader_set_uniform 接收颜色,并将其分配给“步骤 3”中划分的每个步进。
5. 绘制云层
https://i.redd.it/29mcokory7oh1.gif
添加云层以营造大气感。使用矩阵缩放“步骤 1”中的顶点缓冲区,然后像“步骤 2”那样使用另一个着色器应用噪点。低于噪点阈值的值变为纯色,高于阈值则变为透明。你可以使用 current_time 让云层形状逐渐变化。
- 添加大气层
https://i.redd.it/825ptv4kz7oh1.gif
创建一个稍大的球体来代表大气层。通过在顶点着色器中获取 gm_Matrices[MATRIX_WORLD] 的位置和法线,我仅在片段着色器中绘制了轮廓(这就是菲涅耳效应)。
你可以创建更多变体,例如使用 current_time 实现海洋潮汐,或在行星的暗面添加城市灯光。请告诉我你在 GameMaker 中制作的 3D 项目,或者任何你想实现的行星构思。感谢阅读。
评论 (0)