Lightmetrica  0.0.1.50dbee3 (yosakoi)
 All Classes Functions Variables Typedefs Enumerations Enumerator
Public Member Functions | List of all members
GeneralizedBSDF Class Referenceabstract

#include <generalizedbsdf.h>

Public Member Functions

virtual bool SampleDirection (const GeneralizedBSDFSampleQuery &query, const SurfaceGeometry &geom, GeneralizedBSDFSampleResult &result) const =0
 
virtual Math::Vec3 SampleAndEstimateDirection (const GeneralizedBSDFSampleQuery &query, const SurfaceGeometry &geom, GeneralizedBSDFSampleResult &result) const =0
 
virtual bool SampleAndEstimateDirectionBidir (const GeneralizedBSDFSampleQuery &query, const SurfaceGeometry &geom, GeneralizedBSDFSampleBidirResult &result) const =0
 
virtual Math::Vec3 EvaluateDirection (const GeneralizedBSDFEvaluateQuery &query, const SurfaceGeometry &geom) const =0
 
virtual Math::PDFEval EvaluateDirectionPDF (const GeneralizedBSDFEvaluateQuery &query, const SurfaceGeometry &geom) const =0
 
virtual int BSDFTypes () const =0
 
- Public Member Functions inherited from Asset
virtual bool Load (const ConfigNode &node, const Assets &assets)=0
 
LM_PUBLIC_API std::string ID () const
 
LM_HIDDEN_API void SetID (const std::string &id)
 
- Public Member Functions inherited from Component
virtual std::string ComponentInterfaceTypeName () const =0
 
virtual std::string ComponentImplTypeName () const =0
 
- Public Member Functions inherited from SIMDAlignedType
void * operator new (std::size_t size) throw (std::bad_alloc)
 
void operator delete (void *p)
 

Detailed Description

Generalized BSDF. Offers interfaces for direction sampling and evaluation. Thanks to the class BSDF and direction component of light and camera can be sampled in the similar way.

Inheritance diagram for GeneralizedBSDF:
Asset Component SIMDAlignedType BSDF Emitter DielectricBSDF DiffuseBSDF DiffuseMirrorMixBSDF PerfectMirrorBSDF StubBSDF TestBSDF Camera Light

Member Function Documentation

virtual int GeneralizedBSDF::BSDFTypes ( ) const
pure virtual

Check if generalized BSDF is directionally degenerated. e.g. specular BSDFs or directional light

Return values
trueThe BSDF is directionally degenerated.
falseThe BSDF is not directionally degenerated.

Get generalized BSDF type. If the generalized BSDF has multiple types, e.g. SpecularReflection and SpecularReflection, a bitmask of these types are returned.

Returns
Types.

Implemented in DiffuseMirrorMixBSDF, TestBSDF, AreaLight, PerspectiveCamera, DiffuseBSDF, ThinLensCamera, ConstantEnvironmentLight, DielectricBSDF, PerfectMirrorBSDF, and StubBSDF.

virtual Math::Vec3 GeneralizedBSDF::EvaluateDirection ( const GeneralizedBSDFEvaluateQuery query,
const SurfaceGeometry geom 
) const
pure virtual

Evaluate generalized BSDF.

Parameters
queryQuery structure.
geomSurface geometry.
Returns
Evaluated contribution.

Implemented in DiffuseMirrorMixBSDF, TestBSDF, AreaLight, PerspectiveCamera, DiffuseBSDF, ConstantEnvironmentLight, ThinLensCamera, DielectricBSDF, PerfectMirrorBSDF, and StubBSDF.

virtual Math::PDFEval GeneralizedBSDF::EvaluateDirectionPDF ( const GeneralizedBSDFEvaluateQuery query,
const SurfaceGeometry geom 
) const
pure virtual

Evaluate directional PDF.

Parameters
queryQuery structure.
geomSurface geometry.
Returns
Evaluated PDF.

Implemented in DiffuseMirrorMixBSDF, TestBSDF, AreaLight, PerspectiveCamera, DiffuseBSDF, ConstantEnvironmentLight, ThinLensCamera, DielectricBSDF, PerfectMirrorBSDF, and StubBSDF.

virtual Math::Vec3 GeneralizedBSDF::SampleAndEstimateDirection ( const GeneralizedBSDFSampleQuery query,
const SurfaceGeometry geom,
GeneralizedBSDFSampleResult result 
) const
pure virtual

Sample and estimate direction. Computes f_s / p_{^}.

Parameters
queryQuery structure.
geomSurface geometry.
resultSampled result.
Returns
Estimate.

Implemented in DiffuseMirrorMixBSDF, TestBSDF, AreaLight, PerspectiveCamera, DiffuseBSDF, ConstantEnvironmentLight, ThinLensCamera, DielectricBSDF, PerfectMirrorBSDF, and StubBSDF.

virtual bool GeneralizedBSDF::SampleAndEstimateDirectionBidir ( const GeneralizedBSDFSampleQuery query,
const SurfaceGeometry geom,
GeneralizedBSDFSampleBidirResult result 
) const
pure virtual

Sample and estimate direction bidirectionally. In addition to SampleAndEstimateDirection, this function calculates values in the opposite direction. This function is introduced in order to avoid nasty precision problem with specular BSDFs.

Parameters
queryQuery structure.
geomSurface geometry.
weightsEstimate.
resultsSampled results.
Return values
trueSucceeded to sample.
falseFailed to sample.

Implemented in DiffuseMirrorMixBSDF, TestBSDF, AreaLight, PerspectiveCamera, DiffuseBSDF, ConstantEnvironmentLight, ThinLensCamera, DielectricBSDF, PerfectMirrorBSDF, and StubBSDF.

virtual bool GeneralizedBSDF::SampleDirection ( const GeneralizedBSDFSampleQuery query,
const SurfaceGeometry geom,
GeneralizedBSDFSampleResult result 
) const
pure virtual

Sample outgoing vector. Given the input direction originated from the point on the surface #wi, the function samples outgoing vector #wo from the suited distribution in the solid angle measure.

Parameters
queryQuery structure.
geomSurface geometry.
resultSampled result.
Return values
trueSucceeded to sample #wo.
falseFailed to sample #wo.

Implemented in AreaLight, PerspectiveCamera, DiffuseMirrorMixBSDF, DiffuseBSDF, ConstantEnvironmentLight, ThinLensCamera, DielectricBSDF, PerfectMirrorBSDF, TestBSDF, and StubBSDF.


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