近期,有国外大神利用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/