Clarisse 5.0 SP8 SDK  5.0.5.8.0
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Member Functions | Protected Member Functions | List of all members
PbrVolumeTpl< PHASE_MODE > Class Template Reference
Inheritance diagram for PbrVolumeTpl< PHASE_MODE >:
PbrBxdf CoreScratchpadObject

Public Member Functions

void configure (const PbrDeepTransmittance &transmittance, const GeometryDeferredShadingGroup &geometry_data, const CoreBasicArray< PbrVolumeSample > &samples, const double &z_offset, const double &z_scale, const GMathVec3f &albedo, const GMathVec3d &eye_direction, const float &phase, const float &sampling_multiplier, const bool &energy_conservation, OfAttrDynEvaluator *phase_evaluator=0)
 
const CoreBasicArray
< PbrVolumeSample > & 
get_samples () const
 
const double & get_z_offset () const
 
const double & get_z_scale () const
 
const float & get_phase () const
 
const OfAttrDynEvaluatorget_phase_evaluator () const
 
virtual unsigned int get_scatter_sample_dimension () const
 Return the dimension of the variable needed to compute scattering samples.
 
virtual void get_ray_range (double &t_min, double &t_max) const
 
virtual bool scatter (const CtxEval &eval_ctx, CtxShader &shader_ctx, const PbrRandVar &var, PbrScatter &scatter) const
 Generate a scattering position.
 
virtual float scatter_pdf (const PbrScatter &scatter) const
 Compute the value of the PDF for a scattering position using the bxdf properties.
 
virtual bool set_volume_scatter (const CtxEval &eval_ctx, CtxShader &shader_ctx, const double &depth, const float &pdf, PbrScatter &scatter) const
 
virtual float get_sampling_multiplier () const
 get_sampling_multiplier
 
bool check_integration_domain () const
 check_integration_domain
 
- Public Member Functions inherited from PbrBxdf
void configure (const GMathVec3f &albedo, const GMathVec3d &normal, const float &roughness, BxDFTypeFlags type_flags, const PbrIntegrationDomain &integration_domain, const GMathVec3f &exit_color=GMathVec3f(0.0))
 configure Configure the bxdf
 
const GMathVec3f & get_albedo () const
 get_albedo
 
const GMathVec3d & get_normal () const
 get_normal
 
const float & get_roughness () const
 get_roughness
 
const BxDFTypeFlags & get_type_flags () const
 get_type_flags
 
const PbrIntegrationDomain & get_integration_domain () const
 get_integration_domain
 
virtual float get_sampling_weight (const GMathVec3d &wi) const
 get_sampling_weight
 
virtual unsigned int get_sampling_dimension () const
 get_sampling_dimension
 
void sample (const GMathVec3d &wi, const PbrRandVar &var, const PbrScatter *scatter, PbrSample &sample) const
 Generate a sample (take in account fresnels and absorptions)
 
void evaluate (const GMathVec3d &wi, const PbrSample &sample, const PbrScatter *scatter, PbrEval &eval) const
 Compute the response of the object being hit by a sample (take in account fresnels and absorptions)
 
virtual float get_scatter_profile_scale () const
 Compute the global scale of the SSS profile.
 
virtual void sample_diff (const GMathVec3d &wi, const PbrSample &sample, const GMathVec3d &dwi, const GMathVec2d &duv, GMathVec3d &dwo) const
 Compute differentials for a given sample.
 
bool is_empty () const
 is_empty
 
bool has_any_flag (const BxDFTypeFlags &to_match) const
 has_any_flag
 
void set_fresnel (const PbrFresnel *fresnel)
 set_fresnel Set a fresnel to the bxdf
 
void set_bxdf_normalisation (const PbrBxdfNormalisation *normalisation)
 set_bxdf_normalisation Set a normalisation to the bxdf
 
void set_directional_absorption (const PbrDirectionalAbsorption *absorption)
 set_directional_absorption Set an abosrption to the bxdf
 
void set_empty ()
 set_empty Set the type of the bxdf has empty
 
