A downloadable tool for Windows

A CPU-based raytracer.  Chinese and English supported. I leared raytracing from the famous "Ray Tracing in a Weekend" series. The glass material in the shown pictures is buggy. I did not delete those pictures because it costs time to render them.

(更新: 现在这里更新了一个多线程的版本. 效率大大提升. 很可惜这两个版本使用的 3D 模型文件是不兼容. 非常抱歉这里的版本管理一团糟, 我也有点懒得管了. 另外我又发现这里面是有 bug 的,不推荐用这个版本哈哈.)

这是一个简单光线追踪渲染器, 它可以渲染简单的 3D 模型, 支持哑光, 金属, 玻璃, 烟雾, 凝胶等材质, 支持光源, 支持纹理映射. 用户可以用脚本语言编辑场景, 并在实时模式下调整物体和摄像机的方位与朝向, 在准备就绪后用户可以开启离线模式进行长时间的渲染得到高画质的图像.

这个渲染器只支持格式为 ".3d" 的 3D 模型文件, 目前只有我制作的程序 "3D 模型编辑器" 能够生成这样的文件. 这个渲染器生成的图片也是独有的 ".tile" 的格式, 也只有我制作的程序支持这样的格式. 可以在我的 itch.io 主页上找到支持这些格式的程序.

为了能够支持法向量线性插值, 我在做这个项目时对 "3D 模型编辑器" 进行了更新, 这个更新还没有在 itch.io 上传. 只是用这个页面上的版本的话, 环面和杯子模型都会无法正常渲染. 有时间的话我会上传的, 如果你真的很需要使用更新的模型编辑器的话, 请留下评论.

这个程序目前还没有一个完备的教程, 它的操作对用户来说也完全算不上友好, 事实上你很容易让这个程序卡死或者崩溃掉. 要了解如何使用这个程序, 可以在 "全局" 面板中加载程序自带的示例存档, 并在这些存档的基础上合理修改各项参数.

我制作这个程序使用的教材是 "Ray Tracing in a Weekend" 系列, 地址: https://raytracing.github.io/. 我觉得这个系列不管是在光线追踪还是 c++ 编程方面都是非常优秀的教材.

我写这个程序只是出于学习用途, 它目前还有很多缺陷: 在有光源的情形, 由于一些技术原因无法对凝胶状的材质进行重要性采样, 大大增加了其渲染时间; 这个渲染器只是一个 CPU 单线程的程序, 完全没有利用到 GPU; 由于实现较为麻烦, 目前还无法对非球形光源进行重要性采样; 为了使得音乐能在帧率突变时也能流畅运行, 这个程序的声音播放延迟较高, 执行的静音操作可能会在几秒钟后才有响应, 我还不知道怎么去改进这个问题

这个程序的用户体验不会很好, 事实上它就是 "用户友好" 的反义词: 它完全没有版本管理, 同样扩展名的文件很可能有完全不同的内部格式; 它只支持固定的分辨率, 使用分辨率较低的机器时很可能会显示不全; 它几乎没有异常处理, 用户的非法或极端输入几乎肯定会造成程序崩溃或者卡死; UI 非常的不人性化, 程序使用的脚本语言几乎没有规范可言; 程序中物体旋转和平移的实现比较简陋, 调整起来比较不方便; 等等. 我没有花精力改善用户体验这方面是因为这是一件性价比极低的事情: 几乎就没有用户. 如果这件事真的困扰到了你, 请留下评论或者联系我.

这个页面中展示的玻璃材质的截图是有 bug 的, 它呈现的效果并不符合真实光学规律. 这个 bug 已经得到了修复, 但是由于布置场景和渲染图片会花费很多精力和时间, 而且这些图片看起来其实也还不错, 因此我还是保留了这些图片.

源代码在这里: https://github.com/ZhangYH2000/RayTracing230821

一个实机演示视频: https://www.bilibili.com/video/BV1nj411m77n

StatusReleased
CategoryTool
PlatformsWindows
AuthorZhangYH
GenreSimulation
Tags3D

Download

Download
RayTracer.zip 128 MB
Download
光线追踪渲染器 - 多线程.zip 42 MB

Leave a comment

Log in with itch.io to leave a comment.