Advertisement
Guest User

Untitled

a guest
Oct 19th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.50 KB | None | 0 0
  1. diff --git a/main.cpp b/main.cpp
  2. index bec1ef8..dcbd116 100644
  3. --- a/main.cpp
  4. +++ b/main.cpp
  5. @@ -158,10 +158,12 @@ public:
  6. class LightMaterial : public BaseMaterial {
  7. public:
  8. vector<vector<vec3> > &ColorMap;
  9. + vector<vector<vec3> > &Color2Map;
  10. vector<vector<int> > &SamplesCount;
  11. - LightMaterial(vector<vector<vec3> > &CM, vector<vector<int> > &SC, vec3 col ) :ColorMap(CM), SamplesCount(SC), BaseMaterial(col){};
  12. + LightMaterial(vector<vector<vec3> > &CM, vector<vector<vec3> > &C2M, vector <vector<int> > &SC, vec3 col) :ColorMap(CM), Color2Map(C2M), SamplesCount(SC), B aseMaterial(col){};
  13. void process(Ray &ray, vec4 pi, vec4 N) {
  14. ColorMap[ray.getCoords().x][ray.getCoords().y] += ray.getCol() * color;
  15. + Color2Map[ray.getCoords().x][ray.getCoords().y] += (ray.getCol() * colo r) * (ray.getCol() * color);
  16. ++SamplesCount[ray.getCoords().x][ray.getCoords().y];
  17. ray.make_invalid();
  18. }
  19. @@ -276,7 +278,9 @@ int main(int argc, char* argv[]) {
  20. :...skipping...
  21. diff --git a/main.cpp b/main.cpp
  22. index bec1ef8..dcbd116 100644
  23. --- a/main.cpp
  24. +++ b/main.cpp
  25. @@ -158,10 +158,12 @@ public:
  26. class LightMaterial : public BaseMaterial {
  27. public:
  28. vector<vector<vec3> > &ColorMap;
  29. + vector<vector<vec3> > &Color2Map;
  30. vector<vector<int> > &SamplesCount;
  31. - LightMaterial(vector<vector<vec3> > &CM, vector<vector<int> > &SC, vec3 col) :ColorMap(CM), SamplesCount(SC), BaseMaterial(col){};
  32. + LightMaterial(vector<vector<vec3> > &CM, vector<vector<vec3> > &C2M, vector<vector<int> > &SC, vec3 col) :ColorMap(CM), Color2Map(C2M), SamplesCount(SC), BaseMaterial(col){};
  33. void process(Ray &ray, vec4 pi, vec4 N) {
  34. ColorMap[ray.getCoords().x][ray.getCoords().y] += ray.getCol() * color;
  35. + Color2Map[ray.getCoords().x][ray.getCoords().y] += (ray.getCol() * color) * (ray.getCol() * color);
  36. ++SamplesCount[ray.getCoords().x][ray.getCoords().y];
  37. ray.make_invalid();
  38. }
  39. @@ -276,7 +278,9 @@ int main(int argc, char* argv[]) {
  40. Config::get().set_config(argc, argv);
  41.  
  42. vector<vector<vec3> > ColorMap(Config::get().width, vector<vec3>(Config::get().height, vec3(0)));
  43. + vector<vector<vec3> > Color2Map(Config::get().width, vector<vec3>(Config::get().height, vec3(0)));
  44. vector<vector<int> > SamplesCount(Config::get().width, vector<int>(Config::get().height, 0));
  45. + vector<vector<bool> > pixel_valid(Config::get().width, vector<bool>(Config::get().height, 0));
  46.  
  47. float cube_a = 10;
  48. float pir_a = 4;
  49. @@ -312,10 +316,10 @@ int main(int argc, char* argv[]) {
  50. vec4(-cube_a, -cube_a, -cube_a, 1)}, make_unique<DiffuseMaterial>(white)),
  51.  
  52. Triangle({vec4(-2, cube_a - 1, 2, 1), vec4(2, cube_a - 1, 2, 1),
  53. - vec4(2, cube_a - 1, -2, 1)}, make_unique<LightMaterial>(ColorMap, SamplesCount, white)),
  54. + vec4(2, cube_a - 1, -2, 1)}, make_unique<LightMaterial>(ColorMap, Color2Map, SamplesCount, gray)),
  55.  
  56. Triangle({vec4(-2, cube_a - 1, 2, 1), vec4(2, cube_a - 1, -2, 1),
  57. - vec4(-2, cube_a - 1, -2, 1)}, make_unique<LightMaterial>(ColorMap, SamplesCount, white)),
  58. + vec4(-2, cube_a - 1, -2, 1)}, make_unique<LightMaterial>(ColorMap, Color2Map, SamplesCount, gray)),
  59.  
  60. Triangle({vec4(5 + 0, pir_a, 0, 1), vec4(5 + -pir_a, -1, pir_a, 1),
  61. vec4(5 + pir_a, -1, pir_a, 1)}, make_unique<TransparentMaterial>(yellow, 1.25)),
  62. @@ -335,17 +339,17 @@ int main(int argc, char* argv[]) {
  63. Triangle({vec4(5 + -pir_a, -1, pir_a, 1), vec4(5 + -pir_a, -1, -pir_a, 1),
  64. vec4(5 + pir_a, -1, -pir_a, 1)}, make_unique<TransparentMaterial>(yellow, 1.25))};
  65.  
  66. -
  67. -
  68. bitmap_image image(Config::get().width, Config::get().height);
  69.  
  70. image.clear();
  71.  
  72. -
  73. :
  74. diff --git a/main.cpp b/main.cpp
  75. index bec1ef8..dcbd116 100644
  76. --- a/main.cpp
  77. +++ b/main.cpp
  78. @@ -158,10 +158,12 @@ public:
  79. class LightMaterial : public BaseMaterial {
  80. public:
  81. vector<vector<vec3> > &ColorMap;
  82. + vector<vector<vec3> > &Color2Map;
  83. vector<vector<int> > &SamplesCount;
  84. - LightMaterial(vector<vector<vec3> > &CM, vector<vector<int> > &SC, vec3 col ) :ColorMap(CM), SamplesCount(SC), BaseMaterial(col){};
  85. + LightMaterial(vector<vector<vec3> > &CM, vector<vector<vec3> > &C2M, vector <vector<int> > &SC, vec3 col) :ColorMap(CM), Color2Map(C2M), SamplesCount(SC), B aseMaterial(col){};
  86. void process(Ray &ray, vec4 pi, vec4 N) {
  87. ColorMap[ray.getCoords().x][ray.getCoords().y] += ray.getCol() * color;
  88. + Color2Map[ray.getCoords().x][ray.getCoords().y] += (ray.getCol() * colo r) * (ray.getCol() * color);
  89. ++SamplesCount[ray.getCoords().x][ray.getCoords().y];
  90. ray.make_invalid();
  91. }
  92. @@ -276,7 +278,9 @@ int main(int argc, char* argv[]) {
  93. :
  94. diff --git a/main.cpp b/main.cpp
  95. index bec1ef8..dcbd116 100644
  96. --- a/main.cpp
  97. +++ b/main.cpp
  98. @@ -158,10 +158,12 @@ public:
  99. class LightMaterial : public BaseMaterial {
  100. public:
  101. vector<vector<vec3> > &ColorMap;
  102. + vector<vector<vec3> > &Color2Map;
  103. vector<vector<int> > &SamplesCount;
  104. - LightMaterial(vector<vector<vec3> > &CM, vector<vector<int> > &SC, vec3 col) :ColorMap(CM), Sa mplesCount(SC), BaseMaterial(col){};
  105. + LightMaterial(vector<vector<vec3> > &CM, vector<vector<vec3> > &C2M, vector<vector<int> > &SC, vec3 col) :ColorMap(CM), Color2Map(C2M), SamplesCount(SC), BaseMaterial(col){};
  106. void process(Ray &ray, vec4 pi, vec4 N) {
  107. ColorMap[ray.getCoords().x][ray.getCoords().y] += ray.getCol() * color;
  108. + Color2Map[ray.getCoords().x][ray.getCoords().y] += (ray.getCol() * color) * (ray.getCol() * color);
  109. ++SamplesCount[ray.getCoords().x][ray.getCoords().y];
  110. ray.make_invalid();
  111. }
  112. @@ -276,7 +278,9 @@ int main(int argc, char* argv[]) {
  113. Config::get().set_config(argc, argv);
  114.  
  115. vector<vector<vec3> > ColorMap(Config::get().width, vector<vec3>(Config::get().height, vec3(0) ));
  116. :
  117. diff --git a/main.cpp b/main.cpp
  118. index bec1ef8..dcbd116 100644
  119. --- a/main.cpp
  120. +++ b/main.cpp
  121. @@ -158,10 +158,12 @@ public:
  122. class LightMaterial : public BaseMaterial {
  123. public:
  124. vector<vector<vec3> > &ColorMap;
  125. + vector<vector<vec3> > &Color2Map;
  126. vector<vector<int> > &SamplesCount;
  127. - LightMaterial(vector<vector<vec3> > &CM, vector<vector<int> > &SC, vec3 col) :ColorMap(CM), SamplesCoun t(SC), BaseMaterial(col){};
  128. + LightMaterial(vector<vector<vec3> > &CM, vector<vector<vec3> > &C2M, vector<vector<int> > &SC, vec3 col ) :ColorMap(CM), Color2Map(C2M), SamplesCount(SC), BaseMaterial(col){};
  129. void process(Ray &ray, vec4 pi, vec4 N) {
  130. ColorMap[ray.getCoords().x][ray.getCoords().y] += ray.getCol() * color;
  131. + Color2Map[ray.getCoords().x][ray.getCoords().y] += (ray.getCol() * color) * (ray.getCol() * color);
  132. ++SamplesCount[ray.getCoords().x][ray.getCoords().y];
  133. ray.make_invalid();
  134. }
  135. @@ -276,7 +278,9 @@ int main(int argc, char* argv[]) {
  136. Config::get().set_config(argc, argv);
  137.  
  138. vector<vector<vec3> > ColorMap(Config::get().width, vector<vec3>(Config::get().height, vec3(0)));
  139. + vector<vector<vec3> > Color2Map(Config::get().width, vector<vec3>(Config::get().height, vec3(0)));
  140. vector<vector<int> > SamplesCount(Config::get().width, vector<int>(Config::get().height, 0));
  141. :
  142. diff --git a/main.cpp b/main.cpp
  143. index bec1ef8..dcbd116 100644
  144. --- a/main.cpp
  145. +++ b/main.cpp
  146. @@ -158,10 +158,12 @@ public:
  147. class LightMaterial : public BaseMaterial {
  148. public:
  149. vector<vector<vec3> > &ColorMap;
  150. + vector<vector<vec3> > &Color2Map;
  151. vector<vector<int> > &SamplesCount;
  152. - LightMaterial(vector<vector<vec3> > &CM, vector<vector<int> > &SC, vec3 col) :ColorMap(CM), SamplesCoun t(SC), BaseMaterial(col){};
  153. + LightMaterial(vector<vector<vec3> > &CM, vector<vector<vec3> > &C2M, vector<vector<int> > &SC, vec3 col ) :ColorMap(CM), Color2Map(C2M), SamplesCount(SC), BaseMaterial(col){};
  154. void process(Ray &ray, vec4 pi, vec4 N) {
  155. ColorMap[ray.getCoords().x][ray.getCoords().y] += ray.getCol() * color;
  156. + Color2Map[ray.getCoords().x][ray.getCoords().y] += (ray.getCol() * color) * (ray.getCol() * color);
  157. ++SamplesCount[ray.getCoords().x][ray.getCoords().y];
  158. ray.make_invalid();
  159. }
  160. @@ -276,7 +278,9 @@ int main(int argc, char* argv[]) {
  161. Config::get().set_config(argc, argv);
  162.  
  163. vector<vector<vec3> > ColorMap(Config::get().width, vector<vec3>(Config::get().height, vec3(0)));
  164. + vector<vector<vec3> > Color2Map(Config::get().width, vector<vec3>(Config::get().height, vec3(0)));
  165. vector<vector<int> > SamplesCount(Config::get().width, vector<int>(Config::get().height, 0));
  166. + vector<vector<bool> > pixel_valid(Config::get().width, vector<bool>(Config::get().height, 0));
  167.  
  168. float cube_a = 10;
  169. float pir_a = 4;
  170. @@ -312,10 +316,10 @@ int main(int argc, char* argv[]) {
  171. vec4(-cube_a, -cube_a, -cube_a, 1)}, make_ unique<DiffuseMaterial>(white)),
  172.  
  173. Triangle({vec4(-2, cube_a - 1, 2, 1), vec4(2, cube_ a - 1, 2, 1),
  174. - vec4(2, cube_a - 1, -2, 1)}, make_unique<L ightMaterial>(ColorMap, SamplesCount, white)),
  175. + vec4(2, cube_a - 1, -2, 1)}, make_unique<L ightMaterial>(ColorMap, Color2Map, SamplesCount, gray)),
  176.  
  177. Triangle({vec4(-2, cube_a - 1, 2, 1), vec4(2, cube_ a - 1, -2, 1),
  178. - vec4(-2, cube_a - 1, -2, 1)}, make_unique< LightMaterial>(ColorMap, SamplesCount, white)),
  179. + vec4(-2, cube_a - 1, -2, 1)}, make_unique< LightMaterial>(ColorMap, Color2Map, SamplesCount, gray)),
  180.  
  181. Triangle({vec4(5 + 0, pir_a, 0, 1), vec4(5 + -pir_a , -1, pir_a, 1),
  182. vec4(5 + pir_a, -1, pir_a, 1)}, make_uniq :
  183. diff --git a/main.cpp b/main.cpp
  184. index bec1ef8..dcbd116 100644
  185. --- a/main.cpp
  186. +++ b/main.cpp
  187. @@ -158,10 +158,12 @@ public:
  188. class LightMaterial : public BaseMaterial {
  189. public:
  190. vector<vector<vec3> > &ColorMap;
  191. + vector<vector<vec3> > &Color2Map;
  192. vector<vector<int> > &SamplesCount;
  193. - LightMaterial(vector<vector<vec3> > &CM, vector<vector<int> > &SC, vec3 col) :ColorMap(CM), SamplesCount(SC), BaseMaterial(col){};
  194. + LightMaterial(vector<vector<vec3> > &CM, vector<vector<vec3> > &C2M, vector<vector<int> > &SC, vec3 col) :ColorMap(CM), Color2Map(C2M), SamplesCount(SC), BaseMaterial(col){};
  195. void process(Ray &ray, vec4 pi, vec4 N) {
  196. ColorMap[ray.getCoords().x][ray.getCoords().y] += ray.getCol() * color;
  197. + Color2Map[ray.getCoords().x][ray.getCoords().y] += (ray.getCol() * color) * (ray.getCol() * color);
  198. ++SamplesCount[ray.getCoords().x][ray.getCoords().y];
  199. ray.make_invalid();
  200. }
  201. @@ -276,7 +278,9 @@ int main(int argc, char* argv[]) {
  202. Config::get().set_config(argc, argv);
  203.  
  204. vector<vector<vec3> > ColorMap(Config::get().width, vector<vec3>(Config::get().height, vec3(0)));
  205. + vector<vector<vec3> > Color2Map(Config::get().width, vector<vec3>(Config::get().height, vec3(0)));
  206. vector<vector<int> > SamplesCount(Config::get().width, vector<int>(Config::get().height, 0));
  207. :
  208. diff --git a/main.cpp b/main.cpp
  209. index bec1ef8..dcbd116 100644
  210. --- a/main.cpp
  211. +++ b/main.cpp
  212. @@ -158,10 +158,12 @@ public:
  213. class LightMaterial : public BaseMaterial {
  214. public:
  215. vector<vector<vec3> > &ColorMap;
  216. + vector<vector<vec3> > &Color2Map;
  217. vector<vector<int> > &SamplesCount;
  218. - LightMaterial(vector<vector<vec3> > &CM, vector<vector<int> > &SC, vec3 col) :ColorMap(CM), SamplesCount(SC), BaseMaterial(col){};
  219. + LightMaterial(vector<vector<vec3> > &CM, vector<vector<vec3> > &C2M, vector<vector<int> > &SC, vec3 col) :ColorMap(CM), Color2Map(C2M), SamplesCount(SC), BaseMaterial(col){};
  220. void process(Ray &ray, vec4 pi, vec4 N) {
  221. ColorMap[ray.getCoords().x][ray.getCoords().y] += ray.getCol() * color;
  222. + Color2Map[ray.getCoords().x][ray.getCoords().y] += (ray.getCol() * color) * (ray.getCol() * color);
  223. ++SamplesCount[ray.getCoords().x][ray.getCoords().y];
  224. ray.make_invalid();
  225. }
  226. @@ -276,7 +278,9 @@ int main(int argc, char* argv[]) {
  227. Config::get().set_config(argc, argv);
  228.  
  229. vector<vector<vec3> > ColorMap(Config::get().width, vector<vec3>(Config::get().height, vec3(0)));
  230. + vector<vector<vec3> > Color2Map(Config::get().width, vector<vec3>(Config::get().height, vec3(0)));
  231. vector<vector<int> > SamplesCount(Config::get().width, vector<int>(Config::get().height, 0));
  232. + vector<vector<bool> > pixel_valid(Config::get().width, vector<bool>(Config::get().height, 0));
  233.  
  234. float cube_a = 10;
  235. float pir_a = 4;
  236. @@ -312,10 +316,10 @@ int main(int argc, char* argv[]) {
  237. vec4(-cube_a, -cube_a, -cube_a, 1)}, make_unique<DiffuseMaterial>(white)),
  238.  
  239. Triangle({vec4(-2, cube_a - 1, 2, 1), vec4(2, cube_a - 1, 2, 1),
  240. - vec4(2, cube_a - 1, -2, 1)}, make_unique<LightMaterial>(ColorMap, SamplesCount, white)),
  241. + vec4(2, cube_a - 1, -2, 1)}, make_unique<LightMaterial>(ColorMap, Color2Map, SamplesCount, gray)),
  242.  
  243. Triangle({vec4(-2, cube_a - 1, 2, 1), vec4(2, cube_a - 1, -2, 1),
  244. - vec4(-2, cube_a - 1, -2, 1)}, make_unique<LightMaterial>(ColorMap, SamplesCount, white)),
  245. + vec4(-2, cube_a - 1, -2, 1)}, make_unique<LightMaterial>(ColorMap, Color2Map, SamplesCount, gray)),
  246.  
  247. Triangle({vec4(5 + 0, pir_a, 0, 1), vec4(5 + -pir_a, -1, pir_a, 1),
  248. vec4(5 + pir_a, -1, pir_a, 1)}, make_unique<TransparentMaterial>(yellow, 1.25)),
  249. @@ -335,17 +339,17 @@ int main(int argc, char* argv[]) {
  250. Triangle({vec4(5 + -pir_a, -1, pir_a, 1), vec4(5 + -pir_a, -1, -pir_a, 1),
  251. vec4(5 + pir_a, -1, -pir_a, 1)}, make_unique<TransparentMaterial>(yellow, 1.25))};
  252.  
  253. -
  254. -
  255. bitmap_image image(Config::get().width, Config::get().height);
  256.  
  257. image.clear();
  258.  
  259. -
  260. :
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement