2

enter image description hereSo, started my Blender journey yesterday working on a tutorial to create some mountains and animate a fly-through of them. They are made with the A.N.T. mesh tool and microdisplacements. I've worked my way through the tutorial to a point where I'm actually rendering frames, and it's much slower than I anticipated it would be. It's taking 5-7 minutes per frame. I am using Cycles with Auto Tile Size addon, and am using an 8k HDR texture (I think that's how I should refer to it) to light the world.

My PC specs are RTX 3090, Ryzen 3950X and 128GB of RAM. During each frame render, the GPU and CPU are essentially idle until the last little bit when Blender starts actually showing tiles, then my GPU kicks in and renders those out in a matter of seconds. Is that to be expected? Is there any way to get Blender to actually utilize my hardware during the first several minutes of rendering, where it seems like it's just barely using it?

I'm rendering using Cycles in Blender 2.91 and here's a screenshot with what I'm rendering and all of the associated settings.

This is the tutorial that I am following: https://www.youtube.com/watch?v=qSafYNQrodk

Thanks for any insight!

  • You can select both your CPU and GPU in CUDA settings - you don't have to pick one or the other. Also, make sure to select your GPU under OptiX. – Christopher Bennett Nov 23 '20 at 06:21
  • Hey Christopher, appreciate the response. I've tried doing both, and it didn't change much. What's taking the majority of the time is the 'setup' before the actual rendering takes place. Like 'Tessellating Landscape", which takes almost 2 minutes, while my CPU and GPU are seemingly idle. I am hoping to improve performance on that part of the process. As a test, I just rendered a frame without the micro displacements active, and it only took 2 minutes, so I guess that's what's taking the most time. Any recommendations as far as speeding that up? Cheers! – Earshel Hogan Nov 23 '20 at 06:29
  • I'm not sure other than that. I have never used the Auto Tile addon, and don't often use Ant Landscape for extremely detailed meshes, and therefore cannot speak to either of their influence(s) on a render (if any). It could just be that it's taking a long time building the BVH (because of the micro displacements) or that blender is not optimized for tessellation on that scale. – Christopher Bennett Nov 23 '20 at 06:41
  • Gotcha'. Well, again, I appreciate you taking the time to respond. I do believe that it is due to the micro displacements. Still hoping there's a way to speed things up, as rendering this 250 frame animation is slated to take 10+ hours as it is...a good night's sleep, I suppose! – Earshel Hogan Nov 23 '20 at 06:52
  • I think you found the main problem - it's the tessellation of the microdisplacements and BVH building. Since this is a part of creating your landscape there is no way to get around this. But I think, using both GPU and CPU should be best - from my experience with microdisplacements it is always faster than just using CPU or GPU alone. Oh, and I found that the Auto Tile Size doesn't work well for me. The tile size that works best in the average of all my different renders is 64 x 64 when rendering with GPU and CPU. – Gordon Brinkmann Nov 23 '20 at 07:02
  • Here's a a link to a different question where someone is suggesting BVH Time Steps. And in the comments there is a link to a comparison of the writing speed of image formats. The last one really surprised me, PNG for example is much slower. – Gordon Brinkmann Nov 23 '20 at 07:14
  • Thank you Gordon for the suggestions and for the link. Being that I am very new (started yesterday!), I must ask - why does Blender have to do the tessellation for each frame? Logically, it seems that doing it like that is a horrible waste of resources, as each frame's landscape ends up being the same, unless I'm mistaken. Is there a way to tell Blender to perform the tessellation once, then use that new landscape model in the future frames, rather than re-doing all of the calculations for each frame? I hope that I'm expressing my question correctly! – Earshel Hogan Nov 23 '20 at 07:21
  • I'm not an expert, but since microdisplacements is generating the displacements on a pixel base, always in relation to the camera view (so that objects close to the camera have more details than objects that are further away), it has to be calculated new for each frame. – Gordon Brinkmann Nov 23 '20 at 07:25
  • Ah, that makes sense. I remember the author of the tutorial mentioning that. So there's no way to 'bake' the landscape. I've just gone and duplicated the landscape 4 times to add depth to the scene...bringing my renders up to 13 minutes and climbing. Oof! Looking at a 35-ish hour render. Oh well, it'll be worth it in the end! Thanks again for the wisdom! – Earshel Hogan Nov 23 '20 at 07:29
  • The problem with baking the landscape would be (to get the same resolution) you need a very high polycount on your landscape and it will always be all polygons in each frame, no matter how far away or even visible - and that might result in even worse render times, of course all depending on the geometry you create. Did you try different tile sizes? – Gordon Brinkmann Nov 23 '20 at 07:34
  • That's true. I feel like I may be expecting too much in terms of performance, and that there's more going on in the background than I'm privy to. My biggest gripe is that while it's taking several minutes for "tessellating landscape", my CPU and GPU are both essentially idle. Just a few percent of utilization, and that makes me feel like there is performance being left on the table. I have experimented with tile sizes, but not in a scientific manner. That's something that I should do. Currently using ~200 tile size. Going to try 512 now and see if that affects anything. – Earshel Hogan Nov 23 '20 at 07:42
  • I would actually go lower if you're rendering with CPU and GPU. Large tile sizes are rendered very slow on the CPU so going larger won't let the CPU help your GPU. As I mentioned above, my setting is 64 x 64. – Gordon Brinkmann Nov 23 '20 at 07:50
  • For the few most recent renders, I've been experimenting with OptiX, and I don't see an option to use CPU and GPU for OptiX, Does that just apply for CUDA rendering (the CPU + GPU @ 64 tile size?) – Earshel Hogan Nov 23 '20 at 07:56
  • Might be. My graphics card is not OptiX compatible, so I can't see the settings. Since Christopher suggested using CPU and GPU together and also OptiX, I thought that it's possible under OptiX. – Gordon Brinkmann Nov 23 '20 at 07:58
  • 1
    Hey, Gordon and Christopher: I think I may have an answer as to why my rendering is taking so long. I brought up the statistics window, and I have 5.2 million vertices and faces, and 10 million triangles and edges. In the tutorial I'm watching, the author has only 760k verts and faces, and he's rendering each frame in about 50 seconds. One place where I veered off from his tutorial was when I did subdivisions, perhaps I went a little bit overboard. I'm going to take the time to re-do this tutorial but follow his lead more closely and see how that works out. – Earshel Hogan Nov 23 '20 at 08:41
  • That's a good guess. Normally you don't have to go high in subdivisions when you're working with microdisplacement - with the right texture you can create a whole mountain with a simple plane of 4 vertices. – Gordon Brinkmann Nov 23 '20 at 08:52
  • I'll let you know how it works out. Thanks again for all the help! – Earshel Hogan Nov 23 '20 at 08:55
  • 3
    Just an update - it was the extreme vert/face count that was causing the slowdown. I remade everything with less subdivision and it was substantially faster. Thanks again for all the replies! – Earshel Hogan Nov 24 '20 at 00:56
  • When there are problems with a tutorial it's always best to let others know from the beginning if you did something different than shown in the tutorial, that might be valuable information in search for the solution. ;-) But glad to hear it did help, you might consider marking comments as useful. And maybe enter your own answer here and mark it as "answered" afterwards. – Gordon Brinkmann Nov 24 '20 at 15:01
  • Using adaptive tessellation, and not only bump? – Rob Apr 02 '21 at 17:58

1 Answers1

-1

I never used it but the e-cycles plugin might help if you had to keep the subdivision : https://blendermarket.com/products/e-cycles

« What’s more, thanks to a new option called "Persistent Data", for fly-through animations where only the camera moves, E-Cycles only needs to do the pre-processing step once for all frames. In the example above, rendering takes just 3 seconds per frame on a single GPU. In this case, the persistent data option saves 7 seconds of pre-processing per frame. »