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

Public Member Functions

 LM_COMPONENT_IMPL_DEF ("thinlens")
 
virtual bool Load (const ConfigNode &node, const Assets &assets)
 
virtual bool SampleDirection (const GeneralizedBSDFSampleQuery &query, const SurfaceGeometry &geom, GeneralizedBSDFSampleResult &result) const
 
virtual Math::Vec3 SampleAndEstimateDirection (const GeneralizedBSDFSampleQuery &query, const SurfaceGeometry &geom, GeneralizedBSDFSampleResult &result) const
 
virtual bool SampleAndEstimateDirectionBidir (const GeneralizedBSDFSampleQuery &query, const SurfaceGeometry &geom, GeneralizedBSDFSampleBidirResult &result) const
 
virtual Math::Vec3 EvaluateDirection (const GeneralizedBSDFEvaluateQuery &query, const SurfaceGeometry &geom) const
 
virtual Math::PDFEval EvaluateDirectionPDF (const GeneralizedBSDFEvaluateQuery &query, const SurfaceGeometry &geom) const
 
virtual bool Degenerated () const
 
virtual int BSDFTypes () const
 
virtual void SamplePosition (const Math::Vec2 &sample, SurfaceGeometry &geom, Math::PDFEval &pdf) const
 
virtual Math::Vec3 EvaluatePosition (const SurfaceGeometry &geom) const
 
virtual Math::PDFEval EvaluatePositionPDF (const SurfaceGeometry &geom) const
 
virtual void RegisterPrimitives (const std::vector< Primitive * > &primitives)
 
virtual bool RayToRasterPosition (const Math::Vec3 &p, const Math::Vec3 &d, Math::Vec2 &rasterPos) const
 
virtual FilmGetFilm () const
 
- Public Member Functions inherited from Camera
 LM_ASSET_INTERFACE_DEF ("camera","cameras")
 
 LM_ASSET_DEPENDENCIES ("film")
 
- Public Member Functions inherited from Emitter
virtual void PostConfigure (const Scene &scene)=0
 
virtual EmitterShapeCreateEmitterShape () const =0
 
virtual AABB GetAABB () const =0
 
- 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

Thin-lens camera. A camera with depth of field support.

Inheritance diagram for ThinLensCamera:
Camera Emitter GeneralizedBSDF Asset Component SIMDAlignedType

Member Function Documentation

virtual int ThinLensCamera::BSDFTypes ( ) const
inlinevirtual

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.

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

Evaluate generalized BSDF.

Parameters
queryQuery structure.
geomSurface geometry.
Returns
Evaluated contribution.

Implements GeneralizedBSDF.

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

Evaluate directional PDF.

Parameters
queryQuery structure.
geomSurface geometry.
Returns
Evaluated PDF.

Implements GeneralizedBSDF.

Math::Vec3 ThinLensCamera::EvaluatePosition ( const SurfaceGeometry geom) const
virtual

Evaluate the positional component of the emitted quantity.

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

Implements Emitter.

Math::PDFEval ThinLensCamera::EvaluatePositionPDF ( const SurfaceGeometry geom) const
virtual

Evaluate positional PDF.

Parameters
geomSurface geometry.
Returns
Evaluated PDF.

Implements Emitter.

virtual Film* ThinLensCamera::GetFilm ( ) const
inlinevirtual

Get film. Returns the film referenced by the camera.

Parameters
Film.

Implements Camera.

bool ThinLensCamera::Load ( const ConfigNode node,
const Assets assets 
)
virtual

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.

bool ThinLensCamera::RayToRasterPosition ( const Math::Vec3 &  p,
const Math::Vec3 &  d,
Math::Vec2 &  rasterPos 
) const
virtual

Convert a ray to a raster position. The function calculates the raster position from the outgoing ray. Returns false if calculated raster position is the outside of [0, 1]^2.

Parameters
pPosition on the camera.
dOutgoing direction from #p.
rasterPosRaster position.
Returns
true Succeeded to convert.
false Failed to convert.

Implements Camera.

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

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 ThinLensCamera::SampleAndEstimateDirection ( const GeneralizedBSDFSampleQuery query,
const SurfaceGeometry geom,
GeneralizedBSDFSampleResult result 
) const
virtual

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

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

Implements GeneralizedBSDF.

virtual bool ThinLensCamera::SampleAndEstimateDirectionBidir ( const GeneralizedBSDFSampleQuery query,
const SurfaceGeometry geom,
GeneralizedBSDFSampleBidirResult result 
) const
inlinevirtual

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 ThinLensCamera::SampleDirection ( const GeneralizedBSDFSampleQuery query,
const SurfaceGeometry geom,
GeneralizedBSDFSampleResult result 
) const
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.

Implements GeneralizedBSDF.

void ThinLensCamera::SamplePosition ( const Math::Vec2 &  sample,
SurfaceGeometry geom,
Math::PDFEval &  pdf 
) const
virtual

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: