Photon Engine 2.0.0-beta
A physically based renderer.
|
#include <SurfaceEmitter.h>
Public Member Functions | |
SurfaceEmitter (EmitterFeatureSet featureSet=defaultFeatureSet) | |
void | evalEmittedEnergy (const SurfaceHit &Xe, math::Spectrum *out_energy) const override=0 |
Evaluate emitted energy from a point on the surface. | |
void | genDirectSample (DirectEnergySampleQuery &query, SampleFlow &sampleFlow, HitProbe &probe) const override=0 |
Sample direct lighting for a target position. | |
void | calcDirectPdf (DirectEnergyPdfQuery &query) const override=0 |
Calculate the PDF of direct lighting for a target position. | |
void | emitRay (EnergyEmissionSampleQuery &query, SampleFlow &sampleFlow, HitProbe &probe) const override=0 |
Emit a ray that carries some amount of energy from this emitter. | |
virtual void | setFrontFaceEmit () |
virtual void | setBackFaceEmit () |
Public Member Functions inherited from ph::Emitter | |
Emitter (EmitterFeatureSet featureSet=defaultFeatureSet) | |
virtual | ~Emitter () |
virtual real | calcRadiantFluxApprox () const |
EmitterFeatureSet | getFeatureSet () const |
Protected Member Functions | |
bool | canEmit (const math::Vector3R &emitDir, const math::Vector3R &N) const |
void | calcDirectPdfWForSrcPrimitive (DirectEnergyPdfQuery &query, const lta::PDF &pickPdf=lta::PDF::D(1), const lta::PDF &emitPosUvwPdf={}) const |
Protected Attributes | |
bool | m_isBackFaceEmission |
Additional Inherited Members | |
Static Public Attributes inherited from ph::Emitter | |
static constexpr auto | defaultFeatureSet = EmitterFeatureSet(EEmitterFeatureSet::Default) |
|
explicit |
|
overridepure virtual |
Calculate the PDF of direct lighting for a target position.
EEmitterFeatureSet::DirectSample
Implements ph::Emitter.
Implemented in ph::DiffuseSurfaceEmitter, ph::DiffuseSurfaceEmitterBase, ph::GroupedDiffuseSurfaceEmitter, and ph::LatLongEnvEmitter.
|
protected |
Performs calcDirectPdf()
on the source primitive specified by query.inputs
. This computes solid angle domain PDF of sampling the surface emitter (as represented by the source primitive).
EEmitterFeatureSet::DirectSample
|
protected |
emitDir
given surface normal N
. This method also considers front/back face emission settings.
|
overridepure virtual |
Emit a ray that carries some amount of energy from this emitter.
EnergyEmissionSampleOutput::getEmittedRay()
and probe
)EEmitterFeatureSet::EmissionSample
Implements ph::Emitter.
Implemented in ph::DiffuseSurfaceEmitter, ph::DiffuseSurfaceEmitterBase, ph::GroupedDiffuseSurfaceEmitter, and ph::LatLongEnvEmitter.
|
overridepure virtual |
Evaluate emitted energy from a point on the surface.
Xe | The point that emits energy. |
Implements ph::Emitter.
Implemented in ph::DiffuseSurfaceEmitter, ph::DiffuseSurfaceEmitterBase, ph::GroupedDiffuseSurfaceEmitter, and ph::LatLongEnvEmitter.
|
overridepure virtual |
Sample direct lighting for a target position.
DirectEnergySampleOutput::getObservationRay()
and probe
)EEmitterFeatureSet::DirectSample
Implements ph::Emitter.
Implemented in ph::DiffuseSurfaceEmitter, ph::DiffuseSurfaceEmitterBase, ph::GroupedDiffuseSurfaceEmitter, and ph::LatLongEnvEmitter.
|
virtual |
Reimplemented in ph::LatLongEnvEmitter.
|
virtual |
Reimplemented in ph::LatLongEnvEmitter.
|
protected |