Photon Engine 2.0.0-beta
A physically based renderer.
Loading...
Searching...
No Matches
ph::SurfaceOptics Class Referenceabstract

Describes how light interacts with a surface. More...

#include <SurfaceOptics.h>

Inheritance diagram for ph::SurfaceOptics:
ph::IdealAbsorber ph::IdealDielectric ph::IdealDielectricTransmitter ph::IdealReflector ph::LambertianReflector ph::LbLayeredSurface ph::LerpedSurfaceOptics ph::OpaqueMicrofacet ph::OrenNayar ph::ThinDielectricFilm ph::ThinDielectricShell ph::TranslucentMicrofacet

Public Member Functions

 SurfaceOptics ()
 
virtual ~SurfaceOptics ()=default
 
virtual ESurfacePhenomenon getPhenomenonOf (SurfaceElemental elemental) const =0
 Get the phenomenon of a surface component. One can also setup query for a specific elemental. See BsdfQueryContext.
 
void calcBsdf (BsdfEvalQuery &eval) const
 Executes a BSDF evaluation query. Respects sidedness policy.
 
void genBsdfSample (BsdfSampleQuery &sample, SampleFlow &sampleFlow) const
 Executes a BSDF sample query. Respects sidedness policy.
 
void calcBsdfPdf (BsdfPdfQuery &pdfQuery) const
 Executes a BSDF sample PDF query. Respects sidedness policy.
 
SurfacePhenomena getAllPhenomena () const
 Get all phenomena that exist in this surface.
 
SurfaceElemental numElementals () const
 Get number of components this surface contains.
 
virtual std::string toString () const
 

Protected Attributes

SurfacePhenomena m_phenomena
 
SurfaceElemental m_numElementals
 

Friends

class LerpedSurfaceOptics
 

Detailed Description

Describes how light interacts with a surface.

Constructor & Destructor Documentation

◆ SurfaceOptics()

ph::SurfaceOptics::SurfaceOptics ( )

◆ ~SurfaceOptics()

virtual ph::SurfaceOptics::~SurfaceOptics ( )
virtualdefault

Member Function Documentation

◆ calcBsdf()

void ph::SurfaceOptics::calcBsdf ( BsdfEvalQuery & eval) const

Executes a BSDF evaluation query. Respects sidedness policy.

◆ calcBsdfPdf()

void ph::SurfaceOptics::calcBsdfPdf ( BsdfPdfQuery & pdfQuery) const

Executes a BSDF sample PDF query. Respects sidedness policy.

◆ genBsdfSample()

void ph::SurfaceOptics::genBsdfSample ( BsdfSampleQuery & sample,
SampleFlow & sampleFlow ) const

Executes a BSDF sample query. Respects sidedness policy.

◆ getAllPhenomena()

SurfacePhenomena ph::SurfaceOptics::getAllPhenomena ( ) const
inline

Get all phenomena that exist in this surface.

Note
If a surface has any delta phenomenon along with any non-delta phenomenon, it should be treated the same way as a surface with only pure delta phenomenon.

◆ getPhenomenonOf()

virtual ESurfacePhenomenon ph::SurfaceOptics::getPhenomenonOf ( SurfaceElemental elemental) const
pure virtual

◆ numElementals()

SurfaceElemental ph::SurfaceOptics::numElementals ( ) const
inline

Get number of components this surface contains.

See also
getPhenomenonOf().

◆ toString()

std::string ph::SurfaceOptics::toString ( ) const
inlinevirtual

Friends And Related Symbol Documentation

◆ LerpedSurfaceOptics

friend class LerpedSurfaceOptics
friend

Member Data Documentation

◆ m_numElementals

SurfaceElemental ph::SurfaceOptics::m_numElementals
protected

◆ m_phenomena

SurfacePhenomena ph::SurfaceOptics::m_phenomena
protected

The documentation for this class was generated from the following files: