Much worse performance when instancing using Dupli Object vs Particle Instance Modifier

When I use Dupli Object in Particles settings pane, I get much worse performance than by instancing an object using Particle Instance Modifier. It seems like Particle system creates copies of the object while Particle Instance Modifier uses GPU instancing for me. Is this a bug or the price for some extras offered by Particle system (dynamic materials etc.)?

Nope, no GPU instancing. Check the vertex/face count Blender is displaying in the top bar, this might give you an idea of what’s actually happening: the ParticleInstance modifier creates one (potentially huge) mesh incorporating all the “instances”, which in fact is exactly what it should do because there might be other modifiers placed atop.
However I was as surprised as you a while ago when I noticed that indeed the result seems to be drawn much faster than particle systems using object or group instancing in Blender Internal’s GLSL/material view (which you seem to use too) at least as long as the resulting mesh does not eat up all your memory. I never did further research, did you?
I suppose the issue is specific to the BI viewport, at least I have never noted similar behaviour with Cycles, and probably it is a non-issue with BI final renders either. BI’s OpenGL viewport has so many limitations, I take it proper instancing is one of them.
Well, BI is dead tech, and there seems to be a reason for it after all. :slight_smile:

Thank you for the answer and the clarification, now I understand that behavior! :slight_smile: I tested it in 2.8 and it let me use 10x more instances with the same performance… nice! :slight_smile: Using Dupli Object is still slower than Particle Instance modifier, but the difference is not as huge.
This would let me to use Dupli Groups (no way to use group with Particle Instance Modifier :frowning: ), which would be very handy when planting my vegetation, but unfortunately I have to stick with 2.7 because of some BI-specific features that are not supported in 2.8, like baking to vertex colors (I create an assets for an older game engine and I need to bake AO to vertex colors).

Thank you!

you can copy the mesh from 2.8 with ctr+c, paste it to 2.79, do your baking and then copy it back to 2.8

I use baking to vertex colors very often and while copy&paste is quite dirty&messy method (creates extra materials / textures / datablocks, breaks linking etc), it is not an acceptable method for me.
As this is the key feature for me, I can’t use 2.8 until it is (re)implemented.