Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Seminar SVGF #30

Open
wants to merge 27 commits into
base: master
Choose a base branch
from
Open

Seminar SVGF #30

wants to merge 27 commits into from

Conversation

sshadr
Copy link

@sshadr sshadr commented Sep 4, 2022

My submission for the seminar Algo. for Real-Time RayTracing based on Scheid et al.'s, "Spatiotemporal Variance-Guided Filtering: Real-Time Reconstruction for Path-Traced Global Illumination"

Quick guide to this submission:

Main work is in src/backend/driver/filter.art
The functions in filter.art are linked into the pipeline as given in the paper in src/backend/driver/glue.cpp
For testing the pipeline and the algorithm, I have created some bools in glue.cpp and filter.art that might be convenient (I didn't implement functionalities in the UI for running the experiments)

Experiments that might be useful:
In glue.cpp: You can make temporal_enable = false and the pipeline reverts to a pure 5 level Atrous wavelet filtering. This would be just the spatial filtering part of the algorithm in the paper and still works pretty good.
In glue.cpp : If temporal_enable = true, then this is the complete pipeline and the difference can be seen when running a scene in continuous mode. But artifacts might be present (possibly some unresolved bugs)

Scene file has to be modified to include the AOVs required for filtering. Please refer to scenes/diamond_scene.json for the inclusions.

This code is tested only in macOS (cpu only).

The initial fork of this repo is pretty far up the pipeline ....I tried the merge but have some compilation issues with newer versions of anydsl and Ignis and macOS :( but I can help with the merge. Fortunately I was able to work on a version that did not give me much problems.

I have commented the code and I hope things make sense :) Pretty sure it can be optimised much better than this version but currently it is what it is.

Please feel free to contact me in case there are any issues with the code(if something that doesn't make sense) or any bugs that can be resolved :)

This was a very cool algorithm to implement and I learnt so many new algorithms and debugging strategies (had to be a bit creative with the prints and buffers :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant