/tiny-path-tracer

tiny path tracer

Primary LanguageC++MIT LicenseMIT

ray_tracer

A learning repo for https://raytracing.github.io/

ALL HONOR BELONGS TO Peter Shirley.

环境: Intel E2630 v4

目标

  • 完成三本ray tracer
  • cpu并行/移植到cuda上

其他

一点经验:

  • 并行很重要,越早实现越好。图形学里面debugger基本是残疾状态,除了诊断法向量之类的有点用。没有并行调试一次等半天。尤其是涉及到采样上的Bug, 采样数量不上来看不到Bug源头,没有实现并行效率会很低。

  • hard-code参数不可取。应该参数和代码分离。这里使用了ini作为配置文件,表达力比较弱, 不能嵌套结构。如果从头再来,我会使用有嵌套树状结构的配置文件(json, toml等,可以在配置文件里面定义渲染场景,场景和渲染部分解耦。hard-code参数会导致频繁重新编译代码。

渲染图片

cornell box(蒙特卡罗积分)

image目录有原图

  • 金属、玻璃球(1200x1200p, 2048samples,时长941秒)

cbox1

  • 传统cornell box

cbox2

其他有意思的结果/场景

  • ray tracing in one weekend(cpu并行,1600p x 1600p x 100 samples,渲染时长: 290s) one weekend

  • Bounding Volume Hierarchies优化 (CPU并行,1600p x 1600p x 300 samples,渲染时长: 80.1s)

BVH

  • perlin noise(柏林噪音)

perlin1

perlin2

  • sphere uv mapping

earth

  • cornell box(没有用Monte-Carlo,随机均匀采样,噪点有点严重)

box1

box2