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

Public Member Functions

 LM_COMPONENT_IMPL_DEF ("perspective")
 
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 RayToRasterPosition (const Math::Vec3 &p, const Math::Vec3 &d, Math::Vec2 &rasterPos) const override
 
virtual FilmGetFilm () const override
 
- Public Member Functions inherited from Camera
 LM_ASSET_INTERFACE_DEF ("camera","cameras")
 
 LM_ASSET_DEPENDENCIES ("film")
 
- 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

Perspective camera. A camera with perspective projection. a.k.a. pinhole camera.

Inheritance diagram for PerspectiveCamera:
Camera Emitter GeneralizedBSDF Asset Component SIMDAlignedType

Member Function Documentation

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

virtual EmitterShape* PerspectiveCamera::CreateEmitterShape ( ) const
inlineoverridevirtual

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.

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

Evaluate generalized BSDF.

Parameters
queryQuery structure.
geomSurface geometry.
Returns
Evaluated contribution.

Implements GeneralizedBSDF.

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

Evaluate directional PDF.

Parameters
queryQuery structure.
geomSurface geometry.
Returns
Evaluated PDF.

Implements GeneralizedBSDF.

Math::Vec3 PerspectiveCamera::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 PerspectiveCamera::EvaluatePositionPDF ( const SurfaceGeometry geom) const
overridevirtual

Evaluate positional PDF.

Parameters
geomSurface geometry.
Returns
Evaluated PDF.

Implements Emitter.

virtual Film* PerspectiveCamera::GetFilm ( ) const
inlineoverridevirtual

Get film. Returns the film referenced by the camera.

Parameters
Film.

Implements Camera.

bool PerspectiveCamera::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.

virtual void PerspectiveCamera::PostConfigure ( const Scene scene)
inlineoverridevirtual

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.

bool PerspectiveCamera::RayToRasterPosition ( const Math::Vec3 &  p,
const Math::Vec3 &  d,
Math::Vec2 &  rasterPos 
) const
overridevirtual

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 PerspectiveCamera::RegisterPrimitives ( const std::vector< Primitive * > &  primitives)
overridevirtual

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 PerspectiveCamera::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 PerspectiveCamera::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 PerspectiveCamera::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 PerspectiveCamera::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: