Feedback regarding the Particle System used for Grass

So … over the last one month, I have been tinkering with the particles system nearly everyday. In order to create animation/game level performant environments with decent foliage quality, I have made many observations. Some of them (as I begin to recall each of them) I would like to post here, and possibly know & discuss as to what has been the experience of other blender users as well:

Hardware: Intel 4670k CPU (4core), AMD Radeon Vega64 GPU, NVMe SSD (so as to clear that disk IO is not a bottleneck here)

Blender 2.8 used, mostly latest builds

Example Grass Assets Used:

  • Blender Guru - Free Asset - Bahia Grass - 60 to 180 vertices each strand
  • Custom - Low Poly Grass - 5 vertices each strand
  • Custom - Low Poly Grass B - 10 vertices each strand
  • CG Geek - Texture based grass
    and many more

My test scene is a hill of about 100m by 30m, and has no other objects.
A test video: https://youtu.be/l9eq6VDea0g

Observations

  1. Around uptil 15k strands of grass (Hair instead of Emission used in all cases) There is no lag in viewport for all the above grasses except the highpoly Bahia.
  2. Roughly just above 30k strands of grass, viewport becomes noticeably laggy. But is still workable (Cycles & Eevee both).
  3. Roughly above 100k, viewport is unbearable. So I hide the grass in viewport, and do lightweight renders almost blindly.
  4. In one use case, I used upto 50+30 million (80million) strands, it took me above 2 hours to render it, but blender 2.8 didn’t crash in cycles. So if anyone wants to know how stable is the particles system in 2.8, there is that.
  5. In one use case, the scene with certain settings took around 14 minutes to render in Cycles. But in Eevee, even after half an hour, the render was not finished, and I had to quit. It almost looked that it would take forever to render. I’m now using Eevee for only 30k or less strands.

In most of the grass tutorials I have seen so far, I see the grass is used for only a small patch of land, and not slightly large scenes … like green pastures. Please share your experience, if you have done or tried something similar.

1 Like

Did further Tests (Here is the latest: https://www.artstation.com/artwork/3omXWo ) and got further improvements out of it and found a bug possibly in blender.

But still … game worthy efficiency looks far off (and almost impossible at present). I will try the scene out in Unity and UE4 for comparison.

Same here: 50K grass and I hide it because viewport lag.

  • Windows 10 Professional
  • Geforce GTX 1080 (without Ti) 8GB RAM
  • Intel Core i7 -6700 K @ 4 HGz (4 real and 4 virtual cores)
  • 32 GB ram

Now I’m looking at Camera Cull (Should be Called Frustum Cull, for clarity? ) and Distance Cull features of blender to reduce the render time. But sadly, the documentation for these advanced features is near to nothing. The documentation page has only 1 line for each:
http://docs.blender.org/manual/en/dev/render/cycles/settings/scene/introduction.html?highlight=culling

I know that I’m on the right lead, as you see here: https://developer.blender.org/D1230 some information is provided (still not enough though) … and sergey says (quote):

The idea is to give artists a simplier way to control memory usage in such
scenes as grass fields by doing automatic object culling based on whether
they’re visible in the frame or not.

Meanwhile tinkering around in Blender, and I got 35% improvement in render time, with certain changes. But still not enough for even Animation.

(Come on Blender 2.8, Come On! )