Skip to content

zhangpiu/Renderer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Renderer

By zhangpiu

--- 一个C++实现的简单光线追踪渲染引擎,实现了局部光照(Local illumination),全局光照(Global illumination)。主要包括: 1. RayTrace: 一个简单的光线追踪渲染器,实现了局部光照 2. PathTrace: 一个简单的光线追踪渲染器,实现全局光照(via unbiased Monte Carlo path tracing); 3. PXM tools: 一个简单读写 PPM / PGM / PBM 图像格式的工具; 4. Image processing: 有关图像处理的工具,如 box blur, median blur, biliteral blur, etc.

一、Ray tracer

icm

1. Local Illumination

    这里参考了Milo大神的两篇博文:《用JavaScript玩转计算机图形学(一)光线追踪入门》《用JavaScript玩转计算机图形学(二)基本光源》。在原来的基础上加了一些改进,并用C++予以实现。以下展示一些渲染效果:

灯光渲染

  • 平行光光源

directionalLight

  • 点光源

pointLight

还可以添加多个光源

36lights

  • 聚光灯光源

spotLight

可以用聚光灯的效果渲染一个调色板

spotLightRGB

场景渲染

spheres

2. Global Illumination

    这里的全局光照算法是基于Mento Carlo的路径追踪算法,参考了Kevin Beason大神的经典之作《smallpt: Global Illumination in 99 lines of C++》,并作了一些改进。但由于加了一些类的封装等,有些对象的拷贝会增加额外的开销,本实现版本的速度其实不及原来的99行的实现,这里不准备再用牺牲可读性来换取时间的优化。

room

icm

About

A renderer based on ray tracing in C++.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published