7#include <Common/primitive_type.h>
56 const std::array<real, 2>& sample,
76 const std::array<real, 2>& sample,
116 const std::array<real, 2>& sample,
119 return sampleH(X, N, sample, out_H);
135 return HoD * NoD > 0.0_r;
Definition Microfacet.h:22
virtual real geometry(const SurfaceHit &X, const math::Vector3R &N, const math::Vector3R &H, const math::Vector3R &L, const math::Vector3R &V) const =0
Masking and shadowing due to nearby microfacets. The term.
virtual lta::PDF pdfSampleH(const SurfaceHit &X, const math::Vector3R &N, const math::Vector3R &H) const =0
static bool isSidednessAgreed(real NoD, real HoD)
Definition Microfacet.h:131
virtual void sampleH(const SurfaceHit &X, const math::Vector3R &N, const std::array< real, 2 > &sample, math::Vector3R *out_H) const =0
Generate a microfacet normal H for the distribution. This samples all possible H vectors for the dist...
virtual ~Microfacet()=default
virtual lta::PDF pdfSampleVisibleH(const SurfaceHit &X, const math::Vector3R &N, const math::Vector3R &H, const math::Vector3R &V) const
Definition Microfacet.h:122
virtual real distribution(const SurfaceHit &X, const math::Vector3R &N, const math::Vector3R &H) const =0
Distribution of the microfacet normal. The term. Also commonly knwon as the NDF (normal distribution...
virtual void sampleVisibleH(const SurfaceHit &X, const math::Vector3R &N, const math::Vector3R &V, const std::array< real, 2 > &sample, math::Vector3R *out_H) const
Same as sampleH(), but tries to take geometry term into consideration. This samples only potentially ...
Definition Microfacet.h:112
General information about a ray-surface intersection event.
Definition SurfaceHit.h:59
A sample from a Probability Density Function (PDF).
Definition PDF.h:14
The root for all renderer implementations.
Definition EEngineProject.h:6