Giter VIP home page Giter VIP logo

spatiotemporal-variance-guided-filtering's Introduction

Spatiotemporal Variance-Guided Filtering implementation in OpenCL

This is an implementation of the the SVGF algorithm (Schied et al. 2017) for denoising ray traced images with low sample count.

Modifications

A few simplifications are made from the original algorithm:

  • This implementation does not separate direct and indirect lighting
  • It is also only made to tackle static scenes, i.e. there are no motion vectors
  • There is also no use of mesh IDs to accumulate samples correctly, which is less of a problem when the scene is assumed static.

Sample Results

The following shows a ray traced scene with one ray sample per pixel, without denoising

Original, non-denoised rendering

The following shows the same image, after denoising has been applied:

Denoised rendering

The algorithm uses buffers containing world-positions, surface normals and albedo for each pixel, as well as samples from previous frames to generate the result.

These performance results are obtained on a laptop with GeForce GTX 960M:

 Reprojecting samples
 --------------------
   Mean   : 2.022 ms
   Min    : 1.974 ms
   Max    : 2.106 ms
   Total  : 119.273 ms


 Computing variance
 ------------------
   Mean   : 10.180 ms
   Min    : 8.363 ms
   Max    : 21.723 ms
   Total  : 600.639 ms


 Running atrous multiple iterations
 ----------------------------------
   Mean   : 39.488 ms
   Min    : 39.071 ms
   Max    : 40.125 ms
   Total  : 2329.813 ms


 Total
 -----
   Mean   : 51.696 ms
   Min    : 49.515 ms
   Max    : 63.598 ms
   Total  : 3050.049 ms

The code is not thoroughly optimized due to time constraints.

When run on desktop hardware, the algorithm is fit for more than 60 frames per second.

Acknowledgements

Much of the utility code and the structure of the OpenCL code is adapted from Koskela et al.'s Blockwise Multi-Order Feature Regression implementation, although the algorithm itself is completely different.

spatiotemporal-variance-guided-filtering's People

Contributors

thevaffel avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.