EEVEE - Adaptive Irradiance Probe - IMPORTANT !!!!!
In many cases, esp. corners of the interior ( at ArchViz scene) there appear problems with proper shadowing of objects by Irradiance Probe.. Eevee needs improvement for the irradinace calculation to avoid invalid light splotches esp. in regions where the single irradiance probe cell is crossing the mesh face.
I would like to propose to implement an Adaptive option to the Irradiance Probe.
- It could detect objects proximity somehow ( i.e. like AO is calculated ) to find where the Adaptive subdivision of Probes should be placed
- user can set the maximum subdivision for the adaptive probes and engine could calculate needed value for specific objects proximity (equal or less to the value set by user ).
- to avoid huge memory usage Adaptive subdivided probes could share the memory cell size with the BASIC Irradiance probe ( use 100%-125% of memory of the base irradiance probe cell )
- there could be an option to place Adaptive probes only at the Front-Face of the object ( to skip placing at the back-face ) - it could spare some memory used for Adaptive Irradiance
- to avoid bright light leaks Irradiance could have an option to "make back-face SOLID FLAT BLACK" to avoid wrong light calculation. For example for the inside wall structure of interior ( it is usually solid so do not transfer any light ). I made some tests with material where I set back-face as solid black and it really helps to avoid irradiance light leaks at corners.
- maybe there should be an option to store Baked Lights in external file ( not inside the blend with the scene ).
What do you think about this kind of improvement? ( sorry for my crappy English )
2 Comments
What if we could have some kind of octree-based solution that subdivides cells adaptively?
Remember radiosity back in the pre-2.5 days? I'm thinking something like that. It can compare the baked values of neighboring nodes, and if the difference is great enough, increase the sampling density locally in that area.
Octrees can be encoded as textures on the GPU, and while I don't have a source on hand, I'm pretty sure octree lookups on the GPU aren't too bad (at least when you weight it against the memory savings).
Major +1 on this, specifically, from me. Even just some way to access baked irradiance volume data through the Python API would be enough, addon authors could figure out how to export it to a file from there. I asked about this a while ago but haven't found a way. I'm interested in exporting that baked irradiance data to use later in a production pipeline.
More relevant to the rest of this suggestion, there was an excellent talk at GDC 2019 by Morgan McGuire, Dynamic Diffuse Global Illumination about how to "minimize light leaking without requiring manual per-probe ... work by artists".