1 like 0 dislike
We are moving our next game to Unreal, and I was wondering what the advantage/disadvantage there is to using Popcorn vs Cascade.  I know in Unity Popcorn allows for much more powerful features, higher visuals, and more particles compared to Unity.  How does Unreal stack up?
by midwinterdreams (1.2k points)

1 Answer

1 like 0 dislike
Best answer

That's a rather good timing, Hugo is currently writing a blog post (that'll appear here), about PopcornFX vs Cascade in UE4, with a bunch of benchmarks. It's not published yet, but should be sometime next week hopefully.

First thing to note is that you can mix cascade and popcorn effects in the same scene. So if you find Cascade to be stronger for some effects, you can always use cascade for those effects, and popcorn for the rest. Or the other way round, just use popcorn for the few effects that need complex behaviors you can only do with popcorn scripts.

Regarding the actual differences, I'm not the best one to answer, as I didn't work much with the UE4 plugin, but from the top of my head, and trying to stay as unbiased as I can:


- Cascade has builtin LODs, Popcorn hasn't (yet :)), you have to handle LODs manually by scaling stuff like emission rate and particle sizes with the distance to the camera. (for example, in a layer script. the 'ReleaseHighlights' package of v1.10 has LOD examples)
- In UE4.12 the vfx guys did a great job with lots of awesome new stuff, amongst which an "effect importance" feature that seems to be very similar to a feature we have in mind for v2.0, which is a variable tick-rate based on the distance of the effect to the camera, which allows to setup a maximum budget in milliseconds for a frame, and have the runtime auto-scale the tick rates based on that. with popcorn you'll have to wait next year to start seeing this feature, with cascade, if I'm not mistaken, you have something similar already in 4.12 (don't quote me on this, I didn't try it out to check :) )


- Cascade is slightly faster than popcorn for a low number of effects with few particles.
- as soon as you have more than 5 to 10 instances of an effect in your level, popcorn becomes quickly faster. Cascade becomes slower much quicker than popcorn when you increase the instance count. (you'll be able to see that in the upcoming article, which has a bunch of performance graphs)
- effects with billboards tend to be faster to render in cascade, that's something we'll keep improving.
- effects with ribbons and meshes are much faster in popcorn than cascade.
- you can have GPU particles with cascade, that can only use a subset of the regular cascade features. We have a working GPU build with popcorn, where effects can be run on CPU or GPU independently, but it's not production ready, so the current plugin is still CPU-only.
- GPU perf and Fill-rate: one of those cool 4.12 features mentioned above is particle trimming that works on flipbooks. This is very useful for performance, especially on mobile. We've got trimming working in a dev-branch in popcorn, but not sure if it'll be released before next year. If it is, it won't be before v1.11 in a couple months. However, with popcorn you can easily use other tricks which have the potential to benefit more than simple trimming (but would benefit even more with trimming)


- Popcorn has sorting issues when you mix transparent effects with transparent scene geometry, like in Unity, although it's worse in Unity... However, our UE4 plugin has a "slicing" feature that allows proper sorting of particles from any effect, while keeping a high batching level, but we have yet to find a way to sort these slices with Unreal's transparent scene geometry.
- Cascade seems to fare better regarding sorting, as it doesn't batch instances together, and does this per-instance. AFAIK, effects covering large areas will still sort badly though, even with other effects, whereas our slicing guarantees at least proper sorting between effects.


Materials / visuals:
- As far as I know, you can do as much with popcorn than with cascade regarding material wizardry. The only downside is that you won't see any of it in the popcorn editor, but with the hot-reload of the PKFX UE4 plugin, it's still manageable.
- As we're using UE4's materials and rendering/lighting/shadowing pipeline, the visual quality is identical with what you'd have made with cascade. That is not the case with Unity, as we don't have direct access to their render pipe, and have to do all the rendering ourselves.


- AFAIK, there's nothing you can do with cascade that you can't do with popcorn, but the opposite isn't true. There's the scripts, the spatial layers, the true mesh sampling (uniform surface distribution, and since 1.10, uniform volume distribution in arbitrary meshes), skinned mesh sampling which is a LOT faster than the equivalent in cascade, the projection, samplers in general, that give you a huge power you'll never have in cascade (but might have in Niagara, depending on how they end up architecturing it)


And there's also the cross-engine thing, you can reuse most of the effects you already made for Unity with only minor axis-system tweaks, flipping the y and z axes, without having to re-do everything from scratch in cascade.


Now, here is my totally biased advice:
If you can, do all your effects with popcorn :)
and for those effects where any of the strong points of cascade above might turn out to be useful, don't require the flexibility of popcorn, and overthrow the other benefits of popcorn, use cascade.

Hope this helps,

by jbilalte (33.7k points)
This does help a ton!  Give me a lot of ideas and thoughts moving into Unreal.  And it all makes great sense on using a combination of both!