Giter Club home page Giter Club logo

pedroperez14 / srat-rt Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 125.89 MB

Real time spectral renderer based on the spectral uplifting technique for RGB textures, using OpenGL 4.5. This project was part of my Master's Thesis "Techniques for real-time spectral rendering"

License: BSD 3-Clause "New" or "Revised" License

CMake 0.30% C++ 51.76% C 10.42% GLSL 6.49% Python 2.67% Jupyter Notebook 28.37%
opengl real-time spectral-rendering spectral-uplifting real-time-rendering spectral-upsampling

srat-rt's Introduction

sRAT-RT: Spectral Renderer for All-purpose Tasks, in Real Time

A spectral real-time renderer based on OpenGL 4.5 for my Master's Thesis. This renderer performs spectral upsampling of reflectances, allowing to use RGB textures and assets to perform spectral rendering. The method we implemented is the one as in Jakob and Hanika, 2019.

This project is based on the CMakeLists.txt that can be found in the repo imgui-glfw-glad as a base, with some modifications to also use assimp.

Compilation instructions

With a terminal, go to the root folder of the repository and execute the following commands:

cmake -S . -B build
cmake --build build --target sRAT-RT -j4

It is possible to substitute the first command with a call to cmake or cmake-gui. The second command can also be replaced by a regular compilation in Visual Studio (tested with the 2019 version)

How to use

In order to execute, you need to execute the following commands in a terminal from the build folder (Assuming Debug configuration, if otherwise, change it for Release):

.\Debug\sRAT-RT.exe -s ..\settings\example_settings.ini

If no parameter -s is specified, the configuration file might not be automatically loaded correctly, so be careful, I use -s just in case. The aforementioned configuration file can be used to change some options, you can edit it with any regular text editor. Once you run the program, you will have an UI to tweak some parameters and experiment with different set ups.

Known limitations

As far as I know, PBR materials and underwater simulation are broken when used together in a scene. This shouldn't be very hard to fix, just something that got broken in the final crunch because most of my tests were done with diffuse materials instead of PBR, but I'm not contemplating fixing anything for now. I'd prefer to move on to other projects rather than polishing the same one, but if you really need that bug fixed and can't figure it out on your own, feel free to contact me!

It would also be extremely convenient to add a scene selector (and an editor in the distant future), but for now you have to edit the Scene::Scene() constructor in the Scene.cpp file.

License

I used several libraries with different licenses, so I'd like to use the one that is compatible with all of those licenses (most restrictive of those) while being the one that provides the most freedom of the possible license formats. I think assimp is the one with the most "restrictive" license, so I'll reproduce theirs in my LICENSE file.

srat-rt's People

Contributors

pedroperez14 avatar

Stargazers

José Daniel Subías avatar

Watchers

 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.