Clarisse 5.0 SP8 SDK  5.0.5.8.0
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Member Functions | Public Attributes | List of all members
PbrBrdfNormalisation Class Reference

The PbrBrdfNormalisation class Compensate the missing energy for a BRDF and take into account the Fresnel term. More...

Inheritance diagram for PbrBrdfNormalisation:
PbrBxdfNormalisation CoreScratchpadObject

Public Member Functions

void configure (const GMathVec3d &reflect_albedo, const GMathVec3d &average_albedo, const GMathVec3d &average_fresnel)
 
virtual GMathVec3f evaluate (const GMathVec3f &value, const GMathVec3d &wi, const GMathVec3d &wo, const GMathVec3d &normal, const GMathVec3d &kr, const GMathVec3d &kt) const
 evaluate Evaluate the normalisation necessary to compensate the energy loss and return the value that take into account the normalization.
 
- Public Member Functions inherited from PbrBxdfNormalisation
void set_strength (const double strength)
 
const double & get_strength () const
 
- Public Member Functions inherited from CoreScratchpadObject
virtual ~CoreScratchpadObject ()
 Implement this virtual destructor in your data class, the memory scratchpad will call it on the reset call.
 

Public Attributes

PbrBxdfm_bxdf
 

Additional Inherited Members

- Protected Attributes inherited from PbrBxdfNormalisation
GMathVec3d m_average_fresnel
 

Detailed Description

The PbrBrdfNormalisation class Compensate the missing energy for a BRDF and take into account the Fresnel term.

Member Function Documentation

void PbrBrdfNormalisation::configure ( const GMathVec3d &  reflect_albedo,
const GMathVec3d &  average_albedo,
const GMathVec3d &  average_fresnel 
)

It exists other ways to comute the multiple scattering fresnel compensation term : "Fms". Here we take the raw formule without simplification (slide 15 in https://blog.selfshadow.com/publications/s2017-shading-course/imageworks/s2017_pbs_imageworks_slides_v2.pdf). Indeed the real formula give better results than the simplification ones and the computation time is pratically the same...

GMathVec3f PbrBrdfNormalisation::evaluate ( const GMathVec3f &  value,
const GMathVec3d &  wi,
const GMathVec3d &  wo,
const GMathVec3d &  normal,
const GMathVec3d &  kr,
const GMathVec3d &  kt 
) const
virtual

evaluate Evaluate the normalisation necessary to compensate the energy loss and return the value that take into account the normalization.

Parameters
bxdfThe bxdf that needs to be normalized.
valueThe current value return by the bxdf.
wiThe incident ray
normalthe normal where the bxdf is evaluated
krThe reflection coeffecient of the fresnel
ktThe transmission coeffeceint of the fresnel
Returns
the bxdf's value that take into account the normalization.

Implements PbrBxdfNormalisation.