5 #ifndef _SPICA_SAMPLING_H_
6 #define _SPICA_SAMPLING_H_
10 #include "core/common.h"
11 #include "core/vector3d.h"
12 #include "core/normal3d.h"
13 #include "core/random.h"
25 double operator()(
int i)
const;
27 double sample(
double rand,
double* pdf,
int* offset =
nullptr)
const;
28 int sampleDiscrete(
double rand,
double* pdf)
const;
29 double pdfDiscrete(
int index)
const;
30 inline double integral()
const {
return integral_; }
31 inline int count()
const {
return static_cast<int>(func_.size()); }
35 static int findInterval(
const std::vector<double>& cdf,
double v);
38 std::vector<double> func_, cdf_;
46 Distribution2D(
const std::vector<double>& data,
int width,
int height);
53 double pdf(
const Point2d& p)
const;
56 std::vector<Distribution1D> pCond_;
64 SPICA_EXPORTS
inline double cosineHemispherePdf(
double cosTheta) {
return cosTheta * INV_PI; }
65 SPICA_EXPORTS
void sampleUniformHemisphere(
const Normal3d& normal, Vector3d* direction,
const Point2d& rands);
68 void samplePoissonDisk(
const Scene& scene,
const Point3d& pCamera,
69 double minDist, std::vector<Interaction>* points);
73 #endif // SPICA_SAMPLING_H_
Three-dimensional vector.
Definition: core.hpp:56
Definition: sampling.h:43
Definition: sampling.h:17