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

Public Member Functions

 LM_COMPONENT_IMPL_DEF ("env.const")
 
virtual bool Load (const ConfigNode &node, const Assets &assets) override
 
virtual bool SampleDirection (const GeneralizedBSDFSampleQuery &query, const SurfaceGeometry &geom, GeneralizedBSDFSampleResult &result) const override
 
virtual Math::Vec3 SampleAndEstimateDirection (const GeneralizedBSDFSampleQuery &query, const SurfaceGeometry &geom, GeneralizedBSDFSampleResult &result) const override
 
virtual bool SampleAndEstimateDirectionBidir (const GeneralizedBSDFSampleQuery &query, const SurfaceGeometry &geom, GeneralizedBSDFSampleBidirResult &result) const override
 
virtual Math::Vec3 EvaluateDirection (const GeneralizedBSDFEvaluateQuery &query, const SurfaceGeometry &geom) const override
 
virtual Math::PDFEval EvaluateDirectionPDF (const GeneralizedBSDFEvaluateQuery &query, const SurfaceGeometry &geom) const override
 
virtual int BSDFTypes () const override
 
virtual void SamplePosition (const Math::Vec2 &sample, SurfaceGeometry &geom, Math::PDFEval &pdf) const override
 
virtual Math::Vec3 EvaluatePosition (const SurfaceGeometry &geom) const override
 
virtual Math::PDFEval EvaluatePositionPDF (const SurfaceGeometry &geom) const override
 
virtual void RegisterPrimitives (const std::vector< Primitive * > &primitives) override
 
virtual void PostConfigure (const Scene &scene) override
 
virtual EmitterShapeCreateEmitterShape () const override
 
virtual AABB GetAABB () const override
 
virtual bool EnvironmentLight () const override
 
- Public Member Functions inherited from Light
 LM_ASSET_INTERFACE_DEF ("light","lights")
 
 LM_ASSET_NO_DEPENDENCIES ()
 
- Public Member Functions inherited from Asset
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

Constant environment light. Implements environment light with constant luminance.

Inheritance diagram for ConstantEnvironmentLight:
Light Emitter GeneralizedBSDF Asset Component SIMDAlignedType

Member Function Documentation

virtual int ConstantEnvironmentLight::BSDFTypes ( ) const
inlineoverridevirtual

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.

Implements GeneralizedBSDF.

EmitterShape * ConstantEnvironmentLight::CreateEmitterShape ( ) const
overridevirtual

Get associated emitter shapes. Some emitter is associated with intersectable shapes (e.g., sphere for environment lights) in order to integrate emitters with BPT based rendering techniques. Ownership of the created instance is delegated to the caller.

Returns
Instance of emitter shape.

Implements Emitter.

virtual bool ConstantEnvironmentLight::EnvironmentLight ( ) const
inlineoverridevirtual

Check if the light is environment light.

Return values
trueThe light is environment light.
falseThe light is not environment light.

Implements Light.

Math::Vec3 ConstantEnvironmentLight::EvaluateDirection ( const GeneralizedBSDFEvaluateQuery query,
const SurfaceGeometry geom 
) const
overridevirtual

Evaluate generalized BSDF.

Parameters
queryQuery structure.
geomSurface geometry.
Returns
Evaluated contribution.

Implements GeneralizedBSDF.

Math::PDFEval ConstantEnvironmentLight::EvaluateDirectionPDF ( const GeneralizedBSDFEvaluateQuery query,
const SurfaceGeometry geom 
) const
overridevirtual

Evaluate directional PDF.

Parameters
queryQuery structure.
geomSurface geometry.
Returns
Evaluated PDF.

Implements GeneralizedBSDF.

Math::Vec3 ConstantEnvironmentLight::EvaluatePosition ( const SurfaceGeometry geom) const
overridevirtual

Evaluate the positional component of the emitted quantity.

Parameters
geomSurface geometry.
Returns
Positional component of the emitted quantity.

Implements Emitter.

Math::PDFEval ConstantEnvironmentLight::EvaluatePositionPDF ( const SurfaceGeometry geom) const
overridevirtual

Evaluate positional PDF.

Parameters
geomSurface geometry.
Returns
Evaluated PDF.

Implements Emitter.

bool ConstantEnvironmentLight::Load ( const ConfigNode node,
const Assets assets 
)
overridevirtual

Load an asset. Configure and initialize the asset by the XML elements given by #node. Some assets have references to the other assets, so #assets is also required. Dependent asset must be loaded beforehand.

Parameters
nodeXML node for the configuration.
assetsAsset manager.
trueSucceeded to load.
falseFailed to load.

Implements Asset.

void ConstantEnvironmentLight::PostConfigure ( const Scene scene)
overridevirtual

Post configuration after scene is built. Some emitter needs to be configured after scene is built. TODO : Replace RegisterPrimitive function with this function.

Parameters
sceneScene.

Implements Emitter.

virtual void ConstantEnvironmentLight::RegisterPrimitives ( const std::vector< Primitive * > &  primitives)
inlineoverridevirtual

Register an reference to the primitive. Some implementation of camera needs transformed mesh information for sampling. The function registers the reference to the primitive. The function is internally called.

Parameters
primitivesAn list instances of the primitive.

Implements Emitter.

Math::Vec3 ConstantEnvironmentLight::SampleAndEstimateDirection ( const GeneralizedBSDFSampleQuery query,
const SurfaceGeometry geom,
GeneralizedBSDFSampleResult result 
) const
overridevirtual

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

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

Implements GeneralizedBSDF.

bool ConstantEnvironmentLight::SampleAndEstimateDirectionBidir ( const GeneralizedBSDFSampleQuery query,
const SurfaceGeometry geom,
GeneralizedBSDFSampleBidirResult result 
) const
overridevirtual

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.

Implements GeneralizedBSDF.

bool ConstantEnvironmentLight::SampleDirection ( const GeneralizedBSDFSampleQuery query,
const SurfaceGeometry geom,
GeneralizedBSDFSampleResult result 
) const
overridevirtual

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.

Implements GeneralizedBSDF.

void ConstantEnvironmentLight::SamplePosition ( const Math::Vec2 &  sample,
SurfaceGeometry geom,
Math::PDFEval &  pdf 
) const
overridevirtual

Sample a position on the light.

Parameters
samplePosition sample.
geomSurface geometry at sampled position #geom.p.
pdfEvaluated PDF (area measure).

Implements Emitter.


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