Skip to content

Latest commit

 

History

History
211 lines (132 loc) · 7.88 KB

README.md

File metadata and controls

211 lines (132 loc) · 7.88 KB


Logo

RealBloom

Physically Accurate Bloom Simulation Software
Latest Release · Tutorial · Report Bug

Table of Contents
  1. Introduction
  2. Running RealBloom
  3. Using RealBloom
  4. Building RealBloom
  5. Roadmap
  6. Nodes
  7. Contributing
  8. License
  9. Contact

Introduction

RealBloom is a sophisticated bloom simulation tool for achieving more realism in 3D renders and HDR images.

RealBloom Screenshot

RealBloom Screenshot

RealBloom was started as a hobby project in late August 2022, inspired by AngeTheGreat's video on bloom and how to simulate it in a physically accurate manner. I highly recommend watching this video to get a basic understanding of how RealBloom works. Make sure to check out their GitHub page and their other projcets!

The ultimate goal is to achieve more realism in 3D renders that contain bright spots on dark backgrounds. For example, the sun in a blue sky, a car headlight at night, bright lights at a concert, a flashlight pointing directly at the camera, you name it. RealBloom can be used to produce some other effects, including film halation, motion blur with arbitrary curves, uniform lens blur, etc.

How It's Made

RealBloom is written in C++ with Visual Studio 2022. The target platform is Windows. However, considering all the libraries used and most of the code for RealBloom are platform-independent, it should be fairly easy (ish) to port to other major desktop platforms.

RealBloom uses the following libraries:

Library Used for
GLEW OpenGL extensions
GLFW Window and context creation for use in ImGui
Dear ImGui Graphical user interface
NFD Extended Native file dialogs
OpenColorIO Color management
OpenImageIO Reading and writing images
PocketFFT 2D Fast Fourier Transforms
dj_fft 2D FFT on the GPU
pugixml Parsing and serializing XML files
Rapidcsv Parsing CSV files

(back to top)

Running RealBloom

RealBloom requires Microsoft Visual C++ Runtime to run properly. Chances are you already have it installed, though. To get RealBloom, you can download the latest release here.

Minimum Requirements

  • 64-bit version of Windows

  • 4 GB of RAM

  • GPU with OpenGL 3.2 support

(back to top)

Using RealBloom

Check out this page for a step-by-step tutorial on getting started with RealBloom, along with more details and information about the project. This will cover most of what you need to know.

(back to top)

Building RealBloom

Prerequisites

The project was made for Windows and built with MSVC. To build a local copy of RealBloom, have a recent version of Visual Studio ready.

Build

  1. Clone the repo:

    git clone https://github.com/bean-mhm/realbloom.git
  2. Open RealBloom.sln in Visual Studio.

  3. Build the solution and run RealBloom.exe. Feel free to explore and play with the code!

(back to top)

Roadmap

  • Color Management System
  • OpenEXR support
  • Command Line Interface
  • GPU Dispersion
  • [WIP] GPU FFT Convolution
  • GPU Image Transforms
  • Node-based workflow
  • Support for animated apertures, kernels and input images
  • GPU Diffraction Pattern

See open issues for a full list of proposed features (and known issues).

(back to top)

Nodes

I have in mind to make RealBloom's interface more generic and robust by making it node-based. Here's the concept represented using Blender's node system:

Node-based approach

Unfortunately, I can't afford the time to work on this as of now, but I do plan on doing it whenever possible. If you do have the time and some knowledge on node-based applications, feel free to fork the repo and work on it, which would be really appreciated!

For some initial ideas, there could be a specific text format - based on XML, JSON, or anything else - for representing nodes, a core library that runs a node-tree, and a GUI for creating, managing, and displaying nodes.

Nodes could have unique IDs, cached buffers that only get reprocessed when the node's input parameters change, status and progress indicators, etc. You can see some example nodes in the image above.

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

License

Distributed under the AGPL-3.0 license. See LICENSE.md for more information.

(back to top)

Contact

☀️ RealBloom Community Server: Discord

🧑‍💻 Harry Bean (Developer): Email

🔗 Project Link: GitHub

(back to top)