2020年4月7日
摘要: 类声明: #pragma once #ifndef __CAMERA_HEADER__ #define __CAMERA_HEADER__ #include "../utilities/geometry.h" class World; class Camera { public: Camera(); 阅读全文
posted @ 2020-04-07 00:52 dalgleish 阅读(434) 评论(0) 推荐(0) 编辑
  2020年3月31日
摘要: 同心映射的算法原理如下图,具体阐述参考书籍: 由于同心映射是针对于samples这个数组的映射,所以只需要修改samples这个数组的数据就行了。 需要修改的Sampler类: #pragma once #ifndef __SAMPLER_HEADER__ #define __SAMPLER_HEA 阅读全文
posted @ 2020-03-31 11:12 dalgleish 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 原理参照书籍 类声明: #pragma once #ifndef __HAMMERSLEY_HEADER__ #define __HAMMERSLEY_HEADER__ #include "sampler.h" class Hammersley :public Sampler { public: H 阅读全文
posted @ 2020-03-31 09:33 dalgleish 阅读(488) 评论(0) 推荐(0) 编辑
摘要: 类声明: #pragma once #ifndef __NROOKS_HEADER__ #define __NROOKS_HEADER__ #include "sampler.h" class NRooks :public Sampler { public: NRooks(); ~NRooks(); 阅读全文
posted @ 2020-03-31 08:47 dalgleish 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 多重抖动在书上说的是水平和竖直方面随机交换。 类声明: #pragma once #ifndef __MULTIJITTERED_HEADER__ #define __MULTIJITTERED_HEADER__ #include "sampler.h" class MultiJittered :p 阅读全文
posted @ 2020-03-31 07:52 dalgleish 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 抖动采样算法测试,小图形看不出什么明显区别,还是上代码和测试图吧。 类声明: #pragma once #ifndef __JITTERED_HEADER__ #define __JITTERED_HEADER__ #include "sampler.h" class Jittered:public 阅读全文
posted @ 2020-03-31 05:59 dalgleish 阅读(388) 评论(0) 推荐(0) 编辑
摘要: 此是随机采样算法,效果感觉一般般。 类声明: #pragma once #ifndef __PURERANDOM_HEADER__ #define __PURERANDOM_HEADER__ #include "sampler.h" class PureRandom :public Sampler 阅读全文
posted @ 2020-03-31 05:45 dalgleish 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 这个算法是均匀采样算法,继承于Sampler类。 类声明: #pragma once #ifndef __REGULAR_HEADER__ #define __REGULAR_HEADER__ #include "sampler.h" class Regular :public Sampler { 阅读全文
posted @ 2020-03-31 05:23 dalgleish 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 此是所有采样的基类,这样定义的好处是,我们可以分别测试每一个采样算法。 类定义: #pragma once #ifndef __SAMPLER_HEADER__ #define __SAMPLER_HEADER__ #include "../utilities/geometry.h" class S 阅读全文
posted @ 2020-03-31 04:57 dalgleish 阅读(482) 评论(0) 推荐(0) 编辑
摘要: World类其他都一样的,就修改build函数就行了,以后测试所有代码,都是基于两个或多个球体的,不再重复阐述。 void World::build() { vp.set_hres(200); vp.set_vres(100); tracer_ptr = new MultiSphere(this); 阅读全文
posted @ 2020-03-31 04:23 dalgleish 阅读(163) 评论(0) 推荐(0) 编辑