Project1

标题: 【预发布 | 震惊】60FPS! RMVA光线追踪渲染 [打印本页]

作者: 浮云半仙    时间: 2020-8-12 02:36
标题: 【预发布 | 震惊】60FPS! RMVA光线追踪渲染
本帖最后由 浮云半仙 于 2020-8-12 02:47 编辑

这是你从未见过的RGSS:


动态视频:
https://www.bilibili.com/video/BV12V411z7iW

[line]4[/line]

    通常在图形学中,光线追踪是一种在二维平面上呈现三维场景的一种渲染技术。人能够看到物体,是因为眼睛接受到了从物体传播到眼睛的光线。而光线追踪技术,就是通过反向追踪从眼睛开始的视线一直到光源的路径,并依照相关光学原理,沿该路径计算出最终可见到的颜色,从眼睛开始依次投射经过假想的二维观察屏上每一个像素的实现,最终就可以实现成像。此外,在无线通信领域也可以使用光线追踪技术追踪电磁波的传播路径并计算参考信号接收功率。
    传统的图形流水线成像,主要是通过投影变换计算出观察者观察三维物体的在二维平面上的投影坐标(这里的投影指的是高维物体在低维空间上的坐标表示),然后再完成着色。这种方法速度快,在20多年前就已经在GPU硬件上实现。但是这种成像方法对于光照效果的渲染,通常只能使用经验性的、局部的光照模型,也不能很好地绘制出反射,折射,透射等光学现像。
    光线追踪技术则模拟眼睛观察世界的方式,反向追踪眼睛看到的光线,而追踪光线的传播过程中,可以运用光学原理(例如根据BRDF(双向反射分布函数)较为精确地计算反射光强度分布,以及同时具有反射和折射特性的材料产生的菲涅尔效应)对光线的传播有更加切合实际的建模,从而得到视觉上更加真实的图像。
(图源https://github.com/ospray/OSPRay)
    一直以来阻碍光线追踪技术普及的就是它巨大的计算量,不过随着计算机硬件能力的提高(Nvidia RTX系列显卡的推出),高性能计算技术的逐渐普及(尤其是Nvidia的CUDA),以及光线跟踪算法不断的改进和完善(算法优化,硬件实现),编程接口的简化(D3D12 DXR, Vulkan, Nvidia OptiX等光线追踪编程接口),光线追踪原本是只能用在视频、电影的离线渲染的技术,现在也能够在个人电脑上进行实时光线追踪渲染了。
    我使用CUDA11自行实现了光线追踪算法,并提供接口给RGSS3调用(理论上RGSS1,2稍微改一下也能用),命名为RT-RGSS。我制作了视频中的RGSS光线追踪渲染Demo。 上面图片和视频中使用的是RTX2070显卡渲染的效果。
    RGSS有了光线追踪算法加持,就可以很简单地实现3D效果、镜面效果、碰撞检测等,可以离线渲染做特效(实时渲染对于显卡要求比较高,但是离线渲染一帧只需要一张Nvidia显卡就可以)。RGD也可以自己实现图形流水线绘制3D画面,但是对计算机图形学知识要求比较高,需要懂得各种坐标变换,然后编写shader完成。而使用RT-RGSS只需要向场景中放置几何体和光源,就可以实现3D渲染。上面那个有一只龙猫地场景,代码总共不过179行。
    实时光线追踪渲染·也必定是未来十年游戏和影音发展的方向。
[line]4[/line]
    本帖不是发布贴,只是一个预告帖,提供一个预览版,内有RT-RGSS ruby部分代码的源码和Demo的源码,以LGPL协议发布(具体见脚本内说明,仅限制代码二次发布必须以LGPL协议开源并发布,其余用途不限制)。
    正式版的发布可能还要一段时间,这一段时间内我会继续研究相关论文从算法和架构上优化性能,并完善相关文档(API文档,还有计算机图形学/光线追踪基本概念说明)。此外希望与RGD项目寻求合作,将图像直接渲染到RGD的高性能帧缓存中,进一步提高RT-RGSS在RGSS上的表现。

[line]2[/line]

附:
    RGSS3自身的渲染系统性能比较低,而且每渲染一帧都需要从GPU的显存将数据拷贝到主存。同样在我的电脑上,使用OpenGL完成图像输出时(高性能,而且无需从显存拷贝数据)该场景能达到70+fps,变换视角最低也能在30+fps,而RGSS3中最低时只有十几fps(如果结合RGD使用将改善这个问题)。
    这个龙猫场景中有6.7万个图元(三角形或球)。另一个场景我使用的是有90万个图元的模型,在初始状态能达到将近50fps。根据Lanza巨佬所说,游戏里面的场景一般用不到视频中那么精细的模型,都会大幅度降低这个精细程度的,最终一个人物角色的模型可能最后只有几百几千个图元。
    我的世界(Minecraft)有一个光线追踪版,有利用RTX显卡的硬件光线追踪能力以及DLSS(Nvidia基于深度学习的图像超分辨率+降噪技术。有评测视频显示在1080p分辨率下平均帧率在80左右。

预览版下载(因为论坛上传文件大小限制2M,我删掉了里面的RGSS301.dll然后7z极限压缩才能到2M以下...:
RT-RGSS3-RMVA.7z (1.11 MB, 下载次数: 64)
RGSS301.dll,下载解压后把RGSS301.dll放到游戏目录/System下
RGSS301.zip (1.03 MB, 下载次数: 56)
记得更新Nvidia显卡驱动(451.xx及以上)

GPURTRender0720.png (113.76 KB, 下载次数: 27)

GPURTRender0720.png

作者: 湖中神劍    时间: 2020-8-12 09:06
響應半雲的號召過來「水一水发表下意见」了。
該說不愧是半雲麼,好厲害。Ray Tracing我是完全不懂的。或许这就是大佬吧.jpg不過實時做這個對性能要求還是太高了吧,普及恐怕還得等一陣子。或者等Edge Computing普及了就沒有硬件瓶頸了。
RM引擎的性能本身是個問題吧,而且需要做這麼大型遊戲的人應該也不會用RM了。我覺得你可以考慮自己寫個3D引擎出來。
或者如果Windows本身的性能成問題的話就直接改用Taurix操作系統也是可以的。

作者: 浮云半仙    时间: 2020-8-12 09:19
湖中神劍 发表于 2020-8-12 09:06
響應半雲的號召過來「水一水发表下意见」了。
該說不愧是半雲麼,好厲害。Ray Tracing我是完全不懂的。 ...

是的。。。目前弄到RGSS里面,我主观上目的主要也是用来做3D特效,镜面效果什么的。。 如果说要用来做游戏,还有很多要做的,比如3D游戏对象管理,开放3D碰撞检测的接口。。。加入后,rgss本身的架构大概真的承受不住(
作者: RyanBern    时间: 2020-8-12 09:36
打死标题党。

散了吧散了吧,要 RTX 显卡的。

在 GTX 8 系列显卡上运行你就会发现是下面这样。

一帧不卡,两帧能玩,三帧流畅。

不过有一说一,胖云技术还是很醋的,课题组之光。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1