Blender is such a complicated program? Then why can't you pause renders?

It’s such a simple thing.

Why can’t you pause renders?

Because it isn’t implemented.


3D programs are the most difficult programs on Earth not the easier ones.
Easier ones are the voting machines, like the USA brand.

Pausing a render, especially in a path tracer, is not at all a simple thing… you need to be able to store all previous sampling values for each pixel which would involve creating a whole new file format JUST for saving render progress. Not to mention the colossal nightmare of making it work on the GPU as well.

If you don’t like something and it’s supposedly simple then add it yourself.

Because the OS can already do it,
Just pause the process -

As far as I know, this is not as complicated as you are saying it is. You can already pause the viewport render without any trouble. I think it’s just one of those features that they just haven’t gotten to yet.

Yes, you could do that if all else fails but, 1.) you can’t do that will all os’s and 2.) it’s not really an easy artist friendly way of going about it. I would hate to see this feature not get implemented because you can already open a terminal and type in some commands. Not to mention, a lot of people could probably mess things up in there just as easily.

Which OS’s don’t support suspending processes?

You can’t do this in OS X from the Activity monitor.

Why pause though? If you suddenly need to do something else you can just switch Blender to low priority.

In fact, IMO Cycles should render with low priority be default. It’s not like it would actually render slower by any significant factor that way - as long as you aren’t using your pc for something else in which case that something else is probably more important anyway.

Edit: Oh, right, GPU rendering.

My case is what would need to happen in order to save out render progress and restart at a later time, or even on another machine, like you can with Lux and a couple of other packages. I assumed that’s what the OP was talking about.

Why pause the render?
This is such a complicated need…
When you render an image sequence you can cancel anytime and then continue from the last frame from your sequence.
Sorry, I tried but I can’t find any reason to pause the render… I need some help to understand this need…

When I hear “it’s so simple” from management I usually know it means a sleepless weekend. :slight_smile:

Have you had a look at the code and determined it is easy? I’m thinking not. Rendering algorithms are not simple. If you want a pause button you are going to need some way to store the state of the render. I haven’t looked at the code myself but as a programmer that has attempted in the past to write ray tracing programs (my son thinks I should write a game and rake in the bucks! as if…) I have a lot of respect for the team that wrote both the Blender render engine and especially the Cycles render engine (my default).

It isn’t “such a simple thing.”

Personally, I had tried once to render an animation with Blender and it was unpleasant experience. I have not so far get my hands on a big project but the next time it will be I will sure try to see alternatives.

Render from command prompt, at least any GUI overhead will be avoided and I will be sure that Blender won’t hang up easily.

Alternatively, perhaps I will find a render management software compatible with Blender.

If the machine is powerful enough, you don’t even need to pause the process using the OS pause feature or even switch Cycles to low-priority.

My i7 machine for example allows me to browse the internet and watch videos while the renderer is running (though Firefox’s performance is impacted somewhat while Cycles is going). But considering that other engines have their own pause feature, it would be nice to have one in case you need to use your machine for another CPU-intensive process.

I think Indy_Logic already mentioned this but I am also a bit perplexed by you guys that are saying this would be a complex undertaking. You can already pause the viewport render so how hard can it be to extend this function to the F12 render.

Are you guys not confusing pausing with stopping a render.

Pausing the render is a nice feature of Luxrender.

I think the idea for pausing is that you can pause, close blender, unplug your computer for a week, then return to complete the render or on another computer.

However this is cool for LuxRender, I think it is not completely necessary for cycles as it more targets animation

I’m not a programmer but I don’t see what is so complex.
It’s not like a video game where you want to save the state of all objects, AI and animations. You just save the progress (ie .exr, assuming it can store all passes) and some metadata (ie, what frame, how many samples were rendered or which tiles) and load the rest again from the start when you want to resume, user’s fault if he changed the scene.
For progressive- blend with the right amount, for tiles- don’t render the tiles already done (plus also some margin)

A user can obviously do the same thing manually (other than controlling tile render pattern) but the task if someone were interested would be about automating it (for all channels too) and making it convenient.

Is that actually true though? Observing the way the cycles live preview render builds up the image - its almost as if its calculating each pass individually - then stacking the result (kinda like what astrophotographers do - taking many short exposures then stacking them to reduce noise).

I say this because during live preview, if you up the number of samples from say 50 to 100 (without changing anything else) - the render doesn’t restart from the beginning - it simply adds to what has already been generated.

In this respect - live preview has a kinda psedo pause built in - in as much as you can set the number of samples low - render the result and if you like where it is headed - you can keep adding more samples in small increments until you have a noise free image. I guess the OP is looking for an automated way of doing the same. All the renderer would have to do is remember how many passes have been rendered for for each tile when the render is paused - then resume from that number when the render is restarted.

Of course - this assumes the OP is talking about a live pause - not the ability save a paused render and resume during another session.

I think its a bit silly to continue speculating here, either open up the code and investigate or mail bf-cycles mailing list and ask.

There are lots of details - like if you expect pausing to allow rendering other scenes, or even simple actions like editing a mesh, should work between sessions, what kinds of operations you would expect to be able to perform while paused make a big difference to how complex this task is.

I would like to be able to pause my mouse.:stuck_out_tongue: