Fermat
Public Types | Public Methods | Static Public Methods | Public Members | List of all members
PSFPT Struct Reference

Detailed description

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>

Inheritance diagram for PSFPT:
RendererInterface

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 RendererInterfacefactory ()
 

Public Members

DomainBuffer< CUDA_BUFFER, uint8 > m_memory_pool
 
PSFPTOptions m_options
 
TiledSequence m_sequence
 
cugar::LFSRGeneratorMatrix m_generator
 
cugar::LFSRRandomStream m_random
 
MeshVTLStoragem_mesh_vtls
 
VTLRLStoragem_vtls_rl
 
cugar::Bbox3f m_bbox
 
float m_time
 
PTStats m_stats
 
DeviceHashTable m_psf_hash
 
DomainBuffer< CUDA_BUFFER, float4 > m_psf_values
 

Member Function Documentation

◆ destroy()

void PSFPT::destroy ( )
inlinevirtual

this method is responsible for destroying the object itself

Reimplemented from RendererInterface.

◆ init()

void PSFPT::init ( int  argc,
char **  argv,
RenderingContext renderer 
)
virtual

this method is responsible for any command options parsing / initializations the renderer might need to perform

Reimplemented from RendererInterface.

◆ keyboard()

void PSFPT::keyboard ( unsigned char  character,
int  x,
int  y,
bool &  invalidate 
)
virtual

this method is responsible for handling keyboard events

Reimplemented from RendererInterface.

◆ render()

void PSFPT::render ( const uint32  instance,
RenderingContext renderer 
)
virtual

this method is responsible for rendering a given frame in a progressive rendering

Parameters
instancethe frame instance

Reimplemented from RendererInterface.

◆ render_pass()

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]


The documentation for this struct was generated from the following files: