# fast-raytracing **Repository Path**: cui-rongpei/fast-raytracing ## Basic Information - **Project Name**: fast-raytracing - **Description**: 编写高性能的Ray Tracing in One Weekend程序! - **Primary Language**: Unknown - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-05-07 - **Last Updated**: 2024-05-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # cuda实战-从零实现高性能光线追踪器 [项目视频](https://www.bilibili.com/video/BV16H4y1G7xx/?vd_source=fe6c1940458efae8fa34a9a71403d0b4) 编写高性能的Ray Tracing in One Weekend程序! NVIDIA 的全新图灵 GPU、RTX 技术和微软的 DirectX 光线追踪技术最近发布,激起了人们对光线追踪的新兴趣。使用这些技术极大地简化了使用光线追踪编写应用程序的能力。 但如果您对光线追踪的实际工作原理感到好奇怎么办?一种学习方法是编写自己的光线追踪引擎。您想使用 CUDA 构建在 GPU 上运行的光线追踪器吗?如果是这样,这篇文章适合你!您将一次性了解有关 CUDA 编程以及光线追踪的更多信息。 Peter Shirley 撰写了一系列有关光线追踪的精彩电子书,从在一个周末编写非常基础的知识到需要您一生研究的深入主题。您可以在 https://github.com/RayTracing/raytracing.github.io 找到有关这个项目的更多信息。在深入了解本文的其余部分之前,您应该坐下来阅读《一个周末的光线追踪》。这篇文章的每一节都对应于书中的一章。即使您不坐下来用 C++ 编写自己的光线追踪器,核心概念也应该让您开始使用 CUDA 的基于 GPU 的引擎。 在此项目中,您将了解以下内容: - 由 GPU 写入并由 CPU 读取的统一内存帧缓冲区 - 在 GPU 上启动渲染工作 - 编写可在 CPU 或 GPU 上运行的 C++ 代码 - 检查较慢的双精度浮点代码。 - C++ 内存管理。 在 GPU 上分配内存并在 GPU 上运行时实例化它。 - 使用 cuRAND 生成每线程随机数。 ## CUDA版高性能光线追踪器说明 os:本项目源自为[英伟达官方博客](https://developer.nvidia.com/blog/accelerated-ray-tracing-cuda/),此项目非常优质,不失为简历上的一个好项目。通过一步一步的将cpu程序应用cuda做并行,最终获得数百倍的性能提升,但鉴于是6年前的教程,而且目前cuda的发展日新月异,此项目旨在以实战为导向在巩固cuda知识的基础上,尽自己的主观能动性最大限度的压榨gpu的性能。 我的开发环境: - debian11.9 - cuda12.4 - GPU: Geforce RTX 750Ti - CPU: 44核88线程Intel(R) Xeon(R) CPU E5-2696 v4 @ 2.20GHz One Weekend 书中的 C++ 光线追踪引擎绝不是最快的光线追踪器,但将 C++ 代码转换为 CUDA 可以带来 数百 倍或更多的速度提升! 转换为 CUDA 的过程 让我们演练一下将 C++ 代码从One Weekend 中的光线追踪 。 请注意,当您完成 C++ 编码过程时,请考虑使用 git 标签或分支,以便您可以轻松返回到每一章的代码。 您可以将您的 C++ 代码与 Peter Shirley 的代码进行比较,网址为 https://github.com/RayTracing/raytracing.github.io 。 在尝试使用 CUDA 后,您还可以与我的 CUDA 代码进行比较: https://github.com/rogerallen/raytracinginoneweekendincuda 。 请务必使用我为每一章创建的分支。 (例如 git checkout ch12_where_next_cuda.) 请注意,我使用特定的 GTX 750Ti 卡构建 -gencode该卡的标志( -gencode arch=compute_50,code=sm_50),您可以自行查询您的配置,参考[不同capability显卡的arch](https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#compute-capability) 和[查询不同gpu的capability](https://developer.nvidia.com/cuda-gpus)。 您将需要在makefile中调整 架构 和 功能设置 您将运行的一个或多个 GPU 的 。 在我的 Makefile 中,您将使用的主要目标是构建可执行文件 make cudart以及用于运行和创建输出图像 make out.ppm. 编译运行 ``` cd fast-src make cudart make out.ppm ``` ## CPU版程序说明 构建说明 ``` cmake -B build cmake --build build ``` 参考资料: [Ray Tracing in One Weekend](https://github.com/RayTracing/raytracing.github.io) [Accelerated Ray Tracing in One Weekend in CUDA](https://developer.nvidia.com/blog/accelerated-ray-tracing-cuda/)