The spica renderer
dipole.h
1 #ifdef _MSC_VER
2 #pragma once
3 #endif
4 
5 #ifndef _SPICA_DIPOLE_H_
6 #define _SPICA_DIPOLE_H_
7 
8 #include "core/common.h"
9 #include "core/spectrum.h"
10 #include "core/interpolation.h"
11 #include "core/render.hpp"
12 #include "core/material.h"
13 
14 namespace spica {
15 
16 class SPICA_EXPORTS Dipole : public SubsurfaceMaterial {
17 public:
18  // Public methods
19  Dipole(double scale,
20  const std::shared_ptr<Texture<Spectrum>>& sigmaAbsorb,
21  const std::shared_ptr<Texture<Spectrum>>& sigmaScatter,
22  double g, double eta);
23 
24  explicit Dipole(RenderParams &params);
25 
26  void setScatterFuncs(SurfaceInteraction* isect,
27  MemoryArena& arena) const override;
28 
29 private:
30  // Private fields
31  double scale_;
32  std::shared_ptr<Texture<Spectrum>> sigmaAbsorb_, sigmaScatter_;
33  double eta_;
34  CatmullRom2D table_;
35 
36 };
37 
38 SPICA_EXPORT_PLUGIN(Dipole, "Dipole subsurface");
39 
40 } // namespace spica
41 
42 #endif // _SPICA_SUBSURFACE_H_
Definition: interaction.h:68
Definition: interpolation.h:53
Definition: renderparams.h:27
Definition: dipole.h:16
Definition: material.h:24