← All ideas
  • Published 26 Aug 2020

Faster GPU Progressive Rendering

As many of you may know you can choose to render a scene with tiles or progressively. Those two methods do a great job when using classic CPU rendering. But we all know Progressive Rendering with a GPU is about 30%-50% slower than Tiled Rendering.

One way to make Progressive Rendering faster with GPU Rendering is to set the tile size in automatic to get classic big tiles suitable for GPU, but instead of rendering them one at a time it will render, let's say 5% of the total samples and then render another 5% of another tile and again and again to get a "progressive rendering with tiles" wich can be a lot more efficient than rendering with one gigantic tile like Cycles does right now.

If you want to get some reference, Octane Render renders normally like that! Hope to see this feature in Blender one day!

Have a nice day!

90%

Development Status: Open

Upvote 9 Downvote 1
jacopo.voltolina.official
26 Aug 2020

5 Comments

peter.boos

with adaptive sampling the noise is estimated over the tile, especially CPU's have great bennefit of that. But if one uses huge tiles as is typical for GPU's it will help less. I think then it needs to be weight mapped. (not sure if that is allready the case), possibly weight map it for GPU's and leave as is for CPU.

NiCapp

IDK but octane use Cycles code? you profile Cycles execution to find bottleneck? IMHO your approach have one big limit, VRAM, all scene must be loaded in VRAM to avoid multiple transfer of data from and to system and GPU ram that is real bottleneck than slow down render. AFAIK Blender already have addon released it to set tile size automatically in relation of used render hardware (CPU or GPU). AFAIK progressive render is slow to this and because any kind of post processing and transfer data are make from CPU side

jacopo.voltolina.official Author

* @NiCapp * yes there are addons that sets the tile size automatically, but when you hit render you get classic tiled rendering. this post is talking about progressive rendering with bigger tile size, sorry for the bad english :)

Lauloque

* @jacopo.voltolina.official * progressive rendering also uses the tile size you set. The difference with progressive is that non-progressive renders a tile up to the max sample and then repeat for another tile till picture is complete, while progressive makes different passes where it renders one sample of each tile for the entire picture then repeat for the entire picture till max sample is reached on each tile. And all this using the tile size you set.

So here in your proposal, the only thing that seems to differ from current Blender's state is that you choose how many samples are to be rendered for each rendering pass.

NiCapp

* @jacopo.voltolina.official * i had try explain you that progressive render in Cycles is always more slower than tiled one because additional overhead of transfer of data (each 5% of render sampling as you propose) from GPU card and main system. Teorically you can limit overhead of transfer using one tile with same dimensions of render image but CPU in post process need small portion of render image to be elaborated and in this case biggest limit (as already told) is VRAM memory size to contain all scene and have other free space to make render elaborations possible