Clarisse 5.0 SP8 SDK  5.0.5.8.0
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Classes | Public Types | Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
PbrSss Class Referenceabstract
Inheritance diagram for PbrSss:
PbrSurface PbrBxdf CoreScratchpadObject PbrSssRandomWalk PbrSssScatter

Classes

struct  SssFilterData
 

Public Types

enum  BoundaryType : unsigned int
 
typedef void(* ComputeNormalCallback )(void *data, const CtxEval &eval_ctx, CtxShader &shader_ctx, GMathVec3d &normal)
 

Public Member Functions

void configure (const GMathVec3d &geom_normal, const GMathVec3d &shading_normal, const GMathVec3f &albedo, const float &sampling_weight, ComputeNormalCallback compute_normal_callback, void *data)
 
virtual unsigned int get_scatter_sample_dimension () const
 Return the dimension of the variable needed to compute scattering samples.
 
virtual GMathVec3f get_lambertian_albedo (double incident_cosine) const =0
 
virtual bool scatter (const CtxEval &eval_ctx, CtxShader &shader_ctx, const PbrRandVar &var, PbrScatter &scatter) const =0
 Generate a scattering position.
 
float get_sampling_weight () const
 
void set_check_integration_domain (const bool &check_integration_domain)
 
bool check_integration_domain () const
 check_integration_domain
 
- Public Member Functions inherited from PbrSurface
void configure (const GMathVec3d &geom_normal, const GMathVec3d &shading_normal, const GMathVec3f &albedo, const float &roughness, BxDFTypeFlags type_flags, const PbrIntegrationDomain &integration_domain, const GMathVec3f &exit_color=GMathVec3f(0.0f))
 
const GMathVec3d & get_geometric_normal () const
 
- 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 float get_sampling_multiplier () const
 get_sampling_multiplier
 
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 scatter_pdf (const PbrScatter &scatter) const
 Compute the value of the PDF for a scattering position using the bxdf properties.
 
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)
 
virtual void normalize_scatter_result (const PbrScatter &scatter, GMathVec3f &result) const =0
 

Static Protected Member Functions

static bool has_same_sss_group (const CtxEval &eval_ctx, GeometryIntersection &intersection, const ModuleMaterial *material)
 
static bool sss_filter_intersection_callback (const CtxEval &eval_ctx, const GeometryRaytraceCtx &ray_ctx, const unsigned int &ray_index, GeometryIntersection &intersection, GeometryRaytraceCtx::FilterData &data)
 

Protected Attributes

ComputeNormalCallback m_compute_normal_callback
 
void * m_compute_normal_callback_data
 
bool m_check_integration_domain
 

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

bool PbrSss::check_integration_domain ( ) const
inlinevirtual

check_integration_domain

Returns
if the integration domain has to be checked

Reimplemented from PbrSurface.

virtual unsigned int PbrSss::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.

Reimplemented in PbrSssRandomWalk.

void PbrSss::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.

Reimplemented in PbrSssRandomWalk.

void PbrSss::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.

Reimplemented in PbrSssRandomWalk.

virtual bool PbrSss::scatter ( const CtxEval eval_ctx,
CtxShader shader_ctx,
const PbrRandVar var,
PbrScatter scatter 
) const
pure 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.

Implemented in PbrSssScatter, and PbrSssRandomWalk.