5 #ifndef _SPICA_BSSRDF_H_
6 #define _SPICA_BSSRDF_H_
11 #include "core/core.hpp"
12 #include "core/render.hpp"
13 #include "core/common.h"
14 #include "core/spectrum.h"
15 #include "core/interpolation.h"
17 #include "core/interaction.h"
18 #include "core/bxdf.h"
33 double* pdf)
const = 0;
51 double* pdf)
const override;
55 virtual Spectrum Sr(
double r)
const = 0;
56 virtual std::unique_ptr<DiffusionReflectance> Rd()
const = 0;
67 virtual double sampleSr(
int ch,
double rand)
const = 0;
68 virtual double pdfSr(
int ch,
double r)
const = 0;
86 double eta,
const Spectrum& sigmaAbsorb,
89 Spectrum Sr(
double r)
const override;
91 inline int nIntervals()
const {
return table_.ys().size(); }
92 inline std::vector<double> radii()
const {
return table_.ys(); }
93 std::unique_ptr<DiffusionReflectance> Rd()
const override;
96 double sampleSr(
int ch,
double rand)
const override;
97 double pdfSr(
int ch,
double r)
const override;
102 Spectrum sigmaAbsorb_, sigmaScatter_;
141 Spectrum zpos_, zneg_, sigmap_t_, sigma_tr_, alphap_;
148 SPICA_EXPORTS
double FresnelMoment1(
double eta);
149 SPICA_EXPORTS
double FresnelMoment2(
double eta);
156 void computeBeamDiffusionBSSRDF(
double g,
double eta,
CatmullRom2D* table,
157 int albedoDivide = 100,
int radiusDivide = 64);
161 #endif // _SPICA_BSSRDF_H_
Definition: interaction.h:68
SeparableBSSRDF class.
Definition: bssrdf.h:43
RGB spectrum.
Definition: spectrum.h:18
Definition: interpolation.h:53
Definition: material.h:24
BSSRDF Interface.
Definition: bssrdf.h:25
Adapter for evaluating surface reflection part of BSSRDF.
Definition: bssrdf.h:110
The base class of BxDFs.
Definition: bxdf.h:45
Scene provides the interface for scene graph.
Definition: scene.h:23
Diffuse BSSRDF class.
Definition: bssrdf.h:83