The spica renderer
gdptfilm.h
1 #ifdef _MSC_VER
2 #pragma once
3 #endif
4 
5 #ifndef _SPICA_GDPT_FILM_H_
6 #define _SPICA_GDPT_FILM_H_
7 
8 #include <vector>
9 #include <memory>
10 
11 #include "core/core.hpp"
12 #include "core/image.h"
13 #include "core/film.h"
14 
15 namespace spica {
16 
17 class GDPTFilm {
18 public:
19  GDPTFilm(const std::shared_ptr<Film> &film);
20 
21  void save(int i, const std::string &solver) const;
22  void addPixel(int x, int y, const Spectrum &color, double weight);
23  void addGradient(int x, int y, int index, const Spectrum &grad, double weight);
24  double evalFilter(const Point2d &pixel) const;
25 
26 private:
27  Image evalImage() const;
28  Image evalGrad(int index) const;
29  Image solveL1() const;
30  Image solveL2() const;
31  Image solveFourier() const;
32 
33  std::shared_ptr<Film> film_;
34 
35  Image image_;
36  std::vector<std::vector<double>> weights_;
37  std::vector<std::vector<std::vector<double>>> gradWeights_;
38  std::array<Image, 4> gradients_;
39 };
40 
41 } // namespace spica
42 
43 #endif // _SPICA_GDPT_FILM_H_
RGB spectrum.
Definition: spectrum.h:18
Image class.
Definition: image.h:18
Definition: gdptfilm.h:17