Skip to content

本项目参考自教程《Ray Tracing in One Weekend》,使用CPU多线程加速,结合ImGUI显示渲染结果。

License

Notifications You must be signed in to change notification settings

maijiaquan/ray-tracing-with-imgui

Repository files navigation

RayTracing

项目介绍

本项目参考自教程《Ray Tracing in One Weekend》,使用了ImGUI的图形化界面框架,使用官方自带的一个OpenGL2的例子,目的是用直接绘制的方法,在屏幕上逐像素输出整张图片。目前在MacOS(Xcode 10.3)和Windows(Visual Studio 2015)环境中上能顺利运行,其他环境待测试。

笔记目录:
《用两天学习光线追踪》1.项目介绍和ppm图片输出
《用两天学习光线追踪》2.射线、简单相机和背景输出
《用两天学习光线追踪》3.球体和表面法向量
《用两天学习光线追踪》4.封装成类
《用两天学习光线追踪》5.抗锯齿
《用两天学习光线追踪》6.漫反射材质
《用两天学习光线追踪》7.反射向量和金属材质
《用两天学习光线追踪》8.折射向量和电介质
《用两天学习光线追踪》9.可放置相机
《用两天学习光线追踪》10.散焦模糊

因为直接搬运了ImGUI的opengl2的例子,所以整个工程都是ImGUI的,核心代码放在:/examples/example_glfw_opengl2/ 每一节的内容会放到一个main.cpp文件中。每个mainX.cpp都是一个基于上一个文件,增加新的特性。

MacOS运行环境

要想运行相应例子,只需修改makefile中第18行的文件名,然后编译, 例如:

SOURCES = main8.cpp

修改后,在命令行中进入makefile同级目录,执行make,然后运行同级目录下生成的的example_glfw_opengl2

Windows运行环境

运行\example\imgui_examples.sln,然后将对应小节的mainX.cpp的代码粘贴到main.cpp里面。 (支持visual studio 2015,其他版本未测试)

运行效果

小节 描述 效果
main1.cpp 多线程和ppm图片输出
main2.cpp 射线、简单相机和背景输出
main3.cpp 多线程和ppm图片输出
main4.cpp 封装成类
main5.cpp 抗锯齿
main6.cpp 漫反射材质
main7.cpp 反射向量和金属材质
main8.cpp 折射向量和电介质
main9.cpp 可放置相机
main10.cpp 散焦模糊
main11.cpp 随机场景的最终效果

About

本项目参考自教程《Ray Tracing in One Weekend》,使用CPU多线程加速,结合ImGUI显示渲染结果。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published