[Suggestion] Finish render after next iteration
Hi,
I wanna make another little suggestion for a DazStudio update.
If I see my image looks good and I wanna finish it, I know the software is still trying to make better, so its like this:
Iray Iteration: 268
Iray :Render target canvas was written.
Iray Iteration: 296
Iray :Render target canvas was written.
Iray Iteration: 326
Iray :Render target canvas was written.
Iray Iteration: 359
Iray :Render target canvas was written.
and I know with the next "jump/step" it could be 380,390 or whatever, so, if he is done with that part, on what he is right now working he should stop. That I can grab that last in progress part too.
If I say now Cancel, he stop where he is.
I hope, you did understand what I'm talking about? :) So after the next Canvas is written Cancel/stop the render.
Thanks.
Comments
The iterations are an arbitrary amount, just showing how many times the image was updated. Each iteration creates random calculations and then the output is "averaged" to create the final output. No single iteration would be render quality, more like noise.
How this is useful to you is that if you stop a render and want to improve it later, it's somewhat easy with an image editor (like GIMP or Photoshop). Render 1st time, save. Render 2nd time, save. Load both images into the editor, then overlay them and set the opacity to 50% of the top layer. Combine the layers and now you've essentially added them together. If you're first render was 500 iterations and the second one was 500, combining them this way is about the same as rendering with 1000 iterations.
If there is a way to load a previous render and continue it, I don't know what it is. I will generally render a smaller image first to save time and examine the results before rendering a larger one. Then the final render is done overnight or when I can walk away for a few hours.
Hope this helps!
I'm not sure what the issue is. When you click on the Cancel button, the last iteration is written to the target and the render stops. (I admit, I do not know if Cancel also ends the iteration in progress, or if it completes that iteration and then ends.)
Keep in mind, the dialog where you are reading "Iray :Render target canvas was written. Iray Iteration: nnn" seldom updates with each iteration, so while the history may show the last iteration as 296, the render could easily be working on iteration 326 when you hit the Cancel button. Each time the render engine writes an update to the history it uses time that could be used for processing the render. The more frequently the history is updated, the fewer iterations you'll see in the same amount of time. (With fast systems and newer/newest Nvidia cards, that time lost may be negligible.) You can actually control the frequency of those updates in your Render Settings > Progressive Rendering > Update Interval (Secs). That setting is 5 seconds by default, but you can set the value lower or higher if you prefer. (I personally don't recommend going lower, but you could give it a try and see if it meets your needs.)
When I was still rendering CPU only, I actually set that to 30 seconds.
As far as I know, the only way to Resume a render is to not close the Render Window. All the information needed for the render is in memory, either system memory if you're rendering with CPU, or the video card memory, if you're rendering with the GPU. When you save the render via the Save button of the Render Window, it also closes the window and removes that information from the memory.
You can, however, save a render in progress using the File menu of Daz Studio without closing the Render Window;
You can then go back to the Render Window and click on Resume to continue with the render. This allows you to work with the lower quality image while the final image continues to render. (How well working with another program while rendering goes will depend on your computer.)
I hope you find this information useful.
I don't see what benefit you hope to get from this suggestion. Let's suppose your render runs according to your quoted text:
But you actually press the cancel button after it says it's done iteration 326. It does multiple iterations between updates of the status text, so let's suppose that it's working on iteration 330 by the time you press the button. I think the current functionality is for it to stop, and serve up the result of the last completed iteration (329 in this case) as the final picture. Are you suggesting that it waits till it completes iteration 330 and sends that? Or maybe that it waits till it's done iteration 359 and sends that?
Either way, you'd be very unlikely to spot any difference between iterations after the first few, the process is just too gradual. And in any case, if you "see my image looks good and I wanna finish it" what is there to wait for? Progressive renders can always get "better," the algorithm will carry on refining the image for ever if you let it, way beyond the point where it makes any difference to the human observer. If you're happy with how an image looks, stop the render. If you're not, don't stop it. There's no other option that makes sense.
+1
That last thing is interesting, because sometimes I wish I could save it and then let it still render, so maybe I like the next better renderd version, but just in case, my PC will crash or whatever I have already a first rendered option. I can spotrender later to improve some parts, like I much times do for faces, to give faces a best possible detail.
Yes, I just want that it stops at the next iteration, the PC is doing the work so... why wasting it? just grab that little/tiny improvement and then end it. Thats what i want. Yes if he said "329 written" and I press cencel, but he didnt updated the log since 1minute, then... well he is still working.
I have mainly a ~30sec update intervall, but sometims I check the clock and 1-2minutes are over and it did not updated the history/log, so maybe he is already on iteration 335 and not just 330? so why should I wanna delete the invested time/work? I just wanna grab what he have already done.
just set your iterations to a number you see is OK, the default is 5,000 or 7500, mostly of renders in normal viewport size looks good on 500/650 iterations.