← All ideas
  • Published 2 Feb 2024

Add an option for EEVEE shader compilation to run in the background while in Cycles - for no compilation times swapping back

Captura de ecrã 2024-01-09 234252.png

Building complex EEVEE shaders has one big inconvenience which is the gradually longer "Compiling Shaders" wait times every time you modify the node tree. This one above for example is taking a whole minute to update the material shader for every modification, which makes it very slow and tiresome to keep building the node (which by the way, runs totally smooth when compiled, it's really just the compilation which holds you back).

Captura de ecrã 2024-01-09 233839.png

One workaround is to use Cycles instead to visualize the material, as Cycles immediately updates the changes with no compilation times, and just waiting a couple seconds for the render to clear up just enough is sometimes better than repeatedly having to wait a whole min (or more) for the real-time visualization with every change.

Nonetheless, the thing is sometimes you can't just exclusively use Cycles to visualize that EEVEE material and you need to do that swap back to EEVEE so you can test how it looks with the correct engine. The thing is that every time you go back to EEVEE you have to wait for the shader compiling to update the changes you did when in Cycles. If there was an option on the preferences to let EEVEE shader compilation to run in the background as you modify it in Cycles it would allow for a smooth ready-to-go transition to EEVEE without waiting a minute to continue working.

Is this viable? Would this background shader compilation slow the computer a lot to a point where Cycles is unusable? Because if it only slowed down Cycles' rendering just a bit and you could still render stuff relatively well, it would still be much more preferable than dealing with the minute long compilation waits. And you could always turn it off if you didn't want it (because, for example, you could be working on an exclusively Cycles material and don't care about it being ready to go when changing to the other engine).

The workflow for complex EEVEE node building would basically now be:

  1. Swapping to Cycles when you want to work on the node tree;
  2. Doing your changes and visualizing them relatively fast with raytracing (you only need a still frame and its much better than the minute long wait times with every modification);
  3. As you observe and look around how the new changes were expressed on the material, just enough time has passed so that you can change back to EEVEE for normal visualization and the compilation will already be close to done or finished, letting you have a flow where you almost never lose sight with the finished compiled material.

As someone who has been building lots of complex shaders lately (and others also in this situation can speak about how they feel about it too in the comments), having no choice but to be obligated to watch a blank material load for a minute, breaking workflow, repeatedly, when you just tryna make a procedural cookie, is torture. With this option, we could work on the shader in Cycles, never experiencing the "blank shader" wait times both there and when swapping back to EEVEE as strongly as before.

This would be a giant time saver and a good workaround to mitigate the slow compiling shader problem, that I understand is hard to fundamentally fix, with complex materials in Blender at the moment.

Thank you for your time.

100%

Development Status: Open

Upvote 1 Downvote 0
peterybeirou
2 Feb 2024

0 Comments