Fermat
|
An implementation of a path tracer using a simplified version of Path Space Filtering. Unlike the original implementation, this version is not progressive, and relies on efficient spatial hashing for defining accumulation neighborhoods, following ideas first developed by Sascha Fricke, Nikolaus Binder and Alex Keller.
see:
Fast path space filtering by jittered spatial hashing, Binder et al, ACM SIGGRAPH 2018 Talks.
#include <psfpt.h>
Public Types | |
enum | PassType { kPresamplePass = 0, kFinalPass = 1 } |
typedef AdaptiveClusteredRLStorage | VTLRLStorage |
Public Methods | |
void | init (int argc, char **argv, RenderingContext &renderer) |
void | render_pass (const uint32 instance, RenderingContext &renderer, const PassType pass_type) |
void | render (const uint32 instance, RenderingContext &renderer) |
void | keyboard (unsigned char character, int x, int y, bool &invalidate) |
void | destroy () |
Public Methods inherited from RendererInterface | |
virtual uint32 | auxiliary_channel_count () |
virtual void | register_auxiliary_channels (FBufferStorage &fbuffer, const uint32 channel_offset) |
virtual void | update_scene (RenderingContext &renderer) |
virtual void | mouse (RenderingContext &renderer, int button, int state, int x, int y) |
virtual void | draw (RenderingContext &renderer) |
virtual void | dump_speed_stats (FILE *stats) |
Static Public Methods | |
static RendererInterface * | factory () |
Public Members | |
DomainBuffer< CUDA_BUFFER, uint8 > | m_memory_pool |
PSFPTOptions | m_options |
TiledSequence | m_sequence |
cugar::LFSRGeneratorMatrix | m_generator |
cugar::LFSRRandomStream | m_random |
MeshVTLStorage * | m_mesh_vtls |
VTLRLStorage * | m_vtls_rl |
cugar::Bbox3f | m_bbox |
float | m_time |
PTStats | m_stats |
DeviceHashTable | m_psf_hash |
DomainBuffer< CUDA_BUFFER, float4 > | m_psf_values |
|
inlinevirtual |
this method is responsible for destroying the object itself
Reimplemented from RendererInterface.
|
virtual |
this method is responsible for any command options parsing / initializations the renderer might need to perform
Reimplemented from RendererInterface.
|
virtual |
this method is responsible for handling keyboard events
Reimplemented from RendererInterface.
|
virtual |
this method is responsible for rendering a given frame in a progressive rendering
instance | the frame instance |
Reimplemented from RendererInterface.
void PSFPT::render_pass | ( | const uint32 | instance, |
RenderingContext & | renderer, | ||
const PassType | pass_type | ||
) |
[PSFPT::render-1]
[PSFPT::instantiate_vertex_processor]
[PSFPT::instantiate_vertex_processor] [PSFPT::render-1]
[PSFPT::render-2]
[PSFPT::render-2]