[Development / Helping] Adaptive Probe Volume for Blender

Hello everyone !

As you know EEVEE-NEXT is coming soon for blender, the latter has been pushed back from blender 4.1 to Blender 4.2 LTS! In itself it’s not such a bad idea. This leaves more time for the development team to optimize, correct and resolve bugs or implement other features that may be necessary for eevee-next!

As you know EEVEE-next should arrive with support for global illumination which is itself based on SURFELS! The blender team has not yet communicated on the fact if it is a real global illumination or there is no need to bake each time we make a modification, or if it is acts as a true global illumination where everything is done without user interaction in a way like an “Automatic” Bake.

For my part I know that the Probe volume has been updated due to the fact that it will always be possible to use the probe volume as a default bake source to store the “Light / Reflection” information.

Blender currently has a Volume probe, however the latter is not “Dynamic” it does not have an “Adaptive” density, i.e. if you have more mesh (Object) in certain places and your Probe has a fairly low resolution it becomes complicated to correctly store the light information in it! So you must automatically increase the number of probes in the chosen column X OR Y OR Z !

Where Unity was extremely clever was that they “Created” an adaptive Volume Probe! The probe will never come INTO the geometry, because it uses a virtual offset and covers a large part, if the part is not covered enough then it subdivides the cell and this adds another probe on top !

See how basically a cube and when we need more resolution in a face, we subdivide the face in question like here.

Which means that where it is empty we have cells which are subdivided only once and therefore we only have one probe in this cell, but the more the cell is subdivided the more then the number of probes in this cell increases! which gives us something.

Blender teams (Eevee team) rewrote a lot of functionality regarding the probe volume! To be honest 90% of the probe volume is already done including the virtual offset!

To summarize, all that remains is to create a system if we want to let the probe densify automatically, or switch to manual mode as is already the case currently.
The probe in automatic mode is exactly the same functionality as that of unity and its APV. You just need to detect the mesh and be able to subdivide it automatically.

So we will use a “Volume” which will exploit the properties of an octree voxel adaptive subdivision, which will automatically adjust according to the amount of geometry around.
What is the purpose of the latter, you tell me?

  • Well to be able to subdivide only the cells which need to be subdivided, concretely you take it you put it in your scene you give it a size and then it manages everything automatically except an intensity parameter of FLOAT value which can be increase or decrease.

exemple of voxel octree avec subdivision adaptative :

This project is a community project! In C++ / Python
I’m not closed to help, it’s a challenge that I’m taking on to bring a very requested functionality to Blender’s Rclick, which is very useful! And will help us, and above all will not neglect a task!

However, I only have some basics in C++, which is why I’m throwing a bottle into the sea for help through this topic, and also to have regular progress on the progress of this functionality! Any help is accepted so that we can see this thing appear as quickly as possible!

Here I start from 0 !

Thank you for your help !

PS: Blender had talked about integrating a sparse grid or multi LOD GRID but I don’t know at all if it does the same thing and when it’s planned it’s difficult to get information about it!

1 Like