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

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

微信图片_20220112115129.png


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


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


微信图片_20220112115131.png


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


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


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


微信图片_20220112115133.png


项目代码地址: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渲染四面体着色」

 

着色前:


微信图片_20220112115136.png


着色后:



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


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


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

 

微信图片_20220112115142.png


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

 

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

 

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

ASCII:你太可怜了」


微信图片_20220112115145.png


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

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


微信图片_20220112115147.png


参考链接:


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

相关文章
|
2月前
|
C++
C++ 语言异常处理实战:在编程潮流中坚守稳定,开启代码可靠之旅
【8月更文挑战第22天】C++的异常处理机制是确保程序稳定的关键特性。它允许程序在遇到错误时优雅地响应而非直接崩溃。通过`throw`抛出异常,并用`catch`捕获处理,可使程序控制流跳转至错误处理代码。例如,在进行除法运算或文件读取时,若发生除数为零或文件无法打开等错误,则可通过抛出异常并在调用处捕获来妥善处理这些情况。恰当使用异常处理能显著提升程序的健壮性和维护性。
51 2
|
2月前
|
算法框架/工具 C++ Python
根据相机旋转矩阵求解三个轴的旋转角/欧拉角/姿态角 或 旋转矩阵与欧拉角(Euler Angles)之间的相互转换,以及python和C++代码实现
根据相机旋转矩阵求解三个轴的旋转角/欧拉角/姿态角 或 旋转矩阵与欧拉角(Euler Angles)之间的相互转换,以及python和C++代码实现
111 0
|
10天前
|
存储 算法 C++
C++提高篇:泛型编程和STL技术详解,探讨C++更深层的使用
文章详细探讨了C++中的泛型编程与STL技术,重点讲解了如何使用模板来创建通用的函数和类,以及模板在提高代码复用性和灵活性方面的作用。
27 2
C++提高篇:泛型编程和STL技术详解,探讨C++更深层的使用
|
6天前
|
C++
继续更新完善:C++ 结构体代码转MASM32代码
继续更新完善:C++ 结构体代码转MASM32代码
|
6天前
|
C++ Windows
HTML+JavaScript构建C++类代码一键转换MASM32代码平台
HTML+JavaScript构建C++类代码一键转换MASM32代码平台
|
6天前
|
C++
2合1,整合C++类(Class)代码转换为MASM32代码的平台
2合1,整合C++类(Class)代码转换为MASM32代码的平台
|
6天前
|
前端开发 C++ Windows
C++生成QML代码与QML里面集成QWidget
这篇文章介绍了如何在C++中生成QML代码,以及如何在QML中集成QWidget,包括使用Qt Widgets嵌入到QML界面中的技术示例。
|
2月前
|
C++
拥抱C++面向对象编程,解锁软件开发新境界!从混乱到有序,你的代码也能成为高效能战士!
【8月更文挑战第22天】C++凭借其强大的面向对象编程(OOP)能力,在构建复杂软件系统时不可或缺。OOP通过封装数据和操作这些数据的方法于对象中,提升了代码的模块化、重用性和可扩展性。非OOP方式(过程化编程)下,数据与处理逻辑分离,导致维护困难。而OOP将学生信息及其操作整合到`Student`类中,增强代码的可读性和可维护性。通过示例对比,可以看出OOP使C++代码结构更清晰,特别是在大型项目中,能有效提高开发效率和软件质量。
23 1
|
2月前
|
C++
C++代码来计算一个点围绕另一个点旋转45度后的坐标
C++代码来计算一个点围绕另一个点旋转45度后的坐标
47 0
|
2月前
|
C++
Resharper c++ 使用Enter自动补全代码
Resharper c++ 使用Enter自动补全代码
33 0
下一篇
无影云桌面