const GMathVec3f & get_exit_color () const
 get_exit_color
 
const PbrFresnelget_fresnel () const
 
const PbrBxdfNormalisationget_bxdf_normalisation () const
 
const UniqueStringget_lpe_label () const
 return lpe label id associated to this bxdf
 
void set_lpe_label (const UniqueString &label)
 Set the lpe label id associated to the this bxdf.
 
- 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.
 

Protected Member Functions

virtual void raw_sample (const GMathVec3d &wi, const PbrRandVar &var, const PbrScatter *scatter, PbrSample &sample) const
 Generate a sample (doesn't take in account fresnels and absorptions)
 
virtual void raw_evaluate (const GMathVec3d &wi, const PbrSample &sample, const PbrScatter *scatter, PbrEval &eval) const
 Compute the response of the object being hit by a sample (doesn't take in account fresnels and absorptions)
 

Additional Inherited Members

- Static Public Attributes inherited from PbrBxdf
static const float s_min_roughness = 0.001f
 
static const float s_max_roughness = 0.999f
 

Member Function Documentation

template<VolumePhaseMode PHASE_MODE>
bool PbrVolumeTpl< PHASE_MODE >::check_integration_domain ( ) const
inlinevirtual

check_integration_domain

Returns
if the integration domain has to be checked

Implements PbrBxdf.

template<VolumePhaseMode PHASE_MODE>
virtual float PbrVolumeTpl< PHASE_MODE >::get_sampling_multiplier ( ) const
inlinevirtual

get_sampling_multiplier

Note
it will be applied on the material sample count, according to the weight of the bxdf in the integration.
Returns
return the sampling multiplier of the bxdf

Reimplemented from PbrBxdf.

template<VolumePhaseMode PHASE_MODE>
virtual unsigned int PbrVolumeTpl< PHASE_MODE >::get_scatter_sample_dimension ( ) const
inlinevirtual

Return the dimension of the variable needed to compute scattering samples.

Note
This controls the dimension of the variable that is given to the scatter function.

Reimplemented from PbrBxdf.

template<VolumePhaseMode PHASE_MODE>
void PbrVolumeTpl< PHASE_MODE >::raw_evaluate ( const GMathVec3d &  wi,
const PbrSample sample,
const PbrScatter scatter,
PbrEval eval 
) const
protectedvirtual

Compute the response of the object being hit by a sample (doesn't take in account fresnels and absorptions)

Parameters
widirection of the eye
samplethe sample to evaluate
scatterscattering position corresponding to the sample
evalresult of the evaluation

Implements PbrBxdf.

template<VolumePhaseMode PHASE_MODE>
void PbrVolumeTpl< PHASE_MODE >::raw_sample ( const GMathVec3d &  wi,
const PbrRandVar var,
const PbrScatter scatter,
PbrSample sample 
) const
protectedvirtual

Generate a sample (doesn't take in account fresnels and absorptions)

Parameters
widirection of the eye
varrandom variable to use to generate the sample
scatterscattering position to use
sampleresulting sample

Implements PbrBxdf.

template<VolumePhaseMode PHASE_MODE>
bool PbrVolumeTpl< PHASE_MODE >::scatter ( const CtxEval eval_ctx,
CtxShader shader_ctx,
const PbrRandVar var,
PbrScatter scatter 
) const
virtual

Generate a scattering position.

Parameters
eval_ctxa valid evaluation context
shader_ctxa valid shader context
varrandom variable to use to generate the position (its dimension is controlled by get_scatter_sample_dimension)
scatterresulting scattering position
Returns
false in case of error

Reimplemented from PbrBxdf.

template<VolumePhaseMode PHASE_MODE>
float PbrVolumeTpl< PHASE_MODE >::scatter_pdf ( const PbrScatter scatter) const
virtual

Compute the value of the PDF for a scattering position using the bxdf properties.

Parameters
scatterscattering position to evaluate
Returns
the value of the PDF

Reimplemented from PbrBxdf.