找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 265|回复: 1

[经验] Renpy岂是如此不便之物?使用光线步进渲染伪3D场景经验分享

[复制链接]
发表于 2026-2-9 02:07:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 mobi 于 2026-2-9 02:07 编辑

前些阵子发了一个视频,使用光线步进在Renpy中实现了一个类Minecraft方块沙盒游戏


我并非啥技术硬核大佬,所以我这篇文章主要就是分享我学习探索的思路和过程,希望能帮到有需要的人
一开始是看到了这位大佬在b站发的视频



了解到了一些伪3D的实现逻辑,后来去学习了一些早期3D游戏的制作方法,但没有深入去了解
再后来就是看到了这位大佬的视频,一下子让我打开了思路





接下来讲讲我的学习路径
已知
  • Renpy支持OpenGL,使用GLSL进行着色器编程
  • 通过着色器能够实现真3D渲染,也可以实现伪3D渲染
  • 已经有人成功实现了这些功能
我虽然知道Renpy支持OpenGL,但Renpy的OpenGL是哪个版本的这点尚不明确,不同版本的OpenGL支持的特性都不同。
OpenGL 1.x
固定管线
固定光照模型、固定材质、固定变换矩阵、即时模式绘制
OpenGL 2.x
可编程管线
引入 GLSL,支持顶点/片段着色器,可自定义光照和材质计算
OpenGL 3.x
现代OpenGL
废弃固定管线、Core Profile、FBO、实例化绘制、几何着色器
OpenGL 4.x
GPGPU + 高级图形
计算着色器、细分曲面、Direct State Access、多线程资源管理

于是最开始我先研究Renpy的OpenGL版本
通过查找资料以及程序测试,可以确定的是Renpy的图形渲染基于OpenGL 2,而且对于OpenGL 2的支持本身也是不完整的,是魔改过的残血版OpenGL 2
要在这个残血版OpenGL 2中实现3D渲染,就只有伪3D这一条路了
伪3D具体来讲就是在逻辑上运行3D,但在图形渲染上将3D世界映射到2D平面上以实现3D视觉效果
也被称作2.5D,这种技术在老游戏中尤为常见
ea7dd9af-ca42-4584-bd56-627cad039c57.png
模式7(Mode_7)
模式7是任天堂开发的一种2.5D图形技术,将平面地图扭曲投影的方式制造出深度感
2_压缩后.png
等距投影(Axonometric)
也就是常说的俯视角正交视图,古早RTS和CRPG常使用这种视角,到如今这种风格依然有人采用
3.png
光线投射(Ray casting)
游戏本质上是运行在一个2维空间中的,通过发射射线命中墙壁,在画面中绘制出有深有浅的竖线,从而创造深度感

然而这还是有点难以满足我对于画面表现的需求,于是在看了许多油管上的技术分享视频以及B站上的机翻视频之后,我终于找到了我想要的技术——光线步进(Ray marching)+ 有符号距离场(signed distance field)

4.png


具体的技术细节这里就不展开讲了,简单来讲这是一个近十年流行起来的一种图形技术,使用有符号距离场定义模型,然后用光线步进的方法渲染画面,原理上类似光线投射,但搭配上SDF能显示的画面细节比光线投射多
理论上讲甚至可以使用这个技术跑光追,godot最新版也加入了SDFGI,有符号距离场全局光照,性能友好,效果一点不差
最关键的是,实现这一切不需要高级图形API,OpenGL 2刚好就足够!!!

知道该使用什么技术之后,就到了具体实现的阶段了,我的技术力比较一般,glsl又是出了名的抽象难学,我当然不可能短时间内生啃这块硬骨头
于是我将我的具体需求整理好之后发给gemini进行实现,大约修改了两三次报错后,我就得到了在Renpy中可以运行的基于光线步进的类Minecraft体素游戏
5.jpg
之后我再花时间手动实现了基础的界面布局,音效,包括主界面的全景图旋转效果,于是就得到了这个结果
6.jpg
总结
虽然Renpy的渲染能力不如现代图形渲染管线那样高自由度,但至少我们比上世纪的游戏开发者拥有更好的硬件性能与学习资料,所以某种程度上也抵消了引擎本身带来的劣势
尤其是现如今AI工具的普及,即便像我这样只是网络上刷刷视频,看看文章,具体的技术细节与数学原理都不是特别懂的人,就能通过敲敲键盘让AI把活干了,不得不说是个了不得的时代啊

学习资料
Rencraft源码
1. 介绍 | Shadertoy中文教程

评分

参与人数 2活力 +300 干货 +6 收起 理由
Maz马 + 3 感谢分享!太强了!马上学!
被诅咒的章鱼 + 300 + 3 感谢分享!

查看全部评分

发表于 2026-2-14 15:41:27 | 显示全部楼层
本帖最后由 Maz马 于 2026-2-14 15:44 编辑

厉害!太强了!我也要学shader!
回复 支持 抱歉

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|RenPy中文空间 ( 苏ICP备17067825号|苏公网安备 32092302000068号 )

GMT+8, 2026-3-11 06:25 , Processed in 0.052736 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表