← All ideas
  • Published 11 Feb 2022

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.

50%

Development Status: Open

Upvote 2 Downvote 2
FreeMind
11 Feb 2022

5 Comments

thinsoldier

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.

Lauloque

But when you make a change to one single object, pretty much the whole render is affected.

FreeMind Author

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...

Lauloque

But then, how can Blender detect which case needs a localized update or not?

FreeMind Author

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...