「平淡无奇小天才」:两块C++代码结合ASCII码,即可实现Nvidia光线追踪技术

2021-02-12 13:02:54 浏览数 (1)


新智元报道

来源:外媒

编辑:keyu

【新智元导读】最近,Reddit上一则项目帖子引起了大家的热烈关注,此项目利用ASCII码实现了光线追踪技术,而众所周知,这项技术原本是只有Nvidia显卡才能做到的。不仅如此,整个项目的代码还非常的简洁。看到这里,想试试吗?

近期,有国外大神利用ASCII码,完成了Nvidia显卡才能实现的光线追踪技术,并实现了不错的光影效果。

下面是光线追踪的效果示意:

该项目一经过发出,在Reddit上的热度就达到了2.1K,演示视频在Youtube上的观看量也达到了3万多次。

代码结构简单,可在任何系统上运行

代码本身结构非常地简单:

项目代码地址:https://github.com/DinoZ1729/Ray

而要想在自己电脑上运行,整个过程也非常的方便:

只需要在控制台中将字体改为8,就可以实现在Windows上的运行。

如果想在Linux或者其他操作系统上运行,那么只需要加上修改几行代码的步骤就可以了。

像素级别光线透射,相关项目惹人瞩目

那看到这里,很多人都会好奇,具体实现过程是什么的呢?

作者原话是这么说的:

「I shot a ray through each pixel and then let it bounce」

意思是什么呢?

让每个像素都被光线穿过,并让光线进行了反弹

为了进一步解释这个过程,作者还放上了两个相关视频和项目链接:

其中一个是用C 实现的「ASCII地球旋转」

代码地址:https://github.com/DinoZ1729/Earth

另一个是「ASCII渲染四面体着色」

着色前:

着色后:

项目地址:https://github.com/DinoZ1729/Renderer

网友反应热烈,连调侃都「精辟到位」

在项目和演示视频下的评论区,有许多网友都表示了兴趣和称赞:

也有不少网友表示「希望自己的编程课可以教这些」,还有些网友说:「这个项目激励了我继续学习C 」。

除此之外,有趣的是,不少网友开始了调侃:

「Nvidia:我们有实时光线追踪!

ASCII:你太可怜了」

「玩家:我买了一个RTX 3080用于射线追踪!

控制台 :嗯,我可以用ASCII码做这个」

参考链接:

https://www.reddit.com/r/programming/comments/l3xpt4/ray_tracing_using_ascii/

0 人点赞