Only Update Adjusted object in render preview
Here's an idea for a more responsive render preview:
When in Cycles render preview, if the user is doing adjustments to shaders, or moving an object, the whole viewport has to rerender from scratch for every small change. This gives slow updates.
If Blender temporarily only rerendered the pixels within the outline of the object the user is adjusting, it could give them quicker updates for faster decisions. A lot less pixels to render in many cases! When the action is complete (the material is adjusted, for example) , and only then it would rerender the rest of the viewport.
This behavior could be a checkbox in the render preview settings.
5 Comments
The faster, easier to implement, and more commonly found elsewhere solution is to only render what's inside the render border box area WITHOUT erasing everything outside of the box.
But when you make a change to one single object, pretty much the whole render is affected.
Not always, but Yes. In many cases - very subtly. For example, you are adjusting a tiny LED color of a TV. Constantly Rerender the whole scene because of a few pixels that barely affect the rest of the scene? Nah, bro. Even if it's a bigger object, still, what happens to the surrounding objects is secondary. Getting updates on the object that the user is adjusting/focusing on is what matters the most. So, if you are changing the color of a cup on a table, so what if the color doesn't change in bounce lighting or reflections till you are done? You focus on the cup itself. Then, the rest updates when the action is complete.
Another example: you have a forest full of trees, right? You adjust the hue of the leaves of one tree out of the 100. The bounce lighting affects the rest of the trees super subtly, so it really not worth getting constant updates on them all until the user lets go of the hue value slider...
But then, how can Blender detect which case needs a localized update or not?
Very simple. Firstly, the user decides whether blender should do localised updates or not. Checkbox in the viewport render preview settings. Then, basically all sliders (rgb or vector, or numbers) in the node editor would do the localised render. It won't work if the action is instant, like typing in a value and hitting enter, or connecting/disconnecting nodes. However, If the user is dragging on them, looking for a value, like the RBG wheel, for example, or a shader mix value, then it would work.
The localised render could possibly even work when translating objects in the 3D viewport, but this is a lot more complicated, and way uglier, as it has to rerender pixels where the object went and where it was. This would result in a very obvious mismatch on the surrounding objects. Though... at least you'd get speedy results on where you've moved/rotated/Scaled the object, while it's moving, until you let go, and then the whole viewport rerenders...