The spica renderer
roughdielectric.h
1 #ifdef _MSC_VER
2 #pragma once
3 #endif
4 
5 #ifndef _SPICA_ROUGH_DIELECTRIC_H_
6 #define _SPICA_ROUGH_DIELECTRIC_H_
7 
8 #include <memory>
9 
10 #include "core/common.h"
11 #include "core/spectrum.h"
12 #include "core/render.hpp"
13 #include "core/material.h"
14 
15 namespace spica {
16 
17 class SPICA_EXPORTS RoughDielectric : public SurfaceMaterial {
18 public:
19  // Public methods
20  RoughDielectric(const std::shared_ptr<Texture<Spectrum>>& Kr,
21  const std::shared_ptr<Texture<Spectrum>>& Kt,
22  const std::shared_ptr<Texture<Spectrum>>& uRoughness,
23  const std::shared_ptr<Texture<Spectrum>>& vRoughness,
24  const std::shared_ptr<Texture<Spectrum>>& index,
25  const std::string &distribution = "beckmann",
26  const std::shared_ptr<Texture<Spectrum>>& bumpMap = nullptr,
27  bool remapRoughness = false);
28 
29  explicit RoughDielectric(RenderParams &params);
30 
31  void setScatterFuncs(SurfaceInteraction* isect,
32  MemoryArena& arena) const override;
33 
34 private:
35  // Private fields
36  std::shared_ptr<Texture<Spectrum>> Kr_, Kt_;
37  std::shared_ptr<Texture<Spectrum>> uRoughness_, vRoughness_;
38  std::shared_ptr<Texture<Spectrum>> index_;
39  std::string distribution_;
40  std::shared_ptr<Texture<Spectrum>> bumpMap_;
41  bool remapRoughness_;
42 };
43 
44 SPICA_EXPORT_PLUGIN(RoughDielectric, "Rough dielectric surface");
45 
46 } // namespace spica
47 
48 #endif // _SPICA_ROUGH_DIELECTRIC_H_
Definition: interaction.h:68
Definition: roughdielectric.h:17
Definition: renderparams.h:27
Definition: material.h:17