This class implements a "policy" template for bidirectional path tracing: all bidirectional path tracing kernels are templated over a TBPTConfig class that must implement this interface. In order to change the policy, it is sufficient to inherit from this class and override the methods. Note that the methods are not virtual, but the code is written so as to use the implementation of the last class that overrides them, mantaining the inlining efficiency.
|
FERMAT_HOST_DEVICE FERMAT_FORCEINLINE | BPTConfigBase (const BPTOptionsBase &_options, VertexSampling _light_sampling=VertexSampling::kAll, VertexOrdering _light_ordering=VertexOrdering::kRandomOrdering, VertexSampling _eye_sampling=VertexSampling::kAll, bool _use_rr=true) |
|
FERMAT_HOST_DEVICE FERMAT_FORCEINLINE | BPTConfigBase (uint32 _max_path_length=6, VertexSampling _light_sampling=VertexSampling::kAll, VertexOrdering _light_ordering=VertexOrdering::kRandomOrdering, VertexSampling _eye_sampling=VertexSampling::kAll, bool _use_vpls=true, bool _use_rr=true, float _light_tracing=0.0f, bool _direct_lighting_nee=true, bool _direct_lighting_bsdf=true, bool _indirect_lighting_nee=true, bool _indirect_lighting_bsdf=true, bool _visible_lights=true) |
|
FERMAT_HOST_DEVICE FERMAT_FORCEINLINE | BPTConfigBase (const BPTConfigBase &other) |
|
FERMAT_HOST_DEVICE FERMAT_FORCEINLINE bool | terminate_light_subpath (const uint32 path_id, const uint32 s) const |
|
FERMAT_HOST_DEVICE FERMAT_FORCEINLINE bool | terminate_eye_subpath (const uint32 path_id, const uint32 t) const |
|
FERMAT_HOST_DEVICE FERMAT_FORCEINLINE bool | store_light_vertex (const uint32 path_id, const uint32 s, const bool absorbed) const |
|
FERMAT_HOST_DEVICE FERMAT_FORCEINLINE bool | perform_connection (const uint32 eye_path_id, const uint32 t, const bool absorbed) const |
|
FERMAT_HOST_DEVICE FERMAT_FORCEINLINE bool | accumulate_emissive (const uint32 eye_path_id, const uint32 t, const bool absorbed) const |
|
template<typename TBPTContext > |
FERMAT_HOST_DEVICE FERMAT_FORCEINLINE void | visit_light_vertex (const uint32 light_path_id, const uint32 depth, const VertexGeometryId v_id, TBPTContext &context, RenderingContextView &renderer) const |
|
template<typename TBPTContext > |
FERMAT_HOST_DEVICE FERMAT_FORCEINLINE void | visit_eye_vertex (const uint32 eye_path_id, const uint32 depth, const VertexGeometryId v_id, const EyeVertex &v, TBPTContext &context, RenderingContextView &renderer) const |
|